
源码分析
文章平均质量分 95
对各种常用框架的源码分析, 了解框架实现, 吸收编程设计思想
Allen-xs
一个工作60年的程序员
展开
-
Tomcat架构设计&源码剖析
Context 确定后,Mapper 再根据web.xml中配置的 Servlet 映射路径来找到具体的 Wrapper 和 Servlet。原创 2023-09-07 15:48:39 · 699 阅读 · 0 评论 -
JDK源码解析-ConcurrentHashMap
Java7 中 ConcurrentHashMap 使用的分段锁,也就是每一个 Segment 上同时只有一个线程可以操作,每一个 Segment 都是一个类似 HashMap 数组的结构,它可以扩容,它的冲突会转化为链表。但是 Segment 的个数一但初始化就不能改变。Java8 中的 ConcurrentHashMap 使用的 Synchronized 锁加 CAS 的机制。结构也由 Java7 中的Segment 数组 + HashEntry 数组 + 链表进化成了。原创 2023-09-06 19:07:00 · 128 阅读 · 0 评论 -
JDK源码解析-HashMap&面试题
HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。数组 + 链表数组 + 链表 / 红黑树思考:为什么1.8之后,HashMap的数据结构要增加红黑树?原创 2023-09-05 10:42:30 · 125 阅读 · 0 评论 -
JDK源码解析-LinkedList
LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的。原创 2023-09-01 15:07:06 · 140 阅读 · 0 评论 -
JDK源码-Synchronized
如果某一个资源被多个线程共享,为了避免因为资源抢占导致资源数据错乱,需要对线程进行同步,那么synchronized就是实现线程同步的关键字synchronized的作用是保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果。原创 2023-08-31 15:44:10 · 135 阅读 · 0 评论 -
JDK源码解析-ArrayList
在介绍 ArrayList 时,知道该类实现了 List 接口,而 List 接口又继承了 Collection 接口,Collection 接口又继承了 Iterable 接口,该接口有个 Iterator iterator() 方法,能获取 Iterator 对象,能用该对象进行集合遍历,为什么能用该对象进行集合遍历?如上所示,在通过调用 add 方法添加元素之前,要首先调用 ensureCapacityInternal 方法来确定集合的大小,如果集合满了,则要进行扩容操作。当小于0时,抛出异常。原创 2023-08-29 21:53:00 · 241 阅读 · 0 评论 -
JDK源码解析-Object
通过分析虚拟机源码证明了hashCode不是直接用的内存地址,而是采取一定的算法来生成hashcode值的存储在mark word里,与锁共用一段bit位,这就造成了跟锁状态相关性如果是偏向锁:一旦调用hashcode,偏向锁将被撤销,hashcode被保存占位mark word,对象被打回无锁状态那偏偏这会就是有线程硬性使用对象的锁呢?对象再也回不到偏向锁状态而是升级为重量级锁。hash code跟随mark word被移动到c的object monitor,从那里取。原创 2023-08-29 21:50:40 · 223 阅读 · 0 评论 -
SpringBoot源码剖析
SpringBoot概念什么是SpringBootspring官方的网站:https://spring.io/翻译:通过Spring Boot,可以轻松地创建独立的,基于生产级别的基于Spring的应用程序,并且可以“运行”它们其实Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。以下内容来自百度百科SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.原创 2023-08-26 14:53:28 · 3847 阅读 · 2 评论 -
Spring源码深度解析三 (MVC)
SpringMVC是基于Servlet和Spring容器设计的Web框架Servlet 接口及其实现类结构:ServletConfig 是一个和 Servlet 配置相关的接口:在配置 Spring MVC 的 DispatcherServlet 时,会通过 ServletConfig 将配置文件的位置告知 DispatcherServlet。原创 2023-08-22 21:31:25 · 258 阅读 · 0 评论 -
Spring源码深度解析二(AOP)
AOP(Aspect Orient Programming):面向切面编程;用途:用于系统中的横切关注点,比如日志管理,事务管理;实现:利用代理模式,通过代理对象对被代理的对象增加功能。所以,关键在于AOP框架自动创建AOP代理对象,代理模式分为静态代理和动态代理;框架: AspectJ使用静态代理,编译时增强,在编译期生成代理对象;SpringAOP使用动态代理,运行时增强,在运行时,动态生成代理对象;原创 2023-08-19 14:33:04 · 162 阅读 · 0 评论 -
Spring源码深度解析一(IOC&DI)
1. Spring架构设计Spring框架是一个分层架构,他包含一系列的功能要素,并被分为大约20个模块2. 设计理念Spring是面向Bean的编程(BOP:Bean Oriented Programming),Bean在Spring中才是真正的主角。Bean在Spring中作用就像Object对OOP的意义一样,没有对象的概念就像没有面向对象编程,Spring中没有Bean也就没有Spring存在的意义。Spring提供了IoC 容器通过配置文件或者注解的方式来管理对象之间的依赖关系。控制反转原创 2023-08-16 21:08:48 · 200 阅读 · 0 评论 -
MyBatis源码解析&手写持久层框架
JDBC API 允许应用程序访问任何形式的表格数据,特别是存储在关系数据库中的数据代码示例:1.2 JDBC问题分析&解决思路剖开代码,逐个分析:(1)加载驱动,获取链接:存在问题1:数据库配置信息存在硬编码问题。存在问题2:频繁创建、释放数据库连接问题。(2)定义sql、设置参数、执行查询:存在问题3:SQL语句、设置参数、获取结果集参数均存在硬编码问题 。(3)遍历查询结果集:存在问题4:手动封装返回结果集,较为繁琐针对JDBC各个环节中存在的不足,现在,整理出对应的优化思路,统一汇总:JDBC是原创 2023-08-12 13:50:18 · 920 阅读 · 0 评论