
JAVA
文章平均质量分 82
风雷恒
我的自由我做主,畅想在IT的海洋中
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
工作快满5年,聊聊这5年作为程序员中的那些事(文末加了结局揭晓和3年后近况的彩蛋!!)
引言 毕业将近5年了,一般来说,工作5年是一个槛,今天就聊聊俺这5年所作为程序员所经历的一些事吧,分享给大家,希望一定借鉴作用吧。 毕业的彷徨 俺老家是江西的,在大学混了3年多,基本上都是玩过来的,在大四的时候,对于未来的道路,是很迷茫的,不知道自己要干啥,因为自己学的是信管专业,班上一半人想从事金融和管理方面的工作,还有一部分就是从事IT,一部分准备考研,我原创 2017-02-13 18:02:06 · 12027 阅读 · 25 评论 -
【死磕Java并发】—–J.U.C之Condition
原文出处:http://cmsblogs.com/?p=2222 在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在Java SE5后,Java提供了Lock接口,相对于Synchronized而言,Lock提供了条件Condition,对线程的等待、唤醒操作更加详细和灵活。下图是Conditio转载 2017-04-06 21:20:31 · 950 阅读 · 0 评论 -
关于DB组件造成的内存泄露问题解析及解决
系统最近新上一个版本,跑全量初始化时,一段时间后出现OOM异常。当时我们第一反应是排查本版本相对上一版本的改动点,以及实现方式是否有问题。 经业务场景分析,全量计算方式相对上一版本,总体思路没有太大变化,唯一变化的是,最终汇总的计算结果多了两个。其中一个结果数据量较大。 看到这里,我们第一反应是存储结果数据的list没有及时GC导致内存泄露,因此我们检查相应的list,看看原创 2017-02-14 09:56:45 · 1156 阅读 · 0 评论 -
HashMap源码的解读-为何存取的性能很高的一个重要点
相信HASHMap的原理大家都看过,这边就不再复习了,直接上源码,put方法: public V put(K key, V value) { //当key为null,调用putForNullKey方法,保存null与table第一个位置中,这是HashMap允许为null的原因 if (key == null) return p原创 2016-12-05 14:15:45 · 669 阅读 · 0 评论 -
[Java并发包学习六]Semaphore介绍
概述 emaphore字面意思是信号量。他主要用于控制有限的资源的访问数量。我们看一个生活中常常出现的场景: 一个厕所只有3个坑位,但是有10个人来上厕所,那怎么办?假设10的人的编号分别为1-10,并且1号先到厕所,10号最后到厕所。那么1-3号来的时候必然有可用坑位,顺利如厕,4号来的时候需要看看前面3人是否有人出来了,如果有人出来,进去,否则等待。同样的道理,4-10号也需要转载 2016-12-27 16:27:07 · 455 阅读 · 0 评论 -
[Java并发包学习九]Java中的阻塞队列
什么是阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。 阻塞队列提供了四种处理方法:转载 2016-12-27 16:30:56 · 394 阅读 · 0 评论 -
[Java并发包学习八]深度剖析ConcurrentHashMap
概述 还记得大学快毕业的时候要准备找工作了,然后就看各种面试相关的书籍,还记得很多面试书中都说到: HashMap是非线程安全的,HashTable是线程安全的。 那个时候没怎么写Java代码,所以根本就没有听说过ConcurrentHashMap,只知道面试的时候就记住这句话就行了…至于为什么是线程安全的,内部怎么实现的,通通不了解。 今天我们将深入剖析一个比Hash转载 2016-12-27 16:30:06 · 525 阅读 · 0 评论 -
[Java并发包学习七]解密ThreadLocal
概述 相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路;ThreadLocal的目的是为了解决多线程访问资源时的共享问题。如果你也这样认为的,那现在给你10秒钟,清空之前对ThreadLocal的错误的认知! 看看JDK中的源码是怎么写的: This class provides thr转载 2016-12-27 16:27:52 · 653 阅读 · 0 评论 -
[Java并发包学习五]CountDownLatch和CyclicBarrier介绍
概述 JDK中提供了一些用于线程之间协同等待的工具类,CountDownLatch和CyclicBarrier就是最典型的两个线程同步辅助类。下面分别详细介绍这两个类,以及他们之间的异同点。 CountDownLatch类 CountDownLatch顾名思义:倒计数锁存器。没错,他就是一个计数器,并且是倒着计数的。他的应用场景如下: 一个任务A,他需要等待其他的一些任转载 2016-12-27 16:26:04 · 331 阅读 · 0 评论 -
[Java并发包学习四]Future和FutureTask
概述 Future主要用来表示线程异步执行的结果,他提供了检查异步执行的程序是否已经执行完毕、是否已经被取消,并且获取执行结果的方法。它是一个接口,接口的定义如下: 1 2 3 4 5 6 7 8 public interface FutureV> { boolean cancel(boolean mayInterruptIfRunning);转载 2016-12-27 16:25:26 · 306 阅读 · 0 评论 -
[Java并发包学习三]ThreadFactory介绍
概述 ThreadFactory翻译过来是线程工厂,顾名思义,就是用来创建线程的,它用到了工厂模式的思想。它通常和线程池一起使用,主要用来控制创建新线程时的一些行为,比如设置线程的优先级,名字等等。它是一个接口,接口中只有一个方法: 1 2 3 4 5 6 7 8 9 /** * Constructs a new {@code Thread}. Im转载 2016-12-27 16:24:55 · 485 阅读 · 0 评论 -
[Java并发包学习二]Executors介绍
概述 Executors类是JDK 1.5开始自带的一个非常强大的主要用于创建各类线程池的工具类。 常用方法介绍 newFixedThreadPool newFixedThreadPool方法有两种函数签名: 1 2 public static ExecutorService newFixedThreadPool(int nThreads)转载 2016-12-27 16:24:21 · 402 阅读 · 0 评论 -
[Java并发包学习一]Executor和ExecutorService
本文介绍jdk8并发包中的Executor/ExecutorService这两个接口。 Executor接口 概述 该类提供一个提交任务的方法,提交的任务可以在提交程序本线程运行,也可以在不同的线程运行,也可以在一个线程池中的线程运行,全看如何使用。 However, the {@code Executor} interface does not strictly req转载 2016-12-27 11:55:57 · 335 阅读 · 0 评论 -
JAVA总结系列(一)JVM概要
一、JVM结构 http://www.cnblogs.com/zhguang/p/3257367.html 1、程序计数器:指向下一条要执行的指令 虚拟机栈中定义了两种异常,如果线程调用的栈深度大于虚拟机允许的最大深度,则抛出StatckOverFlowError(栈溢出);不过多数Java虚拟机都允许动态扩展虚拟机栈的大小(有少部分是固定长度的),所以线程可以一直申请栈,直到内存不足,此时原创 2016-12-21 19:48:53 · 848 阅读 · 0 评论 -
【JVM类加载机制】从一个对象的验证问题说开去
0 引例 前几天本人正在愉快的写代码的时候突然接到老大给的一个新任务,对支付相关的几个类做代码加密和安全性校验工作,确保类来源的安全性。 那么现在有了需求下一步就要来满足需求,这里采用的方案是在加载过程中进行类来源检测和代码解密的相关工作。接下来主要就是实现了一个类加载器。 经过一通操作终于实现好了这个加载器,经过测试也满足了类的相关解密和校验工作,可谓是完美。然而,帅不过三秒,转载 2016-12-07 14:27:41 · 442 阅读 · 0 评论 -
JAVA阻塞队列BlockingQueue
原文:http://blog.youkuaiyun.com/ghsau/article/details/8108292 BlockingQueue最终会有四种状况,抛出异常、返回特殊值、阻塞、超时,下表总结了这些方法: 抛出异常 特殊值 阻塞 超时 插入 add(e) offer(e) put(e) offer(e, time, unit)转载 2016-10-23 20:25:34 · 320 阅读 · 0 评论 -
Java内存分配机制详解
文章转载自:http://www.cnblogs.com/zhguang/p/3257367.html 本文仅载抄了部分内容,若想知道JVM内存全量信息,请查看原文 Java内存分配机制 这里所说的内存分配,主要指的是在堆上的分配,一般的,对象的内存分配都是在堆上进行,但现代技术也支持将对象拆成标量类型(标量类型即原子类型,表示单个值,可以是基本类型或String等)转载 2016-10-10 16:14:54 · 2102 阅读 · 0 评论