- 博客(54)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
转载 ConcurrentHashMap和HashMap的区别
从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了。ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable
2016-03-29 10:35:00 827
原创 Oracle scott账户被锁定,scott默认密码,sys,system默认密码
oracle帐号scott被锁定如何解锁 具体操作步骤如下: C:> sqlplus 请输入用户名:sys 输入口令:sys as sysdba //注意:在口令这里输入的密码后面必须要跟上 as sysdba 才可以。 SQL> alter user scott account unlock; 用户已更改. SQL
2016-03-28 17:06:17 33120
原创 Python3基本数据类型
Python3 基本数据类型Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。Python 3中有六个标准的数据类型:Numbers(数字)String(字符串)List(列表)Tuple(元组)Sets(集合)
2016-03-27 19:04:48 878
原创 Dijkstra
指定一个点(源点)到其余各个顶点的最短路径-单源最短路径( Dijkstra算法)1、将所有顶点分为两部分:已知最短路程的顶点集合P和未知最短路径的顶点集合Q。最开始,已知最短路径的顶点集合P中只有源点一个顶点。我们这里用一个book数组来记录哪些点在集合P中。例如对于某个顶点i, 如果book[i] 为1则表示这个顶点在集合P中,如果book[i]为0则表示这个顶点在集合Q中。2
2016-03-25 17:44:54 465
转载 Floyd-Warshall算法
loyd-Warshall算法,简称Floyd算法,用于求解任意两点间的最短距离,时间复杂度为O(n^3)。我们平时所见的Floyd算法的一般形式如下:1 void Floyd(){2 int i,j,k;3 for(k=1;kn;k++)4 for(i=1;in;i++)5 for(j=1;jn;j++)6
2016-03-25 17:10:07 631
转载 单例模式
本文来源于:http://cantellow.iteye.com/blog/838473第一种(懒汉,线程不安全): Java代码 public class Singleton { private static Singleton instance; private Singleton (){} public static Sin
2016-03-23 23:24:21 323
转载 Hibernate缓存
本文来源于:http://www.cnblogs.com/wean/archive/2012/05/16/2502724.html一、why(为什么要用Hibernate缓存?)Hibernate是一个持久层框架,经常访问物理数据库。为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的
2016-03-23 21:54:27 388
转载 HashTable 和 HashMap的区别
本文来源于:http://blog.csdn.net/shohokuf/article/details/3932967我们先看2个类的定义[java] view plain copypublic class Hashtable extends Dictionary implements Map, Clo
2016-03-22 00:26:29 433
原创 实现对象的克隆
实现对象的克隆有两种方式:1)实现Clonable接口并重写Object类的clone()方法2)实现Serializable接口,通过对象的序列化和反序列化,可以实行真正的深度克隆package zqd.demo;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import ja
2016-03-19 13:03:42 361
原创 Java中访问权限修饰符protected, default
作用域 当前类 同package 子孙类其他package public√ √ √√ protected√√√× default√√×× private√×××
2016-03-18 00:04:04 4409
原创 输出一个数n的全排列
题目:输入一个数n, 输出1~n的全排列。package smart;public class Test { public static void main(String[] args) { dfs(4); } /* * 打印1~n的全排列 */ public static void dfs(int n){ int[] arr = new int[n]; in
2016-03-17 12:06:25 6228
原创 贝叶斯公式
P(A|B)=( P(B|A)*P(A) ) / P(B);推导: P(AB)=P(A)*P(B|A) = P(B) * P(A|B);
2016-03-14 17:49:23 435
原创 不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+,-,* , /四则运算符号。public static int sum(int num1, int num2){ int sum =0,carry=0 ; do{ sum = num1 ^ num2; carry = (num1&num2)<<1; num1 = sum; num2 = carry;
2016-03-13 21:01:31 349
原创 判断是否是平衡二叉树
题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。package offer;/** * 判断是否是平衡二叉树 * */public class IsBalanced { public static void main(String[] args){ int[] pre = {1,2,4,5
2016-03-13 15:54:16 441
原创 二叉树的深度
题目:输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根,叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:如果一棵树只有一个结点,它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加1.如果既有左子树又有右子树,那该树的深度就是其左右子树深度的较大值加1.
2016-03-12 20:50:51 368
原创 统计数字在排序数组中出现的次数
题目:统计一个数字在排序数组中出现的次数。例如输入输入排序数组{1,2,3,3,4,5}和数字3,输出2.思路:使用二分查找法,时间复杂度O(logN)package offer;/** * 统计一个数字在排序数组中出现的次数。 * 二分查找法,时间复杂度O(logN) * @author zhangqd * */public class GetNumberOfK { p
2016-03-12 20:13:01 2226
原创 两个链表的第一个公共结点
题目:输入两个链表,找出它们的第一个公共结点。package offer;/* * 两个链表的第一个公共结点 */public class FindFirstCommonNode { public static ListNode findFirstCommonNode(ListNode root1, ListNode root2){ int length1 = getList
2016-03-12 19:24:26 345
转载 Java垃圾回收机制
说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为“垃圾”?那么当一些对象被确定为垃圾之后,采用什么样的策略来进行回收(释放空间)?在目前的商业虚拟机中,有哪些典型的垃圾收集
2016-03-12 13:12:15 332
翻译 DeadLock Prevention
本文来源与:http://tutorials.jenkov.com/java-concurrency/deadlock-prevention.htmlIn some situations it is possible to prevent deadlocks. I'll describe three techniques in this text:Lock OrderingLo
2016-03-12 00:21:35 543
原创 第一个只出现一次的字符
题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出'b'。思路:使用哈希表,定义哈希表的键值(Key)是字符,而值(Value)是该字符出现的次数。同时我们还需要从头开始扫描字符串两次。第一次扫描字符串时,每扫描到一个字符就在哈希表的对应项中把次数加1。接下来第二次扫描,每扫描到一个字符就能从哈希表中得到该字符出现的次数。这样第一个只出现一次的字符就是符合要求的。
2016-03-09 17:25:22 351
转载 字符串的全排列
字符串的全排列设计一个算法,输出一个字符串字符的全排列。比如,String = "abc"输出是"abc","bac","cab","bca","cba","acb"算法思想从集合依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理
2016-03-08 22:27:54 338
原创 二叉搜索树与双向链表Java
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的方向。思路:在二叉搜索树中,左子结点的值总是小于父子结点的值,右子结点的值总是大于父结点的值。因此在转换成排序的双向链表时,原先指向左子节点的值调整为 链表中指向前一个结点的指针,原先指向右子结点的指针调整为链表中指向后一个结点的指针。根结点,左子树和右子树。在把左,右
2016-03-08 18:51:12 1190
原创 二叉搜索树的后序遍历序列Java
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true, 否则返回false。假设输入的数组的任意两个数字都互不相同。思路:在后序遍历得到的序列中,最后一个数字是树的根结点的值。数组中前面的数字可以分为两部分:第一部分是左子树根结点的值,它们都比 根结点的值小;第二部分是右子树根结点的值,它们都比根结点的值大。package offer;public
2016-03-08 16:10:11 1615
原创 从上往下打印二叉树
题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左按照从左到右的顺序打印。思路:使用队列。广度优先遍历二叉树。不管是广度优先遍历一个有向图还是一棵树,都要用到队列。第一步我们把起始节点(对树而言是根结点)放入队列中。接下来每一次从队列的头部取出一个结点,遍历这个结点之后把它能到达的结点(对树而言是子节点)都依次放入对列。重复这个遍历过程,直到队列中的结点全部被遍历为止。packag
2016-03-08 13:20:01 359
原创 栈的压入、弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是压入序列,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不是该栈的弹出序列。思路:构造一个辅助栈,如果下一个弹出的数字刚好是栈顶数字,那么直接弹出。如果下一个弹出的数字不在栈顶,我们把压栈序列中还没有入栈的数字压入辅助
2016-03-08 12:15:56 324
原创 包含min函数的栈Java
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min, push, 及pop的时间复杂度都是O(1)。思路:使用两个栈,当向栈中添加元素时,与辅助栈中元素比较,如果小,向辅助栈中添加该元素,向辅助栈中再次添加辅助栈栈顶元素。package offer;import java.util.Stack;public class MinStac
2016-03-08 10:07:25 779
原创 二叉树的镜像
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。通过画图,可知二叉树的镜像如下图所示:Java代码:package offer;import java.util.LinkedList;import java.util.Queue;public class MirrorRecursively { /* * 求二叉树的镜像 * 先前序遍历这棵树
2016-03-07 21:24:04 265
原创 树的子结构
题目:输入两棵二叉树A 和B,判断B是不是A的子结构。(B树是否在A树中)思路:第一步在树A中找到和B的根结点的值一样的结点R, 第二步再判断树A中以R为根结点的子树是不是包含和树B一样的结构。package offer;public class SubTree { public static void main(String[] args) { BinaryTreeNode n
2016-03-06 18:23:56 312
原创 合并两个递增排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。package offer;public class MergeSortedLists { public static void main(String[] args) { ListNode node1 = new ListNode(1); ListNode node2 = new ListNod
2016-03-06 16:55:07 692
原创 反转链表Java
题目:定义一个链表,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。思路:反转链表时,为了保证链表不断开,需要保存三个引用,指向前一结点的引用,当前结点的引用,指向后一结点的引用。//反转链表 public static ListNode reverseList(ListNode head){ if(head==null)return null; ListNode re
2016-03-06 13:06:04 459
原创 链表中倒数第k个结点java
题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。思路:两个指针,需要注意链表总数是否少于k。/* * 求链表的倒数第k个结点 */ public static ListNode findKthToTail(ListNode head,int k){ if(head==null || k==0) retur
2016-03-06 12:29:12 1534
原创 调整数组顺序使奇数位于偶数前面Java
题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。package offer;public class ReorderOddEven { public static void main(String[] args) { int[] arr = {4,3,5,6,9,10,12}; reorderOddEv
2016-03-06 11:15:23 613
原创 O(1)时间删除链表结点java
题目: 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。思路:把下一结点的内容复制到需要删除的结点,删除下一结点,相当于删除当前结点。 当我们想删除一个结点时,并不一定要删除这个结点本身。可以先把下一个结点的内容复制出来覆盖被删除结点的内容,然后把下一个结点删除。假定待删除结点在链表中。/* * O(1)时间删除单链表某一结点 */ public
2016-03-06 10:07:55 1573
空空如也
程序是如何计算中缀表达式
2015-05-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人