领域驱动设计(DDD)到底在说什么——软件设计(一) 发表于 2021-08-24 | 分类于 领域驱动设计 | 0 | 阅读次数 1722 前言 之前看了很多关于领域驱动设计(DDD)的课程和书籍,发现都没有切合实际的去描述领域驱动设计到底是什么,可能看了几本书也不知道DDD到底该怎么落地。这里因为我在项目中实践了DDD,正好借此机会做一些总结,顺便借助费曼学习法去把DDD讲出来,也是对自己的理解做一些深思和反省。(文中的所有观点均来自 阅读全文 »
SpringBoot核心思想及源码解析(上)——自动装配 发表于 2021-07-18 | 分类于 Spring源码专题 | 0 | 阅读次数 1429 引言 最近几年随着微服务的发展,SpringCloud火了,随之SpringBoot这个“脚手架”逐渐被大家所喜爱,主要是它的方便和快捷,无需各种xml配置,一个主方法直接跑一个后台程序,想整合其他框架时,只需要在pom文件中引入一个starter,类上加一个@EnableXXX的注解,就可以很快的 阅读全文 »
聊聊ConcurrentHashMap的执行内幕(下) 发表于 2021-06-05 | 分类于 多线程 | 0 | 阅读次数 1525 JDK版本 8u251 解决完成死循环BUG相关的问题,我们来看看ConcurrentHashMap操作相关的多线程计数、查询、删除等方法。 多线程计数 CounterCell 首先回到我们计数的起点,新增元素putVal方法,在新增元素成功后会调用addCount方法,在Concurrent 阅读全文 »
从死循环BUG来聊聊ConcurrentHashMap的执行内幕(上) 发表于 2021-05-29 | 分类于 多线程 | 1 | 阅读次数 2024 JDK版本 8u251 前几日遇到的一个问题:一个SpringBoot项目凭空“起不来”了,日志刚刚输出完一个加载数据库驱动的配置,检查数据库用DataGrip能正常连接。很纳闷,偏偏这个时候就自己的环境起不起来其他人都可以正常启动(后来定位到和每个机器的环境变量参数数量有关)。 那咱们只能撸堆 阅读全文 »
深入理解计算机网络IO(中)——IO多路复用 发表于 2021-04-19 | 分类于 计算机网络 | 0 | 阅读次数 1022 上一篇文章已经介绍了IO 多路复用的含义,这里着重看一下linux系统多路复用实现的API select select 使用文档在:select(2) - Linux manual page 接口定义如下: int select(int nfds, fd_set *readfds, fd_set 阅读全文 »
深入理解计算机网络IO(上)——IO模型 发表于 2021-03-11 | 分类于 计算机网络 | 0 | 阅读次数 1221 今天来学习下:什么是IO?如何完成一次IO?什么是IO多路复用? 概念说明 在谈IO模型之前,我们先来了解一下这里面涉及一些概念: Socket套接字和TCP连接 用户空间与内核空间 Socket缓存区 CPU中断 Socket套接字和TCP连接 Socket中文翻译为“插孔”、“插槽”,Soc 阅读全文 »
抽象资源同步器框架AQS原理(五)——从内存屏障到volatile原理 发表于 2021-02-18 | 分类于 多线程 | 0 | 阅读次数 1203 并发问题的背景 这里我们先从最源头,想想volatile的存在为了解决什么样的问题? 随着CPU、内存、IO设备不断更新发展,有一个核心矛盾一直存在:CPU、内存、IO三者的速度差距 为了合理利用 CPU 的高性能,平衡这三者的速度差异,计算机体系结构、操作系统、编译程序都做出了贡献,主要体现为:C 阅读全文 »
抽象资源同步器框架AQS原理(四)——Synchronized锁原理 发表于 2021-01-28 | 分类于 多线程 | 0 | 阅读次数 1105 前几天看到AQS的一个问题: 有了 synchronized 为什么还要重复造轮子? 我们顺便来回顾下概念 Synchronized 原理 Synchronized在1.6之前也叫重量级锁,随着Java SE 1.6对Synchronized进行了各种优化之后,有些情况下它就并不那么重了,它的作 阅读全文 »
谈谈我的2020 发表于 2021-01-07 | 分类于 技术杂谈 | 0 | 阅读次数 1341 抓住2020最后的小尾巴,最后抽点时间,谈谈我的2020~ 总览 19年结束时,我在西安,2020快结束时,我还在西安... 西安是我人生轨迹中很重要的部分,生活上用两句话来说就是:从之前的假北方人变成了假四川人,从之前的臊子面油条火锅变成了牛肉面泡馍烧烤;技术上我很幸运,上半年跟着山哥(项目 阅读全文 »
抽象资源同步器框架AQS原理(三)——条件队列 发表于 2020-12-24 | 分类于 多线程 | 0 | 阅读次数 984 条件队列是什么 背景 了解这个问题之前,我们先来了解下为什么需要wait与notify? 网上有一个经典的栗子:图书馆有一本《Java并发编程艺术》,张三首先借走了(持有锁),李四也想借这个本书,但是不能每天都去图书馆看一下(轮训)张三是否归还,张三也不是每天都来说我还要看几天,这时候就需要一个 阅读全文 »