自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Cursor IDE 入门到高阶使用指南

通过 .cursorrules 定制# 项目特定规则## 代码生成规则- 所有新类必须实现 Serializable- 所有 Service 方法必须有事务注解- 所有 Controller 必须使用 @RestController## 命名规范- Service 接口:XxxService- Service 实现:XxxServiceImpl## 异常处理- 使用自定义异常类- 统一异常处理在 GlobalExceptionHandler- 所有异常必须记录日志上下文是关键。

2026-01-21 10:16:04 327

原创 系统调用和用户态:性能瓶颈与优化实践(9)

优化技术适用场景性能提升复杂度sendfile文件→网络传输3-5倍低mmap大文件随机访问、进程间共享2-4倍中多个不连续缓冲区2-3倍低io_uring高并发异步I/O5-10倍高DPDK超高性能网络处理10-100倍很高系统调用开销每次系统调用约~0.5μs高并发场景下,系统调用开销累积显著减少系统调用次数是重要优化方向数据拷贝开销用户空间和内核空间之间的数据拷贝消耗CPU和内存带宽零拷贝技术可以大幅减少拷贝次数操作系统优化。

2026-01-16 10:45:09 579

原创 批量处理与向量化计算(8)

单指令多数据流核心思想:CPU可以一次对一整块连续内存中的数据执行同一条指令传统标量计算(Scalar):i < 4;i++) {// 需要4次加法指令SIMD向量计算(Vector):// 一次加载4个整数// 一次加载4个整数// 一次加法,同时计算4个// 一次存储4个整数// 只需要1次加法指令,同时处理4个数据内存顺序访问的优势充分利用CPU缓存和预取机制顺序读取1MB仅需~3μs,比随机读取快30-60倍批量操作的优势减少网络往返、SQL解析、事务开销。

2026-01-15 20:13:24 557

原创 上下文切换:C10K问题与I/O模型演进(7)

模型线程/协程数内存开销上下文切换次数/秒CPU利用率(切换)CPU利用率(业务)传统多线程10,00040GB1,000,00080-90%10-20%事件驱动410MB400<1%99%+协程8 threads20MB800<1%99%+

2026-01-15 14:27:00 1092

原创 广域网往返(WAN RTT)优化案例(6)

广域网RTT是全球化应用的主要性能瓶颈。通过CDN、地理分布式架构、减少请求数等综合优化,可以将跨洋访问延迟从秒级降低到毫秒级,显著提升用户体验。

2026-01-15 13:36:20 976

原创 微服务扇出:网络往返时间的影响与优化实践(5)

原则识别服务间的依赖关系只有存在数据依赖时才串行调用独立的数据获取应该并行执行示例// ❌ 错误:不必要的串行// 不依赖 user,应该并行// ✅ 正确:并行调用微服务架构中的扇出问题是性能优化的关键点。✅避免不必要的串行调用✅使用异步并行调用(如✅考虑 API 聚合可以将总延迟从 O(n) 降低到 O(1),显著提升系统性能和用户体验。

2026-01-14 11:11:18 683

原创 基于磁盘的顺序读写和随机读写思考软件的架构设计(4)

(HDD)或500+ MB/s(SSD)<1ms(不刷盘)或**<10ms**(同步刷盘)支持百万级TPS(每秒事务数)顺序读取:接近磁盘顺序读性能随机读取:需要索引查找+小范围扫描,性能可接受利用Page Cache,热数据读取延迟**<1ms**索引文件占日志文件大小的**0.2%**左右支持压缩,可节省50-90%存储空间。

2026-01-13 15:36:04 1307

原创 数据库缓冲池(3)

✅索引页和数据页都会存储在缓冲池中✅它们共享同一个缓冲池空间✅通过统一的LRU等算法管理,不区分类型✅两者都需要缓存才能实现最佳性能⚠️重要:索引页和数据页都不是"常驻"的,都会根据访问频率被淘汰⚠️只有频繁访问的热数据(无论是索引页还是数据页)才会长期保留如果只缓存索引而不缓存数据,虽然能快速定位数据位置,但读取实际数据时仍需要磁盘I/O,性能提升有限。因此,完整的缓冲池策略必须同时缓存索引页和数据页。但需要明确的是,两者都不是"常驻"的,都是动态管理的。访问频率高:短时间内被多次访问访问模式稳定。

2026-01-12 17:32:45 875

原创 基于L1/L2 缓存访问速度的角度思考数组和链表的数据结构设计以及工程实践方案选择(2)

L1/L2 缓存访问延迟为 1-4 ns,比主内存快 25-100 倍数组比链表快的根本原因是缓存局部性数据结构和算法的选择直接影响缓存性能优化原则优先使用连续内存布局保持访问模式的可预测性利用空间局部性和时间局部性考虑数据布局和结构体对齐记住:在现代 CPU 架构下,缓存友好的代码往往比算法复杂度更重要的代码更快。一个 O(n) 的数组遍历可能比 O(log n) 的树遍历更快,就是因为缓存的影响。需要频繁随机访问?├─ 是 → 使用数组/vector└─ 否 → 继续判断。

2026-01-12 10:51:06 943

原创 程序员必须知道的数据(1)

本文通过典型案例分析不同计算机操作(如缓存访问、磁盘I/O、网络调用等)的延迟差异及优化策略。核心观点包括:利用缓存(CPU缓存到CDN)实现空间换时间;通过批量处理和顺序I/O提升性能;减少网络往返(连接复用、请求合并);采用异步/非阻塞模式提高吞吐量;选择缓存友好的数据结构。文章强调理解这些延迟数据对系统设计的关键作用,能帮助开发者在编码和架构评审时做出更优决策。实践案例涵盖数据库优化、微服务调用、Web应用加速等多个领域。

2026-01-08 15:39:11 274

原创 MySQL弹幕内容字段设计总结

1. 字段类型与长度选择推荐类型原因:业务规则限制为20个字符(含表情符号),但需考虑多字节字符(如表情符号)的存储开销。计算依据单个表情符号可能占用4字节(UTF-8mb4编码)另外组合表情如👨‍👩‍👧‍👦占用7字节2. 字符集与排序规则原因utf8mb4支持存储表情符号(如😊→占用4字节)。排序规则确保多语言字符正确排序。3. 业务规则与后台验证// 统计可见字符数(表情符号计为1个) 👨‍👩‍👧‍👦字符统计为7// 业务规则:≤20可见字符关键点使用而非length()

2025-08-09 09:28:56 242

原创 企业公众号登录及普通开发者无权限时的测试方案详解

摘要:本文详细介绍了企业公众号登录方式(电脑端和移动端)及普通开发者无正式权限时的测试方案。企业公众号需通过官网或微信客户端登录,而开发者可使用微信测试号、开发者工具和沙箱环境进行全功能调试。测试号支持核心接口但有限制,开发者需注意分环境配置、Token缓存和用户白名单管理。最后强调测试通过后需切换至正式环境并完成企业认证。

2025-07-20 10:10:33 1501

原创 Postman/Apipost中使用Post URL编码发送含换行符参数的问题分析

摘要:Postman/Apipost在使用x-www-form-urlencoded发送含换行符参数时存在失效问题,原因是工具未能正确处理换行符的URL编码转换(\n应转为%0A)。Apipost会自动替换为空格,Postman可能保留原格式但不正确编码。该问题目前尚未提供有效解决方案,需开发者注意特殊字符的手动编码处理。

2025-07-18 15:46:10 478

原创 【构建Tomcat版本检查工具:自动检测并提醒版本更新】

摘要(150字): 本文介绍了一个自动化Tomcat版本检查工具的Java实现方案,可自动检测本地Tomcat版本并与官网最新稳定版对比。工具核心功能包括:通过catalina.home获取本地版本,使用Jsoup解析Apache官网获取最新版本,智能版本比对及提醒机制(单版本最多提醒3次)。实现细节涵盖命令行版本获取、官网页面解析、基于Properties的配置管理以及可扩展的通知模块。该方案减少了人工检查成本,避免通知泛滥,轻量易集成,并提供了扩展为邮件通知、批量检查等功能的建议。典型的运行输出示例展示

2025-07-11 17:44:36 445

原创 数据库性能优化指南:解决ORDER BY导致的查询性能问题( SQL Server )

本文针对300万行数据表查询中ORDER BY导致的性能问题进行了深入分析,发现关键在于排序操作导致全表扫描。提出三种优化方案:1)创建覆盖索引减少I/O;2)使用CTE分阶段处理+随机采样技术;3)定期数据归档。其中CTE+覆盖索引组合方案可将查询时间从30秒降至0.03秒,提升1000倍。文章还提供了索引维护策略、查询设计原则和系统监控配置等最佳实践,建议实施分阶段处理、随机采样和定期维护的组合方案,同时考虑长期的分区表和归档策略。

