- 博客(19)
- 资源 (7)
- 收藏
- 关注
转载 三种线性排序算法 计数排序、桶排序与基数排序
[非基于比较的排序]在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销。排序算法有非常多种,如我们最常用的快速排序和堆排序等算法,这些算法需要对序列中的数据进行比较,因为被称为基于比较的排序。基于比较的排序算法是不能突破O(NlogN)的。简单证明如下:N个数有N!个可能的排列情况,也就是说基于比较的排序算法的判定
2016-07-31 22:37:02 327
原创 内部类访问局部变量的时候,为什么变量必须加上final修饰
这里的局部变量就是在类方法中的变量,能访问方法中变量的类当然也是局部内部类了。我们都知道,局部变量在所处的函数执行完之后就释放了,但是内部类对象如果还有引用指向的话它是还存在的。例如下面的代码:class Outer{ public
2016-07-31 09:20:42 667
原创 ClassNotFoundException和NoClassDefFoundError的区别
正如它们的名字所说明的:NoClassDefFoundError是一个错误(Error),而ClassNOtFoundException是一个异常,在Java中错误和异常是有区别的,我们可以从异常中恢复程序但却不应该尝试从错误中恢复程序。ClassNotFoundException的产生原因:Java支持使用Class.forName方法来动态地加载类,任意一个类的类名如果被作为参数传递给这个方法都
2016-07-29 10:35:22 378
原创 Java并发编程:Callable、Future和FutureTask
一般常见的创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执
2016-07-25 22:51:58 395
原创 数据库进阶之数据库事务(ACID)
事务(Transaction)是并发控制的基本单位。 所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。数据库事务必须具备ACID特性,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)的英
2016-07-25 10:57:01 232
转载 数据库进阶之数据库索引
一、引言对数据库索引的关注从未淡出我的们的讨论,那么数据库索引是什么样的?聚集索引与非聚集索引有什么不同?希望本文对各位同仁有一定的帮助。有不少存疑的地方,诚心希望各位不吝赐教指正,共同进步。[最近首页之争沸沸扬扬,也不知道这个放在这合适么,苦劳?功劳?……] 二、B-Tree我们常见的数据库系统,其索引使用的数据结构多是B-Tree或者B+Tree。例如,MsSql使用的是
2016-07-25 10:49:33 182
转载 数据库进阶之数据库范式
数据库范式(Normal forms):是用于规范关系型数据库设计,以减少谬误发生的一种准则。 1NF(first normal form):Table faithfully represents a relation and has no repeating groups.数据库表必须如实地展现“关系”,并且不允许有“重复组”出现。 这样的概念真是令人痛心疾首,我们只好再
2016-07-25 10:48:24 392
转载 java虚拟机内存分配之新生代与老年代GC
堆设置 -Xms :初始堆大小 -Xmx :最大堆大小 -XX:NewSize=n :设置年轻代大小 -XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5 -XX:MaxPermSize=n :设置持久代大小 收集器
2016-07-15 16:22:34 4818
原创 Java虚拟机之对象探秘
Java虚拟机之对象探秘对象的创建虚拟机遇到一条new指令时,首先会检查指令参数是否能够在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有,那么必须先执行相应的类加载过程。类加载过程通过后,接下来就是虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可确定,即在Java堆中分配一块确定大小的内存。- 如果Java堆内存是绝对规整的,
2016-07-14 16:53:53 369
原创 JVM的GC日志分析
JVM的GC日志的主要参数包括如下几个:-XX:+PrintGC 输出GC日志-XX:+PrintGCDetails 输出GC的详细日志-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)-
2016-07-14 15:56:56 401
转载 阿里面试题总结
(Java 基础) Java的四个基本特性(抽象、封装、继承,多态),对多态的理解(多态的实现方式)以及在项目中那些地方用到多态 Java的四个基本特性 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么
2016-07-12 21:43:55 24622
原创 剑指offer-机器人的运动范围
剑指offer-机器人的运动范围分享此题的目的是目前对回溯类型算法不太熟悉,这里做个记录,题目并不难 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格35,38),因为3+5+3+
2016-07-09 17:26:40 607
原创 剑指offer-矩阵中的路径
剑指offer-矩阵中的路径问题描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串”bcced”的路径,但是矩阵中不包含”abcb”路径
2016-07-09 16:15:14 2332
原创 剑指offer-正则表达式匹配
正则表达式匹配题目描述 请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配,特别的注意,a* 、a*b* 等模式是可以匹配0一个字符串的问题分析下面是匹
2016-07-07 16:40:04 440
原创 剑指offer-数组中只出现一次的数字
数组中只出现一次的数字 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。分析:相信大家对数组中只有一个数字对出现一次,其他都出现2次的题目(算法)都清楚,嗯,对,就是异或。/*** 数组a中只有一个数出现一次,其他数都出现了2次,找出这个数字* @param a* @return*/public static int find1From
2016-07-02 17:51:50 343
原创 剑指offer-数字在排序数组中出现的次数
数字在排序数组中出现的次数 统计一个数字在排序数组中出现的次数。很明显,对于语序有序数组而言,二分查找再适合不过了 普通的二分查找 二分查找到元素对应的索引,然后向前、向后遍历查找计数 package com.genge.offer;/** * Created by Genge on 2016-07-02. * 统计一个数字在排序数组中出现的次数。 */public cl
2016-07-02 12:10:06 273
原创 剑指offer-两个链表的第一个公共结点
两个链表的第一个公共结点 输入两个链表,找出它们的第一个公共结点。分析关键点: 这是一道微软的面试题。微软非常喜欢与链表相关的题目,因此在微软的面试题中,链表出现的概率非常高。如果两个单向链表有公共的节点,也就是说两个链表从某一个节点开始,它们的m_pNext都指向同一个节点。但由于是单向链表的节点,每个节点只有一个m_pNext,因此从第一个公共节点开始,之后它们所有的节点都是重合的,不
2016-07-02 11:33:21 528
转载 如何判断链表中是否有环
今天面试被问住了,很惭愧啊,回来上网查了一下思路。自己写了点程序。1.如何判断是否有环?如果有两个头结点指针,一个走的快,一个走的慢,那么若干步以后,快的指针总会超过慢的指针一圈。2.如何计算环的长度?第一次相遇(超一圈)时开始计数,第二次相遇时停止计数。3.如何判断环的入口点:碰撞点p到连接点的距离=头指针到连接点的距离,因此,分别从碰撞点、头指针开始走,相遇
2016-07-02 11:09:53 241
原创 HashMap方法hash()、tableSizeFor()
HashMap#hash() /** * Computes key.hashCode() and spreads (XORs) higher bits of hash * to lower. Because the table uses power-of-two masking, sets of * hashes that vary only in bit
2016-07-01 16:21:44 4905 5
高质量C++。doc
2018-11-27
DWR入门教程.pdf
2014-09-30
prototype1.7.js
2014-08-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人