张伯毅的专栏

人生就是一道证明题,证明我们的存在不是偶然....

JAVA : ReentrantReadWritelock

ReentrantReadWriteLock采用读写分 离的策略,允许多个线程可以同时获取读锁 。 架构图 读写锁的内部维护了 一个 ReadLock 和一个 WriteLock,它们依赖 Sync 实现具体功能 。 而Sync继承自AQS,并且也提供了公平和非公平的实现。 下面只...

2019-06-27 18:09:18

阅读数 83

评论数 0

Thread.sleep、Object.wait、LockSupport.park 区别图解

Thread.sleep、Object.wait、LockSupport.park 区别如下图: 参考: Java 并发编程之美 https://blog.csdn.net/u013332124/article/details/84647915

2019-06-26 17:53:22

阅读数 101

评论数 0

JAVA 可重入锁: ReentrantLock

概念 ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。在java关键字synchronized隐式支持重入性, synchronized通过获取自增,释放自减的方...

2019-06-26 17:17:10

阅读数 26

评论数 0

Java CopyOnWriteArrayList 概述

CopyOnWriteArrayList是一个线程 安全的 ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)上进行的 , 也就是使用了写时复制策略。 在 CopyOnWriteArrayList 的类图中,每个 CopyOnWriteArrayList 对象...

2019-06-26 14:17:30

阅读数 38

评论数 0

JDK 8 原子操作类 LongAdder

AtomicLong 通过 CAS 提供了非阻塞的原子性操作,相 比使用阻塞算法的 同步器来说它的性能己经很好了,但是 JDK 开发组并不满足于此 。 使用 AtomicLong 时, 在高并发下大量线程会同时去竞争更新 同→个原子变量,但是由于同时只有一个线程的 CAS 操作会成功,这就造成了大...

2019-06-26 11:21:21

阅读数 470

评论数 0

ConcurrentHashMap BUG 死锁

BUG 代码: package com.zl.map.concurrent; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class ConcurrentHashMapBug { ...

2019-06-25 18:29:02

阅读数 222

评论数 0

在linux系统中查看 缓存行 [ cacheline ] 的大小

linux系统中缓存行 [ cacheline ] 默认值: 64byte 为了解决计算机系统中主内存与 CPU 之间运行速度差问题,会在 CPU 与主内存之间 添加一级或者多级高速缓冲存储器( Cache)。这个 Cache 一般是被集成到 CPU 内部的, 所以也叫 CPU Cach...

2019-06-25 16:53:07

阅读数 77

评论数 0

Java 多线程并发线程基础

进程&线程 线程是进程中的一个实体,线程 本身是不会独立存在的 。 进程是代码在数据集合上的 一 次运行活动 , 是系统进行资源分配 和调度的基本单位, 线程则是进程的一个执行路径, 一个进程中至少有一个线程,进程中 的多个线程共享进程的资源。 操作系统在分配资源时是把资源分...

2019-06-25 16:37:40

阅读数 43

评论数 0

一张图理解JAVA 多线程创建

Java 中有三种线程创建方式, 实现 Runnable接口的 run方法, 继承 Thread类 并重写 run 的方法, 使用 FutureTask方式。

2019-06-25 11:46:47

阅读数 38

评论数 0

JAVA 队列: SynchronousQueue

SynchronousQueue 是一个不存储元素的阻塞队列。每一个 put 操作必须等待一个 take 操作,否则不能继续添加元素。 SynchronousQueue 可以看成是一个传球手,负责把生产者线程处理的数据直接传递给消费者线程。队列本身并不存储任何元素,非常适合于传递性场景,比如在一...

2019-06-24 17:54:20

阅读数 23

评论数 0

Java 同步器

java.util.concurrent 包包含了几个能帮助人们管理相互合作的线程集的类见表 14-5。这 些机制具有为线程之间的共用集结点模式(common rendezvous patterns) 提供的“ 预置功能” ( canned functionality ) 0 如果有一个相互合作的...

2019-06-24 11:44:05

阅读数 21

评论数 0

Java 注解

4 种标准元注解 元注解的作用是负责注解其他注解。 Java5.0 定义了 4 个标准的 meta-annotation 类型,它们被用来提供对其它 annotation 类型作说明。 @Target 修饰的对象范围 @Target 说明了 Annotation 所修饰的对象范围: Anno...

2019-06-21 16:25:56

阅读数 26

评论数 0

Java 反射 (运行状态中知道类所有的属性和方法)

在 Java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为 Java 语言的反射机制。 编译时类型和运行时类型 编译时的类型由声明对象时实用的类型来决定...

2019-06-21 15:16:15

阅读数 50

评论数 0

Java 异常分类

异常分类:Error 和 Exception Error Error 类是指 java 运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果 出现了这样的错误,除了告知用户,剩下的就是尽力使程序安全的终止。 Exception(RuntimeException、Che...

2019-06-21 15:01:05

阅读数 30

评论数 0

JDK1.8 ConcurrentHashMap 源码解析

概述 ConcurrentHashMap 是 util.concurrent 包的重要成员。 ConcurrentHashMap 的源代码会涉及到散列算法,链表数据结构和红黑树 Java8 ConcurrentHashMap 源码真心不简单,最难的在于扩容,数据迁移操作不容易看懂。 前面我...

2019-06-20 14:08:13

阅读数 64

评论数 0

JDK1.8 HashMap和TreeMap区别,读懂这一篇就够了

刚刚被问到HashMap和TreeMap 有什么区别,想了想,就整理一下吧. 1.数据结构 HashMap: 数组+列表+红黑树 TreeMap: 红黑树 2. 因为数据结构,导致节点的实体类不一样 HashMap: 两种 Node 和 TreeNode (支持链表) ...

2019-06-18 11:45:24

阅读数 75

评论数 0

JDK1.8 HashMap 源码解析

HashMap 源码解析 1.图解: 2.源码 为了方便 DEBUG , 我把 HashMap 的源码分为了三部分 import java.io.IOException; import java.io.InvalidObjectExc...

2019-06-17 16:30:52

阅读数 40

评论数 0

生成 HashCode 一致的字符串

生成 HashCode 一致的字符串 package com.zl.map; import java.math.BigDecimal; import java.util.Random; /** * “中间相遇法”是生日攻击的一种变形,它不比较Hash值,而是比较链中的中间变量...

2019-06-17 11:51:14

阅读数 34

评论数 0

Java 位运算符

Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。 位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下: A = 0011 1100 B = 0000 1...

2019-06-13 19:18:56

阅读数 40

评论数 0

服务器参考性能

参考机器服务配置,用于估算集群规模,具体情况,参考当前市场. --2019年06月 戴尔R730服务器 2U双路. 一台 3 万.+ CPU: 两颗 16 核 内存: 24 个接口(单条最大 32G) 最大容量 768G 硬盘: 8块硬盘 单块最大8T 共 64T 网卡: 集成四口,千...

2019-06-13 16:30:23

阅读数 33

评论数 0

提示
确定要删除当前文章?
取消 删除