源码
文章平均质量分 85
Ch.yang
try{ coding } catch { bug }
展开
-
【Apollo】阿波罗使用占位符 #{} 的异常分析
出于线上 hotfix 报文请求模板的考虑,新增一个阿波罗配置,取值形如:重启后服务宕机,影响较大。现本地复现一下这个异常,并加以分析。原创 2024-01-07 18:01:12 · 1198 阅读 · 0 评论 -
【源码】hamcrest 源码阅读 定制 Matcher
官方文档官方示例:(打开后搜索 Writing custom matchers)需求按官方的规范拓展自己的 Matcher将自己的 Matcher 加入到现有的谓词用法里 (allOf 、anyOf 等)原创 2023-10-07 15:22:15 · 170 阅读 · 0 评论 -
【源码】hamcrest 源码阅读 泛型 extends 和迭代器模式
官方文档上篇文章Hamcrest 源码阅读及空对象模式、模板方法模式的应用本篇文章迭代器模式hamcrest 作为一个matcher库,把某个matcher的职责打印出来,可以方便开发者进行调试。原创 2023-10-07 11:30:23 · 305 阅读 · 0 评论 -
【源码】hamcrest 源码阅读 空对象模式、模板方法模式的应用
hamcrest ,一个被多个测试框架依赖的包。听说 hamcrest 的源码质量很高,特此来学习一下。建议fork原仓库,拉到本地看代码。代码仓库hamcrest github 仓库。原创 2023-10-02 13:58:46 · 1225 阅读 · 0 评论 -
【Java】 String.split 归纳
jdk的注释已经写的很明白了,本文只是在此基础上再归纳一下。重点是归纳下第二个参数的用法。原创 2022-08-07 21:10:59 · 188 阅读 · 0 评论 -
【著作阅读笔记】《代码整洁之道》对Sql类的重构引发的思考
代码整洁之道》第十章,类。教我们去识别能支持拓展的代码是怎样的,跟设计模式是有交集的,包括单一原则,开闭原则。借书中的代码和阐述,记录下对原则的认识,及识别高内聚、可拓展的代码。...原创 2022-08-07 16:38:02 · 182 阅读 · 0 评论 -
【Spring】著作阅读笔记——Spring MVC核心技术
《Spring 揭秘》是一本09年出版的书,当时还在流行,作者大胆预言有着更广阔的发展前途,并且建议新的项目采用进行开发。现在回过头来看,当年的之于就如现今的 之于 。当年作者熟练掌握了才悟得的好,那么如今在进入的探索前,还需要夯实的基础。短时间内还是很能打的,看完书后,慢慢能体会其架构上的设计哲学。框架上使用的设计模式,虽简洁但有效。 有着三个角色保存Spring IOC中注册的 和 客户端请求的映射关系,一般的key为url, 编程中这个key常常使用 进行声明 的包装类。看到了包装逻辑有A原创 2022-02-17 20:20:58 · 442 阅读 · 0 评论 -
【微服务】maven聚合及继承关系在spring cloud项目中的原理及应用
1. 前言1.1 maven官网1.2 本文需要解释清楚的知识点maven的聚合和继承是两个不同的特性(官网的说法),看懂spring cloud项目需要同时掌握聚合和继承的概念与设计模式中的基本概念一脉相承,以下用java类比弄清楚 <dependencyManagement>中的 <dependencies> 和 普通 <dependencies> 的区别1.3 需要的前置知识了解maven 的独立安装及配置了解maven 生命周期了解mave原创 2022-01-12 20:57:04 · 1196 阅读 · 0 评论 -
【Spring】著作阅读笔记——ApplicationContext的统一资源管理
前言Spring的出现,把Java net包下的URL的资源类型做了扩展。明确了资源的定位及表示的边界。解耦了资源的定位和表示,以下将整理Spring为统一资源管理做出的努力。(文末给出获取bean的工具类,得益于Spring对资源的重新设计。Java 对URL的狭义解释广义的URL解释 ,大意为:因特网上访问某一资源的唯一标志:形如<方案>:<方案描述部分>,以下都为URL的表示http://www.baidu.comfile://SD/packet.xmlthun原创 2022-02-07 13:51:30 · 509 阅读 · 0 评论 -
【Spring】著作阅读笔记——ORM的诞生及Spring的集成
前言回顾曾经约定俗成的开发规则,DAO模式 —— Oracle 官网介绍的开发标准(浏览即可)什么是JDBCJDBC的缺陷ORM的诞生Spring集成ORM做的努力1. JDBC1.1 什么是JDBC以下内容整理至百度JDBC (Java Database Connectivity)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口。JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql包中)具体的规范有:DriverMa原创 2022-02-11 22:42:14 · 801 阅读 · 0 评论 -
【源码】Spring Security 官方文档阅读并查源码解读认证流程
官网及用词说明官网:Spring Security Reference Version 5.2.15.RELEASE用词:开发者 - 项目中的程序员系统用户 - 项目中数据库表中较为复杂的用户框架用户 - Spring Security 框架中中定义的用户1. 获取认证过的用户主体1.1 借 SecurityContextHolder 从线程中获得与程序交互的主体信息 Authentication该类内部组合了一个SecurityContextHolderStrategy 也是就存储上原创 2022-01-22 18:30:24 · 1549 阅读 · 1 评论 -
【Java_基础深入】JDK借助RandomAccess接口 ,定制ArrayList与LinkedList的二分查找策略
java常用集合类接口实现情况public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializablepublic class LinkedList<E> exte...原创 2020-03-08 19:04:28 · 753 阅读 · 0 评论 -
【Java_基础深入】LinkedHashMap 继承 HashMap又实现 Map 接口背后的设计思想
JDK源码的类定义public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializablepublic class LinkedHashMap<K,V> extends HashMap<K,V> implements...原创 2020-03-08 14:06:26 · 1164 阅读 · 3 评论 -
【Java_基础深入】SimpleDateFormat.format()线程不安全的起因与解决方案
追踪问题网上找到的最多讨论的就是 calendar的线程不安全操作传递到了SimpleDateFormat针对Calendar进行断点观察,观察其值的变化观察calendar的赋值链SimpleDateFormat实例化过程1: calendar初始化的位置追踪上层方法:2.1 疑惑:无参构造调用了有参的构造方法,初始化了calendar2.2 解惑:无参构造中使用了this...原创 2019-12-29 23:12:44 · 1177 阅读 · 0 评论 -
【Spring】SpringMVC DispatcherServlet 和 Controller的交互
1. MVC架构1.1 FrontController: DispatcherServlet FrontController就是Spring提供的DispatcherServlet , 而不是Spring提供的@Controller,xml配置文件需要指定Tomcat启动时优先加载该Servlet映射路径写/,转发所有请求 <servlet> <ser...原创 2019-12-24 17:28:34 · 2522 阅读 · 1 评论 -
【java_基础深入】com.mysql.jdbc.Driver 借助SPI打破双亲委派
一. SPI 中角色前言以下概念拓展至Effective java page 6 (中文版)SPI (Service Provider Interface),用于拓展工程实例的接口对于JDBC ,Connection 就是其服务接口的一部分1.1 服务提供者面向的JDK接口 DriverService InterfaceJDK 提供了标准,具体的数据库驱动由各大数据库厂商提供...原创 2019-12-11 22:48:40 · 1541 阅读 · 0 评论 -
【java_基础深入】类加载器和双亲委派机制、全盘委托机制的关系
类加载器和双亲委派机制、全盘委托机制的关系一. 类加载器1.1 类加载器rt.jar中 sun.misc.Launcher.classpublic class Launcher { static class AppClassLoader extends URLClassLoader {} static class ExtClassLoader extends URLClas...原创 2019-12-11 22:32:33 · 1017 阅读 · 1 评论 -
【java_基础深入】源码分析 BufferedOutputStream.close() flush() Socket.shutdownOutput()
具体问题bos.未flush() 会造成 Socket 的 阻塞解决办法: 用 flush 或者 Socket.shutdownOutput()BufferedOutputStream.close() flush() 和 Socket.shutdownOutputBufferedOuputStream 成员变量 和 flush()BufferedOutputStream 内层...原创 2019-09-20 23:23:47 · 958 阅读 · 0 评论 -
【java_基础深入】Lambda 与匿名内部类的区别
前言匿名内部类属于java编写代码时候的一种简约写法。Lambda属于匿名内部类的应用层面上的语法糖,实际上,Lambda已经改变了底层逻辑。具体表现Lambda表达式中可以直接super.方法名 ,调用方法所在类的父类方法,而匿名内部类不可以。public class Son extends Father { @Override public void askMoney(...原创 2019-10-07 22:10:49 · 789 阅读 · 1 评论 -
【java_基础深入】从语言规范、字节码指令、jvm编译 理解finally语句块细节
一、finally语句块执行的外在表现1.1. Gosling 亲自对 finally 的描述a finally clause is always entered with a reason. That reason may be that the try code finished normally, that it executed a control flow statement su...原创 2019-10-22 21:18:29 · 319 阅读 · 0 评论 -
【java_设计模式】动态代理和静态代理的本质区别
前言网上有很多讲动态代理和静态代理的写法作为区分原因,但是都没有讲到本质上本文主要从应用层自上而下看待这个问题应用场景静态代理 // 数据准备 Order order = new Order();order.setUserId(1); Money money = new Money(); // 创建静态代理 O...原创 2019-10-25 20:22:53 · 904 阅读 · 0 评论 -
【java_设计模式】jdk动态代理原码解析,debug 获取 $proxy0
普通测试场景业务场景保存订单信息分层模型IOrderService -> OrderServiceImpl业务代码public class OrderServiceImpl implements IOrderService { // spring 会自己注入,这里手动注入 private IOrderDao iOrderDao; @Override ...原创 2019-10-09 23:39:14 · 371 阅读 · 0 评论 -
【java_基础深入】ThreadPoolExecutor.execute() 源码分析
第一层:初见阻塞队列BlockingQueue、任务载入方法Worker.addWorker()思考:corePoolSize BlockingQueue 如何直接参与调度出现了的Worker是什么为什么没有出现maximumPoolSize public void execute(Runnable command) { //线程池指标: 获取线程池状态 + 活跃线程数 (使用二...原创 2019-11-17 16:23:10 · 635 阅读 · 0 评论