siterserver的sqlserver 自定义函数语言摸版在哪

siteserver全功能版不付费会不会被停止使用,免费版功能太少了,siterserver专业版和全功能版都要收费_百度知道
siteserver全功能版不付费会不会被停止使用,免费版功能太少了,siterserver专业版和全功能版都要收费
全功能版需要3万6,没那么多钱,不付费会不会被停止使用,网站建好后会不会被关掉
提问者采纳
赚到钱的话适当购买版权
其他类似问题
为您推荐:
siteserver的相关知识
其他1条回答
可以免费使用全部功能。但仅限于非商业用途。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁精通就不必强求了,live is too short to program in C++.&br&&br&学习 C++ 可以经过这么几个阶段。第一是找一本不太「膨胀」的 C++ 教材。基本上掌握 class , overriding, overloading, 最简单的 template (完全不用掌握 partialization )。&br&&br&第二步是好好阅读《 The Design and Evolution of C++ 》。因为有人说过,一门学科的全部就是它的历史。&br&&br&接下来你可以学学编译原理,看看高级动态语言,为第四步做准备。&br&&br&第四步,也就是最最关键的一步。好好看看 C++ FQA (没错,不是 FAQ ,不是 frequently asked question ,而是 frequently questioned answer )。&a href=&///?target=http%3A///c%2B%2Bfqa/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/c++fqa/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 这些揭穿了 C++ 设计者从自身角度文过饰非编写的春秋笔法。《 The Design and Evolution of C++ 》解释了 C++ 为什么是一个怪胎,但是它还是一个怪胎。
精通就不必强求了,live is too short to program in C++.学习 C++ 可以经过这么几个阶段。第一是找一本不太「膨胀」的 C++ 教材。基本上掌握 class , overriding, overloading, 最简单的 template (完全不用掌握 partialization )。第二步是好好阅读《 T…
其实很少逛知乎,今天被同事在QQ上邀请,作为一个工作十年的一个死写界面的程序员,我想我应该还是有些可以分享的。当然,有很多观点或许和我经历的时代有关,现在的程序员不见得百分之百适合,姑且当作抛砖引玉吧。&br&&br&从0开始学GUI编程,但是不用库,这件事本身是个伪命题。GUI编程是个复杂的知识体系,并不像大多数人想像中那么简单。所以如果题主真的想对Win32下(我猜的)的GUI编程有比较深刻的理解,建议还是从使用库开始。&br&&br&先简单的说下,一个能用的界面程序员需要储备哪些知识:&br&1.各种系统内置控件的使用方法及特性&br&2.界面相关的消息机制。比如Windows下的消息循环,iOS中的RunLoop机制等&br&3.消息及事件派发机制&br&4.简单的绘图方法&br&&br&优秀的界面程序员需要具备的进阶技能包括但不限于:&br&1.熟悉进程、线程调度机制,各种内核对象的应用&br&2.基本的图形学和图像处理技能,位图基础&br&3.图像编辑工具的使用,熟练使用PhotoShop、AI、mspaint等至少一种&br&4.有过多个平台的界面开发经验&br&&br&回到题目,从0开始,当然先要成为能用的界面程序员。熟悉系统内置控件的最佳方式莫过于使用各种成熟framework来实现需求。至于是MFC还是WTL还是别的什么,倒不是什么大不了的事。&br&&br&还是简单说下MFC和WTL(ATL)的区别。以前经常会看到有人说MFC如何如何渣,如何如何误导观众,其实这也是一个误解。&br&MFC&br&优点:易上手,对于界面订制不高的需求更容易做到快速实现&br&缺点:不够灵活,效率略低,运行库体积较大且版本太多&br&WTL(ATL)&br&优点:灵活,代码执行效率高(其实就是Win32 API的简单封装,当然快),运行库小,老版本甚至有个minicrt版本,一个简单的helloworld只有80k且不依赖任何运行库&br&缺点:封装的不够完全,很多功能需要自己实现;细节暴露太多,控制能力较差的程序员很容易把代码写的乱七八糟;WTL的支持者大多对范型这种东西有着阶段性盲目崇拜(顺便怀念一下当年那青葱的自己_(:зゝ∠)_)&br&&br&OK,我的意图已经很明显了,如果完全没有基础,先看看MFC吧。如果能够做到熟练运用(如果悟性好,这个时间段可以非常非常短,所以不要着急),并且开始接触Win32原生API,再开始试着用下WTL,你顿时会发现世界美妙多了。&br&&br&当你已经可以熟练使用框架进行界面开发之后,就可以开始探讨一些原理性质的东西了,这个时候可以试着读一下界面框架的源代码,然后你就能了解为什么同样是API封装,不同的框架使用起来会有那么多的区别。&br&&br&举个例子,比如消息机制,以上两个框架的消息循环封装都写的非常漂亮,MFC的消息注册机制、WTL的thunk机制,都是非常值得一读的。&br&&br&如果你已经走到这一步,恭喜你,你已经是个不错的界面程序员了,如果这个时候你仍然觉得自己非常喜欢写界面,你就有机会成为一个很优秀的界面程序员。那么,接下来会发生些什么呢?&br&&br&1.你会嫌弃各种系统控件,什么都想自己画。你手上会有一套常用的自绘控件代码&br&2.你会开始崇拜DirectUI,对spy++抓不到的窗口怀有深深的敬意&br&3.你开始尝试自己写一个简单的界面库&br&4.你会后悔高中没学好解析几何,大学没学好线性代数&br&5.觉得写界面的程序员好不受重视啊,要不要也去做几个牛逼的功能?&br&&br&于是那年我辞职出去创业了,为了公司的产品,我花了一个多星期写了bkwin的原型,基于WTL实现了一套基本的DirectUI体系,用XML描述界面布局,并实现了一个RelativeLayout和一个FrameLayout(以至于一年后当我看到AndroidSDK里描述界面的方法时,各种即视感,然后感慨自己道行尚浅)。后来又断断续续的增加了一些复杂控件实现,以及缓存优化、换肤支持等等。现在这个库的早期版本已经被公司开源,并且应用在有上亿用户量的产品中。(好久没得瑟了,一下没忍住 ?▽`)&br&&br&越往后写,越发现自己知识的匮乏。当GDI+解码PNG的效率成为瓶颈的时候,我开始学习自己处理DIB;当C++代码处理DIB的效率已经不能再提升的时候,我开始看SSE的流水线指令...当我觉得我已经实在改不动的时候,有幸读到了WebKit的代码,被WebCore彻底击溃;然后我转行做了iOS程序员,于是三观又被毁了...&br&&br&话题扯的有点远,其实我的根本意思还是想说,学无止境,既然打算从0开始,就认认真真打好基础,每向前多走一步,都要夯实,尝试去了解一些原理性的东西,不能浅尝辄止。&b&&u&不求甚解是成为一个优秀程序员的大忌讳&/u&&/b&。&br&&br&最后推荐两本书:《Windows核心编程》、《Windows图形编程》,其中《Windows图形编程》早已绝版,不过网上可以买到影印版的,非常值得细读。希望题主以后有机会成为一个牛逼的界面程序员。
其实很少逛知乎,今天被同事在QQ上邀请,作为一个工作十年的一个死写界面的程序员,我想我应该还是有些可以分享的。当然,有很多观点或许和我经历的时代有关,现在的程序员不见得百分之百适合,姑且当作抛砖引玉吧。从0开始学GUI编程,但是不用库,这件事本…
关于前端攻城师的价值体现,我觉得主要取决于下面几个方面:&br&&br&1.与用户最近,最愿意揣测用户,是工程师中最了解用户的&br&&br&2.前端充满创新&br&&br&3.前端技能javascript、html、css....入门易,深入难&br&&br&4.前后端交互方式多样,适用场景不同,Ajax(Post、Get)、Comet(轮训、长轮训、永久帧、XHR流)、WebSocket&br&&br&5.随之浏览器的发展,很多技术方案开始偏向于前端&br&&br&6.前端不仅仅是desktop,而有mobile、pad、tv......
关于前端攻城师的价值体现,我觉得主要取决于下面几个方面:1.与用户最近,最愿意揣测用户,是工程师中最了解用户的2.前端充满创新3.前端技能javascript、html、css....入门易,深入难4.前后端交互方式多样,适用场景不同,Ajax(Post、Get)、Comet(轮训…
简单说两句吧,&a href=&///?target=http%3A//famo.us& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&famo.us&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 在浏览器的原生 API 基础上,自己实现了一套 scene graph + layout + physics + animation 系统,用来规避原生 DOM 缓慢的 reflow,同时可以用 CSS3 transform 或者 WebGL 来渲染。它肯定是有自己的优势用例的,因为有些非传统的 UI,尤其是涉及 3D 的,用 html 的思维来做比较痛苦,用 scene graph 来描述更合理一些。但我个人并不看好其长远发展。&br&&br&第一,其本身是一个创业公司,整套技术体系又和现有的生态几乎完全不兼容,选择它对于商业公司来说,风险很大。&br&&br&第二,UI 毕竟是 UI,好用才是关键,有多少 UI 真的需要 fancy 的 3D 效果呢?HTML+CSS 在描述较为传统的 UI 的时候还是一套很合理的模型,真正适合 &a href=&///?target=http%3A//famo.us& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&famo.us&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 的用例其实只是一小部分,但它对自己的定位却是要取代传统的 web UI 开发。至于移动应用,真的要 fancy 为何不原生开发?&br&&br&第三,&a href=&///?target=http%3A//famo.us& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&famo.us&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 本身能做的,其实不用它也都能实现。比如元素周期表的那个 demo,我自己也实现过一个:&a href=&///?target=http%3A//sketch.evanyou.me/matrix/examples/periodic_table.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Periodic talbe example&i class=&icon-external&&&/i&&/a& 这家公司 CEO 当初宣传的时候牛皮吹得很大,放出几个 demo 之后,又故弄玄虚不肯说背后的实现原理,直到今年早些时候才扭扭捏捏开源,给我印象很不好。
简单说两句吧, 在浏览器的原生 API 基础上,自己实现了一套 scene graph + layout + physics + animation 系统,用来规避原生 DOM 缓慢的 reflow,同时可以用 CSS3 transform 或者 WebGL 来渲染。它肯定是有自己的优势用例的,因为有…
不问情由,就把结果归咎于 KPI,是非常不专业的做法,对讨论、对解决问题,都没有帮助。在解释 KMD 之前,需要先说明一下 KISSY 与 YUI 的血缘关系。&br&&br&dr KMD 与 CMD 语法大同小异,关心 KISSY 的同学不妨看看 &a href=&///?target=https%3A///kissyteam/modulex& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&kissyteam/modulex · GitHub&i class=&icon-external&&&/i&&/a&;KMD 的语法有历史包袱;两套 loader(其实还有更多)是因为大家都很强,并且 loader 并不复杂,但是殊途同归,融合是大趋势。&br&&br&KISSY 于 2011 年前后开源, &a data-hash=&cd86bc9090bed90757a34c& href=&///people/cd86bc9090bed90757a34c& class=&member_mention& data-editable=&true& data-title=&@玉伯& data-tip=&p$b$cd86bc9090bed90757a34c&&@玉伯&/a& 做的,当时淘系主要使用 YUI,并且对 jQuery 不是很提倡,所以 KISSY 的诸多做法与 YUI 相近也就不难理解了。最明显的,就是 YUI 提倡的模块化:&br&&div class=&highlight&&&pre&&code class=&language-js&&&span class=&c1&&// YUI - 编写模块&/span&
&span class=&nx&&YUI&/span&&span class=&p&&.&/span&&span class=&nx&&add&/span&&span class=&p&&(&/span&&span class=&s1&&'dom'&/span&&span class=&p&&,&/span& &span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&Y&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&kd&&var&/span& &span class=&nx&&DOM&/span& &span class=&o&&=&/span& &span class=&nx&&Y&/span&&span class=&p&&.&/span&&span class=&nx&&DOM&/span& &span class=&o&&=&/span& &span class=&p&&{&/span& &span class=&p&&...&/span& &span class=&p&&}&/span&
&span class=&p&&})&/span&
&span class=&c1&&// YUI - 使用模块&/span&
&span class=&nx&&YUI&/span&&span class=&p&&().&/span&&span class=&nx&&use&/span&&span class=&p&&(&/span&&span class=&s1&&'dom'&/span&&span class=&p&&,&/span& &span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&Y&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&kd&&var&/span& &span class=&nx&&DOM&/span& &span class=&o&&=&/span& &span class=&nx&&Y&/span&&span class=&p&&.&/span&&span class=&nx&&DOM&/span&
&span class=&p&&})&/span&
&span class=&c1&&// KISSY - 编写模块&/span&
&span class=&nx&&KISSY&/span&&span class=&p&&.&/span&&span class=&nx&&add&/span&&span class=&p&&(&/span&&span class=&s1&&'dom'&/span&&span class=&p&&,&/span& &span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&S&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&kd&&var&/span& &span class=&nx&&DOM&/span& &span class=&o&&=&/span& &span class=&nx&&S&/span&&span class=&p&&.&/span&&span class=&nx&&DOM&/span& &span class=&o&&=&/span& &span class=&p&&{&/span& &span class=&p&&...&/span& &span class=&p&&}&/span&
&span class=&p&&})&/span&
&span class=&c1&&// KISSY - 使用模块&/span&
&span class=&nx&&KISSY&/span&&span class=&p&&.&/span&&span class=&nx&&use&/span&&span class=&p&&(&/span&&span class=&s1&&'dom'&/span&&span class=&p&&,&/span& &span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&S&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&kd&&var&/span& &span class=&nx&&DOM&/span& &span class=&o&&=&/span& &span class=&nx&&S&/span&&span class=&p&&.&/span&&span class=&nx&&DOM&/span&
&span class=&p&&})&/span&
&/code&&/pre&&/div&唯一的区别是在使用时 YUI 需要执行自身以获取实例,KISSY 则是全局对象。&br&&br&因为这种模块编写方式在开发的时候就要求具名,所以在开发时,可以直接同步引入:&br&&div class=&highlight&&&pre&&code class=&language-html&&&span class=&nt&&&script &/span&&span class=&na&&src=&/span&&span class=&s&&&/path/to/yui-min.js&&/span&&span class=&nt&&&&/script&&/span&
&span class=&nt&&&script &/span&&span class=&na&&src=&/span&&span class=&s&&&/path/to/my/module1.js&&/span&&span class=&nt&&&&/script&&/span&
&span class=&nt&&&script &/span&&span class=&na&&src=&/span&&span class=&s&&&/path/to/my/module2.js&&/span&&span class=&nt&&&&/script&&/span&
&span class=&nt&&&script &/span&&span class=&na&&src=&/span&&span class=&s&&&/path/to/my/module3.js&&/span&&span class=&nt&&&&/script&&/span&
&/code&&/pre&&/div&如果想要 YUI、KISSY 异步加载模块,则需要配置:&br&&div class=&highlight&&&pre&&code class=&language-js&&&span class=&nx&&KISSY&/span&&span class=&p&&.&/span&&span class=&nx&&add&/span&&span class=&p&&({&/span&
&span class=&nx&&switchable&/span&&span class=&o&&:&/span&&span class=&p&&{&/span&
&span class=&nx&&fullpath&/span&&span class=&o&&:&/span& &span class=&s1&&'switchable.js?t=201105'&/span&
&span class=&p&&},&/span&
&span class=&nx&&overlay&/span&&span class=&o&&:&/span& &span class=&p&&{&/span&
&span class=&nx&&fullpath&/span&&span class=&o&&:&/span& &span class=&s1&&'overlay.js?t=201105'&/span&
&span class=&p&&}&/span&
&span class=&p&&})&/span&
&/code&&/pre&&/div&&br&但到 KISSY 1.2,承玉将模块化做得更加彻底,并且采用 Convention over configuration 设计,开始使用包配置,而非完整的 fullpath 配置了:&br&&div class=&highlight&&&pre&&code class=&language-js&&&span class=&nx&&KISSY&/span&&span class=&p&&.&/span&&span class=&nx&&config&/span&&span class=&p&&({&/span&
&span class=&nx&&packages&/span&&span class=&o&&:&/span& &span class=&p&&[{&/span&
&span class=&nx&&name&/span&&span class=&o&&:&/span& &span class=&s1&&'my'&/span&&span class=&p&&,&/span&
&span class=&nx&&path&/span&&span class=&o&&:&/span& &span class=&s1&&'./my'&/span&
&span class=&p&&})&/span&
&span class=&p&&})&/span&
&span class=&nx&&KISSY&/span&&span class=&p&&.&/span&&span class=&nx&&add&/span&&span class=&p&&(&/span&&span class=&s1&&'my/module'&/span&&span class=&p&&,&/span& &span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&S&/span&&span class=&p&&,&/span& &span class=&nx&&DOM&/span&&span class=&p&&,&/span& &span class=&nx&&Event&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&c1&&// start authoring my module&/span&
&span class=&p&&},&/span& &span class=&p&&{&/span&
&span class=&nx&&requires&/span&&span class=&o&&:&/span& &span class=&p&&[&/span&&span class=&s1&&'dom'&/span&&span class=&p&&,&/span& &span class=&s1&&'event'&/span&&span class=&p&&,&/span& &span class=&s1&&'./mod.css'&/span&&span class=&p&&]&/span&
&span class=&p&&})&/span&
&span class=&nx&&KISSY&/span&&span class=&p&&.&/span&&span class=&nx&&use&/span&&span class=&p&&(&/span&&span class=&s1&&'my/module'&/span&&span class=&p&&,&/span& &span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&S&/span&&span class=&p&&,&/span& &span class=&nx&&MyModule&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&c1&&// start using MyModule&/span&
&span class=&p&&})&/span&
&/code&&/pre&&/div&&br&也是在 2011 年前后,CommonJS 规范讨论非常热烈,Node.js 中已经开始使用了,很多人开始想象前端脚本的模块化该当如何,其中也包括 &a data-hash=&cd86bc9090bed90757a34c& href=&///people/cd86bc9090bed90757a34c& class=&member_mention& data-editable=&true& data-title=&@玉伯& data-tip=&p$b$cd86bc9090bed90757a34c&&@玉伯&/a& 和我的老板 &a data-hash=&b04c92ce5d38abcc5c7b& href=&///people/b04c92ce5d38abcc5c7b& class=&member_mention& data-editable=&true& data-title=&@李穆& data-tip=&p$b$b04c92ce5d38abcc5c7b&&@李穆&/a&。玉伯做了 SeaJS,李穆做的则叫做 &a href=&///?target=https%3A///thx/kslite& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&thx/kslite · GitHub&i class=&icon-external&&&/i&&/a&。&br&&br&( 更新)增加李穆的评论&br&&blockquote&当年写 kslite 的想法只是想把 yui,kissy 的异步模块化机制提取出来,支撑我们在第三方广告投放和广告创意代码中使用(都要求代码量非常非常小)。kslite 其实是 kissy-lite,最初的想法是 kslite 包可以直接运行在 kissy 的支撑下运行(倒是跟当前模块化大一统的想法比较相近了)。不过那还是10年下半年,那个时候 kissy 的包管理机制并不健全,且如逸才所说在不断的高速发展中(记得彼时是拔赤正在重构),kslite 无意影响 kissy 的方向,所以就渐渐变成独立的 miniloader 了,也用了很多年,反正是够用的。&br&&br&补充一些当年开发 kslite 时的思考和记录,&a href=&///?target=http%3A///blog/840159& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&kissyLite的包管理和无需预先注册的带依赖关系模块异步加载&i class=&icon-external&&&/i&&/a&&a href=&///?target=http%3A///blog/845870& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&如果给JS代码发布正式使用前增加一个编译步骤,我们能做些什么.&i class=&icon-external&&&/i&&/a&&/blockquote&&br&SeaJS 从头开始实现,参考模板则是 RequireJS,中间推广讨论时还有句非常让我印象深刻的话:“RequireJS 没有明显的 bug,而 SeaJS 则明显没有 bug”。敢宣称自己的代码没有任何 bug 的项目自然是非常狂拽酷炫屌炸天的,因此 SeaJS 吸引了非常多的注意力,社区也做得比 KISSY 要好很多。&br&&br&KSLITE 和 SeaJS 的模块编写方式非常像:&br&&div class=&highlight&&&pre&&code class=&language-js&&&span class=&c1&&// KSLITE - 编写模块&/span&
&span class=&nx&&KSLITE&/span&&span class=&p&&.&/span&&span class=&nx&&declare&/span&&span class=&p&&(&/span&&span class=&s1&&'my-module'&/span&&span class=&p&&,&/span& &span class=&p&&[&/span&&span class=&s1&&'dom'&/span&&span class=&p&&,&/span& &span class=&s1&&'event'&/span&&span class=&p&&],&/span& &span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&require&/span&&span class=&p&&,&/span& &span class=&nx&&exports&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&kd&&var&/span& &span class=&nx&&DOM&/span& &span class=&o&&=&/span& &span class=&nx&&require&/span&&span class=&p&&(&/span&&span class=&s1&&'dom'&/span&&span class=&p&&)&/span&
&span class=&kd&&var&/span& &span class=&nx&&Event&/span& &span class=&o&&=&/span& &span class=&nx&&require&/span&&span class=&p&&(&/span&&span class=&s1&&'event'&/span&&span class=&p&&)&/span&
&span class=&nx&&exports&/span&&span class=&p&&.&/span&&span class=&nx&&foo&/span& &span class=&o&&=&/span& &span class=&kd&&function&/span&&span class=&p&&()&/span& &span class=&p&&{}&/span&
&span class=&p&&})&/span&
&span class=&c1&&// KSLITE - 使用模块&/span&
&span class=&nx&&KSLITE&/span&&span class=&p&&.&/span&&span class=&nx&&provide&/span&&span class=&p&&([&/span&&span class=&s1&&'my-module'&/span&&span class=&p&&],&/span& &span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&require&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&nx&&require&/span&&span class=&p&&(&/span&&span class=&s1&&'my-module'&/span&&span class=&p&&).&/span&&span class=&nx&&foo&/span&&span class=&p&&()&/span&
&span class=&p&&})&/span&
&span class=&c1&&// SeaJS - 编写模块&/span&
&span class=&nx&&define&/span&&span class=&p&&(&/span&&span class=&s1&&'my/module'&/span&&span class=&p&&,&/span& &span class=&p&&[&/span&&span class=&s1&&'dom'&/span&&span class=&p&&,&/span& &span class=&s1&&'event'&/span&&span class=&p&&],&/span& &span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&require&/span&&span class=&p&&,&/span& &span class=&nx&&exports&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&c1&&// ...&/span&
&span class=&p&&})&/span&
&span class=&c1&&// SeaJS - 匿名模块,根据文件名推导模块名&/span&
&span class=&nx&&define&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&require&/span&&span class=&p&&,&/span& &span class=&nx&&exports&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&c1&&// ...&/span&
&span class=&p&&})&/span&
&span class=&c1&&// SeaJS - 使用模块&/span&
&span class=&nx&&seajs&/span&&span class=&p&&.&/span&&span class=&nx&&use&/span&&span class=&p&&(&/span&&span class=&s1&&'my/module'&/span&&span class=&p&&,&/span& &span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&MyModule&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&c1&&// ...&/span&
&span class=&p&&})&/span&
&/code&&/pre&&/div&&br&然后时光飞逝,KISSY 和 SeaJS 其实越来越像了,在今天,在 KISSY 里你可以这么写模块:&br&&div class=&highlight&&&pre&&code class=&language-js&&&span class=&nx&&KISSY&/span&&span class=&p&&.&/span&&span class=&nx&&add&/span&&span class=&p&&(&/span&&span class=&s1&&'my/module'&/span&&span class=&p&&,&/span& &span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&S&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&kd&&var&/span& &span class=&nx&&require&/span& &span class=&o&&=&/span& &span class=&nx&&S&/span&&span class=&p&&.&/span&&span class=&nx&&bind&/span&&span class=&p&&(&/span&&span class=&k&&this&/span&&span class=&p&&.&/span&&span class=&nx&&require&/span&&span class=&p&&,&/span& &span class=&k&&this&/span&&span class=&p&&)&/span&
&span class=&kd&&var&/span& &span class=&nx&&exports&/span& &span class=&o&&=&/span& &span class=&k&&this&/span&&span class=&p&&.&/span&&span class=&nx&&exports&/span&
&span class=&kd&&var&/span& &span class=&nx&&module&/span& &span class=&o&&=&/span& &span class=&k&&this&/span&
&span class=&kd&&var&/span& &span class=&nx&&DOM&/span& &span class=&o&&=&/span& &span class=&nx&&require&/span&&span class=&p&&(&/span&&span class=&s1&&'dom'&/span&&span class=&p&&)&/span&
&span class=&kd&&var&/span& &span class=&nx&&other&/span& &span class=&o&&=&/span& &span class=&nx&&require&/span&&span class=&p&&(&/span&&span class=&s1&&'./other'&/span&&span class=&p&&)&/span&
&span class=&nx&&module&/span&&span class=&p&&.&/span&&span class=&nx&&exports&/span& &span class=&o&&=&/span& &span class=&kd&&function&/span&&span class=&p&&()&/span& &span class=&p&&{}&/span&
&span class=&p&&})&/span&
&span class=&c1&&// 甚至还可以这么写:&/span&
&span class=&kd&&var&/span& &span class=&nx&&define&/span& &span class=&o&&=&/span& &span class=&nx&&modulex&/span&&span class=&p&&.&/span&&span class=&nx&&add&/span&
&span class=&nx&&define&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&require&/span&&span class=&p&&,&/span& &span class=&nx&&exports&/span&&span class=&p&&,&/span& &span class=&nx&&module&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&c1&&// ...&/span&
&span class=&p&&})&/span&
&/code&&/pre&&/div&&br&然后解释问题中的“为什么”。因为实现一套前端模块加载器的成本太低了,本质上它们都源自一个想法:&br&&blockquote&把模块代码放到匿名函数中,异步加载、异步执行。&/blockquote&剩下的不过是语法上的各有所好、细节上的各有解释而已。而在 Node.js 里就没有这个困扰,因为要写一个模块,你只需要直接写就是了,require、exports、module 是内建变量(注意它们仍然不是类似 function 这样的关键字,你仍然可以覆盖它们),不需要像 SeaJS 因为要实现依赖解析还特地要求使用者注意,写匿名模块的时候不要写错 require。&br&&br&于此同时,对前端模块来说,去掉这层 module authoring anonymous function 是大势所趋,我们看到 &a href=&///?target=http%3A//spmjs.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&spmjs&i class=&icon-external&&&/i&&/a& 已经去掉了,我们还看到 TJ 的 component.io、substack 的 browserify,其实鄙人也有一个让前端也可以 Node.js 形式编写模块、直接使用 NPM 管理模块依赖的小工具,只是仍在藏拙,偷偷打磨中。&br&&br&参考链接:&br&&ol&&li&&a href=&///?target=https%3A///file/d/0ByDnKtTixzA4ZDlhYmRmMDItNDljOS00ZTU1LTg2ZDgtOTVjNjc0NzE1NTQx/edit%3Fhl%3Den& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/file/d/&/span&&span class=&invisible&&0ByDnKtTixzA4ZDlhYmRmMDItNDljOS00ZTU1LTg2ZDgtOTVjNjc0NzE1NTQx/edit?hl=en&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&///?target=http%3A///yui/docs/yui/create.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Creating YUI Modules&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&///?target=http%3A///1.2/docs/html/api/seed/loader/add.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&add — KISSY v1.2 Documentation&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&///?target=https%3A///kissyteam/modulex& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&kissyteam/modulex · GitHub&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&///?target=http%3A//spmjs.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&spmjs&i class=&icon-external&&&/i&&/a&&/li&&/ol&
不问情由,就把结果归咎于 KPI,是非常不专业的做法,对讨论、对解决问题,都没有帮助。在解释 KMD 之前,需要先说明一下 KISSY 与 YUI 的血缘关系。dr KMD 与 CMD 语法大同小异,关心 KISSY 的同学不妨看看 ;KMD 的语法有…
首先我们要看一下选择器的「解析」是在何时进行的。&br&&br&主要参考这篇「 How browsers work」(&a href=&///?target=http%3A///Projects/howbrowserswork1.htm& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/Project&/span&&span class=&invisible&&s/howbrowserswork1.htm&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)来看,浏览器渲染的过程以 WebKit 为例大致如下:&br&&img src=&/b2b7c07bd7f5af231cdeaa0c_b.jpg& data-rawwidth=&624& data-rawheight=&289& class=&origin_image zh-lightbox-thumb& width=&624& data-original=&/b2b7c07bd7f5af231cdeaa0c_r.jpg&&HTML 经过解析生成 DOM Tree(这个我们比较熟悉);而在 CSS 解析完毕后,需要将解析的结果与 DOM Tree 的内容一起进行分析建立一棵 Render Tree,最终用来进行绘图。Render Tree 中的元素(WebKit 中称为「renderers」,Firefox 下为「frames」)与 DOM 元素相对应,但非一一对应:一个 DOM 元素可能会对应多个 renderer,如文本折行后,不同的「行」会成为 render tree 种不同的 renderer。也有的 DOM 元素被 Render Tree 完全无视,比如 display:none 的元素。&br&&br&在建立 Render Tree 时(WebKit 中的「Attachment」过程),浏览器就要为每个 DOM Tree 中的元素根据 CSS 的解析结果(Style Rules)来确定生成怎样的 renderer。对于每个 DOM 元素,必须在所有 Style Rules 中找到符合的 selector 并将对应的规则进行合并。选择器的「解析」实际是在这里执行的,在遍历 DOM Tree 时,从 Style Rules 中去寻找对应的 selector。&br&&br&因为所有样式规则可能数量很大,而且绝大多数不会匹配到当前的 DOM 元素(因为数量很大所以一般会建立规则索引树),所以有一个快速的方法来判断「&b&这个 selector 不匹配当前元素&/b&」就是极其重要的。&br&&br&如果正向解析,例如「div div p em」,我们首先就要检查当前元素到 html 的整条路径,找到最上层的 div,再往下找,如果遇到不匹配就必须回到最上层那个 div,往下再去匹配选择器中的第一个 div,&b&回溯&/b&若干次才能确定匹配与否,效率很低。&br&&br&逆向匹配则不同,如果当前的 DOM 元素是 div,而不是 selector 最后的 em,那只要&b&一步&/b&就能排除。只有在匹配时,才会不断向上找父节点进行验证。&br&&br&但因为匹配的情况远远低于不匹配的情况,所以逆向匹配带来的优势是巨大的。同时我们也能够看出,在选择器结尾加上「*」就大大降低了这种优势,这也就是很多优化原则提到的尽量避免在选择器末尾添加通配符的原因。&br&&br&现学现卖,如有理解错误欢迎指正。
首先我们要看一下选择器的「解析」是在何时进行的。主要参考这篇「 How browsers work」()来看,浏览器渲染的过程以 WebKit 为例大致如下:HTML 经过解析生成 DOM Tree(这个我们比较熟悉);而在 CSS 解析完毕后,需要将解析的结果…
看了题主的题目跟描述貌似问题的目的不一致呀&br&&br&光从题目来说, vim 确实可以配置到跟 IDE 相似的功能:&br&&br&&ul&&li&语法检查&br&&/li&&li&自动补全&br&&/li&&li&文件浏览&br&&/li&&li&执行命令行命令&br&&/li&&li&key mapping&/li&&li&还有各种各样的插件这里就不啰嗦了。。。&/li&&/ul&&br&而看题主的题目描述的意思却是想要提高自己 vim 的熟练度。&br&&br&最近工作的原因,从 sublime 跳到 vim 玩了。之前也就会 insert 和 ctrl + c 而已。练了 2、3 天就很熟悉了。主要是强制自己不使用鼠标,强制自己只使用 vim 来编码。&br&&br&可以参考一些童鞋的 vimrc 配置,最主要是看懂,然后根据自己的喜欢来配置。我觉得自己的配置还是比较简单,适合参考,列出来跟题主参考下(也是从别人那里学来然后自己配置,现在已经很熟练了):&a href=&///?target=https%3A//bitbucket.org/shonenada/dotfiles/src/acc335c399b10cd56e/vimrc/vimrc%3Fat%3Dmaster& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&shonenada / dotfiles
/ vimrc / vimrc&i class=&icon-external&&&/i&&/a&&br&&br&最后送题主几句话:&br&vim 是需要慢慢学习的,不要盲目做“强大”的配置,强大的配置需要更强大的能力来 handle 。:) good luck。
看了题主的题目跟描述貌似问题的目的不一致呀光从题目来说, vim 确实可以配置到跟 IDE 相似的功能:语法检查自动补全文件浏览执行命令行命令key mapping还有各种各样的插件这里就不啰嗦了。。。而看题主的题目描述的意思却是想要提高自己 vim 的熟练度。最…
根据需求,找最合适的。在linux上,我将vim打造成了一个ide(近似)。&br&可参考链接 &a href=&///?target=https%3A///jqlblue/php-vim& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/jqlblue/php-&/span&&span class=&invisible&&vim&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&如果是通过xshell等工具远程连接到开发机上开发,可以使用这个&br&&a href=&///?target=https%3A///jqlblue/php-vim/tree/php-vim-cli& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/jqlblue/php-&/span&&span class=&invisible&&vim/tree/php-vim-cli&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&clone一份后,只要替换 /usr/share/vim/vimfiles就可以了
根据需求,找最合适的。在linux上,我将vim打造成了一个ide(近似)。可参考链接 如果是通过xshell等工具远程连接到开发机上开发,可以使用这个clone一份后,只要替换 /usr/share/vim/vimfiles就可以了
&p&先copy一段网上现成的知识:&/p&&p&&b&JavaScript&/b&&b&引擎是单线程运行的&/b&&b&,&/b&&b&浏览器无论在什么时候都只且只有一个线程在运行&/b&&b&JavaScript&/b&&b&程序&/b&&/p&&p&一、浏览器的内核是多线程的,它们在内核制控下相互配合以保持同步,一个浏览器至少实现三个常驻线程:javascript引擎线程,GUI渲染线程,浏览器事件触发线程。&/p&&p&1.
javascript引擎是基于事件驱动单线程执行的,JS引擎一直等待着任务队列中任务的到来,然后加以处理,浏览器无论什么时候都只有一个JS线程在运行JS程序。&/p&&p&2.
GUI渲染线程负责渲染浏览器界面,当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行。但需要注意 GUI渲染线程与JS引擎是互斥的,当JS引擎执行时GUI线程会被挂起,GUI更新会被保存在一个队列中等到JS引擎空闲时立即被执行。&/p&&p&3.
事件触发线程,当一个事件被触发时该线程会把事件添加到待处理队列的队尾,等待JS引擎的处理。这些事件可来自JavaScript引擎当前执行的代码块如setTimeOut、也可来自浏览器内核的其他线程如鼠标点击、AJAX异步请求等,但由于JS的单线程关系所有这些事件都得排队等待JS引擎处理。(当线程中没有执行任何同步代码的前提下才会执行异步代码)&/p&&p&看下这段代码,setTimeout是异步线程,需要等待js引擎处理完同步代码(while语句)之后才会执行,while语句直接是个死循环,js引擎没有空闲,不会执行下面的alert,也不会插入setTimeout。所以即使这个时候你把setTimeout的时间改成0,他还是不会执行。看下实例:&/p&&p&setTimeout(function(){
console.log(123); var s = new Date(); var n = s.getTime(); console.log(n); },0)
&/p&&p&for (var i = 0;
i & 50; i++) { console.log(new Date().getTime()); };&/p&&p&执行结果如下:&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&0 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&5 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:9&i class=&icon-external&&&/i&&/a&&/p&&p&undefined&/p&&p&123 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dbottom%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM257:3&i class=&icon-external&&&/i&&/a&&/p&&p&5 &/p&&p&也就是说即使setTimeout为0,他也是等js引擎的代码执行完之后才会插入到js引擎线程的最后执行。&/p&&p&在看一下如果有多个异步插入线程的情况:&/p&&p&setTimeout(function(){&/p&&p&
console.log(1);&/p&&p&
var s = new Date();&/p&&p&
var n = s.getMilliseconds();&/p&&p&
var t = s.getTime();&/p&&p&
console.log(n);&/p&&p&
console.log(t);&/p&&p&
console.log(1);&/p&&p&},1000)&/p&&p&setTimeout(function(){&/p&&p&
console.log(2);&/p&&p&
var s = new Date();&/p&&p&
var n = s.getMilliseconds();&/p&&p&
var t = s.getTime();&/p&&p&
console.log(n);&/p&&p&
console.log(t);&/p&&p&
console.log(2);&/p&&p&},500)&/p&&p&setTimeout(function(){&/p&&p&
console.log(3);&/p&&p&
var s = new Date();&/p&&p&
var n = s.getMilliseconds();&/p&&p&
var t = s.getTime();&/p&&p&
console.log(n);&/p&&p&
console.log(t);&/p&&p&
console.log(3);&/p&&p&},0)&/p&&p&for (var i = 0;
i & 1000; i++) {&/p&&p&
if(i == 0){&/p&&p&
console.log(new Date().getTime());&/p&&p&
console.log(new Date().getMilliseconds());&/p&&p&
if(i == 999){&/p&&p&
console.log(new Date().getTime());&/p&&p&
}&/p&&p&};&/p&&p&3 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:31&i class=&icon-external&&&/i&&/a&&/p&&p&&b&43&/b&633 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:33&i class=&icon-external&&&/i&&/a&&/p&&p&&b&125&/b&648 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:33&i class=&icon-external&&&/i&&/a&&/p&&p&&b&135&/b&664 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:33&i class=&icon-external&&&/i&&/a&&/p&&p&&b&314&/b&679 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:33&i class=&icon-external&&&/i&&/a&&/p&&p&&b&293&/b&695 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:33&i class=&icon-external&&&/i&&/a&&/p&&p&&b&90&/b&711 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:33&i class=&icon-external&&&/i&&/a&&/p&&p&1 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:35&i class=&icon-external&&&/i&&/a&&/p&&p&undefined&/p&&p&3 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:21&i class=&icon-external&&&/i&&/a&&/p&&p&711 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:25&i class=&icon-external&&&/i&&/a&&/p&&p&1 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:26&i class=&icon-external&&&/i&&/a&&/p&&p&3 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:27&i class=&icon-external&&&/i&&/a&&/p&&p&2 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:12&i class=&icon-external&&&/i&&/a&&/p&&p&132 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:16&i class=&icon-external&&&/i&&/a&&/p&&p&2 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:17&i class=&icon-external&&&/i&&/a&&/p&&p&2 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:18&i class=&icon-external&&&/i&&/a&&/p&&p&1 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:3&i class=&icon-external&&&/i&&/a&&/p&&p&631 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:7&i class=&icon-external&&&/i&&/a&&/p&&p&1 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:8&i class=&icon-external&&&/i&&/a&&/p&&p&1 &a href=&///?target=chrome-devtools%3A//devtools/bundled/devtools.html%3FdockSide%3Dright%26toolbarColor%3Drgba%%2C223%2C1%29%26textColor%3Drgba%280%2C0%2C0%2C1%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VM655:9&i class=&icon-external&&&/i&&/a&&/p&&p&1-3&/p&&p&78&/p&&p&3+500&/p&&p&3&/p&&p&3+1000&/p&&p&3&/p&&p&在for循环中执行了1000次打印,时间到1,setTimeout时间为0的开始执行,过了498毫秒,setTimeout为500的开始执行,再过998毫秒,setTimeout为1000的开始执行。为什么会差2毫秒,我也没搞懂。&/p&
先copy一段网上现成的知识:JavaScript引擎是单线程运行的,浏览器无论在什么时候都只且只有一个线程在运行JavaScript程序一、浏览器的内核是多线程的,它们在内核制控下相互配合以保持同步,一个浏览器至少实现三个常驻线程:javascript引擎线程,GUI渲染线…
确实是死循环导致setTimeout不执行,也导致alert不执行。&br&js是单线程是对的,所以会先执行while(t){}再alert,但这个循环体是死循环,所以永远不会执行alert。&br&至于说为什么不执行setTimeout,是因为js的工作机制是:当线程中没有执行任何同步代码的前提下才会执行异步代码,setTimeout是异步代码,所以setTimeout只能等js空闲才会执行,但死循环是永远不会空闲的,所以setTimeout也永远不会执行。
确实是死循环导致setTimeout不执行,也导致alert不执行。js是单线程是对的,所以会先执行while(t){}再alert,但这个循环体是死循环,所以永远不会执行alert。至于说为什么不执行setTimeout,是因为js的工作机制是:当线程中没有执行任何同步代码的前提下才…
楼上哥们提供了不少基础知识。但setTimeout(f,0)的作用很简单,就是为了把f放到运行队列的最后去执行。也就是说,无论setTimeout(f,0)写在哪,都可以保证在队列的最后执行。js解析器会把setTimeout(f,0)里的f压到队列的最后,因为它是异步操作。
楼上哥们提供了不少基础知识。但setTimeout(f,0)的作用很简单,就是为了把f放到运行队列的最后去执行。也就是说,无论setTimeout(f,0)写在哪,都可以保证在队列的最后执行。js解析器会把setTimeout(f,0)里的f压到队列的最后,因为它是异步操作。
&b&1、空函数的作用&/b&&br&事实上这个空函数没有任何特殊作用,作者一开始想表达的意思是类似下面这样的:&br&var offloadFn = function(fn) { setTimeout(fn, 0) }; &br&&br&但是 fn 传递进来是 undefined、null 怎么办?我们可以加个判断语句:&br&var offloadFn = function(fn) { if (!fn) setTimeout(fn, 0) }; &br&&br&但是有些程序员会觉得这样逻辑上不够优雅,于是就有了下面的写法:&br&var noop = function() {};&br&var offloadFn = function(fn) { setTimeout(fn || noop, 0) };&br&&br&也就是定义了一个默认的空函数 noop,当 fn 没有给出的时候,就执行默认的空函数,啥也不干。&br&&br&当然上述哪种写法好,就仁者见仁智者见智了。&br&&br&&b&2、setTimeout(0) 的作用&/b&&br&setTimeout() 函数看起来挺神奇,时间间隔可以随意写。其实不然。这个函数的精度是非常有限的。例如当你写为 setTimeout(0) 的时候,它不可能是立刻执行。比较老的浏览器大概需要 16ms 后才能执行,现在的 Chrome 浏览器之类的可以在 4ms 甚至更短的时间后执行。但是无论多短,都不可能是 0。&br&&br&所以,当我们写为 setTimeout(0) 的时候,实际是要求浏览器“尽可能快”的进行回调,但是实际能多快就完全取决于浏览器的能力了。&br&&br&其实现代浏览器还提供了另外一个 setTimeout(0) 的替代品,那就是 setImmediate() 但是如果考虑向下兼容,还是会用 setTimeout(0)&br&&br&可能有的朋友会奇怪,既然要立刻执行,何必画蛇添足 setTimeout(0) 呢?直接调用就行了嘛。简单的来说,这样做是为了能够异步执行。更详细的情况,可以搜索一下,有大量的相关讨论。
1、空函数的作用事实上这个空函数没有任何特殊作用,作者一开始想表达的意思是类似下面这样的:var offloadFn = function(fn) { setTimeout(fn, 0) }; 但是 fn 传递进来是 undefined、null 怎么办?我们可以加个判断语句:var offloadFn = function(fn) { i…
密码我是这么干的。&br&1.先自己选择一串n个数字的序列,把它记住。&br&2.把网站的域名换算成ASCII码的数字,然后填入n×n的矩阵中,如果长度不够,就从头开始继续填充,直到矩阵填满。&br&3.自己设置一个的二阶数组,数组中随便填入大小写字母,数字,下划线,特殊字符等。&br&4.将长度n的序列和n×n的矩阵相乘,得到新的长度n的序列。&br&5.将序列中每个数字对数组的长度取模,取模后再取出数组中对应的字符。将n个字符连接起来就得到了一串密码。&br&————————————————&br&序列n越大,对应矩阵阶数越大,破解难度越大,而且由于矩阵是随网址变化的,所以每个网站的密码都不一样。&br&将最后取字符的数组设置得大一点,比如10×10。&br&————————————————&br&不过生成的密码太复杂,记不住。只要记住数字序列,写成程序后每次登陆的时候计算一下密码就行。在别人电脑上登陆是个问题,所以我只好把程序放在云端,暂时没有好的办法。
密码我是这么干的。1.先自己选择一串n个数字的序列,把它记住。2.把网站的域名换算成ASCII码的数字,然后填入n×n的矩阵中,如果长度不够,就从头开始继续填充,直到矩阵填满。3.自己设置一个的二阶数组,数组中随便填入大小写字母,数字,下划线,特殊字符…
已有帐号?
无法登录?
社交帐号登录
236 人关注
194 个回答
410 人关注
433 人关注
592 个回答
9514 人关注
669 个回答

我要回帖

更多关于 php 自定义server变量 的文章

 

随机推荐