![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 52
codershamo
这个作者很懒,什么都没留下…
展开
-
fastjson的基本使用方法
1 fastjson主要的APIfastjson入口类是com.alibaba.fastjson.JSON, 主要API是JSON.toJSONString和parseObject,使用fastjson要注意要转换的类必须有默认的无参构造方法。序列化: String jsonString = JSON.toJSONString(obj);反序列化: VO vo = JSON.parseObj原创 2016-07-22 14:42:56 · 24316 阅读 · 1 评论 -
浅谈Java并发编程系列(三)—— volatile型变量
当一个变量定义为volatile之后,它具备两种特性:保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。禁止指令重排序优化。让我们从Java内存模型的角度分析下volatile变量。假定T表示一个线程,V和W分别表示两个volatile变量,那么在进行read, load, use, assign, store和write时需原创 2016-07-05 09:48:32 · 759 阅读 · 0 评论 -
浅谈Java并发编程系列(六) —— 线程池的使用
线程池的作用降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的资源浪费。提高响应速度。当任务到达时,不需要等到线程创建就能立即执行。方便管理线程。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以对线程进行统一的分配,优化及监控。设置线程池大小设置线程池的大小可以从以下几个方面分析入手:系统中有多少个cpu?多大的内存?任务是计算密集原创 2016-07-11 21:13:43 · 1827 阅读 · 0 评论 -
不使用构造方法创建Java对象: objenesis的基本使用方法
objenesis简介:objenesis是一个小型java类库用来实例化一个特定class的对象。使用场合:Java已经支持使用Class.newInstance()动态实例化类的实例。但是类必须拥有一个合适的构造器。有很多场景下不能使用这种方式实例化类,比如:构造器需要参数构造器有side effects构造器会抛异常因此,在类库中经常会有类必须拥有一个默认构造器的限制。Objenesi翻译 2016-07-24 17:50:02 · 8468 阅读 · 1 评论 -
三种深度拷贝方式的比较
对于深度拷贝,常见有主要有三种方式。通过序列化和反序列化,通过json转换,以及手动赋值,下面对这三种方式进行简单的比较。 用来拷贝测试的对象如下:class User implements Serializable{ private String name; private String pwd; private int age; public User() {原创 2016-07-24 17:47:00 · 14846 阅读 · 0 评论 -
浅谈Java并发编程系列(五)—— ReentrantLock VS synchronized
ReentrantLock是Java并发包中一个非常有用的组件,一些并发集合类也是用ReentrantLock实现,包括ConcurrentHashMap。ReentrantLock具有三个特性:等待可中断、可实现公平锁、以及锁可以绑定多个条件。Java中的ReentrantLockReentrantLock与synchronized关键字一样,属于互斥锁,synchronized中的锁是非公平的(原创 2016-07-06 21:43:24 · 786 阅读 · 0 评论 -
浅谈Java并发编程系列(四)—— 原子性、可见性与有序性
Java内存模型是围绕着在并发过程中如何处理原子性、可见性和有序性这3个特征来建立的,我们来看下哪些操作实现了这3个特性。原子性(atomicity): 由Java内存模型来直接保证原子性变量操作包括read, load, assign, use, store和write。大致可以认为基本数据类型的访问读写是具有原子性的。如果应用场景需要一个更大范围的原子性保证,Java内存模型还提供了lock和u原创 2016-07-05 20:34:57 · 814 阅读 · 0 评论 -
浅谈Java并发编程系列(二)—— Java内存模型
物理计算机并发问题在介绍Java内存模型之前,先简单了解下物理计算机中的并发问题。由于处理器的与存储设置的运算速度有几个数量级的差距,所以现代计算机加入一层读写速度尽可能接近处理器的高速缓存来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存中,这样处理器就无须等待缓慢的内存读写了。基于高速缓存的存储交互引入一个新的问题:缓存一致性。在多原创 2016-07-02 13:25:23 · 653 阅读 · 0 评论 -
浅谈Java并发编程系列(一)—— 如何保证线程安全
线程安全类保证类线程安全的措施:不共享线程间的变量;设置属性变量为不可变变量;每个共享的可变变量都使用一个确定的锁保护;保证线程安全的思路:通过架构设计 通过上层的架构设计和业务分析来避免并发场景。比如需要用多线程或分布式集群统计一堆用户的相关统计值,由于用户的统计值是共享数据,因此需要保证线程安全。从业务上分析出用户之间的数据并不共享,因此可以设计一个规则来保证一个用户的计算工作和数据原创 2016-07-01 23:17:09 · 4354 阅读 · 0 评论