【每日一博】
文章平均质量分 83
日常小结,零散知识整理收集
小小工匠
show me the code ,change the world
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
每日一博 - 场景驱动选择内存计算框架:Geode、Redis、Hazelcast、Ignite
本文分析了四种主流内存计算与分布式缓存框架(Geode、Redis、Hazelcast、Ignite)的核心特性与应用场景。Geode适合金融交易等强一致性需求,Redis擅长高速缓存和消息队列,Hazelcast适用于微服务共享缓存和流计算,Ignite则专注于实时分析与分布式计算。通过Spring Boot集成示例和架构图展示了各框架的实现方式,并提供了框架对比表和时序图。文章建议根据业务需求选择框架,如高一致性选Geode,高速缓存选Redis,微服务共享选Hazelcast,复杂分析选Ignite。原创 2025-10-01 06:45:00 · 572 阅读 · 0 评论 -
每日一博 - 使用rsync+lsyncd 打造企业级文件传输利器
摘要: rsync+lsyncd组合为企业级文件同步提供高效解决方案。rsync实现增量传输与断点续传,lsyncd通过inotify机制实时监听文件变动并触发同步,满足实时性、效率与可靠性需求。中心服务器配置rsync服务端接收文件,客户端通过lsyncd监控目录并调用rsync加密传输。最佳实践包括避免同步未写完文件、定时清理源文件及禁用远程删除以防数据丢失。该方案具备高效、稳定、节省带宽及灵活扩展等优势,适用于日志汇总、资源发布等场景。原创 2025-08-24 06:45:00 · 1016 阅读 · 0 评论 -
每日一博 - 异步编程最佳实践
本文探讨了高并发场景下的异步编程实现方案。通过分析线程池、Future、CompletableFuture、Spring @Async、事件驱动、消息队列、响应式编程等技术的优缺点及适用场景,对比了阻塞IO与非阻塞IO的性能差异。文章还总结了回调地狱、上下文丢失等常见问题及其解决方案,并提供了性能压测数据,帮助开发者根据需求选择合适的异步处理方案,提升系统吞吐量和稳定性。原创 2025-08-03 21:54:19 · 3947 阅读 · 0 评论 -
每日一博 - 四种主流幂等方案优劣对比与选型指南
在分布式系统或微服务架构中,幂等性(Idempotency)是指对同一操作执行多次与执行一次的效果相同,不会因为重复执行而产生副作用。由于网络抖动、用户重复点击、系统重试等原因,同一请求可能被多次发送到后端处理,如果没有幂等保护,就可能导致数据重复、业务异常,严重影响系统稳定性和一致性。接下来我们将系统地介绍四种主流的幂等性实现方案,并对比它们的优缺点,帮助架构师和开发者根据业务需求进行选型。原创 2025-07-12 16:23:36 · 1078 阅读 · 0 评论 -
每日一博 - 基于 Access Token 和 Refresh Token实现无感刷新
双Token机制实现安全无感刷新方案 摘要: 双Token机制采用Access Token(短期有效)和Refresh Token(长期有效)的组合方案。用户登录时获得两个Token,Access Token用于接口鉴权,Refresh Token用于Token刷新。当Access Token过期时,客户端自动使用Refresh Token请求新Token,实现无感刷新。该方案通过拦截器实现过期检测(返回511状态码)和自动刷新,并考虑安全防护(HttpOnly、防重放)和性能优化(并发控制)。服务端需验证原创 2025-07-08 05:15:00 · 1437 阅读 · 0 评论 -
每日一博 - 线程池异常处理的三种方案
线程池异常处理机制与最佳实践总结 在生产环境中,线程池任务异常若未正确处理会导致任务静默失败、系统不稳定等问题。本文通过模拟线程池异常场景,对比submit与execute的异常处理差异,并提出三种解决方案:1)任务内部try-catch(简单但侵入性强);2)Thread.setDefaultUncaughtExceptionHandler全局处理(仅适用于execute);3)重写ThreadPoolExecutor的afterExecute方法(统一处理所有异常)。 最佳实践建议:关键任务使用方案一定原创 2025-07-08 04:45:00 · 1190 阅读 · 0 评论 -
每日一博 - Arthas 一点通
Arthas是一款强大的线上诊断工具,能实时监控JVM状态、追踪方法调用,无需修改代码或重启服务。它提供dashboard全局监控、thread线程分析、trace方法链路追踪等核心功能,支持热更新代码和反编译类文件。典型应用场景包括内存泄漏排查、接口性能优化等。通过Java Agent和字节码织入技术实现无侵入诊断,并支持命令行与Web双模交互。作为开发者的"线上急诊室",Arthas能快速定位生产环境问题,是提升故障排查效率的利器,掌握其使用可显著增强工程师的线上问题处理能力。原创 2025-07-07 04:45:00 · 943 阅读 · 0 评论 -
每日一博 - Entity & DTO 最佳实践
摘要: 在Spring Boot开发中,直接复用JPA实体作为API参数和响应存在严重隐患。文章通过User类示例揭示了混用带来的问题:敏感数据泄露(如密码)、字段变更影响全链路、业务边界模糊等。解决方案是采用DTO分层模式:输入DTO(如CreateUserRequest)隔离前端可控字段,输出DTO(如UserDTO)控制数据暴露范围,并通过MapStruct自动实现实体-DTO映射。示例项目展示了标准分层结构(实体/dto/mapper),强调通过Service层强制业务规则(如isAdmin仅后端设原创 2025-07-01 04:45:00 · 1162 阅读 · 0 评论 -
每日一博 - JWT 安全实战指南
探讨了JWT在分布式系统中的安全实践。JWT因其自包含和无状态特性广泛用于认证授权,但也存在诸多安全风险。文章从传输层安全、签名算法选择、密钥管理、Token生命周期等方面,详细介绍了JWT的安全防护措施。重点包括:强制HTTPS传输、禁用弱算法、密钥安全存储与轮换、严格校验Header与Claims、实施短期Token和Refresh Token机制、防范重放攻击和算法混淆等。同时提供了前端存储建议和抗攻击策略,强调通过HTTPS、严格算法控制、短期Token和上下文绑定等措施提升JWT安全性。原创 2025-06-12 19:52:03 · 1571 阅读 · 0 评论 -
每日一博 - 容错机制 : 指数退避+动态限流+熔断+监控告警设计
本文介绍了一个基于动态限流、熔断和指数退避重试的MQ消息发送系统架构。系统通过HTTP接入层进入动态限流模块,根据MQ消费延迟(Lag)动态调整令牌桶速率,控制请求流量。熔断器模块根据Lag阈值切换状态,同步调整限流参数。发送失败时,指数退避重试模块加入随机抖动优化重试效率。MQ客户端服务层整合所有组件,最终将消息发送至Kafka/Redis。系统还通过Prometheus监控关键指标,实现阈值告警。这种架构有效解决了高并发场景下的流量控制和故障恢复问题。原创 2025-06-07 08:45:00 · 2230 阅读 · 0 评论 -
每日一博 - 指数退避Exponential Backoff + 抖动Jitter
为了解决这一问题,我们需要在重试逻辑中施加延迟,并逐次放大延迟间隔,让服务端有足够时间恢复。此时,就要用到**指数退避(Exponential Backoff)+ 抖动(Jitter)**策略。如果对这些错误不做任何处理,客户端会立即重试,短时间内大量并发请求重新涌向服务器,往往引起更严重的拥堵。开始,介绍了指数退避的基本公式、抖动(Jitter)的重要作用以及最大退避时间和最大重试次数的选取。本示例使用最简单的 Full Jitter,即在。”的组合,既能快速让客户端后退,又能避免重试风暴。原创 2025-06-07 05:15:00 · 1370 阅读 · 0 评论 -
每日一博 - Kafka、Reactor、NGINX的背压控制与性能调优
在每日一博 - 背压(Backpressure)的核心原理与实现方式中,系统地介绍了背压机制的原理、常见场景与典型案例。接下来将进一步聚焦三个实际系统(Kafka、Reactor、NGINX),详细讲解如何结合各自架构与配置项,实现背压控制与性能调优。在 Kafka 消息队列中减少 Lag、保护 Broker 与消费者资源;在 Reactor 响应式编程中使用背压算子避免内存泄漏与吞吐不稳定;在 NGINX 反向代理场景下,通过限流与缓冲参数,为下游服务施加背压。原创 2025-06-06 06:15:00 · 1366 阅读 · 0 评论 -
每日一博 - 背压(Backpressure)的核心原理与实现方式
本文系统介绍了背压(Backpressure)机制的概念、原理及典型应用场景。背压指当消费者处理能力不足时,通过反馈机制使生产者主动限流,避免系统崩溃。文章详细解析了背压的产生背景(生产消费速率不匹配)、核心原理(缓冲区监控、阈值判断、信号反馈和速率调整)以及实现方式。典型案例包括TCP流量控制、Reactive Streams和Kafka消息队列,展示了不同场景下的背压应用。最后总结了背压设计要点,强调其在保障系统稳定性中的关键作用。原创 2025-06-06 05:15:00 · 2389 阅读 · 0 评论 -
每日一博 - 三高系统架构设计:高性能、高并发、高可用性解析
三高系统架构设计是一场与复杂性对抗的持久战。通过高性能、高并发、高可用性的优化,我们可以构建出稳定、可靠、高效的系统,支撑业务的快速发展。参考这里。原创 2025-01-31 12:58:51 · 4079 阅读 · 0 评论 -
每日一博 - 一致性哈希:分布式系统的数据分配利器
在现代分布式系统中,如何高效地将数据分布在多个服务器上,同时保证扩展性和容错性,是一个至关重要的问题。一致性哈希算法(Consistent Hashing)正是为了解决这些挑战而设计的。今天,我们来深入探讨这个经典的分布式算法,包括它的基本原理、优缺点,以及实际应用中的Java代码实现。原创 2024-11-21 23:33:09 · 4419 阅读 · 0 评论 -
每日一博 - equals 和 hashCode注意事项
在Java中,Object类的equals()和hashCode()方法用于对象的比较和哈希存储。它们的作用和正确实现直接关系到对象的相等性判断、集合的存储和操作效率等。原创 2024-11-17 07:45:00 · 4083 阅读 · 0 评论 -
每日一博 - Java的Shallow Copy和Deep Copy
关于Java的深拷贝和浅拷贝,简单来说就是创建一个和已知对象一模一样的对象。可能日常编码过程中用得不多,但了解深拷贝和浅拷贝的原理,对于Java中的值传递或者引用传递将会有更深的理解。原创 2024-11-16 22:49:50 · 4105 阅读 · 0 评论 -
每日一博 - 复习Https工作原理
TLS是一种安全协议,主要用于在互联网上安全传输数据。上图展示了客户端和服务端之间建立安全连接的步骤。原创 2024-05-30 20:15:00 · 6685 阅读 · 0 评论 -
每日一博 - 闲聊架构设计中的多级缓存设计
从客户端到服务层,缓存的应用广泛而重要。通过合理的缓存设计,能够有效地提高系统的性能并降低延迟。多级缓存设计在微服务架构中扮演着至关重要的角色。在具体应用中,架构师应根据业务需求、系统规模和性能指标来选择合适的缓存策略。在缓存设计中,平衡性能和复杂度是一个重要的考虑因素。原创 2024-05-05 17:06:23 · 5976 阅读 · 0 评论 -
每日一博 - 重新定义JAR中的类或方法
在一些情况下,我们可能需要定制第三方库的行为,但却无法直接修改其源代码或者重新打包JAR文件。这可能是因为第三方库受到了严格的许可协议限制,或者我们无法获取源代码。原创 2024-04-13 10:16:19 · 7808 阅读 · 0 评论 -
每日一博 - 关于日志记录的最佳实践
记录日志是任何应用程序中至关重要的一部分,它可以帮助开发人员了解应用程序的行为、调试问题以及监控系统的健康状态。使用日志框架选择一个成熟、广泛使用且功能丰富的日志框架,如Log4j2、Logback或java.util.logging (JUL)。Log4j2和Logback是目前较为流行的选择,它们提供了丰富的功能和灵活的配置选项。使用SLF4J进行日志抽象SLF4J (Simple Logging Facade for Java) 提供了一种日志框架的抽象,可以在运行时绑定到不同的日志框架。原创 2024-03-31 06:30:00 · 6883 阅读 · 0 评论 -
每日一博 - 大端(Big Endian)和小端(Little Endian)
大端(Big Endian)和小端(Little Endian)是用于描述在存储器中存储多字节数据时字节顺序的两种不同方法。原创 2024-02-20 19:15:00 · 7577 阅读 · 0 评论 -
Java - OpenSSL与国密OpenSSL
国密OpenSSL与普通OpenSSL的主要不同之处在于支持的加密算法。普通OpenSSL主要支持国际通用的加密算法,而国密OpenSSL在保持对这些算法支持的同时,增加了对中国国家密码管理局规定的国产密码算法的支持。这使得国密OpenSSL能够更好地满足中国用户在特定场景下的安全需求。原创 2024-01-26 22:15:00 · 8547 阅读 · 0 评论 -
如何利用静态代理IP优化跨境电商运营
跨境电商,即跨境电子商务,是指在不同关境(国境)之间通过互联网进行的商业交易活动。这种商业模式充分利用了网络的全球化特性,使得买卖双方不受地理位置的限制,通过电子商务平台达成交易,并进行电子支付结算,最后通过跨境物流将商品送达买家手中,完成整个交易过程。在跨境电商活动中,卖家通常位于一国,而买家则位于另一国。交易过程涉及语言、货币、物流、清关等多个复杂的环节。因此,对于参与跨境电商的企业而言,不仅需要有高效的供应链管理能力,还需要具备跨文化交流、国际贸易规则、电子支付和物流等方面的专业知识和技术支持。原创 2024-01-15 19:13:48 · 37072 阅读 · 0 评论 -
每日一博 - 使用APIFOX调测 @RequestBody标注的对象
APIFOX(类似Postman)提供了丰富的功能来支持用户发送包含各种信息的 POST 请求,如文本数据、JSON 或 XML 数据结构、文件等。它不仅可以帮助开发人员测试 API 功能,还可以通过模拟客户端请求,有效帮助开发人员理解客户端如何与 API 交互。POST 请求是 HTTP 协议中用于提交数据的一种方法,例如,当用户在网页表单中填写信息并提交时,通常会使用 POST 请求来发送数据到服务器。原创 2024-01-14 10:24:19 · 9373 阅读 · 0 评论 -
每日一博 - 多租户技术及其三种数据存储策略
多租户技术(Multi-Tenant Technology)是软件即服务(SaaS)架构中的一项核心技术,允许单一软件应用或服务同时服务于多个客户(即“租户”),而不会互相干扰,同时保持数据隔离和安全性。原创 2024-01-06 22:14:10 · 8097 阅读 · 0 评论 -
每日一博 - 动态编译报错 ClassNotFoundException: com.sun.tools.javac.processing.JavacProcessingEnvironment
这个类是Java编译器API的一部分,它是用于访问编译器的内部处理环境的。一看属于度一类,就是 toolls中的类没找到。表示Java运行时环境无法找到名为。原创 2024-01-04 18:06:17 · 8416 阅读 · 0 评论 -
每日一博 - Protobuf vs. Protostuff:性能、易用性和适用场景分析
它是一个用于Java的库,旨在提供比原生Protobuf更简便的API,同时保持与Protobuf的兼容性。由于系统规模较大,性能的微小差异可能会在整个系统中累积,而Protobuf的静态定义和二进制格式在这方面可能更具优势。综上所述,Protostuff可以看作是在保持与Protobuf兼容性的同时,提供了更简便、直观的方式来处理数据序列化的Java库。由于系统规模相对较小,性能差异可能对整体系统影响较小,而Protostuff的动态特性和对POJO的直观支持可以提高开发效率和代码简洁性。原创 2023-12-20 22:15:00 · 9322 阅读 · 0 评论 -
每日一博 - App key和App Secret
App Key和App Secret是API接口调用中常用的身份验证机制,确保只有合法的应用程序可以访问API。原创 2023-12-18 23:30:00 · 9847 阅读 · 0 评论 -
每日一博 - Cache Miss Attack
在缓存管理中,“Cache Miss Attack” 是一个重要的问题. 说白了就是我们常说的【缓存穿透它指的是一种情况,即要获取的数据既不存在于数据库中,也没有被缓存。这会导致每个请求最终都会直接访问数据库,从而破坏了使用缓存的初衷。如果一个恶意用户发起大量针对这样的键的查询,数据库可能会很容易地被过载.更多可以访问我之前写的博客:深入理解分布式技术 - 探究缓存穿透、缓存击穿、缓存雪崩解决方案。原创 2023-12-11 21:15:00 · 8419 阅读 · 0 评论 -
每日一博 - 图解5种Cache策略
缓存是在系统中存储数据的临时存储器,用于提高访问速度。缓存策略定义了如何在缓存和主存之间管理数据。原创 2023-12-10 22:40:02 · 8978 阅读 · 0 评论 -
每日一博 - Code如何被发布到生产环境
关于公司如何将代码发布到生产环境的是一个什么样的流程呢?下面的图示展示了典型的工作流程。步骤 1:流程始于产品负责人根据需求创建用户故事。步骤 2:开发团队从积压工作中挑选用户故事,将它们放入为期两周的开发周期的冲刺中。步骤 3:开发人员将源代码提交到代码仓库 Git。步骤 4:在 Jenkins 中触发构建。源代码必须通过单元测试、代码覆盖率阈值和 SonarQube 中的检查点。步骤 5:一旦构建成功,构建将存储在 artifactory 中。然后构建被部署到开发环境。原创 2023-10-18 20:45:00 · 9079 阅读 · 0 评论 -
每日一博 - 闲聊 Java 中的中断
在 Java 中,中断是一种线程协作方式。比如说,当线程 A 正在运行时,线程 B 可以通过中断线程 A,来指示线程 A 停止它正在执行的操作。但是线程 A 如何响应线程 B 的中断,是需要依靠线程 A 的代码处理逻辑来做决定的。原创 2023-09-29 23:16:10 · 9918 阅读 · 0 评论 -
每日一博 - 防范彩虹表攻击_数据库存储密码的秘密武器
加盐(salting)是一种安全存储数据库中密码并验证其真实性的常见方法,它的主要目的是增加密码的安全性,以防止常见的密码攻击,如彩虹表攻击。对于每个用户的密码,都要生成一个唯一的随机盐值。这个盐值通常是一个随机生成的字符串,它与用户的密码结合在一起用于存储和验证密码。将用户输入的密码与生成的盐值结合在一起。通常是将盐值附加到密码的前面或后面,然后计算哈希值。使用密码哈希函数(如SHA-256或bcrypt)对结合后的密码进行哈希处理。哈希函数将密码和盐值转换成固定长度的散列值。原创 2023-09-17 16:45:00 · 10396 阅读 · 0 评论 -
每日一博 - 常见的数据结构
🔹 链表(List):用于保存Twitter的信息流。🔹 栈(Stack):支持文字编辑器的撤销/重做功能。🔹 队列(Queue):用于保存打印作业,或者在游戏中发送用户操作。🔹 堆(Heap):用于任务调度。🔹 树(Tree):用于保存HTML文档,或者用于人工智能决策。🔹 后缀树(Suffix Tree):用于在文档中搜索字符串。🔹 图(Graph):用于跟踪社交关系,或者进行路径搜索。🔹 R树(R-Tree):用于寻找最近的邻居。原创 2023-09-17 14:30:00 · 10376 阅读 · 0 评论 -
每日一博 - WebHook vs Polling
下面的图表显示了轮询和Webhook之间的比较。假设我们运行一个电子商务网站。客户通过API网关将订单发送到订单服务,然后订单服务将订单传递给支付服务进行支付交易。支付服务然后与外部支付服务提供商(PSP)通信,以完成交易。处理与外部PSP的通信有两种方法。🔹 1. 短轮询在向PSP发送付款请求后,支付服务会不断地询问PSP付款状态。经过多轮后,PSP最终返回状态。不断轮询状态需要支付服务的资源。外部服务直接与支付服务通信,存在安全漏洞。我们可以向外部服务注册一个Webhook。原创 2023-09-17 11:45:00 · 10126 阅读 · 0 评论 -
每日一博 - 闲聊Microservice Architecture
典型微服务架构通常包括以下组件:负载均衡器(Load Balancer):用于将传入的流量分发到多个API网关实例以提高可用性。内容分发网络(CDN,Content Delivery Network):CDN是一组地理分布的服务器,用于存储静态内容,以加快内容的交付速度。客户端首先在CDN中查找内容,然后再访问后端服务。API网关(API Gateway):处理传入的请求并将其路由到相关的服务。它与身份提供者和服务发现进行通信。原创 2023-09-16 10:30:00 · 10209 阅读 · 0 评论 -
每日一博 - 闲聊Http状态码
HTTP的响应代码是用于指示服务器对客户端请求的处理结果的三位数字代码。这些代码分为五个类别,分别表示不同的情况和结果。以下是HTTP响应代码的主要类别和一些常见的示例:100 Continue:服务器已经收到请求的一部分,客户端应该继续发送其余部分。101 Switching Protocols:服务器已经理解客户端的请求,但要求切换协议(例如,从HTTP到WebSocket)。200 OK:请求已成功,服务器返回所请求的资源。201 Created:请求已成功,并且服务器创建了新的资源。原创 2023-09-16 08:15:00 · 10406 阅读 · 0 评论 -
每日一博 - 闲聊 API GateWay
API 网关可以将不同的通信协议进行转换,使得前端客户端可以使用不同的通信协议(如HTTP、WebSocket、gRPC等)与后端服务进行通信,而无需直接处理协议转换的复杂性。总之,API 网关在微服务架构中起到了关键的作用,它提供了一种统一的入口点,用于管理、保护、监控和优化API的访问,有助于构建可扩展、高可用性和安全性的分布式应用程序。:API 网关可以对请求和响应进行转换,例如,将数据从一个格式转换为另一个格式(如JSON到XML),或者对请求进行参数验证和修改,以适应后端服务的需求。原创 2023-09-15 19:45:00 · 10349 阅读 · 0 评论 -
每日一博 - 反向代理、API 网关、负载均衡
反向代理、API网关和负载均衡是在网络和服务器架构中用于不同目的的重要组件,它们有不同的功能和应用场景。反向代理(Reverse Proxy)功能:反向代理是一种服务器,它代表客户端与后端服务器通信。客户端将请求发送给反向代理,然后反向代理将请求转发给一个或多个后端服务器,并将响应返回给客户端。反向代理隐藏了后端服务器的真实性质,提供了负载均衡、安全性、缓存等功能。用途:主要用于负载均衡、安全性(隐藏后端服务器的信息和抵御攻击)、缓存、SSL终结等。API网关(API Gateway)功能。原创 2023-09-15 05:45:00 · 10554 阅读 · 0 评论
分享