- 博客(24)
- 资源 (1)
- 收藏
- 关注
原创 Java异常使用
//1.不抛不捕public static void main1(String[] args) { testExecption(); System.out.println("next ...");}public static void testExecption(){ Integer.parseInt("I am not a number");}//2.已捕不
2016-11-07 15:14:44 419
原创 Java关于周跨年的周数计算
从图中可以看出2016年的1月1日是从周五开始的,意思就是说2016年1月1日所在的这一周既是2015年的最后一周也是2016年的第一周,也就说这一周跨年了。编程是要求严谨的,这么算最后肯定会出问题,这就需要一个标准。 先看下面两段代码的结果: public void testGetWeekNo1()
2016-11-01 16:34:21 7491
原创 ThreadLocal学习笔记
可参考《实战Java高并发程序设计》4.3ThreadLocal是一个线程的局部变量,只有当前线程可以访问的数据。所以是线程安全的。为每一个线程分配不同的对象,需要在应用层面保证。ThreadLocal只是起到了简单容器的作用。如果在应用上为每一个线程分配了相同的线程,ThreadLocal也不能保证线程安全。/** *ThreadLocal简单实用 */public class
2016-06-29 22:13:28 439
原创 MySql-InnoDB存储引擎的锁和事务
InnoDB存储引擎的关键特性:插入缓冲(性能提升)、两次写(可靠)、自适应哈希索引(查找效率)、异步IO(AIO,提高磁盘操作性能)、刷新邻接页(合并IO)。InnoDB采用一致性的非锁定读和行级锁,没有额外的开销和锁升级,可以同时得到并发性和一致性。默认的读取是一致性的非锁定读和Repeatable Read事务隔离级别,在此默认的隔离级别下采用Next-key Lock算法,解决幻象
2016-06-28 21:56:15 1189
原创 分享一个volatile实现的双检锁单例模式
/** * DCL(DubleCheckedLock)单例模式 */public class Singleton { private volatile static Singleton instance; public static Singleton getInstance() { if (instance == null) { synchronized (Singleton
2016-06-17 00:09:08 1443
原创 JVM知识点梳理
1.JVM为什么可以跨平台JVM能跨计算机体系结构(操作系统)来执行Java字节码(JVM字节码指令集),屏蔽可与各个计算机平台相关的软件或者硬件之间的差异,使得与平台相关的耦合统一由JVM提供者来实现。指令集:计算机所能识别的机器语言的命令集合。每个运行中的Java程序都是一个JVM实例。2.描述JVM体系结构(1)类加载器:JVM启动时或者类运行时将需要的class加载到J
2016-05-23 22:34:21 2836 1
原创 如何成为Java技术专家
首先声明,我不是专家。我还在路上,或许我永远也成为不了专家。不是我不够自信,而是对于知识应该保持敬畏之心。不知不觉工作快五年了,但仍然有很多困惑没有解开,写作此文,是为自己,也希望和与我类似的朋友探讨交流和分享。有些人或许生来就适合干这个行业,这也是大型互联网公司所希望的人才。假如你不是,当然我也不是,但是这并不妨碍我们在这个行业里实现自己的价值和理想。前提是我们需要更努力,更重要的是要学会思
2016-05-18 16:13:10 3777 6
原创 Java多线程学习笔记(二)
Java线程的实现在windows和linux中是使用一对一的线程模型实现的,即一条Java线程就映射到一条轻量级线程之中,因为Windows和linux系统提供的线程模型就是一对一的,在Solaris平台中,操作系统线程模型可以一对一也可以一对多,因此Solaris版的JDK可通过参数指定JVM使用哪种线程模型。Java线程调度有两种:(1)协同式调度:不存在线程安全问题(2)抢占式
2016-05-16 11:40:20 366
原创 JVM垃圾收集算法学习笔记
垃圾收集(Garbage Collection)与垃圾回收是一个意思。了解GC和内存分配,有助于排查各种内存溢出和内存泄漏问题,当系统达到更高的并发量时,需要对这些自动化的技术(GC)实施必要的监控和调节。程序计数器、虚拟机栈、本地方法栈是跟随线程的,栈中的栈帧随着方法的进入和退出有条不紊的执行出栈和入栈操作,每一个栈帧分配多少内存基本上是在类结构确定下来的时候确定的(编译器可知),这几个
2016-05-15 14:37:21 347
原创 Jvm学习笔记
本文节选自本人知乎。作者:吴青海链接:https://www.zhihu.com/question/27339390/answer/36511809来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。java堆(JavaHeap)1.用来存放对象的,几乎所有对象都放在这里,被线程共享的,或者说是被栈共享的2.堆又可以分为新生代和老年代,
2016-05-13 16:19:25 354
原创 Java线程和线程池学习笔记
Java线程的使用方式最基础的来说只有两种:实现Runnable和Callable接口,继承Thread类实际也是间接实现了Runnable接口。两者的区别的是Runnable没有返回值,而Callable有返回值。1.实现Runnable接口的线程:class RunnableThread implements Runnable{ @Override public void ru
2016-05-08 20:08:27 419
原创 volatile学习笔记
参考《深入理解Java虚拟机-JVM高级特性与最佳实践》12.3.3对于volatile型变量的特殊规则volatile是用来修饰变量,是jvm最轻量级的同步机制。在大多数场景下,volatile的总开销要比锁低。volatile的读操作性能与普通变量几乎一样,写操作会稍微慢一些:它需要在本地代码中插入许多内存屏障指令来保证处理器不发生乱序。volatile的特性:1.保证此变量对
2016-05-06 15:06:52 494
原创 HashTable和ConcurrentHashMap学习笔记
推荐博文:http://ifeve.com/concurrenthashmap/HashTable、ConcurrentHashMap与HashMao最大的不同就是在线程安全上,内部实现存储和获取数据的方式是一样的,都是通过hash来散列数据,必要的时候进行扩容。HashTable中put(K key, V value)时: // Make sure the value is no
2016-05-04 14:45:55 481
原创 Java多线程学习笔记(一)
首先推荐一篇好文:http://www.cnblogs.com/nexiyi/p/java_memory_model_and_thread.html
2016-05-03 15:56:16 1320 2
原创 Java位移运算符
1010n为1时:10100n位2时:101000依次类推>> : 右移运算符,包含符号位,num >> 1,相当于num除以2正数1010>>表示1010相右移动n位n为1时:0101n位2时:0010依次类推java中负数的二进制表示就稍微复杂一点:例如转换-4(1)先将负数的绝对值转换为二进制数:0000 0100(2)然
2016-04-22 23:12:14 443
原创 LinkedList学习笔记
推荐阅读博文:JAVA LinkedList和ArrayList的使用及性能分析http://www.jb51.net/article/42767.htmArrayList是一个动态数组(快速随机访问元素),LinkedList是双向链表实现的(快速插入,删除元素)。其特性是由其数据结构决定的。LinkedList也是一个简单的数据结构。用法也与ArrayList相
2016-04-22 20:20:41 377
原创 SimpleDateFormat学习笔记
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH:mm:ss:SSS E"); SimpleDateFormat sdf2 = new SimpleDateFormat("一年中的第 D 天 ,第w个星期 ,一个月中第W个星期 ,k时 z时区"); String dateStr = sdf.format(new Date
2016-04-22 19:12:59 380
原创 ArrayList学习笔记
ArrayList的数据结构比较简单,但是其中也包含了一些好的设计思想。ArrayList是用数组实现的,因为可以自动扩容(增加50%),所以ArrayList也可以理解为动态数组。1.初始化ArrayList的实现也是在不断改进的。在JDK1.7之后,ArrayList初始化的时候,elementData[]数组还是空的,并没有初始化长度为10的数组(困惑良久)。privat
2016-04-19 16:42:17 454
原创 Eclipse(Luna)查看class源代码文件
1.工具2个(1)net.sf.jadclipse_3.3.0.jar:https://yunpan.cn/cqhUJgvSDBYWr (提取码:da37)(2)jad158g.win.zip:https://yunpan.cn/cqhULZ4zgJID8 (提取码:51ca)2.配置(1)将工具net.sf.jadclipse_3.3.0.jar拷贝到Eclipse的安装目录
2016-04-17 23:07:18 751
原创 HashMap学习笔记
关于HashMap的工作原理与实现的好文章不少,推荐两个:http://yikun.github.io/2015/04/01/Java-HashMap工作原理及实现/http://blog.csdn.net/vking_wang/article/details/14166593对着HashMap的源码来看理解的会更好,JDK的版本不同具体的实现原理也有所不同,新版本都是在有所改进,
2016-04-16 20:34:16 468
原创 程序示例说明Java泛型到底是什么
Java泛型到底什么,在看《数据结构与算法分析》一书时我不禁问自己。其书中介绍甚为抽象,本人就想试着用程序实验一下java泛型。参考了小顾问@cnblogs的关于java泛型的博文。本人的理解Java泛型其实就是参数类型的类型。泛型基础/** * * @author wqh * 泛型基础 */public class GenericDemo1 { /** * 未使用泛
2015-06-29 15:33:15 563
翻译 Myeclipse报错:“Versions of Spring facet could not be detected”的解决方法:译
本人的感悟是遇到这个错误不可姑息,或许开发中本来就不能与任何错误共存。解决方法如下:VERSION OF SPRING FACET COULD NOT BE DETECTED.The migration process needs to detect the correct version of Spring support used by a proj
2015-03-12 16:20:17 8320
Myeclipse 10(2014GA)激活详解过程
2015-03-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人