位置:首页 » 技术 » [ZT]全世界所有程序员都会犯的错误-蔡学镛

[ZT]全世界所有程序员都会犯的错误-蔡学镛

日期:2009-06-01 阅读:0num
Advertisement

原来以为对 Java 初始化已经很master了,结果还是上当了

以下为转贴。。。。。

当年,国际巨星成龙的「龙种」曝光,众人指责他对不起娇妻林凤娇,逼得他出面召开记者会,向世人自白他犯了「全世界所有男人都会犯的错误」。从来没犯过这种错误的我,也因此常常认为自己不是个男人。

虽然没犯过「全世界所有男人都会犯的错误」,但是我倒是曾经犯了「全世界所有程序员都会犯的错误」。不管使用何种语言,全世界所有程序员都一定犯过这种错误,那就是:太依赖编译器,却不知道编译器做了哪些事。

一般来说,越高阶的程序语言,会提供越多语法上的便利,以方便程序撰写,这就俗称为syntactic sugar,我称其为「语法上的甜头」。虽说是甜头,但是如果你未能了解该语法的实质内涵,很可能会未尝甜头,却吃尽苦头。

不久前,我收到一个电子邮件,读者列出下面的Java程序,向我求救。看过这个程序之后,我确定这又是一个「全世界所有程序员都会犯的错误」。

// 程序1
class Singleton {
private static Singleton obj = new Singleton();
public static int counter1;
public static int counter2 = 0;
private Singleton() {
counter1++;
counter2++;
}
public static Singleton getInstance() {
return obj;
}
}

// 程序2
public class MyMain {
public static void main(String[] args) {
Singleton obj = Singleton.getInstance();
System.out.println("obj.counter1=="+obj.counter1);
System.out.println("obj.counter2=="+obj.counter2);
}
}

执行结果是:
obj.counter1==1
obj.counter2==0

你有没有被此结果吓一跳?乍看程序代码,你很可能会认为counter1和counter2的值一定会相等,但执行结果显然不是如此。其实,程序1被编译后的程序应该等同于下面的程序3:

// 程序3
class Singleton {
private static Singleton obj;
public static int counter1;
public static int counter2;
static { // 这就是class constructor
// 在进入此class constructor之前,class已经被JVM
// 配置好内存,所有的static field都会被先设定为0,
// 所以此时counter1和counter2都已经是0,且singleton为null
obj = new Singleton(); // 问题皆由此行程序产生
// counter1不会在此被设定为0
counter2 = 0; // counter2再被设定一次0(其实是多此一举)
}
private Singleton() { // 这是instance constructor
counter1++;
counter2++;
}
public static Singleton getInstance() {
return obj;
}
}

这是因为:当class具有static field,且直接在宣告处透过「=...」的方式设定其值时,编译器会自动将这些叙述依序搬到class constructor内。同样地,当class具有instance field,且直接在宣告处透过「=...」的方式设定其值时,编译器会自动将这些叙述依序搬到instance constructor内。

此程序在class constructor内,还未将static field初始化时(这时候,counter1和counter2都是0),就呼叫instance constructor,而instance constructor竟然还会去更动static field的值,使得counter1和counter2都变成1。然后instance constructor执行完,回到class constructor,再把counter2的值设为0(但是
counter1维持不变)。最后的结果:counter1等于1,counter2等于0。

欲改正程序1,方法有三:

-方法一:将singleton field的宣告调到counter1与counter2 field之后。
这是最好的作法。
-方法二:将counter2=0的宣告中,「=0」的部分删除。这种作法只有在希望
-方法三:将初始化的动作搬到class constructors内,自行撰写,而不依赖
编译器产生。这是最保险的作法。

如何避免犯下「全世界所有程序员都会犯的错误」,我给各位Java程序员
的建议是:
-熟读Java Language Specification
-在有疑问时,使用J2SDK所提供的javap来反组译Java Bytecode,直接观察
编译后的结果。

下面是我用javap来反组译程序1的示范:

C:>javap -c -classpath . Singleton

Compiled from MyMain.java
class Singleton extends java.lang.Object {
public static int counter1;
public static int counter2;
public static Singleton getInstance();
static {};
}

