自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PaddleOCR 从入门到实战:PP-OCRv6 超轻量 OCR 全流程指南(环境搭建、推理识别、自定义训练与避坑)

PaddleOCR 是百度飞桨(PaddlePaddle)开源的多语言 OCR 与文档智能引擎,覆盖文本检测、文字识别、版面分析、表格还原、关键信息抽取、文档结构理解与结构化输出的完整链路,支持 110+ 语种,服务覆盖 170 多个国家和地区html5.qq.com。截至 2026 年,其在 GitHub 上的 Star 数已突破 8.22 万,超越谷歌 Tesseract OCR,成为全球最受关注的开源 OCR 项目之一jjckb.cn+1。最新一代PP-OCRv6。

2026-07-16 09:51:42 1212

原创 深入浅出Java并发编程:揭秘JMM与三大核心特性(原子性、可见性、有序性)

并发编程的三大特性是相互关联的,解决一个问题往往能顺带解决另一个问题。下表总结了常用关键字和工具的特性:表格特性/工具原子性可见性有序性适用场景✅✅✅代码块/方法同步,高并发下性能优化后较好volatile❌ (仅单次读/写)✅✅状态标记量,禁止指令重排✅✅✅计数器、序列号生成✅✅✅需要超时、中断、公平锁等高级功能✅ (线程隔离)❌❌每个线程需要独立副本(如数据库连接)结语掌握JMM和并发三大特性是成为一名高级Java工程师的必经之路。在实际开发中,我们应优先选择。

2026-07-08 10:43:05 274

原创 Java多线程编程:从基础概念到核心API实战

多线程编程是Java开发的必经之路,掌握其核心概念与API是构建高性能系统的基石。在实际开发中,应优先使用线程池管理线程,通过interrupt()实现优雅停机,并注意线程安全问题(如使用synchronized、Lock等同步机制)。

2026-07-08 10:25:37 411

原创 线上慢SQL优化实战:摄影大赛统计功能性能提升记录

避免实时聚合:对于复杂的多表关联统计,尤其是涉及GROUP BY和SUM/COUNT的查询,实时计算对数据库 CPU 消耗极大。通过冗余字段+定时任务/存储过程刷新,能将接口响应时间从秒级降至毫秒级。分批处理防锁表:在批量UPDATE时,通过ID范围(如每次 1 万条)进行分批处理,有效避免了长事务、大锁以及主从同步延迟问题。监控先行:遇到性能问题,不要盲目优化,先通过慢查询日志和等工具精准定位瓶颈 SQL,做到有的放矢。

2026-07-05 07:54:22 249

原创 JVM垃圾收集器:从理论到生产环境的落地选择

没有绝对“最好”的收集器,只有最合适的配置。在生产环境中,建议遵循“

2026-07-04 18:13:39 298

原创 深入理解JVM垃圾回收机制:从算法原理到GC调优实战

在Java技术体系中,自动内存管理(Automatic Memory Management)是其最核心的特性之一,也是Java开发者从C/C++的“内存泥潭”中解放出来的关键。然而,这份“自动”并非免费的午餐。当系统出现偶发的卡顿、长时间的停顿(STW, Stop-The-World)或令人头疼的时,对垃圾回收(GC)机制的深入理解便成为了区分初级开发者与系统架构师的分水岭。本文将带您从底层算法出发,穿越分代模型,最终落地到实战调优,全方位解析JVM GC的奥秘。

2026-07-04 18:02:18 146

原创 MySQL体系架构(二)

使用独立表空间来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表名相同,只不过添加了一个.ibd的扩展名而已,所以完整的文件名称长这样:表名.ibd。这个文件是所谓的自扩展文件,也就是当不够用的时候它会自己增加文件大小,当然,如果你想让系统表空间对应文件系统上多个实际文件,或者仅仅觉得原来的ibdata1这个文件名难听,那可以在MySQL启动时配置对应的文件路径以及它们的大小,我们也可以把系统表空间对应的文件路径不配置到数据目录下,甚至可以配置到单独的磁盘分区上。

2025-04-09 15:08:37 2102

原创 MySQL体系架构(一)

MySQL变种有好几个,主要有三个久经考验的主流变种:Percona Server,MariaDB和 Drizzle。它们都有活跃的用户社区和一些商业支持,均由独立的服务供应商支持。同时还有几个优秀的开源关系数据库,值得我们了解一下。

2025-04-09 15:07:10 1931

原创 MySql常见面试题

目前关系数据库有六种范式,常见范式:第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。。范式化设计优缺点:优点:可以尽量得减少数据冗余,使得更新快,体积小;缺点:对于查询需要多个表进行关联,减少写得效率增加读得效率,更难进行索引优化反范式化:优点:可以减少表得关联,可以更好得进行索引优化;

2025-04-08 16:15:54 1037

原创 MVCC原理

1、如果被访问版本的trx_id属性值与ReadView中的creator_trx_id值相同,意味着当前事务在访问它自己修改过的记录,所以该版本可以被当前事务访问。2、如果被访问版本的trx_id属性值小于ReadView中的min_trx_id值,表明生成该版本的事务在当前事务生成ReadView前已经提交,所以该版本可以被当前事务访问。

2025-04-08 16:02:28 755

原创 事务和事务的隔离级别

