- 博客(132)
- 收藏
- 关注
原创 人大金仓(KingbaseES)Docker 容器自动备份方案
⚠️ 人大金仓兼容 PostgreSQL 协议,但。:恢复前清理已有对象,避免冲突。
2026-05-30 11:23:22
227
原创 常见限流策略
Spring Cloud Gateway:集成RedisRateLimiter。Nginx:limit_req_zone模块(漏桶算法)Guava RateLimiter:单机令牌桶实现。Sentinel:阿里开源的流量控制组件。Redis + Lua:自定义分布式限流。
2026-01-17 13:14:24
52
原创 SQL慢查询常见优化步骤
SQL慢查询优化是一个系统性的工作,需要从定位→分析→优化→监控形成闭环。核心优化手段包括:索引优化(最有效)、SQL改写、表结构优化、配置调优、架构升级。建议建立规范的优化流程,避免盲目优化,确保每次优化都能真正解决问题。SQL慢查询优化是一个系统性的工程,通常遵循"定位→分析→优化→验证"的闭环流程。• 遵循最左前缀原则:复合索引(a,b,c)只能用于a、a,b、a,b,c的查询。• 覆盖索引优化:让索引包含查询所需的所有字段,避免回表。• 使用NOT NULL:可减少存储空间,优化查询。
2026-01-16 13:59:01
644
原创 线程池原理及其常用线程池
• 核心线程数 = 0,最大线程数 = Integer.MAX_VALUE。• 提高响应速度:任务到达时,线程已存在,直接执行。根据业务场景选择合适的线程池类型和参数配置是关键。• 降低资源消耗:减少线程创建和销毁的开销。• 适用:负载较重的服务器,需要限制线程数。• 统一管理:控制并发数量,避免系统崩溃。• 提供功能:支持定时、延迟、周期执行。• 适用:执行大量短期异步任务。• 适用:需要顺序执行的任务。• 适用:定时任务、延时任务。• 适用:计算密集型任务。• 固定数量的核心线程。
2026-01-16 10:13:59
294
原创 MVCC为什么不能完全解决幻读问题
此后在该事务内的所有快照读都会基于这个相同的 Read View 来读取数据,因此看不到其他事务在此之后提交的修改,从而避免了幻读。因此,当前读会绕过 MVCC 的快照机制,直接读取最新的数据版本,如果其他事务插入了符合条件的新行,就会被当前读看到,导致幻读。总的来说,**MVCC是一项优秀的并发控制技术,它通过快照读极大地缓解了数据库的锁竞争,提升了性能,并在快照读场景下避免了幻读。**但它并非幻读的“银弹”。在该级别下,读写操作会默认加锁,事务强制串行执行,从根本上杜绝了并发问题,包括幻读。
2026-01-12 15:19:40
899
原创 mongoTemplate常用的重要方法
mongoTemplate 就是 MongoDB 的 CRUD 工具,find() 查、save() 存、update() 改、remove() 删,加上 Criteria 构建查询条件。🔧 聚合(Aggregation)🎯 常用 Criteria 条件。✏️ 改(Update)🗑️ 删(Delete)📁 增(Insert)🚀 分页查询(常用!💡 最常用的4个方法。
2025-12-29 17:37:18
262
原创 什么是分布式事务
• 面临的挑战(CAP定理):在分布式系统中,无法同时完美满足一致性(C)、可用性(A)和分区容错性(P)。网络分区(P)是必须面对的,因此实际需要在 C(强一致性)和 A(高可用)之间权衡。• Soft State(软状态):允许系统存在中间状态,并且该状态不会影响整体可用性(即不同节点的数据副本之间,允许存在短暂的数据延迟)。• 2PC的改进版,引入了超时机制和预提交阶段,解决了2PC的同步阻塞和单点问题,但实现更复杂,且仍可能数据不一致。真正执行业务,使用Try阶段预留的资源。
2025-11-14 16:29:40
559
原创 ReentrantReadWriteLock源码分析
ReentrantReadWriteLock是 Java 并发包(java.util.concurrent.locks)中提供的读写锁实现,它通过分离读锁和写锁,显著提升读多写少场景下的并发性能。下面从设计思想、核心源码实现和使用注意事项三个方面深入解析。•读写分离:允许多个线程同时持有读锁(共享锁),但写锁(独占锁)只能由一个线程持有。•锁降级:持有写锁的线程可以获取读锁,然后释放写锁,实现锁降级(但不支持锁升级)。
2025-09-08 18:20:07
379
原创 JVM调优案例
4.解决方案重于参数调整:本例中,最有效的方案是改用流式 API(SXSSF)和分页查询,而不是简单地加大堆内存。3.排查流程是关键:通过 MAT 分析 Heap Dump,迅速定位到占用内存最大的对象类型(XSSFWorkbook),从而直指问题核心。这是最根本的解决方案。1.OOM 不总是高并发导致:单次操作的数据量过大同样致命,在数据处理、报表生成类功能中尤为常见。1.数据量巨大:一个月的历史生产数据可能达到 几十万甚至上百万条。
2025-09-01 19:12:10
1082
原创 JAVA 引用类型深拷贝的三种实现方式
如果对象结构非常复杂,手动实现深拷贝会很繁琐。可以通过序列化(内存中)来实现深拷贝,但要求类实现 java.io.Serializable接口。这种方式通常被认为比clone()更清晰、更安全,也是Effective Java中推荐的方式。关键点分析:。
2025-08-27 14:09:29
375
原创 PG:分区表
通过使用分区表,可以将大表的数据划分为更小的子表,提高数据查询的效率和管理的灵活性。需要注意,在使用分区表之前,需仔细考虑分区规则和查询模式,以及相关的索引和约束等因素,以获取最佳的性能和可维护性。在 PostgreSQL 中,可以使用分区表(Partitioned Table)来分割大型表的数据,以提高查询性能和管理数据的效率。分区表将表数据按照特定的分区规则进行划分存储,每个分区对应一个子表,每个子表只包含特定范围或条件的数据。你可以在主表上定义一个主键列,也可以在每个子表上定义自己的主键列。
2023-09-10 20:38:21
1136
原创 Geotools对geojson的解析
在 GeoTools 中,对 GeoJSON 的支持是通过一个插件来完成的,用户同样可以在 Maven 的 pom.xml 配置文件中添加下述的依赖。有关插件导进来以后,就可以根据相关的接口对Geojson进行解析。
2023-09-05 23:28:48
2115
原创 GIS:DataStore数据管理框架
矢量数据的数据格式有很多种。在数据操作方面,增加了插入数据、删除数据、更新数据的相关内容在事务操作方面,用户可以配置事务信息,但是由于 GeoTools 目前并没有将重点放在事务上,因此现在只支持默认 (Default) 和自动提交 (AutoCommit) 两种事务的模式。从代码中,我们可以看出,SimpleFeatureType 内部主要是对自身的属性以及属性的描述器类 Attribute Descriptor 进行管理的配置和获取方法的实现,用户在使用过程中,可以比较方便地获取到相关的信息。
2023-09-05 23:16:16
649
原创 GIS:生成Shp文件
*FeatureCollection:**存储Feature对象的集合类,注意两点:1.其迭代器使用完毕必须显示关闭,2.存储在同一个FeatureCollection中的对象具有相同的SimpleFeatureType。**DataStore:**访问和存储矢量格式空间数据的引擎,对应关系数据库中database的概念,可以用来更新 ,删除,获取SimpleFeatureType(类比数据库中一张具体表)**FeatureSource:**与DataStore相比,粒度更细,内部操作都是针对这张表的。
2023-09-05 21:57:16
1065
1
原创 gis:读取shp文件
这段代码提供了一个简单的方式来读取 Shapefile 文件,并获取其中要素和属性的信息。你可以根据需要进一步处理和使用这些数据。以上代码是一个用于读取 Shapefile 文件的方法。
2023-09-04 20:59:16
1047
原创 CompletableFuture线程编排工具类
如果任务的执行方式逻辑比较复杂,开发成本来说比较高。CompletableFuture就是帮你处理这些任务之间的逻辑关系,编排好任务的执行方式后,任务会按照规划好的方式一步一步执行,不需要让业务线程去频繁的等待。
2023-06-29 20:49:58
428
原创 MyBatis中动态SQL
set元素中没有内容,会出现SQL错误,故代码块最后一行需要添加 id = #{id}根据第一个条件匹配查询,避免输入条件为空时,查出所有值。
2023-06-16 11:34:50
175
原创 SpringBoot整合Quartz
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer, Quartz增加了很多功能:持久性作业 - 就是保持调度定时的状态;作业管理 - 对调度作业进行有效的管理;
2023-04-01 23:47:07
2130
原创 frp实现内网穿透
由于工作需要,经常会在家访问公司服务器,之前使用花生壳、TeamViewer,不是限制流量就是限制使用次数,后来发现了frp内网映射的方法。只需要一个公网ID,并通过简单的配置,就可以轻松访问公司内网环境下的电脑了。
2023-02-17 20:47:00
980
原创 SpringBoot框架介绍及使用
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的创建、运行、调试、部署等。使用Spring Boot可以做到专注于Spring应用的开发,而无需过多关注XML的配置。Spring Boot使用“习惯优于配置”的理念,简单来说,它提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题。使用Spring Boot可以不用或者只需要很少的Spring配置就可以让企业项目快速运行起来。
2023-01-28 14:15:08
1170
原创 Mybatis框架介绍及使用
mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。
2023-01-27 18:02:10
1614
原创 Spring框架介绍及使用
Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 SpringMVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架。
2023-01-18 17:33:08
1337
原创 到底创建了几个Session
session存在于服务端,由于http是无状态的,服务端无法区别请求由哪个客户端发送,最终还是依赖cookie(上述结论同样适用于cookie),每次发送请求携带一个JSESSIONID,即服务端获取的sessionId,唯一标识一个客户端请求。
2022-10-23 20:11:33
941
原创 职场篇(二):明哥教你混职场
二:你的成长一定要和公司相关联。优秀的年终总结不是罗列成绩,而是能站在公司的角度复盘思考过去一年的得失,要突出你的工作对公司核心业务的影响,这是领导最想听的内容,至于你这一年参加了什么培训,学会了什么技能,看了多少本书,和工作沾不上边的就不要讲,无论你多么想要别人知道都不要讲,咱自己回家偷着乐就行了。秀成绩的时候,抓大放小讲重点,多用数据,秀成绩的结尾工作,其一,把领导放入你的成绩中,其二,征求领导对你后续工作的建议。1.周报,认认真真的写,汇报自己负责事情的进度,工作存在的问题,甚至个人想法和建议等等。
2022-10-14 23:47:10
507
原创 职场篇(一):明哥的职场礼仪七堂课笔记
反例:1.求助时,没有称呼,没有客套话,也没有说**你有没有空啊,能不能帮我个忙啊。2.吃饭,没有安排在上位,安排在了上菜口。3.酒杯举得比别人高。
2022-10-14 01:30:00
829
原创 Geography和 Geometry 的区别
在笛卡尔平面坐标系统上使用地理坐标(紫色线)产生了一个非常错误的答案!使用大圆路线(红线)则能得出正确的答案。如果我们将LAX-CDG航班路线转换成一条线串,并利用geography计算其到冰岛某个点的距离,我们可以得到正确的答案(以米为单位)。当提出这样一个问题时,支持非点的几何图形的需求变得非常明显:“从洛杉矶到巴黎的航班路线距离冰岛有多远?
2022-09-18 16:53:03
1752
原创 JAVA容器系列一:ConcurrentHashMap源码解读
java.util.concurrent.ConcurrentHashMap属于JUC包下的一个集合类,可以实现线程安全。它由多个Segment组合而成。Segment本身就相当于一个HashMap对象。同HashMap一样,Segment包含一个HashEntry数组,数组中的每一个HashEntry既是一个键值对,也是一个链表的头节点。单一的Segment结构如下像这样的Segment对象,在ConcurrentHashMap集合中有多少个呢?...
2022-07-26 07:59:28
346
原创 Http协议:三次握手和四次挥手
这里特别需要主要的就是TIME_WAIT这个状态了,这个是面试的高频考点,就是要理解,为什么客户端发送ACK之后不直接关闭,而是要等一阵子才关闭。这其中的原因就是,要确保服务器是否已经收到了我们的ACK报文,如果没有收到的话,服务器会重新发FIN报文给客户端,客户端再次收到ACK报文之后,就知道之前的ACK报文丢失了,然后再次发送ACK报文。一般会设置一个计时,如果过了这个计时没有再次收到FIN报文,则代表对方成功就是ACK报文,此时处于CLOSED状态。......
2022-07-22 13:09:10
2503
原创 SpringBoot自动配置原理
一. 核心注解@SpringBootApplication其实@SpringBootApplication是下面三个注解的组合体第一个注解:@EnableAutoConfiguration 启动SpringBoot的自动配置机制。1.1、AutoConfigurationPackage指定默认的包规则AutoConfigurationPackage注解的作用是将 添加该注解的类所在的package 作为 自动配置package 进行管理。也就是说当SpringBoot应用启动时默认会将启动类所在的
2022-07-07 22:06:03
296
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