- 博客(9541)
- 资源 (18)
- 收藏
- 关注
原创 Redis INCR 命令操作的原子性详解
Redis 是单线程处理命令的(指核心网络 I/O 和命令执行部分,6.0+ 版本后部分 I/O 使用多线程,但命令执行仍然是单线程)。在任何给定时刻,只有一个命令在服务器端执行。因此INCR操作不会被其他客户端的命令打断,不存在多线程并发问题。即使多个客户端同时发送INCR命令,Redis 也会串行执行。
2026-01-10 11:52:57
46
原创 深度学习目标检测模型术语科普:IoU预测详解
真实框 = 人工标注的正确答案。它是由数据标注人员在训练/测试图像上手动画出来的,表示“这个物体到底在哪里、有多大”。例如:你在 COCO 数据集中看到的每张图,都配有.json文件,里面记录了每个物体的真实框坐标和类别。✅真实框是“标准答案”训练时告诉模型“你预测得对不对”;测试时评估模型性能(比如计算 IoU、mAP)。检测框 = 模型自己预测出来的框。模型看到一张图后,通过神经网络计算,输出若干个可能包含物体的框及其类别和置信度。这些框不一定准确。
2026-01-10 11:38:32
457
原创 深度学习基本术语科普:梯度爆炸(Gradient Explosion)和过拟合(Overfitting)
在反向传播过程中,梯度值随着层数向前传递而指数级增大,导致权重更新幅度过大,模型参数剧烈震荡甚至变为NaN,无法正常收敛。模型在训练集上表现极好(如 loss 很低、准确率很高),但在验证集或测试集上性能显著下降,说明模型记住了训练数据的噪声和细节,而非学习到泛化规律。特征梯度爆炸过拟合发生阶段训练初期或中期(优化过程)训练后期(泛化阶段)根本原因数值不稳定(梯度计算异常)模型复杂度 vs 数据量失衡主要表现loss → NaN / 权重爆炸影响范围整个训练崩溃,无法继续模型能训练完,但泛化差。
2026-01-10 11:25:16
157
原创 MySQL 高负载 I/O 故障全链路分析与优化案例
fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;所有服务挤在 dm-0 根分区高 I/O 导致 %util=100%临时表写满 /tmpInnoDB 刷脏页慢 → page_cleaner 延迟从库回放 relay log 时内存打满OOM Killer 杀死 mysqld从库自动重启主库半同步超时 → 自动降级核心教训。
2026-01-09 17:28:19
623
原创 深入解析:Prometheus中数据库服务器的上传与下载带宽监控
在Prometheus通过Node Exporter采集的网络指标中,我们必须首先明确从被监控主机视角上传带宽(Transmit/TX):数据从服务器流出到网络下载带宽(Receive/RX):数据从网络流入服务器记忆口诀:TX = Transmit = To eXternal(传出);RX = Receive = Receive eXternal(传入)理解数据库服务器的上传与下载带宽,本质上是理解数据流动的方向性。服务间调用:一个服务的"上传"可能是另一个服务的"下载"云成本优化。
2026-01-08 16:20:07
498
原创 Linux iostat 命令分析磁盘 I/O 性能
iostat命令,但它也会,包括与 I/O 相关的部分(如%iowait因此,它是一个,但。
2026-01-08 15:15:00
247
原创 YOLO 目标检测模型IoU 预测概念详解
IoU 预测是指在目标检测模型中,除了预测边界框坐标(x, y, w, h)和类别概率外,额外增加一个分支来预测该检测框与真实框之间的 IoU 值(范围 [0,1])。更准确的置信度校准(将分类得分 × 预测 IoU 作为最终得分);改进 NMS 策略(用预测 IoU 替代硬阈值判断);作为损失函数的一部分,引导模型关注定位质量;减少训练与推理目标不一致的问题(传统方法用分类 loss + 回归 loss,但最终评价看 IoU)。优势说明提升 mAP。
2026-01-08 11:49:04
559
原创 模型训练常见问题:Loss 不降反升的原因分析及排查步骤
模型更新步伐太大,每一步都“跨过”了损失函数的最低点,在最优解两侧来回跳跃,甚至可能越跳越高(发散)。即使初始学习率合适,训练后期也需要更小的步伐来精细调整。当你看到Loss不降反升或剧烈震荡时,,这能解决大部分问题。
2026-01-08 11:09:11
284
原创 mysql innodb_flush_log_at_trx_commit 参数详解
1 安全,2 折中,0 快但危险”默认用1,除非你明确知道可以承担数据丢失风险。
2026-01-07 16:55:59
265
原创 mysql innodb_log_buffer_size 参数详解
是 MySQL InnoDB 存储引擎中的一个重要配置参数,用于控制。这个缓冲区用于在将事务日志(redo log)写入磁盘之前,临时缓存这些日志数据。
2026-01-07 16:54:51
359
原创 Java中synchronized和ReentrantLock锁重入机制详解
提高了灵活性:允许方法调用其他同步方法避免了自死锁:同一个线程不会因为重复获取锁而阻塞自己简化了编程:开发者不需要担心嵌套同步的问题支持面向对象设计:便于继承和多态的实现Java中的synchronized关键字和ReentrantLock都内置了锁重入机制,这也是为什么它们被称为"可重入锁"的原因。
2026-01-06 20:39:58
394
原创 docker 部署 Prompt Optimizer (提示词优化器)
Prompt Optimizer是一个强大的AI提示词优化工具,帮助你编写更好的AI提示词,提升AI输出质量。支持Web应用和Chrome插件两种使用方式。
2026-01-06 17:12:44
731
原创 Chrome扩展插件MyBatis SQL Log Merger使用教程
MyBatis SQL Log Merger 是一个Chrome扩展程序,帮助开发者将MyBatis SQL日志合并成完整的SQL语句,便于调试和分析。
2026-01-06 11:38:26
583
原创 MyBatis SQL日志合并插件MyBatis SQL Log Merger的功能介绍和使用方法
一键转换SQL功能:将MyBatis日志转换为可执行SQL,自动识别SQL模板和参数信息,正确代入参数值。独立的SQL合成工具页功能:提供单框和双框两种输入模式,适用于不同场景的日志输入,自动解析SQL模板和参数。SQL格式化与语法高亮功能:生成的SQL支持格式化和语法高亮,提高可读性,方便识别SQL结构和潜在问题。本地处理,保障数据安全功能:所有处理在浏览器本地进行,确保敏感SQL信息不会泄露,特别适合处理生产环境日志。插件优势提升开发效率:自动化处理SQL日志,大幅缩短手动操作时间。
2026-01-06 11:20:55
530
原创 Java JVM中的四种内存屏障(Memory Barrier)详解
内存屏障是一种硬件或软件层面的指令,用于控制指令执行顺序和内存可见性。在JVM中,它确保多线程环境下内存操作的顺序性。保障可见性:确保一个线程的写操作对其他线程立即可见保障有序性:防止指令重排序破坏程序语义平台适配:JVM在不同硬件架构上实现统一的内存模型编写正确的并发程序诊断并发问题进行高性能并发优化理解JVM并发机制的底层原理在实际开发中,通常通过使用volatileAtomic类等高级抽象,由JVM自动插入合适的内存屏障,而不需要直接操作底层屏障指令。
2026-01-05 22:14:04
586
原创 TIS 数据同步案例教程:MySQL同步Doris案例介绍
TIS 实现了多数据源端到端的数据同步,使用批量和实时增量的方式。TIS经过多年精心打造,专注用户侧使用体验,在操作界面化、流程化上下了不少功夫。TIS有别于传统大数据ETL工具,它借鉴了DataOps、DataPipeline理念,对大数据ETL各个执行流程建模,将传统的ETL工具执行以黑屏化工具包的方式(json+命令行执行)升级到了白屏化2.0的产品化方式(系统借助底层的MetaData自动生成脚本,用户只需轻点鼠标,借助系统给出的提示快速录入配置),从而大大提高了工作效率。
2026-01-04 22:24:13
945
原创 Java中synchronized和ReentrantLock锁的实现原理详解
维度OS层面相同(最终都是futex)相同(最终都是futex)用户态优化锁升级(偏向/轻量级/重量级)AQS队列+CAS自旋公平性非公平(实现决定)可选择功能基础丰富(可中断、超时、条件等)性能低竞争时更优高竞争时可能更优核心结论两者的操作系统底层机制本质相同,都是基于互斥锁和条件变量性能差异主要来自用户态的实现策略(锁升级 vs AQS)更适合简单场景,依赖JVM优化提供更多控制和可预测性这解释了为什么在低竞争时可能更快(得益于锁升级),而在高竞争时。
2026-01-04 14:39:29
407
原创 Java中的synchronized锁在操作系统层面的具体实现机制详解
核心机制的最终保障是操作系统的互斥锁优化策略:JVM通过锁升级减少进入内核态的代价关键成本:用户态↔内核态切换、上下文切换适用性:重量级锁适合保护复杂操作,不适合高频短操作这就是为什么在某些场景下性能更好——它提供了更灵活的API和优化策略,但底层同样依赖于类似的系统机制。
2026-01-04 14:37:12
424
原创 Java中volatile和synchronized关键字的区别
能力包含关系:synchronized的功能包含volatile的功能,但反之不成立设计原则:应该使用能满足需求的最轻量级机制选择指南使用volatile变量被多个线程访问,但只有一个线程写入变量作为状态标志使用需要确保对象发布的可见性(如单例模式)使用操作是复合的(读-改-写)需要保护临界区需要保证多个变量的一致性更新重要原则:不要因为synchronized"更强大"就滥用它。并发编程中,应该选择最简单、最明确的工具来解决特定问题。volatile能解决的问题。
2026-01-04 14:31:02
283
原创 Java 中使用 volatile 分别修饰基本数据类型和引用数据类型的区别详解
特性基本数据类型引用数据类型可见性保证变量值修改可见引用变更可见有序性保证变量操作不重排引用赋值不重排原子性单次读写原子引用赋值原子作用范围变量本身引用本身,不包含对象内部线程安全需要额外同步需要额外同步(对象内部)
2026-01-03 21:14:51
275
原创 Java 使用 volatile + 双重检查锁(DCL)实现单例模式的最佳方案
为什么要这么做?因为在并发场景下,双重检查锁(DCL)确实存在严重问题——
2026-01-03 14:48:33
377
原创 Java 实现单例模式的双重检查锁定存在的问题代码详解
原代码的主要问题是缺少volatile关键字,这会导致指令重排序和内存可见性问题。在 Java 5 之前,双重检查锁定根本无法正确工作。建议使用静态内部类或枚举方式实现单例,这些方式既安全又简洁。
2026-01-03 14:45:10
261
原创 Java CountDownLatch 代码示例:协调多个线程的执行顺序(比赛起跑)
这个示例完美展示了 CountDownLatch 如何协调多个线程的执行顺序,是并发编程中的经典模式。发令枪响 countDown。所有运动员都准备就绪?所有运动员都到达终点?裁判宣布: 比赛开始。
2025-12-31 20:25:40
604
1
原创 Java CountDownLatch 代码示例及使用细节总结
初始化- 创建N个任务的计数器等待- 主线程等待完成- 每个任务完成后调用必须必须放在finally中建议:使用带超时的await()避免永久阻塞一次性的,用完即弃,不能重置重用。
2025-12-31 18:26:14
145
1
原创 Java ThreadLocal 内存泄漏代码示例
线程隔离失效每个实例有自己的对象同一个线程访问不同实例时,会使用不同的key无法实现真正意义上的线程级数据共享内存泄漏// 每次创建新实例// 都会创建新的 ThreadLocal 对象// ThreadLocalMap 中会积累:ThreadLocal(key) -> value// 线程不结束,这些 entry 就一直存在ThreadLocalMap 膨胀每个线程的中会有大量 key(每个实例一个)即使实例被回收,ThreadLocal 是弱引用,但 value 可能还在。
2025-12-30 21:24:39
248
原创 Java 代码示例:ThreadLocal 解决同一个线程内多个对象间共享状态更新
ThreadLocal 的共享问题同一个线程内的不同对象通过访问的是同一个对象实例这可能导致线程内多个组件间意外的状态共享解决方案方案1:显式传递上下文对象作为方法参数方案2:使用请求/会话级别的上下文,并在处理完成后及时清理方案3:如果确实需要线程内共享,使用专门设计的共享对象,并确保线程安全最佳实践// 正确使用 ThreadLocal 的模式try {// 执行业务逻辑// 必须清理核心原则适用于存储线程隔离的上下文信息,而不是用于同一个线程内不同对象间共享和更新状态。
2025-12-30 21:20:36
295
原创 java ThreadLocal 静态变量的使用与注意事项
用static修饰是为了让实例本身在类级别唯一。每个线程通过这个唯一的实例访问自己独立的变量副本。它解决了线程隔离问题,但不解决线程内多实例共享状态的问题(那需要其他设计)。主要应用场景:线程上下文、数据库连接、会话管理等需要线程隔离数据的场景。
2025-12-30 21:06:51
373
原创 Java HashMap 多线程环境下的死链问题详解
HashMap在多线程环境下使用时存在死链问题。在JDK 7及之前版本的HashMap中,resize时采用的是。特点:对整个map加锁,性能较差。
2025-12-29 18:46:46
402
原创 SSE 和 WebSocket 对比
基于HTTP协议,使用简单的文本格式(通常是EventStream格式)实现服务器到客户端的实时数据流。现代应用有时会结合两者:用SSE推送通知,用WebSocket处理交互通信。协议,建立在TCP连接之上,允许服务器和客户端同时相互发送消息。
2025-12-29 18:37:56
325
1
原创 Java中 count++ 不是原子操作的核心原理解析
count++看起来是一行代码,但实际对应假设:两个线程都做了+1操作,但最终结果是1而不是2。
2025-12-28 15:39:40
312
原创 Java中为什么volatile不能解决多写问题?
volatile只解决可见性问题,不解决原子性问题对于count++这类复合操作,必须使用原子类在JDK8+的高并发写场景下,LongAdder性能通常优于AtomicLong选择哪个工具取决于具体的读写比例和并发程度。
2025-12-28 15:13:27
411
Premiere CS4教程——制作一个简单的相册
2013-03-17
spring boot发送普通文本邮件/HTML邮件/附件邮件/图片邮件完整代码.zip
2019-09-03
spring mvc 4+mybatis 3+bootstrap+逆向工程+分页插件实现增删改查完整项目源码
2018-07-01
Spring security+jwt服务鉴权完整代码.zip
2019-09-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