
【每日一博】
文章平均质量分 82
日常小结,零散知识整理收集
小小工匠
show me the code ,change the world
展开
-
每日一博 - 三高系统架构设计:高性能、高并发、高可用性解析
三高系统架构设计是一场与复杂性对抗的持久战。通过高性能、高并发、高可用性的优化,我们可以构建出稳定、可靠、高效的系统,支撑业务的快速发展。参考这里。原创 2025-01-31 12:58:51 · 3437 阅读 · 0 评论 -
每日一博 - 一致性哈希:分布式系统的数据分配利器
在现代分布式系统中,如何高效地将数据分布在多个服务器上,同时保证扩展性和容错性,是一个至关重要的问题。一致性哈希算法(Consistent Hashing)正是为了解决这些挑战而设计的。今天,我们来深入探讨这个经典的分布式算法,包括它的基本原理、优缺点,以及实际应用中的Java代码实现。原创 2024-11-21 23:33:09 · 3945 阅读 · 0 评论 -
每日一博 - equals 和 hashCode注意事项
在Java中,Object类的equals()和hashCode()方法用于对象的比较和哈希存储。它们的作用和正确实现直接关系到对象的相等性判断、集合的存储和操作效率等。原创 2024-11-17 07:45:00 · 3589 阅读 · 0 评论 -
每日一博 - Java的Shallow Copy和Deep Copy
关于Java的深拷贝和浅拷贝,简单来说就是创建一个和已知对象一模一样的对象。可能日常编码过程中用得不多,但了解深拷贝和浅拷贝的原理,对于Java中的值传递或者引用传递将会有更深的理解。原创 2024-11-16 22:49:50 · 3712 阅读 · 0 评论 -
每日一博 - 复习Https工作原理
TLS是一种安全协议,主要用于在互联网上安全传输数据。上图展示了客户端和服务端之间建立安全连接的步骤。原创 2024-05-30 20:15:00 · 6233 阅读 · 0 评论 -
每日一博 - 闲聊架构设计中的多级缓存设计
从客户端到服务层,缓存的应用广泛而重要。通过合理的缓存设计,能够有效地提高系统的性能并降低延迟。多级缓存设计在微服务架构中扮演着至关重要的角色。在具体应用中,架构师应根据业务需求、系统规模和性能指标来选择合适的缓存策略。在缓存设计中,平衡性能和复杂度是一个重要的考虑因素。原创 2024-05-05 17:06:23 · 5597 阅读 · 0 评论 -
每日一博 - 重新定义JAR中的类或方法
在一些情况下,我们可能需要定制第三方库的行为,但却无法直接修改其源代码或者重新打包JAR文件。这可能是因为第三方库受到了严格的许可协议限制,或者我们无法获取源代码。原创 2024-04-13 10:16:19 · 7358 阅读 · 0 评论 -
每日一博 - 关于日志记录的最佳实践
记录日志是任何应用程序中至关重要的一部分,它可以帮助开发人员了解应用程序的行为、调试问题以及监控系统的健康状态。使用日志框架选择一个成熟、广泛使用且功能丰富的日志框架,如Log4j2、Logback或java.util.logging (JUL)。Log4j2和Logback是目前较为流行的选择,它们提供了丰富的功能和灵活的配置选项。使用SLF4J进行日志抽象SLF4J (Simple Logging Facade for Java) 提供了一种日志框架的抽象,可以在运行时绑定到不同的日志框架。原创 2024-03-31 06:30:00 · 6420 阅读 · 0 评论 -
每日一博 - 大端(Big Endian)和小端(Little Endian)
大端(Big Endian)和小端(Little Endian)是用于描述在存储器中存储多字节数据时字节顺序的两种不同方法。原创 2024-02-20 19:15:00 · 7135 阅读 · 0 评论 -
Java - OpenSSL与国密OpenSSL
国密OpenSSL与普通OpenSSL的主要不同之处在于支持的加密算法。普通OpenSSL主要支持国际通用的加密算法,而国密OpenSSL在保持对这些算法支持的同时,增加了对中国国家密码管理局规定的国产密码算法的支持。这使得国密OpenSSL能够更好地满足中国用户在特定场景下的安全需求。原创 2024-01-26 22:15:00 · 8064 阅读 · 0 评论 -
如何利用静态代理IP优化跨境电商运营
跨境电商,即跨境电子商务,是指在不同关境(国境)之间通过互联网进行的商业交易活动。这种商业模式充分利用了网络的全球化特性,使得买卖双方不受地理位置的限制,通过电子商务平台达成交易,并进行电子支付结算,最后通过跨境物流将商品送达买家手中,完成整个交易过程。在跨境电商活动中,卖家通常位于一国,而买家则位于另一国。交易过程涉及语言、货币、物流、清关等多个复杂的环节。因此,对于参与跨境电商的企业而言,不仅需要有高效的供应链管理能力,还需要具备跨文化交流、国际贸易规则、电子支付和物流等方面的专业知识和技术支持。原创 2024-01-15 19:13:48 · 36593 阅读 · 0 评论 -
每日一博 - 使用APIFOX调测 @RequestBody标注的对象
APIFOX(类似Postman)提供了丰富的功能来支持用户发送包含各种信息的 POST 请求,如文本数据、JSON 或 XML 数据结构、文件等。它不仅可以帮助开发人员测试 API 功能,还可以通过模拟客户端请求,有效帮助开发人员理解客户端如何与 API 交互。POST 请求是 HTTP 协议中用于提交数据的一种方法,例如,当用户在网页表单中填写信息并提交时,通常会使用 POST 请求来发送数据到服务器。原创 2024-01-14 10:24:19 · 8609 阅读 · 0 评论 -
每日一博 - 多租户技术及其三种数据存储策略
多租户技术(Multi-Tenant Technology)是软件即服务(SaaS)架构中的一项核心技术,允许单一软件应用或服务同时服务于多个客户(即“租户”),而不会互相干扰,同时保持数据隔离和安全性。原创 2024-01-06 22:14:10 · 7744 阅读 · 0 评论 -
每日一博 - 动态编译报错 ClassNotFoundException: com.sun.tools.javac.processing.JavacProcessingEnvironment
这个类是Java编译器API的一部分,它是用于访问编译器的内部处理环境的。一看属于度一类,就是 toolls中的类没找到。表示Java运行时环境无法找到名为。原创 2024-01-04 18:06:17 · 8024 阅读 · 0 评论 -
每日一博 - Protobuf vs. Protostuff:性能、易用性和适用场景分析
它是一个用于Java的库,旨在提供比原生Protobuf更简便的API,同时保持与Protobuf的兼容性。由于系统规模较大,性能的微小差异可能会在整个系统中累积,而Protobuf的静态定义和二进制格式在这方面可能更具优势。综上所述,Protostuff可以看作是在保持与Protobuf兼容性的同时,提供了更简便、直观的方式来处理数据序列化的Java库。由于系统规模相对较小,性能差异可能对整体系统影响较小,而Protostuff的动态特性和对POJO的直观支持可以提高开发效率和代码简洁性。原创 2023-12-20 22:15:00 · 8781 阅读 · 0 评论 -
每日一博 - App key和App Secret
App Key和App Secret是API接口调用中常用的身份验证机制,确保只有合法的应用程序可以访问API。原创 2023-12-18 23:30:00 · 9019 阅读 · 0 评论 -
每日一博 - Cache Miss Attack
在缓存管理中,“Cache Miss Attack” 是一个重要的问题. 说白了就是我们常说的【缓存穿透它指的是一种情况,即要获取的数据既不存在于数据库中,也没有被缓存。这会导致每个请求最终都会直接访问数据库,从而破坏了使用缓存的初衷。如果一个恶意用户发起大量针对这样的键的查询,数据库可能会很容易地被过载.更多可以访问我之前写的博客:深入理解分布式技术 - 探究缓存穿透、缓存击穿、缓存雪崩解决方案。原创 2023-12-11 21:15:00 · 8009 阅读 · 0 评论 -
每日一博 - 图解5种Cache策略
缓存是在系统中存储数据的临时存储器,用于提高访问速度。缓存策略定义了如何在缓存和主存之间管理数据。原创 2023-12-10 22:40:02 · 8452 阅读 · 0 评论 -
每日一博 - Code如何被发布到生产环境
关于公司如何将代码发布到生产环境的是一个什么样的流程呢?下面的图示展示了典型的工作流程。步骤 1:流程始于产品负责人根据需求创建用户故事。步骤 2:开发团队从积压工作中挑选用户故事,将它们放入为期两周的开发周期的冲刺中。步骤 3:开发人员将源代码提交到代码仓库 Git。步骤 4:在 Jenkins 中触发构建。源代码必须通过单元测试、代码覆盖率阈值和 SonarQube 中的检查点。步骤 5:一旦构建成功,构建将存储在 artifactory 中。然后构建被部署到开发环境。原创 2023-10-18 20:45:00 · 8706 阅读 · 0 评论 -
每日一博 - 闲聊 Java 中的中断
在 Java 中,中断是一种线程协作方式。比如说,当线程 A 正在运行时,线程 B 可以通过中断线程 A,来指示线程 A 停止它正在执行的操作。但是线程 A 如何响应线程 B 的中断,是需要依靠线程 A 的代码处理逻辑来做决定的。原创 2023-09-29 23:16:10 · 9511 阅读 · 0 评论 -
每日一博 - 防范彩虹表攻击_数据库存储密码的秘密武器
加盐(salting)是一种安全存储数据库中密码并验证其真实性的常见方法,它的主要目的是增加密码的安全性,以防止常见的密码攻击,如彩虹表攻击。对于每个用户的密码,都要生成一个唯一的随机盐值。这个盐值通常是一个随机生成的字符串,它与用户的密码结合在一起用于存储和验证密码。将用户输入的密码与生成的盐值结合在一起。通常是将盐值附加到密码的前面或后面,然后计算哈希值。使用密码哈希函数(如SHA-256或bcrypt)对结合后的密码进行哈希处理。哈希函数将密码和盐值转换成固定长度的散列值。原创 2023-09-17 16:45:00 · 9973 阅读 · 0 评论 -
每日一博 - 常见的数据结构
🔹 链表(List):用于保存Twitter的信息流。🔹 栈(Stack):支持文字编辑器的撤销/重做功能。🔹 队列(Queue):用于保存打印作业,或者在游戏中发送用户操作。🔹 堆(Heap):用于任务调度。🔹 树(Tree):用于保存HTML文档,或者用于人工智能决策。🔹 后缀树(Suffix Tree):用于在文档中搜索字符串。🔹 图(Graph):用于跟踪社交关系,或者进行路径搜索。🔹 R树(R-Tree):用于寻找最近的邻居。原创 2023-09-17 14:30:00 · 10055 阅读 · 0 评论 -
每日一博 - WebHook vs Polling
下面的图表显示了轮询和Webhook之间的比较。假设我们运行一个电子商务网站。客户通过API网关将订单发送到订单服务,然后订单服务将订单传递给支付服务进行支付交易。支付服务然后与外部支付服务提供商(PSP)通信,以完成交易。处理与外部PSP的通信有两种方法。🔹 1. 短轮询在向PSP发送付款请求后,支付服务会不断地询问PSP付款状态。经过多轮后,PSP最终返回状态。不断轮询状态需要支付服务的资源。外部服务直接与支付服务通信,存在安全漏洞。我们可以向外部服务注册一个Webhook。原创 2023-09-17 11:45:00 · 9803 阅读 · 0 评论 -
每日一博 - 闲聊Microservice Architecture
典型微服务架构通常包括以下组件:负载均衡器(Load Balancer):用于将传入的流量分发到多个API网关实例以提高可用性。内容分发网络(CDN,Content Delivery Network):CDN是一组地理分布的服务器,用于存储静态内容,以加快内容的交付速度。客户端首先在CDN中查找内容,然后再访问后端服务。API网关(API Gateway):处理传入的请求并将其路由到相关的服务。它与身份提供者和服务发现进行通信。原创 2023-09-16 10:30:00 · 9810 阅读 · 0 评论 -
每日一博 - 闲聊Http状态码
HTTP的响应代码是用于指示服务器对客户端请求的处理结果的三位数字代码。这些代码分为五个类别,分别表示不同的情况和结果。以下是HTTP响应代码的主要类别和一些常见的示例:100 Continue:服务器已经收到请求的一部分,客户端应该继续发送其余部分。101 Switching Protocols:服务器已经理解客户端的请求,但要求切换协议(例如,从HTTP到WebSocket)。200 OK:请求已成功,服务器返回所请求的资源。201 Created:请求已成功,并且服务器创建了新的资源。原创 2023-09-16 08:15:00 · 10024 阅读 · 0 评论 -
每日一博 - 闲聊 API GateWay
API 网关可以将不同的通信协议进行转换,使得前端客户端可以使用不同的通信协议(如HTTP、WebSocket、gRPC等)与后端服务进行通信,而无需直接处理协议转换的复杂性。总之,API 网关在微服务架构中起到了关键的作用,它提供了一种统一的入口点,用于管理、保护、监控和优化API的访问,有助于构建可扩展、高可用性和安全性的分布式应用程序。:API 网关可以对请求和响应进行转换,例如,将数据从一个格式转换为另一个格式(如JSON到XML),或者对请求进行参数验证和修改,以适应后端服务的需求。原创 2023-09-15 19:45:00 · 9905 阅读 · 0 评论 -
每日一博 - 反向代理、API 网关、负载均衡
反向代理、API网关和负载均衡是在网络和服务器架构中用于不同目的的重要组件,它们有不同的功能和应用场景。反向代理(Reverse Proxy)功能:反向代理是一种服务器,它代表客户端与后端服务器通信。客户端将请求发送给反向代理,然后反向代理将请求转发给一个或多个后端服务器,并将响应返回给客户端。反向代理隐藏了后端服务器的真实性质,提供了负载均衡、安全性、缓存等功能。用途:主要用于负载均衡、安全性(隐藏后端服务器的信息和抵御攻击)、缓存、SSL终结等。API网关(API Gateway)功能。原创 2023-09-15 05:45:00 · 10133 阅读 · 0 评论 -
每日一博 - Token Based Authentication VS HMAC Authentication 实现web安全
Token Based Authentication和HMAC(Hash-based Message Authentication Code)Authentication都是用于身份验证和数据完整性验证的安全机制,但它们有不同的工作方式和适用场景。HMAC(Hash-based Message Authentication Code)是一种用于数据完整性验证和身份验证的加密哈希函数。它基于哈希函数和密钥来创建一个固定长度的认证码,用于验证消息的完整性和真实性。哈希函数将消息和密钥结合起来,生成一个哈希值。原创 2023-09-14 23:15:00 · 10026 阅读 · 0 评论 -
每日一博 - 图解进程(Process)和线程(Thread)区别联系
独立性进程是独立的执行单位。每个进程有自己的独立地址空间、系统资源(如文件描述符、网络连接等)和程序计数器,进程之间不共享这些资源。线程是进程内的子执行单元,共享相同的地址空间和系统资源。多个线程在同一个进程内运行,它们可以互相访问相同的内存区域。切换开销由于进程拥有独立的资源,进程之间的切换开销较大。进程切换通常需要保存和恢复更多的上下文信息。线程切换的开销相对较小,因为线程共享相同的地址空间,切换时只需保存和恢复少量的上下文信息。通信。原创 2023-09-14 21:15:00 · 10231 阅读 · 0 评论 -
每日一博 - 闲聊 Session、cookie、 JWT、token、SSO、 OAuth 2.0
Session(会话)会话是一种服务器端的数据存储机制,用于跟踪用户与网站的交互。每当用户访问网站时,服务器都会创建一个唯一的会话标识,通常是一个会话ID。该标识存储在服务器上,而与用户的浏览器无关。会话用于存储用户的身份验证状态和其他相关信息,以便在用户与网站交互期间保持用户的状态。Cookie 是一小段文本信息,由服务器发送到用户的浏览器,然后由浏览器存储。每当用户请求与同一域名相关联的页面时,浏览器都会将 Cookie 发送回服务器,以便服务器可以识别用户。原创 2023-09-13 23:45:00 · 9985 阅读 · 0 评论 -
每日一博 - 导航Linux文件系统:根目录的子目录层次结构
Linux操作系统的根目录(/)是整个文件系统的起点,它包含了许多重要的子目录,每个子目录都有特定的作用和用途。/bin(二进制文件):这个目录包含了一些基本的系统命令,这些命令可以在系统启动之前被使用。这些命令通常不依赖于其他文件系统,因此即使在某些文件系统没有挂载的情况下,系统仍然可以正常工作。/boot:包含了Linux系统启动时所需的内核文件和引导加载程序配置文件。这些文件在系统引导时非常关键。/dev(设备):在Linux中,一切都被视为文件。原创 2023-09-13 20:15:00 · 10271 阅读 · 0 评论 -
每日一博 - Stack OveFlow Arch In Reality
Stack Overflow 是一个与程序相关的 IT 技术问答网站,其技术架构主要采用微软的技术栈,包括 C#、ASP.NET、SQL Server 等。此外,Stack Overflow 还使用了一些开源框架,例如 HAProxy、Redis 等。具体来说,Stack Overflow 的技术实现包括以下几个部分:数据库:Stack Overflow 使用 SQL Server 作为其主要数据库,存储用户、问题、答案等相关信息。原创 2023-09-13 06:30:00 · 9937 阅读 · 0 评论 -
每日一博 - 闲聊SQL Query Execution Order
在这个阶段,MySQL会分析查询的各种执行计划,并选择最优的执行计划。总的来说,这些子句在查询执行过程中的不同阶段起作用,它们的正确使用可以确保查询返回正确的结果并提高性能。然而,不正确的使用或复杂的查询可能导致性能下降,因此在编写查询时需要谨慎考虑这些子句的使用。需要注意的是,查询的执行顺序可能会因查询的复杂性、索引的存在与否、表的大小以及其他因素而有所不同。执行的顺序和方式取决于查询的具体要求和执行计划。是SQL查询中的关键子句,它们在查询的执行过程中起着不同的作用,可以影响查询的结果集和性能。原创 2023-09-12 21:45:00 · 10159 阅读 · 0 评论 -
每日一博 - 闲聊经典微服务架构
典型的微服务架构是一种软件架构模式,其中一个应用程序被拆分成多个小型、相对独立的服务单元,每个服务单元都专注于执行特定的业务功能。这些服务单元可以独立开发、部署和扩展,通常通过网络通信协议进行互相通信。以下是典型微服务架构的关键特征:服务拆分:应用程序被分解为多个微服务,每个微服务负责一个特定的业务功能或领域。例如,一个电子商务应用可能有订单服务、支付服务、用户服务等。独立开发和部署:每个微服务都可以由独立的团队进行开发、测试和部署。这使得团队能够以更快的速度迭代和发布新功能。原创 2023-09-12 23:45:00 · 10205 阅读 · 0 评论 -
每日一博 - 闲聊Https工作原理
在建立HTTPS连接时,需要执行TLS握手过程,这涉及多个消息的交换,包括客户端Hello、服务器Hello和证书交换等。HTTPS通常会引入一些性能开销,但具体性能开销取决于多个因素,包括服务器硬件、TLS协议版本、加密算法等。:不同的加密套件具有不同的性能开销。总的来说,HTTPS通常会引入一些性能开销,但这些开销通常可以通过优化服务器配置、使用硬件加速和选择适当的加密套件来降低。客户端验证证书的有效性。- 现在,客户端和服务器都拥有相同的会话密钥(对称加密),加密的数据在安全的双向通道中传输。原创 2023-09-12 20:15:00 · 10418 阅读 · 0 评论 -
每日一博 - CRUD system VS Event sourcing design
CRUD 系统和事件溯源设计是两种不同的软件架构方法,用于处理数据和应用程序的状态。如果您需要跟踪和审计状态的历史变化,或者希望实现高度可伸缩的事件驱动应用程序,那么事件溯源设计可能更适合。如果您需要处理实时数据操作,并强调当前状态的强一致性,那么CRUD系统可能更适合。通常,复杂的应用程序可能会结合两者,根据不同的数据和业务需求使用不同的架构模式。在选择使用哪种设计取决于项目需求和性质。原创 2023-09-12 06:15:00 · 10274 阅读 · 0 评论 -
每日一博 - 漫谈流控小妙招
限流作为一种流量控制策略 (通常会和熔断、降级搭配在一起使用,来避免瞬时的大量请求对系统造成负荷,来达到保护服务平稳运行的目的)旨在维护系统的稳定性。然而,限流也带来了平衡用户满意度与系统稳定性之间的挑战。限流策略的核心意义:限流是一种管理流量的方法,通过设置最大请求率或并发连接数,以防止系统被过多请求压垮。随着数字服务的普及,限流变得尤为重要,因为高流量可能导致系统崩溃,影响整体可用性。限流与用户体验的平衡:限流策略的挑战之一是如何在保持系统稳定的同时提供令人满意的用户体验。原创 2023-09-01 21:15:00 · 10592 阅读 · 0 评论 -
每日一博 - 闲聊云原生和容器编排
通过标准化的YAML、配置中心、可视化后台工具等,可以屏蔽很多关于容器、编排本身的概念,大大降低用户的认知成本,降低容器管理的复杂性,从单机到大规模集群管理,编排工具大大减轻了开发/运维人员的工作量。对于微服务实例节点比较少的环境,不用编排工具也可控,当开发/运维人员面临的是成百上千,甚至上万的微服务实例时,如果没有编排工具的管理,极有可能造成实例节点的漏发或误发。因此,云原生和容器编排在实际应用中往往紧密结合在一起,共同推动应用程序在云环境中的快速发展和迭代。,它鼓励应用程序在云环境中原生部署和运行。原创 2023-08-27 01:15:00 · 11397 阅读 · 0 评论 -
每日一博 - MPP(Massively Parallel Processing,大规模并行处理)架构
MPP(Massively Parallel Processing,大规模并行处理)架构是一种常见的数据库系统架构,主要用于提高数据处理性能。它通过将多个单机数据库节点组成一个集群,实现数据的并行处理。在 MPP 架构中,MPP采用非共享架构(Share Nothing), 每个节点都拥有独立的磁盘存储和内存系统,它们在计算过程中独立运行,不需要关心整个集群的状态,也不关心其他节点存储的数据信息。节点之间通过专用网络或商业通用网络连接,当需要使用其他节点的数据时,通过网络进行数据传输和协同计算。原创 2023-08-18 21:32:58 · 11911 阅读 · 0 评论 -
每日一博 - Excel导入导出的那点事儿
这种形式的出现是为了突破HSSFWorkbook的65535行局限,是为了针对Excel2007版本的1048576行,16384列,最多可以导出104w条数据;因为所创建的book,Sheet,row,cell等在写入到Excel之前,都是存放在内存中的。POI3.8之后的版本才有的,它可以操作Excel2007以后的所有版本Excel,扩展名是.xlsx。2、当数据量查过7w并且导出的Excel中不牵扯对Excel的样式,公式,格式等操作的情况下,推荐使用。它是POI版本中最常用的方式。原创 2023-08-01 20:34:14 · 11887 阅读 · 0 评论