java
文章平均质量分 67
E01014165
这个作者很懒,什么都没留下…
展开
-
排序算法总结
排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。 内排序有可以分为以下几类: (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。 (2)、选择排序:简单选择排序、堆排序。 (3)、交换排序:冒泡排序、快速排序。 (4)、归并排序 (5)、基数排序(1)插入排序•关键问原创 2016-08-31 21:10:19 · 665 阅读 · 0 评论 -
约瑟夫环 (孩子们的游戏(圆圈中最后剩下的数))
每年六一儿童节,NowCoder都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为NowCoder的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样原创 2016-06-29 12:08:45 · 1494 阅读 · 0 评论 -
数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。/*考虑过程: 首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。 这个题目的突破口在哪里?题目为什么要强调有一个数字出现一次,其他的出现两次?我们想到了异或运算的性质:任何一个数字异或它自己原创 2016-06-27 21:42:15 · 372 阅读 · 0 评论 -
剑指offer 二叉树中和为某一值的路径
public class Solution { ArrayList list = new ArrayList(); ArrayList> resList = new ArrayList>(); public ArrayList> FindPath(TreeNode root,int target) { if(root == null)原创 2016-06-05 21:31:50 · 310 阅读 · 0 评论 -
java switch语句详解
switch 语句的格式: switch ( 整型或字符型变量 ){ case 变量可能值1 : 分支一; break; case 变量可能值2 : 分支二; break; case 变量可能值3 : 分支三;转载 2016-06-11 16:26:46 · 966 阅读 · 0 评论 -
丑数
解法一 《参考程序员面试金典》1)初始化array和队列:Q2 Q3 Q52)将1插入array3)分别将1*2、1*3 、1*5插入Q2 Q3 Q54)令x为Q2 Q3 Q5中的最小值,将x添加至array尾部5)若x存在于: Q2:将 x * 2、x * 3、x*5 分别放入Q2 Q3 Q5,从Q2中移除x Q3:将 x *转载 2016-06-24 21:50:02 · 333 阅读 · 0 评论 -
java移位运算符
移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:>(带符号右移)和>>>(无符号右移)。 在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次转载 2016-05-09 21:24:15 · 2851 阅读 · 0 评论 -
深入理解容器系列之五--------hashcode和equal
1、在jdk源码中,hashcode和equal是怎么定义的[java] view plain copy print?public native int hashCode(); [java] view plain copy print?public boolean equals(Objec转载 2016-05-15 21:03:42 · 421 阅读 · 0 评论 -
深入理解容器系列之四--------HashMap原理
1、为什么需要HashMap前面我们说了ArrayList和LinkedList,它们对容器内的对象都能实现增、删、改、查、遍历等操作,并且对应不同的情况,我们可以选择不同的List,用以提高效率。从功能上来说,这个容器已经设计得很好了,为什么我们还要HashMap呢?接下来,让我们细细地分析:在程序中,我们最常用的动作就是存数据和取数据,存数据就是把数据存起来(包转载 2016-05-15 20:15:47 · 660 阅读 · 0 评论 -
PriorityQueue
PriorityQueuePriorityQueue是个基于优先级堆的极大优先级队列。此队列按照在构造时所指定的顺序对元素排序,既可以根据元素的自然顺序来指定排序(参阅 Comparable),也可以根据 Comparator 来指定,这取决于使用哪种构造方法。优先级队列不允许 null 元素。依靠自然排序的优先级队列还不允许插入不可比较的对象(这样做可能导致 ClassCastE转载 2016-05-27 16:33:03 · 811 阅读 · 0 评论 -
逻辑运算符的短路特性 求1+2+3+...+n
题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。逻辑与的短路特性:当&&左部分的表达式为false,则不执行右部分的表达式public class Solution { public int Sum_Solution(int n) { int sum =原创 2016-06-29 15:51:55 · 1327 阅读 · 0 评论 -
DFS leetcode 22. Generate Parentheses
GGiven n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.For example, given n = 3, a solution set is:[((())), (()()), (())(), ()(()), ()()()]原创 2016-06-14 16:04:34 · 361 阅读 · 0 评论 -
java排序算法 堆排序
利用二叉堆排序其实就是循环移除顶部元素到数组末尾,然后利用Sink重建堆的操作。如下图,实现代码如下:public static void headSort(int[] data) { int n = data.length; for(int i = 0; i < n; i++) { creatMaxHeap(data, n - 1 - i); swap(data, 0 ,原创 2016-06-14 20:33:33 · 341 阅读 · 0 评论 -
Java初始化顺序
1 无继承情况下的Java初始化顺序:class Sample{ Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用");转载 2016-08-20 10:00:35 · 345 阅读 · 0 评论 -
JAVA --String类笔试面试题
字符串对象是一种特殊的对象.String类是一个不可变的类..也就说,String对象一旦创建就不允许修改String类有一个对应的String池,也就是 String pool.每一个内容相同的字符串对象都对应于一个pool里的对象.1 看下面一段代码.String s = new String("abc"); String s1 = "abc"; Strin转载 2016-07-30 20:53:09 · 257 阅读 · 0 评论 -
hashCode相关性能优化
学习下hashMap中用到的关于hashCode性能优化技巧,作为笔记,为之后并发深入作基础。1.关于提高性能的hash算法在被模的位数为2的n次方时,用位与代替效率低下的模运算。位与效率相比模运算效率更高。例:15%4=3,代替为 15 & 3=1111 & 0011=0011=3hashmap中在求得某个key后,需要找到在哪个Entry数组下标的运算如下:转载 2016-07-18 21:20:49 · 293 阅读 · 0 评论 -
Servlet、Struts1、Struts2线程安全
对java servlet 单例模式的理解理解两个问题足以,问题如下:1、如果不同的2个用户同时对这个网站的不同业务同时发出请求(如注册和登陆),那容器里有几个servlet呢??2、不同的用户同时对同一个业务(如注册)发出请求,那这个时候容器里产生的有是几个servlet实例呢?答案:引子:一个web容器,可以有多个servlet。 对提交到同转载 2016-07-17 10:47:57 · 468 阅读 · 0 评论 -
深入理解Java的接口和抽象类
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口转载 2016-07-16 21:55:41 · 1672 阅读 · 1 评论 -
二叉树的层次遍历(打印)
一:按层打印按层打印原本是十分基础的内容,本例将同一层的节点打印在同一行上,并输出行号。关键问题是换行的时机。只需要用两个node类型的变量last和nLast即可解决这个问题。last变量表示正在打印的当前行的最右节点,nLast表示下一行的最右节点。假设我们每一层都做从左到右的宽度优先遍历,如果发现遍历到的节点等于last,说明该换行了。换行之后只要令last = nLast,就可以继原创 2016-06-30 21:19:02 · 938 阅读 · 0 评论 -
二叉树的下一个节点(中序)
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode原创 2016-06-30 17:27:36 · 405 阅读 · 0 评论 -
删除链表中重复的结点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解法一:递归/* public class ListNode { int val; ListNode next = null; ListNode(int val) {原创 2016-06-30 11:52:04 · 280 阅读 · 0 评论 -
深入理解容器系列之二--------ArrayList的总结
按照前面总纲来学习ArrayList1、ArrayList的特点主要特点:按照插入顺序来保存元素,可以利用下标来查找值2、ArrayList的优点:按照下标访问元素最快3、ArrayList的缺点:在中间插入元素很慢删除元素很慢4、ArrayList的主要功能:转载 2016-05-15 13:37:10 · 299 阅读 · 0 评论 -
容器的归纳和总结系列之一
1、什么是容器?在程序中,容器是一种用来容纳对象的数据结构,比如说list、set 、map、queue。2、为什么需要容器?我们为什么需要容器呢?因为在程序中,我们会在任意时刻和任意位置创建任意数量的对象。没有容器,我们能够坐到在任意时刻和任意位置创建对象,但是创建任意数量的对象却是做不到。有人说我们有数组呀,但是数组的大小是不能改变的呀。所以迫于这种任意数量对象转载 2016-05-15 13:35:07 · 306 阅读 · 0 评论 -
深入理解容器系列之三--------LinkedList、Stack、Queue、PriorityQueue的总结
1、这几种容器的特点都是按照顺序来存储元素。取元素的时候的不同点:LinkedList:按照下标随意取元素Stack:后进先出取元素Queue:先进先出取元素PriorityQueue:按照优先级来取元素总结:以上四种都是按照顺序来存储元素的,但是就是取元素的时候顺序不一样,这样就把大部分情况都涵盖在里面了,彰显出容器设计的全面性和考虑得很周转载 2016-05-15 13:33:05 · 1147 阅读 · 0 评论 -
java split
在项目中经常会遇到按字符分割字符串的情况,可以使用String对象的split函数进行分割。 先看实际情况: Java代码 String str = "关键词1 关键词2 关键词3"; String[] words = str.split(" "); for(String word : words){ System.ou转载 2016-03-26 22:31:15 · 245 阅读 · 0 评论 -
Java移位操作符
移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:>(带符号右移)和>>>(无符号右移)。 在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次转载 2016-03-26 17:27:52 · 315 阅读 · 0 评论 -
java枚举类型
package com.idomov.comm.conf;public enum Audit { 全部(0,"全部"),审核通过(1,"审核通过"),审核失败(2,"审核失败"),待审核(3,"待审核"); private final Integer value; private final String ladel; private Audit(Integer valu原创 2016-03-17 17:28:52 · 336 阅读 · 0 评论 -
javax.persistence.NoResultException: No entity found for query 异常解决办法
@Overridepublic AddressModel getDefaultByMemberId(Long id) {// TODO Auto-generated method stubString hql = "SELECT a FROM AddressModel a WHERE a.member.memberId=:id "+"AND a.addressDefault=:ad原创 2016-03-17 17:22:16 · 2365 阅读 · 0 评论 -
jpa入门之环境搭建和CRUD基本操作
hibernate虽然好用但编写映射文件还是比较麻烦,虽然可以借助插件但是后期的维护还是比较麻烦,jpa的全称是Java Persistence API,实现该规范的产品很多像hibernate就是其中比较出名的一个,原则上应该尽量不要使用hibernate,可惜jpa只是一个接口规范,自 己按照规范写一套也不现实,只能通过hibernate间接的使用jpa.1 使用hibernate的j转载 2015-11-25 14:57:59 · 551 阅读 · 0 评论 -
深入理解Hibernate的三种状态
学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久化状态就是已经被保存到数据库中,离线状态就是数据库中有,但是session中不存在该对象。但是大家又是否对hibernate的ses转载 2015-11-25 14:56:36 · 275 阅读 · 0 评论 -
java 抽象类
抽象类的特点:1. 抽象方法一定在抽象类中2. 抽象方法和抽象类都必须被abstract关键字修饰3. 抽象类不可以用new创建对象。因为调用抽象方法没意义4. 抽象类中的方法要被使用,必须由子类复写其所有的抽象方法后,简历子类对象调用。如果子类只覆盖了原创 2015-04-26 15:26:22 · 503 阅读 · 0 评论 -
Java 模板方法设计模式
例: 需求:获取一段程序运行的时间。原理: 获取程序开始和结束的时间并相减。获取时间: System.currentTimeMillis();代码优化后,就可以解决此类问题。这种方式,模板方法设计模式。在定义功能时,功能的一部分是确定的,但是有一部分不确定,而确定的部分在使用不确定的部分。那么这时就将不确定的部分暴露出去。由该类的子类去完成。packag原创 2015-04-26 16:30:35 · 475 阅读 · 0 评论 -
Java 接口
接口中:常量: public static final(固定)方法: public abstract(固定)接口中的成员都是public 的。接口是不可以创建对象的,因为有抽象方法。需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。否则子类是一个抽象类。接口可以被类多实现(对多继承不支持的转换形式)。jAVA支持多实现。inte转载 2015-04-26 16:54:38 · 362 阅读 · 0 评论 -
Set实现没有重复元素
Set和数学中的集合是同一个概念,就是没有重复元素的集合。 这篇文章主要论述了Set是如何实现"没有重复元素"(no duplicate elements)的,以及阐述了什么是“重复”(duplicate),是相同的地址空间?是equals的返回值为true?是compareTo的返回值为0 ?还是有相同的hashCode?本文还给出了在什么情况下使用什么样的Set的建议。 注:本转载 2016-03-27 12:11:53 · 639 阅读 · 0 评论 -
String,StringBuffer与StringBuilder的区别
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常转载 2016-03-27 21:40:09 · 249 阅读 · 0 评论 -
struts2中<s:if>标签的使用
A:判断字符串的问题:1、判断单个字符:<s:if test="#session.user.username=='c'">这样是从session中取出username的值,并且判断其是否为c,但是这样判断是不正确的,这样判断的话,根本判断不出来,要改成下面这样:'c'.toString()">这样判断才能正确判断,至于原因我也不知道,在网上看到struts2中可转载 2016-03-28 12:15:00 · 599 阅读 · 0 评论 -
白话经典算法系列
http://blog.csdn.net/MoreWindows/article/category/859207转载 2016-05-14 13:37:58 · 511 阅读 · 0 评论 -
Java中HashMap遍历的两种方式比较
第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getVa转载 2016-05-26 21:50:52 · 316 阅读 · 0 评论 -
java Map及Map.Entry详解
Map是java中的接口,Map.Entry是Map的一个内部接口。Map提供了一些常用方法,如keySet()、entrySet()等方法。keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry。它表示Map中的一转载 2016-05-26 21:50:12 · 4631 阅读 · 0 评论 -
HashSet
HashSet 的实现 对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码: Java代码 public class HashSet extends AbstractSet im转载 2016-05-26 21:14:25 · 316 阅读 · 0 评论