摘要: 在写博客这方面我是个新手,表达能力的改进空间还有很大。上文简单的回答了朋友的问题,但貌似有点“以其昏昏,使人昭昭”的感觉。朋友继而追问,又log又方程的,你如何还可以心算呢? 其实,计算这类问题,只要记住两个数就可以了,一个是0.3,一个是3.3。一亿个查询单位用binary search要用多少次查询的问题,便是用8*3.3 = 26.4(8/0.3=26.7)计算出来的。这个乘法运算,心算不成问题吧?这两个数又是从何而来的呢?0.3其实是log2=0.301……的约数,而3.3就是1/0.3 = 3.33……的约数,大家参考一下上文的方程式,便会知道为何可以这样子计算了。 此外,8... 阅读全文
posted @ 2014-03-05 19:29 nianjun 阅读(197) 评论(0) 推荐(0)
摘要: 有朋友看了“一道课本题目引发的思考”一文后,问到binary search对一亿个查询单位进行查询时,最差情况为什么会是27次?在此,我要为我昨天的冒失道歉,因我以为这是一道心算题,应该不难。这里就解释一下吧,试想,binary search每做一次查询,原有数据便有一半可以剔除,假设最差情况是进行了x次查询,于是2^x = 10^8,解之:log(2^x) = log(10^8)=> xlog2 = 8log10=> x = 8/(log2)因log2约等于0.3,那么,x也就约等于26.7,取整便是27。另有一朋友问“如果C#要处理的数据并非是一组数字,则该怎么对这些数据进行排 阅读全文
posted @ 2014-03-04 09:43 nianjun 阅读(135) 评论(0) 推荐(0)
摘要: 前几天去参加一个面试,看到一道笔试题,大意是:现有一个含有1亿个排好序的手机号码的数组,如何才能够快速查出自己的手机号码是否存在该数组中?我想,不会吧?职位是高级php程序员,居然还问这些课本上的问题?!不过,无论题目是什么,总还是要作答的。 回来之后我对自己当时的态度有所反省,因我本身不是一个计算机专业出身的人,别人考我课本上的知识也是理所当然。事实上,我也觉得自己理论水平有限,如果说今天还算是入了计算机科学的门的话,无外乎是凭借这几年的知耻而后勇,拾遗补缺。当日的傲慢,确实是要不得。 但话又说回来,西方计算机开源世界流行甚广的所谓程序员“三美德”,其中一条不就是“傲慢”吗?当然,这... 阅读全文
posted @ 2014-03-03 11:28 nianjun 阅读(255) 评论(0) 推荐(0)
摘要: 在“多任务”一文中,我们提到了“协同式多任务”与“抢先式多任务”的概念和二者的区别,谈到现在主流的多任务实现是“抢先式多任务”,并且留下关于未来“协同式多任务”是否会被淘汰的疑问。今天在此再举几个例子作对比,为前面提出的疑问做个推测。第一个例子先来看看“抢先式多任务”程序的运行表现。在这个例子中,我们用C#创建一个console程序,这个程序要做的事很简单,就是在命令行窗口记录下从程序启动到做完一个正整数累加(从1累加到50亿)的时间,程序代码如下: 1 class WasteTime 2 { 3 public void run() 4 { 5 ... 阅读全文
posted @ 2014-02-25 12:40 nianjun 阅读(2204) 评论(0) 推荐(0)
摘要: 多任务操作系统已经存在一段很长的时间了,但即使都属于多任务操作系统,早期的多任务操作系统却采用的是不同于今天称为“抢先式多任务”(preemptive multitasking)的多任务处理机制。以windows为例,在windows95以前的多任务操作系统,其采用的是“协同式多任务”(cooperative multitasking)。那么这两者的区别在哪里呢?在现在的多任务系统中,当一个新的进程开始时,在它的时间片(timeslice)之内,cpu的使用权是在这个进程手里的,当时间片结束时,系统要收回cpu的使用权做下一轮分配;而在“协同式多任务”操作系统中,进程在执行过程中是可以不受.. 阅读全文
posted @ 2014-02-21 17:11 nianjun 阅读(672) 评论(0) 推荐(0)
摘要: 我们知道,在现代计算机系统中,数据都是以0和1的形式存储的。而要表示0和1两个不同的状态,常常可以根据电荷的有无或者多寡来分别对应。一个可以表示二进制状态的装置就可以算是一个存储单元,其代表的数据容量为1bit。可以做存储单元的电子产品有千千万万,电容作为一种可以简单实现的工艺产品,且其充电状态的有无很明显地折射出二进制的意味,很自然的,它也可以用作存储单元,事实上,动态存储器(Dynamic RAM)的存储单元便是一个电容加上一个晶体管组成的。于是一个电容就存储着1bit的数据,一个容量为1G的动态存储器,有8x1024x1024x1024 个bit,里面的电容器数量超过了80亿个,比全.. 阅读全文
posted @ 2014-02-18 17:13 nianjun 阅读(231) 评论(0) 推荐(0)