摘要: 说明写这个主要是为了锻炼自己,并无实际意义。每个浏览器测试得出的数据会不一样。比如我用chrome 测试 一般快速排序都会最快,IE 则根据数组长度有可能希尔最快。不要用太大数据去测试冒泡排序(浏览器崩溃了我不管)如果有兴趣可以 在线排序动画 下载测试页面个人理解冒泡排序:最简单,也最慢,貌似长度小于7最优插入排序:比冒泡快,比快速排序和希尔排序慢,较小数据有优势快速排序:这是一个非常快的排序方式,V8的sort方法就使用快速排序和插入排序的结合希尔排序:在非chrome下数组长度小于1000,希尔排序比快速更快系统方法:在forfox下系统的这个方法非常快// ---------- 一些排序阅读全文
posted @ 2011-02-16 19:56 Jun.lu 阅读(48940) 评论(9) 编辑
摘要: 第一个版本:http://www.cnblogs.com/idche/archive/2010/09/17/ljtips.html第二个版本:http://www.cnblogs.com/idche/archive/2010/12/17/1909490.html下载链接Stip说明。 Stip是一个简单的提示组建,我期望它可以把表单验证变得简单。 简单,小巧,灵活。演示地址:http://jun-lu.github.com/Stip/doc/index.html3.0 更新说明 1: 添加静态Stip.config.conteng配置,这里你可以全局配置它成为...阅读全文
posted @ 2011-01-24 11:11 Jun.lu 阅读(847) 评论(1) 编辑
摘要: /**良哥的*/function merge(a, b) { var aLen = a.length, bLen = b.length, maxLen = Math.max(aLen, bLen), sumLen = aLen + bLen, result = [], ap = 0, bp = 0; while (result.length b[bp]){ result.push(b[bp++]); } else { ...阅读全文
posted @ 2013-09-05 09:31 Jun.lu 阅读(997) 评论(0) 编辑
摘要: CORS(跨来源资源共享协议),高级浏览器(Chrome,firefox, opera, safir, ie10)在 XMLHttpRequest(AJAX) 中已经支持了这个协议。可以实现ajax跨域访问。(其实IE8也实现了,只不过是另外一个对象)由于是跨来源的的访问,标识HTTP状态的Cookie的使用有一些特别处理。Server Nodejs 代码res.setHeader('Access-Control-Allow-Origin', req.headers.origin);//注意这里不能使用 * res.setHeader('Access-Control-A阅读全文
posted @ 2013-07-15 12:18 Jun.lu 阅读(6224) 评论(2) 编辑
摘要: 昨天遇到的问题使用ajax请求一个支持CORS的跨域页面(A),此页面返回302状态并且重新定向到页面(B)。此时ajax停止不前,并且触发 ajax onerror 事件。正确的相应应该是:ajax继续请求B页面,并且拿到B页面的返回值,触发onload事件。解决为 B 页面设置同样的CORS支持。header("Access-Control-Allow-Origin:*");下面是关于CORS,和 http 302的介绍。CORS是一份浏览器技术的规范,提供了 Web 服务从不同网域传来沙盒脚本的方法,以避开浏览器的同源策略。如果您的页面设置了CORS的返回头 Acce阅读全文
posted @ 2013-06-20 15:42 Jun.lu 阅读(3128) 评论(0) 编辑
摘要: session 不用多介绍,使一个http可以对应一个终端用户。session的本质使用cookie来实现。原理大概是:http 带来服务端提前设置 cookie,服务端拿到标示用户身份的cookie, 再去固定地点(数据库,文件)检索出对应的用户身份。把身份赋值给本次请求的request,在程序处理中就知晓了用户的身份了。(在PHP,ASP或者其他服务端语言中都自动帮你实现了)实现cookie 需要为每一个用户设置一个可以标示用户身份的cookie。可以使用如下规则 注册邮箱MD5值+密码MD5值+随机码MD5值。(仅仅举例,这可能并不是一个好的方案)服务端代码片段:res.setHea..阅读全文
posted @ 2013-04-24 17:21 Jun.lu 阅读(19088) 评论(0) 编辑
摘要: SVG PATH 的d参数较多,也比较复杂。MovetoLinetoCurvetoArctoClosePath这里只打算记录下 Arcto 参数.(https://developer.mozilla.org/en-US/docs/SVG/Attribute/d)Sometimes it is easier to describe a path as an elliptical curve rather than a Bezier curve. To this end, Arcto commands are supported in paths. The center of the arc is阅读全文
posted @ 2013-01-29 10:08 Jun.lu 阅读(4237) 评论(0) 编辑
摘要: 众所周知大家对 with 都没什么好感,而且不推荐使用。可以收集到的理由有:下面几条来自 《javascript权威指南》 第 5 版本。 1:使用with的语句很难优化。 2:使用with语句速度要比不使用with语句的等价代码的速度慢得多。 3:在with语句中的函数定义和变量初始化可能产生令人惊讶,和直觉相抵触的行为。 4:90%(或者更高比例)的with应用场景都可以用其他更好的方式代替。如何证明以上观点。 第1点:貌似没有什么好的代码实例。(欢迎大家提供) 第2点:使用with语句速度要比不使用with语句的等价代码的速度慢得多。var a = { ...阅读全文
posted @ 2012-12-03 11:49 Jun.lu 阅读(5006) 评论(3) 编辑
摘要: 如果你想动态的在页面创建一个iframe,并且取得iframe的document,和 window.并且在iframe中插入一个script标签。//我尝试了各种创建方法,比较难搞定的是 ie8 和 window,IOS 下firefox标签不太一样。//一个兼容的办法大约是这样。var iframe = document.createElement('iframe');var iframedocument;var iframeWindow;document.body.appendChild(iframe);if(iframe.document){ //ie 8 chrome 阅读全文
posted @ 2012-11-15 10:52 Jun.lu 阅读(7524) 评论(0) 编辑
摘要: 一个功能型页面通常由多个模块构成,模块都被统一到全局命名空间中。模块之间需要互相通信。比如:A模块 是时间轴。(MX.timeLine)B模块 是消息发布框。(MX.messageBox)当消息模块用户发送一条信息时,时间轴模块要显示这条信息,这显然要通知时间轴更新。最直接可用的代码是:MX.messageBox.send:function(){ $.ajax({ //..... success:function( data ){ MX.timeline.update( data );//当消息发布成功以后通知时间轴更新 MX....阅读全文
posted @ 2012-10-16 10:08 Jun.lu 阅读(782) 评论(0) 编辑
摘要: 聊天的时候经常使用 “123”。所以特别留意了他。PS:尼玛我也太无聊了。//任意数字最终会掉落到 123 的数字黑洞。function numberBlackHole(number){ var string = String(number); var len = string.length; var t2 = 0; var t1 = 0; for(var i=0; i<string.length; i++){ if( parseInt(string.charAt(i)) % 2 == 0){ t2++;...阅读全文
posted @ 2012-09-19 16:29 Jun.lu 阅读(297) 评论(0) 编辑
摘要: | | .P | /| | / | | / | | r/ | y | / | | / | |/ @ | ------------------------------------------> |--x----| x = r * cos@; y = r * sin@; p点旋转 Z 角度以后 得到p1(x1,y1)点 x1 = r * cos(@+Z); y1 = r * sin(@+Z); ...阅读全文
posted @ 2012-08-30 17:09 Jun.lu 阅读(358) 评论(0) 编辑
摘要: 前几天朋友出的一道题目!显然不是什么高深的数学题,用一点点小技巧就可以解决。先不贴答案了。如果有人看到可以顺便思考一下!非常喜欢这种类型的题目。阅读全文
posted @ 2012-05-07 10:45 Jun.lu 阅读(486) 评论(2) 编辑
摘要: 功能: 1:可设置只显示某个象限(onlyQuadrant) 2:可设置刻度大小(setCalibration) 3:可设置放大比例(setProportion)可调用的方法(包括上面3个): 向坐标系打印一点 (printPoint) 在坐标画一条直线(printLine) 设置下一画笔的填充色(setFillColor) 设置下一画笔的边框色(setStrokeColor) 获取某个坐标的真实x坐标(getx) 获取某个坐标的真实y坐标(gety)例子:http://jun-lu.github.com/jun/canvas_sin_cos_tan.html源码:https...阅读全文
posted @ 2012-04-27 17:57 Jun.lu 阅读(4197) 评论(0) 编辑
摘要: 在写完JS版本拼图游戏以后,偶然发现其实打乱顺序的拼图不是都能还原的。在一个3*3的拼图中,会把图片裁切成9块,然后打乱顺序,通过调换空格块与邻块的位置来还原图片。(图1)完全还原的拼图(设 8 号为空格位)0 1 23 4 56 7 8(图2)一个不能还原的顺序(拼到最后你发现6和7的位置倒了,而其他图片的位置正确)0 1 23 4 57 6 8如何判断一个打乱的拼图可还原?一个打乱顺序的拼图,把数字连起来可以组成一个排列(比如图2= 0123456768)。可以通过计算这个排列的逆序数个数加空格位置的坐标,最终得到的数的奇偶性判断。数学原理比较复杂您可以看http://blog.csdn.阅读全文
posted @ 2012-04-25 11:34 Jun.lu 阅读(4074) 评论(1) 编辑
摘要: Array.prototype.pushpush向数组尾部添加一项并更新length ,返回数组长度。如果Object使用push会怎样?看下面代码, obj好像数组一样工作了。length会自动更新。var push = Array.prototype.push;var obj = {};push.call(obj, "hello"); // 返回值 1// obj {"0":"hello", length:0}push.call(obj, "world"); // 返回值 2// obj {"0&qu阅读全文
posted @ 2012-03-17 18:52 Jun.lu 阅读(6129) 评论(4) 编辑
摘要: 问题是怎么个情况? 网页中的ajax请求越来越多,或者应用开始就一直使用ajax与后端进行数据交换。(目前我在公司参与的项目就是如此)N多接口前后端来回调试是个麻烦事。后端不可能短时间把所有的接口都写完,也不会为了前端测试而制造假的数据和接口,不仅耗费时间而且到了开发阶段返回的数据结构、接口名称也可能会有许多改动。那么后端一边写接口一边给前端,这看起来不错。但在具体实施过程中,后端未完成的接口可能有错误,你需要不停的和后端沟通不停的找原因,有可能中途还会停滞等待后端返回数据正 确才能继续。为什么会这样? 1:前端在开发初期就依赖了未成形的接口。 2:后端不完全知道前端需要的数据项及数据格...阅读全文
posted @ 2012-01-31 15:05 Jun.lu 阅读(5903) 评论(6) 编辑
摘要: CSScss outline 与border 重要区别,outline不参与到文档流中,即outline是不站位置的。最好为a标签的每一个状态都设置你需要的 text-decoration,不然各种悲催的浏览器表现不一样::selection这应该是一个新的伪类,定义了网页选中的背景颜色,在“又拍”发现的。两个同级的div 都设置了 inline-block,你会发现他们之间有一些间隙(ff,chrome大多A级浏览器都这样),非常莫名其妙。 这是由于代码换行导致的,强制把代码写在一行就行了。 具体为什么还真不知道,太BUG了。文章链接用label 包裹 input 不写for 不能聚焦到in阅读全文
posted @ 2011-11-29 14:21 Jun.lu 阅读(383) 评论(2) 编辑
摘要: 近2个月来没有阅读技术书籍,感觉有点盲目。期间看了《明朝那些事儿》(1,2,3)、《FBI教你破解身体语言》 我看书很慢。现在又迷上了手机拼图游戏,写了一个JS版本的,本想可以利用小键盘在3*3的拼图上提高速度,最后发现其实在手机上才能最快。(一个普通的3*3数字拼图15内秒可以完成,30%可以10秒类完成)!JS版本的数字拼图在这里 GIT PUZZLE手机上的拼图游戏名字叫:拼图(数字)游戏(可以在市场中找到,LOGO是一朵花)顺便提供一下RAR 下载JS拼图游戏源码如下----------------------------View Code //一个puzz类 v...阅读全文
posted @ 2011-10-30 11:36 Jun.lu 阅读(2679) 评论(6) 编辑
摘要: 公司项目上线需要混淆合并压缩javascript代码。原本有一个混淆压缩工具,因为内部服务器挂掉了工具也没有了。使用的压缩算法来自http://dean.edwards.name/packer/ 。 这里只是做了一些简单的合并调用。上面的算法有一些缺点,如果源码缺少必要的分号或者存在多余的逗号压缩以后的文件会出现语法错误。方案:可以先使用google的压缩工具压缩,它可以提示错误,找出一些潜在问题。然后再用混淆压缩!注意:这个压缩工具是运行在服务器环境下的(这里采用了PHP,合并以后要保存文件所以必须是服务器环境)使用的时候需要配置 bulid/config.js 就可以了。var confi阅读全文
posted @ 2011-09-16 16:36 Jun.lu 阅读(2084) 评论(0) 编辑
摘要: Stip一个用于页面的提示插件。可以做表单验证,页面提示等。GITHUB:https://github.com/jun-lu/Stip演示地址:http://jun-lu.github.com/Stip/doc/index.html文档下载:下载--------效果----------------------------------感谢阅读全文
posted @ 2011-08-09 15:17 Jun.lu 阅读(446) 评论(0) 编辑
摘要: 通过createElement创建的 script 标签其属性async默认为true,直接写在页面上的script标签默认为 false;false能保证多个script的执行顺序,true不能保证。所以在动态插入多个script默认是不能保证执行顺序的!如果在创建的同时指定 async 为 false, 除IE(6789)不能保证顺序,其他A级浏览器都可以!另外:新建的script通过setAttribute设置async为false会失败。使用 script.async = false; 可以达到预期效果!:opera浏览器不鸟 async ,始终能保证执行顺序-------------阅读全文
posted @ 2011-07-28 15:49 Jun.lu 阅读(653) 评论(0) 编辑