自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 历史文章合集-分类(持续更新)

大家好,我是此林。不知不觉,已经记录博客很长时间了,下面是历史文章合集-分类,方便查找。

2025-09-22 13:51:07 911

原创 React Hook原理速通笔记1(useEffect 原理、使用踩坑、渲染周期、依赖项)

什么时候执行?(依赖是谁)用了哪些外部变量?(依赖全写)有没有副作用需要清理?(return)之前我们说了 React 渲染流程,再看看这张图。注意这里 useEffect 是在浏览器绘制后异步执行的,这样做有什么好处呢?不阻塞浏览器绘制,用户响应更快,适合大多数副作用场景(数据获取API调用、事件监听器、订阅管理、日志记录等)不过 React 里还有个类似的 Hook,它叫 useLayoutEffect。

2026-01-06 13:57:19 1167

原创 如何设计一个高效的可观测数据存储,从零设计TSDB

但这还没有结束。刚刚提到,Flush 操作会生成很多小的Part文件。如果这个过程一直持续,一个Shard里面就会有成百上千个细小的 Part 文件。这就引出了Write Path合并(Merge)。虽然 Part 文件是不可变的(不能原地编辑),但 TSDB 仍需要定期将这些小的、有效的 Part 文件合并成数量更少、体积更大的 Part 文件。问:合并操作有什么好处?将很多小文件变成少数大文件,对我们日常的数据查询速度会有什么影响?答:优化查询性能和提高 I/O 效率。当一个Shard。

2025-11-27 17:01:20 876

原创 学习笔记:一文速通k8s基础概念原理Kubernetes

Pod 是 Kubernetes 中最小的可部署单元。你可以理解成:Pod = “一组共享网络和存储的容器”。通常情况下,一个 Pod 只包含一个容器。但有时多个容器需要共享数据或进程协作时(比如 sidecar 模式),它们就会被放进同一个 Pod。kind: Podmetadata:spec:ports:但区别是:Kubernetes 负责自动启动健康检查重启迁移这个 Pod。Service = Pod 的稳定访问 + 内部/节点负载均衡。

2025-10-26 14:48:49 1140

原创 记录最新 Neo4j 安装过程(截图实操)、使用、踩坑 Neo4j 5.26.13、JDK 17安装

大家好,我是此林。

2025-10-09 19:33:09 1190 1

原创 高并发下如何保证 Caffeine + Redis 多级缓存的一致性问题?MySQL、Redis 缓存一致性问题?

Caffeine 是 Java 高性能本地缓存库,核心基于ConcurrentHashMap + 双端队列 + Window TinyLFU 内存淘汰算法实现高效缓存管理。Caffeine 提供了近乎最佳命中率的高性能的本地缓存库,也就是可以通过Caffeine实现进程级的缓存。Spring内部的缓存使用的就是Caffeine。Caffeine的性能非常强悍,下图是官方给出的性能对比:相比 Guava Cache,它在热点数据识别和内存效率上有显著优化,适用于高并发读多写少的场景。

2025-10-07 21:56:07 1305

原创 MongoDB GEO 项目场景 ms-scope 实战

机构和快递员的作业范围逻辑一般是一样的,所以可以共存一张表中,通过type进行区分,1-机构,2-快递员。/*** 服务范围实体*/@Data@Id/*** 业务id,可以是机构或快递员*/@Indexed/*** 类型 {@link com.ms.scope.enums.ServiceTypeEnum}*/@Indexed/*** 多边形范围,是闭合的范围,开始经纬度与结束经纬度必须一样* x: 经度,y:纬度*///创建时间//更新时间这里面的。

2025-10-03 19:30:42 1347

原创 一文快速入门 MongoDB 、MongoDB 8.2 下载安装、增删改查操作、索引、SpringBoot整合 Spring Data MongoDB

MongoDB 是一种新型的 NoSQL 数据库,它和我们常见的 MySQL、Oracle 这些关系型数据库有点像,但又更灵活。它不是用一张张有固定行和列的表来存数据,而是用一种类似 JSON 的格式(叫 BSON)来保存信息。这样一来,数据可以随意增加字段,结构也可以很复杂,比如可以在一条记录里直接放数组、对象,甚至嵌套更多数据,非常适合应对互联网应用里多变的数据需求。和传统数据库相比,MongoDB 最大的特点就是灵活、好扩展。不需要提前设计好死板的表结构,且支持索引。

2025-10-02 16:03:31 1215

原创 支付系统-支付微服务落地设计3:支付宝微信支付具体实现、交易查询 (异步回调+定时轮询)

•。

2025-10-01 09:48:20 845

