手写跳表 - Java

https://github.com/tengta119/skip-list 123456789101112131415161718192021222324252627282930313233343536373839404142graph LR subgraph Level 0 H0(Header) --> N10_0(10) --> N25_0(25) ...

数据结构与算法 / Java

手写 Tomcat

02 初出茅庐:构造一个极简的 HttpServer使用 Socket 简单实现 Request12345678910111213141516171819202122232425262728293031323334353637383940414243public class Request { InputStream input; String uri; publ...

后端开发 / Web容器

手写 Spring

01 - 原始版本的 IOC 容器IOC 容器的作用是自动创建对象,降低系统间的耦合度 core12public interface Resource extends Iterator<Object>{} 外部的配置信息都当成 Resource (资源)来进行抽象 123456789101112131415161718192021222324252627282...

后端开发 / 框架源码

JVM 学习总结

https://www.bilibili.com/video/BV1yE411Z7AP 内存结构程序计数器好的,我们来详细讲解一下 Java 虚拟机(JVM)内存结构中的程序计数器(Program Counter Register)。 我会从它是什么、为什么需要它、如何工作以及它的核心特点这几个方面来全面解释。 什么是程序计数器?程序计数器,也常被称为 PC 寄存器,是 JVM 内存...

后端开发 / JVM

动态线程池

此项目是已组件的形式进行搭建分为 4 个部分 config、domain、registry、trigger config:自动装配 Bean,获取项目中的线程池,创建 redis 消息中心 domain:存储线程池的 Bean,修改线程池 registry:redis 注册中心,将线程池的信息上传到 redis trigger: job:定时任务,将线程池信息上传到 redis 中 li...

项目开发 / Java并发

仿小红书交流社区(微服务架构)

framework - 平台基础设施starter - jackson为了支持 Java 8 中新的日期 API ,我们需要自定义 Jackson 配置 12345678910111213141516171819202122232425262728293031323334353637383940@AutoConfigurationpublic class JacksonAutoConfi...

项目开发 / 微服务

Spring 源码阅读(循环依赖、Bean 生命周期、AOP、IOC) - 5.2.15.RELEASE

循环依赖执行原理三级缓存: 第一级缓存:singletonObjects,用于保存实例化、注入、初始化完成的 bean 实例例; 第二级缓存:earlySingletonObjects,用于保存实例化完成的 bean 实例例; 第三级缓存:singletonFactories,⽤于保存 bean 创建⼯工⼚,以便后面有机会创建代理对象 执行流程: 在第一层中,先去获取 A 的 Be...

后端开发 / Spring源码

小型支付系统(MVC、DDD)

开发运维natapp - 内网穿透NATAPP 123456789# https://natapp.cn/ - 支持免费使用,但付费会更稳定一些 # 将本文件放置于natapp同级目录 程序将读取 [default] 段 # 在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置 # 命令行参数 -config= 可以指定任意config.ini文件...

项目开发 / 架构设计

ThreadPoolExecutor源码阅读以及手写简单线程池 —— JDK17

ThreadPoolExecutor 固定大小的线程池 Executors.newFixedThreadPool(int nThreads);,适合用于任务数量确定,且对线程数有明确要求的场景。例如,IO 密集型任务、数据库连接池等。 缓存线程池 Executors.newCachedThreadPool();,适用于短时间内任务量波动较大的场景。例如,短时间内有大量的文件处理任务或网络请...

后端开发 / Java源码

MyDB - 手写数据库

MyDBTM - 事务管理tm 模块通过维护一个 xid 文件来进行事务管理 123456789101112131415// XID文件头长度static final int LEN_XID_HEADER_LENGTH = 8;// 每个事务的占用长度private static final int XID_FIELD_SIZE = 1;// 事务的三种状态// 活跃private stat...

项目开发 / 数据库
123