2025-07-09 17:02:29 1107

原创 微信环境外打开小程序方案

微信小程序支持在微信环境外打开,提供明文和加密URL Scheme两种方案。明文Scheme适用于固定页面跳转,含appid、path等参数;加密Scheme通过API生成,适合敏感数据或时效性场景,支持设置过期时间。最佳实践包括跨平台兼容处理、参数规范和安全措施(如启用Scheme校验)。关键操作建议使用加密Scheme,注意iOS需配置通用链接,Android需添加intent-filter。两种方案可根据场景组合使用,实现安全可控的外部跳转。

2025-07-04 11:24:26 1697

原创 现代计算机持久化存储设备原理

现代计算机持久化存储设备的核心原理是通过非易失性介质实现断电后数据保存。主要设备包括:1)固态硬盘(SSD),采用浮栅晶体管存储电子,通过控制器实现地址映射、损耗均衡和垃圾回收等关键功能,但存在写放大和擦写次数限制;2)传统硬盘(HDD),利用磁记录原理存储数据,依赖机械结构导致较高延迟。SSD通过闪存芯片和智能控制器的协同工作,实现了高速随机访问,克服了闪存物理限制。理解这些原理有助于优化存储性能、选择合适设备并延长使用寿命。

2025-07-02 10:33:54 961

