在Java中基于某特定接口获取所有ClassPath下的所有实现类的一些思考(上) 发表于 2021-10-23 | 分类于 设计思想 | 0 | 阅读次数 177 背景 第一次遇到这个问题是在考虑基于接口,如何高效寻找所有的实现类: 工厂模式中:需要将所有支持生产的类型注册到工厂类中,每新增一个类型要修改一次工厂类的代码(对修改无法关闭) 策略模式中:所有支持的策略需要注册到管理类中,每新增一种策略需要修改一次策略管理类的代码 如果涉及分模块开发时,实现类 阅读全文 »
软件设计及其思想小节(上) 发表于 2021-10-07 | 分类于 设计思想 | 0 | 阅读次数 226 引言 这篇文章,还是对之前技术思想的一些总结,经历过软件设计的共同点,才发现万变不离其宗,变化的只是形式,也算是对自己基础的一点警醒 以前我在思考为什么要学习计算机基础原理、网络编程、算法和数据结构,直到前几日:我与TL聊起MQ队列的可靠性消息与TCP的可靠性传输ack机制惊人的相似,我们在学习一门 阅读全文 »
领域驱动设计(DDD)复杂的术语——软件设计(二) 发表于 2021-10-01 | 分类于 领域驱动设计 | 0 | 阅读次数 244 引文 从这里开始,本文(算是连载文)打算从基础的概念去理解DDD,上文主要讲了DDD的概念和原则,今天就从基础名词和核心思想来理解它。 DDD的体系引入了很多名词,从解决问题的方向分为:领域、子域、核心域、通用域、支撑域、限界上下文,从建模的方向又分为:聚合、聚合根、实体、值对象等等,这些名词真的是 阅读全文 »
SpringBoot核心思想及源码解析(下)——启动原理 发表于 2021-09-23 | 分类于 Spring源码专题 | 0 | 阅读次数 189 引言 得益于SpringBoot这个脚手架封装了很多繁琐的操作,我们只需要通过java -jar一行命令便启动了一个Web服务器;再也不需要搭建tomcat等相关服务,这里我们就来深入探究一下SpringBoot容器启动的原理。 这篇文章是接着上文SpringBoot核心思想及源码解析——自动装配的 阅读全文 »
个人技术的思考和自我反思 发表于 2021-09-12 | 分类于 技术杂谈 | 0 | 阅读次数 312 最近,在HW的项目结束,回到成都趁着空档,做一个小小的经历总结。 (本篇文章涉及少部分技术,更多的是一些自己的思考和总结) 技术入门 以充满激情的想法、热情逐渐入门,逐渐增加广度,逐渐寻找自己的方向 在全球蛙电子商务公司我是一个对技术充满期待、充满热情的人,看到每个新技术,就在想为什么这么神奇, 阅读全文 »
领域驱动设计(DDD)到底在说什么——软件设计(一) 发表于 2021-08-24 | 分类于 领域驱动设计 | 0 | 阅读次数 244 前言 之前看了很多关于领域驱动设计(DDD)的课程和书籍,发现都没有切合实际的去描述领域驱动设计到底是什么,可能看了几本书也不知道DDD到底该怎么落地。这里因为我在项目中实践了DDD,正好借此机会做一些总结,顺便借助费曼学习法去把DDD讲出来,也是对自己的理解做一些深思和反省。(文中的所有观点均来自 阅读全文 »
SpringBoot核心思想及源码解析(上)——自动装配 发表于 2021-07-18 | 分类于 Spring源码专题 | 0 | 阅读次数 204 引言 最近几年随着微服务的发展,SpringCloud火了,随之SpringBoot这个“脚手架”逐渐被大家所喜爱,主要是它的方便和快捷,无需各种xml配置,一个主方法直接跑一个后台程序,想整合其他框架时,只需要在pom文件中引入一个starter,类上加一个@EnableXXX的注解,就可以很快的 阅读全文 »
聊聊ConcurrentHashMap的执行内幕(下) 发表于 2021-06-05 | 分类于 多线程 | 0 | 阅读次数 479 JDK版本 8u251 解决完成死循环BUG相关的问题,我们来看看ConcurrentHashMap操作相关的多线程计数、查询、删除等方法。 多线程计数 CounterCell 首先回到我们计数的起点,新增元素putVal方法,在新增元素成功后会调用addCount方法,在Concurrent 阅读全文 »
从死循环BUG来聊聊ConcurrentHashMap的执行内幕(上) 发表于 2021-05-29 | 分类于 多线程 | 0 | 阅读次数 658 JDK版本 8u251 前几日遇到的一个问题:一个SpringBoot项目凭空“起不来”了,日志刚刚输出完一个加载数据库驱动的配置,检查数据库用DataGrip能正常连接。很纳闷,偏偏这个时候就自己的环境起不起来其他人都可以正常启动(后来定位到和每个机器的环境变量参数数量有关)。 那咱们只能撸堆 阅读全文 »
深入理解计算机网络IO(中)——IO多路复用 发表于 2021-04-19 | 分类于 计算机网络 | 0 | 阅读次数 284 上一篇文章已经介绍了IO 多路复用的含义,这里着重看一下linux系统多路复用实现的API select select 使用文档在:select(2) - Linux manual page 接口定义如下: int select(int nfds, fd_set *readfds, fd_set 阅读全文 »