摘要: 【死磕 Java 并发】系列是 LZ 在 2017 年写的第一个死磕系列,一直没有做一个合集,这篇博客则是将整个系列做一个概览。 先来一个总览图: 【高清图,请关注“Java技术驿站”公众号,回复:脑图JUC】 【死磕Java并发】—–深入分析synchronized 的实现原理 synchroni 阅读全文
posted @ 2018-08-29 17:39 chenssy 阅读(4391) 评论(1) 推荐(2) 编辑
摘要: 从七月份开始一直到九月底才看完设计模式,在这个过程中我不敢说我已经掌握了那本书里面的内容,或者说1/5,没能力说也没有资格说。但是结果不重要,重要的是这个过程我的收获!主要包括如下几个方面: 1、认识了这么多设计模式。刚刚接触java没多久就在学长那里听过设计模式的大名,但是由于能力有限,一直不敢触碰。而今有幸将其都认识了。 2、开始有设计的理论了。在接触设计模式之前没有怎么想过设计方面东东,看到问题就立马动手解决,没有想到怎么样来设计更好,如何来是这块更加优化、漂亮。 3、开始考虑系统的可扩展性了。 4、在遇到问题后开始想有那个设计模式会适用这个场景。 5、对面向对象有了更深一步的了解。 . 阅读全文
posted @ 2013-10-08 19:12 chenssy 阅读(56531) 评论(67) 推荐(318) 编辑
摘要: 大家好,我是大明哥,我又来了。 为什么是 Reactor 一般所有的网络服务,一般分为如下几个步骤: 读请求(read request) 读解析(read decode) 处理程序(process service) 应答编码 (encode reply) 发送应答(send reply) 接下来,大 阅读全文
posted @ 2021-10-22 19:20 chenssy 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 通过上篇文章(【死磕NIO】— 阻塞、非阻塞、同步、异步,傻傻分不清楚),我想你应该能够区分了什么是阻塞、非阻塞、异步、非异步了,这篇文章我们来彻底弄清楚什么是阻塞IO,非阻塞IO,IO复用,信号驱动IO,异步IO。 要想彻底弄清楚这五种IO模型,我们需要先弄清楚几个基本概念。 基本概念 什么是IO 阅读全文
posted @ 2021-10-08 21:18 chenssy 阅读(304) 评论(5) 推荐(3) 编辑
摘要: 万事从最基本的开始。 要想完全掌握 NIO,并不是掌握上面文章(【死磕NIO】— NIO基础详解)中的三大组件就可以了,我们还需要掌握一些基本概念,如什么是 IO,5 种IO模型的区别,什么是阻塞&非阻塞等等,只有掌握了这些基本概念,我们对NIO才能理解得更加得心应手。 这篇文章我们就从阻塞&非阻塞 阅读全文
posted @ 2021-09-21 22:40 chenssy 阅读(427) 评论(1) 推荐(0) 编辑
摘要: Netty 是基于Java NIO 封装的网络通讯框架,只有充分理解了 Java NIO 才能理解好Netty的底层设计。Java NIO 由三个核心组件组件: Buffer Channel Selector 缓冲区 Buffer Buffer 是一个数据对象,我们可以把它理解为固定数量的数据的容器 阅读全文
posted @ 2021-09-12 16:51 chenssy 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 某天我正在工位上听着 Vicotry,愉快地敲着 hello world ,这感觉就像我写的代码能征服世界。突然运维给我打了一个电话,说我们某台服务器 OOM 了,要我过去看下,这感觉就像 xxx,你懂的。 去运维室、登录服务器、查看日志、....一顿操作猛如虎,看到一个 List 对象 600MB 阅读全文
posted @ 2021-08-22 09:22 chenssy 阅读(403) 评论(2) 推荐(0) 编辑
摘要: LRU,即 Least Recently Use ,直译为 “最近最少使用”。它是根据数据的历史访问记录来进行数据淘汰的,淘汰掉最先访问的数据,其核心思想是 如果数据最近被访问过,那么将来被访问的几率也会更加高。 要实现 LRU,需要做到两点: 查询出最近最晚使用的项 给最近使用的项做一个标记 实现 阅读全文
posted @ 2021-08-20 08:52 chenssy 阅读(338) 评论(1) 推荐(0) 编辑
摘要: copy-on-write,即写时复制技术,这是小编在学习 Redis 持久化时看到的一个概念,当然在这个概念很早就碰到过(Java 容器并发有这个概念),但是一直都没有深入研究过,所以趁着这次机会对这个概念深究下。所以写篇文章记录下。 COW(copy-on-write 的简称),是一种计算机设计 阅读全文
posted @ 2021-08-15 10:33 chenssy 阅读(247) 评论(0) 推荐(1) 编辑
摘要: 【死磕 Java 并发】系列是 LZ 在 2017 年写的第一个死磕系列,一直没有做一个合集,这篇博客则是将整个系列做一个概览。 先来一个总览图: 【高清图,请关注“Java技术驿站”公众号,回复:脑图JUC】 【死磕Java并发】—–深入分析synchronized 的实现原理 synchroni 阅读全文
posted @ 2018-08-29 17:39 chenssy 阅读(4391) 评论(1) 推荐(2) 编辑
摘要: 在上篇博客(【死磕Java并发】—–深入分析volatile的实现原理)LZ提到过由于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性的问题。那么我们正确使用同步、锁的情况下,线程A修改了变量a何时对线程B可见? 我们无法就所有场景来规定某个线程修改的变量何时对其他线程可见 阅读全文
posted @ 2017-02-13 13:08 chenssy 阅读(42009) 评论(4) 推荐(10) 编辑
摘要: 通过前面一章我们了解了synchronized是一个重量级的锁,虽然JVM对它做了很多优化,而下面介绍的volatile则是轻量级的synchronized。如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。Java语言规范对vo 阅读全文
posted @ 2017-02-08 17:46 chenssy 阅读(26898) 评论(5) 推荐(8) 编辑
摘要: 我们知道Spring的IoC起到了一个容器的作用,其中装得都是各种各样的Bean。同时在我们刚刚开始学习Spring的时候都是通过xml文件来定义Bean,Spring会某种方式加载这些xml文件,然后根据这些信息绑定整个系统的对象,最终组装成一个可用的基于轻量级容器的应用系统。 Spring Io 阅读全文
posted @ 2016-06-27 09:09 chenssy 阅读(6050) 评论(4) 推荐(4) 编辑
摘要: 首先我们先来看看如下一段代码 ClassPathResource resource = new ClassPathResource("bean.xml"); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader... 阅读全文
posted @ 2016-06-12 16:21 chenssy 阅读(3704) 评论(0) 推荐(0) 编辑
摘要: 2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习、看书,努力提升自己!预计在2016年要看12本书,主要涉及java基础、Spring研究、java并发、JVM、分布式之类的。在今年面试的时候深受打击,到处都是问分布式、集群的?难道现在工作两三年的都这么牛逼了?都在搞分布式、集群之类的? 2016书单如下: 1、深入理解Java虚拟机:JVM高... 阅读全文
posted @ 2016-05-04 08:53 chenssy 阅读(11089) 评论(27) 推荐(28) 编辑
摘要: IOC:Inversion of Control(控制反转)。IOC它所体现的并不是一种技术,而是一种思想,一种将设计好的对象交给容器来管理的思想。IOC的核心思想就体现在控制、反转这两个词上面,要理解就必须要理解几个问题: 1、谁控制谁?在传统的开发工作中,我们一般都是主动去new一个对象,这个是主动控制依赖对象。但是对于IOC而已,控制权会被移交给容器,所以应该是IOC容器控制对象。 2、... 阅读全文
posted @ 2016-01-06 17:50 chenssy 阅读(5001) 评论(3) 推荐(5) 编辑
摘要: 在【Java并发编程实战】—–“J.U.C”:CLH队列锁提过,AQS里面的CLH队列是CLH同步锁的一种变形。其主要从两方面进行了改造:节点的结构与节点等待机制。在结构上引入了头结点和尾节点,他们分别指向队列的头和尾,尝试获取锁、入队列、释放锁等实现都与头尾节点相关,并且每个节点都引入前驱节点和后后续节点的引用;在等待机制上由原来的自旋改成阻塞唤醒。其结构如下: 知道其结构了,我们再看看他... 阅读全文
posted @ 2015-12-30 08:24 chenssy 阅读(10670) 评论(2) 推荐(4) 编辑