原创 k8s从入门到实践

k8s从入门到实践介绍Kubernetes(简称k8s)和Docker Swarm是两个流行的容器编排工具,它们都可以帮助用户管理和部署分布式应用,尤其是基于容器的应用。以下是两者的主要特点和对比:Kubernetes (k8s):开源项目:由Google发起,现在由Cloud Native Computing Foundation (CNCF)管理。成熟度与社区支持:拥有庞大的开发者社区和生态系统,高度活跃且持续更新迭代,支持众多云服务提供商以及企业内部部署。功能丰富:提供了丰富的特性集,包括

2024-01-25 14:40:19 1366 1

原创 [350]两个数组的交集 II.java

给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现。如果 nums2 的元素存储在磁盘上,内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输入:nums1 = [1,2,2,1], nums2 = [2,2]如果 nums1 的大小比 nums2 小,哪种方法更优?你将如何优化你的算法?

2023-07-20 13:04:01 228

原创 @Transaction和自定义切面的执行顺序思考

spring若无特殊情况均采用的是基于jdk和cglib的动态代理,此时关于@Transactional的优先级为最低优先级,最晚开启事务和最早提交事务,最贴近代理方法执行如果项目引入了AspectJ的静态代理,则@Transactional执行的优先级低于基于jdk和cglib的动态代理,需要注意的是需要关注此时自己编写的Aspect的配置是否@Transactional的Aspect配置执行的优先级顺序,关于AspectJ的静态代理顺序不在本文讨论范围,有兴趣可一起讨论。

2023-07-18 10:52:40 2238

原创 Tomcat服务停滞问题分析:内存泄漏导致GC抖动及线程阻塞(内存泄漏导致的渐进式服务退化)

因渐进式内存泄漏导致的GC抖动型JVM假死

2023-07-17 16:00:21 929

原创 SpringAOP的实现和执行原理