Method Singleton()
0 aload_0
1 invokespecial #1 <Method java.lang.Object()>
4 getstatic #2 <Field int counter1>
7 iconst_1
8 iadd
9 putstatic #2 <Field int counter1>
12 getstatic #3 <Field int counter2>
15 iconst_1
16 iadd
17 putstatic #3 <Field int counter2>
20 return

Method Singleton getInstance()
0 getstatic #4 <Field Singleton obj>
3 areturn

Method static {}
0 new #5 <Class Singleton>
3 dup
4 invokespecial #6 <Method Singleton()>
7 putstatic #4 <Field Singleton obj>
10 iconst_0
11 putstatic #3 <Field int counter2>
14 return

其实Java的syntactic sugar并不算多,C#的syntactic sugar才真的是无所不在,
也因此C#的初学者更容易犯了「全世界所有程序员都会犯的错误」。许多C#的书都会一边介绍C#语法,一边介绍编译之后MSIL(.NET的中间语言,类似Java的Bytecode)的结果,然而Java的书却鲜少这么做。

虽说是「全世界所有程序员都会犯的错误」,但是这不代表你犯了此错误之后,仍可以同爱借钱的曹启泰一般地「抬头挺胸、理直气壮」。只要有心,其实这一类的错误仍是可以避免的。

本文作者:蔡学镛
文章出处:Sleepless 2.0
发表日期:03/10/2003

