请问这款电脑怎么样,我主要是拿来平板电脑哪款玩游戏好的cf和IoI

后使用快捷导航没有帐号?
查看: 428282|回复: 14
如何轻松设置电脑,快速提高游戏FPS值
主题帖子积分
             
Lv.1, 积分 6640, 距离下一级还需 -6590 积分
Lv.1, 积分 6640, 距离下一级还需 -6590 积分
本文转载自逆战瞬狙吧,只适用于显卡低想要流畅游戏的玩家。对于注重画面质量的,我建议还是更换显卡,最好是N卡。对于PING低的那是网速问题,建议找运营商提高带宽。我的是N卡,经过测试确实可行,现在FPS保持100左右。对于A卡没有测试
下面,就来和大家一起探讨一下如何设置的问题,分为两方面:
一个是电脑、游戏普通设置,属于大众都知道一点的设置,效果一般。
另一个就是显卡设置,属于中高端的调节,效果良好。
对显卡设置很多玩家朋友都毫无了解,所以本文将重点讲解显卡设置问题,会在文中详细地解释每个设置选项的意义和作用,并且文章最后会给出一张最终的设置选项全面截图,希望对大家有所帮助。
一、普通设置:
1.进入游戏大厅,点击右上角的“设置”,把游戏画面分辨率调整为800*600(4:3),然后把画面质量调为低”。
这里要提示一下,如果你对你的低配电脑还有一点信心,可以改为“自定义”,然后提高“阴影效果”“粒子效果”等,同时根据画面感不断调节各个选项的数值,这样能使你的电脑配置得到更为充分的发挥,提高FPS值的同时不会过于降低画面逼真度。
不过如果你只是想更流畅的体验游戏,不考虑画面质量的好坏,直接选“低”就可以了。
2.画面卡顿很有可能是因为内存不足,加多一条内存条就可能会有很大改善。
请注意,是电脑内存,不是显存!
3.CPU负荷过重也会导致显卡效果不能全部发挥,而导致FPS下降,所以关掉其它应用软件,比如录像软件、QQ、YY等也能适当提高FPS。
另外,有时周末人多的时候,不开QT之类的可以减少卡顿。
4.定期清理机箱内灰尘,如果有太多灰尘覆盖主板等,又不清理掉,容易积热,热保护动作会降低系统效率。
5.将桌面的背景图片(壁纸)或动态桌面取消掉,因为他会很大程度的影响图像刷新率。
特别是WIN7用户,特么的动态桌面坑死低配玩家啊。
6.将电脑本身的分辨率适当调小些,具体电脑显示器具体分析,配置比较低的电脑可以考虑用16位色(通常我们用的都是最高32位色)。
7.显卡的驱动程序不是越新越好的,其的更新有时也会导致FPS降低。换回原来的驱动版本一般就可以了。
虽然一般来说,显卡驱动更新能带来新功能、对部分游戏有优化功效。但是有时候会出现不兼容的情况,而且就算兼容也并不见得稳定,造成蓝屏、驱动文件缺失等等麻烦到爆的问题。
8.右键“我的电脑”- 属性 - 高级 - 性能,选择“最佳性能”,把所有视觉效果什么的都关闭。(此项对于只有2G内存却安装了WIN7的玩家效果很明显!)
1.png (26 KB, 下载次数: 58)
10:56 上传
2.png (9.16 KB, 下载次数: 52)
10:56 上传
3.png (19.59 KB, 下载次数: 158)
10:56 上传
下面进入本文重点,显卡设置:
首先是N卡设置:
打开NVIDIA显卡控制面板,方法各种各样:
1.直接右下角打开N卡控制面板托盘按钮,一般来说都是自动隐藏在小箭头里的,点开就可以显示隐藏的图标了。
4.png (2.63 KB, 下载次数: 44)
10:56 上传
点开后出现下面的图片:
这个就是N卡控制面板。
5.jpg (5.79 KB, 下载次数: 32)
10:56 上传
如果右下角箭头那里没有(或者你是xp用户),那么可以通过以下方法调出:
在桌面最下方的工具栏点鼠标右键:
6.jpg (12.3 KB, 下载次数: 33)
10:56 上传
7.jpg (42.64 KB, 下载次数: 43)
10:56 上传
8.jpg (42.6 KB, 下载次数: 37)
10:56 上传
9.png (20.02 KB, 下载次数: 24)
10:56 上传
2.第二种方法是:
开始菜单 - 控制面板
10.png (19.8 KB, 下载次数: 28)
10:56 上传
11.png (41.9 KB, 下载次数: 39)
10:56 上传
可以看到“显卡控制面板”这个选项,进去就行了。如果没有可能是驱动版本的原因,点击“程序和功能”可以查看系统安装的程序、驱动版本号和日期。
12.png (6.61 KB, 下载次数: 33)
10:56 上传
进去显卡控制面板以后,先把“图像设置”页面的活动条拉到最左边“性能”,代表性能优先。
13.png (101.75 KB, 下载次数: 146)
10:56 上传
然后跳下“PhysX设置”页面,把PhysX处理器调成N卡。
(此项是针对双显卡低配玩家而言的,比如八哥就是GT540M + 英特尔核芯显卡。单显卡玩家请无视。)
14.png (19.84 KB, 下载次数: 85)
10:56 上传
然后就进入显卡设置的重头戏了:
“管理3D设置”!
打开以后是不是看见“程序设置”?点开再点右边的“添加”按钮,选择程序。然后就可以在下面的各项细分选项中仔细调节了。
15.png (13.14 KB, 下载次数: 306)
10:56 上传
三重缓冲:关
3重缓冲是一种图象处理技术。3重缓冲使用一个前置缓存和两个后置缓存。在着色完第一个后置缓冲区的数据后,立即开始处理第二个后置缓冲区。
今天,不少新游戏都采用的是3重缓冲,3重缓冲正逐渐成为发展的趋势,因为它没有Vsync(荧幕的垂直刷新频率)等待的时间,游戏也将更加流畅。三重缓冲,有3个缓冲区,显卡无需等待前缓冲区清空进而腾出后缓冲区,随时可以把渲染结果放入第3个缓冲区。
这就是说,可以在打开垂直同步的同时保持应有的帧速了。
ATi和nVidia的驱动中都有打开三重缓冲(triple buffering)的选项。可惜这只能起到一半的作用,因为驱动中的3重缓冲选项只对OpenGL游戏起作用(逆战是D3D游戏)。加上OpenGL游戏远少于D3D游戏,所以事实上驱动的3倍缓冲选项在超过一半情况都不起作用。三级缓冲是低帧速的完美解决办法,不过,这并不是免费的午餐。打开三级缓冲也意味着需要多50%的缓存空间。在某此条件之下,它也可能会对游戏效果产生负面影响。
垂直同步:关闭
主要区别在于那些高速运行的游戏,比如实况,赛车竞速游戏,打开后能防止游戏画面高速移动时画面撕裂现象,当然打开后如果你的游戏画面FPS数能达到或超过你显示器的刷新率,这时你的游戏画面FPS数被限制为你显示器的刷新率。你会觉得原来移动时的游戏画面是如此舒服,如果达不到会出现不同程度的跳帧现象,FPS与刷新率差距越大跳帧越严重。
关闭后除高速运动的游戏外其他游戏基本看不出画面撕裂现象。关闭此选项画面流畅程度会有一定的提高。
游戏中或许强劲的显卡迅速的绘制完一屏的图像,但是没有垂直同步信号的到达,显卡无法绘制下一屏,只有等85单位的信号到达才可以绘制。这样fps自然要受到系统刷新率运行值的制约约。
简单点来说就是,如果你的电脑不是高配,直接“关闭”。
多显示器/混合GPU加速:单一显示器性能模式
该选项只有在使用多个显示设备时有效,也就是你的电脑连接多个显示器。
一般选“单一显示器性能模式 ”即可。
平滑处理模式:性能
平滑处理有两种设置,为性能和质量。分别有利于提高系统性能或改进图象质量。
如果要显示三维动画效果和强调场景的流畅变换,最好使用性能设置。
如果要以显示非常精细和逼真的三维物体为主要目的时,最好使用质量设置。
平滑处理-灰度纠正:关
作用是使GAMMA值相对平滑,让锯齿不那么明显。不开AA的话无多大用,还是关了好。
平滑处理-设置:无
该选项只有当选择了“替换任何应用程序设置”才能调节,2x、4x、8xQ、16xQ为MS取样,8x、16x为CS取样;其中MS取样性能下降比较大,CS取样在效果和性能上取得平衡点;此选项自己按照显卡性能选择;默认“无”。
平滑处理-透明度:关
该选项就是设置透明抗锯齿模式,透明抗锯齿模式可以实现非边缘AA,抗锯齿效果更佳;
多重取样性能较高、画质稍弱,超级取样性能较低、画质较好。
请根据对游戏画面要求选择;默认“关”。
最大渲染帧数:1
就是画面刷新的速度,主要是看你的硬件好坏,显卡在其中占重要地位.
“预先渲染的最大帧”是用于垂直刷新同步模式被关闭后,在显卡处理游戏画面前,所需要准备的帧数目。但并不是准备的帧数越多就越好的,当准备数目过多时,可能会造成显示和键盘或手柄的输入控制不同步。
CPU强悍的就开起,CPU越强悍数字就选越大,具体多大就要看你自己琢磨了.开了后,CPU就会渲染游戏画面,选1就是预先渲染好1帧的画面.但如果开的太高了,CPU占用100%了,那么就会出现画面延迟的现象,表现为鼠标拖过去了,画面比操作要落后一段时间过去.
一般是性能很好的电脑,调大这个来增加流畅度的,保持帧速稳定的。
如果是FPS玩家,建议设置为1。如果是普通用户,建议默认值3。
纹理过滤-三线优化:开
这个可以提高纹理质量,看上去更逼真。该选项效果类似于“各向异性过滤优化”,可按照自己对画面要求进行选择。
三线性是使用NVIDIA专用的三线性过滤优化算法,其实就是使用自动算法,在适当的地方采用更低的过滤方式来提高性能。所以这项打开时会降低画面质量,提高游戏速度。考虑到使用这项时降低的画面质量几乎是可以忽略不计的。建议开启。
纹理过滤-各向异性采样优化:开
关的时候其他无论怎么设置帧数都只有30多,开了后直接稳定在60,无论开抗锯齿还是其他过滤都能在60fps。
该选项确定是否使用优化算法进行各向异性过滤,选择“开”可以提高部分性能、损失一点画质,选择“关”则可以保证最高画质。
纹理过滤-负LOD偏移:锁定
负 LOD 偏移。应用程序有时会使用负 LOD 偏移以锐化纹理过滤。
这样做会锐化静态图象,但在动作场面中会造成失真。各向异性过滤既能够提供纹理锐化,又不会造成讨厌的失真,因此当启用各向异性过滤来获得更好的图象质量时,最好锁定 LOD 偏移(将负 LOD 偏移状态滑块移至锁定值。)否则默认设置为允许。
比如实况就是动作场面,如果你开了异性过滤后也觉得还是有点闪的话,强烈建议锁定。
纹理过滤-质量:高性能
该选项可一步控制其它“纹理过滤”选项,追求画质推荐“高质量”;一般默认“质量”即可,较低端的显卡可以选择“高性能”,提升性能。
低配的玩家建议选:“高性能” ,高配那就不用我说啦。
线程优化:自动
nv显卡芯片中有很多流处理单元,对图形多线程处理,相当于很多人在一起协同办公,人多力量大。1个人做的工作分给50个人去做,其效率不言而喻。但是这50个人如何共同做好这个工作,又是个问题。线程优化相当于用最合理的调度手段充分利用好这50个人去完成工作。
一般来说这个选择默认设置(通常是“自动”)就好。
嗯,对于低配玩家而言,全部调节好了以后,各个细项的设置就应该是这样的了:
16.png (13.19 KB, 下载次数: 256)
10:56 上传
接下来是A卡设置:
要想开启使用A卡控制面板,需要安装并打开CATALYST Control Center。(就是人们常说的CCC控制中心)
如果无法安装,那么你必须首先安装NET framework version 1.1或以上版本,当你安装完这个程序后,就可以安装并打开CATALYST Control Center了。
A卡控制面板的打开方式同样很简单,首先在桌面的任意空白位置点击鼠标右键,出现菜单的最上方,有一个ATI CATALYST(tm) Control Center选项。
17.gif (8 KB, 下载次数: 23)
10:56 上传
3D设置的第一项是标准(Standard Settings)。对于不愿意在设置上花太多时间的朋友来说,这个设置的存在是非常有帮助的。只要去掉Use custom settings前面的勾,然后拉动下面的滑动条就可以在性能与画质之间进行调整了。总的来说,越往左拉,帧率越高,但是画质越差。往右拉则反之。
  然后是抗锯齿AA(AA即“全屏抗锯齿”,英文全称“Anti-aliasing”)了。抗锯齿可以带来清晰亮丽的画面,当然一般情况下,对性能也是个巨大的冲击,低配玩家可以选择关闭了。ATI的显卡的抗锯齿设定的原则是,游戏内建有抗锯齿设定的话,就要用游戏内的选项来设定开关及抗锯齿倍数等。CCC里面的Anti-Aliasing设定里面应该勾上Use application settings。在游戏中没有抗锯齿设定情况下,对于某些游戏,是可以通过驱动强制打开抗锯齿的。
  抗锯齿倍数的滑动条上面多了一个选项,叫做形态滤波,这个就是打开MLAA的开关。
  在滑动条的下面有个名叫Filter的下拉框,里面可以选择Box, Narrow Tent, Wide Tent和Edge-Detect。在这些选项之间调整,可以看到最终的抗锯齿倍数也跟着变化。比如你原来是4x的话,选择Narrow Tent会变成6x,选择Wide tent会变成8x,选择Edge-Detect更会变成12x!不过千万不要被这个倍数被蒙蔽了。Narrow Tent和Wide Tent在消除锯齿的同时会让画面整体变得非常模糊,一般来说只有Box和Edge-Detect两种方式可以真正提供好的画质,低配请无视。
  接下来的选项根据显卡不同会有不同显示,5000系列以下的显卡在这里叫做Adaptive AA。这种AA主要是针对MSAA无法处理游戏中的铁丝网,树叶等透明纹理的锯齿的。打开会使画质进一步提高,但是帧率肯定会继续下降。对于5000系列显卡,这里是叫做AA Mode。把这里的滑动条拉到最右边是Super-Sample AA。也就是SSAA模式。这种模式极耗资源,但是能带来最好的画质。
  再往右是Anisotropic Filter,也就是AF设定。Use application settings设定是由游戏还是驱动来决定AF的设置。下面的滑动条则是倍数的设定。除非你的显卡实在有点老,需要把能关的都关掉。这里高配推荐设为8x或者16x,低配请依旧无视。
  下面就是前面提到过的Catalyst A.I了,去掉Disable Catalyst AI前面的勾就打开了这个功能。它的作用是驱动自动对帧率进行优化,代价是一些画质的损失。这个功能有两档可以调节,一档为Standard,一档为Advanced。显然,设为Advanced时,画质的损失会更大,不过游戏在高负载的时候性能下降也会小一些。如何取舍,就看你是多看重画质了。
  下面一项Mipmap Detail Level是用来调节纹理的清晰度的,一般来说,只要你的显卡属于好显卡,建议把它设在High Quality上。如果是低配,不用我说你都知道选什么了吧。
  最后是All settings,这里包含了前面这些所有的3D选项,另外还有两个前面没有的选项:Wait for vertical refresh(垂直同步),和Triple Buffering(三重缓冲)。
  垂直同步共有四档可以调节:Always off(一直关闭); Off, unless application specifies(关,除非游戏设置中打开); On, unless application specifies(开,除非游戏设置中关闭); Always on(一直开启)。这四种设置给了您比较灵活的控制垂直同步的方法。本人建议是高配一直开启,毕竟不少游戏中,不开启垂直同步会偶尔出现画面撕裂现象。),当然,如果你是低配,肯定需要关闭这个功能。
  这里的三重缓冲功能只对OpenGL游戏有效。这个功能在打开垂直同步的情况下,会对游戏的性能有所帮助,建议在玩OpenGL游戏的时候开启。逆战属于D3D游戏,此选项可以选择“关闭” 。
