
java语言本身
文章平均质量分 65
bingjing12345
知行合一
展开
-
java泛型的一些总结
泛型引进的主要目的是:用来指定容器要持有什么样类型的对象,而且由编译器保证类型的正确性(编译阶段就能检查出错误)。泛型在java1.5之前并不存在,是在1.5的时候引入的,这说明之前的容器肯定有明显的不足之处。原生态类型容器的不足: List list = new ArrayList(); list.add(new Apple());原创 2012-09-01 20:25:10 · 1078 阅读 · 0 评论 -
汇集的一些文章
JAVA 中BIO,NIO,AIO的理解http://my.oschina.net/hanruikai/blog/294108正则表达式实例http://www.cnblogs.com/diony/archive/2010/12/16/1908499.htmljava精华文章http://blog.youkuaiyun.com/kobejayandy/artic原创 2015-01-05 16:35:49 · 693 阅读 · 0 评论 -
Java 静态变量的初始化顺序
1 无继承情况下的Java初始化顺序:class Sample{ Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用");转载 2014-12-16 17:34:23 · 733 阅读 · 0 评论 -
java反射详解
http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解。下面开始正文。【案例1】通过一个对象获得完整的包名和类名转载 2014-08-07 16:58:52 · 941 阅读 · 0 评论 -
concurrentHashMap 到底采取了什么措施使得它比synchronized(HashMap)好
免锁容器背后的通用策略:1使用Lock机制 而不是synchronized 2 对容器的修改可以与读取操作同时发生,只要读取者只能看到完成修改的结果即可。(volatile)3 修改是在容器数据结构的某一部分的一个单独副本上执行的,这样就能避免锁住整个容器 Java Memory Model中,Memory分为两类,main memory和working memory,原创 2012-10-23 17:10:49 · 5247 阅读 · 0 评论 -
仅从性能上分析 java到底和C /C++ 差在了那里
C /C++程序是需要 编译------链接------运行的过程的。Java 有前端编译,.class文件的加载相当于链接(动态链接,动态运行中的 动态链接),java程序的运行过程,实际包含了C/C++程序的编译过程的一部分(字节码相当于C/C++经过一定编译的后形成的代码),和运行过程。 Java的编译分为把*.java 编译为 *.class 的过程 ,常用的编译器有 ja原创 2014-03-05 20:14:23 · 5770 阅读 · 1 评论 -
存储过程基本介绍
存储过程存储过程(stored procedure)是一组为了完成特定功能的sql 语句集,经编译后存储在数据库。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。所以,存储过程不可能在jdbc中用sql语句完成。存储过程只能是在DB写好了,由jdbc调用。在sql server 的系列版本中存储过程分为两类:系统提供的存储过程和用户自定义存储过程转载 2013-08-20 19:45:59 · 800 阅读 · 0 评论 -
由C中函数调用的函数声明想到的
在c语言的函数调用中,如果主调函数调用一个其他函数,则这个函数要么在主调函数之前定义,要么在主调函数之前或者之中做出声明。运用函数声明的好处是,可以在编译阶段检查出一些不必要的错误。应该明确:头文件为相关声明提供了一个集中存放的位置,而并没有函数体的源码。预处理命令#include的作用是将被包含文件的内容全部复制到当前文件中。命名空间是为了解决名字冲突问题后期引入的。跟jav原创 2012-08-10 16:34:21 · 2594 阅读 · 0 评论 -
对 AtomicInteger 源码 的理解
java.util.concurrent.atomic 包提供了若干个类能实现对int,long,boolean,reference的几个特殊方法非阻塞原子性,这一系列类的主要基于以下两点1.volatile修饰变量,保证get()/set()的原子性 2.利用系统底层的CAS原语来实现非阻塞的其它方法原子操作 private volatile int value;原创 2013-03-08 17:22:40 · 4293 阅读 · 1 评论 -
HotSpot jvm 分配对象的 具体过程
原文为 周志明先生首发,http://icyfenix.iteye.com/blog/1145044本文只是做了一些整理虚拟机遇到一条new指令时,先要将对应的类加载到方法区,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(I转载 2013-03-06 15:39:59 · 2649 阅读 · 0 评论 -
the good part of java
1类型系统包括了类、抽象类和接口。类不仅定义了对象内部的数据,还定义了可以从对象上调用的一套方法。计算机语言的类型系统是为了让编译器确定类型所关联的对象需要分配多少空间(在类型系统中,仅类有此功能),类型系统还承担了对传入方法的参数和传出方法的返回值做编译时的检查。接口的出现使得定义与实现分离。增加了代码的可重用性和可扩展性。接口就可以理清一个系统的整体设计方法。(软件工程的概要设原创 2012-09-26 09:44:21 · 802 阅读 · 0 评论 -
const 用法简单总结
1认识const修饰指针的情况。int b =500; const int*a = & [1] int const*a = & [2] int* consta = & [3] const int*const a = & [4] 如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;[1]和[2]的情况相同,都是指针所指向的内容为常量(co原创 2012-08-12 14:41:47 · 840 阅读 · 0 评论 -
对 double 不能算出精确值问题的思考
我知道 double型数据在内存的表示遵循IEEE标准,对于0.1 ,1.1,2.1等等 很多数,不能被精确的表示为double数据只能被表示为最接近它的double值先来看一段程序double d1 = 0.9;double d2 = 0.1;double d3 = 1.1;System.out.println(d1);System.out.println(d2原创 2012-08-25 18:26:14 · 4745 阅读 · 0 评论 -
HashMap 源码笔记
Entry 条目 在引入Entry之前的标准的Map的遍历方法如下:Set keys = map.keySet( );if(keys != null) { Iterator iterator = keys.iterator( ); while(iterator.hasNext( )) { Object key = iterator.next(原创 2012-10-27 20:34:20 · 859 阅读 · 0 评论