面试
文章平均质量分 65
Robin-Li
未来,我要执着于技术!
展开
-
索引不执行的原因
1、条件字段选择性弱,查出的结果集较大,不走索引;2、where条件等号两边字段类型不同,不走索引;3、优化器分析的统计信息陈旧也可能导致不走索引;4、索引字段 is null 不走索引;5、对于count(*)当索引字段有not null约束时走索引,否则不走索引;6、like 后面的字符当首位为通配符时不走索引;7、使用不等于操作符如:8、索引字段前加了函数或参加了原创 2015-08-06 13:52:01 · 1057 阅读 · 0 评论 -
Java排序算法(六):折半插入排序
Java排序算法(六):折半插入排序折半插入排序法,又称二分插入排序法,是直接插入排序法的改良版,也需要执行i-1趟插入,不同之处在于,第i趟插入,先找出第i+1个元素应该插入的的位置,假定前i个数据是已经处于有序状态。代码实现:[java] view plaincopyprint?package sort;转载 2015-03-23 18:38:15 · 290 阅读 · 0 评论 -
Java排序算法(三):冒泡排序
Java排序算法(三):冒泡排序冒泡排序是计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。不过,一路、二路归并排序、不平衡二叉树排序的速度转载 2015-03-23 18:35:22 · 439 阅读 · 0 评论 -
深入Java集合学习系列:ArrayList的实现原理
深入Java集合学习系列:ArrayList的实现原理1. ArrayList概述: ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是转载 2015-03-23 18:31:09 · 391 阅读 · 0 评论 -
Java排序算法(二):直接选择排序
Java排序算法(一):直接选择排序直接选择排序的基本操作就是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完,它需要经过n-1趟比较。算法不稳定,O(1)的额外的空间,比较的时间复杂度为O(n^2),交换的时间复杂度为O(n),并不是自适应的。在大多数情况下都不推荐使用。只有在希望减少交换次数的情况下可以用。基本思转载 2015-03-23 18:32:52 · 305 阅读 · 0 评论 -
深入Java集合学习系列:LinkedHashMap的实现原理
深入Java集合学习系列:LinkedHashMap的实现原理1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 LinkedHashMap实现与HashMap的不同之处在于转载 2015-03-23 18:29:20 · 483 阅读 · 0 评论 -
深入Java集合学习系列:HashSet的实现原理
深入Java集合学习系列:HashSet的实现原理1. HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 2. HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,Has转载 2015-03-23 18:28:10 · 282 阅读 · 0 评论 -
Java排序算法(十):基数排序
Java排序算法(十):基数排序基数排序已经不再是一种常规的排序方式,它更多地像一种排序方法的应用,基数排序必须依赖于另外的排序方法。基数排序的总体思路就是将待排序数据拆分成多个关键字进行排序,也就是说,基数排序的实质是多关键字排序。多关键字排序的思路是将待排数据里德排序关键字拆分成多个排序关键字;第1个排序关键字,第2个排序关键字,第3个排序关键字......然后,根转载 2015-03-23 18:42:23 · 385 阅读 · 0 评论 -
Java排序算法(九):桶式排序
Java排序算法(九):桶式排序桶式排序不再是一种基于比较的排序方法,它是一种比较巧妙的排序方式,但这种排序方式需要待排序的序列满足以下两个特征:待排序列所有的值处于一个可枚举的范围之类;待排序列所在的这个可枚举的范围不应该太大,否则排序开销太大。排序的具体步骤如下:(1)对于这个可枚举范围构建一个buckets数组,用于记录“落入”每个桶中元素转载 2015-03-23 18:41:09 · 409 阅读 · 0 评论 -
Java排序算法(七):希尔排序(Shell排序)
Java排序算法(七):希尔排序(Shell排序)希尔排序(缩小增量法) 属于插入类排序,由Shell提出,希尔排序对直接插入排序进行了简单的改进:它通过加大插入排序中元素之间的间隔,并在这些有间隔的元素中进行插入排序,从而使数据项大跨度地移动,当这些数据项排过一趟序之后,希尔排序算法减小数据项的间隔再进行排序,依次进行下去,进行这些排序时的数据项之间的间隔被称为增量,习惯上用字母h来表示转载 2015-03-23 18:39:57 · 386 阅读 · 0 评论 -
Java排序算法总结
关于稳定性的更深入分析,可以参考:http://blog.sina.com.cn/s/blog_5f91efbe0100ndjb.html转载 2015-03-23 18:45:07 · 401 阅读 · 0 评论 -
Java排序算法(十二):补充-洗牌算法
Java排序算法(十二):补充-洗牌算法这个算法的要求是这样的:将N个数乱序后输出.由于和扑克牌的洗牌过程比较相似所以我也就称为洗牌算法了.很多地方都不自觉的需要这个算法的支持.也可以将这个算法扩展为从N个数中取出M个不重复的数(0思路:有n个数据的数据列,从第一个元素开始,随机取出数据列中元素与之交换,依次进行n次交换,即可得到一个随机排列的数据列代码实现:转载 2015-03-23 19:02:50 · 633 阅读 · 0 评论 -
Spring深入理解
DefaultBeanDefinitionDocumentReader/** * Process the given bean element, parsing the bean definition * and registering it with the registry. */ protected void processBeanDefinition(El原创 2015-07-24 16:40:34 · 426 阅读 · 0 评论 -
分布式jvm并发
在分布式环境中,处理并发问题就没办法通过操作系统和JVM的工具来解决,那么在分布式环境中,可以采取一下策略和方式来处理:避免并发时间戳串行化数据库行锁统一触发途径避免并发在分布式环境中,如果存在并发问题,那么很难通过技术去解决,或者解决的代价很大,所以我们首先要想想是不是可以通过某些策略和业务设计来避免并发。比如通过合理的时间调度,避开共享资源的存取冲突。另外,在并行任务设转载 2015-07-23 20:32:41 · 690 阅读 · 0 评论 -
nginx安装
nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息。正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好。ububtu平台编译环境可以使用以下指令apt-get install build-essentialapt-get install libtoolcentos平台编译环境使用如下指令安装转载 2015-06-21 17:36:16 · 371 阅读 · 0 评论 -
ubuntu下nginx安装手记
转载▼Nginx是一个高性能的HTTP和反向代理服务器.Nginx 使用 Unix 下常用的 './configure && make && make install' 过程来编译安装.configure 脚本确定系统所具有一些特性,特别是 nginx 用来处理连接的方法。然后,它创建 Makefile 文件。官网:http://nginx.org/转载 2015-06-21 15:54:49 · 336 阅读 · 0 评论 -
java数据结构---折半查找
折半查找l 查找过程:每次将待查记录所在区间缩小一半l 适用条件:必须采用顺序存储结构的有序表l 算法实现u 设表长为n,low、high和mid分别指向待查元素所在区间的上界、下界和中点,k为给定值u 初始时,令low=1,high=n,mid=ë(low+high)/2ûu 让k与mid指向的记录比较u 若k==r[mid].key,查找原创 2015-03-24 22:22:04 · 631 阅读 · 0 评论 -
算法(二进制数中1的个数)
编程之美中,1的个数的几种求法,今天先更新一种我最喜欢的方法。也是感觉很美的算法。方法一:package com.robin.other;public class OneNum { public static int oneNum(int data){ int count = 0; while(data != 0){ data &= (data-1原创 2015-03-24 22:32:29 · 545 阅读 · 0 评论 -
java实现生产者消费者问题
java实现生产者消费者问题 引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示,生产者向空间里存放数据,而消费者取用数据,如果不加以协调可能会出现以下情况:生产者消费者图 存储空间已满,而生产者占用着它,消费者等着生产者让出空间从而去除产品,生产者等着消费者消费产品,从而向空间中添加产品。互相等待,从而发生死转载 2015-04-02 20:47:41 · 483 阅读 · 0 评论 -
HTTP错误代码大全
HTTP错误大全HTTP 400 - 请求无效HTTP 401.1 - 未授权:登录失败HTTP 401.2 - 未授权:服务器配置问题导致登录失败HTTP 401.3 - ACL 禁止访问资源HTTP 401.4 - 未授权:授权被筛选器拒绝HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败HTTP 403 - 禁止访问HTTP 403 -原创 2015-03-23 19:06:10 · 775 阅读 · 0 评论 -
Java排序算法(八):归并排序
Java排序算法(八):归并排序归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有转载 2015-03-23 18:40:54 · 375 阅读 · 0 评论 -
Java排序算法(五):直接插入排序
Java排序算法(五):直接插入排序直接插入排序的基本操作就是将待排序的数据元素按其关键字值的大小插入到前面的有序序列中。直接插入的时间效率并不高,如果在最坏的情况下,所有元素的比较次数总和为(0+1+...+n-1)=O(n^2)。其他情况下也要考虑移动元素的次数,故时间复杂度为O(n^2)直接插入空间效率很好,只需要1个缓存数据单元,也就是说空间复杂度为O(1).转载 2015-03-23 18:37:31 · 393 阅读 · 0 评论 -
十道海量数据处理面试题与十个方法大总结
本文将向您讲述诸多数据处理面试题以及方法的总结。原创 2015-03-19 20:31:41 · 327 阅读 · 0 评论 -
海量数据处理之基本方法
针对海量数据的处理,可以使用的方法非常多,常见的方法有Hash法、Bit-map法、Bloom filter法、数据库优化法、倒排索引法、外排序法、Trie树、堆、双层桶法以及MapReduce法。1.Hash法Hash一般被翻译为哈希,也被称为散列,它是一种映射关系,即给定一个数据元素,其关键字为key,按一个确定的哈希函数Hash计算出hash(key),把hash(key)作转载 2015-03-19 19:46:26 · 717 阅读 · 0 评论 -
海量数据处理面试题
前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。 毕竟受文章和理论之限,本文将摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问转载 2015-03-19 19:34:30 · 359 阅读 · 0 评论 -
bloom filter原理
简介编辑Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此Bloom filter具有100%的召回率。这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两原创 2015-03-19 19:50:42 · 334 阅读 · 0 评论 -
STL系列之十 全排列(百度迅雷笔试题)
全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。首先来看看题目是如何要求的(百度迅雷校招笔试题)。用C++写一个函数, 如 Foo(const char *str),转载 2015-03-19 22:47:40 · 353 阅读 · 0 评论 -
海量数据处理常见问题
有关海量数据处理的一直以来都是互联网企业笔试面试的重点,此类题目也非常多,但归纳起来,主要有以下3类:top K问题、重复问题、排序问题。以下将分别对这3类问题进行详细的分析。 14.3.1 top K问题在大规模数据处理中,经常会遇到的一类问题:在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常被称为top K问题。例如,在搜索引擎中,统计转载 2015-03-19 19:43:11 · 735 阅读 · 0 评论 -
Nginx+Tomcat+memcached负载均衡实现session共享
1. 安装各个软件不用说了。2. 到tomcat的安装目录lib中,加入:memcached-2.6.jar(http://spymemcached.googlecode.com/files/memcached-2.6.jar)javolution-5.4.3.1.jarmemcached-session-manager-1.5.1.jarmem转载 2015-03-25 13:14:18 · 409 阅读 · 0 评论 -
Java数据结构---两个栈形成一个队列
比较简单,就不多废话了,直接贴源码!package com.robin.stack;import java.util.Stack;public class MyQueue { private Stack s1 = new Stack(); private Stack s2 = new Stack(); public synchronized void put(E原创 2015-03-26 21:38:45 · 380 阅读 · 0 评论 -
求职面试题(两个字符串是否包含相同的字符)
求职面试题(两个字符串是否包含相同的字符)本篇博客包括针对题目包括两个比较字符串是否包括相同字符的方法:(1)把字符串转化为数组,然后对数组排序,最后比较两字符串是否相等。(2)以空间代替时间。package com.robin.stringAndSZ;import java.util.Arrays;public class CompareStr原创 2015-03-26 21:42:22 · 529 阅读 · 0 评论 -
求职面试(字符串反转,单词反转)
本篇博客包括常见的字符串反转算法。其中包括四个字符串反转算法。还有一个对单词的反转(比如:输入 how are you! 输出 you! are how)希望对广大朋友有帮助!package com.robin.stringAndSZ;import java.util.Stack;public class ReverseString { //Method on原创 2015-03-26 21:46:21 · 496 阅读 · 0 评论 -
Java排序算法(四):快速排序
Java排序算法(四):快速排序快速排序是一个速度非常快的交换排序算法,它的基本思路很简单,从待排的数据序列中任取一个数据(如第一个数据)作为分界值,所有比它小的数据元素放到左边,所有比它大的数据元素放到它的右边。经过这样一趟下来,该序列形成左右两个子序列,左边序列中的数据元素的值都比分界值小,右边序列中数据元素的值都比分界值大。接下来对左右两个子序列进行递归排序,对两个子转载 2015-03-23 18:37:15 · 348 阅读 · 0 评论 -
Java排序算法(二):堆排序
Java排序算法(二):堆排序堆积排序(Heapsort)是指利用堆积树(堆)这种资料结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。堆排序是不稳定的排序方法,辅助空间为O(1), 最坏时间复杂度为O(nlog2n) ,堆排序的堆序的平均性能较接近于最坏性能。 堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(转载 2015-03-23 18:33:51 · 376 阅读 · 0 评论 -
深入Java集合学习系列:LinkedHashSet的实现原理
深入Java集合学习系列:LinkedHashSet的实现原理1. LinkedHashSet概述: LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。 注意,此实现不是同步的。转载 2015-03-23 18:30:01 · 391 阅读 · 0 评论 -
Java面试题集(1-50)
下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最新版本,去掉了EJB 2.x等无用内容,补充了数据结构和算法相关的题目、经典面试编程题、大型网站技术架构、操作系统、数据库、软件测试、设计模式、UML等内容,同时还对很多知识点进行了深入的剖析,例如h原创 2015-03-21 17:21:02 · 549 阅读 · 0 评论 -
挑战算法之路
这篇博客是网上一个大牛的,我感觉内容很好,就转载过来。《挑战算法之路》的源代码可以从GitHub下载,网址链接:点击打开链接也可以从GoogleCode下载,网址链接:点击打开链接挑战算法之路Way to Algorithm目录页第2版声明 ...............................转载 2015-03-28 18:13:06 · 1353 阅读 · 1 评论 -
KMP算法详解
1. 引言 KMP算法困扰了我很久,不管是因为什么原因,自始至终从来没有彻彻底底搞清楚。今天决心彻底搞明白,花了好多时间,不过收获颇多! 下面,咱们从暴力匹配算法讲起,随后阐述KMP的流程 步骤、next 数组的简单求解 递推原理 代码求解,接着基于next 数组匹配,谈到有限状态自动机,next 数组的优化,KMP的时间复杂度分析,最后简要介绍两个KMP的扩原创 2015-03-20 19:24:23 · 365 阅读 · 0 评论 -
C/C++从入门到高手所有必备PDF书籍收藏
C/C++从入门到高手所有必备PDF书籍收藏,喜欢的朋友支持下吧~C:《C和指针》- PDF高清版下载地址:http://www.fishc.com/a/book/C/821.html《C程序设计语言》- 完美中文版PDF下载地址:http://www.fishc.com/a/book/C/632.html《The C Programming Lan原创 2015-03-20 20:01:31 · 718 阅读 · 2 评论 -
Java数据结构---链表常用操作(II)--续
此文是续上篇博客内容,包括很多经典的算法,也包括很多编程技巧,希望对广大朋友有帮助。(8)//查找倒数第几个元素 public Node findBackthData(int num)(9)//反转链表 public void reverseLink()(10)public void printReverseLink(Node pNode)(10)//原创 2015-03-26 21:36:07 · 336 阅读 · 0 评论