这是我做的网页设计项目经验,我这个项目是按着 I . E 浏览器来做的,我的网页里是插有视频的

君,已阅读到文档的结尾了呢~~
广告剩余8秒
文档加载中
网页设计-课程设计完整版设计,网页,课程,网站设计,毕业设计,完整版,课程设计,网页设计
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
网页设计-课程设计完整版
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口&p&作者: &a href=&///?target=http%3A///u/ifantastic/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&iFantasticMe&i class=&icon-external&&&/i&&/a&
链接:&a href=&///?target=http%3A///ifantastic/p/3481231.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&浏览器 user-agent 字符串的故事&i class=&icon-external&&&/i&&/a&
来源:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&博客园 - 开发者的网上家园&i class=&icon-external&&&/i&&/a&
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 &/p&&p&你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样?
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Mozilla/5.0 (L U; Android 4.1.2; zh- GT-I9300 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/ Firefox/20.0
Mozilla/5.0 ( MSIE 9.0; Windows NT 6.0; Trident/5.0)&/p&&p&故事还得从头说起,最初的主角叫NCSA Mosaic,简称Mosaic(马赛克),是1992年末位于伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心(National Center for Supercomputing Applications,简称NCSA)开发,并于1993年发布的一款浏览器。它自称“NCSA_Mosaic/2.0(Windows 3.1)”,Mosaic可以同时展示文字和图片,从此浏览器变得有趣多了。&/p&&p&然而很快就出现了另一个浏览器,这就是著名的Mozilla,中文名称摩斯拉。一说 Mozilla = Mosaic + Killer,意为Mosaic杀手,也有说法是 Mozilla = Mosaic & Godzilla,意为马赛克和哥斯拉,而Mozilla最初的吉祥物是只绿色大蜥蜴,后来更改为红色暴龙,跟哥斯拉长得一样。&/p&&p&但Mosaic对此非常不高兴,于是后来Mozilla更名为Netscape,也就是网景。Netscape自称“Mozilla/1.0(Win3.1)”,事情开始变得更加有趣。网景支持框架(frame),由于大家的喜欢框架变得流行起来,但是Mosaic不支持框架,于是网站管理员探测user agent,对Mozilla浏览器发送含有框架的页面,对非Mozilla浏览器发送没有框架的页面。&/p&&p&后来网景拿微软寻开心,称微软的Windows是“没有调试过的硬件驱动程序”。微软很生气,后果很严重。此后微软开发了自己的浏览器,这就是Internet Explorer,并希望它可以成为Netscape Killer。IE同样支持框架,但它不是Mozilla,所以它总是收不到含有框架的页面。微软很郁闷很快就沉不住气了,它不想等到所有的网站管理员都了解IE并且给IE发送含有框架的页面,它选择宣布IE是兼容Mozilla,并且模仿Netscape称IE为“Mozilla/1.22( MSIE 2.0; Windows 95)”,于是IE可以收到含有框架的页面了,所有微软的人都嗨皮了,但是网站管理员开始晕了。&/p&&p&因为微软将IE和Windows捆绑销售,并且把IE做得比Netscape更好,于是第一次浏览器血腥大战爆发了,结果是Netscape以失败退出历史舞台,微软更加嗨皮。但没想到Netscape居然以Mozilla的名义重生了,并且开发了Gecko,这次它自称为“Mozilla/5.0(W U; Windows NT 5.0; en-US; rv:1.1) Gecko/”。&/p&&p&Gecko是一款渲染引擎并且很出色。Mozilla后来变成了Firefox,并自称“Mozilla/5.0 (W U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/ Firefox/1.0”。Firefox性能很出色,Gecko也开始攻城略地,其他新的浏览器使用了它的代码,并且将它们自己称为“Mozilla/5.0 (M U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/ Camino/0.8.1”,以及“Mozilla/5.0 (W U; Windows NT 5.1; rv:1.8.1.8) Gecko/ SeaMonkey/1.0”,每一个都将自己装作Mozilla,而它们全都使用Gecko。&/p&&p&Gecko很出色,而IE完全跟不上它,因此user agent探测规则变了,使用Gecko的浏览器被发送了更好的代码,而其他浏览器则没有这种待遇。Linux的追随者对此很难过,因为他们编写了Konqueror,它的引擎是KHTML,他们认为KHTML和Gecko一样出色,但却因为不是Gecko而得不到好的页面,于是Konqueror为得到更好的页面开始将自己伪装成“like Gecko”,并自称为“Mozilla/5.0 ( Konqueror/3.2; FreeBSD) (KHTML, like Gecko)”。自此user agent变得更加混乱。&/p&&p&这时更有Opera跳出来说“毫无疑问,我们应该让用户来决定他们想让我们伪装成哪个浏览器。”于是Opera干脆创建了菜单项让用户自主选择让Opera浏览器变成“Mozilla/4.0 ( MSIE 6.0; Windows NT 5.1; en) Opera 9.51”,或者“Mozilla/5.0 (Windows NT 6.0; U; rv:1.8.1) Gecko/ Firefox/2.0.0 Opera 9.51”, 或者“Opera/9.51 (Windows NT 5.1; U; en)”。&/p&&p&后来苹果开发了Safari浏览器,并使用KHTML作为渲染引擎,但苹果加入了许多新的特性,于是苹果从KHTML另辟分支称之为WebKit,但它又不想抛弃那些为KHTML编写的页面,于是Safari自称为“Mozilla/5.0 (M U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5”,这进一步加剧了user agent的混乱局面。&/p&&p&因为微软十分忌惮Firefox,于是IE重装上阵,这次它自称为“Mozilla/4.0 ( MSIE 8.0; Windows NT 6.0) ”,并且渲染效果同样出色,但是需要网站管理员的指令它这么做才行。&/p&&p&再后来,谷歌开发了Chrome浏览器,Chrome使用Webkit作为渲染引擎,和Safari之前一样,它想要那些为Safari编写的页面,于是它伪装成了Safari。于是Chrome使用WebKit,并将自己伪装成Safari,WebKit伪装成KHTML,KHTML伪装成Gecko,最后所有的浏览器都伪装成了Mozilla,这就是为什么所有的浏览器User-Agent里都有Mozilla。Chrome自称为“Mozilla/5.0 (W U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13”。&/p&&p&因为以上这段历史,现在的User-Agent字符串变得一团糟,几乎根本无法彰显它最初的意义。追根溯源,微软可以说是这一切的始作俑者,但后来每一个人都在试图假扮别人,最终把User-Agent搞得混乱不堪。&/p&&p&一句话结论:因为网站开发者可能会因为你是某浏览器(这里是 Mozilla),所以输出一些特殊功能的程序代码(这里指好的特殊功能),所以当其它浏览器也支持这种好功能时,就试图去模仿 Mozilla 浏览器让网站输出跟 Mozilla 一样的内容,而不是输出被阉割功能的程序代码。大家都为了让网站输出最好的内容,都试图假装自己是 Mozilla 一个已经不存在的浏览器……&/p&&p&附各大浏览器诞生年表:&/p&&p&日:Mosaic&/p&&p&1994年12月:Netscape&/p&&p&1994年:Opera&/p&&p&日:Internet Explorer&/p&&p&日:Kongqueror&/p&&p&日:Safari&/p&&p&日:Chrome&/p&
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样?
其实单纯地做一个能用的爬虫十分简单,只需要理解最基本的知识就行啦,任何语言都能做,只是难易问题。&br&&br&网站运行在web服务器上面,比如tomcat,apache这种,这些web服务器本质上就是一个做得很吊的socket服务器。&br&&br&任何看过一点socket入门教程写过小例子的人都明白,socket服务器就是等着客户端来连接,然后跟客户端交换二进制数据的程序。但是二进制数据的具体含义是啥?你总不能乱发一坨数据吧,服务器客户端根本理解不了啊,怎么办?机智的先辈们说,那我们来搞个统一的约定吧,都按照这个套路走不就可以理解了嘛,于是任何socket应用开发前都有一个环节就是制定协议(特务接头暗号,天王盖地虎,宝塔镇河妖)。web服务器的协议比较出名,叫做http,相信你一定是听过的。&br&&br&然后呢,我们的浏览器访问页面时干了啥捏,当你输入网址按下回车的时候,向web服务器发了一个请求,跟他说请把这个url地址下的内容告诉我,假如这个地址是存在的,那么它就把内容返回给你,如果没有就给你报个错误(404啦)。你看那花里花哨的网页,除了视频和图片这种东西以外,绝大多数就是一个文本文件,只是里面的内容比较特殊,叫做html,或者还有javascript,浏览器收到这个文件以后理解它,然后根据这个代码在屏幕上把东西画出来,你就看到页面啦。&br&&br&那么怎么拿到链接呢?按一个按钮能跳转,这个链接信息也是在html或者javascript里面的,如果你有个socket程序,能够模拟浏览器发送请求数据给web服务器,然后它给你返回的页面文本你不就可以拿到了吗,然后拿到文本以后用正则表达式简单匹配获取一下,那链接不就到手了吗?&br&&br&然而这个还不够,你爬虫没爬起来呀,怎么爬起来呢?简单!你不是搞到链接了吗?等把这个页面处理完了,然后让爬虫接着给链接列表里的其他地址发送请求,重复上面的动作不就爬起来了嘛~&br&&br&&br&以上就是最基本的爬虫原理啦,当然,这个东西也可以做得很深,看兴趣咯~&br&&br&你看论坛有验证码,传统的验证码就是张图片嘛,图片里的字母和数字是可以识别的嘛,这种识别叫做ocr,识别完了以后再伪装起来假装自己是好人,发个带验证码数值的请求给web服务器,那它哪知道你是好人还是坏人呀~对吧…
其实单纯地做一个能用的爬虫十分简单,只需要理解最基本的知识就行啦,任何语言都能做,只是难易问题。 网站运行在web服务器上面,比如tomcat,apache这种,这些web服务器本质上就是一个做得很吊的socket服务器。 任何看过一点socket入门教程写过小例子的人…
cool cool cool&br&&br&看了一下,跟我所预测的一样,给 v8 API 包了一下接到 chakara 上,力求兼容社区模块(不知道跟 native module 兼容性如何。&br&&br&btw,PR的评论也是一水的赞,这一次微软公关没有把事情搞砸,也是近年来少有的。&br&&br&目前来看,第一季只是提供了另一个 js 引擎供 Node.js
运行而已,我所期待的 IDE/Windows API 啥时候才能到来呢,下一季赶紧开拍吧!&br&&br&6 seasons and a movie!&br&&br&====&br&&br&附我的另一个答案&br&&br&&a href=&/question//answer/& class=&internal&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/question/3823&/span&&span class=&invisible&&8351/answer/&/span&&span class=&ellipsis&&&/span&&/a&&br&&br&微软早在今年(2015年)初就有另立 Node.js 中央的想法了,而且不是 io.js 那种请客吃饭,而是用它这个 Chakra 来替换掉 v8,同时尽可能复用 Node.js 社区的很多东西,具体做法就是程序员们喜闻乐见的 wrapper 了。 &br&&br&这对 Node.js 来说也是好事一桩,在 JS引擎上挑起性能战争,对整个行业更是有推动作用。 &br&&br&另外微软对这个东西的野心还不止这点,据他们自己说,Chakra 驱动的 Node.js 是可以跟 VS 紧密结合的,还可以用来写 UWP 程序。 &br&&br&脑洞一下吧同志们,新的IDE、新的平台、各种 Windows API,没准还能跟 .net、XAML,乃至于 DirectX 啥的搞搞基。
cool cool cool 看了一下,跟我所预测的一样,给 v8 API 包了一下接到 chakara 上,力求兼容社区模块(不知道跟 native module 兼容性如何。 btw,PR的评论也是一水的赞,这一次微软公关没有把事情搞砸,也是近年来少有的。 目前来看,第一季只是提供了另一…
没办法从UA上判断,但是可以用 TCP指纹判断操作系统类型,也许有帮助&br&&br&&a href=&///?target=https%3A//en.wikipedia.org/wiki/TCP/IP_stack_fingerprinting& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TCP/IP stack fingerprinting&i class=&icon-external&&&/i&&/a&&br&&br&比如,通过TCP指纹发现是Windows系统,但是UA是iOS Safari浏览器,多少有些问题的。
没办法从UA上判断,但是可以用 TCP指纹判断操作系统类型,也许有帮助
比如,通过TCP指纹发现是Windows系统,但是UA是iOS Safari浏览器,多少有些问题的。
同病,非攻城狮,寻医数月无果,偶然得解。&br&方法:右键Chrome.exe & 属性 & 兼容性 & 勾选最下方的“以管理员身份运行此程序”
同病,非攻城狮,寻医数月无果,偶然得解。 方法:右键Chrome.exe & 属性 & 兼容性 & 勾选最下方的“以管理员身份运行此程序”
好久不用欧朋了,我这就去安装一个。
好久不用欧朋了,我这就去安装一个。
&p&我自己做了个chrome存档的网站,15年开始做的,并不太全。希望可以帮到部分人&a href=&///?target=http%3A//Chromedownloads.net& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&Chromedownloads.net&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&
收集了stable、beta、dev、canary四个版本,涵盖windows 32位、64位,OS 64位,以及Linux的deb和rpm安装包&/p&
我自己做了个chrome存档的网站,15年开始做的,并不太全。希望可以帮到部分人
收集了stable、beta、dev、canary四个版本,涵盖windows 32位、64位,OS 64位,以及Linux的deb和rpm安装包
&p&占坑,我要来讲血泪史/&/p&&br&&br&&p&填坑了。众所周知目前IE成为最受歧视的浏览器没有之一(已死的Opera with Prestro: 你说啥?),但实际上IE11很多特性又是无比的优秀,例如最好的硬件加速、最好的高分屏支持和最好的触摸屏体验。甩开Chrome之流十条街不止。&/p&&br&&p&而且IE11对标准的支持力度还是很大的,它只是不能像Chrome那样一个礼拜更新一回而已。对IE来说,大的功能性变动只会在横跨主版本号时才会发生。所以当2013年11月IE11发布时它的Trident内核大致模样就已经定下来,不会大改了。同时既然它是11月发布的正式版,那意味着他很可能在数个月之前就已经完成了主体开发,之后的数个月只是在完善而已。因而可以认为IE11的功能在至少距今一年半之前就已经固定了下来。在之后直到IE12发布的漫长岁月里,IE11只会提供一些安全更新和一些小的性能改进。&/p&&br&&p&说这么多是什么意思呢,说这么多的意思是:前端人员想用新特性又不知道IE有没有,干脆就不给IE了。前端人员用了这一年半内推出的新特性,发现IE不支持,干脆就不修了。前端人员认为宇宙真理是Blink和WebKit,于是就只用WebKit能用的方式写网页,干脆就不管IE了。&/p&&br&&p&我也不知道我这算不算是给前端人员开脱……总之大概就是这个意思……&/p&&br&&p&还好微软还算良心,在IE12里搞了大量反向兼容webkit only网站的设计(sigh。&/p&&br&&p&==&/p&&br&&p&那么说到WebKit Only网站,既然它是WebKit Only,你就别指望在IE里获得太好的使用体验。不论你怎么努力,也不论微软怎么努力,总有些浑犊子网站是不肯兼容或者做得稀烂的。说不定有些功能你尝试了我下面说的这些方法就能使用,有些功能就没办法。遇到这种情况只能默默竖根中指……然后努力跟网站反馈(不过知乎这种网站就算了,我反馈了无数次也没改,啧啧。&/p&&br&&p&1.修改UA大法:此招可用于兼容大多数蓄意歧视IE的网站,如鄙校的某傻逼教务系统用着&a href=&///?target=http%3A//asp.net& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&asp.net&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&还歧视IE,直接就给个差别对待的页面,非得Chrome之流才能正常浏览&/p&&p&步骤一:按F12,会弹出这个:&/p&&img src=&/834dfc68b691eec3fd9df88_b.jpg& data-rawheight=&581& data-rawwidth=&1915& class=&origin_image zh-lightbox-thumb& width=&1915& data-original=&/834dfc68b691eec3fd9df88_r.jpg&&&br&&p&步骤二:切换到最底下(或者最右边,如果你和我一样是最新版IE11的话)的【仿真】一栏,选择【用户代理字符串】:&/p&&p&&img src=&/83b72eecf280df6592bea391_b.jpg& data-rawheight=&518& data-rawwidth=&572& class=&origin_image zh-lightbox-thumb& width=&572& data-original=&/83b72eecf280df6592bea391_r.jpg&&选择其中一个看起来不那么受歧视的就好了( ╯□╰ ),如果不行的话可以多试试,一般会有一个起作用……(Opera可能会起反作用,慎用)&/p&&p&PS:这招还有一个作用,可以把flash插件禁用掉,然后模拟成iPad去访问土豆优酷之类的,可以给你用html5版的播放器。但是不知道现在还管用不。。。&/p&&br&&p&第二招:直接用IE的兼容模式(不推荐)。这样的话对方网站会认为你是IE7。考虑到IE7庞大的用户基数,很多网站还是会做一个IE7版本出来的,这样起码能用是吧= =。&/p&&br&&p&第三招:禁用flash插件。很多时候会有意外的奇效。感觉flash插件的质量真是业界毒瘤……明明可以做得好一点orz. 而且很多广告联盟的广告代码也会用到flash,禁用flash有时候可以起到屏蔽广告的奇效……&/p&&br&&p&第四招:使用云端IE……之所以让你用云端IE是因为云端IE支持“Chrome模式”。&/p&&p&你问我啥是Chrome模式?(我可以说无可奉告,但你又不高兴XD)&/p&&p&就是说,云端IE实际上现在已经运行的是内测中的IE12了,你可以通过about:flags 页面,打开测试中的新功能。开启之后默认就是传说中的Chrome模式,对外宣称自己是Windows7上的Chrome,实际上……是支持了很多webkit特性的新IE12 Edge模式(IE11 Edge不支持那些乱七八糟的非标准特性)。&/p&&br&&p&第五招:盼未来,等Win10,就之前Build 9879里集成的IE Chrome模式来看,效果还是不错的,成果还是卓越的,微软还是棒棒的。。&/p&&br&&p&第六招:启用【跟踪保护】。说是跟踪保护,其实就是广告屏蔽。很多广告联盟的广告代码质量是非常差的,而且乱七八糟的广告就算质量不差也会拖累页面加载速度让人不爽。如果你善用了跟踪保护功能,可以极大减轻IE的负担。&/p&&br&&p&教程如下:&/p&&p&1.打开IE后,访问 &a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Internet Explorer Gallery&i class=&icon-external&&&/i&&/a& 。&/p&&p&&img src=&/816ade67e54dbf_b.jpg& data-rawheight=&1041& data-rawwidth=&1920& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/816ade67e54dbf_r.jpg&&选择箭头指的那个【跟踪保护列表】。&/p&&br&&p&&img src=&/418dfa0d34935abf6949a6a_b.jpg& data-rawheight=&936& data-rawwidth=&1385& class=&origin_image zh-lightbox-thumb& width=&1385& data-original=&/418dfa0d34935abf6949a6a_r.jpg&&把这些列表都添加上去,你就有了基本的防跟踪&广告屏蔽功能。&/p&&br&&p&然而这还不够,我还想要adblock,怎么办呢?&/p&&p&(之前有小伙伴跟我说IE没有广告屏蔽,我只能说那果然是因为你不会用&IE粉丝少没人教你……)&/p&&p&满足你!&/p&&p&&a href=&///?target=http%3A///thread--1.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&IE跟踪保护中添加Adblock plus官方规则,可自动更新(含EasyList China+EasyList)&i class=&icon-external&&&/i&&/a&&br&&/p&&p&这里有个帖子,po主自己做了一个导入adblock plus列表的html。(表示十分感谢)&/p&&br&&p&不过万一哪天那个论坛挂了大家就看不着了,所以我直接把html里的关键内容贴出来,你用记事本新建一个txt,然后改后缀名为html就可以用了:&/p&&div class=&highlight&&&pre&&code class=&language-text&&Adblock Plus:&a href=&javascript:window.external.msAddTrackingProtectionList('http://easylist-msie.adblockplus.org/easylist.tpl', 'EasyList')&&EasyList&/a&
Adblock Plus:&a href=&javascript:window.external.msAddTrackingProtectionList('http://easylist-msie.adblockplus.org/easylistchina.tpl', 'EasyList China')&&EasyList China&/a&
Adblock Plus:&a href=&javascript:window.external.msAddTrackingProtectionList('http://easylist-msie.adblockplus.org/easylistchina+easylist.tpl', 'EasyList China+EasyList')&&EasyList China+EasyList&/a&
Adblock Plus:&a href=&javascript:window.external.msAddTrackingProtectionList('http://easylist-msie.adblockplus.org/easyprivacy.tpl', 'EasyPrivacy')&&EasyPrivacy&/a&
Adblock Plus:&a href=&javascript:window.external.msAddTrackingProtectionList('http://easylist-msie.adblockplus.org/easyprivacy+easylist.tpl', 'EasyPrivacy+EasyList')&&EasyPrivacy+EasyList&/a&
&/code&&/pre&&/div&&br&&p&贴到文本文件里保存成html以后,用IE打开它,然后每个链接都点一次,弹出窗口选确定就好了。&/p&&br&&p&谁说IE没有adblock口亨,你就是懒口亨(¬︿??¬☆)&/p&&br&&p&可能会提示有重复的,重复也没关系反正只能屏蔽一次……&/p&&br&&p&//好吧不知不觉写成了IE11使用技巧大全……凑合看吧- -&/p&&br&&p&//既然都写成这样长了,顺手再把IE的常用快捷键给科普下吧,应该很多浏览器都通用:&/p&&br&&p&&b&1.必须掌握类(节省70%鼠标操作)&/b&&/p&&p&&b&·标签页管理&/b&&/p&&p&Ctrl+T:创建新【空白】标签页&/p&&p&Ctrl+W:关闭当前标签页&/p&&p&Ctrl+K:在同一个窗口中,复制一个当前标签页&/p&&p&Ctrl+N:新建一个窗口,并在其中复制当前标签页&/p&&p&Ctrl+Tab:切换到下一个标签页&/p&&p&Ctrl+Shift+Tab:切换到上一个标签页&/p&&p&Ctrl+L:定位光标到【地址栏】,直接输入网址敲回车就行&/p&&p&Ctrl+E:使用默认搜索程序进行搜索,直接输入关键词敲回车就行&/p&&br&&p&非常,非常,非常高效快捷。比鼠标手势什么的强到不知哪里去了。。。&/p&&br&&strong&2.感兴趣的话可以记一下类的……(节省20%鼠标操作)&br&&/strong&&p&&strong&·其他常用操作&/strong&&/p&&p&Ctrl+I:打开收藏夹&/p&&p&Ctrl+D:收藏当前页面&/p&&p&Ctrl+B:整理收藏夹&/p&&p&Ctrl+O:打开,作用类似Ctrl+L&/p&&br&&p&Alt+箭头左/右:后退/前进。&/p&
占坑,我要来讲血泪史/ 填坑了。众所周知目前IE成为最受歧视的浏览器没有之一(已死的Opera with Prestro: 你说啥?),但实际上IE11很多特性又是无比的优秀,例如最好的硬件加速、最好的高分屏支持和最好的触摸屏体验。甩开Chrome之流十条街不止。 而且IE1…
360 浏览器有两个版本,一个叫 「360 安全浏览器」[1],一个叫「360 极速浏览器」[2]。「360 安全浏览器」使用的是 IE 内核,「360 极速浏览器」使用的是 IE 和 Chromium (最新版本为 18)双核。您给出的浏览器份额报告中会同时包含这两个版本的份额,所以您说的「阻碍社会进步」是不妥或不严谨的。&br&&br&事实上 360 浏览器还曾举行了「歼灭 IE6 的活动」[3][4],同时为国内 Chromium 开源社区做过大量贡献[5]。360 作为国内浏览器市场份额仅次于 IE6 的厂商,干掉落后技术是责无旁贷的,所以如果您有任何意见都可以在微博 @360安全浏览器 或 @360极速浏览器,相信他们会联系您的:)&br&&br&至于您说的如何干掉 360 浏览器,我想可能会有三个方法:&ol&&li&自行开发浏览器。&/li&&li&使用开源浏览器内核自行包装。&/li&&li&移动端或许可能是个突破口。&/li&&/ol&&br&360 安全浏览器会判断当您的 IE 版本低于 7.0 时自动切换至 IE 8 内核,对于 360 为何会在安全浏览器上自带 IE8 内核而不是其他版本也是我很好奇的,我已经提出了这个问题(&a href=&/question/& class=&internal&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/question/2026&/span&&span class=&invisible&&3129&/span&&span class=&ellipsis&&&/span&&/a&)并邀请了 360 极速浏览器的产品经理,您可以关注一下:)&br&&br&&br&&br&[1]:&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&&br&[2]:&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&&br&[3]:&a href=&///?target=http%3A//app./ie6die& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&app./ie6d&/span&&span class=&invisible&&ie&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&[4]:&a href=&/question//answer/& class=&internal&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/question/2019&/span&&span class=&invisible&&4266/answer/&/span&&span class=&ellipsis&&&/span&&/a&&br&[5]:&a href=&/question//answer/& class=&internal&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/question/2005&/span&&span class=&invisible&&9651/answer/&/span&&span class=&ellipsis&&&/span&&/a&
360 浏览器有两个版本,一个叫 「360 安全浏览器」[1],一个叫「360 极速浏览器」[2]。「360 安全浏览器」使用的是 IE 内核,「360 极速浏览器」使用的是 IE 和 Chromium (最新版本为 18)双核。您给出的浏览器份额报告中会同时包含这两个版本的份额,所以…
&p&chrome://chrome-signin/?source=2&/p&&p&在地址栏登陆以上地址就可以。&/p&&p&本来打算转用chromium,发现chromium用上面这个地址登陆,复制到chrome试了下,果然可以。&/p&&img src=&/v2-031f43e2b8afeb66b550_b.png& data-rawwidth=&640& data-rawheight=&630& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-031f43e2b8afeb66b550_r.png&&&p&如果弹出下面这个窗口,就需要先输入你所用代理的账号密码&/p&&img src=&/v2-d3a88ba842479efd8c8b4e8cb5f308fd_b.png& data-rawwidth=&369& data-rawheight=&290& class=&content_image& width=&369&&&p&有人遇到输入代理的账号密码还是反复弹出这个窗口的情况,我是没遇到过,可能是用的代理不一样。我推荐一个我自己用的代理&a href=&///?target=https%3A//flybird.me& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&flybird.me&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 。是收费的,如果只是为了登陆chrome,可以买一个1块钱1G流量的套餐。&/p&&img src=&/v2-a29bb3f3a621f12a0c592ddf21306fd9_b.png& data-rawwidth=&138& data-rawheight=&61& class=&content_image& width=&138&&&p&装上chrome的插件就可以用&/p&
chrome://chrome-signin/?source=2在地址栏登陆以上地址就可以。本来打算转用chromium,发现chromium用上面这个地址登陆,复制到chrome试了下,果然可以。如果弹出下面这个窗口,就需要先输入你所用代理的账号密码有人遇到输入代理的账号密码还是反复弹出这…
我终于见识到了一个精准、优秀的软文是如何进行产品植入的了。
我终于见识到了一个精准、优秀的软文是如何进行产品植入的了。
题主的问题槽点颇多…&br&&br&从Java SE 6开始是这样的:&br&&br&&div class=&highlight&&&pre&&code class=&language-java&&&span class=&kd&&public&/span& &span class=&kd&&class&/span& &span class=&nc&&MyClass&/span& &span class=&o&&{&/span&
&span class=&kd&&private&/span& &span class=&kt&&int&/span& &span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&&span class=&o&&;&/span& &span class=&c1&&// field declaration with initializer&/span&
&span class=&o&&{&/span&
&span class=&c1&&// instance initializer 1&/span&
&span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&mi&&2&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&kd&&public&/span& &span class=&nf&&MyClass&/span&&span class=&o&&()&/span& &span class=&o&&{&/span&
&span class=&c1&&// constructor&/span&
&span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&mi&&4&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&o&&{&/span&
&span class=&c1&&// instance initializer 2&/span&
&span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&mi&&3&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&&br&这个MyClass的构造器从Java语言层面看就是public MyClass() { ... }的部分。不过对JVM来说所有实例初始化动作都要收集到“特殊的实例初始化方法”(名为“&init&”,内容对应所有实例初始化器+构造器)里,所以上面的代码从JVM的角度看会是这样:&br&&div class=&highlight&&&pre&&code class=&language-java&&&span class=&kd&&public&/span& &span class=&kd&&class&/span& &span class=&nc&&MyClass&/span& &span class=&o&&{&/span&
&span class=&kd&&private&/span& &span class=&kt&&int&/span& &span class=&n&&a&/span&&span class=&o&&;&/span&
&span class=&kd&&public&/span& &span class=&kt&&void&/span& &span class=&o&&&&/span&&span class=&n&&init&/span&&span class=&o&&&()&/span& &span class=&o&&{&/span&
&span class=&c1&&// implicit superclass constructor call&/span&
&span class=&kd&&super&/span&&span class=&o&&();&/span&
&span class=&c1&&// field initializer&/span&
&span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&&span class=&o&&;&/span&
&span class=&c1&&// instance initializer 1&/span&
&span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&mi&&2&/span&&span class=&o&&;&/span&
&span class=&c1&&// instance initializer 2&/span&
&span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&mi&&3&/span&&span class=&o&&;&/span&
&span class=&c1&&// explicit constructor&/span&
&span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&mi&&4&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&这个合成的&init&()V里,先是构造器里隐式或显式的super()调用,然后是按代码顺序把实例初始化动作(包括实例字段初始化与匿名的实例初始化器)收集起来,然后是构造器自身的内容。&br&&br&Java语言规范里对构造器中super()调用的位置的限制其实颇为鸡肋。一来可以通过上述方式通过写字段初始化或实例初始化器来在super()前执行代码,二来就算不用它们而只用普通的构造器也还是可以在super()前执行代码,只要super()可以接受至少一个参数——做法如下:&br&&div class=&highlight&&&pre&&code class=&language-java&&&span class=&kd&&public&/span& &span class=&kd&&class&/span& &span class=&nc&&Derived&/span& &span class=&kd&&extends&/span& &span class=&n&&Base&/span& &span class=&o&&{&/span&
&span class=&kd&&public&/span& &span class=&nf&&Derived&/span&&span class=&o&&()&/span& &span class=&o&&{&/span&
&span class=&kd&&super&/span&&span class=&o&&(&/span&&span class=&n&&foo&/span&&span class=&o&&());&/span& &span class=&c1&&// assuming there's a Base(int) constructor&/span&
&span class=&n&&System&/span&&span class=&o&&.&/span&&span class=&na&&out&/span&&span class=&o&&.&/span&&span class=&na&&println&/span&&span class=&o&&(&/span&&span class=&s&&&Derived ctor&&/span&&span class=&o&&);&/span&
&span class=&o&&}&/span&
&span class=&kd&&private&/span& &span class=&kt&&int&/span& &span class=&nf&&foo&/span&&span class=&o&&()&/span& &span class=&o&&{&/span&
&span class=&n&&System&/span&&span class=&o&&.&/span&&span class=&na&&out&/span&&span class=&o&&.&/span&&span class=&na&&println&/span&&span class=&o&&(&/span&&span class=&s&&&foo!&&/span&&span class=&o&&);&/span& &span class=&c1&&// arbitrary side effect&/span&
&span class=&k&&return&/span& &span class=&mi&&42&/span&&span class=&o&&;&/span&
&span class=&o&&}&/span&
&span class=&o&&}&/span&
&/code&&/pre&&/div&只要基类有接受至少一个参数的构造器,子类的构造器在调用super()时就可以调用任意方法去提供那个参数的值,于是就可以在真的调用super()前产生任意的副作用了。&br&&br&题主问题说:&br&&blockquote&构造器的目的是分配实例对象的内存空间&br&&/blockquote&这是错误的。Java语言里,new表达式总体负责两个动作:&br&&ol&&li&分配对象空间并对其做默认初始化。默认初始化会将对象的所有成员字段设到其类型对应的默认值(零值)。&/li&&li&初始化对象&/li&&/ol&其中构造器只负责第2点,第1点是包含在new表达式里的语义。&br&&br&相关传送门:&a href=&/question//answer/& class=&internal&&如何理解《Java编程思想》描述的“即使没有显式地使用static关键字,构造器实际上也是静态方法”? - RednaxelaFX 的回答&/a&
题主的问题槽点颇多… 从Java SE 6开始是这样的: public class MyClass {
private int a = 1; // field declaration with initializer
// instance initializer 1
public MyClass() {
// constructor
// instance ini…
其实这个bug早就发现了,也知道怎么修,但是我们决定不在RTM的那一刻发布,而在接下来的一小段时间里面通过update推送一个补丁来解决这个问题。如果你们不打开update自动安装的话,这个问题将会得不到解决(逃
其实这个bug早就发现了,也知道怎么修,但是我们决定不在RTM的那一刻发布,而在接下来的一小段时间里面通过update推送一个补丁来解决这个问题。如果你们不打开update自动安装的话,这个问题将会得不到解决(逃
&p&全力支持Mozilla的这项计划。邮件列表(&a href=&///?target=https%3A///d/topic/mozilla.dev.platform/xaGffxAM-hs/discussion& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Google 网上论坛&i class=&icon-external&&&/i&&/a&)里的这一议题下的所有评论我都看了。总结起来反对派的理由有如下几点:&/p&&p&1、SSL证书需要花钱&/p&&p&2、非敏感内容不需要加密&/p&&p&3、加密会导致性能下降&/p&&p&4、SSL本身也不是无懈可击(比如CA可以颁发假证书)&/p&&br&&p&上面4点其实都不对。&/p&&p&1、Let's Encrypt发免费证书。&/p&&p&2、GitHub被中间人攻击就证明不加密的网络的潜在危害是很大的。&/p&&p&3、随着硬件水平的增长和算法优化(比如Chacha20_Poly1305),加密开销越来越在可接受范围内。&/p&&p&4、SSL相关的漏洞目前都有解决方案,比如为了对抗假证书风险,我们有Public key pinning。而且发假证书给CA带来的风险太大。&/p&&br&&p&回复 &a class=&member_mention& href=&///people/a5a1cd08e0afc& data-hash=&a5a1cd08e0afc& data-hovercard=&p$b$a5a1cd08e0afc&&@陈肖恩&/a&
提出的质疑:首先 Mozilla的这个提案一点儿都不激进。他们根本没说近期就要废除 HTTP。他坦言那个是几年后才开始考虑的事情,而且是根据网站部署的情况来定的。&/p&&p&另外谷歌在去年就有类似的提案。要给不加密的网站显示不安全。&/p&&p&Mozilla这个提案其实是在响应W3C的标准草案 Privileged Context,这个标准是谷歌主导的,同时得到了微软和 Mozilla的支持。标准要求浏览器对于特定的 JavaScript功能强制 HTTPS。 Mozilla只不过进了一步,把特定功能拓展成全部**新功能**。旧功能在很长一段时间内仍能继续使用。&/p&&p&再说用个HTTPS 有那么难嘛!我们有HSTS 和 upgrade insecure requests帮助广大网站简单地升级成HTTPS 。我们提供免费和自动化的证书申请程序 Let's Encrypt。我们还有SSL配置生成器,等等。&/p&&p&[1]&a href=&///?target=https%3A//w3c.github.io/webappsec/specs/powerfulfeatures/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Privileged Contexts&i class=&icon-external&&&/i&&/a&&br&[2] &a href=&///?target=https%3A//letsencrypt.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Let's Encrypt&i class=&icon-external&&&/i&&/a&&br&[3] &a href=&///?target=https%3A//w3c.github.io/webappsec/specs/upgrade/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Upgrade Insecure Requests&i class=&icon-external&&&/i&&/a&&br&[4] &a href=&///?target=https%3A//mozilla.github.io/server-side-tls/ssl-config-generator/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Generate Mozilla Security Recommended Web Server Configuration Files&i class=&icon-external&&&/i&&/a&&/p&
全力支持Mozilla的这项计划。邮件列表()里的这一议题下的所有评论我都看了。总结起来反对派的理由有如下几点:1、SSL证书需要花钱2、非敏感内容不需要加密3、加密会导致性能下降4、SSL本身也不是无懈可击(比如CA可以颁发假证书) 上面4点…
后来经过查询,发现只要在地址栏打这个&br&chrome://flags/#enhanced-bookmarks-experiment&br&&br&启用增强型书签 Mac, Windows, Linux, Chrome OS, Android&br&为增强型书签实验提供一个“关闭”开关&br&&br&把“默认”改成“已停用”,然后重启Chrome,旧版书签管理工具就回来了。&br&&br&其实个人觉得新版挺好看的,对于一般用户更友好,但是我多年已经养成了自己整理书签的习惯,实在是懒得改了,在这里自问自答一下,希望能够帮到有需要的人&br&&br&&img src=&/4ee9fa8ee7_b.jpg& data-rawwidth=&433& data-rawheight=&144& class=&origin_image zh-lightbox-thumb& width=&433& data-original=&/4ee9fa8ee7_r.jpg&&
后来经过查询,发现只要在地址栏打这个 chrome://flags/#enhanced-bookmarks-experiment 启用增强型书签 Mac, Windows, Linux, Chrome OS, Android 为增强型书签实验提供一个“关闭”开关 把“默认”改成“已停用”,然后重启Chrome,旧版书签管理工具就回…
首先要确认题主没有误解safe-region的概念。如果题主想像的safe-region是类似.NET的&a href=&///?target=https%3A///en-us/library/msv%3Dvs.110%29.aspx& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Constrained Execution Regions&i class=&icon-external&&&/i&&/a&的东西的话,Java/JVM没有这种东西。&br&&br&然后,关于Java/JVM的safepoint / safe-region,李晓峰(Xiao-Feng Li)有篇博文解释得很清楚,我觉得我不必多赘言了:&a href=&///?target=http%3A//xiao-/2008/01/gc-safe-point-and-safe-region.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GC safe-point (or safepoint) and safe-region | Xiao-Feng Li&i class=&icon-external&&&/i&&/a&(链接是好的,咳咳)&br&Cliff Click大神最近的一篇博文也正好提到了safepoint:&a href=&///?target=http%3A///blog/2015/02/Java-HotLoops/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&0xdata - How does Java Both Optimize Hot Loops and Allow Debugging&i class=&icon-external&&&/i&&/a&&br&&br&不过如果要听我的版本的话,请继续读下去:&br&其实在高度优化的现代JVM里,safepoint有几种不同的用法。GC safepoint是最常见、大家听说得最多的,但还有deoptimization safepoint也很重要。&br&在HotSpot VM里,这两种safepoint目前实现在一起,但其实概念上它们俩没有直接联系,需要的数据不一样。&br&&br&无论是哪种safepoint,最简洁的定义是“A point in program where the state of execution is known by the VM”。这里“state of execution”特意说得模糊,是因为不同种类的safepoint需要的数据不一样。&br&GC safepoint需要知道在那个程序位置上,调用栈、寄存器等一些重要的数据区域里什么地方包含了GC管理的指针;&br&Deoptimization safepoint需要知道在那个程序位置上,原本抽象概念上的JVM的执行状态(所有局部变量、临时变量、锁,等等)到底分配到了什么地方,是在栈帧?的具体某个slot还是在某个寄存器里,之类的。&br&&br&如果要触发一次GC,那么JVM里的所有Java线程都必须到达GC safepoint;&br&如果要执行一次deoptimization,那么需要执行deoptimization的线程要在到达deoptimization safepoint之后才可以开始deoptimize。&br&&br&不同JVM实现会选用不同的位置放置safepoint。&br&&br&以HotSpot VM为例,&br&&br&在解释器里每条字节码的边界都可以是一个safepoint,因为HotSpot的解释器总是能很容易的找出完整的“state of execution”。&br&&br&而在JIT编译的代码里,HotSpot会在所有方法的临返回之前,以及所有非counted loop的循环的回跳之前放置safepoint。&br&HotSpot的JIT编译器不但会生成机器码,还会额外在每个safepoint生成一些“调试符号信息”,以便VM能找到所需的“state of execution”。&br&为GC生成的符号信息是OopMap,指出栈上和寄存器里哪里有GC管理的指针;&br&为deoptimization生成的符号信息是debugInfo,指出如果要把当前栈帧从compiled frame转换为interpreted frame的话,要从哪里把相应的局部变量、临时变量、锁等信息找出来。&br&&br&之所以只在选定的位置放置safepoint是因为:&br&&ul&&li&挂在safepoint的调试符号信息要占用空间。如果允许每条机器码都可以是safepoint的话,需要存储的数据量会很大(当然这有办法解决,例如用delta存储和用压缩)&/li&&li&safepoint会影响优化。特别是deoptimization safepoint,会迫使JVM保留一些只有解释器可能需要的、JIT编译器认定无用的变量的值。本来JIT编译器可能可以发现某些值不需要而消除它们对应的运算,如果在safepoint需要这些值的话那就只好保留了。这才是更重要的地方,所以要尽量少放置safepoint&/li&&li&像HotSpot VM这样,在safepoint会生成polling代码询问VM是否要“进入safepoint”,polling也有开销所以要尽量减少。&/li&&/ul&&br&还有一种情况是当某个线程在执行native函数的时候。此时该线程在执行JVM管理之外的代码,不能对JVM的执行状态做任何修改,因而JVM要进入safepoint不需要关心它。所以也可以把正在执行native函数的线程看作“已经进入了safepoint”,或者把这种情况叫做“在safe-region里”。&br&JVM外部要对JVM执行状态做修改必须要通过JNI。所有能修改JVM执行状态的JNI函数在入口处都有safepoint检查,一旦JVM已经发出通知说此时应该已经到达safepoint就会在这些检查的地方停下来把控制权交给JVM。&br&&br&换一个JVM说,JRockit选择放置safepoint的地方在方法的入口以及循环末尾回跳之前,跟HotSpot略为不同。
首先要确认题主没有误解safe-region的概念。如果题主想像的safe-region是类似.NET的的东西的话,Java/JVM没有这种东西。 然后,关于Java/JVM的safepoint / safe-region,李晓峰(Xiao-Feng Li)有篇博文解释得很清楚,我觉得…
在4.04下的三儿子上(实际应该是ICS版本中),我认为Chrome无疑是最好的。&ol&&li&能够与PC端Chrome浏览器在书签、正在浏览的标签进行及时同步。想想这样的场景,正在知乎上学习某大牛的鸿篇大论,突然想去蹲坑,怎么办?不能忍,憋不住,快点去。点根烟,拿出手机,打开浏览器点开同步,在拉得酣畅淋漓的同时还可以看的酣畅漓淋。这不是很爽么?&/li&&li&网页的加载速度快。操作流畅顺滑。爽。&/li&&li&界面。简洁明了,不喜欢过度堆砌的首页以及图标,与ICS的原生主题完美契合。爽。&br&&/li&&/ol&感谢@小鹏 提醒 还有网页离线发送到手机“Google Chrome to Phone Extension ”以及第三方的“Phone 2 Google Chrome(TM) browser”。这样的无缝浏览体验还有谁家能比?
在4.04下的三儿子上(实际应该是ICS版本中),我认为Chrome无疑是最好的。能够与PC端Chrome浏览器在书签、正在浏览的标签进行及时同步。想想这样的场景,正在知乎上学习某大牛的鸿篇大论,突然想去蹲坑,怎么办?不能忍,憋不住,快点去。点根烟,拿出手机,…
浏览器的两个关键部分,布局引擎和JavaScript解释器。&br&&br&布局引擎就是我们常说的浏览器的内核,主要处理HTML和CSS。简单的说,就是他决定了什么东西该在什么地方怎么样显示。对于网页这种视觉工程来说,布局引擎的重要程度不言而喻。&br&&br&对于布局引擎的难点,大概有这些方面。&br&&b&&/b&&br&&b&对标准的支持和扩展: &/b&有一些标准的内容可能会难以实现,或者会带来一些安全的问题,所以各大浏览器对于标准都会有一些的裁剪,而另外又有一些拓展。&br&&br&&b&布局性能:&/b& 布局引擎的性能,包括内存、CPU等指标,能够直接影响用户的体验。简单来说就是显示快不快,占用内存多不多。&br&&br&其他: 类型稳定性、可拓展性这样的一些其他类型软件共有的特点。&br&&br&JavaScript解释器本来应该是浏览器内核的一部分,但是现在前端大量对JavaScript的应用,和浏览器厂商对这个部分的重视,开始分离出来了。既然拿出来了,JavaScript解释器的性能,包括时间性能、内存性能这些因素就很重要了,需要各种优化编译过程,优化生成代码,优化指令的工作。&br&&br&其他的一些难点,就是一些软件上通用的东西,如何挖掘用户需求,如何让用户使用得更满意,比如单窗口向多标签的转变,快速拨号,鼠标手势这些功能。&br&&br&然后就是一个好看的界面。
浏览器的两个关键部分,布局引擎和JavaScript解释器。 布局引擎就是我们常说的浏览器的内核,主要处理HTML和CSS。简单的说,就是他决定了什么东西该在什么地方怎么样显示。对于网页这种视觉工程来说,布局引擎的重要程度不言而喻。 对于布局引擎的难点,大…
如果你指的是“功能孱弱的系统癞皮狗”,那safari已经是了。&br&如果你指的是“因为功能孱弱被用户抛弃”,那是不会的,因为苹果有世界上最伟大的粉丝,他们信仰“够用就好”。
如果你指的是“功能孱弱的系统癞皮狗”,那safari已经是了。 如果你指的是“因为功能孱弱被用户抛弃”,那是不会的,因为苹果有世界上最伟大的粉丝,他们信仰“够用就好”。
既然是大三学生为什么不能都学?&br&&br&这两种语言又不是谁就一定要替代谁的关系。&br&&br&先Java从前到后撸一遍,尤其是Java8的部分,熟悉几个框架,看看怎么做并发。&br&然后Node.js前后撸一遍,尤其是React的部分,看看怎么处理事务的。&br&&br&然后就可以来点好玩的,以下的方案的目的不是说现在公司都这么用,其实没那么多这么用的,就是用来熟悉这些的。&br&&br&网站:nodejs + express + react + hbs + babel + webpack + less,使用q.js的promise方案,gruntjs用于打包优化。&br&管理后台:extjs做静态,gruntjs用于开发和打包优化。&br&Service Api : 用java + spring mvc + mybatis + gradle 单纯提供 RESTful json.&br&数据库:自然就是先最简单的 MySQL.&br&CI: 用Docker + Jenkins&br&版本控制:Git&br&&br&而且这些不需要一步到位,一开始就是简单到不能再简单最小集合:&br&&br&网站:Node.js + express + bootstrap (这个都是有现成的代码的)&br&管理后台:不需要&br&Service Api : 用 java + spring mvc 能提供Api 就好了&br&数据库:就用MySQL&br&CI: 不需要&br&版本控制:最好一开始就上。不上Git也没关系,反正坚持做下去都会有一个感觉,就是“不如我还是重写一个吧”的感觉。&br&&br&在这个最小集合上面一点一点往上加,加到满了之后你的能力实际上已经有个质的提升了,&b&但需要注意的是&/b&,这些实际上还是和技术内核关系不大的,也就是说有可能你全部做出来之后还觉得自己是不是没有理解这些语言,这是很正常的,只需要慢慢学然后在写代码的过程种多想想原理找时间多看看原理相关的书,就好了,这个是没法一蹴而就的。&br&&br&重点就是,&b&你是在学习,那么就要做学习收益高的事务&/b&,即使这样看起来成本很高。所有的编程语言都有一个特点,就是:&b&只有学好了才是优势,要不然只是技能&/b&。实际上人总是高估自己一天内可以做的事,但是低估自己一个月内可以做的事,何况你是一年呢?&br&&br&我大学的时候在大四上的时候,上面那个除了Docker Jenkins 和 React 没用以外,其他的类似的我实现了一遍了,如果有其他需要可以再联系。&br&&br&祝题主学习顺利。&br&&br&补充一下:上述的学习过程撸一遍的结果不是你能对这些框架了若指掌(实际上单纯的也就会用几下下),也不是对语言能掌握到什么程度(也就是一个API-Copier),只是你在这期间激发的这种学习能力,会让你非常非常的厉害。
既然是大三学生为什么不能都学? 这两种语言又不是谁就一定要替代谁的关系。 先Java从前到后撸一遍,尤其是Java8的部分,熟悉几个框架,看看怎么做并发。 然后Node.js前后撸一遍,尤其是React的部分,看看怎么处理事务的。 然后就可以来点好玩的,以下的方…
已有帐号?
无法登录?
社交帐号登录}

我要回帖

更多关于 网页设计项目案例网站 的文章

更多推荐

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

点击添加站长微信