相关文章
  • [ZT]全世界所有程序员都会犯的错误-蔡学镛

    原来以为对 Java 初始化已经很master了,结果还是上当了 以下为转贴..... 当年,国际巨星成龙的「龙种」曝光,众人指责他对不起娇妻林凤娇,逼得他出面召开记者会,向世人自白他犯了「全世界所有男人都会犯的错误」.从来没犯过这种错误的我,也因此常常认为自己不是个男人. 虽然没犯过「全世界所有男人都会犯的错误」,但是我倒是曾经犯了「全世界所有程序员都会犯的错误」.不管使用何种语言,全世界所有程序员都一定犯过这种错误,那就是:太依赖编译器,却不知道编译器做了哪些事. 一般来说,越高阶的程序语言

  • 论全世界所有程序员都会犯的错误

    当年,某国际巨星的"龙种"曝光,众人指责他对不起娇妻,逼得他出面召开记者会,向世人自白他犯了"全世界所有男人都会犯的错误".从来没犯过这种错误的我,也因此常常认为自己不是个男人. 虽然没犯过"全世界所有男人都会犯的错误",但是我倒是曾经犯了"全世界所有程序员都会犯的错误".不管使用何种语言,全世界所有程序员都一定犯过这种错误,那就是:太依赖编译器,却不知道编译器做了哪些事. 一般来说,越高阶的程序语言,会提供越多语法上的便利,

  • 论全世界所有程序员都会犯的错误2

    下面是我用javap来反组译程序1的示范: C:> javap -c -classpath . Singleton Compiled from MyMain.java class Singleton extends java.lang.Object { public static int counter1; public static int counter2; public static Singleton getInstance(); static {}; } Method Singleto

  • 知乎话题:是不是每一个入职百度的程序员都会被钉在互联网的耻辱柱上?

    是不是每一个入职百度的程序员都会被钉在互联网的耻辱柱上? http://www.zhihu.com/question/45109599 附一前百度广告部门研发回答,因回答标明禁止转载,转回答链接: http://www.zhihu.com/question/45109599/answer/98321715?from=profile_answer_card --cut-- MajestySolor在2016-05-09 05:15:58回答到: 按照这个逻辑,每个用过百度产品的人都要被钉上耻辱柱~

  • 每个程序员都会的35个jQuery小技巧! 每个程序员都会的35个jQuery小技巧!

    干货推荐,每个程序员都会的35个jQuery小技巧! 1. 禁止右键点击 $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return false; }); }); 2. 隐藏搜索文本框文字 Hide when clicked in the search field, the value.(example can be found below in the comment fields)

  • 2013年程序员工作总结(总结错误与学到的东西)

    本文章来给各位同学介绍关于2013年程序员工作总结(总结错误与学到的东西),希望此教程对各位朋友有所帮助. 总结一个做了9个月还没做完的项目.也因为这个项目让我变的强大,从功能设计到代码编写规划,从后台功能实现到前端效果展示,这种成长让我在做其他项目的时候变的得心应手.总结过去,知道自己在这个过程中学会了什么,还有什么不懂,有利于进步. 在实习开始加入这个项目的开发后,由于各种原因直到现在还没有正式上线.这个项目是做一款手机名片软件,有两大特色:搜索.收藏.数据库有大量公司数据,自动生成名片给用

  • PHP程序员常犯的11个错误

    1.使用myisam而不是innodb mysql教程有很多数据库教程引擎,但是你最可能碰到的就是myisam和innodb. mysql默认使用的是myisam.但是,很多情况下这都是一个很糟糕的选择,除非你在创建一个非常简单抑或实验性的数据库.外键约束或者事务处理对于数据完整性是非常重要的,但myisam都不支持这些.另外,当有一条记录在插入或者更新时,整个数据表都被锁定了,当使用量增加的时候这会产生非常差的运行效率. 结论很简单:使用innodb. 2.使用php教程的mysql函数 ph

  • PHP程序员最易犯10种错误

    PHP是个伟大的web开发语言,灵活的语言,但是看到php程序员周而复始的犯的一些错误.我做了下面这个列表,列出了PHP程序员经常犯的10中错误,大多数和安全相关.看看你犯了几种 1.不转意html entities 一个基本的常识:所有不可信任的输入(特别是用户从form中提交的数据) ,输出之前都要转意. echo $_GET[usename] ; 这个例子有可能输出: <scrīpt>/*更改admin密码的脚本或设置cookie的脚本*/</scrīpt> 这是一个明显的安

  • 《我为什么讨厌程序员》

    http://ued.com.cn/post/tech/wo-wei-shi-yao-tao-yan-cheng-xu-yuan 首先声明,是别人的文章,纯转. 我觉得标题不如叫:什么样的程序员让人讨厌,因为不是所有程序员都是文中所说的样子.文中举的例子很多都是沟通方式的问题,并不是完全是程序员的技术水平造成的,即便高手都是从菜鸟过来的,在菜鸟阶段如何解决这些问题才是程序员沟通的艺术.例如最基本的原则,跟非程序员最好以用户语言而不是技术语言去沟通,否则真的隔行如隔山,还会让人感觉你在装逼. ht

  • 程序员价值观和网络复杂性-网络不可达排查过程 程序员价值观和网络复杂性-网络不可达排查过程

    声明: 由于涉及到公网拓扑以及公司内部信息,本文中的IP地址一律采用化名. 序 周三由于吃了可能已经坏掉的生蚝,周四开始腹泻并发烧,周四晚上开始高烧,并持续到周五晚上,没去医院没吃药,死磕,对,死磕,然后在周六白天断断续续高烧低烧相间后,到了晚上看完同事介绍的电影<异度空间>后,好了,生病期间,没有工作,但是却断断续续写了一些技术随笔,算是<病中吟>吧... 其实,生病挺好的,对我而言,发烧就是大量喝水,不停地喝,痛快地喝,喝到快要水中毒,基本就好了,一轮见效.期间想干嘛照常干且效

  • 30多年程序员生涯经验总结 30多年程序员生涯经验总结

    本文是码农网原创翻译,转载请看清文末的转载要求,谢谢合作! 在我30多年的程序员生涯里,我学到了不少有用的东西.下面是我这些年积累的经验精华.我常常想,如果以前能有人在这些经验上指点一二,我相信我现在会站得更高. 1.客户在接触到产品之后,才会真正明白自己的需求. 这是我在我的第一份工作上面学来的.只有当我们给客户展示产品的时候,他们才会意识到哪些是必须的.给出一个功能性原型设计远远比一张长长的文字表格要好. 2.只要有充足的时间,所有安全防御系统都将失败. 安全防御现如今是全世界都在关注的大课

  • 我是一个程序员,有些实在话想对你说 我是一个程序员,有些实在话想对你说

    我个人是一个程序员,关注web.分布式和数据处理. 我将web看做最流行的.天然跨平台的展现和可视化技术,将分布式看做程序协作.协作程序的最适架构,将数据处理看作需要基础.技巧.认知.视野以及领域知识兼而有之的事,所以做数据处理,会提升基础.技巧.认知.视野以及领域知识. 我认为能力的提升来自厚积,所以对于基础的东西,应该保持持续的热情. 认为基础应该包括但远不限于: 数据结构和算法. 算法. 网络(tcp/ip.p2p.http等等). 计算机体系和操作系统(内存管理.高速缓冲与缓存.线程与并

  • 为何找个优秀的Java程序员如此之难?

    Java开发者供大于求,找一个优秀的开发者犹如大海捞针.这该赖谁?赖程序员对Java没兴趣吗?还是赖瞎了眼的招聘?抑或是语言本身?不管你同意与否,下面就列举了和这个问题相关的答案. 问题非语言,而是程序员自身 大多程序员都想做与众不同的人,大家都喜欢尝试.但除此之外,更多的程序员想要一个薪水丰厚的工作.最简单的方式就是学习Java--不管自己喜不喜欢写,这就是为什么众多无工作激情的程序员都沦为了Java程序"猿". "我不是指所有的Java程序员都是无能之辈",博客

  • 把程序员修炼之道读薄

    这是一篇技术书籍读后感 早在2014年的时候我就已经购入 <程序员的修炼之道> .还是由于慵懒一直没有翻开,最近才把它从书柜里翻出来看完. 老实说这本书相比CodeComplete2来说,还是差那么点味道,但是它依旧是一本好书.本书通篇都在向读者灌输一种 做一个注重实效的程序员 的概念,这句话出现了不下几百次,200页的书这句话都够填10页了Orz.为了阐明作者观点,书中从以下几个方面进行了自我论证: 为何要注重实效 作者举了 温水煮青蛙 , 曳光弹 等 去论证注重实效在软件开发中的作用之大.

  • 专访周伯通招聘CTO杨德升:程序员创业都需要什么 专访周伯通招聘CTO杨德升:程序员创业都需要什么

    嘉宾简介:周伯通招聘(下称周伯通)联合创始人CTO,历任开源 SNS 社区 ThinkSNS 核心工程师,115 网盘高级 iOS 工程师等职位. 在豆瓣上有一个名为"周伯通"的招聘小组上面有362641位组员,这是"周伯通招聘"的前身.两年多的时间里,从一个小组演变成网站,这条道路绝不是一帆风顺的.甚至在2013年,周伯通招聘CEO冯涛彻底重组了整个团队.现任CTO杨德升在此时的加入,又为整个团队注入了一剂强心针.他带领团队一起探索-如何通过技术演进的方式促进业务

  • 如何成为一名冠军程序员? 如何成为一名冠军程序员?

    距我上一篇非技术文章已经有些时日.但一些程序员朋友们一直在向我征求职业生涯的建议,现在我觉得是时候再写一篇了.顺带提及,如果你有心思去看其他的东西--我已经开始在 Heinz's Worst Recipes (海因茨最差食谱)上记录我所烹饪过的那些惨不忍睹的食物.受我好吃的强烈欲望所致--这可以由我的腰围证明,烹饪成为我的一大爱好.我远远不能成为一个合格的厨子,因为我从来不遵循食谱,由此我所烹饪的许多食物也以"黯然不可食"的状态被抛弃掉,当然有时候在做了足够的尝试.出了足够多的问题后也

  • 专访资深程序员庄晓立:我为什么要选择Rust? 专访资深程序员庄晓立:我为什么要选择Rust?

    Rust是由 Mozilla开发的注重安全.性能和并发性的编程语言.这门语言自推出以来就得到了国内外程序员的大力推崇.Rus声称 解决了传统C语言和C++语言几十年来饱受责难的内存安全问题,同时还保持了极高的运行效率.极深的底层控制.极广的应用范围.但在国内有关 Rust的学习文档并不多见,不久前,笔者联系上了 Rust1.0版本代码贡献者庄晓立(精彩博文: 为什么我说Rust是靠谱的编程语言 ),请他分享Rust语言特性以及学习经验. 庄晓立 CSDN:你是从什么时候开始接触Rust语言的?是

  • 每个程序员都必读的10篇文章

    作为一名Java程序员和软件开发人员,那些_每个程序员都应该知道的XXX_的文章教会了我不少东西,它们提供了某个特定领域的一些实用的并且有深度的信息,这些东西通常很难找到.在我学习的过程中我读到过许多非常有用的文章,我把它们添加到了书签里,方便以后阅读或者引用.我个人认为所有开发人员都能从这些文章中受益,因此我也写了篇"_每个程序员都应该了解的_"文章,准备分享给你们.这是我的个人收藏.在这篇文章中,你会看到每个程序员都应该了解的一些经典文章,涵盖了内存,unicode,浮点数,网络,

  • 非程序员对程序员有哪些普遍的误区?

    程序员都会修电脑? 程序员都会盗号? --cut-- VmuTargh在2016-05-09 13:56:52回答到: 牛逼 大神 未来的 XXX dphdjy在2016-05-09 13:56:52回答到: 程序员会 office(精通那种 程序员会用财税系统(国家制定那种 程序员会 用 /修 手机 /电视 程序员什么都知道(资源 /站点 /服务 geeglo在2016-05-09 13:56:52回答到: 来,我想建个和淘宝一样的. smithtel在2016-05-09 13:56:52回

  • 揭开程序员装 13 行为的面具 揭开程序员装 13 行为的面具

    程序员一直都是很善良的IT工种,勤勤恳恳不辞辛苦的工作,不过今天的文章不是为了宣扬程序员的伟大.尽管在互联网的发展中,他们贡献了无数的代码,用自己的技术推进了互联网的进程.我们还是要扒一下程序员的装 13 行为,可能会有很多程序员看了本文会十分的愤慨,但考虑到你们很忙,没有时间黑公园网站,我也就不客气了. 程序员你还说没有装 13 写代码离不开各种编程工具,有众多工具供选择便有花样的喜好,对装 13 的程序员来说,是坚决要抵制 IDE 的,IDE 臃肿缓慢,一定是要用 vim 加编译器的组合.v

最新文章
  • Steve Jobs: MobileMe to &#39;Get A Lot Better&#39; Next Year

    有人,不满意 MobileMe ,给乔帮主写了封信--于是,帮主回信了... ================= Q: I love my iPad and iPhone4 and am a huge fan of yours and all that Apple does. I desperately want to stay inside of Apple'e ecosystem as much as possible. However, MobileMe is making it very

  • 一夫当关万夫莫敌/上海/15-30K 邀 iOS 及后端大将/美空创始团队/StartUp 阶段

    美空网创始团队在上海启动的新鲜项目 我们主要做的事情是一个基于时尚领域的数据分享服务,业务的基因包括数据挖掘和图片搜索. 我们帮助时尚产业的上下游挖掘已知和未知的关于时尚的种种线索和想法. 当然了,美空出手,种子用户少不了明星,美女.不过那不是重点. 目前StarpUp阶段,小团队,我们的优势在于产品,视觉以及时尚领域,在技术方面需要能够独当一面的选手加入和帮助. Studio在华山路,兴国宾馆对面.待遇方面不多讲了,人无我有,人有我优,更多的细节还是要靠沟通. 目前在以下几个方面需要技术人才的

  • 慢收 filco 圣手二代茶轴(红轴亦考虑

    希望是104,87也可以. 之前一直用茶轴,感觉很顺手,但据说红轴也适合打字,所以也考虑- 呃,我说预算700以内合适么-- 北京可以面交 顺便如果有21+不贵的显示器也可以丢来-- 谢谢 qq:26942657 --cut-- coolicer在2016-05-10 02:52:32回答到: 搭车同求 steelz在2016-05-10 02:52:32回答到: 才入了某网店最后一只,104圣手二代茶,1149软妹币 MartinTo在2016-05-10 02:52:32回答到: 108的日

  • 乐视超级手机1 Pro有电信版吗? 乐视超级手机1 Pro有电信版吗?

    乐视超级手机1 Pro有电信版吗? 通过前文我们知道,乐视超级手机1是一款移动/联通双4G智能手机,并不支持电信网络,对于电信用户来说,确实是挺失望的.不过配置更高的乐视超级手机1 Pro会给电信用户带来惊喜,且看以下乐视超级手机1 Pro网络制式一览: 4G支持:TD/FDD-LTE 3G支持:WCDMA/TD-SCDMA 2G支持:GSM/CDMA 电信3G网络方面,乐视超级手机1 Pro仅限国际漫游才支持WCDMA/EVDO. 由此可以看出,乐视超级手机1 Pro是一款移动/联通/电信三网

  • 魂之猎手神秘站登场 新职业即将震撼亮相 魂之猎手神秘站登场 新职业即将震撼亮相

    7月29日信息,作为目前网游市场上一款极具街机风格的横版闯关网游,腾讯旗下的<魂之猎手>正凭借出色的战斗体验.丰富的角色技能系统,以及花样频出的关卡设定,成为这个暑期档最具看点的一款动作网游,而此次"无双内测"所推出的全新无双系统,更是成为了<魂之猎手>战斗体系最重要的一块拼图,破坏力极强的无双特效,加上强大的技能攻击力,使游戏的战斗体验变得更加火爆. 昨日,<魂之猎手>悄然更新一组神秘悬念站,并正式宣布将于8月6日推出全新职业,而这也使得游戏再次成

  • 修补爱情的伤口

    有人曾告诉我说:她并不寄求她的男人本身完美,她可以接受他诸多的缺点存在,希望他经过与她的相处,逐渐的磨合,让她能够打造成完美. 很聪明女人不是吗?一个愿意被女人改变的男人必定是深爱着那个改变他的女人,因为我们都知道改变自己是一件多么痛苦的事.通常我们在不能改变自己的时候,往往希望别人改变或改变别人来适应自己. 或许男人想要全部的女人,而女人只想要男人的全部,好的,不好的,能接受的不能接受的,风光的,阴暗的,只要是心爱的男人拥有的,都会义无反顾的去接受.进而寄望于经由自己的深情和温柔一点一点的修补

  • 原生 javascript 面向对象分析及思考

    javascript本身它不是面向对象语言,不过我们仍然可以利用javascript的一些特征实现OOP编程,本文我们就来谈谈原生javascript面向对象的分析. 面向对象语言有三个特征: 封装,继承,多态.而js初学者一般会觉得js同其他类C语言一样,有类似于Class这样的关键字可以让我们在js中更好的进行面向对象的操作.可事实并非如此. 严格地说,js不是一门面向对象的语言,但是我们可以利用js里面的一些高级特性来进行OOP编程. ----封装 在js中,如何来创建一个对象呢?这非常简

  • 教你如何全面测试哪个美国主机速度更快 教你如何全面测试哪个美国主机速度更快

    对于准备购买美国主机的朋友来说,除了价格.品牌.口碑外,速度也是要考虑的一项非常重要的因素.如何测试美国主机的速度呢?很多朋友可能会在自己的电脑上使用Ping命令查看某个美国主机的响应时间,或者下载测速文件.访问测速页面,以判断该美国主机速度快慢. 不过这样只能测试出你访问该主机的速度,显然不够全面,除了自己访问速度快外,还应该考虑你的网站访问者的访问速度,而你的网站访问者可能会遍布全国甚至世界各地,现在就为大家介绍几个很赞的在线网站测速工具,教你如何测试全国甚至全球范围访问美国主机的速度! 在

  • jQuery Address全站 AJAX 完整案例详解

    本文章来给各位介绍jQuery Address全站 AJAX 完整案例详解,为提升用户体验,改善前端页面效果,越来越多的 Web 应用以及企业或个人团体网站,采用了全站动态不刷新页面的方式加载内容,各种加载效果也层出不穷.特别是手机网站,对前端的设计更是要求偏高.刷新页面所产生的等待时间和展现方式严重地影响了网站整体的设计效果和使用体验. 本文详细介绍如何利用 jQuery 框架以及 jQuery Address 插件实现最基本的全站 AJAX 动态加载页面内容的功能的方法. 案例目标 以常见基

  • 使用Jersey开发RESTful(一)——入门 使用Jersey开发RESTful(一)——入门

    使用Jersey开发RESTful(1)--入门 Jersey的下载地址https://jersey.java.net/.这里下载最新的版本jaxrs-ri-2.6.zip. 创建工程 新建一个web工程,引入Jersey所需的jar包. 修改web.xml <servlet> <servlet-name>jersey_rest</servlet-name> <servlet-class>org.glassfish.jersey.servlet.Servle

热门推荐
  • Windows8开启或关闭放大镜的方法 Windows8开启或关闭放大镜的方法 1.打开"轻松使用设置中心"(windows键+U键),点击"启动放大镜". 2.快捷键:开启放大镜"windows键+加号键",缩小放大镜"win键+减号键",关闭放大镜"windows键+ESC键". 3.打开"运行"(windows键+R键),输入"magnify". 4.打开"开始"(windows键),右键单击空白处,选择"所有
  • Win7系统中如何查看搜狗输入法打字速率方法 Win7系统中如何查看搜狗输入法打字速率方法 我们现在使用电脑打字基本上都会使用输入法,输入法最广泛的就要数搜狗输入法了,因为非常的好用所以得到了广泛的使用,我们如何才能让搜狗输入法打出我们想要的字体呢,怎么能看到我们打字的速度是多少呢,肯定每个人都想要知道,我们使用ghost win7系统下载的系统中的搜狗输入法其实经过设置就可以看到我们的打字速度是多少了,其实非常的简单就可以查看,想要知道自己打字的速度的朋友可以根据小编的步骤来一起查看吧! 1.首先我们需要查看win7系统自己的输入法中有测试打字速度的功能,有些比较简易的版本可能就会没
  • 53平小户型婚房装修 53平小户型婚房装修 这是一套53平的一居小户型,刚结婚的小夫妻没有什么积蓄.但也非常的用心把小家装扮的温馨而浪漫,现代简约的装修风格是现在最流行的装修风格,和小编一起来欣赏一下吧! 房屋面积:53平米 装修风格:现代简约 进门做了一个到顶的鞋柜,小户型做高柜可以有效利用上层空间,正好鞋柜和厨房之间的位置可以放冰箱 用的银灰色烤漆橱柜,灶台这面背景墙做了银色亮光马赛克,很好看就是不知道是否好清理 卫生间虽小,依旧选择了干湿分区,移门隔断
  • 速战速决 拍森林人像 速战速决 拍森林人像 夏天在森林中大汗淋漓的拍了一天,连女友的妆容都变花时,还没有满意的照片?记住下面三个妙招,帮你最短时间内捕获她的笑颜. 准则1 三个小时.这些衣服和装备 选对拍摄时间,选好拍摄器材,让女朋友穿上登对的衣服,为拍出好照片打好基础! 找到这些颜色的衣服 我知道你们很认真对待这次拍摄,但性感装.黑丝袜和高跟鞋实在不适合森林这个场景.衣服风格应该尽量以简单.自然的田园风格为主,颜色避免大红.天蓝.纯黄等饱和度较高的颜色,还有一些深色调的衣服也尽量避免.我们特别请造型师推荐了一些安全色,请参考色谱图. 最
  • Photoshop照片成非主流甜美女生头像(1/6) Photoshop照片成非主流甜美女生头像(1/6) 本教程来告诉你如何利用ps把你的照片制作成非主流甜美女生头像效果的制作教程哦,好了下面我们来看看制作教程吧. 本教程来告诉你如何利用ps教程把你的照片制作成非主流甜美女生头像效果的制作教程哦,好了下面我们来看看制作教程吧. <点小图查看大图> 最终效果 <点小图查看大图> .打开原图素材,把背景图层复制一层,执行:滤镜 > 模糊 > 高斯模糊,数值为5. 首页 1 2 3 4 5 6 末页