头像被屏蔽
主题帖子积分
提示: 作者被禁止或删除 内容自动屏蔽
主题帖子积分
Lv.5, 积分 2313, 距离下一级还需 687 积分
Lv.5, 积分 2313, 距离下一级还需 687 积分
主题帖子积分
大家一起水啊水
Lv.12, 积分 30737, 距离下一级还需 9263 积分
Lv.12, 积分 30737, 距离下一级还需 9263 积分
好深奥的东西,果断不看
[img]/static/image/smiley/jianmao/3109.gif[/img]
主题帖子积分
Lv.1, 积分 5, 距离下一级还需 45 积分
Lv.1, 积分 5, 距离下一级还需 45 积分
主题帖子积分
Lv.2, 积分 54, 距离下一级还需 546 积分
Lv.2, 积分 54, 距离下一级还需 546 积分
楼主的方法很好,而且很详细,谢谢楼主
主题帖子积分
Lv.6, 积分 3411, 距离下一级还需 589 积分
Lv.6, 积分 3411, 距离下一级还需 589 积分
顶&&顶&&顶& &顶!!!
主题帖子积分
Lv.1, 积分 3, 距离下一级还需 47 积分
Lv.1, 积分 3, 距离下一级还需 47 积分
谢谢楼主 调好后马上稳定到60
主题帖子积分
Lv.1, 积分 7, 距离下一级还需 43 积分
Lv.1, 积分 7, 距离下一级还需 43 积分
主题帖子积分
Lv.1, 积分 3, 距离下一级还需 47 积分
Lv.1, 积分 3, 距离下一级还需 47 积分
**** 作者被禁止或删除 内容自动屏蔽 ****
楼主&&我有N卡&&带显示连接不可用是咋回事
主题帖子积分
Lv.1, 积分 9, 距离下一级还需 41 积分
Lv.1, 积分 9, 距离下一级还需 41 积分
CF辅助 DNF辅助 逆战辅助各大网游辅助 加Q扣号:
主题帖子积分
Lv.1, 积分 3, 距离下一级还需 47 积分
Lv.1, 积分 3, 距离下一级还需 47 积分
楼主,我的n卡950然后全部设置高性能为什么还带不起来2d游戏啊,30fps
主题帖子积分
Lv.2, 积分 61, 距离下一级还需 539 积分
Lv.2, 积分 61, 距离下一级还需 539 积分
心悦618最强福利,助你在追女神的道路上一臂之力/act/ayuehui/index.shtml
主题帖子积分
Lv.1, 积分 3, 距离下一级还需 47 积分
Lv.1, 积分 3, 距离下一级还需 47 积分
我CPU是i7 7700 ,显卡是华硕GTX 1060& &6G&&但是为什么还是FPS低
主题帖子积分
Lv.4, 积分 1135, 距离下一级还需 865 积分
Lv.4, 积分 1135, 距离下一级还需 865 积分
好深奥的东西,果断不看
活动达人勋章
根据参与论坛活动活跃度进行手动颁发
剑灵版面勋章
剑灵版面勋章
剑灵活动勋章
剑灵版面勋章
幻想神域版面一级勋章
绝地求生版面勋章
绝地求生大逃杀新人认证勋章这个电脑咋救原来能玩LOL现在都不能玩cf【组装电脑配置吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:297,465贴子:
这个电脑咋救原来能玩LOL现在都不能玩cf收藏
这个电脑咋救原来能玩LOL现在都不能玩cf
〈腾乐〉组装电脑专业师傅上门检测,现场维修,服务至上,让您省心放心,您的满意笑容是我们的追求.组装电脑 ,
登录百度帐号推荐应用正巧几天前有位学长刚进了&b&谷歌加州总部 &/b&好像大陆一共3个人(辅导员说的o(╯□╰)o,评论里很多说不止,具体不太清楚,可能辅导员说的是&b&学长应聘的职位&/b&只招3人吧。。。不过建校70年以来第一个去加州总部的板上钉钉的),膜拜&br&&br&忘了说一句:学长188cm,大一有过接触,人很帅,为人低调,沉默寡言,谷歌年薪10W美金起(评论里说加州10W薪水不算高,其实我想说那学长本身就是土豪。。。o(╯□╰)o),这才是真正的 &b&高~富~帅&/b&&br&&blockquote&下面是学长写的一篇求职总结:&a href=&///?target=http%3A///%3Fp%3D1829& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Google北美求职总结&i class=&icon-external&&&/i&&/a&&/blockquote&1) 备考&p&据我所知,大公司的面试题难度并不算大,考的内容也偏基础。备考的关键态度是“有诚意”。因为有诚意,所以不会敷衍地不会把书背一遍了事,更不会把学习知识当成一种负担。&/p&&p&说来侥幸,我是从高一开始学习编程的,所以功底扎实也算是情理之中。高中三年虽较大学更贪玩,但是杂事少了太多,所以学习效率还是高的。另外,高中资源匮乏,没有笔记本电脑之类分散注意力的东西,所以大半的代码都是在纸上书写和模拟执行的,这也无形中使得学习的过程更踏实。进入大学后,因为有了高中的基础,所以对于学习的方向和方式都有很有主见,三年学下来基础已经很扎实了。&/p&&p&从细节上讲,我在高中参加信息学奥赛,学习了各种算法和数据结构;大学开始“不务正业”,把玩各种系统(GNU/Linux的各种发行版),语言(C, C++, Java, Python, Go, Scheme),项目(LLVM,Ogre,libstdc++)和公开课(Coursera的Programming Languages和Compilers)。先后也看过点书,比如《计算机程序设计艺术》的卷1,《Unix编程艺术》,《编译原理》等,也略读了《计算机程序的构造和解释》。《深入理解计算机系统》也是本口碑不错的书,但是我没读,而是直接看着Intel手册和汇编器文档写了点bios启动代码了事。&/p&&p&大三下学期回归竞赛(ACM-ICPC),凭借着熟练的代码功底,拿了两个中国邀请赛的铜牌玩玩。但是这成绩并不算好,毕竟我没有经过长期的训练。我平日在TopCoder和CodeForces上做的练习题也使我获益良多。&/p&&p&大三暑假参加了一个在我看来意义十分重大的活动,叫Google Summer of Code(GSoC)。我在这个活动中帮开源编译器项目GCC编写代码(一个正则表达式引擎),而且得到了他们的肯定。这份经历在后来的面试中起到了很大的作用。上一个寒假的时候,我看到Apple的LLVM团队招实习生,我也投了简历。他们表示感兴趣,但是由于我即将毕业无法做实习生,而他们也不提供正式职位,所以终究没有面试。直到最近,我还突然收到了华为的邮件,说看到我在GCC项目中的贡献,问我愿不愿意去他们的编译器组。&/p&&p&这零零散散的六年备考,其动机自然不是就业,而是出于一种本能。我受个人兴趣的影响很大,做不感兴趣的事会异常痛苦;同样做感兴趣的事也会非常卖力。我甚至在大二下学期从通信工程专业转到了计算机科学与技术专业,因为我觉得通信方面的课程实在是枯燥无味。转专业之后相当轻松,大部分课程能应付自如,也多出了更多课余时间来巩固自己的技能。可以毫不夸张地说,如果不转专业,我能拿到这个offer的可能性并不大。&/p&2) 面试&p&我曾给Twitter投简历,却被直接拒绝。若是直接投简历给Google,多半不会引起他们的注意。所幸的是,Google正好在中国举办了特别的招聘活动(Google校园招聘),而笔试形式正是一场竞赛风格的比赛,和ACM-ICPC如出一辙。笔试面向全互联网,见者有份。其题目难度很低,但是时限很紧对代码熟练度的要求很高。我凭借熟练的C++功底拿到了第36名的成绩(约2000多人参赛)。果然,没几天他们就给了我面试的机会。&/p&&p&第一轮是电话面试,约45分钟。面试方式是一边打电话一边在网页上写代码,我所键入的每一个字符都会实时地在面试官的屏幕上显示出来。面试官毫无废话,让我做完简单的自我介绍之后直接上题,让我在网页上写代码。题目不难,但是我们通常也应该对自己的能力打个折扣,毕竟现场写代码的心里会有点紧张。题目写完后又问了一些概念性的问题。这个凭借自己六年积累的常识随便作答即可,他们最看重的是代码而不是概念,因为概念可以随时掌握,而写代码的功夫却是实打实的。&/p&&p&电面过后被安排了两次Onsite(直面)。幸亏Google在纽约有办公室,省去了坐飞机的辛苦。两次Onsite前后一共五轮,一轮45分钟。形式几乎一致,都是极其简单(甚至没有)的介绍之后开始做题。&/p&&p&做题的方式不尽相同,有的面试官偏好让你在纸上写代码,有的喜欢白板上写;也有一个面试官允许我在电脑上写,最后他对屏幕拍了一张照片。总言之,此处对代码熟练度的要求又高了一个档次,特别是他们要求在纸上写的那种。&/p&&p&他们对编程语言没有限制(再一次体现了他们注重代码能力而不是概念),也不要求写出能编译通过的代码(因为代码中少个分号无关紧要),只求能把自己的算法描述清楚。&/p&&p&五轮直面碰到了四个白人和一个亚洲人(听口音有可能是中国人)。四个白人选的题都比较简单,甚至出现了45分钟做完一题又做一题的局面;其中两位给我机会让我做较详细的自我介绍,我也乘机介绍了自己在GSoC中的得意之作。我可以觉察出,即便是Google员工,也觉得做出一个工业级强度的正则表达式引擎不是一件简单的事情。那个亚洲人并没有问到我的项目经历,而是对我的竞赛经历十分感兴趣,问的题也十分给力。我写了两页半的代码完整地解决了问题,简直酣畅淋漓。&/p&&p&面试反馈相当的正面,看来他们就是要基础扎实,写代码熟练的人。之后便是走一些流程,自己不能做些什么了。最后也顺利拿到offer。&/p&3) 总结&p&这场求职前后历时四个月,我承认最初是有点运气的,但是更多的是扎实的基本功。这些基本功唯一要求的就是不断的练习。&/p&&p&很多同学在高中阶段并没有像我一样参加竞赛,大学阶段也没有得到很好的引导;但是在我看来,只要定下心来,花上半年到一年的功夫,认认真真写代码做题,有针对性地打磨自己的熟练度,在北美获得一份大公司的工作并非难事。&/p&&br&&p&&b&附Working Experience:&/b&&br&Google, Mountain View, start from June 2, 2014&br&Interests&br&Programming Languages, Compilers&br&Skills&br&Languages: C, C++, Java, Python, Go, Scheme&br&Platform: GNU/Linux&br&Projects&br&&b&GCC (on &a href=&///?target=http%3A//gcc.gnu.org& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&gcc.gnu.org&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&) : GNU C++11 standard library &regex&&/b&&br&Evil (on &a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&) : Yet another Scheme interpreter, in C&br&compiler_practice (on &a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&) : A compiler practice based on LLVM.&br&OgrePractice (on &a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&) : A WoW-like scene wandering program, in C++ & Ogre&br&Contests&br&2013 ACM-ICPC China Nanjing Invitational Programming Contest Bronze Award&br&2013 ACM-ICPC China Hangzhou Invitational Programming Contest Bronze Award&br&Google of Greater China Test for New Grads of 2014, Rank 33/2142, identifier TShen&br&Google Code Jam 2013, stop at Round 2, identifier INNOCENT&br&Scholarship&br&&b&Google Summer of Code 2013, Completing C++11 regex&/b&, $5000&br&Education&br&B.S. Computer Science, New York Institute of Technology, 2014&/p&
正巧几天前有位学长刚进了谷歌加州总部 好像大陆一共3个人(辅导员说的o(╯□╰)o,评论里很多说不止,具体不太清楚,可能辅导员说的是学长应聘的职位只招3人吧。。。不过建校70年以来第一个去加州总部的板上钉钉的),膜拜 忘了说一句:学长188cm,大一有过…
&figure&&img src=&/50/v2-2c3fc060fd6dd0e1a1253ab7_b.jpg& data-rawwidth=&1048& data-rawheight=&349& class=&origin_image zh-lightbox-thumb& width=&1048& data-original=&/50/v2-2c3fc060fd6dd0e1a1253ab7_r.jpg&&&/figure&&p&应一些同学的要求,把这学期上C语言编程课的讲课视频录制剪辑,上传到网易云课堂,感兴趣的朋友可以在线观看,欢迎多提宝贵意见。&/p&&p&&br&&/p&&p&MOOC视频链接:&a href=&/?target=http%3A///course/introduction.htm%3FcourseId%3D& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/course/in&/span&&span class=&invisible&&troduction.htm?courseId=&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&【适用人群】&/p&&p&零基础编程自学者、大学理工科学生,对游戏开发感兴趣、觉得已有编程教学方法太枯燥的学生&/p&&p&&br&&/p&&p&【课程概述】&/p&&p&先讲最少的语法知识,再把游戏开发应用于C语言教学;从无到有开发游戏,通过游戏案例逐步应用语法知识,提升对编程的兴趣和能力。&/p&&p&&br&&/p&&p&【课程大纲】&/p&&p&课程更新频率:每周二更新&/p&&p&&br&&/p&&p&第一章 课程介绍&/p&&p&1、课程简介&/p&&p&2、游戏视频&/p&&p&&br&&/p&&p&第二章 程序设计概念&/p&&p&1、Hello World&/p&&p&2、程序基本结构&/p&&p&&br&&/p&&p&第三章 C语言快速入门&/p&&p&1、数据类型、常量变量&/p&&p&2、求长方形面积&/p&&p&3、运算符&/p&&p&4、输入输出&/p&&p&&br&&/p&&p&第四章 程序基本结构及游戏开发快速入门&/p&&p&1、顺序&/p&&p&2、选择&/p&&p&3、循环&/p&&p&4、弹跳小球&/p&&p&5、飞机游戏&/p&&p&&br&&/p&&p&第五章 函数封装的游戏开发&/p&&p&1、函数&/p&&p&2、飞机游戏&/p&&p&3、反弹球&/p&&p&4、flappy bird &/p&&p&&br&&/p&&p&第六章 应用数组的游戏开发(预计11.28完成)&/p&&p&1、数组&/p&&p&2、生命游戏&/p&&p&3、反弹球消砖块&/p&&p&4、空战游戏&/p&&p&5、贪吃蛇&/p&&p&&br&&/p&&p&第七章 简单绘图游戏开发(预计12.5完成)&/p&&p&1、EasyX&/p&&p&2、多球反弹&/p&&p&3、实时钟表&/p&&p&4、反弹球消砖块&/p&&p&5、鼠标交互&/p&&p&&br&&/p&&p&第八章 应用图片音乐素材的游戏开发(预计12.12完成)&/p&&p&1、飞机大战&/p&&p&2、复杂动画&/p&&p&3、反弹球消砖块&/p&&p&&br&&/p&&p&第九章 其他语法知识在游戏开发中的应用(预计12.26完成)&/p&&p&1、指针与字符串&/p&&p&2、音乐播放函数封装&/p&&p&3、字符雨动画&/p&&p&4、结构体&/p&&p&5、粒子仿真&/p&&p&6、文件&/p&&p&7、游戏存档读档&/p&&p&&br&&/p&&img src=&/50/v2-23f9d52eb41f0bdbb7af6_b.jpg& data-caption=&& data-rawwidth=&880& data-rawheight=&397& class=&origin_image zh-lightbox-thumb& width=&880& data-original=&/50/v2-23f9d52eb41f0bdbb7af6_r.jpg&&&img src=&/50/v2-e7dcaf1edc_b.jpg& data-caption=&& data-rawwidth=&880& data-rawheight=&560& class=&origin_image zh-lightbox-thumb& width=&880& data-original=&/50/v2-e7dcaf1edc_r.jpg&&&p&&/p&
应一些同学的要求,把这学期上C语言编程课的讲课视频录制剪辑,上传到网易云课堂,感兴趣的朋友可以在线观看,欢迎多提宝贵意见。 MOOC视频链接: 【适用人群】零基础编程自学者、大学理工科学生,对游戏开发感兴趣、觉得已有编程教学…
&figure&&img src=&/50/v2-60dae651db578eaa4434b7_b.jpg& data-rawwidth=&600& data-rawheight=&335& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/50/v2-60dae651db578eaa4434b7_r.jpg&&&/figure&&p&《&a href=&/?target=http%3A///21-days.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Teach Yourself Programming in Ten Years&i class=&icon-external&&&/i&&/a&》&/p&&p&不过我知道大家肯定是不想看英文的了,所以我给大家找了&a href=&/?target=http%3A///22905/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&中文版&i class=&icon-external&&&/i&&/a&。所有试图自学编程的人都应该发自内心的同意它的说法(除去少数过时的具体技术部分)。&/p&&hr&&h2&&b&正文&/b&&/h2&&hr&&p&&b&你们着什么急?&/b&&/p&&p&随意步入一家书店,满目都是《7天搞定Java编程》这种速成书目,同样的书籍还包括Visual Basic、Window系统、Internet互联网等等,它们都承诺在几天,甚至几小时之内就让你能够学会相关技术。我在亚马逊网站上做了如下的条件检索:&/p&&p&&a href=&/?target=http%3A///exec/obidos/search-handle-url/ix%3Dbooks%26rank%3D%252Bfeaturedrank%26fqp%3Dpower%2501pubdate%253A%2520after%0and%2520title%253A%2520days%2520and%250D%title%253A%2520learn%2520or%2520title%253A%2520teach%2520yourself%2529%26sz%3D25%26pg%3D1/ref%3Ds_b_np& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pubdate: after 1992 and title: days and&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=http%3A///exec/obidos/search-handle-url/ix%3Dbooks%26rank%3D%252Bfeaturedrank%26fqp%3Dpower%2501pubdate%253A%2520after%0and%2520title%253A%2520days%2520and%250D%title%253A%2520learn%2520or%2520title%253A%2520teach%2520yourself%2529%26sz%3D25%26pg%3D1/ref%3Ds_b_np& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&(title: learn or title: teach yourself)&i class=&icon-external&&&/i&&/a&&/p&&p&出版日期:1992年以后,题目关键字:“天”,“学会”或者“自学”&/p&&p&然后得到了248条搜索结果。头78条都是计算机类书籍(第79条记录是《30天学会孟加拉语》)。我将“天”关键字换成了“小时”,不出意外地搜索到了253条记录,其中头77条记录是计算机书籍,第78条的搜索记录是《24小时语法和样式自学手册》。在总共搜索到的头200条记录中,有96%是计算机书籍。&/p&&p&从上面的搜索结果可以看出来,要么就是人们对计算机技术的学习如饥似渴,要么就是计算机技术实在太简单,不费吹灰之力就能学会。相比于计算机技术书籍的如此“速成”,在其他领域的书籍里,你却很难找到诸如:“三天学会贝多芬”,或者“五天搞定量子力学”,这种速成教材,甚至连《狗狗喂养手册》这种宠物指南,都鲜有“几天搞定”的说法。Felleisen &i&et al.&/i&在他们的著作《如何设计程序》一书中明确指出了这种“速成”的趋势,并评论到:“垃圾的编程技术当然非常容易,傻子都能在21天之内学会,哪怕他天生就是个白痴。”&/p&&p&让我们来仔细看看《&a href=&/?target=http%3A///Learn-C-Three-Days-Rachele/dp/%3Ftag%3Djob0ae-20& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&3天学会C++&i class=&icon-external&&&/i&&/a&》这种速成教材实际上意味着什么:&/p&&p&&b&●学会:&/b&在3天时间里你几乎没有时间去写任何有意义的程序,就更不要谈什么从编程中获得经验和教训这种事情了。你也不可能有时间和有经验的程序员一起工作和交流,也不会体验到在真正的C++环境下工作是什么感觉。长话短说吧,你就是没时间,也学不到什么。所以这种书籍最多也就让你有个粗浅的印象,但是绝对不可能有深入的理解。就像亚历山大教皇说的那样,“浅尝辄止是很危险的”。&/p&&p&&b&●C++:&/b& 如果你有其他编程语言的基础,那&b&么&/b&3天之内你也许可以学到C++的一些语法,但即使是这样,你还是无法了解如何使用该语言编程。简言之,如果你之前是一个Basic程序员,那么经过3天的学习,你会成为一个“能使用C++语法编写Basic风格程序的程序员”,不过这样是没法发挥出C++语言本身的优势的(说句不好听的,你连怎么犯C++的典型错误都不会)。仅仅知道一点语法意味着什么呢?Allan Perlis曾经说过:“一个无法改变你思维方式的编程语言是不值得学习的。”;另一种可能性是,你可以只学一点点C++知识(类似的,或者一点点JavaScript,或者一点点Flex Script),然后就可以利用现有的工具制作应用接口,完成特定的编程任务了。但是这样的行为并不意味着你“会”编程了,你只是会使用这个工具完成任务而已。&/p&&p&&b&●3天:&/b&很不幸,3天是远远不够的,往下看你就知道了。&/p&&p&研究人员(&a href=&/?target=http%3A///exec/obidos/ASIN/X/%3Ftag%3Djob0ae-20& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bloom (1985)&i class=&icon-external&&&/i&&/a&、 Bryan & Harter (1899,见文后参考书目)、&a href=&/?target=http%3A///exec/obidos/ASIN/%3Ftag%3Djob0ae-20& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hayes (1989)&i class=&icon-external&&&/i&&/a&、Simmon & Chase (1973,见文后参考书目) 的一系列调查研究显示,在各个领域内,要想获得专业级别的水平,大约需要10年时间的努力。参与此项调查的领域包括:国际象棋,作曲,发报,绘画,钢琴演奏,游泳,网球等。科学家们从神经心理学和拓扑学的角度对这些领域进行研究,并得出结论。若要在某一领域内达到专家级的水平,其关键在于“审慎地重复”,也就是说,并非是机械地,一遍又一遍地练习,而是要不断地挑战自我,试图超越自身当前的水平,通过不断的尝试挑战,并在尝试的过程中和尝试之后对自身的表现进行分析和总结,吸取经验,纠正之前犯过的各种错误。把这一“审慎”的过程不断重复,才能取得成功。&/p&&p&所谓的“捷径”是不存在的,即使对于莫扎特这种天才来说,也没有捷径可走,尽管4岁就开始作曲,可是他也花了13年的时间,才真正地写出了世界级的作品。再举一个例子,甲壳虫乐队(The Beatles),他们似乎在1964年凭借一系列热门单曲和其在艾德沙利文秀(The Ed Sullivan show)上的演出一炮而红,但是你也许不知道,他们早在1957年就在利物浦和汉堡两地进行小规模演出了,而在此之前的非正式演出更是不计其数。甲壳虫乐队的主要成名曲《&i&Sgt. Peppers&/i&》,则是1967年才发行的。&a href=&/?target=http%3A///Outliers-Story-Success-Malcolm-Gladwell/dp/%3Ftag%3Djob0ae-20& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Malcolm Gladwell&i class=&icon-external&&&/i&&/a&公布了他对柏林音乐学院所作的一项研究的报告,该研究对比了一个班里的学习成绩为上、中下三个档次的学生,并逐一询问他们进行音乐练习的时间&/p&&p&这三个档次中的所有人,大约都是在5岁的时候开始练习音乐的,一开始的时候大家练习音乐的时间都差不多,大约一周2到3小时。但是到了八岁左右,大家的区别就开始体现了。后来成为班里最好的那一部分学生开始比别的学生练习得更多,大概每周6到9小时,12岁的时候每周8小时,14岁的时候每周16小时,往后则越来越多,直到20岁左右,他们每周练习音乐的时间已经超过30小时了。在20岁的年纪,那些精英级别的演奏家们都有累计超过10000小时的音乐练习时间。相比之下,仅有部分优等生能达到8000小时的累计练习时间,而那些音乐教师级别的学生,他们的累计练习时间只有4000小时左右。&/p&&p&所以,也许这个让你能达到专业等级的神奇时间应该是10000小时,而不是10年。(Henri Cartier-Bresson ()说过,“(作为摄影师),你所拍摄的头10000张照片都是垃圾”,但即使是垃圾作品,他拍一张照片也要花接近一小时。)Samuel Johnson ()认为这个时间应该更长:“在任何一个领域要想做到极好,势必穷尽一生的精力,否则根本无法企及。” Chaucer ()也发出过“生命如此短暂,技能如此高深”的感叹。Hippocrates (c. 400BC)因写下了如下的句子而被人称颂:“ars longa, vita brevis”,该句是来自于一个更长的引用:”Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile”, 这段话翻译成英语就是:“生命很短暂,但是技艺却很高深,机遇转瞬即逝,探索难以捉摸,抉择困难重重”。这段话是用拉丁文写的。在拉丁文里,ars可以翻译为“技艺”或者“艺术”,但是在古希腊文里,ars只能做“技能”的意思,而没有“艺术”的意思。&/p&&p&&br&&/p&&p&&b&你想当程序员么?&/b&&/p&&p&下面是我列举的程序员成功“食谱”&/p&&p&&b&●沉醉&/b&于编程,编程是为了兴趣。保持这种充满兴趣的感觉,以便于你能将其投入到你的10年/10000小时的编程时间中。&/p&&p&&b&●程序&/b&. 最好的学习方式是“&a href=&/?target=http%3A//www.engines4ed.org/hyperbook/nodes/NODE-120-pg.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&在实践中学习&i class=&icon-external&&&/i&&/a&”。更技术一些地说:“一个人在某个专业领域方面能够达到最高水平,并不是因为这个人经验增长了以后而自动获得的,而是这个人为了进步所做出了专门的努力之后产生的结果。”&a href=&/?target=http%3A//www2.umassd.edu/swpi/DesignInCS/expertise.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&(p. 366)&i class=&icon-external&&&/i&&/a&“最有效的学习包括如下几个要素:明确并且难度适当的任务,适应学习者个人情况,及时的信息反馈,有重新开始和改正错误的机会)(p. 20-21) 《&i&&a href=&/?target=http%3A///Cognition-Practice-Mathematics-Culture-Everyday/dp/%3Ftag%3Djob0ae-20& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life&i class=&icon-external&&&/i&&/a&&/i&》这本书提供了上述有趣的观点&/p&&p&&b&●&/b&同其他程序员&b&交流&/b&,多阅读其他人写的程序。这些远比你看书或者上培训班重要&/p&&p&&b&●&/b&如果你愿意的话,就选择去读一个计算机科学专业吧(当然你还可以去念这个专业的研究生)。如果你能做到这点,那么你就有机会找到一些需要计算机学位认证的工作,也会让你对这个行业有更深的理解。不过,如果你不是上学的料,那么你可以(当然需要有足够的毅力)靠自己学习,或者通过工作来积累经验。无论你采用哪种途径,光依靠书本是远远不够的。“如果说仅仅靠学习油画和调色技术无法创造出顶尖的画家的话,那么光学习计算机科学课程更不能造就顶尖的程序员。”,Eric Raymond这样说过,他著有《新黑客字典》一书。我所聘用过的最好的程序员仅仅只有高中文凭; 他写了很多伟大的软件,他有他自己的新闻组,并且通过股权赚够了钱,还开了家属于自己的夜店。(作者说的这个人是Jamie Zawinski,他是网景浏览器(Netscape)的早期开发这者之一,也是开源项目Mozilla和&a href=&/?target=http%3A//en.wikipedia.org/wiki/XEmacs& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&XEmacs&i class=&icon-external&&&/i&&/a&的主要贡献者,他开了一家叫做DNA_lounge的夜店,位于旧金山的SoMa区——译者注)&/p&&p&&b&●&/b&与其他程序员一起&b&做项目&/b&。在某些项目中要尽量做到最好,在某些项目中却别做那么好。当你是最好的时候,你的领导能力就会得到锻炼,并激发你高瞻远瞩的视野。当你做得不好的时候,你就能知道你的领导怎么做事,以及他们不喜欢哪些事(因为领导总是把那些他们不爱做的杂事丢给他们认为不得力的人去做)&/p&&p&&b&●&/b&尝试&b&跟随&/b&其他程序员一起做项目。尝试去理解其他人所写的代码。看看如果你无法找到代码的作者本人的情况下,理解和修正他写的代码需要花费什么样的代价。同时也思考,如何规划你自己的程序代码,让它们更容易被其他人理解和维护。&/p&&p&&b&●&/b&至少学习半打&b&编程语言&/b&。包括一种支持类抽象的语言(例如Java或者C++),一种支持函数抽象的语言(例如Lisp或者ML),一种支持语法抽象的语言(例如Lisp),一种支持声明式编程的语言(例如Prolog或者C++模板),一种支持协同程序的语言(例如Icon或者Scheme),一种支持平行并发编程的语言(例如Sial)&/p&&p&&b&●&/b&牢记“计算机科学”中包含着“&b&计算机&/b&”这个词。了解计算机需要花多长的时间执行一条指令,花多长时间从内存中获取一个字(word)(包括缓存命中和不命中两种情况),如果连续从磁盘中获取数据,时间消耗如何?以及需要花多少时间才能再磁盘上定位一个新的位置?&/p&&p&&b&●&/b&尽量参与语言的&b&标准化&/b&过程。往大了说,你可以试着加入ANSI C++委员会这样的专业组织,往小了讲,你也可以从自己的代码规范入手,限定代码缩进是需要2个空格宽还是4个空格宽。无论采用哪种方式,你都需要了解其他人对于语言的喜好,以及他们的喜好的程度,甚至你要知道他们为什么产生这样的喜好的原因。&/p&&p&&b&●&/b&有良好的意识,能尽快适应语言标准化的成果。&/p&&p&要掌握上面所说的所有内容,光靠看书学习应该是很难做到的。当我的第一个孩子出生的时候,我几乎阅读了市面上所有的《如何…》指南书籍,但是我读完了以后还是觉得自己是个菜鸟。30个月以后,我的第二个孩子快出生时,我难道还要做一个书虫么?不!相反,我此时更依赖我的个人经验,这些经验相比于那些上千页的书籍,则更加有效和让我放心。&/p&&p&Fred Brooks所著的著名的论文《&i&&a href=&/?target=http%3A///gp/product//ref%3Das_li_qf_sp_asin_il_tl%3Fie%3DUTF8%26tag%3Djob0ae-20%26linkCode%3Das2%26camp%3D1789%26creative%3D9325%26creativeASIN%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&No Silver Bullets&i class=&icon-external&&&/i&&/a&| &/i&没有银弹》里向我们揭示了发现和培养软件设计人才的三步骤:&/p&&p&1.有组织地辨认顶尖的软件设计人才,越早越好&/p&&p&2.安排一个职业导师,为其职业前景指点迷津,并谨慎对待自己的职业履历&/p&&p&3.为成长中的设计师们提供机会,让他们能够互相激发促进。&/p&&p&即使一部分人已经具备了成为优秀软件设计人员的潜质,也需要经历工作的慢慢琢磨,方可展现才华。&a href=&/?target=http%3A//rmatik.uni-tuebingen.de/users/klaeren/epigrams.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Alan Perlis&i class=&icon-external&&&/i&&/a&则说得更加直接:“任何人都可以被‘教’成一个雕塑匠,但米开朗基罗则被‘教’如何不要成为一个雕塑匠,因为他要做的是雕塑大师,。这个道理放到编程大师身上同样管用。”Perlis认为,伟大的软件开发人员都有一种内在的特质,这种特质往往比他们所接受的训练更重要。但是这些特质是从哪里来的呢?是与生俱来的?还是通过后天勤奋而来?正如Auguste Gusteau(动画电影《料理鼠王》里的幻象大厨)所说,“谁都能做饭,但只有那些无所畏惧的人才能成为大厨!”我很情愿地说,将你生命中的大部分时间花在审慎地练习和提高上,这很重要!但是“无所畏惧”的精神,才是将促使这些练习成果凝聚成形的途径。或者,就像是《料理鼠王》里那个与Gusteau作对的刻薄的美食评论家Anton Ego说的那样:“不是任何人都能成为伟大的艺术家,不过,伟大的艺术家在成名前可能是任何人。”&/p&&p&所以尽管去书店大买Java/Ruby/Javascript/PHP书籍吧;你也许会发现他们真的挺管用。但是这样做不会改变你的人生,也不会让你在整体经验上有什么提高。24小时,几天,几周,做一个真正的程序员?光靠读书可读不出来。你尝试过连续24个月不懈努力提高自己么?呵呵,如果你做到了,好吧,那么你开始上路了……&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&参考书目&/b&&/p&&p&Bloom, Benjamin (ed.) &i&&a href=&/?target=http%3A///gp/product/X/ref%3Das_li_qf_sp_asin_il_tl%3Fie%3DUTF8%26tag%3Djob0ae-20%26linkCode%3Das2%26camp%3D1789%26creative%3D9325%26creativeASIN%3DX& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Developing Talent in Young People&i class=&icon-external&&&/i&&/a&&/i&, Ballantine, 1985.&/p&&p&Brooks, Fred, &i&&a href=&/?target=http%3A///gp/product//ref%3Das_li_qf_sp_asin_il_tl%3Fie%3DUTF8%26tag%3Djob0ae-20%26linkCode%3Das2%26camp%3D1789%26creative%3D9325%26creativeASIN%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&No Silver Bullets&i class=&icon-external&&&/i&&/a&&/i&, IEEE Computer, vol. 20, no. 4, 1987, p. 10-19.&/p&&p&Bryan, W.L. & Harter, N. “Studies on the telegraphic language: The acquisition of a hierarchy of habits. &i&Psychology Review&/i&, 5-375&/p&&p&Hayes, John R., The &a href=&/?target=http%3A///gp/product//ref%3Das_li_qf_sp_asin_il_tl%3Fie%3DUTF8%26tag%3Djob0ae-20%26linkCode%3Das2%26camp%3D1789%26creative%3D9325%26creativeASIN%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Complete Problem Solver&i class=&icon-external&&&/i&&/a& Lawrence Erlbaum, 1989.&/p&&p&Chase, William G. & Simon, Herbert A. &a href=&/?target=http%3A///books%3Fid%3DdYPSHAAACAAJ%26dq%3D%2522perception%2Bin%2Bchess%2522%2Bsimon%26ei%3Dz4PyR5iIAZnmtQPbyLyuDQ& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&“Perception in Chess”&i class=&icon-external&&&/i&&/a& &i&Cognitive Psychology&/i&, -81.&/p&&p&Lave, Jean, &i&&a href=&/?target=http%3A///gp/product//ref%3Das_li_qf_sp_asin_il_tl%3Fie%3DUTF8%26tag%3Djob0ae-20%26linkCode%3Das2%26camp%3D1789%26creative%3D9325%26creativeASIN%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life&i class=&icon-external&&&/i&&/a&&/i&, Cambridge University Press, 1988.&/p&&p&&br&&/p&&p&&b&问答&/b&&/p&&p&典型PC系统各种操作指令的大概时间&/p&&p&execute typical instruction&/p&&p&执行基本指令&/p&&p&1/1,000,000,000 sec = 1 nanosec&/p&&p&fetch from L1 cache memory&/p&&p&从一级缓存中读取数据&/p&&p&0.5 nanosec&/p&&p&branch misprediction&/p&&p&分支误预测&/p&&p&5 nanosec&/p&&p&fetch from L2 cache memory&/p&&p&从二级缓存获取数据&/p&&p&7 nanosec&/p&&p&Mutex lock/unlock&/p&&p&互斥加锁/解锁&/p&&p&25 nanosec&/p&&p&fetch from main memory&/p&&p&从主内存获取数据&/p&&p&100 nanosec&/p&&p&send 2K bytes over 1Gbps network&/p&&p&通过1G bps 的网络发送2K字节&/p&&p&20,000 nanosec&/p&&p&read 1MB sequentially from memory&/p&&p&从内存中顺序读取1MB数据&/p&&p&250,000 nanosec&/p&&p&fetch from new disk location (seek)&/p&&p&从新的磁盘位置获取数据(随机读取)&/p&&p&8,000,000 nanosec&/p&&p&read 1MB sequentially from disk&/p&&p&从磁盘中顺序读取1MB数据&/p&&p&20,000,000 nanosec&/p&&p&send packet US to Europe and back&/p&&p&从美国发送一个报文包到欧洲再返回&/p&&p&150 milliseconds = 150,000,000 nanosec&/p&&p&&br&&/p&&p&&b&附录:如何选择语言&/b&&/p&&p&很多人曾经问过我,他们应该选择什么编程语言作为入门之用?我想这个问题很难有一个确切的答案,但是下面几点可以用来作为选择的参考。&/p&&p&&i&●随大流&/i&。当被问到“我应该使用什么系统呢?Windows, Unix还是Mac?”,我的回答通常是:“看你的朋友们用什么你就用什么。”这么做的好处是,有了你朋友的帮助,你就能有效地回避操作系统固有的一些差异,对于选择编程语言来说,也是同样道理。同时,你还要有点儿战略眼光:如果选择了一种编程语言,并成为其编程社区的一员,那么你选择的语言和社区是正在不断壮大?还是奄奄一息?如果你有编程方面的问题,能不能从相关的书籍,网站以及在线论坛中得到解答?你是不是跟论坛里的人合得来?这些都是要考虑的。&/p&&p&&i&●简单实用&/i&。诸如C++以及Java这样的编程语言都是非常专业的开发语言,适用于有经验的大型团队进行开发,需要时常考虑代码的运行效率。所以,这类的编程语言就适合于那样(复杂)的编程环境。如果你是一个初学者,那么就不要搞那么复杂。你所需要的是一种简单易学的编程语言,你靠你自己就可以搞定的语言。&/p&&p&&i&●交互。&/i&给你两种选择去学钢琴:第一种,常规做法,也是互动的做法,也就是你每敲一下琴键就能听到琴音;第二种,批量模式,等你把所有该按的琴键都按了一遍,然后再一次性放给你听。你选择哪一个呢?显然,交互式的方式对于钢琴学习来说更容易,对于编程学习也是如此。那么就坚持使用交互式模式学习编程吧。&/p&&p&基于上述的观点,我所推荐的编程入门语言应该是Phyton或者Scheme.但是读者自身的环境是非常复杂多变的,所以你们也许会其他更好的选择。如果你的年龄还不到两位数,那么你们应该考虑Alice语言或者Squeak语言(很多成年的初学者也认为他们很有趣)。当然,做出选择并开始行动,这个最重要。&/p&&p&&br&&/p&&p&&b&附录:书籍和其他资源&/b&&/p&&p&&b&&i&●&/i&Scheme:&/b&《&a href=&/?target=http%3A///gp/product//ref%3Das_li_qf_sp_asin_il_tl%3Fie%3DUTF8%26tag%3Djob0ae-20%26linkCode%3Das2%26camp%3D1789%26creative%3D9325%26creativeASIN%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Structure and Interpretation of Computer Programs (Abelson & Sussman)&i class=&icon-external&&&/i&&/a& | &a href=&/?target=http%3A///dp/B0011AP7RY/%3Ftag%3Dvastwork-23& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&计算机程序的构造和解释&i class=&icon-external&&&/i&&/a&》 这本书或许是计算机科学最好的入门书籍,本书从计算机科学的角度入手,教你如何进行编程。你可以在&a href=&/?target=http%3A//www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&online videos of lectures&i class=&icon-external&&&/i&&/a&观看本书的在线视频教程,以及&a href=&/?target=http%3A//mitpress.mit.edu/sicp/full-text/book/book.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&complete text online&i class=&icon-external&&&/i&&/a&的在线文字版。 学习本书是需要一些挑战的,相信该书会让一部分人望而却步的。&/p&&p&&b&&i&●&/i&Scheme:&/b&《&a href=&/?target=http%3A///gp/%253Ci%253Eproduc%253C/i%253Et/%3Ftag%3Djob0ae-20& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&How to Design Programs (Felleisen et al.)&i class=&icon-external&&&/i&&/a& | &a href=&/?target=http%3A///%25E7%25A8%258B%25E5%25BA%258F%25E8%25AE%25BE%25E8%25AE%25A1%25E6%%25E6%25B3%%E9%259B%25B7%25E6%25A3%25AE/dp/B0011AIAX2%3Ftag%3Dvastwork-23& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&程序设计方法&i class=&icon-external&&&/i&&/a&》是一本好书,该书介绍了如何用优雅并且有效的方式进行程序设&/p&&p&&b&&i&●&/i&Python:&/b& &a href=&/?target=http%3A///gp/product/%3Ftag%3Djob0ae-20& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python Programming: An Intro to CS (Zelle)&i class=&icon-external&&&/i&&/a& 是一本介绍Python的好书&/p&&p&&b&&i&●&/i&Python:&/b& &a href=&/?target=http%3A//python.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python.org&i class=&icon-external&&&/i&&/a&官方网站上提供了一些在线教程 &a href=&/?target=http%3A//wiki.python.org/moin/BeginnersGuide& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&tutorials&i class=&icon-external&&&/i&&/a&.&/p&&p&&b&&i&●&/i&Oz&/b&: &a href=&/?target=http%3A///gp/product/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Concepts, Techniques, and Models of Computer Programming (Van Roy & Haridi)&i class=&icon-external&&&/i&&/a& 被看做是Abelson & Sussman(经典计算机教程《&a href=&/?target=http%3A///dp/B0011AP7RY/%3Ftag%3Dvastwork-23& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&计算机程序的构造和解释&i class=&icon-external&&&/i&&/a&》的作者——译者注)的当代传承者。该书绘制了一幅关于计算机编程的宏观蓝图,它囊括了比Abelson & Sussman的经典教材更广泛的知识领域,也更加通俗易懂。此书中使用了一种编程语言,Oz, 这种语言在工业领域内几乎不被使用,其主要目的就是针对于教学&/p&&p&&br&&/p&&p&&b&备注&/b&&/p&&p&T. Capey指出,Amazon网页上那个&a href=&/?target=http%3A///gp/product//ref%3Das_li_qf_sp_asin_il_tl%3Fie%3DUTF8%26tag%3Djob0ae-20%26linkCode%3Das2%26camp%3D1789%26creative%3D9325%26creativeASIN%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Complete Problem Solver&i class=&icon-external&&&/i&&/a&页面把《21天搞定孟加拉语》以及《21天学会语法》这两本书移到了“购买此书的用户还购买过这些产品”这个区域内。我估计大部分人就是从这个区域看到这本书的。感谢Ross Cohen的帮助。&/p&
《》不过我知道大家肯定是不想看英文的了,所以我给大家找了。所有试图自学编程的人都应该发自内心的同意它的说法(除去少数过时的具体技术部分)。正文你们着什么急?随意步入一家书店,满目都是《7天搞定Ja…
&figure&&img src=&/50/v2-bc9971b82fdc36a9a1f6a8_b.jpg& data-rawwidth=&500& data-rawheight=&332& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/50/v2-bc9971b82fdc36a9a1f6a8_r.jpg&&&/figure&&p&以前公众号推荐过编程入门书籍,不过后来又有些人陆陆续续的私信和留言,让我推荐这方面的书,那么今天就重新整理一下,再推荐一波。&/p&&p&关于读书,我的建议是书不在多,而贵在于精。像编程语言语法介绍这种,一个门类的书林林总总的很多,内容也雷同,其实认真仔细研读个那么一两本比较经典的,把它彻底吃透,好过买来一堆书,每本只翻过一两页。前者能更容易让知识成体系,而后者只会让你的知识星星点点、七零八落。&/p&&p&认真读完一两本之后,在有多余的时间和精力的情况下,再去泛读下该门类其他的书籍,我觉得这样比较好。人的精力是有限的,你是不可能读完所有的书的,也完全没有必要。面对市面上浩如烟海的技术书籍,也不要觉得茫然沮丧,它们的质量参差不齐,好书,其实一两本就够了。&/p&&p&下面推荐的书,是综合自个人见解、众多网友评价和豆瓣评分整理给出来的,每个门类只有一至两本。&/p&&p&废话不多话,书单如下。&/p&&p&&br&&/p&&h2&&b&1. The C Programming Language&/b&&/h2&&p&这是 C 语言入门最最经典的一本,作者是 K&R,其中的 R (Dennis M.Ritchie)为 C 语言设计者之一。&/p&&p&如果看英文版有问题,可以看下面这本它的中文版。&/p&&img src=&/v2-522a3f2a7fb08ef9da224ade52cd28f2_b.jpg& data-caption=&& data-rawwidth=&412& data-rawheight=&576& class=&content_image& width=&412&&&p&&br&&/p&&h2&&b&2.
C Programming: A Modern Approach&/b&&/h2&&p&完全覆盖 C99,比前面 K&R 那本内容要新,作者为 K. N. King。这本也可以作为 C 语言入门。&/p&&p&当然也有中文版,自己去网上搜,我就不贴过来了。&/p&&img src=&/v2-8ce59cfedf35a72089bdc25_b.jpg& data-caption=&& data-rawwidth=&407& data-rawheight=&500& class=&content_image& width=&407&&&p&&br&&/p&&h2&&b&3. C++ Primer&/b&&/h2&&p&久负盛名的 C++ 经典教材,作者为 Stanley B. Lippman 等,所有作者皆为 C++ 权威人物。内容详尽简单,适合作为 C++ 入门书籍。&/p&&p&下面这个是中文版。&/p&&img src=&/v2-36d33bc98be02d27eb453954_b.jpg& data-caption=&& data-rawwidth=&319& data-rawheight=&400& class=&content_image& width=&319&&&p&&br&&/p&&h2&&b&4. The C++ Programming Language&/b&&/h2&&p&全书 1 千多页的大部头,比 C++ Primer 略深,有很多晦涩难懂的东西,适合有一定 C++ 基础的人去读。不过作者 Bjarne Stroustrup 作为 C++ 之父,这本书无异于 C++ 界的 「圣经」。&/p&&p&这个是英文原版。&/p&&img src=&/v2-7d260f5fa1ee6ecf9ae0a3_b.jpg& data-caption=&& data-rawwidth=&323& data-rawheight=&400& class=&content_image& width=&323&&&p&&br&&/p&&h2&&b&5. Thinking in Java&/b&&/h2&&p&Java 界的经典之作,被誉为 Java 界的 「圣经」,作者是 Bruce Eckel 。这本书适合有一定 Java 基础的人来看,作为入门不推荐。 &/p&&p&中文版如下。&/p&&img src=&/v2-07e5fafd7fa8d7d67a1575_b.jpg& data-caption=&& data-rawwidth=&303& data-rawheight=&438& class=&content_image& width=&303&&&p&&br&&/p&&h2&&b&6. Professional JavaScript for Web&/b&&/h2&&p&现在很多的编程语言排行榜上,JavaScript 都是名列第一,说明大家对它的关注度很大,非常大,用的人也很多。所以,这里就推荐一下 JavaScript 的入门书籍吧。&/p&&img src=&/v2-326b64018bafa1d5cda36b1554daa686_b.jpg& data-caption=&& data-rawwidth=&324& data-rawheight=&411& class=&content_image& width=&324&&&p&&br&&/p&&h2&&b&7.
Learn Python The Hard Way&/b&&/h2&&p&随着机器学习的流行,Python 的火热程序不亚于 JS,索性再推荐一本 Python 的。关于学习 Python 的书籍有很多,不过秉着简单纯粹的原则,这里就只推荐一本可以作为首选的入门书吧。&/p&&img src=&/v2-9bdc20e4a13961a3acac6_b.jpg& data-caption=&& data-rawwidth=&324& data-rawheight=&408& class=&content_image& width=&324&&&p&&br&&/p&&h2&&b&8.
Code:The Hidden Language of Computer Hardware and Software&/b& &/h2&&p&最后推荐一本非编程的。&/p&&p&如果你想了解计算机的工作原理,那么就看这本书,它比大学的 《计算机组成原理》和《微机原理》有趣多了,但是有趣却不失深刻。另外,看这本书不需要额外的专业背景知识,连外行都能看得懂。&/p&&p&这是这本书两个不同的中文版本,前者较新,你知道它们是同一本书就行了。&/p&&img src=&/v2-654c8e85f0d2e1a330abaeb5_b.jpg& data-caption=&& data-rawwidth=&602& data-rawheight=&453& class=&origin_image zh-lightbox-thumb& width=&602& data-original=&/v2-654c8e85f0d2e1a330abaeb5_r.jpg&&&p&&br&&/p&&p&好吧,都是老外的,而且很多都是大部头,看英文原版吧,看不懂,看中文版吧,由于是翻译的,所以不够直接。不过好在都是经典书籍,但是经典归经典,我知道很多人是会中途看不下去的,毕竟太厚,有的还太难懂。如果真的看不下去的话,我的建议是先去找一本薄的能看懂的去看,也别纠结于到底是不是经典名著,先看懂再说,有了一定的知识脉络之后,再去看这些经典书籍,就不会有那么大的障碍。&/p&&p&以后纯属个人建议,供参考。&/p&&p&&br&&/p&&p&============================================&/p&&p&最后&/p&&p&顺带宣传下自己的 Live&/p&&p&&b&只有 C 语言基础,想开始人生第一个项目的编程小白看过来:&/b&&/p&&p&&a href=&/lives/694016& class=&internal&&手把手教你: 从零开发一款游戏小项目&/a&&/p&&p&&/p&
以前公众号推荐过编程入门书籍,不过后来又有些人陆陆续续的私信和留言,让我推荐这方面的书,那么今天就重新整理一下,再推荐一波。关于读书,我的建议是书不在多,而贵在于精。像编程语言语法介绍这种,一个门类的书林林总总的很多,内容也雷同,其实认真…
&figure&&img src=&/50/v2-649f14f6a804e92d99ed68cf_b.png& data-rawwidth=&1674& data-rawheight=&814& class=&origin_image zh-lightbox-thumb& width=&1674& data-original=&/50/v2-649f14f6a804e92d99ed68cf_r.png&&&/figure&&p&【转】本文总结了Java开发者经常会犯的前十种错误列表。&/p&&p&&b&Top1. 数组转换为数组列表&/b&&/p&&p&将数组转换为数组列表,开发者经常会这样做:&/p&&blockquote&[java]&br&List&String& list = Arrays.asList(arr);&/blockquote&&p&Arrays.asList()将返回一个数组内部是私有静态类的ArrayList,这不是java.util.ArrayList类,java.util.Arrays.ArrayList类有set()、 get()、 contains()方法,但是没有任何加元素的方法,因此它的大小是固定的。可以用于方便转换list,不能添加新元素,所以选择正确的使用场景。&/p&&p&你也可以这么做来创建一个真正的数组:&/p&&blockquote&[java]&br&ArrayList&String& arrayList = new ArrayList&String&(Arrays.asList(arr));&/blockquote&&p&ArrayList的构造函数能够接受一个集合类型,这也是java.util.Arrays.ArrayList的超级类型。&/p&&p&&b&Top2. 检查一个数组包含一个值&/b&&/p&&p&开发者经常这么做:&/p&&blockquote&[java]&br&Set&String& set = new HashSet&String&(Arrays.asList(arr));&br&return set.contains(targetValue);&/blockquote&&p&代码可以工作,但是没有必要首先转换列表到Set,转换一个列表到一个Set需要额外的时间。因此你可以把它简化为:&/p&&blockquote&[java]&br&Arrays.asList(arr).contains(targetValue);&/blockquote&&p&或&/p&&blockquote&[java]&br&for(String s: arr){&br&if(s.equals(targetValue))&br&&br&}&br&&/blockquote&&p&第一个比第二个更具可读性&/p&&p&&b&Top3. 在一个循环中从一个列表里删除一个元素&/b&&/p&&p&考虑下面删除元素的代码在迭代中的结果:&/p&&blockquote&[java]&br&ArrayList&String& list = new ArrayList&String&(Arrays.asList(&a&, &b&, &c&, &d&));&br&for (int i = 0; i & list.size(); i++) {&br&list.remove(i);&br&}&br&System.out.println(list);&/blockquote&&p&输出是:&/p&&blockquote&[java]&br&[b, d]&/blockquote&&p&该方法有一个严重的问题,当一个元素被删除时,列表收缩的大小以及指针改变了。所以想要在循环内利用指针删除多个元素是无法正常进行的。&/p&&p&这种情况下使用迭代器才是正确的方法,foreach循环在Java中的工作像是一个迭代器,但实际上并不是,考虑下面的代码:&/p&&blockquote&[java]&br&ArrayList&String& list = new ArrayList&String&(Arrays.asList(&a&, &b&, &c&, &d&));&br&&br&for (String s : list) {&br&if (s.equals(&a&))&br&list.remove(s);&br&}&/blockquote&&p&它会报出ConcurrentModificationException异常。&/p&&p&相反下面这个就可以正常工作。&/p&&blockquote&[java]&br&ArrayList&String& list = new ArrayList&String&(Arrays.asList(&a&, &b&, &c&, &d&));&br&Iterator&String& iter = list.iterator();&br&while (iter.hasNext()) {&br&String s = iter.next();&br&&br&if (s.equals(&a&)) {&br&iter.remove();&br&}&br&}&/blockquote&&p&.next()必须在.remove()之前被调用。在foreach循环中,编译器将在删除元素操作之后调用.next(),这也是导致ConcurrentModificationException异常的原因,你可以点击此处查看ArrayList.iterator()的源代码。&/p&&p&&b&Top4. Hashtable vs HashMap&/b&&/p&&p&根据算法的常规,Hashtable是对数据结构的称呼。但是在Java中,数据结构的名称是HashMap。Hashtable和HashMap关键不同之一是Hashtable是同步的。&/p&&p&关于这一点可查看以下两个链接(请点击“阅读原文”查看):&/p&&p&HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap&/p&&p&Map问题Top10&/p&&p&&b&Top5. 使用集合的原始类型&/b&&/p&&p&在Java中,原始类型和无限制的通配符类型很容易被混淆。以Set为例,Set是原始类型,而Set(?)则是无限制的通配符类型。&/p&&p&考虑下面的代码,以一个原始类型List作为参数:&/p&&blockquote&[java]&br&public static void add(List list, Object o){&br&list.add(o);&br&}&br&public static void main(String[] args){&br&List&String& list = new ArrayList&String&();&br&add(list, 10);&br&String s = list.get(0);&br&}&/blockquote&&p&该代码会抛出一个异常:&/p&&blockquote&[java]&br&Exception in thread &main& java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String&br&at ...&/blockquote&&p&使用原始类型集合是危险的,因为原始类型集合跳过了泛型类型检查,也不安全。Set、Set&?&和Set&Object&之间有很大的不同。详细可查看&/p&&p&Raw type vs. Unbounded wildcard和Type Erasure。&/p&&p&&b&Top6. 访问级别&/b&&/p&&p&开发者经常对类域使用public,这很容易通过直接引用获得域值,但这是一个非常糟糕的设计。根据经验来说是给予成员的访问级别越低越好。&/p&&p&详细情况可点击查看Java中成员访问级别(请点击“阅读原文”查看):public、protected、private&/p&&p&&b&Top7.ArrayList VS LinkedList&/b&&/p&&p&如果你不知道ArrayList和LinkedList之间的区别时,你可能会经常的选用ArrayList,因为它看起来看熟悉。然而它们之间有巨大的性能不同。简单的来说,如果有大量的添加/删除操作,并且没有很多的随机存取操作时,LinkedList应该是你的首选。如果您对此不是很了解的话,点此此处查看更多关于它们性能的信息。&/p&&p&&b&Top8. Mutable VS Immutable&/b&&/p&&p&Immutable对象有很多优势,比如简单、安全等等。但它要求每一个不同的值都需要有一个不同的对象,而太多的对象可能会导致垃圾收集的高成本。所以对Mutable和Immutable的选择应该有一个平衡点。&/p&&p&一般来说,Mutable对象用于避免产生过多的中间对象,经典的例子是连接大量的字符串数。如果你使用Immutable字符串,那么会产生很多符合垃圾收集条件的对象。这对CPU是浪费时间和精力的,当其可以使用Mutable对象作为正确的解决方案。(如StringBuilder)&/p&&blockquote&[java]&br&String result=&&;&br&for(String s: arr){&br&result = result +&br&}&/blockquote&&p&这里还有一些其他Mutable对象可取的情况。例如mutable对象传递到方法中允许你在不跳过太多语法的情况下收集多个结果。另一个例子是排序和过滤,你可以构建一个带有原有集合的方法,并返回一个已排序的,不过这对大的集合来说会造成更大的浪费。&/p&&p&&b&Top9. Super和Sub构造函数&/b&&/p&&img data-rawheight=&383& src=&/50/v2-3c430bbddc220e0fe4b9_b.jpg& data-rawwidth=&387& class=&content_image& width=&387&&&p&这个编译错误是因为默认的Super构造函数是未定义的。在Java中,如果一个类没有定义一个构造函数,编译器会默认的为类插入一个无参数构造函数。如果一个构造函数是在Super类中定义的,这种情况下Super(String s),编译器不会插入默认的无参数构造函数。&/p&&p&另一方面,Sub类的构造函数,无论带不带有参数,都会调用无参数的Super构造函数。&/p&&p&编译器在Sub类中试图将Super()插入到两个构造函数中,但是Super默认的构造函数是没有定义的,编译器才会报错。如何解决这一问题?你只需在Super类中添加一个Super()构造函数,如下所示:&/p&&blockquote&[java]&br&public Super(){&br&System.out.println(&Super&);&br&}&/blockquote&&p&或移除自定义的Super构造函数,又或者在Sub函数中添加super(value)。&/p&&p&&b&Top10. &&或构造函数?&/b&&/p&&p&字符串可以通过两种方式创建:&/p&&blockquote&[java]&br&//1. use double quotes&br&String x = &abc&;&br&//2. use constructor&br&String y = new String(&abc&);&/blockquote&&p&它们之间有何不同?下面的例子可以给出答案:&/p&&blockquote&[java]&br&String a = &abcd&;&br&String b = &abcd&;&br&System.out.println(a == b); // True&br&System.out.println(a.equals(b)); // True&br&&br&String c = new String(&abcd&);&br&String d = new String(&abcd&);&br&System.out.println(c == d); // False&br&System.out.println(c.equals(d)); // True&/blockquote&&p&关于它们如何在内存中分布的更多细节可以查看《使用&&或构造函数创建Java字符串》。&/p&
【转】本文总结了Java开发者经常会犯的前十种错误列表。Top1. 数组转换为数组列表将数组转换为数组列表,开发者经常会这样做:[java] List&String& list = Arrays.asList(arr);Arrays.asList()将返回一个数组内部是私有静态类的ArrayList,这不是java.util.…
&p&作为一个像素风格的爱好者。&br&&/p&&p&分享一下自己的经验吧。&/p&&h2&&b&一、像素游戏使用的引擎&/b&&/h2&&p&&br&&/p&&p&先介绍题主感兴趣的这些作品使用的引擎吧。&/p&&img src=&/v2-d5e3fb0e14b6a66e6afd3a_b.jpg& data-caption=&& data-rawwidth=&460& data-rawheight=&215& class=&origin_image zh-lightbox-thumb& width=&460& data-original=&/v2-d5e3fb0e14b6a66e6afd3a_r.jpg&&&p&&b&StardewVally 星露谷物语 &/b&&/p&&p&由呵呵鱼发行。&/p&&p&开发者是ConcernedAPE&/p&&img src=&/v2-b2b5d01ffe61ba27ca04e5e333fe91be_b.jpg& data-caption=&& data-rawwidth=&879& data-rawheight=&192& class=&origin_image zh-lightbox-thumb& width=&879& data-original=&/v2-b2b5d01ffe61ba27ca04e5e333fe91be_r.jpg&&&p&根据开发者的答疑,游戏使用的是C# XNA。&/p&&p&&br&&/p&&p&&a href=&///?target=https%3A///r/nintendo/comments/75ag0g/im_concernedape_creator_of_stardew_valley_ask_me/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&开发者本人在Reddit上的答疑链接&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&///?target=https%3A///ConcernedApe& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ConcernedAPE的轻博客链接&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&img src=&/v2-ed7bea3c1f2ce_b.jpg& data-caption=&& data-rawwidth=&460& data-rawheight=&215& class=&origin_image zh-lightbox-thumb& width=&460& data-original=&/v2-ed7bea3c1f2ce_r.jpg&&&p&&b&Terraria&/b&也同样是使用C# XNA &/p&&p&程序是Andrew Spinks&/p&&p&可以参考GIT上泰拉瑞亚代码 &a href=&///?target=https%3A///csnxs/Terraria& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&csnxs/Terraria&i class=&icon-external&&&/i&&/a&&/p&&p&StarBound我就不多赘述了。&/p&&p&&br&&/p&&img src=&/v2-e7ef9c81c6d06f61af02_b.jpg& data-caption=&& data-rawwidth=&460& data-rawheight=&215& class=&origin_image zh-lightbox-thumb& width=&460& data-original=&/v2-e7ef9c81c6d06f61af02_r.jpg&&&p&&b&OwlBoy&/b&&/p&&p&这款游戏也是题主想要做的横版2D类型。&/p&&p&同样使用C# XNA开发&/p&&hr&&p&&b&下面介绍的这些作品都是使用GameMakerStudio开发的&/b&&/p&&p&&br&&/p&&img src=&/v2-cac7450efd770c13668b97_b.jpg& data-caption=&& data-rawwidth=&460& data-rawheight=&215& class=&origin_image zh-lightbox-thumb& width=&460& data-original=&/v2-cac7450efd770c13668b97_r.jpg&&&p&&b&HyperLightDrifter&/b&&/p&&p&使用GameMakerStudio开发&/p&&p&这款游戏在steam 以及 PlayStation上均有上架&/p&&p&&br&&/p&&p&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&开发者的tumblr链接&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&img src=&/v2-60a61d6ce4d8bb_b.jpg& data-caption=&& data-rawwidth=&460& data-rawheight=&215& class=&origin_image zh-lightbox-thumb& width=&460& data-original=&/v2-60a61d6ce4d8bb_r.jpg&&&p&&b&undertale&/b&&/p&&p&IGN满分作品 &/p&&p&作者是 Toby Fox &/p&&p&使用GameMakerStudio开发&/p&&p&个人觉得不好玩 T_T&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/v2-ce95b860d5aac55a4327a6_b.jpg& data-caption=&& data-rawwidth=&460& data-rawheight=&215& class=&origin_image zh-lightbox-thumb& width=&460& data-original=&/v2-ce95b860d5aac55a4327a6_r.jpg&&&p&&b&downwell &/b&&/p&&p&作者是 Moppin&/p&&p&使用GameMakerStudio开发&/p&&p&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&另外推荐观看《Branching Paths》这个纪录片。&/p&&p&相对于《独立游戏大电影》,《Branching Paths&b&》&/b&的知名度没有那么高,但是对于从业者来说绝对值得一看。&/p&&p&&a href=&///?target=http%3A///app/494680/Branching_Paths/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&影片链接&i class=&icon-external&&&/i&&/a&&/p&&hr&&p&NintendoSwitch以及任天堂其他主机上的一些像素游戏,我不是很清楚,现在懒得去查。&/p&&img src=&/v2-281e7fbe540fbb048a88_b.jpg& data-caption=&& data-rawwidth=&460& data-rawheight=&259& class=&origin_image zh-lightbox-thumb& width=&460& data-original=&/v2-281e7fbe540fbb048a88_r.jpg&&&p&Octopath Traveler &/p&&p&开发商SquareEnix&/p&&p&使用的是虚幻4引擎 (开发团队是过去的勇气默示录开发团队)&/p&&p&这款游戏应该会在NS上首发,体验版很惊艳。&/p&&hr&&p&下面着重介绍一下国产的像素游戏。&/p&&p&如果题主有心的话,可以直接联系上开发者。&/p&&p&&br&&/p&&img src=&/v2-e9874338fdbec411592ec_b.jpg& data-caption=&& data-rawwidth=&460& data-rawheight=&215& class=&origin_image zh-lightbox-thumb& width=&460& data-original=&/v2-e9874338fdbec411592ec_r.jpg&&&p&&b&CatchMe&/b&&/p&&p&作者是 &a class=&member_mention& href=&///people/941015febcf0bf4903d3& data-hash=&941015febcf0bf4903d3& data-hovercard=&p$b$941015febcf0bf4903d3&&@玫瑰狗&/a& &a class=&member_mention& href=&///people/3cb531f5e0a3cb28c58f1c406d5d51e0& data-hash=&3cb531f5e0a3cb28c58f1c406d5d51e0& data-hovercard=&p$b$3cb531f5e0a3cb28c58f1c406d5d51e0&&@绯色de弦月&/a& &/p&&p&使用的是UNITY引擎&/p&&p&&a href=&///?target=http%3A///app/421030/Catch_Me/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Steam链接&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/v2-4aa2b8d5393dfb48ba729c_b.jpg& data-caption=&& data-rawwidth=&520& data-rawheight=&293& class=&origin_image zh-lightbox-thumb& width=&520& data-original=&/v2-4aa2b8d5393dfb48ba729c_r.jpg&&&p&&b&元气骑士&/b&&/p&&p&作者是 凉屋游戏 &a class=&member_mention& href=&///people/2ef5021660bddecc12e9c67cc118d5b0& data-hash=&2ef5021660bddecc12e9c67cc118d5b0& data-hovercard=&p$b$2ef5021660bddecc12e9c67cc118d5b0&&@一张钞票&/a& &/p&&p&使用的是Unity引擎&/p&&p&&a href=&///?target=https%3A///app/34751& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TapTap链接&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/v2-10d066ee651b4091ecebef5ae0d7da9d_b.jpg& data-caption=&& data-rawwidth=&497& data-rawheight=&260& class=&origin_image zh-lightbox-thumb& width=&497& data-original=&/v2-10d066ee651b4091ecebef5ae0d7da9d_r.jpg&&&p&&b&锻冶屋英雄谭&/b&&/p&&p&作者是 &a class=&member_mention& href=&///people/7cca4ffcac5aecdf36633abc& data-hash=&7cca4ffcac5aecdf36633abc& data-hovercard=&p$b$7cca4ffcac5aecdf36633abc&&@拼命玩三郎&/a& &/p&&p&引擎未知(希望可以告知补充 T_T)&/p&&p&&a href=&///?target=https%3A///app/11836& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TapTap链接&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/v2-64c6cafa5_b.jpg& data-caption=&& data-rawwidth=&460& data-rawheight=&215& class=&origin_image zh-lightbox-thumb& width=&460& data-original=&/v2-64c6cafa5_r.jpg&&&p&&b&武器店物语&/b&&/p&&p&作者是 &a class=&member_mention& href=&///people/null& data-hash=&null& data-hovercard=&p$b$null&&@timchen&/a& &/p&&p&使用的是UNITY引擎&/p&&p&&a href=&///?target=http%3A///app/599460/Weapon_Shop_Fantasy/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Steam链接&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&img src=&/v2-bfc1c64ad4147c17dbcc95aad4eb85c3_b.jpg& data-caption=&& data-rawwidth=&460& data-rawheight=&215& class=&origin_image zh-lightbox-thumb& width=&460& data-original=&/v2-bfc1c64ad4147c17dbcc95aad4eb85c3_r.jpg&&&p&To The Moon &/p&&p&作者是 高瞰(加拿大华人)&/p&&p&使用的是rpgmaker&/p&&p&&a href=&///?target=https%3A///app/12547& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TapTap链接&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&当然还有很多国人开发的像素游戏,如有忽略还请见谅。&/p&&p&&br&&/p&&p&引擎介绍用了很多篇幅,主要是因为这一部分确实很重要。&/p&&p&&b&建议题主根据自己的能力选择合适的引擎。&/b&&/p&&p&个人推荐使用UNITY引擎,其次推荐GameMakerStudio。&/p&&p&我自己在用的就是UNITY引擎。&/p&&img src=&/v2-5a4beefca1eae7b99de895f_b.jpg& data-caption=&& data-rawwidth=&358& data-rawheight=&530& class=&content_image& width=&358&&&p&&br&&/p&&p&&br&&/p&&p&我在开发中的小游戏&/p&&hr&&h2&二、像素游戏开发经验&/h2&&p&&br&&/p&&p&绘图工具的话,我使用的是PhotoShop&/p&&p&其他工具的话推荐Aseprite&/p&&p&&br&&/p&&p&介绍一些PS像素资源处理的基础知识吧。&/p&&img src=&/v2-aedfa5da62af1f4a55df8b4_b.jpg& data-caption=&& data-rawwidth=&592& data-rawheight=&220& class=&origin_image zh-lightbox-thumb& width=&592& data-original=&/v2-aedfa5da62af1f4a55df8b4_r.jpg&&&img src=&/v2-7eae0a0e7b6eeaf8e89ebe6_b.jpg& data-caption=&& data-rawwidth=&422& data-rawheight=&219& class=&

我要回帖

更多关于 手机玩游戏哪款好 的文章

 

随机推荐