原创 支付系统-支付微服务落地设计2:扫码支付流程

大家好,我是此林。前面我们讲述了支付系统的支付渠道设计,包括支付渠道的概要、redis 缓存、工厂+策略模式解耦等,今天我们来继续来设计扫码支付的内容。

2025-09-27 20:11:43 1615

原创 支付系统-支付微服务落地设计1:支付渠道开发

在我们的系统里,支付功能是通过对接第三方支付平台来实现的,比如支付宝、微信支付、京东支付等。要使用这些平台的服务,通常需要先在对应的平台上申请账号,并获取相关的配置信息。有了这些账号和参数,系统才能与支付平台进行交互,完成支付、退款等操作。为了方便管理和使用,我们在支付微服务中,把这些账号及配置信息统一称为【支付渠道】。支付渠道就像是系统和支付平台之间的 “桥梁” ,所有与支付平台相关的动作都会依赖它。为了保证后续能够灵活调用和统一维护,我们会把这些支付渠道的信息保存到数据库中。

2025-09-23 20:08:01 1057

原创 Java 字节码进阶4:泛型擦除、synchronized字节码原理

大家好,我是此林。前三章,我们深入分析了 class文件的十大组成、介绍了阿里代码规约中 switch-case 比 if-else字节码原理、以及多态在字节码层面的原理。今天,我们来深入分析Java 泛型是 JDK5 引入的一个新特性。Java 泛型是 Java 提供的一种,可以让类、接口或方法在定义时不指定具体类型,而在使用时再指定具体类型。它的核心目的就是。

2025-09-20 09:37:43 971

原创 Java 字节码进阶3:面向对象多态在字节码层面的原理?

这个 <init> 方法,实际上就是 JVM 中类的实例初始化方法,类的构造方法、非静态变量的初始化、对象初始化代码块都会被编译进这个方法中。

2025-09-17 21:28:26 987

原创 Java 字节码进阶2:为什么 switch 比 if-else 高效(阿里代码规约)?

大家好,我是此林。知道了10 个部分(魔数、版本号、常量池、类/超类索引、接口表、字段表、方法表、属性表)是 class,它是 JVM 规范规定的二进制格式。换句话说,class 文件就像一个「容器」,它把类的所有信息都组织起来:类的元数据、常量池、字段、方法、以及额外的属性。在 class 文件的(Method Table)里,每个方法都有一个attributes表。其中最重要的属性就是。里才真正保存了该方法的字节码指令。这是之前文章的截图:那么,今天我们来更深入地学习具体的字节码指令。

2025-09-13 20:14:41 994

原创 微调 Qwen3-0.6B 代码实操 + 截图

大家好,我是此林。这几年大模型发展特别快,不光会写文章、聊天,还能看图、懂视频,应用到学习、科研、医疗各方面,就像给各行各业加上了智能“外挂”。现在动不动就有上百亿、上千亿参数的大模型,很厉害。但小模型(比如只有 0.6B (6亿) 参数的)其实也很有价值。为什么呢?:大模型跑起来要很强的显卡和服务器,小模型却能在笔记本、手机甚至小设备上运行,用起来更便宜。:小模型反应更灵敏,特别适合语音助手、实时问答这种要“秒回”的场景。:小模型能在本地跑,不用把数据传到云上,用户隐私更有保障。

2025-09-11 14:00:41 503

原创 Java 字节码进阶1:深入解析 class 文件结构

大家好,我是此林。最近阅读了《深入理解 JVM 字节码》这本书,体会颇深,不由感叹学海无涯,JVM 字节码果然博大精深。接下来我会以通俗简练的语言,记录我的总结体会。深入理解 Java 的 class 文件是学习字节码的第一步,今天我们就先来剖析 class 文件的内部结构。

2025-09-08 20:33:54 848

原创 RAG深入解读:文本分块、混合检索、重排序、bge微调(工程落地实践)

大家好,我是此林。如今,我们惊叹 LLM 基模能力越来越强的同时,工程师越来越多地把目光转向了如何让 LLM 落地于实际生产中。比如 RAG 智能客服、知识库助手就一个落地案例。

2025-08-18 15:48:27 1134

原创 【代码随想录】+ leetcode hot100:栈与队列算法专题总结、单调栈

大家好,我是此林。今天分享的是【代码随想录】栈与队列算法专题总结,分享刷算法的心得体会。

2025-07-17 11:03:03 923

原创 一文速通 GPU、CUDA、CuDNN、vLLM 概念原理

