Java
KodeWang
赠人玫瑰,手有余香
博客撰写已经迁移到: www.wangxingyin.cn 如果想要查看其它,请移步
展开
-
学习之吻
第一问:JdbcTemplate有什么好处?有没有类似的竞品,分别分析其优劣// TODO什么是回调接口?//TODOSpring中的 bean 注入不进去遇到这种问题,先在配置文件中中看有没有将类在xml文件中配置。如果发现配置了,但还是在测试类中注入不进去,这个时候再看一下有没有在测试类上面给配置运行环境。最上面两行一定要加,,,@RunWith(SpringJUn...原创 2018-08-01 18:08:07 · 150 阅读 · 0 评论 -
leetCode_15_3Sum
题目描述Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note: The solution set must not contain du原创 2017-10-26 10:42:57 · 175 阅读 · 0 评论 -
LeetCode_697_Degree of an Array
题目描述Given a non-empty array of non-negative integers nums, the degree of this array is defined as the maximum frequency of any one of its elements.Your task is to find the smallest possible length of a原创 2017-10-16 21:26:13 · 854 阅读 · 0 评论 -
偶串
题目描述:如果一个字符串由两个相同字符串连接而成,就称这个字符串是偶串。例如”xyzxyz”和”aaaaaa”是偶串,但是”ababab”和”xyzxy”却不是。 牛牛现在给你一个只包含小写字母的偶串s,你可以从字符串s的末尾删除1和或者多个字符,保证删除之后的字符串还是一个偶串,牛牛想知道删除之后得到最长偶串长度是多少。 输入描述:输入包括一个字符串s,字符串长度length(2 ≤ lengt原创 2017-10-13 20:17:15 · 202 阅读 · 0 评论 -
分苹果
题目描述n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1。输入描述每个输入包含一个测试用例。每个测试用例的第一行包含一个整数 n(1 <= n <= 100),接下来的一行包含 n 个整数 ai(1 <= ai <= 1原创 2017-10-23 11:51:47 · 238 阅读 · 0 评论 -
彩色瓷砖
题目描述:链接:https://www.nowcoder.com/questionTerminal/31af498841fd491886b8dee6ebde9768 来源:牛客网牛牛喜欢彩色的东西,尤其是彩色的瓷砖。牛牛的房间内铺有L块正方形瓷砖。每块砖的颜色有四种可能:红、绿、蓝、黄。给定一个字符串S, 如果S的第i个字符是’R’, ‘G’, ‘B’或’Y’,那么第i块瓷砖的颜色就分别是红、绿、原创 2017-10-12 22:04:58 · 277 阅读 · 0 评论 -
NPE(null point Exception)产生的场景
public int f() {return Integer 对象},如果为 null,自动解箱抛 NPE。数据库的查询结果可能为 null。集合里的元素即使 isNotEmpty,取出的数据元素也可能为 null。远程调用对象时,一律要求进行空指针判断,防止 NPE。对于Session 中获取的数据,建议 NPE 检查,避免空指针。级联调用 obj.getA().getB().getC(原创 2017-10-12 21:08:51 · 2183 阅读 · 1 评论 -
LeetCode_24_Swap Nodes in Pairs
题目描述Given a linked list, swap every two adjacent nodes and return its head.For example, Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm should use only constant space. You ma原创 2017-10-27 17:18:27 · 196 阅读 · 0 评论 -
异常:Exception in thread "main" java.util.ConcurrentModificationException
错误代码: Map<Integer,Integer> map = new HashMap<>(); map.put(1,1); map.put(2,2); map.put(3,3); map.put(4,4); for (Map.Entry<Integer,Integer> entry : map.entrySet())原创 2017-10-19 16:57:38 · 303 阅读 · 0 评论 -
数组中找到出现次数大于N/K的数
说明此题操作 Map 的时候,推荐使用 Entry 集合,尽量不要使用 map.get(), map.keySet() 等。import java.util.HashMap;import java.util.LinkedList;import java.util.List;import java.util.Map;/** * Created by Cser_W on 2017/10/19.原创 2017-10-19 16:50:38 · 390 阅读 · 0 评论 -
LeetCode_21_Merge Two Sorted Lists
题目描述Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.代码实现(两种方式) 第一种:使用非递归的形式 主要思想就是:建立一个头结点,然后依次比较两个链表节点的原创 2017-10-27 09:10:09 · 172 阅读 · 0 评论 -
LeetCode_11_Container With Most Water
题目描述Given n non-negative integers a1, a2, …, an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two原创 2017-10-26 14:26:57 · 297 阅读 · 0 评论 -
LeetCode_19_Remove Nth Node From End of List
题目描述Given a linked list, remove the nth node from the end of list and return its head.示例 Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked lis原创 2017-10-26 16:03:32 · 208 阅读 · 0 评论 -
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to
第一个问题先给出异常信息:连接数据库...Goodbye!com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. at sun.reflect.NativeConstructorAccessorImp...原创 2018-07-30 09:31:29 · 2154 阅读 · 0 评论 -
ArrayList中有利于GC的设计
ArrayListpublic class ArrayList&lt;E&gt; extends AbstractList&lt;E&gt; implements List&lt;E&gt;, RandomAccess, Cloneable, java.io.SerializableArrayList的初始容量为10,需要的扩容的话:扩容1.5倍,允许存放 null...原创 2018-07-15 22:56:09 · 380 阅读 · 0 评论 -
Java常用命令:jps、jstack、jmap、jstat(带有实例教程)
查看Java进程:jps查看线程堆栈命令:jstack命令打印内存映射,制作堆Dump命令:Jmap查看java 堆(heap)使用情况,执行命令:查看堆内存(histogram)中的对象数量及大小。执行命令:性能监控工具命令:jstat参考资料查看Java进程:jps用法介绍 jps命令:显示所有进程号和短的类名称 Jps –q 命令:只...原创 2018-07-10 19:35:26 · 5609 阅读 · 2 评论 -
JVM-HotSpot虚拟机-即时编译器、编译优化等相关知识
@author Kode@date:2018年6月28日11:02第五期:JVM-HotSpot虚拟机-即时编译器、编译优化等相关知识。这一部分怎么理解呢?我觉得应该找个主线把它串起来。估计很多人都思考我们写的程序是怎么驱动电脑运行的,今天我们就以Java为例来说道说道。打开IDEA,写了.java程序,一运行,生成.class文件,然后再运行这个文件,最后展示出我们想要的结...原创 2018-06-28 11:13:30 · 186 阅读 · 0 评论 -
Java的类加载机制-双亲委派,破坏双亲委派
思路:尝试着从这5个方面(what,where,when,how, why)描述这个过程。 - (what) 什么是类加载机制: 如果我们想要运行一个类,必须通过JVM把class文件加载到内存然后转换成一个Class对象的过程叫做类加载。 - (where) 类加载过程中会涉及到什么地方 这个我们就得用倒着的思路思考一下,生成的一个类会包含哪些东西:类中的成员方法、成员...原创 2018-07-03 11:06:50 · 749 阅读 · 0 评论 -
ThreadLocal 的理解
线程封闭:仅在单线程内访问数据,不需要同步。也就是说,把一个对象封装到一个线程里面。原创 2018-06-27 22:46:00 · 125 阅读 · 0 评论 -
Java memory model(JMM)的理解
总结:JMM 是一种规范,目的是解决由于多线程通过共享内存进行通信时,存在的本地内存数据不一致、编译器会对代码指令重排序、处理器会对代码乱序执行等带来的问题。目的是保证并发编程场景中的原子性、可见性、有序性。 总结的很精辟! 感谢Hollis总结...原创 2018-07-02 11:24:34 · 204 阅读 · 0 评论 -
Java线程之间的通信
通信方式一:volatile 变量的写 - 读 这一点是利用了 volatile 写 和 读之间规则,也就是:volatile变量写完以后,会将写好的变量值立刻刷新到主存里面, volatile变量被读之前,会先从主存中里面读取这个 volatile变量的值,说到底,volatile变量 就是借助于规则和主存这两个必要条件来进行线程间的通信。如果 volatile 变量 和 其他变量...原创 2018-06-18 17:00:45 · 215 阅读 · 0 评论 -
关于Java并发的一些理解
应该从两个方面去理解并发安全目的 运行一段代码或者一个程序,不管运行多少次,不管是多少个线程运行,其最后得到的结果都是应该一致的。过程 鄙人理解为:为了达到上述目的,只要保证 读和写 的位置,时间,顺序即可。以我现在眼光来看,并发编程主要就是解决上面的读写问题。后面再补一些具体方法;先种个草...原创 2018-06-17 17:24:20 · 202 阅读 · 0 评论 -
Java虚拟机类加载过程
1.加载过程 1.1 通过一个类的全限定名获取定义此类的二进制字节流 1.2 将这个自己流所代表的静态存储结构转化为方法区的运行时数据结构 1.3 在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的访问入口方法区介绍方法区与堆一样,是各个线程的共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。2.原创 2017-12-15 21:26:02 · 272 阅读 · 0 评论 -
leetCode_637_AverageOfLevelsInBinaryTree
题目描述 Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array./** * Definition for a binary tree node. * public class TreeNode { * int val;原创 2017-10-09 15:11:38 · 160 阅读 · 0 评论 -
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
计算机组成原理中的与或非,算术移位,逻辑移位很重要啊 看不懂了,把数字化成二进制模拟一下。n & (~n + 1) 表示的是 n 的二进制最右边 1及其以后的值public int NumberOf1(int n) { int count = 0; while(n != 0){ int a = n & (~n + 1);原创 2017-09-09 20:42:45 · 378 阅读 · 0 评论 -
输入一个链表,反转链表后,输出链表的所有元素。
思想 :在遍历节点时将节点翻转, 需要借助于两个节点 pre 和 curr 这两个节点。pre 节点表示当前已经反转节点的头结点,curr节点表示当前已经翻转到哪一个节点。时间复杂度 O(N),因为只是遍历一次就可以搞定 空间复杂度O (1) 代码实现 public ListNode ReverseList(ListNode head) { if (head == null) re原创 2017-09-09 15:57:44 · 290 阅读 · 0 评论 -
Java库中的具体集合
集合类型 描述 ArrayList 一种可以动态增长和缩减的索引序列 LinkedList 一种可以在任何位置进行高效的插入和删除操作的有序序列 ArrayDeque 一种用循环数组实现的双端队列 HashSet 一种没有重复元素的无序集合 TreeSet 一种有序集 EnumSet 一种包含枚举类型值的集 LinkedHashSet 一种可原创 2017-03-04 10:03:40 · 270 阅读 · 0 评论 -
Java中有抽象类为什么还要接口?
为什么Java程序设计语言要引进接口概念呢?为什么不将Comparable直接设计成如下所示:abstract class Comparable{ public abstract int compareTo(Object other);}然后,一个Employee类再直接扩展这个类,并提供compareTo方法的实现:class Employee extends Comparable{原创 2017-03-01 21:00:26 · 2095 阅读 · 0 评论 -
Java中this与super的用途
this的两个用途: 引用隐式参数 调用该类其他的构造器 super的两个用途: 调用超类的方法 调用超类的构造器原创 2017-02-28 17:25:46 · 705 阅读 · 0 评论 -
Java类设计技巧
1,一定要保证数据私有2,一定要对数据初始化3,不要在类中使用过多的基本类型4,不是所有的域都需要独立的域访问器和域更改器5,将职责过多的类进行分解6,类名和方法名要能够体现他们的职责7,优先使用不可变的类原创 2017-02-28 16:59:18 · 241 阅读 · 0 评论 -
java中Map,List与Set的区别 (http://blog.csdn.net/speedme/article/details/22398395)
Set,List,Map的区别java集合的主要分为三种类型:Set(集)List(列表)Map(映射)要深入理解集合首先要了解下我们熟悉的数组:数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存转载 2017-02-16 23:02:57 · 190 阅读 · 0 评论 -
Java中的静态修饰符 static
静态修饰符的特点 static是一个修饰符,用于修饰成员(成员变量和成员函数) 静态成员随着类的加载而加载。 静态成员优先于对象存在。 静态成员被所有对象所共享 静态成员多了一个中调用方式,可以被类名直接调用。 静态使用的注意事项。 静态方法只能访问静态成员, 非静态方法既可以访问静态又可以访问非静态。 静态方法中不可以定义this,super关键字。因原创 2016-07-31 18:01:16 · 4228 阅读 · 1 评论 -
单例模式中的饿汉式和懒汉式(Java设计模式)
饿汉式代码:class Single{ private static Single s = new Single(); private Single(){} public static Single getInstance() { return s; }}懒汉式代码: 单例延迟加载的示例class Single{ private原创 2016-07-31 18:34:25 · 445 阅读 · 0 评论 -
Java中的final修饰符
final修饰符的特点 它可以修饰类,可以修饰方法,可以修饰变量 final修饰的类是一个最终类,不可以被继承。 final修饰的方法不可以被覆盖。 final修饰的变量的是一个常量,只能被赋值一次。这个赋值指的是显示初始化赋值。 举例:final double PI = 3.14;说明:final修饰的常量定义一般都有规范书写,被final修饰的常量名称,所有字母都大原创 2016-07-31 18:57:34 · 320 阅读 · 0 评论 -
Java中的位运算符与逻辑运算符的区别(&和&&,|和||)
位运算符 & 在运算中,计算机先判断 & 两边的真假,然后才判断整体的真假, 逻辑运算符 && 在运算中,如果计算机判断出有一个为假时,就停止判断, > For example: & 运算符 假 & 假 -> 假 假 & 真 -> 假 > && 运算符 假 && * -> 假| 和 || 运算符也是同理, 在 || 运算符中,只要计算机判原创 2016-07-28 21:47:28 · 1062 阅读 · 0 评论 -
Java常用关键字(public,private,protected)
Java共有48个关键字,全部都是小写public : 公共的,也就是所有类都可以访问 private: 除了包含这个成员的类(就是private定义的类)外,其他的类都不能进行访问 protected : 同一个包内的其他类可以访问,其他包内的类不可以访问原创 2016-07-28 21:17:06 · 507 阅读 · 0 评论 -
Java中的类和对象的理解
类是构造对象的模板和蓝图。由类构造对象的过程称为创建类的实例。对象中的数据称为实例域。操纵数据的过程称为方法对象的三个主要特征: 对象的行为:可以对对象施加哪些操纵,或可以对对象施加哪些方法 对象的状态:当施加那些方法时,对象如何响应 对象标识:如何辨别具有相同行为与状态的不同对象类与类之间的关系常见的关系依赖(“uses-a”) :如果一个类的方法操作另一个类的对象,我们就原创 2017-02-26 21:22:50 · 223 阅读 · 0 评论 -
Java对象存储到什么地方
Java中有5个不同的地方可以存储数据寄存器 最快的存储区,位于处理器内部,但是寄存器数量有限,so 根据需求进行分配,不能直接控制,在程序中不能感觉到寄存器的存在堆栈 位于RAM,通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。创建程序时,java系统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动堆栈指针。Java数据存储原创 2017-04-17 17:25:59 · 1974 阅读 · 0 评论 -
树的三种后序遍历
使用递归进行遍历public static void afterOrder(BinaryTree root) { if (root == null) throw new IllegalArgumentException("请输入一棵树"); if (root.getLeft() != null) afterOrder(r原创 2017-09-14 21:46:21 · 347 阅读 · 0 评论 -
树的中序遍历
中序遍历:先访问每个节点的左孩子,再访问节点本身,最后访问节点的右孩子递归实现public static void midOrder(BinaryTree root) { if (root == null) throw new IllegalArgumentException("请输入一棵树!"); if (root.getLeft() !=原创 2017-09-14 09:28:31 · 468 阅读 · 0 评论