查看advisors是如何拿到的,其顺序又是什么?[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nrnxPotN-1689226439387)(https://gitee.com/gityyh/notebook3/blob/master/spring/assets/20230706_105109_image.png)]

2023-07-13 13:41:05 587

原创 诡异的索引失效(关于sqlserver varchar 类型的字段导致索引失效的原因排查 GPT排查工具)

2023-03-24 15:29:00 392

原创 运输层-UDP概述

文章目录前言一、特点二、首部结构前言用户数据报协议UDP只在IP的数据报服务之上增加了很少一点的功能,这就是复用和分用的功能以及差错检测的功能。一、特点UDP是无连接的,即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。UDP使用了最大努力交付,但是不保证可靠交付。UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这就是说,应

2021-03-30 22:58:09 274

原创 计算机网络——运输层

121212

2021-03-29 23:01:33 314

原创 二叉树的层序遍历

二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层序遍历结果:[[3],[9,20],[15,7]]作者:力扣 (LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnldjj/来源:力扣(LeetCode)

2021-03-28 22:31:53 324

原创 TOMCAT9配置Https访问

1.在conf/server.xml中配置<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="D:\tomcat\apach...

2020-08-21 13:04:51 527

原创 Caused by: java.security.NoSuchAlgorithmException: SunTlsRsaPremasterSecret KeyGenerator not availab

错误截图:发生条件:电脑做了虚拟化内存设置之后重启了电脑,原先可以启动的项目启动时报错解决办法:1.重新设置eclipse的JRE2.设置eclipse中的tomcat中的jre依赖3.重新启动正常

2020-06-17 19:08:42 916

原创 li标签和a标签的点击时间如何同时触发(涉及JS的默认事件,冒泡,捕获)

参考作者献上:http://caibaojian.com/javascript-stoppropagation-preventdefault.html页面中的所有#menus1 li 都绑定了click()事件,需求是当点击<li>菜单的时候触发<li>以及<li>下的<a>标签的点击时间,<li>click是给<li>加class标记被选择,<a>标签click是打开页面,遇到问题是,<a>标签的事件触

2020-06-12 20:54:04 842

原创 POSTMAN请求参数后台request.getParameter()获取不到参数问题

复制粘贴其他请求中的userName和accessToken时发现请求到后台一致无参数,删除后重新录入后就好了

2020-05-20 15:02:11 3866

原创 Java对象的内存布局最佳解析

https://blog.csdn.net/John8169/article/details/83054325

2020-03-02 22:06:55 187

原创 HashMap扩容死循环分析

2020-02-25 21:37:32 250

原创 垃圾收集算法

1.标记清除算法:标记出来需要清楚的对象,然后进行清楚,并造成空间的不连续2.复制算法:将内存分为2个区,每次只使用一个区域,把S1区域的存活对象,复制到S2中,如此反复进行,有点可以保证空间的连续,但是浪费50%的空间3.标记整理算法:可以理解为标记清除-整理算法,避免了标记清除算法带来的空间的不连续,缺点是比较耗时3.分代收集算法:现在商业虚拟机采用的方法,将内存分为新生代和老年代...

2020-02-22 22:27:30 184

原创 Java中的引用类型

参考链接

2020-02-22 21:52:52 249

原创 java.lang.OutOfMemoryError总结(待续。。。)

总结目的通过代码验证java虚拟机运行时区域存储的内容; 工作中如果遇到内存溢出问题,能够根据反馈的异常信息快速判断哪个内存区域发生溢出Java堆内存溢出报错信息:java.lang.OutOfMemoryError:Java heap space原因可能是内存泄漏或者创建太多对象导致内存不足Java虚拟机栈和本地方法区栈报错信息:1.stackOverFlowErro...

2020-02-22 21:36:22 243

原创 JAVA虚拟机发生GC的过程简要分析(待续...)

了解JVM发生GC的原因以及过程,才可以更加针对的对虚拟机进行内存分配,从而减少full gc,避免造成系统卡顿甚至系统崩溃FULLGC带来的危害(STW)在发生FULL GC的时候,意味着JVM会安全的暂停所有正在执行的线程(Stop The World),来回收内存空间,在这个时间内,所有除了回收垃圾的线程外,其他有关JAVA的程序,代码都会静止,反映到系统上,就会出现系统响应大幅度...

2020-02-20 22:10:26 451 1

原创 GC:可达性分析算法

可达性分析算法之前有一个叫引用计数法,原理非常简单如果一个对象没有任何引用与之关联,基本上对象不可能在其他地方用的上,这个对象就成为可被回收的对象,但是这个方法虽然非常简单,而且高效,但是它无法解决循环调用的问题,如下图所示:public class Main { public static void main(String[] args) { Demo d1 = n...

2020-02-20 21:27:55 2045

原创 JVM虚拟机运行时数据区(内存模型)

JDK8 之后的 JVM 内存布局参考链接

2020-02-18 22:06:20 249

原创 InnoDB非主键索引结构叶子节点为什么存储的是主键值而不是像MyiSAM索引存储数据地址?

1.保持一致性,当数据库表进行DML操作时,同一行记录的页地址会发生改变,因非主键索引保存的是主键的值,无需进行更改;2.节省存储空间,后续补充,不太清楚原因。参考链接:https://blog.csdn.net/a1_HelloWord/article/details/104341349...

2020-02-16 22:23:00 4196 3

原创 Mysql联合索引的数据结构(B+Tree)

B+Tree中的data存储last_name,first_name,dob三个字段信息,类似于一个主键索引的中的一个字段,将三个字段组合在一起,比较的时候和单独的一个字段的区别在于,先比较last_name,然后比较first_name,最后再比较dob,执行这样的规则。综上所述:这样就比较好理解Mysql索引的最左前缀原理...

2020-02-16 21:40:00 2277 2

【打开小程序H5示例.html】

【打开小程序H5示例.html】

2025-07-04

空空如也

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

TA关注的人

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