中文叫做图形处理器。与之对应的,,中文叫做中央处理器。GPU自从上世纪90年代出现雏形以来,它的功能最初与名字一致,是专门用于绘制图像和处理图元数据的特定芯片。经过20多年的发展,已经发展成不仅仅是渲染图形这么简单,还包含了数学计算、物理模拟、AI运算等功能。很多人会把GPU和显卡混用,其实严格来说它们并不是完全一样。GPU是显卡的核心部分,但显卡还包含更多元件,包含 GPU、显存、供电等。一句话,GPU是一片处理芯片,显卡是一整块硬件电路板。1. NVIDIA。

2025-07-11 11:07:36 1750

原创 GitHub Actions 自动 CI 测试 WorkFlow工作流搭建

是 GitHub 官方提供的一套自动化工作流服务,可以用来自动化代码构建、测试、部署等流程。CI(持续集成,Continuous Integration)测试是指在代码每次提交或者合并请求时,自动运行项目的测试代码,保证代码的正确性和稳定性。那为什么要用 GitHub Actions 自动 CI 测试?自动化:减少人工手动测试的工作,省时省力。快速反馈:提交代码后马上知道测试结果,发现问题及时修复。保障质量:避免有问题的代码被合并进主分支,提升代码质量。多平台支持。

2025-06-22 12:51:23 1600

原创 etcd教程-快速入门使用(截图实操)集群搭建 + 原理解释

大家好,我是此林。etcd 是一个高可用的键值对存储系统,常用于分布式系统中保存配置、服务发现和协调信息。它是 CNCF 旗下的项目之一,也是 Kubernetes 的核心组件之一,用来存储集群状态。可以说,云原生场景下经常使用到 etcd,一般我们会把 etcd 作为注册中心来使用。

2025-06-19 17:08:26 2773

原创 大白话 Seata 分布式事务浅析,详解TCC模式

TCC(Try-Confirm-Cancel)是 Seata 支持的一种侵入式的分布式事务解决方案,最早由蚂蚁金服提出。一个分布式的全局事务,整体是两阶段提交的模型。全局事务是由若干分支事务组成的,分支事务要满足两阶段提交一阶段 prepare 行为二阶段 commit 或 rollback 行为AT 模式基于支持本地 ACID 事务的关系型数据库一阶段 prepare 行为:在本地事务中,一并提交业务数据更新和相应回滚日志记录。二阶段 commit 行为:马上成功结束,自动。

2025-06-01 17:28:52 1187

原创 MiniMind:3块钱成本 + 2小时!训练自己的0.02B的大模型。minimind源码解读、MOE架构

大模型在这个时代可以说无处不在了,但是LLM动辄数百亿参数的庞大规模。对于我们个人开发者而言不仅难以训练,甚至连部署都显得遥不可及。那 github 上 20k Star+ 的开源项目 minimind,声称仅用3块钱成本 + 2小时!即可训练出仅为25.8M的超小语言模型MiniMind。这不是谣言,此林已经帮你们试过了,AutoDL租用的 GPU 上训练(Pretrain + SFT有监督微调)差不多2个小时半。Pretain 和 SFT 的数据集总共才 2.5G 左右。部分源码也解读了一下。

2025-05-11 16:34:43 3138

原创 go语言学习笔记:gin + gorm + mysql 用户增删改查案例入门

大家好,我是此林。Golang 语言现在已经成为了编程的趋势,毕竟是大厂背书嘛,Google 研发的。容器编排系统,容器化技术,分布式键值存储(Kubernetes 的默认存储),监控 & 告警系统,服务网格(Service Mesh,用于流量管理、安全策略、可观测性)✅ ​​(比 C++/Java 快)✅ ​​(部署简单,无依赖)✅ ​那作为一个 Javaer,我们用熟练了 springboot,gin + grom 那一套东西,上手也可以说很快。今天来看一个案例:user 增删查改。

2025-04-13 16:53:17 1048

原创 详解CountDownLatch底层源码

总结一下,CountDownLatch 本身就是通过 AQS 的 state 公共变量维护一个计数器。调用 await() 方法,就是把当前线程加入到阻塞队列,直到 state 变量为 0。调用 countdown() 方法,就是对 state 变量减一,如果减到0了,那么就唤醒阻塞队列的所有线程。它只能一次性使用,无法重置计数。如果需要多次使用 CountDownLatch,必须新建实例,不如 CyclicBarrier 可以复用。今天的分享就到这里了。关注我吧,我是此林,带你看不一样的世界!

2025-03-29 23:06:10 831

原创 Redisson 实现分布式锁源码浅析

发现锁已经被占有,返回剩余ttl(过期时间)。

2025-03-14 16:28:10 1003

原创 从 JVM 源码(HotSpot)看 synchronized 原理

