![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 82
David_lou
这个作者很懒,什么都没留下…
展开
-
《java高并发编程详解》第7集:Atomic实现原子操作的原理
java的rt.jar包里面的并发工具类有Atomic开头的原子类package java.util.concurrent.atomic此路径下的原子类有天然的并发安全性,我们以AtomicInteger举例说明为什么原子类的操作是线程安全的。首先我们观察源码:AtomicInteger类有私有的常量属性 Unsafe类,用Unsafe的CAS操作来保证并发的安全。还有一个volatile 的value;表示真正的值所以我们看到AtomicInteger的基本操作方法:例如原创 2020-05-18 19:16:51 · 209 阅读 · 0 评论 -
《java基础》第6节-Stack浅析
栈数据结构的主要特性是Last in first out (LIFO);每次新增元素的操作都是放在栈顶,取数据操作都是获取栈顶第一个元素。简单的看源码我们会发现一个特别有意思的事情publicclass Stack<E> extends Vector<E> { /** * Creates an empty Stack. */ public Stack() { } public E push(E item) {原创 2020-05-22 17:56:22 · 95 阅读 · 0 评论 -
《java基础》第5节-Properties浅析
Spring中有个很重要的知识点,就是Porperties。spring中的配置文件XXX.properties天然是key-value的映射,文件读取后存储在SpringProperties对象中。java.util中有个Properties类专门用于这种场景配置文件的读取和存储查看源码:public class Properties extends Hashtable<Object,Object> { /** * use serialVersionUID原创 2020-05-22 17:11:56 · 172 阅读 · 0 评论 -
《java基础》第4集-浅析Vector
上面的文章比较了Hashtable和HashMap的区别,今天看了另外一对相似关系的集合对象Vector和ArrayListHashtable是线程安全的key-value数据结构,HashMap是线程不安全的key-value数据结构Vector是线程安全的List,ArrayList是线程不安全的List。Vector在类注释里面就标注了这段话As of the Java 2 platform v1.2, this class was retrofitted to* implemen原创 2020-05-22 09:24:09 · 87 阅读 · 0 评论 -
《java基础》第3集 浅析HashSet
上两节分别讲了下Hashtable/HashMap的基本知识,这次轮到HashSetHashtable和HashMap都提供key-value存储查询功能,HashSet略微不同,HashSet只提供key的不重复存储/查询功能。简单的看下源码:public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{原创 2020-05-21 13:15:03 · 92 阅读 · 0 评论 -
《Java基础》第2集-浅析HashMap
上一节简单说了Hashtable,今天简单的说下HashMap.HashMap跟Hashtable的数据结构非常类似,也是存在一个Node<K,V>table的数组,这个数组跟Hashtable的数组基本一致。可以保存链表的头节点。public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { priv原创 2020-05-20 10:46:52 · 132 阅读 · 0 评论 -
《java基础》第1集-浅析HashTable
Hashtable是线程安全的,为什么?看源码:public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable { /** * The hash table data. */ private transient Entry<?,?>[] table;原创 2020-05-19 17:55:49 · 126 阅读 · 0 评论 -
《java高并发编程详解》第6集:ReadWriteLock设计思想
上一篇文章讲了ConrrentLinkedQueue的设计思想,本节简单介绍一下ReadWriteLock的设计思想在我们编码中会遇到一种情况,很多的线程读取共享数据,只有一小部分的线程修改共享数据,我们为了保证数据共享的可见性和整体性,更为了实现高效的并发,定一个ReadWriteLock接口ReadWirteLock定义了两个方法: /** * Returns the ...原创 2020-01-06 20:36:34 · 141 阅读 · 0 评论 -
【深入理解java虚拟机】第4集--class汇编文件初识
java代码被编译成class文件,class文件的结构分为几部分1:文件基本信息(大小,修改时间,MD5)2:版本号,访问标志(public/private)3:常量池(constant pool)文件中出现的单词,数字等4:方法区(所有的方法,包括默认生成的构造方法)5:方法区的异常表(异常范围,异常类型,异常处理)Classfile /Users/david/Des...原创 2019-12-18 20:12:37 · 287 阅读 · 0 评论 -
【深入理解java虚拟机】第3集-动态代理的原理之CGLIB
上面一篇文章JDK动态代理的原理讲到Java内部的JDK动态代理的原理,这一集讲一下CGLIB的原理CGLIB生成代理类的工厂:Enhancer看demopublic class EnhancerFactoryTest { /** * 生成新的代理 * @param obj * @return */ public static ...原创 2019-11-05 15:36:41 · 206 阅读 · 0 评论 -
【深入理解java虚拟机】第2集-JDK动态代理的原理
java有两种动态代理一:JDK动态代理:Proxy二:CGLIB动态代理:Enhancer动态代理的实质是利用字节码工具,生成新的代理类,替换原始的类。我们首先看JDK代理模式创建代理对象需要入参 ClassLoader,被代理的对象的接口数组,一个新的InvocationHandler。看demopublic class ProxyFactoryTest {...原创 2019-11-05 14:41:44 · 282 阅读 · 0 评论 -
实际项目中的消息中心
项目中的消息中心原创 2017-02-07 14:05:27 · 3948 阅读 · 1 评论 -
实际项目中的spring的 DI 和 IOC
前两篇文章讲到了项目用到的消息中心和工作流模块,这篇文章来了解一下怎么样使用模块里面的功能。spring的核心是DI 和IOC,那到底什么是DI(依赖注入)和IOC(控制反转)呢,依赖在core java里面讲过,依赖是对象之间的关系,A对象依赖B对象,就是说A对象中有关于B对象的引用,比如说我们自己写的类里面需要输入输出,用到了InputStream或者是时间DateFormat,在我们原创 2017-02-08 11:40:30 · 2051 阅读 · 0 评论 -
java中的枚举单例
在相关程序中,我们经常会用到一些类管理相关资源或者时工具类。这些类有的可以使用单例模式,单例模式确保在同一个class loader里面只有一个实例对象,这样就可以保证对资源管理的准确性,当然这些话都是我个人理解的,纯属胡说八道。那么大家都知道实现单例模式有五种方式,今天我们单独说下枚举实现单例的方式/ 献上代码:public enum SourceManagerEnum原创 2017-02-04 10:49:01 · 713 阅读 · 0 评论 -
《head first》设计模式之四--工厂模式
工厂模式一章讲了很多内容,但是设计思想是一致的1:变量不可以持有具体类的引用(如果使用new 就会持有具体类的引用,可以用工厂类避开)2:不要让类派生自具体类(如果派生自具体类,那就是依赖具体的实现类,弹性差,请派生自抽象类或者接口)3:不要覆盖基类中已实现的方法(如果覆盖基类已实现的方法,那基类就不是一个真正适合被继承的抽象,基类中已经实现的方法,应该有所有的子类共享)本章的工厂...原创 2018-02-05 11:07:47 · 303 阅读 · 0 评论 -
《head first》设计模式之五 单例模式
单例模式的定义:确保一个类只有一个实例,并且提供一个全局访问点;书上说单例模式基本上是最简单的设计模式了,主要是面对重资产保持唯一性的主要设计原则。比如线程池,比如注册表,这些都要保持唯一性,否则系统资源紊乱,或者是环境配置不正确等问题。单例模式:1饿汉模式;懒汉模式。2双重检查加锁模式单例的进化:初始模式class Singleton{ private static Single...原创 2018-02-05 19:24:35 · 218 阅读 · 0 评论 -
《Head First》 设计模式之一 Strategy model
zhi hu 上讲到开发人员推荐看的好书,有一套head first 系列很受推荐,正好最近也在看设计模式方面的书,所以就先在网上找了pdf文档,也准备写一个系列的博客记录学习的过程,this is the first blog。Head first 设计模式第一个讲到的模式就是 ---策略模式---策略模式的定义(对客户,对领导,对同事的装逼说法):定义了算法族,分别封装起来,让他们之...原创 2018-01-29 18:45:56 · 202 阅读 · 0 评论 -
《Head first 》设计模式之二 观察者模式
设计的原则1:把不变和变动的部分分开设计2:面向接口编程,不面向实现编程3:多用组合,少用继承昨天晚上学习了观察者模式,观察者模式的定义:定义了一种一对多的依赖,当一个对象状态发生改变,所有依赖它的对象都会得到通知,并自动更新文中用到的例子是气象站,很多气象网站或者是机场,客运中心,农场都对气象数据感兴趣,他们会依赖气象站发布的数据,那么频繁地访问气象站数据,不如让气象站通知机...原创 2018-02-08 10:35:04 · 223 阅读 · 0 评论 -
对Java学习的粗浅理解
最近一直在看《深入理解java虚拟机》,这本书很厚很重,用来当枕头还有些硌得慌,但是通过慢慢的阅读发现此书确实对自己有很大的裨益,但是我是一个脑栈很浅,计算频次很低,内存又小的人。看这个书我每次只能看几页,看着看着就会脑袋发热,然后阖上书又马上会忘记刚刚看到的内容。所以我这个人看一样东西必须从大往细看,不掌握体系看细节的话,每次都像是管中窥豹。就像之前看了很多博客,以为自己学习了很多东西,但是都是...原创 2018-10-09 19:48:01 · 253 阅读 · 0 评论 -
实际项目中的工作流工作原理
java实际项目中的工作流(workflow)解读原创 2017-02-06 17:19:02 · 20592 阅读 · 1 评论