
JavaSE
iteye_6926
这个作者很懒,什么都没留下…
展开
-
Java反射初探
目前非常多的开源框架的工作核心和底层实现原理都是基于反射来工作的。我这边也是闲来无事,公司那边等着走流程签合同,就自己看着JDK的API文档,并结合以前用过的一点知识,做了下反射的简单事例。 首先反射的具体功能是发现类的方法、属性、构造器(包含私有属性、方法和构造器)。网上众多的所谓动态代理的实现大多也是通过反射来实现的。 涉及Java包主要为java.lang.Cla...原创 2013-07-12 11:52:46 · 121 阅读 · 0 评论 -
Java的接口和抽象类区别
[size=small][b]1.语法层面上的区别[/b] 1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法; 2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的; 3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法; 4)一个类只能...原创 2016-07-23 15:10:18 · 102 阅读 · 0 评论 -
transient关键字
[b][size=large]transient的用途[/size][/b][size=small]Q:transient关键字能实现什么?A:当对象被序列化时(写入字节序列到目标文件)时,transient阻止实例中那些用此关键字声明的变量持久化;当对象被反序列化时(从源文件读取字节序列进行重构),这样的实例变量值不会被持久化和恢复。例如,当反序列化对象——数据流(例如,文件)可...原创 2016-07-04 14:56:10 · 93 阅读 · 0 评论 -
Java中的继承与组合(转载)
本文主要说明Java中继承与组合的概念,以及它们之间的联系与区别。首先文章会给出一小段代码示例,用于展示到底什么是继承。然后演示如何通过“组合”来改进这种继承的设计机制。最后总结这两者的应用场景,即到底应该选择继承还是组合。[b][size=large]1、继承[/size][/b]假设我们有一个名为Insect(昆虫)的类,这个类包含两个方法:1)移动move(); 2)攻击at...原创 2016-07-03 22:34:55 · 95 阅读 · 0 评论 -
volatile的作用和使用场景
[size=medium]1、线程可见性,volatile修饰的变量是存放在主内存区域,其他地方使用该变量也是直接从主内存区域获取数据,所以无论线程是否同步,任何使用该变量的地方都可以获取到最新的值。2、禁止指令重排序。volatile最适合的应用场景:1、一个线程写,其他线程读的场合,如果存在多个线程的并发写操作,仍然需要使用锁或者线程安全的容器或者原子变量来代替。2、可能存...原创 2016-05-07 17:00:22 · 292 阅读 · 0 评论 -
Java synchronized
[size=medium]一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。二、然而,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。三、尤其关键的是,当一个线程访问object的一个synchron...原创 2016-04-26 23:30:31 · 94 阅读 · 0 评论 -
java对象的强引用,软引用,弱引用和虚引用
[size=x-small] 众所周知,java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。 在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 ...原创 2016-03-24 22:56:50 · 99 阅读 · 0 评论 -
Java链式编程
[size=medium]简介:每个方法(接口)的返回值都是this(当前对象),调用多个方法时一直用点号添加。好处:这样写法的好处在于一方面可以尽可能少去进行类型转换的判定,而且大大增强了代码的阅读性,同时也减少了代码量。例子:Java中的StringBuilder,StringBuffer中的append方法。jquery中的对某个元素的样式设置,比如:$("#p1")...原创 2016-01-24 22:42:41 · 215 阅读 · 0 评论 -
jdk switch使用
jdk1.6及之前的jdk中switch中的变量有10种,分别是byte,short,int,char,enum。jdk1.7以后switch中的变量可以为String类型了。原创 2015-12-29 17:09:24 · 684 阅读 · 0 评论 -
单例模式的两种方式
首先,单例模式是指在程序运行的过程中,保证该类的实例只有一个可以被外界访问(可用于读取配置文件,以保证没有对外部资源的并发操作)。单例模式分为饱汉模式和饥汉模式。饱汉模式,也是我们说熟知的单例模式,为类在初始化的时候就进行了类的实例化,getInstance方法只需要自动获取就可以了;饥汉模式为类在初始化时并为进行类的实例化,而是在getInstance方法中,先对对象进行判断,如果为nu...原创 2013-08-28 21:36:00 · 167 阅读 · 0 评论 -
解决Java中浮点型数据计算时产生的精度误差
关于double和float的精度问题,在进行数值运算时,如果有float或者double类型的浮点数参与计算时,偶尔会出现结果不准确的情况。比如:/** * 解决Float与Double类型进度不准确的问题 * @author XiaoYun 2013-08-17 */public class PrecisionOfFloatAndDouble {public...2013-08-18 21:06:31 · 744 阅读 · 0 评论 -
Java自定义注解(原理和API)初探
今天稍稍学习了下注解,关于注解,我想大家都不陌生,目前可能在hibernate配置中可能会用的多一点,在JPA中也会用到。我想说的是学习注解可以帮助我们更好的理解注解在框架中(比如hibernate和Spirng等)的应用。 Annotation是JDK5版本以来的新特性。目前在JavaSE中的学习中可能会经常遇到集合未指定泛型、使用java.util.Date类中的过时方法...原创 2013-07-21 00:25:06 · 165 阅读 · 0 评论 -
Java中反射和动态代理学习心得和总结
下面对反射和动态代理做下总结: 对于反射,反射是用来发现类的属性、方法、构造器并进行动态调用和修改的一种工具,这是可以把java看作动态语言的重要原因。 关于动态代理,毫无疑问,动态代理的实现是在反射的基础之上进行实现的,目前不少的框架比如spring的面向切面编程底层的实现原理就是动态代理。 关于动态代理,我想多说一点,因为感觉自己理解的还是不够扎...2013-07-18 23:19:07 · 146 阅读 · 0 评论 -
使用反射对类的私有方法和属性进行调用
公司不忙,没事可做,springMVC没有调试成功,很郁闷。只好沿着没有学习完毕的反射继续学习,本以为使用反射获取到类的方法后,直接使用invoke方法调用就可以了,没想到中间也出现了一个小插曲。 关于JDK的反射涉及到的包和类在前面两篇博客上已经写了,这里就不再叙述。下面进入学习,在复习下通过反射调用特定Class的方法的流程: 1. 获取Class类型Class cls ...2013-07-17 17:40:40 · 137 阅读 · 0 评论 -
JDK动态代理实现原理
昨天下午终于签好了合同。今天下午午觉醒来,便开始了JDK动态代理模拟原理的学习和研究。 首先,我们应该明白何为代理,所谓代理,按照我的理解,用户只需要知道接口中的方法名,不需要了解方法中的具体实现,就可以进行远程访问。 在应用上可以用在考试系统中,一个服务器,多个考试机调用服务器上面的方法,以及其他的一些web应用。同时,很多开源框架上也用到了反射,如spring对封装的数据...原创 2013-07-13 22:17:52 · 129 阅读 · 0 评论 -
for循环删除(ArrayList.remove)报错及解决办法
[size=small]代码:[code="java"]JSONArray bindCards = getJSONArray(); bindCards.forEach(bindCard->{ JSONObject bindCardJson = (JSONObject)bindCard; if (StringUtils.equals(account.getAccN...原创 2017-01-12 15:50:24 · 322 阅读 · 0 评论