随笔分类 - 面试
摘要:随机化快排快速排序的最坏情况基于每次划分对主元的选择。基本的快速排序选取第一个元素作为主元。这样在数组已经有序的情况下,每次划分将得到最坏的结果。一种比较常见的优化方法是随机化算法,即随机选取一个元素作为主元。这种情况下虽然最坏情况仍然是O(n^2),但最坏情况不再依赖于输入数据,而是由于随机函数取...
阅读全文
摘要:其他:为什么MyISAM会比Innodb 的查询速度快。INNODB在做SELECT的时候,要维护的东西比MYISAM引擎多很多;1)数据块,INNODB要缓存,MYISAM只缓存索引块,这中间还有换进换出的减少;2)innodb寻址要映射到块,再到行,MYISAM 记录的直接是文件的OFFSET,...
阅读全文
摘要:进程间:管道,消息队列,信号,共享内存,套接字进程间通信的方法主要有以下几种: (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。 (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外...
阅读全文
摘要:静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。静态链接库与动态链接库都是共享代...
阅读全文
摘要:两个人约好12:00-13:00之间见面,先到的人等后到的人不超过15分钟,等待时间超过15分钟,先到的人会离去,问两人相遇的概率。设两个人到达的时间分别为x,y。将12:00~13:00这个时间段看做0~1的话,15分钟即是1/4。由题设得,0<x,y<1若两人相遇,则 |x-y| <= 1/4用...
阅读全文
摘要:1.搞清什么是执行计划数据库根据sql语句和相关表的统计信息,做出的一个查询方案,方案是查询优化器自动分析产生2.同一sql语句写法,不要存在大小写不一的特点3. 不要把SQL语句写的太复杂4. 使用临时表来暂存中间结果5.模糊查找,除非必要,否则不要在关键词前面加%,否者会查找整个表
阅读全文
摘要:EhCache 的主要特性有:快速;简单;多种缓存策略;缓存数据有两级:内存和磁盘,因此无需担心容量问题;缓存数据会在虚拟机重启的过程中写入磁盘;可以通过 RMI、可插入 API 等方式进行分布式缓存;具有缓存和缓存管理器的侦听接口;支持多缓存管理器实例,以及一个实例的多个缓存区域;提供 Hiber...
阅读全文
摘要:三、线程的几种状态 在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。 第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。 第二是就绪状态。当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设...
阅读全文
摘要:HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。HTTP协议的请求方法有G...
阅读全文
摘要:布隆过滤器 (Bloom Filter)是由Burton Howard Bloom于1970年提出,它是一种space efficient的概率型数据结构,用于判断一个元素是否在集合中。在垃圾邮件过滤的黑白名单方法、爬虫(Crawler)的网址判重模块中等等经常被用到。哈希表也能用于判断元素是否在集...
阅读全文
摘要:信息指纹:通过提取一个信息的特征,通常是一组词或者一组词+权重,然后根据这组词调用特别的算法例如MD5算法,将之转化为一组代码,这组代码就是标识这段信息的指纹;在抓取阶段,蜘蛛程序为了避免重复抓取,会建立起一张hash表,将抓取的链接存储,我们先来假定直接存储网址,互联网上有5000亿个网页,假定要...
阅读全文
摘要:因为操作系统的很多操作会消耗系统的物理资源,例如创建一个新进程时,要做很多底层的细致工作,如分配物理内存,从父进程拷贝相关信息,拷贝设置页目录、页表等,这些操作显然不能随便让任何程序都可以做,于是就产生了特权级别的概念,与系统相关的一些特别关键性的操作必须由高级别的程序来完成,这样可以做到集中管理,...
阅读全文
摘要:public class ReconstructionTree { private static class TreeNode { int val; TreeNode left; TreeNode right; public TreeNo...
阅读全文
摘要:AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时...
阅读全文
摘要:转载:http://my.oschina.net/bluesky0leon/blog/132361从编程语言层面BIO | NIO | AIO 以Java的角度,理解,linux c里也有AIO的概念(库),这些概念不知道什么原因被炒火起来,这里只从Java角度入手。 BIO,同步阻塞式IO,简单...
阅读全文
摘要:1)已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。8位最多99 999 999,大概需要99m个bit,大概10几m字节的内存即可。 (可以理解为从0-99 999 999的数字,每个数字对应一个Bit位,所以只需要99M个Bit==1.2MBytes,这样,就用了小小的1...
阅读全文
摘要:一致性Hash算法一致性hash算法是在1997年,麻省理工学院设计的,解决因特网中的热点问题满足四个条件:平衡性,单调性,分散性,负载均衡场景:比如你有N个cache服务器,如何将一个对象object,映射到N个cache中普通hash算法:1一个cache服务器m down掉了(在实际应用中必须...
阅读全文
摘要:分布式存储解决的是单机存储的性能, 单点故障问题,容量一开始到还在其次, 但随着应用规模的发展, 要解决容量也得必须分布式了.分布式存储解决容量问题即可扩展性的方式, 就是数据分片.可扩展性是分布式的已经解决的问题, 任何关于分布式存储的现存问题的讨论, 都不会再涉及可扩展性.数据分片也能部分的解决...
阅读全文
摘要:并发控制机制 最常用的处理多用户并发访问的方法是加锁。当一个用户锁住数据库中的某个对象时,其他用户就不能再访问该对象。加锁对并发访问的影响体现在锁的粒度上。比如,放在一个表上的锁限制对整个表的并发访问;放在数据页上的锁限制了对整个数据页的访问;放在行上的锁只限制对该行的并发访问。可见行锁粒度最小,...
阅读全文
摘要:在Java编程语言和环境中,即时编译器(JITcompiler,just-in-time compiler)是一个把Java的字节码(包括需要被解释的指令的程序)转换成可以直接发送给处理器的指令的程序。当你写好一个Java程序后,源语言的语句将由Java编译器编译成字节码,而不是编译成与某个特定的处...
阅读全文

浙公网安备 33010602011771号