在上面我们说过事务有一个称之为隔离性的特性,理论上在某个事务对某个数据进行访问时,其他事务应该进行排队,当该事务提交之后,其他事务才可以继续访问这个数据,这样的话并发事务的执行就变成了串行化执行。张三借给李四生活费,借了两次,每次都是1000,张三的卡里开始有10000,李四的卡里开始有500,从理论上,借完后,张三的卡里有8000,李四的卡里应该有2500。一个事务必须被视为一个不可分割的最小单元,整个事务中的所有操作要么全部提交成功,要么全部失败,对于一个事务来说,不能只执行其中的一部分操作。

2025-04-06 08:00:00 959

原创 MySQL体系架构(二)

使用独立表空间来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表名相同,只不过添加了一个.ibd的扩展名而已,所以完整的文件名称长这样:表名.ibd。这个文件是所谓的自扩展文件,也就是当不够用的时候它会自己增加文件大小,当然,如果你想让系统表空间对应文件系统上多个实际文件,或者仅仅觉得原来的ibdata1这个文件名难听,那可以在MySQL启动时配置对应的文件路径以及它们的大小,我们也可以把系统表空间对应的文件路径不配置到数据目录下,甚至可以配置到单独的磁盘分区上。

2025-04-05 09:00:00 1152

原创 MySQL体系架构(一)

MySQL变种有好几个,主要有三个久经考验的主流变种:Percona Server,MariaDB和 Drizzle。它们都有活跃的用户社区和一些商业支持,均由独立的服务供应商支持。同时还有几个优秀的开源关系数据库,值得我们了解一下。

2025-04-05 08:00:00 887

原创 1.MySQL的执行原理-2

MySQL执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者说代价最低的那种方案去真正的执行查询。I/O成本我们的表经常使用的MyISAM、InnoDB存储引擎都是将数据和索引都存储到磁盘上的,当我们想查询表中的记录时,需要先把数据或者索引加载到内存中然后再操作。这个从磁盘到内存这个加载的过程损耗的时间称之为I/O成本。CPU成本读取以及检测记录是否满足对应的搜索条件、对结果集进行排序等这些操作损耗的时间称之为CPU成本。对于InnoDB存储引擎来说,页是磁盘和内存之间交互的基本单位。

2025-04-04 09:00:00 980

原创 1. MySQL的执行原理-1

为了方便讲述,我们建立两个简单的演示表并给它们写入数据:连接的本质就是把各个连接表中的记录都取出来依次匹配的组合加入结果集并返回给用户。所以我们把e1和e2两个表连接起来的过程如下图所示:这个过程看起来就是把e1表的记录和e2的记录连起来组成新的更大的记录,所以这个查询过程称之为连接查询。连接查询的结果集中包含一个表中的每一条记录与另一个表中的每一条记录相互匹配的组合,像这样的结果集就可以称之为笛卡尔积。

2025-04-04 08:00:00 2270

原创 MyBatis整合Spring的原理分析

设计模式类工厂模式建造者模式单例模式代理模式绑定:MapperProxy 延迟加载:ProxyFactory <br/>插件:PluginSpring <br>集成MyBaits: SqlSessionTemplate的内部SqlSessionInterceptorMyBatis<br>自带连接池:PooledConnection<br/>日志打印:ConnectionLogger、StatementLogger适配器模式。

2025-04-03 10:57:15 1044

原创 SpringBoot自动装配的时候为什么没有走selectImports方法?

本文首先需要大家对SpringBoot的自动装配比较清楚,如果不清楚的可以移步我之前介绍的自动装配的相关视频和文章。

2025-04-03 10:45:10 1183

原创 SpringBoot源码之Tomcat加载原理

我们想要搞清楚在SpringBoot启动中到的是如何集成的Tomcat容器,这个就需要我们先对Tomcat本身要有所了解,不然这个就没办法分析了,所以我们先来回顾下Tomcat的基础内容。Tomcat版本是8.5.73。

2025-04-03 10:29:59 976

原创 重新认识SpringBoot

为了更好的掌握SpringBoot的内容,我需要先给大家介绍下Spring注解编程的发展过程,通过该过程的演变能够让大家更加清楚SpringBoot的由来。

2025-04-02 16:26:54 965

原创 SpringBoot自动装配原理分析(三)

springboot手写Starter

2025-04-02 11:39:33 268

原创 SpringBoot自动装配原理分析(二)

在前面的分析中,Spring Framework一直在致力于解决一个问题,就是如何让bean的管理变得更简单,如何让开发者尽可能的少关注一些基础化的bean的配置,从而实现自动装配。所以,所谓的自动装配,实际上就是如何自动将bean装载到Ioc容器中来。实际上在spring 3.x版本中,Enable模块驱动注解的出现,已经有了一定的自动装配的雏形,而真正能够实现这一机制,还是在spirng 4.x版本中,conditional条件注解的出现。

2025-04-02 11:32:41 1024

原创 SpringBoot自动装配原理分析(一)

为什么要讲SPI呢?因为在SpringBoot的自动装配中其实有使用到SPI机制,所以掌握了这部分对于SpringBoot的学习还是很有帮助的。,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的文件夹查找文件,自动加载文件里所定义的类。这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制。我们先通过一个很简单的例子来看下它是怎么用的。案例介绍先定义接口项目。

2025-04-02 11:20:00 421

mysql5.6 windows安装包

mysql5.6 windows安装包

2025-04-02

飞算javaai安装包

飞算javaai安装包

2025-04-02

Docker windows桌面安装工具

Docker windows桌面安装工具

2025-04-02

datagrip windows安装包

datagrip windows安装包

2025-04-02

Apifox windows环境安装包

Apifox windows环境安装包

2025-04-02

空空如也

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

TA关注的人

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