- 博客(205)
- 收藏
- 关注
原创 我的第一个开源项目 -- 实时语音识别工具
这是我的第一个开源项目,是我一直想做的一个小工具:端到端实时语音转文字系统。通过小程序和H5页面,用户可以实时采录音频,通过ws上传到java的netty server。Java在经过权限验证、流量控制等操作之后,通过gRPC流式发送给python服务。python项目通过开源的模型实时识别文字结果,然后发送给java,java 发给客户端实时展示。
2025-07-22 23:09:31
2686
原创 为Tomcat部署SSL证书:从零到一的HTTPS配置指南
本文详细介绍了在Tomcat服务器上部署SSL证书实现HTTPS安全升级的完整流程。主要内容包括:HTTPS的重要性(数据加密、身份验证等);准备工作与环境要求;获取SSL证书的多种途径(商业CA、Let's Encrypt);证书格式转换(PEM转JKS);Tomcat的server.xml配置详解;以及高级优化配置(HTTP重定向、HSTS等)。文章提供了具体操作命令和配置示例,适合开发者在生产环境中快速部署安全可靠的HTTPS服务。
2025-12-04 20:56:46
1124
原创 技术整合部:现代企业数字化转型的核心引擎
通过专业的技术整合团队和合适的平台(无论是WebMethods、Apigee、Kong还是组合方案),企业能够构建灵活、可扩展的数字基础设施,打破系统孤岛,加速创新,最终在数字化竞争中保持领先地位。据Gartner研究,到2025年,缺乏有效整合策略的企业将比竞争对手多支出40%的IT预算,却只能实现50%的数字化价值。本文深入探讨技术整合部门在企业架构中的战略地位,分析API管理平台(如WebMethods、Apigee、Kong)在技术整合中的关键作用,并提出构建高效技术整合部门的实施框架。
2025-12-03 08:47:02
414
翻译 经典论文赏析 --《关于分布式计算的说明》- A Note on Distributed Computing
我们认为,处理分布式系统中交互对象的方式与处理单个地址空间中交互对象的方式有着本质的不同。这些差异是必需的,因为分布式系统要求程序员意识到延迟、具有不同的内存访问模型,并考虑并发和部分故障的问题。我们考察了许多试图掩盖本地对象和远程对象之间区别的分布式系统,并表明这些系统无法满足健壮性和可靠性的基本要求。过去,由于所构建的分布式系统规模较小,这些失败被掩盖了。然而,在不久的将来预见的企业级分布式系统中,这种掩盖将是不可能的。
2025-09-02 21:15:40
115
翻译 《论将系统分解为模块的准则》--经典论文赏析
今天分享一下大卫·L·帕纳斯(D.L. Parnas)的经典论文《论将系统分解为模块的准则》的中文翻译。论将系统分解为模块的准则D.L. Parnas 卡内基-梅隆大学本文讨论了模块化作为一种机制,用于提高系统的灵活性和可理解性,同时缩短其开发时间。“模块化”的有效性取决于将系统划分为模块时所使用的准则。本文提出了一个系统设计问题,并描述了常规和非常规的两种分解方式。结果表明,对于所述目标,非常规的分解方式具有显著优势。文中讨论了达成这些分解所依据的准则。如果使用“一个模块由一个或多个子程序组成”这一常规
2025-09-02 20:40:47
166
1
原创 Java ThreadLocal为什么要用弱引用
引用类型方案对 Key 的影响对 Value 的影响优点缺点全强引用无法回收,泄漏无法回收,泄漏无造成Key和Value双双泄漏Key弱引用, Value强引用可回收依赖主动清理,否则泄漏解决了Key的泄漏问题Value仍有泄漏风险(需主动清理)Key强引用, Value软引用无法回收,泄漏内存不足时回收可能避免OOMKey泄漏;
2025-08-29 15:33:34
1122
原创 “解释执行”和“编译执行”详细介绍
编译执行:像出版纸质书。印刷(编译)过程很耗时,但读者(计算机)读起来非常快。解释执行:像现场脱口秀。表演者(解释器)说一句,观众(计算机)就立刻听到并反应一句,互动性强,灵活但整体节奏可能稍慢。混合模式(JIT):像智能提词器演员。演员(虚拟机)先看提词器上的大纲(中间码),对于熟悉的桥段直接脱稿表演(JIT编译后的机器码),对于不熟悉的则照着念(解释执行)。
2025-08-28 15:01:20
1121
原创 时序数据库的 LSM 树介绍
方面优点缺点写入性能极高。将随机写转换为顺序写,吞吐量巨大。读取性能点查(Point Query)在 Key 存在时表现良好。点查(Key 不存在)和范围查询(Range Query)可能较慢,存在读放大。磁盘 I/O充分利用了顺序 I/O 的高带宽,对 HDD 和 SSD 都友好。后台 Compaction 会消耗大量 I/O 带宽,可能影响前台读写性能(写停顿空间效率写放大和空间放大较高,需要更多磁盘空间。复杂度。
2025-08-27 15:42:30
1323
原创 时序数据库全景指南:从场景选型到内核拆解
时序数据(Time-Series Data)维度描述高并发写百万点/秒,追加为主写多读少90 % 查询是降采样或聚合时效性越新越热,旧数据价值递减多维标签每条点带大量 tag(设备、区域、指标名)Serverless + 对象存储:冷热分层到极致(Snowflake 模式)AI4DB:自适应压缩、索引推荐流批一体:Flink + 时序库 → 实时降采样、异常检测边缘协同:TDengine / IoTDB 边云同步,断网缓存统一协议。
2025-08-27 14:26:02
1149
原创 经典的多线程面试题-用三个线程按顺序循环打印 abc 三个字母,比如 abcabcabc
方法优点缺点适用场景简单易懂,JDK内置不够灵活,唤醒所有线程简单的同步需求灵活,可精确控制代码稍复杂需要精确控制的复杂同步Semaphore概念清晰,易于理解需要管理多个信号量控制访问资源的线程数量无锁,性能可能更好忙等待可能消耗CPU竞争不激烈的场景最推荐方法一(synchronized),因为它最简单直观,适合面试和大多数场景。方法二(ReentrantLock)在需要更精细控制时是更好的选择。
2025-08-27 10:38:11
817
原创 Spring Boot 与传统 Spring:从 WAR 到可执行 JAR,颠覆性的部署哲学
特性维度Spring Boot (可执行 JAR)传统 Spring (WAR)容器关系嵌入式 (Embedded),与应用一体外部 (External),与应用分离打包格式可执行 Fat JARWAR启动命令环境依赖仅需 JRE需预装匹配版本的 Tomcat/JEE 服务器容器定制应用配置文件服务器配置文件server.xml应用隔离性强(进程级别隔离)弱(共享容器,可能相互影响)适用架构微服务、云原生、分布式系统传统单体应用、企业级应用服务器环境从WAR到可执行JAR。
2025-08-26 21:04:18
507
原创 Spring事务管理详解
特性声明式事务 (编程式事务 (实现方式基于 AOP 代理基于 API 调用代码侵入性无侵入,业务代码纯净强侵入,事务代码与业务代码混合控制粒度方法级别代码块级别,更精细易用性高,简单注解即可低,需要编写模板代码灵活性相对较低,依赖于注解属性配置非常高,可以完全自定义控制流程适用场景绝大多数业务场景,如简单的增删改查、一个Service方法内多次数据库操作极少数非常复杂的、需要精确控制事务边界的情景最佳实践:优先使用声明式事务,因为它简单、清晰且足以应对大部分需求。深入理解传播行为和。
2025-08-26 15:40:42
277
原创 Nginx 工作原理深度解析:高性能Web服务器的核心机制
Nginx(发音为"engine x")是当今互联网世界中最受欢迎的高性能Web服务器之一,它不仅可以用作HTTP服务器,还能作为反向代理服务器、负载均衡器和邮件代理服务器。本文将深入探讨Nginx的工作原理,解析其高性能背后的核心机制。Nginx的高性能源于其精巧的架构设计:事件驱动的异步模型、高效的内存管理、模块化架构和精细的优化策略。随着云原生和微服务架构的普及,Nginx继续演进,通过Nginx Plus和开源版本的持续发展,为现代应用交付提供强大的基础架构支持。
2025-08-26 15:14:11
897
原创 深入理解内存屏障(Memory Barrier):现代多核编程的基石
内存屏障(Memory Barrier),也称为内存栅栏(Memory Fence),是一类特殊的CPU指令,用于限制内存操作之间的重排序,并确保内存可见性。你可以将它看作一道"栅栏",强制要求所有在"栅栏"之前发起的内存操作,必须在"栅栏"之后发起的内存操作之前完成(对自身或其他CPU可见)。内存屏障并非要禁止所有重排,而是赋予程序员一种能力,在关键的、需要保证顺序和可见性的地方,插入约束,告诉CPU和编译器"到此为止,不得逾越"。它很底层,是 CPU 架构和并发模型的基石。它很重要。
2025-08-26 15:12:27
639
原创 Redis ZSet 维护的榜单出现排名混乱且跳动频繁这一现象的原因和解决办法详解
检查得分:使用命令,仔细查看得分是否如你预期。重点关注那些“看起来相等”的得分,它们可能是浮点数精度问题的元凶。审查代码:检查更新ZSet得分的代码逻辑。是用的ZADD还是ZINCRBY?是否存在“读-计算-写”的反模式?评估数据源:得分计算所依赖的数据是否强一致?是否存在主从延迟?评估并发:服务是否是高并发部署?更新逻辑是否幂等?总而言之,解决这个问题的黄金法则就是:将得分转换为整数,并尽可能使用ZINCRBY进行原子增量更新,避免复杂的客户端计算。
2025-08-21 16:43:29
952
原创 深入解析 sqlmap:渗透测试者的瑞士军刀与开发者的警世钟
sqlmap是一款开源的、功能强大的自动化 SQL 注入工具。它使用 Python 编写,其主要功能是自动化地检测、利用和最终接管数据库服务器。它的核心工作流程可以概括为:探测:识别给定的 URL、参数或数据是否易受 SQL 注入攻击。利用:在发现漏洞后,利用该漏洞来提取数据(如数据库名、表名、字段值)。扩展:进一步获取数据库服务器权限(如文件系统读写、操作系统命令执行)。
2025-08-21 15:31:28
1054
原创 IO 多路复用详细介绍
IO 多路复用 ≈用一条线程做“前台服务员”,当任何一位客人(socket)举手(数据就绪)时才过去服务;既省人力(线程),又避免傻等。
2025-08-21 13:42:59
686
原创 Redis 哈希表的核心——`dictEntry` 结构体
dictEntry结构体是 Redis 所有键值数据的最终载体,它的设计体现了 Redis 对性能和内存效率通用性:使用void*键和联合体v,使其能够灵活存储各种数据。高效性:通过联合体内联存储整数和浮点数,减少内存分配和指针跳转。解决冲突:通过next指针实现拉链法,简单可靠。理解dictEntry是理解 Redis 如何高效管理海量数据的关键一步。
2025-08-21 10:34:47
652
原创 Redis 哈希表的本质:数组里存的是什么?
并不是直接存储键值对对象本身,也不是简单的对象地址。通常是一个指向 Redis 对象(如。但这个数组的元素(也就是每个桶。),以及指向下一个节点的指针(节点里才真正存储了键(
2025-08-21 09:20:27
347
原创 渐进式 rehash 是什么,为什么Redis要采用这种方式扩容/缩容?
渐进式 Rehash 就是为了解决上述问题而设计的。将庞大的、集中的迁移工作分摊到多次、小批量的操作中,穿插在正常的处理请求的过程中,从而避免了一次性集中 rehash 导致的长时间服务停顿。特性传统 Rehash渐进式 Rehash过程一次性集中完成分多次、小批量完成阻塞长时间阻塞服务(Stop-The-World)几乎无感知,不阻塞服务性能影响产生明显延迟和卡顿平滑,对延迟影响极小内存占用瞬间峰值(新旧表同时存在时间极短)在一段时间内维持较高水平(新旧表共存)适用场景。
2025-08-21 09:19:03
840
原创 Byte数组的奇妙世界:从二进制存储到高效状态管理
在Java中,byte[]是一个用于存储原始字节数据的数组。每个byte占用8位(1字节),可以表示-128到127的整数值,或者0x00到0xFF的无符号值。// 创建10字节的数组// "Hello"的ASCII码场景:高效的对象序列化,避免Java原生序列化的开销。// 序列化用户对象// 反序列化用户对象// 构造方法、getter、setter省略Byte数组在Java中是一个极其强大的工具,它的应用远不止于简单的数据存储。
2025-08-20 17:14:38
621
原创 令牌桶(Token Bucket)和漏桶(Leaky Bucket)细节对比
令牌桶(Token Bucket)和漏桶(Leaky Bucket)是两种经典的流量整形(Traffic Shaping)和速率限制(Rate Limiting)算法,用于控制网络或系统中数据的传输速率。它们的目标是平滑突发流量、防止资源过载,但实现方式和适用场景有所不同。系统以固定速率向一个桶中放入令牌(Token),每个令牌代表一个发送数据的许可。两种算法均可结合队列实现请求缓存,但令牌桶更灵活,漏桶更稳定。实际中,令牌桶应用更广泛(如Redis的。请求像水一样流入桶中,桶以固定速率(漏出)处理请求。
2025-08-18 16:20:04
409
原创 MySQL InnoDB索引:三层B+树如何支撑千万级数据存储
数据存储位置:B树所有节点都存储数据,B+树只有叶子节点存储数据叶子节点链接:B+树的叶子节点通过指针相连形成有序链表节点利用率:B+树非叶节点可存储更多键值,使树更"矮胖"磁盘I/O优化:通过多路平衡减少访问次数空间局部性:页式存储利用预读特性时间局部性:热点数据留在缓冲池理解这些原理不仅能帮助我们更好地使用MySQL,也为设计其他存储系统提供了思路框架。当你在执行一条简单的SELECT语句时,请记得这背后精妙的索引结构正在默默工作。
2025-08-14 09:29:04
997
原创 CAP理论深度解析与工程实践指南
CAP理论揭示了分布式系统的本质约束,而BASE理论提供了工程实践中的灵活方案。混合策略:在子系统层面灵活选择CP或AP。可调一致性:允许客户端按需指定一致性级别(如DynamoDB)。智能冲突解决:利用机器学习自动解决数据冲突。新硬件助力:RDMA网络降低延迟,减少分区发生概率。理解CAP理论并能根据业务需求做出合理权衡,是设计高可靠分布式系统的关键能力。未来随着技术发展,我们可能看到更多突破传统CAP限制的创新方案,但CAP作为理论基础仍将长期指导分布式系统设计。
2025-08-13 21:57:20
513
原创 某跨国金融机构法律法规自动文本摘要(ATS/文本大意提取)功能规划
• Python 微服务:单职责,仅跑 BART-large-cnn,4-bit 量化,占用 2 GB VRAM。Angular + Java + Python (BART) + gRPC 完整落地方案。• Angular 只负责 UI 与文件上传/下载。– 通过 gRPC 调用 Python 摘要微服务。– 解析 PDF/Word(复用 Java 库)。四、后端 (Spring Boot)六、前端 (Angular 17)– 数据库、审计、权限。五、Python 微服务。返回 policyId。
2025-08-12 18:38:31
744
原创 从 0 到 1:用 MyCat 打造可水平扩展的 MySQL 分库分表架构
MyCat 官方文档 https://www.yuque.com/books/share/05b6e74e-9a1a-4e5d-a21e-4f93e9e3d5a3。当业务继续增长,数据量和并发量都会突破单机天花板,此时就需要。—— 轻量级、配置简单、社区成熟,适合中小团队快速落地。
2025-08-11 17:27:58
1403
原创 JAVA切面的两种实现方式
特性Spring AOPAspectJ实现方式动态代理(运行时)字节码织入(编译/加载时)性能稍低(代理开销)高(直接修改字节码)功能限制只能代理 public 方法支持构造器、字段、私有方法等依赖依赖 Spring 容器可独立使用Spring AOP 通过动态代理实现切面逻辑,而 AspectJ 通过字节码织入实现更强大的切面功能。如需深入了解字节码织入,可以研究ASM或Byte Buddy等字节码操作库。
2025-08-08 10:16:46
594
原创 上下游系统对账差异经常 1 小时才发现,如何用事件溯源(Event Sourcing)把差异缩短到 5 分钟以内?
把每一步业务动作写成事件 → 用流式计算每 30 秒对一次账 → 差异秒级告警。这就是「事件溯源 5 分钟对账」的全部秘密。
2025-08-07 21:51:49
843
原创 OAuth2 的 redirect_uri 开放重定向导致的问题说明和解决方案
开放重定向就像给快递小哥说:‘把包裹送到 meitu.com 的任何子域都行’——攻击者只需注册一个长得像的子域,就能把包裹直接截走。把 redirect_uri 做成“一个字母都不能差的白名单”,开放重定向就彻底失效。
2025-08-07 21:09:41
722
原创 OAuth2 授权码截获问题描述和解决办法:PKCE 是怎么生成和流转的
如果你在使用OAuth2实现跨应用授权登陆,可能会遇到授权码被截获的问题,下面我将这个问题拆成来讲,你跟着画面走一遍就懂了其中的原理和解决办法。
2025-08-07 20:59:59
472
原创 OAuth2 在Web端最容易被忽视、且真实造成过大规模安全事件或重大故障的潜在问题
下面按照 “风险 → 原理 → 典型攻击/故障场景 → 缓解方案” 逐条展开。每条都给出业内已发生的公开案例或 CVE,方便对照自查。
2025-08-07 17:55:58
713
原创 Kong vs. NGINX:从反向代理到云原生网关的全景对比
NGINX:高性能 Web 服务器 / 反向代理的“瑞士军刀”。Kong:基于 NGINX + LuaJIT 的云原生 API 网关,专注API 生命周期管理。一句话区别:“NGINX 是高速公路,Kong 是高速+收费站+监控大屏+服务区一体化。“NGINX 提供极致性能,Kong 在性能可接受的前提下,把API 治理、插件生态、云原生体验做到极致。选谁,取决于你要一条高速公路,还是一座智能化服务区。
2025-08-07 16:52:50
915
原创 深入理解Apache Camel:原理剖析与实践指南
Override@OverrideApache Camel通过其独特的设计理念,将复杂的系统集成问题转化为可维护的路由配置。合理划分路由粒度:避免单个路由承担过多职责充分利用错误处理:建立完善的重试和补偿机制监控驱动优化:通过指标数据持续改进路由性能保持技术演进:关注Camel 4.x的响应式支持等新特性随着云原生技术的发展,Camel 3.x版本对Quarkus和Spring Native的支持,将使其在Serverless场景下发挥更大价值。
2025-08-07 16:51:39
586
原创 如何定位一个高并发场景下API响应时间从200ms突增到2s的问题
当API响应时间从200ms突增到2s时,在高并发场景下需要系统性地排查问题。
2025-08-06 22:04:03
971
原创 记一次连接池泄漏导致的线上事故排查与修复
我们的核心服务响应时间从平均50ms飙升到2000ms以上,错误率从0.1%上升到15%,数据库CPU使用率接近100%。更糟糕的是,这种情况呈现持续恶化的趋势。这次事故让我深刻理解了连接池泄漏的危害性——它像内存泄漏一样具有累积效应,最终导致系统不可用。同时也让我认识到防御性编程和全面监控的重要性。根据日志中的堆栈信息,我们定位到几个可疑的业务方法。每次调用这个方法都会泄漏一个连接,随着请求量增加,最终耗尽了连接池的所有连接。这表明应用无法从连接池获取到数据库连接,触发了获取连接的超时。
2025-08-06 22:00:44
575
原创 Kafka 重平衡(Rebalance)机制
Kafka 重平衡(Rebalance)是指消费者组内消费者数量发生变化(增加或减少)或主题分区数量发生变化时,Kafka 重新分配分区给消费者的过程。分区在所有消费者之间公平分配每个分区在任何时候都只被组内的一个消费者消费当消费者加入或离开组时,分区所有权会转移。
2025-08-06 10:53:09
986
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