大家好,我是此林。不知道大家有没有这样一种感觉,网上对于一些 Java 框架和类的原理实现众说纷纭,看了总是不明白、不透彻。今天我们就从 HotSpot 源码级别去看 synchronized 的实现原理。全文以的模式来展开讲述,方便大家理解。

2025-03-03 17:08:28 1524

原创 浅析 Redis 分片集群 Cluster 原理、手动搭建、动态伸缩集群、故障转移

可以发现,分片集群有以下特征:1. 集群中有多个master,每个master保存不同数据2. 每个master都可以有多个slave节点3. master之间通过心跳机制监测彼此健康状态4. 客户端请求可以访问集群任意节点,最终都会被路由转发到正确节点可以发现,Cluster 集群里面没有了哨兵机制,而是不同 master 之间通过心跳机制互相检测彼此的健康状态,如果发现有 master 宕机,会和哨兵一样重新选 master ,进行故障转移。

2025-02-26 15:21:45 1333

原创 浅谈 Redis 主从复制原理(二)

大家好,我是此林。上一篇文章中,说到了 Redis 主从复制的全量同步和增量同步,repl_baklog 复制缓冲区,以及 slave 挂掉之后数据同步的措施。下面介绍的上一篇遗留问题,主节点 master 宕机了,怎么办?

2025-02-21 15:12:00 967

原创 浅谈 Redis 主从集群原理(一)

大家好,我是此林。在生产环境上,Redis 一般都不会单节点部署,是 Redis 集群部署的一种方案。下面是 Redis 主从集群的一种最简单的方式。

2025-02-21 15:05:18 899

原创 详解单例模式、模板方法及项目和源码应用

大家好,我是此林。设计模式为解决特定问题提供了标准化的方法。在项目中合理应用设计模式,可以避免重复解决相同类型的问题,使我们能够更加专注于具体的业务逻辑,减少重复劳动。设计模式在定义系统结构时通常考虑到未来的扩展。例如,工厂模式、策略模式等能让系统在增加新功能时无需改动现有代码,只需扩展新模块即可,减少了修改现有代码的风险。今天分享的是单例模式和模板模式,这两种设计模式在项目和源码中的使用。

2025-02-19 13:02:12 1227

原创 时间轮:XXL-JOB 高效、精准定时任务调度实现思路分析

大家好,我是此林。定时任务是我们项目中经常会遇到的一个场景。那么如果让我们手动来实现一个定时任务框架,我们会怎么做呢?

2025-01-29 17:12:08 1478

原创 JWT身份认证详解

大家好,我是此林。尽管JWT是大家再熟悉不过的东西了,但是温故而知新,还是有必要详解下。

2025-01-10 15:22:15 796

原创 RocketMQ学习笔记

这里采用broker双主双从(同步模式),NameServer、Producer、Producer集群由于无状态性,搭建简单。RocketMQ默认的虚拟机内存较大,启动Broker如果因为内存不足失败,需要编辑如下两个配置文件,修改JVM内存大小。1. 先从rocketmq官网下载二进制包,ftp上传至linux服务器,unzip命令解压。负载均衡模式消费:多个消费者共同处理broker消息队列的消息。广播模式消费:每个消费者都会收到订阅的Topic的消息。服务器:192.168.183.132。

2024-12-31 21:19:36 896

原创 MYSQL慢查询日志(开启慢查询配置、explain执行计划SQL优化、各个字段详解、索引失效)

慢查询日志记录了所有执行时间超过了long_query_time的SQL语句。默认情况下MYSQL未开启慢查询日志。

2024-12-23 22:42:47 1419

原创 浅析InnoDB引擎架构(已完结)

大家好,我是此林。今天来介绍下InnoDB底层架构。

2024-12-19 21:59:42 1416

原创 SpringBoot 手动实现动态切换数据源 DynamicSource (中)

dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。其支持。JPA用户不建议使用,JPA自带事务,无法连续切库。

2024-12-12 16:38:45 2900 1

原创 SpringBoot 手动实现动态切换数据源 DynamicSource (上)

大家好,我是此林。在实际开发中,经常可能遇到在一个SpringBoot Web应用中需要访问多个数据源的情况。下面来介绍一下多数据源的使用场景、底层原理和手动实现。

2024-12-11 10:34:19 1795 1

原创 ShardingSphere5:Mysql主从集群搭建、读写分离

大家好,我是此林。docker 国内镜像配置:2024年12月7日 实测有效。

2024-12-08 21:37:39 1071

原创 Spring事务失效的场景(经典三个场景)

1. 编程式事务(代码不优雅但灵活)2. 注解式事务(不规范使用,可能会失效)

2024-12-07 22:32:47 549

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除