京东主机上看的主机,配置如图,价格如图,老司机们帮看看,日常生活办公用,偶尔玩玩星际争霸,值不值得买

帖子很冷清,卤煮很失落!求安慰
手机签到经验翻倍!快来扫一扫!
大家看看我的配置能流畅的玩网络游戏么。
315浏览 / 12回复
CPU: AMD Athlon64 X2 4600+ AM2(盒/65纳米)
主板: 华硕 M2N-X Plus&
1GB DDR2 800
160G 7200转 8M(串口/3年盒)
逸彩8500GT-GD2 CF黄金版512M F
键鼠装: 网吧专爱520X
显示器和机箱还没想好。显示器要求是19英寸、外观白色。价格在1000元以下就好。
机箱耐用就好了。
大家帮忙看看。。。。
配置没问题,值不值就要看价格了...
目前的价格是不到1700多吧。
内存还不弄2G?
暂时不需要。需要时可以换。
能不能流畅的玩主流的网络游戏?
不过显卡为什么上8500呢~
对 6楼 dengpeng819 说:=========================那什么的合适。我第一次攒机。没经验。
对 7楼 废铁。 说:=========================上3850吧
对 8楼 dengpeng819 说:=========================这位大哥。你感觉这个配置能用三年么?
3年那素不可能的 现在 即使是4850也不现实哈...发展太快了
对 9楼 废铁。 说:=========================如果你是专业的游戏玩家,这款配置还远远不能够哦。不过你如果只是偶尔玩玩游戏之类的,这配置玩玩还是没什么的,一般的6200显卡,2.4的u不是也在服役吗,甚至有的人依然用这奔三的机子。
对 楼主 废铁。 说:=========================只要不是废铁就能玩网络游戏啦~~
您需要登录后才可以回帖&&&|&&&&&
用户名/注册邮箱/注册手机号
其他第三方号登录扫一扫,上赶集群组
扫码使用“赶集群组”
交友&&寻爱&&找工作
聊天&&聚会&&不寂寞
电脑基本全新的,去年公司抽奖得。用了几个月。要回家了,家里也还有一个笔记本所以不想带回去了。昨天刚刚把保护膜撕掉,屏幕的还在。很新的,电池耐...
其他人还在看
其他人还在看
二手笔记本相关:扫一扫,上赶集群组
扫码使用“赶集群组”
交友&&寻爱&&找工作
聊天&&聚会&&不寂寞
HP,双核,内存2G,硬盘640G,键盘刚换新的,只卖当地,不包邮
┌ā;Lǒ...
其他人还在看
其他人还在看
二手笔记本电脑相关:&p&之前在Coursera上面学习了一门课,叫做《Learning
How to Learn》,收益颇丰。&/p&&p&只恨自己没能早点看到这门课,要不然当年高考就能多考几十分了……&/p&&p&想要提高自学能力,或者说提高学习的能力,首先要看一下自己在学习方面存在哪些问题,下面我列出了一些我在学习的时候会遇到的问题,我想也是大部分人会遇到的问题:&/p&&ol&&li&拖延症&/li&&li&平时不学习,考前通宵学习&/li&&li&记忆能力不太好&/li&&li&使用一些看似有效的学习方法(思维导图、标记很多高亮、一遍一遍重复的背单词)&/li&&br&&li&不知道有什么学习技巧,也没用过什么学习技巧&/li&&/ol&&p&如果你也像我一样存在上面的问题,那么或许下面的回答能够帮助到你。当然以下的内容并不能保证一定能战胜拖延症,或者一定能成为学霸,只是告诉你自己学习效果不好的时候,大概是什么原因,又大概可以用哪些方法来解决。&/p&&p&上面提到的7个问题,现在来一个一个解决:&/p&&br&&p&&b&&i&1.拖延症&/i&&/b&&/p&&p&首先了解一下拖延症的实质:&/p&&img src=&/0713afa140ede154235ab_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/0713afa140ede154235ab_r.jpg&&&p&所以啊,朋友们,拖延症犯的时候不要自责,不要怪自己。&/p&&p&要怪就怪你的大脑,是你的大脑让你难受的,所以你才没写作业,所以你才不交报告的,都怪大脑这个小婊砸。&/p&&p&但我们毕竟是有追求的人嘛,如果可以的话,我们还是想战胜拖延症,好好学习,在deadline之前好几天就完成任务。&/p&&p&那么如何解决这个问题呢?可能你看过很多关于拖延症的文章,知道各种各样的方法,但是如果你还没解决拖延症,那不妨可以看看我介绍的这种方法:&/p&&br&&p&&b&如果你拖延症犯了,不想写作业,解决拖延症的方法就是去写作业!!!&/b&&/p&&br&&p&这个方法是不是非常令人无语,非常让人想掀桌(╯‵□′)╯︵┻━┻但是我要告诉你,这个方法非常有效!!!有研究表明,当你面对一件特别不想做的事情的时候,你的大脑会产生神经上的不适,但是一旦你开始做这个不想做的事情的时候,大概十几分钟,神经的不适就会消失,会真的消失哦~&/p&&p&所以说,不想写作业,很痛苦,怎么办?去写作业!&/p&&p&不想学数学,就看见就头疼,怎么治头疼?去学数学!&/p&&p&你只要告诉自己“我知道我要做的事情很烦,但是科学家们说了,这都是大脑在欺骗我,而且只要我开始做这个事情做个十几分钟我就不痛苦了,那我就试着先做十几分钟吧”&/p&&p&写十几分钟论文 跟 写完一篇论文 比起来,是不是更容易操作呢?你只用克服了这十几分钟,接下来一切就很顺利了。&/p&&p&&b&&i&2.平时不学习,考前通宵学习&/i&&/b&&/p&&p&很多人采用这样的学习方法来应付考试,好像跟那些平时都在一直学习的人来比,也没有考低多少分,甚至比他们考的分数更高。但是如果你真的想学习一门知识,这样的学习效果真的好吗?&/p&&p&我们来看一下这个问题:花十天每天学一个小时,还是花一天每天学十个小时学习效果更好?&/p&&p&这解答这个问题之前,我们先明白两个概念:专注模式和发散模式&/p&&img src=&/c67a691c66f98bd319259_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/c67a691c66f98bd319259_r.jpg&&&img src=&/85c3b4e3cfb1a5d60d5ade_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/85c3b4e3cfb1a5d60d5ade_r.jpg&&&img src=&/3bfb311d4f64f592ecad2a_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/3bfb311d4f64f592ecad2a_r.jpg&&&img src=&/d6bfd66d313d0ed768411d_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/d6bfd66d313d0ed768411d_r.jpg&&&img src=&/b589f7b0e8baf57bb5aa_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/b589f7b0e8baf57bb5aa_r.jpg&&&img src=&/a6ed959bfa065d331ff5eccb1e928b36_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/a6ed959bfa065d331ff5eccb1e928b36_r.jpg&&&br&&p&明白这两个概念之后,这个问题的答案就很清楚了,花十天每天学一个小时的效果更好。&/p&&p&在平时的学习中,我们可能知道每天学一点确实是比考前突击要效果好,但是我们又不太清楚到底效果好在哪里。这可能是因为平常我们在学习的时候,总是认为“专注模式”才是实实在在的学习,“专注模式”花的时间越长,就学的越好,我们并没有把“发散模式”当回事。花十天时间每天学一个小时的效果之所以好过一天学十个小时,是因为在每天的一个小时的“专注模式”学习之后,我们又使用了“发散模式”来巩固知识。&/p&&p&如果把学习知识比作砌一面墙,那么“专注模式”就是造出一块一块的砖,“发散模式”就是把砖整齐垒在一起的粘合剂。&/p&&img src=&/aabf35bd38b88_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/aabf35bd38b88_r.jpg&&&br&&p&如果想提高学习能力,最好采用每天进步一点点的方式&/p&&p&&b&&i&3.记忆力不太好&/i&&/b&&/p&&p&记忆力对于学习来说非常非常非常重要。可以说大部分的考试考的就是记忆力,而掌握一门知识也可以说是把这门知识的内容记到了脑子里。记性不好对于学习来说可是硬伤。&/p&&p&但为什么有些人就能一下子记那么多东西呢?为什么有些人就能一下子理解一个概念?&/p&&p&我们先来看看知识是以什么样的形式储存在大脑里的。&/p&&p&现在让你回忆一下小学学到的“三角形”&/p&&p&你是不是一下就可以回想出,三角形有三个边,三个角,有钝角三角形,直角三角形,锐角三角形,三角形内角和180°……&/p&&p&你会发现,提到“三角形”,你可以想到关于三角形的很多相关的知识,或者说一组知识。其实知识就是以“组块”的形式存在于你的大脑中。&/p&&p&你的大脑中有各种各样的组块,有三角形知识的组块, 有四边形知识的组块,有微积分组块,有打篮球组块,有唱歌组块,甚至还有穿衣服的组块,穿鞋子的组块。&/p&&p&“组块”在学习中是一个很重要的概念,是把信息有意义的结合在一起的逻辑整体。需要特别注意的是“有意义的结合”这几个字,组块里面的信息不是杂乱无章的,而是通过某些逻辑或者其他方式联系在一起的。&/p&&p&现在我们回到刚开始的问题,为什么有些人能一下子记那么多东西呢?他们有颗更大的脑子?&/p&&p&科学家研究发现,人的大脑在短期记忆方面只能记忆四个组块的信息。&/p&&img src=&/87ff42af69d172_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/87ff42af69d172_r.jpg&&&br&&p&现在3秒钟的时间里让你记忆100个无规则的数字,是不是很难,基本上3秒钟能记忆4个数字是比较容易的,因为你的前额叶皮层有4个插槽可以记忆四个组块。&/p&&p&但是现在告诉你3秒钟的时间里让你记忆从1到100的按顺序的100个数字(1,2,3,4……100),别说这100个,再来1000000个也记得住。为什么这下你就记得多了呢?因为这100个数字是按照逻辑顺序被有意义的结合在一起的,这100个数字+依次递增的逻辑顺序
总体构成了一个组块,这个组块可以储存的信息就比之前要大很多,而且更加令人开心的是,这只是一个组块,只占据了你短期记忆的一个插槽。你还有另外三个插槽空着可以来记更多的东西。&/p&&p&所以说,要想记得多,就要把知识有意义的结合在一起,很多人说的什么记忆宫殿啊,联想记忆啊,其实就是把无关的东西按照意义结合在一起。&/p&&p&接下来我们说,为什么有些人就能一下子理解一个概念?&/p&&p&比方说有两个人同时来学习勾股定理,他们两个人都不知道勾股定理是什么,但是其中一个,学过了三角形的知识、四则运算的知识、平方的知识,另一个人却没有学过这些知识。&/p&&p&那么对于第一个人来说,三角形的知识、四则运算的知识、平方的知识已经是大脑中的组块了,所以它们占据了短期记忆的三个插槽,另外一个插槽用来记忆刚刚学到的勾股定理的一些信息,这四个插槽里面的知识进行处理就可以很快学会勾股定理了。&/p&&img src=&/6c30fef0a67ccac_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/6c30fef0a67ccac_r.jpg&&&br&&p&对于第二个人来说,即使第二个人很聪明,理解能力很强,一下子面对这么多的信息,什么是边,什么是角,三角形怎么分类,加法怎么运算,平方是什么……依然很难理解勾股定理,即使这个人聪明如爱因斯坦,但是没上学之前的小爱因斯坦也比不过已经有了知识储备的人。&/p&&p&“组块”形成之后会更加容易放到长期记忆里面,就像图中所示,三角形的知识、四则运算的知识、平方的知识是本来已经存在在大脑中的组块知识,而新习得的勾股定理知识在被理解和实践之后也被放在了长期记忆里面的恰当的位置上。&/p&&img src=&/28f4dee16eb54b629bbcc8_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/28f4dee16eb54b629bbcc8_r.jpg&&&br&&p&“组块”这个概念就告诉我们,在学习的时候,记不住不要担心,通过理解知识的内在联系,把知识有意义的结合在一起就可以记住了,理解不了也不用担心,很可能是之前的一些基础知识还没有完全搞懂,先把基础知识解决了再来解决这个。&/p&&br&&p&&b&&i&4.使用一些看似有效的学习方法(思维导图、标记很多高亮、一遍一遍重复的背单词)&/i&&/b&&/p&&p&很多人学习的时候喜欢拿着荧光笔,还是不同颜色的荧光笔,把书本画满满的,五颜六色的,但这只是让你以为自己把知识都记到脑子里了,其实根本没有嘛,回想一下上面讲到的“组块”的概念,这些知识没有被加以理解,形成不了组块,也很难被放进长期记忆里面。&/p&&p&而像是思维导图,还有反复阅读材料,这些看似有效的学习方式,也有科学家进行了实验,结果如&img src=&/84d23c76e4d597b5b6aa_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/84d23c76e4d597b5b6aa_r.jpg&&&img src=&/00eef5bbd7de626e06af44bc_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/00eef5bbd7de626e06af44bc_r.jpg&&&/p&&p&&b&&i&5.不知道有什么学习技巧,也没用过什么学习技巧&/i&&/b&&/p&&p&介绍了低效的学习方法,下面介绍一些有效的学习方法:&/p&&p&1.回顾:Jeffrey D.
Karpicke论文里面被证实的有效的方法,看完书后,把书合上,回顾一下刚才看了些什么。&/p&&p&2.小测试:和回顾的原理是一样的&/p&&p&3.过度识记:同一时间反复重复是低效的,但是如果每隔一段时间(更加科学的是按照艾宾浩斯记忆曲线重复)来重复,效果会更好,尤其是在演讲、演奏这些场合下,过度识记是非常有用的,可以帮助你使得行为自动化。比方说你在准备演讲的时候,如果只是练习了几遍,演讲的时候就可能会张口结舌,突然想不起来。但是如果一遍一遍的练习,即使熟练了还是继续练习,演讲就很难出差错,就算是演讲老手,也要练上70小时左右来准备一次普通的20分钟TED。&/p&&p&4.在常规学习地点以外的地方回顾:假如你一直在自己的书桌上学习,那么知识就会与这个学习地点联系起来,当你到一个陌生的教室考试的时候,可能就会忘记所学的知识,所以可以试试在逛街的时候回忆学习的知识。&/p&&p&5.交替学习(Interleaving):让大脑更具灵活性和创造性,当你交汇了不同的学科,你能更容易地
在不同领域的组块间创造联系。哲学家Thomas Kuhn发现,科学中大部分的范式转变,都是由年轻人或者最初学习其他学科的人所提出的,他们不那么容易陷于思维定势
被先前的专业训练阻碍思想&/p&&p&6.在前一天晚上制定计划,并且把计划写下来:在前一天晚上制定计划的话,发散模式可以帮助你在大脑中先想一下这个计划怎么完成,第二天或许就有更清晰的思路;把计划写下来是因为人的短期记忆的插槽是有限的,不要让他们在大脑中占据太多空间哦&/p&&p&7.考试的时候先看后面的大题:可以先让发散模式帮助你理一理思路&/p&&p&8.运动和睡觉:不解释!&/p&
之前在Coursera上面学习了一门课,叫做《Learning
How to Learn》,收益颇丰。只恨自己没能早点看到这门课,要不然当年高考就能多考几十分了……想要提高自学能力,或者说提高学习的能力,首先要看一下自己在学习方面存在哪些问题,下面我列出了一些我在学…
&p&在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后,内功就更主要了。一个内功低的人招式在奇妙也打不过一个内功高的人。比如,你剑法再厉害,一剑刺过来,别人一掌打断你的剑,你还怎么使剑法,你一掌打到一个武功高的人身上,那人没什么事,却把你震伤了,你还怎么打。同样两者也是相辅相成的,内功深厚之后,原来普通的一招一式威力也会倍增。&/p&&p&对于搞开发的我们其实也是一样,现在流行的框架越来越多,封装的也越来越完善,各种框架可以搞定一切,几乎不用关注底层的实现,初级程序员只要熟悉基本的使用方法,便可以快速的开发上线;但对于高级程序员来讲,内功的修炼却越发的重要,比如算法、设计模式、底层原理等,只有把这些基础熟练之后,才能在开发过程中知其然知其所以然,出现问题时能快速定位到问题的本质。&/p&&p&对于Java程序员来讲,spring全家桶几乎可以搞定一切,spring全家桶便是精妙的招式,jvm就是内功心法很重要的一块,线上出现性能问题,jvm调优更是不可回避的问题。因此JVM基础知识对于高级程序员的重要性不必言语,我司在面试高级开发的时候,jvm相关知识也必定是考核的标准之一。本篇文章会根据之前写的jvm系列文章梳理出jvm需要关注的所有考察点。&/p&&h2&jvm 总体梳理&/h2&&p&jvm体系总体分四大块:&/p&&ul&&li&类的加载机制&/li&&li&jvm内存结构&/li&&li&GC算法 垃圾回收&/li&&li&GC分析 命令调优&/li&&/ul&&p&&em&当然这些知识点在之前的文章中都有详细的介绍,这里只做主干的梳理&/em&&/p&&p&这里画了一个思维导图,将所有的知识点进行了陈列,因为图比较大可以点击右键下载了放大查看。&/p&&br&&img src=&/v2-fe745fc8eac99_b.jpg& data-rawwidth=&2899& data-rawheight=&4213& class=&origin_image zh-lightbox-thumb& width=&2899& data-original=&/v2-fe745fc8eac99_r.jpg&&&br&&h2&类的加载机制&/h2&&p&主要关注点:&/p&&ul&&li&什么是类的加载&/li&&li&类的生命周期&/li&&li&类加载器&/li&&li&双亲委派模型&/li&&/ul&&p&什么是类的加载&/p&&p&类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。&/p&&p&类的生命周期&/p&&p&类的生命周期包括这几个部分,加载、连接、初始化、使用和卸载,其中前三部是类的加载的过程,如下图;&/p&&br&&img src=&/v2-a0c3515abd75178ffc340_b.png& data-rawwidth=&694& data-rawheight=&225& class=&origin_image zh-lightbox-thumb& width=&694& data-original=&/v2-a0c3515abd75178ffc340_r.png&&&br&&ul&&li&加载,查找并加载类的二进制数据,在Java堆中也创建一个java.lang.Class类的对象&/li&&li&连接,连接又包含三块内容:验证、准备、初始化。1)验证,文件格式、元数据、字节码、符号引用验证;2)准备,为类的静态变量分配内存,并将其初始化为默认值;3)解析,把类中的符号引用转换为直接引用&/li&&li&初始化,为类的静态变量赋予正确的初始值&/li&&li&使用,new出对象程序中使用&/li&&li&卸载,执行垃圾回收&/li&&/ul&&blockquote&&p&&em&几个小问题?&/em&&br&&em&1、JVM初始化步骤 ? 2、类初始化时机 ?3、哪几种情况下,Java虚拟机将结束生命周期?&/em&&br&&em&答案参考这篇文章&a href=&/?target=http%3A///ityouknow/p/5603287.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jvm系列(一):java类的加载机制&i class=&icon-external&&&/i&&/a&&/em&&/p&&/blockquote&&p&类加载器&/p&&br&&img src=&/v2-eb56deabf9f20b82b5edc28a43feb27d_b.png& data-rawwidth=&400& data-rawheight=&399& class=&content_image& width=&400&&&br&&ul&&li&启动类加载器:Bootstrap ClassLoader,负责加载存放在JDK\jre\lib(JDK代表JDK的安装目录,下同)下,或被-Xbootclasspath参数指定的路径中的,并且能被虚拟机识别的类库&/li&&li&扩展类加载器:Extension ClassLoader,该加载器由sun.misc.Launcher$ExtClassLoader实现,它负责加载DK\jre\lib\ext目录中,或者由java.ext.dirs系统变量指定的路径中的所有类库(如javax.*开头的类),开发者可以直接使用扩展类加载器。&/li&&li&应用程序类加载器:Application ClassLoader,该类加载器由sun.misc.Launcher$AppClassLoader来实现,它负责加载用户类路径(ClassPath)所指定的类,开发者可以直接使用该类加载器&/li&&/ul&&p&类加载机制&/p&&ul&&li&全盘负责,当一个类加载器负责加载某个Class时,该Class所依赖的和引用的其他Class也将由该类加载器负责载入,除非显示使用另外一个类加载器来载入&/li&&li&父类委托,先让父类加载器试图加载该类,只有在父类加载器无法加载该类时才尝试从自己的类路径中加载该类&/li&&li&缓存机制,缓存机制将会保证所有加载过的Class都会被缓存,当程序中需要使用某个Class时,类加载器先从缓存区寻找该Class,只有缓存区不存在,系统才会读取该类对应的二进制数据,并将其转换成Class对象,存入缓存区。这就是为什么修改了Class后,必须重启JVM,程序的修改才会生效&/li&&/ul&&h2&jvm内存结构&/h2&&p&主要关注点:&/p&&ul&&li&jvm内存结构都是什么&/li&&li&对象分配规则&/li&&/ul&&p&jvm内存结构&/p&&br&&img src=&/v2-2b1b3e2df9c5e5f07224_b.png& data-rawwidth=&652& data-rawheight=&625& class=&origin_image zh-lightbox-thumb& width=&652& data-original=&/v2-2b1b3e2df9c5e5f07224_r.png&&&br&&blockquote&&p&方法区和堆是所有线程共享的内存区域;而java栈、本地方法栈和程序计数器是运行是线程私有的内存区域。&/p&&/blockquote&&ul&&li&Java堆(Heap),是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。&/li&&li&方法区(Method Area),方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。&/li&&li&程序计数器(Program Counter Register),程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。&/li&&li&JVM栈(JVM Stacks),与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。&/li&&li&本地方法栈(Native Method Stacks),本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的Native方法服务。&/li&&/ul&&p&对象分配规则&/p&&ul&&li&对象优先分配在Eden区,如果Eden区没有足够的空间时,虚拟机执行一次Minor GC。&/li&&li&大对象直接进入老年代(大对象是指需要大量连续内存空间的对象)。这样做的目的是避免在Eden区和两个Survivor区之间发生大量的内存拷贝(新生代采用复制算法收集内存)。&/li&&li&长期存活的对象进入老年代。虚拟机为每个对象定义了一个年龄计数器,如果对象经过了1次Minor GC那么对象会进入Survivor区,之后每经过一次Minor GC那么对象的年龄加1,知道达到阀值对象进入老年区。&/li&&li&动态判断对象的年龄。如果Survivor区中相同年龄的所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象可以直接进入老年代。&/li&&li&空间分配担保。每次进行Minor GC时,JVM会计算Survivor区移至老年区的对象的平均大小,如果这个值大于老年区的剩余值大小则进行一次Full GC,如果小于检查HandlePromotionFailure设置,如果true则只进行Monitor GC,如果false则进行Full GC。&/li&&/ul&&blockquote&&p&&em&如何通过参数来控制个各个内存区域&/em&&br&&em&参考此文章:&a href=&/?target=http%3A///ityouknow/p/5610232.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jvm系列(二):JVM内存结构&i class=&icon-external&&&/i&&/a&&/em&&/p&&/blockquote&&h2&GC算法 垃圾回收&/h2&&p&主要关注点:&/p&&ul&&li&对象存活判断&/li&&li&GC算法&/li&&li&垃圾回收器&/li&&/ul&&p&对象存活判断&/p&&p&判断对象是否存活一般有两种方式:&/p&&ul&&li&引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象相互循环引用的问题。&/li&&li&可达性分析(Reachability Analysis):从GC Roots开始向下搜索,搜索所走过的路径称为引用链。当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的,不可达对象。&/li&&/ul&&p&GC算法&/p&&p&GC最基础的算法有三种:标记 -清除算法、复制算法、标记-压缩算法,我们常用的垃圾回收器一般都采用分代收集算法。&/p&&ul&&li&标记 -清除算法,“标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。&/li&&li&复制算法,“复制”(Copying)的收集算法,它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。&/li&&li&标记-压缩算法,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存&/li&&li&分代收集算法,“分代收集”(Generational Collection)算法,把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法。&/li&&/ul&&p&垃圾回收器&/p&&ul&&li&Serial收集器,串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。&/li&&li&ParNew收集器,ParNew收集器其实就是Serial收集器的多线程版本。&/li&&li&Parallel收集器,Parallel Scavenge收集器类似ParNew收集器,Parallel收集器更关注系统的吞吐量。&/li&&li&Parallel Old 收集器,Parallel Old是Parallel Scavenge收集器的老年代版本,使用多线程和“标记-整理”算法&/li&&li&CMS收集器,CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。&/li&&li&G1收集器,G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征&/li&&/ul&&blockquote&&p&&em&GC算法和垃圾回收器算法图解以及更详细内容参考 &a href=&/?target=http%3A///ityouknow/p/5614961.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jvm系列(三):GC算法 垃圾收集器&i class=&icon-external&&&/i&&/a&&/em&&/p&&/blockquote&&h2&GC分析 命令调优&/h2&&p&主要关注点:&/p&&ul&&li&GC日志分析&/li&&li&调优命令&/li&&li&调优工具&/li&&/ul&&p&GC日志分析&/p&&p&摘录GC日志一部分(前段为年轻代gc回收;后段为full gc回收):&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&T10:43:18.093+: [GC [PSYoungGen: 274931K-&1K)] 371093K-&0048K), 0.0668480 secs] [Times: user=0.17 sys=0.08, real=0.07 secs]
T10:43:18.160+: [Full GC [PSYoungGen: 10738K-&0K(274944K)] [ParOldGen: 136447K-&2592K)] 147186K-&7536K) [PSPermGen: 85411K-&8K)], 0.6763541 secs] [Times: user=1.75 sys=0.02, real=0.68 secs]
&/code&&/pre&&/div&&p&通过上面日志分析得出,PSYoungGen、ParOldGen、PSPermGen属于Parallel收集器。其中PSYoungGen表示gc回收前后年轻代的内存变化;ParOldGen表示gc回收前后老年代的内存变化;PSPermGen表示gc回收前后永久区的内存变化。young gc 主要是针对年轻代进行内存回收比较频繁,耗时短;full gc 会对整个堆内存进行回城,耗时长,因此一般尽量减少full gc的次数&/p&&p&young gc 日志:&/p&&br&&img src=&/v2-ac87daaece0b_b.jpg& data-rawwidth=&783& data-rawheight=&260& class=&origin_image zh-lightbox-thumb& width=&783& data-original=&/v2-ac87daaece0b_r.jpg&&&br&&br&Full GC日志:&br&&img src=&/v2-dc9c1a8c3beb5c893889c_b.jpg& data-rawwidth=&900& data-rawheight=&296& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-dc9c1a8c3beb5c893889c_r.jpg&&&br&&p&调优命令&/p&&p&Sun JDK监控和故障处理命令有jps jstat jmap jhat jstack jinfo&/p&&ul&&li&jps,JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。&/li&&li&jstat,JVM statistics Monitoring是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。&/li&&li&jmap,JVM Memory Map命令用于生成heap dump文件&/li&&li&jhat,JVM Heap Analysis Tool命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看&/li&&li&jstack,用于生成java虚拟机当前时刻的线程快照。&/li&&li&jinfo,JVM Configuration info 这个命令作用是实时查看和调整虚拟机运行参数。&/li&&/ul&&blockquote&&p&&em&详细的命令使用参考这里&a href=&/?target=http%3A///java//jvm%25E8%25B0%%25BC%%2591%25BD%25E4%25BB%25A4%25E7%25AF%2587.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jvm系列(四):jvm调优-命令篇&i class=&icon-external&&&/i&&/a&&/em&&/p&&/blockquote&&p&调优工具&/p&&p&常用调优工具分为两类,jdk自带监控工具:jconsole和jvisualvm,第三方有:MAT(Memory Analyzer Tool)、GChisto。&/p&&ul&&li&jconsole,Java Monitoring and Management Console是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控&/li&&li&jvisualvm,jdk自带全能工具,可以分析内存快照、线程快照;监控内存变化、GC变化等。&/li&&li&MAT,Memory Analyzer Tool,一个基于Eclipse的内存分析工具,是一个快速、功能丰富的Java heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗&/li&&li&GChisto,一款专业分析gc日志的工具&/li&&/ul&&blockquote&&p&&em&工具使用参考 &a href=&/?target=http%3A///java//jvm-tool.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jvm系列(七):jvm调优-工具篇&i class=&icon-external&&&/i&&/a&&/em&&/p&&/blockquote&&br&&p&作者:纯洁的微笑&br&出处:&a href=&/?target=http%3A///java//jvm-overview.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jvm系列(八):jvm知识点总览-高级Java工程师面试必备&i class=&icon-external&&&/i&&/a&&br&版权归作者所有,转载请注明出处&/p&
在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后,内功就更主要了。一个内功低的人招式在…
&a href=&/?target=https%3A//juejin.im/entry/58dd0057fae036& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&详细解析 HTTP 与 HTTPS 的区别&i class=&icon-external&&&/i&&/a&&p&超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58ddd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端面试季 - 12家公司面试题全揭秘&i class=&icon-external&&&/i&&/a&&p&0.前言 注意:若文章中发现有图片未能正常加载,请移步其他地址查阅。 作者的简书 作者的CSDN 上一次给大家分享了一下近期的面试和面试题,发现很多小伙伴还是比较感兴趣的。 所以这次我又整理了一批面试题,来跟大家分享一下。 本文由 李鹏(MR_LP)...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58be6c261ae7& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端常见算法的 JS 实现 - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&原文链接 排序算法 1、冒泡排序 function bubbleSort(arr){ var i = j = 0; for(i=1; i&arr. i+...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b4deb0a84c6& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&正则详解及实战(JavaScript) - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&一、正则初体验 在软件开发中,不管是Java、C#、JS、OC....基本上都会接触到正则,不过大多数人都对正则并不是很了解,正常情况下都是直接从网上扒一段(我之前也一直都是这么干的,哈哈)。但...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b0fbf5ac502e006c9936bf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CSS 面试题解答 - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&问:什么是CSS reset 在不同浏览器之间,默认样式有着诸多差异和问题,而为了在不同浏览器之间具备相同的视觉效果,开发人员往往会在样式表文件中引入一段CSS代码,如&a href=&/?target=http%3A///eric/tools& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Tools&i class=&icon-external&&&/i&&/a&...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58a0bc942f301e& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端基础进阶:详细图解,彻底搞懂闭包与作用域链 - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&攻克闭包难题 初学JavaScript的时候,我在学习闭包上,走了很多弯路。而这次重新回过头来对基础知识进行梳理,要讲清楚闭包,也是一个非常大的挑战。 闭包有多重...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58ab13cc75c4cd21d72c6fc8& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&技术 | 前端面试题(二):自定义事件&i class=&icon-external&&&/i&&/a&&p&我和阿里巴巴的同事守雌将为大家带来一个系列专题:前端面试题解析,一周更新两篇,也许答案可能不是最优的,但是也可以给你提供解决问题的思路。面试题力求实战,期望对于找工作的你,温故而知新的你,能有所帮助。 关于事件,我想这也是前端面试中必问的一道题,除了...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b250ba8d6d810057ecdc3f& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&技术 | 前端面试题(三):实现 indexOf&i class=&icon-external&&&/i&&/a&&p&我和阿里巴巴的同事守雌将为大家带来一个系列专题:前端面试题解析,一周更新两篇,也许答案可能不是最优的,但是也可以给你提供解决问题的思路。面试题力求实战,期望对于找工作的你,温故而知新的你,能有所帮助。 ...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b020fdac502e006c94c2d5& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Web 前端项目的演进过程 - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&在经历了很多的 Web 项目之后, 我们在不同的项目中尝试了不同的解决方案. 在尝试的过程中, 前端的技术也在不停的进化, 影响着我们的技术选型. ...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58bad11e570ccf5& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JavaScript 数据类型检测的四种方式&i class=&icon-external&&&/i&&/a&&p&一、typeof console.log(typeof 12); // number var str = 'iceman'; console.log(typeof str); // string 使用typeof检测数据类型,首先返回的都是一个字符串,其次字符...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b4c85c2bdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一道 JS 面试题所引发的 &血案&,透过现象寻本质,再从本质看现象&i class=&icon-external&&&/i&&/a&&p&觉得本人写的不算很烂的话,可以登录关注一下我的GitHub博客,新手写东西写的不好之处,还望见谅,毕竟水平有限,写东西只为交流提高,一起学习,还望大神多加指点,指出纰漏,和提出宝贵的意见,博客会坚持写下去。 今天同学去面试,做了两道面试题,全部做错了,发过来给...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b78a4e570cc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端开发面试题总结之--HTML - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&相关知识点 web标准、 web语义化、 浏览器内核、 兼容性、 html5... 题目&答案 Doctype作用?严格模式与混杂模式如何区分?它们有何意义?(1)&!DOCTYPE&声明位于HTML文档中的第一行,处于&h...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b779c9ac502e006cfc5b86& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&3 个经常被问到的 JavaScript 面试题&i class=&icon-external&&&/i&&/a&&p&JavaScript是所有现代浏览器的官方语言。 因此,JavaScript 问题出现在各种开发人员的面试中。 本文不是讲述最新的JavaScript库,日常的开发实践或任何新的 ES6 函数。 相反,在讨论JavaScript时,经常会在面试中出现这3个问题...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b006ac87aed& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&几个让我印象深刻的面试题 (一)&i class=&icon-external&&&/i&&/a&&p&分享几个我遇到的认为不错的面试题...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b7ad418ac6& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端开发面试题总结之--CSS3 - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&相关知识点 布局、 浮动、 盒子模型、 弹性和模型、 选择器优先级、 居中定位、 兼容性、 hack写法...... 题目&答案 如何理解CSS的...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58bcdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&手机端页面自适应解决方案-rem 布局进阶版(附源码示例)&i class=&icon-external&&&/i&&/a&&p&一年前笔者写了一篇 《手机端页面自适应解决方案—rem布局》,意外受到很多朋友的关注和喜欢。但随着时间的推移,该方案已然过时,故为大家介绍一个目前我极力推荐使用的,更加完美的方案——rem布局(进阶版) ...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b6b2fb2f301e006c4a5b63& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&如何面试一名前端开发工程师? - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&从公司前端团队建立以来,一年多的时间已经过去了。这期间,招聘自然是少不了的,招进来的人有10来个,面过的人更是数不胜数,自然也从中得到一些体会,不能算是深刻地经验,只能算作一些思考吧,或许对于认同其理念的人来说,也算是一种参考了。 我现在已经很少纠结面试一个人...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b9b6b1377f5& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端开发者应知必会:浏览器是如何渲染网页的 - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&原文链接:What Every Frontend Developer Should Know About Webpage Rendering作者:Alexander Skutin译者:余博伦转载请注明出处。今天我们讨论的话题将专注于网页渲染以及它在Web开发中...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b3f0e88d6d0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&延迟加载 (Lazyload) 三种实现方式&i class=&icon-external&&&/i&&/a&&p&定义:延迟加载也称为惰性加载,即在长网页中延迟加载图像。用户滚动到它们之前,视口外的图像不会加载。这与图像预加载相反,在长网页上使用延迟加载将使网页加载更快。在某些情况下,它还可以帮助减少服务器负载。 举个例子来说明,当打开淘宝首页的时候,只有在浏览器窗口里的...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b169ce47b9& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&腾讯 2016 公司代码报告前端开发总结&i class=&icon-external&&&/i&&/a&&p&2016年腾讯公司代码报告已经正式发布,记录下开发过程中遇到的问题,以及一些使用过的东西。查看请微信扫码: 腾讯2016公司代码报告前端篇 ...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b6263dac502e006bb4d4fd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&10 道典型的 JavaScript 面试题&i class=&icon-external&&&/i&&/a&&p&在IT界中,JavaScript开发人员的需求量一直居高不下。如果你的能力能够胜任这一角色,那么你有很多机会换一家公司,并提高薪水。但在你被一家公司聘用之前,你必须展示你的技能,以通过面试环节。在本文中,我将向您展示10个 JavaScript 技能典型问题以...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58bad0643fb35b& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&谈谈对 Web 安全的理解 - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&作为一个前端 er,掌握必要的网络安全知识是必要,下面我整理了几种常见的网络攻击方式及防御技巧,本文内容来自网络,仅供参考。 CSRF 攻击 CSRF(Cross-site request forgery), 中文名称:跨站请求伪造,也被称为:one clic...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58ba33a25431& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端开发面试题总结之--JAVASCRIPT(一) - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&相关知识点 数据类型、运算、对象、function、继承、闭包、作用域、原型链、事件、RegExp、JSON、Ajax、DOM、BOM、内存泄漏、跨域、异步加载、模板引擎、前端MVC、前端MVVM、路由、模块化、Http、Canvas、...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58ba33a4ac502e006c0e253b& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端开发面试题总结之--JAVASCRIPT(二) - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&相关知识点 数据类型、运算、对象、function、继承、闭包、作用域、原型链、事件、RegExp、JSON、Ajax、DOM、BOM、内存泄漏、跨域、异步加载、模板引擎、前端MVC、前端MVVM、路由、模块化、Http、Canvas、jQuery、ECMAS...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58ba33a2ac502e006c0e2532& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端开发面试题总结之--JAVASCRIPT(三) - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&相关知识点 数据类型、运算、对象、function、继承、闭包、作用域、原型链、事件、RegExp、JSON、Ajax、DOM、BOM、内存泄漏、跨域、异步加载、模板引擎、前端MVC、前端MVVM、路由、模块化、Http、Canvas、jQuery、ECMAS...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58bdcf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&最近遇到的前端面试题 ( 更新版)&i class=&icon-external&&&/i&&/a&&p&个人博客已上线,欢迎前去访问评论!无媛无故 - wangchloe的个人博客 以下内容非本人原创,是整理后觉得更容易理解的版本,欢迎补充。 ...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58fdb0ddda2f60005dcb4bc1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这道题--致敬各位10年阿里的前端开发 - 掘金&i class=&icon-external&&&/i&&/a&&p&很巧合,我在认识了两位同是10年工作经验的阿里前端开发小伙伴,不但要向前辈学习,我有时候还会选择另一种方法逗逗他们,拿了网上一道经典面试题,可能我连去阿里面试的机会都没有,但是我感受到了一次面试10年阿里的前端开发,让我感觉一个字,比吃老坛酸菜还爽!虽然有答对...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58fcfe& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&我认真起来连面试官都怕(块级作用域,事件代理) - 掘金&i class=&icon-external&&&/i&&/a&&p&作者 混元霹雳手-Ziksang 如果你学完这篇文章之后,你回答完面试官之后,拿一张图告诉面试官 在于前端面试,你给面试官讲一些官方名词,我知道react,vue,angular等等,一系列牛B的框架,对于面试来说并没有卵用,听多了!!有些有是报着真诚的找...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58f558efac502e006c3e5c97& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&破解前端面试(80% 应聘者不及格系列):从 DOM 说起&i class=&icon-external&&&/i&&/a&&p&共 7384 字,读完需 10 分钟。本文为《破解前端面试(80% 应聘者不及格系列)》文章的第二篇,包含 DOM、Event、浏览器端优化、数据结构和算法功底的考察。可能有同学会问 DOM 有什么好聊的,不就是节点的各种操作么?DOM 是网页构建的基石,熟练...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58db95eaac502ee& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端程序员经常忽视的一个 JavaScript 面试题&i class=&icon-external&&&/i&&/a&&p&题目 function Foo() { getName = function () { alert (1); }; } Foo.getName = function () { alert (2);}; Foo.prot...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58d758d21bb1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&怎样准备一场面试:候选人篇 - 掘金&i class=&icon-external&&&/i&&/a&&p&本文不是面经,只是通过一些细节增加面试的成功率,帮助候选人找到合适的团队和公司。面霸跳过此文 首先端正态度,认真对待每一次面试,不要浪费你和别人的时间; 其次,不要觉得低人一等,面试是双向选择的,自信很重要。 仔细阅读JD JD=job descript...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58cdf7c3b591& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&无他,唯手熟尔-前端实习面试题篇 - 掘金&i class=&icon-external&&&/i&&/a&&p&以下基本是我在面试中遇到的所有问题,给大家做一个参考。除2月13和14日为现场面试以外,其余均为电话面试。我的本意不是让大家背答案,所以没有把面试公司的名字写出来,只是想给不知道如何准备面试的同学一些启发。我面的几家大厂基本不会问框架的,但是很多公司的预期比较...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58cf180b0ce7c& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&80% 应聘者都不及格的 JS 面试题&i class=&icon-external&&&/i&&/a&&p&共 5024 字,读完需 6 分钟,速读需 2 分钟,本文首发于知乎专栏前端周刊。写在前面,笔者在做面试官这 2 年多的时间内,面试了数百个前端工程师,惊讶的发现,超过 80% 的候选人对下面这道题的回答情况连及格都达不到。这究竟是怎样神奇的一道面试题?他考察...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58c51b5c44d6& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这里有超过20家的前端面试题,你确定不点进来看看? - 掘金&i class=&icon-external&&&/i&&/a&&p&## 0.备注 若文章中部分内容无法显示,请移步李鹏的其他博客。 简书 CSDN ## 1. 前言 这里有超过20家的前端面试题,你确定不点进来看看? 好吧,如果你看到这句话,你明显是点进来了。 那么恭喜你,接下来我就和你们分享一下,近期我收集到的各个公司...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58ba33a25431& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端开发面试题总结之--JAVASCRIPT(一) - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&相关知识点 数据类型、运算、对象、function、继承、闭包、作用域、原型链、事件、RegExp、JSON、Ajax、DOM、BOM、内存泄漏、跨域、异步加载、模板引擎、前端MVC、前端MVVM、路由、模块化、Http、Canvas、...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/57d4ef360e3dd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端面试题目(2) - 掘金&i class=&icon-external&&&/i&&/a&&p&前端面试题目(1)地址:前端面试题目(1) 博客地址:Damonare的个人博客 一些开放性题目 1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势。 2.项目介绍 3.如何看待前端开发? 4.平时是如何学习前端开发的? 5...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/589be51b2f301e0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&征服 JavaScript 面试:什么是闭包&i class=&icon-external&&&/i&&/a&&p&“征服 JavaScript 面试”是我写的一系列文章,来帮助面试者准备他们在面试 JavaScript 中、高级职位中将可能会遇到的一些问题。这些问题我自己在面试中也经常会问。 在我面试时问出的一系列问题里,闭包通常是我问的第一个或最后一个问题。坦白地说,...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/f301e& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&谈谈面试与面试题 - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&起因,某日电话面试之后满心郁闷的我发了两条微博: 面试的时候问个css的position属性能刷掉一半的人这是啥情况…… 其实这问题我本来打算的是可以顺着一路扯到normal flow、containing block、bfc、margin ...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58a30fe8b123db16a3eaa5ec& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&技术 | 前端面试题(一):递归解析&i class=&icon-external&&&/i&&/a&&p&我和阿里巴巴的同事守雌将为大家带来一个系列专题:前端面试题解析,一周更新两篇,也许答案可能不是最优的,但是也可以给你提供解决问题的思路。面试题力求实战,期望对于找工作的你,温故而知新的你,能有所帮助。 递归基本上是一个必考的算法题,它是实现程序计算过...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58a65a9f61ff4b78fca1ff27& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&面试开发常用的 JavaScript 知识点总结&i class=&icon-external&&&/i&&/a&&p&No1.语法和类型 1. 声明定义 ...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58a86ccd3984& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JavaScript 面试中常见算法问题详解 - 某熊的全栈之路 - 知乎专栏&i class=&icon-external&&&/i&&/a&&p&JavaScript 面试中常见算法问题详解 翻译自 Interview Algorithm Questions in Javascript() {...} 从属于笔者的 Web 前端入门与工程实践。下文提到的很多问题从算法角度并不一定要...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58aaaf03ac502e& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端面试经典问题:CSS 中居中的几种方式&i class=&icon-external&&&/i&&/a&&p&作为面试常客,学会这些,面试多点把握,同学间逼格升高周五,老大说他面试了一个问题,是css居中的问题,然后我们在这边就讨论了一番,周末嗨玩,尾巴上想起这件事,特来总结,希望能帮助到求职和学习的朋友!参考了这篇文章,快速传送门内容都是我手敲实践过的可靠! ...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58ab13cc75c4cd21d72c6fc8& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&技术 | 前端面试题(二):自定义事件&i class=&icon-external&&&/i&&/a&&p&我和阿里巴巴的同事守雌将为大家带来一个系列专题:前端面试题解析,一周更新两篇,也许答案可能不是最优的,但是也可以给你提供解决问题的思路。面试题力求实战,期望对于找工作的你,温故而知新的你,能有所帮助。 关于事件,我想这也是前端面试中必问的一道题,除了...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58abdf05da2f607e924eb9d1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端面试常见问题按知识点分类整理 - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&前端面试常考问题分类整理汇总 目录 ...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b6263dac502e006bb4d4fd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&10 道典型的 JavaScript 面试题&i class=&icon-external&&&/i&&/a&&p&在IT界中,JavaScript开发人员的需求量一直居高不下。如果你的能力能够胜任这一角色,那么你有很多机会换一家公司,并提高薪水。但在你被一家公司聘用之前,你必须展示你的技能,以通过面试环节。在本文中,我将向您展示10个 JavaScript 技能典型问题以...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58bdcf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&最近遇到的前端面试题 ( 更新版)&i class=&icon-external&&&/i&&/a&&p&个人博客已上线,欢迎前去访问评论!无媛无故 - wangchloe的个人博客 以下内容非本人原创,是整理后觉得更容易理解的版本,欢迎补充。 ...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b401d28d6d0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&献给前端求职路上的你们(上) - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&在放大镜中寻找你 前言 我是一名前端开发,从2016年6月毕业到如今步入工作,期间也面试了一些公司,参考过一些面试文档,学习了一些面试宝典,掌握了一些面...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58b541fb0d6fc3& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&献给前端求职路上的你们(下) - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&转载自:&a href=&/?target=http%3A///p/87fa2c21039a& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&该文章被锁定 - 简书&i class=&icon-external&&&/i&&/a& 注明:上一篇献给前端求职路上的你们(上),主要侧重说的是前端面试中的html和css这两块常见问题,这是基础,其实在真正面试中,面试官往往采用的是由难到易的套...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/cb7e8& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【前端面试 -- 四月二十家前端面试题分享】1-5 套个人解题答案&i class=&icon-external&&&/i&&/a&&p&前端面试题 前端面试--四月二十家前端面试题分享 个人解题答案,错误肯定不少,求review。 第一套: 题目1:CSS实现垂直水平...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58f44abee4c2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&关于js、jq零碎知识点 - 掘金&i class=&icon-external&&&/i&&/a&&p&写在前面: 本文都是我目前学到的一些比较零碎的知识点,也是相对偏一点的知识,这是第二篇。前后可能没有太大的相关性,需要的朋友可以过来参考下,喜欢的可以点个赞,希望对大家有所帮助。本文的受众是刚学前端,大手子可以跳过。 1.页面加载完成之后,才开始执行函数。 $...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58f1fa6a44dd22& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&破解前端面试(80% 应聘者不及格系列):从闭包说起&i class=&icon-external&&&/i&&/a&&p&修订说明:发布《80% 应聘者都不及格的 JS 面试题》之后,全网阅读量超过 6W,在知乎、掘金、cnodejs 都引发了很多讨论,还被多个前端微信公号和技术媒体转载。酝酿许久之后,笔者准备接下来撰写前端面试题系列文章,内容涵盖 DOM、HTTP、浏览器、框架...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58f558efac502e006c3e5c97& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&破解前端面试(80% 应聘者不及格系列):从 DOM 说起&i class=&icon-external&&&/i&&/a&&p&共 7384 字,读完需 10 分钟。本文为《破解前端面试(80% 应聘者不及格系列)》文章的第二篇,包含 DOM、Event、浏览器端优化、数据结构和算法功底的考察。可能有同学会问 DOM 有什么好聊的,不就是节点的各种操作么?DOM 是网页构建的基石,熟练...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58eca2dfa22b9dc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端面试--四月二十家前端面试题分享 - 掘金&i class=&icon-external&&&/i&&/a&&p&0.前言 免责声明 若文章中内容存在无法加载的情况,请移步作者其他博客。 简书 CSDN 关于本文中出现的面试题,请勿询问具体公司。 之所以分享出来,只是作为热爱前端的小伙伴们分享讨论的一个话题。 请勿将本文用于不正当用途。 请不要吐槽我为什么不给你...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58c4fe97dda0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2017年年初前端面试总结 - 掘金&i class=&icon-external&&&/i&&/a&&p&##0.备注 若文章中部分内容图片无法加载,请移步作者的其他博客。 简书 CSDN ##1.前言 近期很多小伙伴们都已经开始新一轮的跳槽,而跳槽的计划往往又因为面试的失利而被迫中止。 正好作者身边最近就有很多小伙伴在尝试跳槽。 那么今天咱们就来分享一下,...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58d54d0da22b9d& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【面试题】创建长度为 100 的数组&i class=&icon-external&&&/i&&/a&&p&不用循环创建一个长度为100的数组,并且每个元素的值等于它的下标 先来说一下最直接的解法… var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58df47dab123dbea& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端框架的选择 - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&前端发展日新月异,每年成百数千框架诞生,当我们需要选择一种来学习时,应该如何挑选? 我认为应该从两方面来看:框架优劣的重要性自不必说,影响性能和开发体验,但另一方面适合自己的需求也很重要,尺有所短寸有所长,在不同情况下的优劣可能...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58d101b5ac502e0058ac2ebd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&谈谈前端人员在项目中的正确沟通方式 - 掘金&i class=&icon-external&&&/i&&/a&&p&作为一个有点想法的web前端从业人员,是从业人员,在项目中难免会跟不同的角色打交道。有让自己舒服的,也有让自己难受的;有让别人舒服的,当然,也有让别人难受的。我们当然希望最好的结果是大家都很舒舒服服地把事情做完做好。这便就是本文要探讨的地方。 项目中的角...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58d758d21bb1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&怎样准备一场面试:候选人篇 - 掘金&i class=&icon-external&&&/i&&/a&&p&本文不是面经,只是通过一些细节增加面试的成功率,帮助候选人找到合适的团队和公司。面霸跳过此文 首先端正态度,认真对待每一次面试,不要浪费你和别人的时间; 其次,不要觉得低人一等,面试是双向选择的,自信很重要。 仔细阅读JD JD=job descript...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58c7dc5b0f4ff& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端面试小记 - 掘金&i class=&icon-external&&&/i&&/a&&p&太久没有面试过了,第一次难免有点紧张,今天遇到的面试问题,大多数都遇到过,却因为没有充分准备,而没有答好,以后一定好好准备才行。 下面记录一下今天的面试问题,加深印象: 介绍一下JS的数据类型? 简单类型:String、Number、Boolean、Nul...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58bdcf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&最近遇到的前端面试题 ( 更新版)&i class=&icon-external&&&/i&&/a&&p&个人博客已上线,欢迎前去访问评论!无媛无故 - wangchloe的个人博客 以下内容非本人原创,是整理后觉得更容易理解的版本,欢迎补充。 ...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/587dab348d6da0a& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1月前端面试记 - 掘金&i class=&icon-external&&&/i&&/a&&p&背景 我于16.12.18辞职,之前有过一年左右的前端工作经验。从12月26号开始到1月9号先后面试了微信,百度,阿里巴巴uc,唯品会以及深圳腾讯等几家公司,特此总结与各位共勉。 微信 由于我已经毕业工作过,所以去微信面试是走的社招。微信社招极其严格,共八轮面...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58cdf7c3b591& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&无他,唯手熟尔-前端实习面试题篇 - 掘金&i class=&icon-external&&&/i&&/a&&p&以下基本是我在面试中遇到的所有问题,给大家做一个参考。除2月13和14日为现场面试以外,其余均为电话面试。我的本意不是让大家背答案,所以没有把面试公司的名字写出来,只是想给不知道如何准备面试的同学一些启发。我面的几家大厂基本不会问框架的,但是很多公司的预期比较...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58ba33a25431& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端开发面试题总结之--JAVASCRIPT(一) - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&相关知识点 数据类型、运算、对象、function、继承、闭包、作用域、原型链、事件、RegExp、JSON、Ajax、DOM、BOM、内存泄漏、跨域、异步加载、模板引擎、前端MVC、前端MVVM、路由、模块化、Http、Canvas、...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58c51b5c44d6& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这里有超过20家的前端面试题,你确定不点进来看看? - 掘金&i class=&icon-external&&&/i&&/a&&p&## 0.备注 若文章中部分内容无法显示,请移步李鹏的其他博客。 简书 CSDN ## 1. 前言 这里有超过20家的前端面试题,你确定不点进来看看? 好吧,如果你看到这句话,你明显是点进来了。 那么恭喜你,接下来我就和你们分享一下,近期我收集到的各个公司...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58db95eaac502ee& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端程序员经常忽视的一个 JavaScript 面试题&i class=&icon-external&&&/i&&/a&&p&题目 function Foo() { getName = function () { alert (1); }; } Foo.getName = function () { alert (2);}; Foo.prot...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58ceb006c97ab24& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&二叉查找树实现原理分析 - 后端 - 掘金&i class=&icon-external&&&/i&&/a&&p&二叉查找树是一种能将链表插入的灵活性和有序数组查找的高效性结合起来的一种重要的数据结构,它是我们后面学习红黑树和 AVL 树的基础,本文我们就先来看一下二叉查找树的实现原理。...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58ce589b6f88& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&面试时问到进程间通信, 你该如何回答?&i class=&icon-external&&&/i&&/a&&p&*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 前言: 进程...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/entry/58cdffcb5c497d& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端面试指南 - 前端 - 掘金&i class=&icon-external&&&/i&&/a&&p&最近莉莉在做简历筛选,每天看上百份简历,但是筛出来觉得合适的寥寥无几,约来面试又发现大部分也不太合适。于是莉莉就问我,怎么才能找到靠谱的面试者? 我想了几天,决定把我的面试方法写一份文档,让她发给候选人,如果候选人觉得能够通过面试,我们再约线下见面。 莉莉问我...&/p&&br&&br&&a href=&/?target=https%3A//juejin.im/post/58ca051f61ff4b& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&面试遇到了算法题?看这篇就够啦。 - 掘金&i class=&icon-external&&&/i&&/a&&p&原文地址:&a href=&/?target=http%3A///kdn251/interviews& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/kdn251/inter&/span&&span class=&invisible&&views&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 译文出自:掘金翻译计划 译者:王下邀月熊 校对者:PhxNirvana、根号三 这个 链接 用来查看本翻译与英文版是否有差别(如果你没有看到 README.md 发生变化,那就意味着这份翻译文...&/p&
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP…
这几天比较忙。加个插曲。&br&
前两天面试了一个四年工作经验的Java工程师,挺失望的。工作换了四五家,大多浅尝则止,基础太差了。面试别人,一般基于其项目经历和简历的技能栈交流。没想到,这次交流成了授课了。“大处着眼,小处落手”,一个技术人员既要具备技术视野,也要理解技术细节。&br&&br&比较有感触的有下面几个问题。首先,我问了一个很多人平时意识不到的问题:一个.java文本文件,是如何运行起来的?本来是想检查下对Jave程序语言的运行机制的理解。如果回答可以就可以切入到虚拟机和java程序性能调优。没想到大失所望,该同学对此几乎没有概念。接下来,我问,HashMap的内部实现,不清楚,key是否可以是null,不知道。让其写一个简单的栈Stack类,实现基本的存取功能,我把结构都写了,让他下笔,写不出来。本来是考察对基本数据结构的理解,可能的话切入内存泄露。&br&&br&
到此,我已经基本确认该同学之前基本不写代码了。但他应聘的是中高级工程师,本着负责的态度。该问的还得继续。看项目经历吧,有个做OA系统的经验,熟悉Jbpm,看简历写着熟悉设计模式。好吧,我问:如果让你设计一个简单的流程引擎,你怎么设计,大概会用到什么设计模式。我想着,怎么着,你也应该知道责任链模式和观察者模式吧,退一步讲,一个好的系统,工厂模式、建造者模式不可能没有。对方一脸懵逼,说,没去了解过。说实在的,当时真的是有点不耐烦了。&br&&br&看到简历有mybatis技能,问动态sql拼装有哪些常用标签,回答差强人意。问得深一点:平时使用mybatis基本都是使用接口声明,然后注入直接调用接口方法,即可完成数据库操作。有没有疑惑过,为什么没看到实现该接口的类,就可以调用方法。要知道接口是不能实例化的。本意是考察对代理类生成(代理模式)的理解,不出所料,完全没有概念。随后简单问了下数据库,居然不知道索引是一棵树,,,&br&&br&随后草草收场。&br&&br&简单描述本次面试经历,我是觉得该面试者是一个典型。“大处着眼”,他不知道技术和框架出现的背景是什么,技术视野窄,不知道用什么技术解决实际问题,也没有关心前沿技术(分布式、服务化、大数据);“小处着手”,他没有探究内部原理的好奇心和意识,小一点说连“点进去JDK类的实现方法”的欲望都没有。&br&&br&我不知道这样技术深度和广度都没有的水平,怎么能实现他所说的“三年成为一个优秀的架构师”的愿望。&br&&br&感慨万千啊。&br&&br&###&br&多线程和虚拟机。实际工作中,大部分程序员可能几乎不用,但这两项技能是你面试所谓高级工程师的敲门砖,也是你在机会到来的时候能否顶上去的弹药库。很多人,把这两部看的太高深,望而却步,我觉得一个重要原因就是大部分博客和书籍写的太差,只讲结果不谈背景。比如,讲到虚拟机,上来就以hotspot为例,内存模型,各种分区、回收算法;讲到多线程,上来就各种synchronized关键字、各种锁、线程池怎么用。新手看到就蒙了。要知道,一切技术的出现都是有背景的。所有技术的出现都是基于计算机原理和体系结构的。为了解决特定问题,人们基于计算机理解的语言才创造了各种解决问题的方法,也就是说这些解决方案不过是践行某种思想的一种体现罢了。&br&&br&
先说虚拟机,我们都知道Java程序运行在虚拟机上,虚拟机又和操作系统打交道,最终通过二进制指令操纵电子电路运行。完成数据的读取,存储,运算和输出。&br&
虚拟机在加载.class文件的时候,会在内存开辟一块区域“方法区”,专门用来存储类的基本信息,同时在“堆”区为这些类生成一个Class对象,作为类的“镜像”或“模具”,为反射提供基础。程序运行过程中,对象不断的生成和死亡,有的朝生暮死(大多数对象都这样,最常见的是方法内部生成的临时对象),有的壮年而亡,有的长命百岁,有的长生不死除非世界毁灭(虚拟机关闭,典型的如servlet)。对象生要吃喝,死了得埋,所以虚拟机就不停的申请内存、回收内存。对象的生成方法很多,new、反射等,对象回收的方法也有很多,这就是GC,标记-清除、复制、标记-整理等等。&br&&br&垃圾回收,顾名思义,得确定垃圾是什么、在那里、如何回收。对象的生命周期不同,回收的方法不一样。假如让你设计垃圾回收,你该怎么做?大多数人都会想到,后台启动一个线程,隔一段时间(或达到某种状态,去堆用掉了80%),扫描垃圾对象,然后清除,然后继续执行原来的程序(串行收集器)。恭喜你,你也可以设计虚拟机了。但不幸的是,情况往往比你想象的复杂。效率、安全性、对原程序的影响,都是你要考虑的。人们最先发现,对象生命周期不同,用同一种GC方法,实在是效率差,怎么办?就如hotspot的方案,堆区根据对象生命周期不同,分成了Eden、Survivor0、Survivor1和Old区。每个区采用了不同的清理算法。多核的出现,自然人们会想到并行收集器,即多个回收线程一起跑;为了将对原程序影响降到最低(STW),又出现了并发收集器。这些,本质上,就是抽象分层思想的体现。类似于,重构代码中的,抽离属性和抽离方法。这种思想,我认为是计算机最重要的思想。可以讲三天三夜。如分布式服务中,根据业务模型,分拆用户服务、商品服务、订单服务。&br&&br&到此为止,虚拟机优化就涉及到两大方面,各个区的大小怎么划分最优、垃圾回收算法怎么选择最优。直接点,就是JVM参数调整。但关键在于,给你一个系统(可能是一个陌生的系统,我说的陌生可能就是你开放的系统,只是每个人负责的只是一个模块,对系统整体不熟悉),你怎么样能恰当估算系统业务情况,进而有针对性的收集系统数据,根据场景,确定优化的方向点,然后找到这个点对应的虚拟机参数,调整参数,或者,优化代码。注意,一切优化必须基于业务模型。不同业务系统、甚至同一套系统不同用户基数调整的方向都不一样。平时,我遇到的情况大概分为两种,一种是堆的问题,比如代码问题导致List或map越来越大,或者是string使用不当,造成频繁old gc;某个外部组件调用,生成大量代理类无法销毁。还有一种是线程栈,线程阻塞甚至死锁的问题。多线程使用不当,比不使用还坑爹。&br&&br&多线程,任何一个程序员都知道,但实际工作中,大部分程序员每天面对的基本是业务问题的CRUD和Bug定位,貌似没有直接接触多线程的机会。&br&&br&大家知道程序运行的时候,最关键的是内存和cpu,而cpu运算的时候,是要从内存取值,当然很多时候是从缓存取值的,然后放入寄存器,参与运算,得到结果,先放入寄存器,然后放入内存。程序执行的指令也放在寄存器,它记录了当前程序执行的地址。用一句话概括:程序=数据结构+算法。CPU运算需要知道,我要执行什么程序、我的程序数据怎么获取。&br&&br&大家应该看出问题来了吧?首先,线程执行是语言指令寄存器的,也就是当你切换线程的时候,得从虚拟机的程序计数器(PC)把该线程的执行指令放到指令寄存器,当然线程涉及的其他资源也要切换,比如IO设备。这些都是需要耗费资源的,这就是所谓的线程上下文切换。大学时候,记得很清楚的一句话:线程是CPU执行的最小单位。当时没怎么理解,后来想CPU执行程序,总得知道执行什么吧,那得准备指令寄存器的值,原材料得有吧,就可能涉及文件系统、网络资源吧,运算结果得输出到内存、文件或者网络吧。这些都是资源啊。所以,线程创建是一笔很大的开销。当然,如果你就一个线程,那就无所谓了,反正资源都是我的,想怎么用就怎么用。所以,很多时候,单线程比多线程快。&br&&br&很多面试宝典,有这么一道题:Java线程的start和run方法有什么区别?通过我上面关于线程执行的分析,应该一目了然。我用一个做饭的例子说明,start需要你买菜、准备锅碗瓢盆油盐酱醋、洗菜切肉,而run则是往锅里放油放菜炒。大家可以看到,Thread源码的start0是个native方法,也就是资源准备是虚拟机帮你做了。你不用管我菜是怎么买的、价钱多少。当然了,如果菜市场很远,一直没买到,或者排队很长,甚至被别人插队,那你这顿饭就一直做不上。这就是所谓的线程阻塞了。如果两个厨师都在做饭,一个拿着酱油想要醋,一个拿着醋想要酱油,互不相让,就出现所谓的死锁。不好意思,扯远了。关于start和run,如果把方法名改为:applyResourceAndPerformAction和doConcreteActions,是不是很容易理解?很多人面试的时候,背一下宝典,原理根本不清楚。你能指望他处理复杂问题?线程必须的资源虚拟机帮你做了,你需要的就是告诉线程你具体做什么,所以实现线程的几种方式就有了,1、继承Thread目的重写run方法;2、实现Runnable接口,实现run方法;3实现Callable接口,回调获取线程结果。1使用了继承,2和3使用了组合,内部持有了你所实现的类,更加灵活。你看,多用组合少用继承的原则就这么体现了。&br&&br&第二点,上面说到了,一个数值,进入CPU运算,经过了内存、多级缓存、寄存器,也就是说,当多线程运算同一个值的时候,是需要把值从主内存拿到该线程工作内存(寄存器)中的,当一个线程计算完毕(CPU首先把运算结果放到寄存器),还没刷新到主内存的时候,另一个线程从主内存取到的是旧值。JVM运行的每个线程都有自己的线程栈,不同线程运行的时候,都要复制主内存的一份副本到工作内存。怎么保证每个线程拿到的数据是最新的,这就是同步机制。volatile和synchronized,就是为了解决这个问题的。&br&&br&首先,谁都能想到的最直接的办法就是:共享变量同一时刻只允许有一个线程操作。这样就保证了所有线程要么拿不到值,要么拿到的值是“纯粹”的。于是有了synchronized,用来告诉虚拟机:这个地方是圣地,不允许多个人同时涉足。这里有一把锁,必须拿到锁才能进入,其他人要想进来必须等待。Java中的锁,可以是this对象、方法、类,也可以是声明的某个变量。锁的范围,可以是小块代码段,可以是整个方法区,甚至是所有方法。一定要注意锁和锁的范围,这是两个维度的事情。虚拟机会在锁对象和线程之间建立联系,其他线程跑到锁对象的时候,会看到:哦,其他哥们已经来了,我先等着吧。特别注意,不要以为对象和类的定义一样,不过是属性和方法的集合,类和对象是两回事。类似模具和产品的关系。虚拟机生成一个对象,这个对象有很多额外信息,起码有对象内存地址你是知道的吧?所以,要标识这个对象当前被哪个线程占有,是一件很容易的事情。感兴趣的同学,可以去看看对象在内存中的布局。&br&&br&我们很快发现,上面的方法有点粗暴,也不够灵活。很多时候,我们不关心共享值在被谁操作,我只关当前这个值“到底”是什么。所以,就有了volatile,大部分博客提到volatile,就一句话:保证可见性,不保证原子性。这什么鬼?实际上,如果一个共享变量声明为volatile,等于告诉虚拟机控制的所有线程:这个变量有点帅,要请他出山必须亲自去他老家——主内存去请,回来的时候也要尽快送回老家。所以,CPU计算的时候要从主内存取值,计算完毕,直接就写入主内存,不会写到高速缓存了。这就是所谓的“可见性”,也就是当前这个值是什么,你是完全知道的。至于不保证原子性,就很明显了,这个值谁都可以取来运算,从计算机角度来讲,跟普通变量的区别就在于:效率差了。因为写入和读取高速缓存,效率远远高于内存。一路题外话,不要以为数据库插入数据就直接到磁盘了,其实写入的也是缓存,由后台线程刷到磁盘的。这样既可以起到缓冲的作用,又可以提高效率。不然你以为怎么能那么快。其实,从底层到高层,从硬件到软件,很多原理都是相通的。&br&&br&———————————— &br&感谢朋友们的认可和指正。本文是有感而发,因为看过了太多坑人的博客和书籍,感慨自己走过的弯路,不希望其他初学者被网上互相抄袭的博客和东拼西凑的书籍浪费时间,想以一个相对宏观的视野来描述一个概念,力求通俗易懂,所以没有深入太多细节,简化了很多模型,给部分朋友造成了疑惑,说声抱歉。也没有配图,都是抽时间手机码字,打个分割线都费劲,图呢,其实网上都有。
&br&&br&记得我在另外一篇答案中提到,计算机程序(不仅仅各种语言的代码,一切能向计算机发出指令的序列都是程序,当然包括Java虚拟机)的努力方向:最大化利用计算机资源。多线程就是如此,一个CPU密集型的任务在跑,你让IO干等着,这不是浪费吗?所以,这时候你启动一个IO密集型的任务,资源利用率就提升了。当然,这是一种简化模型,实际上一个人任务的不同阶段,需要的计算机资源是不同的,如果你能合理安排多个任务的执行逻辑,资源利用率就会很大提升。&br&&br&我们学习程序语言,一定不要被束缚到语言细节和规范上去,而要从计算机逻辑执行层面思考问题。因为细节和规范都是人为设定的,是大牛抽象计算机逻辑后的加工品,你囿于此,其实是在理解别人的思想,而不是理解计算机。我们常说的高层依赖于抽象而不依赖于底层,是一样的意思。说了这么多,想表达的就是,对技术问题,要有思考的深度,要寻根溯源,要高屋建瓴。
&br&&br&回到多线程。上面提到synchronized,必须多说几句,这对理解锁的本质至关重要。多线程和锁,首先请大家记住一个场景:多人上厕所。&br&&br&多线程和锁,一个是线程,一个是对象。一个在私有的线程栈中,一个在共享的堆中。如何标识某个线程持有某个锁对象?如何如何标志某个对象被某个线程锁定?很显然,线程栈中开启一片区域“栈帧”存储对象锁记录,堆中对象有对象头(对象头主要保存了对象的类元数据,以及对象的运行时状态,其中就包括了锁线程和GC分代等信息。)可以标识被哪个线程锁定。实际上,虚拟机就是利用对象头和monitor(后面讲)来实现锁的。&br&&br&回到多人上厕所,人比做线程,厕所比做共享对象,锁比做对象头,monitor比做钥匙。&br&&br& synchronized锁的是一个对象,或者是类的某个实例,或者是类本身(即常量池的Class)。
synchronized内部原理是通过对象内部的一个叫做监视器(monitor)来实现的。本质又是依赖于底层的操作系统的Mutex Lock来实现的。而操作系统实现线程之间的切换需要从用户态转换到核心态,这个成本非常高,这就是为什么synchronized效率低的原因。比如Hashtable(再次吐槽小写t,浑身难受)和用Collections.synchronizedMap装饰的HashMap,内部}

我要回帖

更多关于 京东云主机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信