![](https://img-blog.csdnimg.cn/20210720085535207.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
【每日一博】
文章平均质量分 81
日常小结,零散知识整理收集
小小工匠
show me the code ,change the world
展开
-
每日一博 - 复习Https工作原理
TLS是一种安全协议,主要用于在互联网上安全传输数据。上图展示了客户端和服务端之间建立安全连接的步骤。原创 2024-05-30 20:15:00 · 1612 阅读 · 0 评论 -
每日一博 - 闲聊架构设计中的多级缓存设计
从客户端到服务层,缓存的应用广泛而重要。通过合理的缓存设计,能够有效地提高系统的性能并降低延迟。多级缓存设计在微服务架构中扮演着至关重要的角色。在具体应用中,架构师应根据业务需求、系统规模和性能指标来选择合适的缓存策略。在缓存设计中,平衡性能和复杂度是一个重要的考虑因素。原创 2024-05-05 17:06:23 · 1060 阅读 · 0 评论 -
每日一博 - 重新定义JAR中的类或方法
在一些情况下,我们可能需要定制第三方库的行为,但却无法直接修改其源代码或者重新打包JAR文件。这可能是因为第三方库受到了严格的许可协议限制,或者我们无法获取源代码。原创 2024-04-13 10:16:19 · 2328 阅读 · 0 评论 -
每日一博 - 关于日志记录的最佳实践
记录日志是任何应用程序中至关重要的一部分,它可以帮助开发人员了解应用程序的行为、调试问题以及监控系统的健康状态。使用日志框架选择一个成熟、广泛使用且功能丰富的日志框架,如Log4j2、Logback或java.util.logging (JUL)。Log4j2和Logback是目前较为流行的选择,它们提供了丰富的功能和灵活的配置选项。使用SLF4J进行日志抽象SLF4J (Simple Logging Facade for Java) 提供了一种日志框架的抽象,可以在运行时绑定到不同的日志框架。原创 2024-03-31 06:30:00 · 1666 阅读 · 0 评论 -
每日一博 - 大端(Big Endian)和小端(Little Endian)
大端(Big Endian)和小端(Little Endian)是用于描述在存储器中存储多字节数据时字节顺序的两种不同方法。原创 2024-02-20 19:15:00 · 2245 阅读 · 0 评论 -
Java - OpenSSL与国密OpenSSL
国密OpenSSL与普通OpenSSL的主要不同之处在于支持的加密算法。普通OpenSSL主要支持国际通用的加密算法,而国密OpenSSL在保持对这些算法支持的同时,增加了对中国国家密码管理局规定的国产密码算法的支持。这使得国密OpenSSL能够更好地满足中国用户在特定场景下的安全需求。原创 2024-01-26 22:15:00 · 3427 阅读 · 0 评论 -
如何利用静态代理IP优化跨境电商运营
跨境电商,即跨境电子商务,是指在不同关境(国境)之间通过互联网进行的商业交易活动。这种商业模式充分利用了网络的全球化特性,使得买卖双方不受地理位置的限制,通过电子商务平台达成交易,并进行电子支付结算,最后通过跨境物流将商品送达买家手中,完成整个交易过程。在跨境电商活动中,卖家通常位于一国,而买家则位于另一国。交易过程涉及语言、货币、物流、清关等多个复杂的环节。因此,对于参与跨境电商的企业而言,不仅需要有高效的供应链管理能力,还需要具备跨文化交流、国际贸易规则、电子支付和物流等方面的专业知识和技术支持。原创 2024-01-15 19:13:48 · 31845 阅读 · 0 评论 -
每日一博 - 使用APIFOX调测 @RequestBody标注的对象
APIFOX(类似Postman)提供了丰富的功能来支持用户发送包含各种信息的 POST 请求,如文本数据、JSON 或 XML 数据结构、文件等。它不仅可以帮助开发人员测试 API 功能,还可以通过模拟客户端请求,有效帮助开发人员理解客户端如何与 API 交互。POST 请求是 HTTP 协议中用于提交数据的一种方法,例如,当用户在网页表单中填写信息并提交时,通常会使用 POST 请求来发送数据到服务器。原创 2024-01-14 10:24:19 · 3306 阅读 · 0 评论 -
每日一博 - 多租户技术及其三种数据存储策略
多租户技术(Multi-Tenant Technology)是软件即服务(SaaS)架构中的一项核心技术,允许单一软件应用或服务同时服务于多个客户(即“租户”),而不会互相干扰,同时保持数据隔离和安全性。原创 2024-01-06 22:14:10 · 3163 阅读 · 0 评论 -
每日一博 - 动态编译报错 ClassNotFoundException: com.sun.tools.javac.processing.JavacProcessingEnvironment
这个类是Java编译器API的一部分,它是用于访问编译器的内部处理环境的。一看属于度一类,就是 toolls中的类没找到。表示Java运行时环境无法找到名为。原创 2024-01-04 18:06:17 · 3445 阅读 · 0 评论 -
每日一博 - Protobuf vs. Protostuff:性能、易用性和适用场景分析
它是一个用于Java的库,旨在提供比原生Protobuf更简便的API,同时保持与Protobuf的兼容性。由于系统规模较大,性能的微小差异可能会在整个系统中累积,而Protobuf的静态定义和二进制格式在这方面可能更具优势。综上所述,Protostuff可以看作是在保持与Protobuf兼容性的同时,提供了更简便、直观的方式来处理数据序列化的Java库。由于系统规模相对较小,性能差异可能对整体系统影响较小,而Protostuff的动态特性和对POJO的直观支持可以提高开发效率和代码简洁性。原创 2023-12-20 22:15:00 · 3788 阅读 · 0 评论 -
每日一博 - App key和App Secret
App Key和App Secret是API接口调用中常用的身份验证机制,确保只有合法的应用程序可以访问API。原创 2023-12-18 23:30:00 · 3334 阅读 · 0 评论 -
每日一博 - Cache Miss Attack
在缓存管理中,“Cache Miss Attack” 是一个重要的问题. 说白了就是我们常说的【缓存穿透它指的是一种情况,即要获取的数据既不存在于数据库中,也没有被缓存。这会导致每个请求最终都会直接访问数据库,从而破坏了使用缓存的初衷。如果一个恶意用户发起大量针对这样的键的查询,数据库可能会很容易地被过载.更多可以访问我之前写的博客:深入理解分布式技术 - 探究缓存穿透、缓存击穿、缓存雪崩解决方案。原创 2023-12-11 21:15:00 · 3582 阅读 · 0 评论 -
每日一博 - 图解5种Cache策略
缓存是在系统中存储数据的临时存储器,用于提高访问速度。缓存策略定义了如何在缓存和主存之间管理数据。原创 2023-12-10 22:40:02 · 3820 阅读 · 0 评论 -
每日一博 - Code如何被发布到生产环境
关于公司如何将代码发布到生产环境的是一个什么样的流程呢?下面的图示展示了典型的工作流程。步骤 1:流程始于产品负责人根据需求创建用户故事。步骤 2:开发团队从积压工作中挑选用户故事,将它们放入为期两周的开发周期的冲刺中。步骤 3:开发人员将源代码提交到代码仓库 Git。步骤 4:在 Jenkins 中触发构建。源代码必须通过单元测试、代码覆盖率阈值和 SonarQube 中的检查点。步骤 5:一旦构建成功,构建将存储在 artifactory 中。然后构建被部署到开发环境。原创 2023-10-18 20:45:00 · 4204 阅读 · 0 评论 -
每日一博 - 闲聊 Java 中的中断
在 Java 中,中断是一种线程协作方式。比如说,当线程 A 正在运行时,线程 B 可以通过中断线程 A,来指示线程 A 停止它正在执行的操作。但是线程 A 如何响应线程 B 的中断,是需要依靠线程 A 的代码处理逻辑来做决定的。原创 2023-09-29 23:16:10 · 5056 阅读 · 0 评论 -
每日一博 - 防范彩虹表攻击_数据库存储密码的秘密武器
加盐(salting)是一种安全存储数据库中密码并验证其真实性的常见方法,它的主要目的是增加密码的安全性,以防止常见的密码攻击,如彩虹表攻击。对于每个用户的密码,都要生成一个唯一的随机盐值。这个盐值通常是一个随机生成的字符串,它与用户的密码结合在一起用于存储和验证密码。将用户输入的密码与生成的盐值结合在一起。通常是将盐值附加到密码的前面或后面,然后计算哈希值。使用密码哈希函数(如SHA-256或bcrypt)对结合后的密码进行哈希处理。哈希函数将密码和盐值转换成固定长度的散列值。原创 2023-09-17 16:45:00 · 5515 阅读 · 0 评论 -
每日一博 - 常见的数据结构
🔹 链表(List):用于保存Twitter的信息流。🔹 栈(Stack):支持文字编辑器的撤销/重做功能。🔹 队列(Queue):用于保存打印作业,或者在游戏中发送用户操作。🔹 堆(Heap):用于任务调度。🔹 树(Tree):用于保存HTML文档,或者用于人工智能决策。🔹 后缀树(Suffix Tree):用于在文档中搜索字符串。🔹 图(Graph):用于跟踪社交关系,或者进行路径搜索。🔹 R树(R-Tree):用于寻找最近的邻居。原创 2023-09-17 14:30:00 · 5517 阅读 · 0 评论 -
每日一博 - WebHook vs Polling
下面的图表显示了轮询和Webhook之间的比较。假设我们运行一个电子商务网站。客户通过API网关将订单发送到订单服务,然后订单服务将订单传递给支付服务进行支付交易。支付服务然后与外部支付服务提供商(PSP)通信,以完成交易。处理与外部PSP的通信有两种方法。🔹 1. 短轮询在向PSP发送付款请求后,支付服务会不断地询问PSP付款状态。经过多轮后,PSP最终返回状态。不断轮询状态需要支付服务的资源。外部服务直接与支付服务通信,存在安全漏洞。我们可以向外部服务注册一个Webhook。原创 2023-09-17 11:45:00 · 5355 阅读 · 0 评论 -
每日一博 - 闲聊Microservice Architecture
典型微服务架构通常包括以下组件:负载均衡器(Load Balancer):用于将传入的流量分发到多个API网关实例以提高可用性。内容分发网络(CDN,Content Delivery Network):CDN是一组地理分布的服务器,用于存储静态内容,以加快内容的交付速度。客户端首先在CDN中查找内容,然后再访问后端服务。API网关(API Gateway):处理传入的请求并将其路由到相关的服务。它与身份提供者和服务发现进行通信。原创 2023-09-16 10:30:00 · 5397 阅读 · 0 评论 -
每日一博 - 闲聊Http状态码
HTTP的响应代码是用于指示服务器对客户端请求的处理结果的三位数字代码。这些代码分为五个类别,分别表示不同的情况和结果。以下是HTTP响应代码的主要类别和一些常见的示例:100 Continue:服务器已经收到请求的一部分,客户端应该继续发送其余部分。101 Switching Protocols:服务器已经理解客户端的请求,但要求切换协议(例如,从HTTP到WebSocket)。200 OK:请求已成功,服务器返回所请求的资源。201 Created:请求已成功,并且服务器创建了新的资源。原创 2023-09-16 08:15:00 · 5434 阅读 · 0 评论 -
每日一博 - 闲聊 API GateWay
API 网关可以将不同的通信协议进行转换,使得前端客户端可以使用不同的通信协议(如HTTP、WebSocket、gRPC等)与后端服务进行通信,而无需直接处理协议转换的复杂性。总之,API 网关在微服务架构中起到了关键的作用,它提供了一种统一的入口点,用于管理、保护、监控和优化API的访问,有助于构建可扩展、高可用性和安全性的分布式应用程序。:API 网关可以对请求和响应进行转换,例如,将数据从一个格式转换为另一个格式(如JSON到XML),或者对请求进行参数验证和修改,以适应后端服务的需求。原创 2023-09-15 19:45:00 · 5437 阅读 · 0 评论 -
每日一博 - 反向代理、API 网关、负载均衡
反向代理、API网关和负载均衡是在网络和服务器架构中用于不同目的的重要组件,它们有不同的功能和应用场景。反向代理(Reverse Proxy)功能:反向代理是一种服务器,它代表客户端与后端服务器通信。客户端将请求发送给反向代理,然后反向代理将请求转发给一个或多个后端服务器,并将响应返回给客户端。反向代理隐藏了后端服务器的真实性质,提供了负载均衡、安全性、缓存等功能。用途:主要用于负载均衡、安全性(隐藏后端服务器的信息和抵御攻击)、缓存、SSL终结等。API网关(API Gateway)功能。原创 2023-09-15 05:45:00 · 5533 阅读 · 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 · 5606 阅读 · 0 评论 -
每日一博 - 图解进程(Process)和线程(Thread)区别联系
独立性进程是独立的执行单位。每个进程有自己的独立地址空间、系统资源(如文件描述符、网络连接等)和程序计数器,进程之间不共享这些资源。线程是进程内的子执行单元,共享相同的地址空间和系统资源。多个线程在同一个进程内运行,它们可以互相访问相同的内存区域。切换开销由于进程拥有独立的资源,进程之间的切换开销较大。进程切换通常需要保存和恢复更多的上下文信息。线程切换的开销相对较小,因为线程共享相同的地址空间,切换时只需保存和恢复少量的上下文信息。通信。原创 2023-09-14 21:15:00 · 5699 阅读 · 0 评论 -
每日一博 - 闲聊 Session、cookie、 JWT、token、SSO、 OAuth 2.0
Session(会话)会话是一种服务器端的数据存储机制,用于跟踪用户与网站的交互。每当用户访问网站时,服务器都会创建一个唯一的会话标识,通常是一个会话ID。该标识存储在服务器上,而与用户的浏览器无关。会话用于存储用户的身份验证状态和其他相关信息,以便在用户与网站交互期间保持用户的状态。Cookie 是一小段文本信息,由服务器发送到用户的浏览器,然后由浏览器存储。每当用户请求与同一域名相关联的页面时,浏览器都会将 Cookie 发送回服务器,以便服务器可以识别用户。原创 2023-09-13 23:45:00 · 5515 阅读 · 0 评论 -
每日一博 - 导航Linux文件系统:根目录的子目录层次结构
Linux操作系统的根目录(/)是整个文件系统的起点,它包含了许多重要的子目录,每个子目录都有特定的作用和用途。/bin(二进制文件):这个目录包含了一些基本的系统命令,这些命令可以在系统启动之前被使用。这些命令通常不依赖于其他文件系统,因此即使在某些文件系统没有挂载的情况下,系统仍然可以正常工作。/boot:包含了Linux系统启动时所需的内核文件和引导加载程序配置文件。这些文件在系统引导时非常关键。/dev(设备):在Linux中,一切都被视为文件。原创 2023-09-13 20:15:00 · 5685 阅读 · 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 · 5516 阅读 · 0 评论 -
每日一博 - 闲聊SQL Query Execution Order
在这个阶段,MySQL会分析查询的各种执行计划,并选择最优的执行计划。总的来说,这些子句在查询执行过程中的不同阶段起作用,它们的正确使用可以确保查询返回正确的结果并提高性能。然而,不正确的使用或复杂的查询可能导致性能下降,因此在编写查询时需要谨慎考虑这些子句的使用。需要注意的是,查询的执行顺序可能会因查询的复杂性、索引的存在与否、表的大小以及其他因素而有所不同。执行的顺序和方式取决于查询的具体要求和执行计划。是SQL查询中的关键子句,它们在查询的执行过程中起着不同的作用,可以影响查询的结果集和性能。原创 2023-09-12 21:45:00 · 5568 阅读 · 0 评论 -
每日一博 - 闲聊经典微服务架构
典型的微服务架构是一种软件架构模式,其中一个应用程序被拆分成多个小型、相对独立的服务单元,每个服务单元都专注于执行特定的业务功能。这些服务单元可以独立开发、部署和扩展,通常通过网络通信协议进行互相通信。以下是典型微服务架构的关键特征:服务拆分:应用程序被分解为多个微服务,每个微服务负责一个特定的业务功能或领域。例如,一个电子商务应用可能有订单服务、支付服务、用户服务等。独立开发和部署:每个微服务都可以由独立的团队进行开发、测试和部署。这使得团队能够以更快的速度迭代和发布新功能。原创 2023-09-12 23:45:00 · 5667 阅读 · 0 评论 -
每日一博 - 闲聊Https工作原理
在建立HTTPS连接时,需要执行TLS握手过程,这涉及多个消息的交换,包括客户端Hello、服务器Hello和证书交换等。HTTPS通常会引入一些性能开销,但具体性能开销取决于多个因素,包括服务器硬件、TLS协议版本、加密算法等。:不同的加密套件具有不同的性能开销。总的来说,HTTPS通常会引入一些性能开销,但这些开销通常可以通过优化服务器配置、使用硬件加速和选择适当的加密套件来降低。客户端验证证书的有效性。- 现在,客户端和服务器都拥有相同的会话密钥(对称加密),加密的数据在安全的双向通道中传输。原创 2023-09-12 20:15:00 · 5907 阅读 · 0 评论 -
每日一博 - CRUD system VS Event sourcing design
CRUD 系统和事件溯源设计是两种不同的软件架构方法,用于处理数据和应用程序的状态。如果您需要跟踪和审计状态的历史变化,或者希望实现高度可伸缩的事件驱动应用程序,那么事件溯源设计可能更适合。如果您需要处理实时数据操作,并强调当前状态的强一致性,那么CRUD系统可能更适合。通常,复杂的应用程序可能会结合两者,根据不同的数据和业务需求使用不同的架构模式。在选择使用哪种设计取决于项目需求和性质。原创 2023-09-12 06:15:00 · 5740 阅读 · 0 评论 -
每日一博 - 漫谈流控小妙招
限流作为一种流量控制策略 (通常会和熔断、降级搭配在一起使用,来避免瞬时的大量请求对系统造成负荷,来达到保护服务平稳运行的目的)旨在维护系统的稳定性。然而,限流也带来了平衡用户满意度与系统稳定性之间的挑战。限流策略的核心意义:限流是一种管理流量的方法,通过设置最大请求率或并发连接数,以防止系统被过多请求压垮。随着数字服务的普及,限流变得尤为重要,因为高流量可能导致系统崩溃,影响整体可用性。限流与用户体验的平衡:限流策略的挑战之一是如何在保持系统稳定的同时提供令人满意的用户体验。原创 2023-09-01 21:15:00 · 6065 阅读 · 0 评论 -
每日一博 - 闲聊云原生和容器编排
通过标准化的YAML、配置中心、可视化后台工具等,可以屏蔽很多关于容器、编排本身的概念,大大降低用户的认知成本,降低容器管理的复杂性,从单机到大规模集群管理,编排工具大大减轻了开发/运维人员的工作量。对于微服务实例节点比较少的环境,不用编排工具也可控,当开发/运维人员面临的是成百上千,甚至上万的微服务实例时,如果没有编排工具的管理,极有可能造成实例节点的漏发或误发。因此,云原生和容器编排在实际应用中往往紧密结合在一起,共同推动应用程序在云环境中的快速发展和迭代。,它鼓励应用程序在云环境中原生部署和运行。原创 2023-08-27 01:15:00 · 6747 阅读 · 0 评论 -
每日一博 - MPP(Massively Parallel Processing,大规模并行处理)架构
MPP(Massively Parallel Processing,大规模并行处理)架构是一种常见的数据库系统架构,主要用于提高数据处理性能。它通过将多个单机数据库节点组成一个集群,实现数据的并行处理。在 MPP 架构中,MPP采用非共享架构(Share Nothing), 每个节点都拥有独立的磁盘存储和内存系统,它们在计算过程中独立运行,不需要关心整个集群的状态,也不关心其他节点存储的数据信息。节点之间通过专用网络或商业通用网络连接,当需要使用其他节点的数据时,通过网络进行数据传输和协同计算。原创 2023-08-18 21:32:58 · 7267 阅读 · 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 · 7212 阅读 · 0 评论 -
每日一博 - How To Improve API Performance
将经常访问的数据存储在缓存中,客户端在访问数据时首先查询缓存。例如 Redis 这样的缓存系统将数据存储在内存中,因此数据访问速度相较于直接访问数据库要快很多。在访问数据库时,我们通常需要从数据库中读取数据。异步记录日志先将日志信息存储在内存中的无锁缓冲区,然后立即返回。当查询结果过多时,将结果分为多个页面进行显示,可以有效地提高系统的响应速度。这样,系统可以逐步向客户端返回结果,使得用户能够更快地查看和处理数据。运用 gzip 等方法对请求和响应进行压缩,从而减小传输数据的体积,提高上传和下载速度。原创 2023-07-29 17:03:02 · 7442 阅读 · 0 评论 -
每日一博 - 探索代码世界的地图 code iris
groovy and java code analysisexperimental kotlin code analysisvisualize modules and their dependenciesvisualize classes and their dependenciesvisualize packages and their classesfiltering of classes and packageshighlighting of classes and packages原创 2023-07-08 10:16:01 · 9641 阅读 · 0 评论 -
每日一博 - Server-Sent Events推送技术
SSE(Server-Sent Events)是一种基于HTTP的服务器推送技术,它允许服务器实时地向客户端推送数据。相比于传统的轮询或长轮询技术,SSE具有更低的延迟、更高的效率和更低的资源消耗。SSE最早由HTML5规范引入,目前已被广泛应用于各种Web应用中,如即时通讯、股票行情、新闻资讯等。SSE的工作原理非常简单,客户端通过与服务器建立一条长连接(即HTTP连接不会关闭),服务器可以在任意时刻向客户端推送数据,而客户端则通过监听这个连接上的事件来获取数据。原创 2023-06-05 06:51:16 · 13181 阅读 · 0 评论 -
每日一博 - 对称加密算法 vs 非对称加密算法
在信息安全领域中,加密算法是保护数据安全的重要手段。对称加密算法:使用相同的密钥进行加密和解密,如DES、AES等。非对称加密算法:使用公钥和私钥进行加密和解密,如RSA、ECC等。哈希函数:将任意长度的消息压缩成固定长度的摘要,如MD5、SHA-1、SHA-256等。数字签名算法:用于验证消息的真实性和完整性,如RSA数字签名、DSA等。密码协议:用于建立安全通信信道,如SSL/TLS、SSH等。以上是一些常见的加密算法分类,不同的加密算法适用于不同的场景和需求。原创 2023-05-28 20:58:47 · 14226 阅读 · 0 评论