行内技术
JavaScript排序算法之选择排序
选择排序(Selectionsort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。选择排序的交换操作介于0和(n−1)次之间。选择排序的比较操作为n(n−1)/2次之间。选择排序的赋值操作介于0和3(n−1)次之间。比较次数O(n^2),比较次数与关键字的初始状态无关,总的比较次数N=(n-1)+(n-2)+...+1=n*(n-1)/2。交换次数O(n),最好情况是,已经有序,交换0次;最坏情况是,逆序,...
2013-3-3603
JavaScript排序算法之插入排序
插入排序(straightinsertionsort)的做法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中;第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入排序属于稳定的排序,时间复杂性为o(n^2),空间复杂度为O(1)。直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一个数值进行...
2013-3-3515
JavaScript排序算法之快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。由C.A.R.Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置...
2013-3-3522
JavaScript排序算法之冒泡排序
冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:
    “编程复杂度”很低,很容易写出代码;具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两...
2013-3-3453
合并排序算法解说与例子
合并算法采用分治法的思路,即问题划分成n个规模较小而结构和原来问题相似的子问题,递归解决这些子问题,然后合并结果,最终得到原来问题的解。合并算法主要分为三个部分,第一个部分是分解,将运来的问题分解成两个包含n/2个元素的数组的排序的问题,然后分别递归调用函数解决这两个数组的排序问题,最后一步,就是将已经排好序的数组重新进行组合,使其成为按序排列的数组。这三步中代码量较多的就是合并的代码了,合并的问题其实我们也可以把它想象成把两堆已经按从小到大的顺序排好的扑克牌排成一堆扑克牌的问题,每次比较最上面的那个牌,小的就拿走放到输出堆中,重复这个比较过程直到某一堆牌为空,然后把...
2013-3-3467
分析用户行为给用户准确内容推荐
今天有人问我会不会推荐算法,回到家里反复思考了下(其实就是一个会与不会的回答,为啥我还要反复思量下了?),我发现自己从事软件开发工作这么多年,大小项目无数,但是如果从做应用角度换句话说我做了哪些提高人们工作效率或者改变了哪些人的生活方式的东西呢?项目做的再多,技术再精通也就是一个单兵实力很强的士兵,没有一个层次的提升最终都是一个兵,技术是手段是工具,我用对了地方才能发挥重大的价值,这个地方到底在哪里对现在我而言是一个不得不思考的问题,因为我现在太想提升自己的能力了。这个所谓的地方就是我们所说的业务,我必须要找到一个业务方向精深下去了,而今天所说的推荐算法就是一个很好的引子。...
2013-3-3451
简述JavaScript的类与对象
JavaScript语言是动态类型的语言,基于对象并由事件驱动。用面向对象的思想来看,它也有类的概念。JavaScript没有class关键字,就是用function来实现。1.实现方式及变量/方法访问域控制functionfruit(name,color){//publicvariablethis.name=name;this.color=color;}用this来标识变量或方法是public。varapple=newfruit('apple','red');跟其他大多数语言一样是用new关键字来实例化一个类的对象。...
2013-3-3489
让编程工作高于编程语言
编程的世界里不乏很多技术上的牛人,但机器终究是为了人而存在的。现在的编程世界里“武功”百花齐放,让人应接不暇,但也许这些纷繁之后,他们的产生与发展乃至繁荣,都是世界上一些再最自然,最淳朴的一些道理。1.编程语言——舍本逐末如果是编程范式是一种文化,那么编程语言更像是一种宗教——尽管它本不该是。每种流行的语言都有大批忠实的信徒,随时可能与其他的信徒发生宗教战争。很多时候都会听到有人在争论编程语言的优劣,认为自己所崇拜的语言鹤立鸡群,但其实,过分拔高一种语言与磨砂语言之间的差别都是极端的观点,编程语言的发展从来都是一个不断完善,不断在满足人类抽象思维与机器理...
2013-3-3550
JavaScript随机数生成方法
实现随机数是各种编程语言都很常见的一个编程任务,下面介绍一下在JavaScript如何实现随机数。第一中方法通过重写Math.random方法实现,第二种方法改自一个C实现,都可以实现编程目的。直接上代码:<scriptlanguage="javascript">varnative_random=Math.random;Math.random=function(min,max,exact){if(arguments.length===0){returnnative_random();}elseif(arguments.length==...
2013-3-3577
让IE6也支持position:fixed
众所周知IE6不支持position:fixed,这个bug与IE6的双倍margin和不支持PNG透明等bug一样臭名昭著。前些天遇到了这个问题。当时就简单的无视了IE6,但是对于大项目或商业网站,如果有用到这个属性的时候,是不可能直接无视的。如何让position:fixed在IE6中工作呢?本文所使用的技巧是用了一条InternetExplorer的CSS表达式(expression)。你不可以直接使用该表达式,因为它可能会因为缓存而不更新。解决这一点的最简单的方式是使用eval包裹你的语句。如何解决抖动的问题?显然IE有一个多步的渲染进程...
2013-3-3530
让某部分HTML随滚动始终显示在页面上
我们经常在淘宝网看到这样的特效,商品列表特别长,而商品列名称始终保持在最顶端。如果你把滚动条滚动至最上边了,那么它会自动判断是否到顶端了,然后一直置顶从而不怕遮挡。这种特效是通过JavaScript和CSS实现的,在实际开发中有不少用途,下面是我找到的一个使用JavaScript制作的仿淘宝智能浮动的源代码,兼容性不错,在IE、Firefox、Chrome下都能正常工作。使用这个特效代码需要注意,如果在侧边栏使用,则需要注意,侧栏中的栏目不能使用JavaScript动态加载,必须用静态的格式,否则在JavaScript会错误的计算页面高度,上下滚动的时候会出现错...
2013-3-3609
使用Win32API做个系统托盘图标
系统托盘在我们使用的程序中很普遍,下面我们来看一个很不错的例子,使用Win32API实现,对理解系统托盘有些帮助。#include<windows.h>#defineIDR_PAUSE12#defineIDR_START13/*#include<shellapi.h>#pragmacomment(lib,"shell32.lib")*/LPCTSTRszAppName=TEXT("服务程序");LPCTSTRszWndName=TEXT("服务程序");HMENUhmenu;//菜单句柄LRESULTCALLBACKWndProc(HW...
2013-3-3520
你有多少时间在为自己干活?
努力工作为了什么?普通人不外乎希望加薪、升职,过的更好。但是,要想达到这个目标,靠什么?普通人当然要靠提升自己的能力和经验。可是,你是不是已经发现,工作最踏实的,却未必取得最好的结果? 所以,我想跟大家一起思考这个问题:每周五天,每天八小时,你有几个小时在为自己干活?当然,我这里说的为自己干活,说的绝对不是干与工作无关的私活。 如果你今天重复着和昨天一样的工作,那么你很称职,你在为老板工作。做的时间长了,老板念你没有功劳还有苦劳,也许会应你的要求涨一点工资。而如果你不提,那么对不起,您就是那最容易被...
2013-3-3531
四道JavaScript面试题检测你的js基本功
下面有四道简短的JavaScript小脚本,如果你能顺利预测脚本的运行结果,那么你的JavaScript基本功还是可以的。如果答错了,可以相应地去补一下缺漏的知识。反正也很简单,答错了只是说明你没了解而已,看下资料很快就会明白。那么先做吧,要看答案请点runcode按钮。functionrunCode(id){obj=document.getElementById(id);varTestWin=open('');//打开一个窗口并赋给变量TestWin。TestWin.opener=null//防止代码对论谈页面修改TestWin.document.wr...
2013-3-3632
JSONP跨域的原理解析
JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-OriginPolicy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。JavaScript这个安全策略在进行多iframe或多窗口编程、以及Ajax编程时显得尤为重要。根据这个策略,在baidu.com下的页面中包含的JavaScript代码,不能访问在google.com域名下的页面内容;甚至不同的子域名之间的页面也不能通过Jav...
2013-3-3474
JavaScript定时器是如何工作的
从基础的层面来讲,理解JavaScript的定时器是如何工作的是非常重要的。计时器的执行常常和我们的直观想象不同,那是因为JavaScript引擎是单线程的。我们先来认识一下下面三个函数是如何控制计时器的。varint=self.setInterval("updateMsg()",12000);varid=setTimeout(fn,delay);--初始化一个计时器,然后在指定的时间间隔后执行。该函数返回一个唯一的标志ID(Number类型),我们可以使用它来取消计时器。varid=setInterval(fn,delay);--和s...
2013-3-3512
如何才能避免沦为代码民工
“代码民工”这个词可能是程序员的无奈的自嘲,也可能是自谦,反正来源已无法可考。“代码民工”即是指那些编写程序、敲打代码的底层程序开发人员,是IT行业中干得最多、干得最累、却挣得最少的那一群人。这其中可能有公司的原因,也可能有个人的原因,但我认为最根本的原因可能是技术的限制——技术的水平限制了程序员们的生产力。我们很多人都在重复的做很多的事情。这里说的重复是指宏观上的重复,比如很多做通信产品的公司,他们的程序员往往要实现很多相似甚至相同功能的基础模块。做个对比,现在很多城市的工地上都可以看到建筑工人——相对于他们,我感觉我们的生产力远没有他们强。如果那建筑...
2013-3-3629
MySQL时间日期查询相关函数与方法
MySQL应用中,日期与查询是非常普遍的。比如要查某天、某个星期、或者某个月内的数据,查询两个日期之间的天数差,查询某天是星期几等等。下面就介绍一下相关的MySQL时间与日期函数,与它们的具体使用方法。NOW()函数MYSQL有没有像MSSQL的getdate()函数?有,就是NOW()。mysql>SELECTnow();+---------------------+|now()|+---------------------+|2011-10-2709:49:42|+---------------------+1rowinsetN...
2013-3-3539
网站运营需要了解的一些规律
网站策划从业者要求的知识面较广阔,必须具备市场和销售意识,具备人体工程学的意识,具备较强的沟通能力和文字表达能力,熟悉商业情报收集和信息分析的方法,熟悉网站规划,掌握基本的建站方法,了解网站硬件环境配置,熟悉网络广告投放和搜索引擎优化等方法。一起来看,几个必须知道的定律。1.250定律拉德认为:每一位顾客身后,大体有250名亲朋好友。假如您赢得了一位顾客的好感,就意味着赢得了250个人的好感;反之,假如你得罪了一名顾客,也就意味着得罪了250名顾客。在你的网站访客中,一个访客可能可以带来一群访客,任何网站都有起步和发展的过程,这个过程中此定律尤其重要。2...
2013-3-3463
PHP如何实现异步数据调用
浏览器和服务器之间只有一种面向无连接的HTTP协议进行通讯的,面向无连接的程序的特点是客户端请求服务端,服务端根据请求返回相应的程序,不能保持持久连接。这样就出现了一个问题,一个客户端的相应服务端可能执行1秒也有可能执行1分钟,这样浏览器就会一直处于等待状态,如果程序执行缓慢,用户可能就没耐心关掉了浏览器。而有的时候我们不需要关心程序执行的结果,没有必要这样浪费时间和耐心等待,那我们就要想出办法让程序不收等待在后台静默执行。比如现在有一个场景,给1000个用户发送一封推荐邮件,用户输入或者导入邮件账号了提交服务器执行发送。<?php$count=coun...
2013-3-3544