自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小工匠

show me the code ,change the world

  • 博客(1833)
  • 资源 (12)
  • 收藏
  • 关注

原创 小工匠聊架构文章一览【不间断持续更新】

文章目录超高并发设计技术杂谈超高并发设计小工匠聊架构-超高并发秒杀系统设计 01_总体原则和架构演进小工匠聊架构-超高并发秒杀系统设计 02_数据的动静分离小工匠聊架构-超高并发秒杀系统设计 03_热点数据的处理小工匠聊架构-超高并发秒杀系统设计 04_流量削峰设计小工匠聊架构-超高并发秒杀系统设计 05_服务端性能优化小工匠聊架构-超高并发秒杀系统设计 06_数据一致性小工匠聊架构-超高并发秒杀系统设计 07_Plan B 的设计技术杂谈小工匠聊架构-写给研发工程师的全链路压测小

2020-11-12 00:01:55 74786 8

原创 Spring Boot - 利用MDC(Mapped Diagnostic Context)实现轻量级同步/异步日志追踪

MDC(Mapped Diagnostic Context)是一个在日志框架中常用的概念,主要用于在多线程环境中关联和传递一些上下文信息,以便在日志输出中包含这些信息,从而实现更好的日志记录和调试。在Java中,常见的日志框架如Log4j、Logback和Log4j2都提供了对MDC的支持。MDC允许在多线程环境中将上下文信息与线程相关联。可以在应用程序的不同部分设置一些上下文信息,并确保在同一线程中的后续日志记录中能够访问到这些信息。MDC特别适用于跟踪请求或会话相关的信息,如请求ID、会话ID等。

2024-04-14 14:01:11 1102

原创 每日一博 - 重新定义JAR中的类或方法

在一些情况下,我们可能需要定制第三方库的行为,但却无法直接修改其源代码或者重新打包JAR文件。这可能是因为第三方库受到了严格的许可协议限制,或者我们无法获取源代码。

2024-04-13 10:16:19 1307

原创 每日一博 - 关于日志记录的最佳实践

记录日志是任何应用程序中至关重要的一部分,它可以帮助开发人员了解应用程序的行为、调试问题以及监控系统的健康状态。使用日志框架选择一个成熟、广泛使用且功能丰富的日志框架,如Log4j2、Logback或java.util.logging (JUL)。Log4j2和Logback是目前较为流行的选择,它们提供了丰富的功能和灵活的配置选项。使用SLF4J进行日志抽象SLF4J (Simple Logging Facade for Java) 提供了一种日志框架的抽象,可以在运行时绑定到不同的日志框架。

2024-03-31 06:30:00 988

原创 Netty剖析 - 掌握Netty 整体架构脉络

除了主流协议外,Netty还支持开发者自定义应用层协议。这意味着开发者可以根据自己的需求定义和实现特定的应用层协议,并在Netty的支持下进行编解码,从而实现定制化的网络通信。

2024-03-26 06:15:00 932 1

原创 Netty剖析 - Why Netty

通过使用对象池,Netty 可以重复利用已经创建的对象,减少了对象创建和销毁的次数,从而降低了垃圾回收的频率,提高了系统的性能和稳定性。其底层的网络组件经过精心设计和优化,具有出色的性能和稳定性。主线程和从线程之间的工作分配清晰,避免了线程间的竞争和同步问题,同时有效利用了多核处理器的性能优势,从而实现了高效的事件驱动和并发处理。Netty 通过对象池复用技术和零拷贝技术的应用,有效降低了 JVM 垃圾回收的压力,减少了资源的消耗,从而实现了更低的资源消耗,在网络编程中得到了广泛的应用和青睐。

2024-03-25 05:45:00 997

原创 Netty - 五种 I/O 多路复用机制 select、poll、epoll、kqueue、iocp(windows) 对比

综上所述,select 和 poll 在大规模连接场景下性能较差,而 epoll 和 kqueue 则具有更好的性能和扩展性,其中 epoll 更适用于 Linux 平台,而 kqueue 则适用于 BSD 系统。而对于 Windows 平台,IOCP 是首选的高性能多路复用技术。这里我将对比一下常见的多路复用技术:select、poll、epoll、kqueue 和 IOCP(Windows)。

2024-03-24 22:19:54 738

原创 Redis - 高并发场景下的Redis最佳实践_翻过6座大山

在高并发系统中,Redis缓存通常被视为数据在存入数据库之前的重要中间层,其设计专注于缓存功能,性能往往比传统数据库高出一个数量级以上。以Redis单实例而言,其读取并发能力可达到10万QPS(官方理论值)。然而,正因为Redis的高并发处理能力,它在系统链路中扮演着至关重要的角色。一旦系统遭遇高峰期,若我们在Redis处理方面稍有疏忽,可能会导致整个系统瘫痪。因此,我们接下来将探讨在复杂、高并发的互联网系统中,缓存可能面临的一系列挑战,以及我们可以采取的措施来应对这些挑战。

2024-03-24 17:05:52 1797

原创 Netty Review - 探究Netty优雅退出原理和源码解读

在实际项目中,Netty作为高性能的异步NIO通信框架,承担着各种协议的接入、解析和调度等任务,例如在RPC和分布式服务框架中,Netty常常被用作内部私有协议的基础通信框架。因此,在应用进程优雅退出时,Netty作为通信框架也需要进行优雅退出,以保证系统的稳定性和可靠性。优雅退出时,需要尽快释放NIO线程和句柄等底层资源,以确保资源的及时回收和释放,避免资源泄漏和性能问题。如果使用flush进行批量消息发送,需要确保将发送队列中积压的待发送消息发送完成,避免数据丢失和通信中断。

2024-03-10 23:43:32 1950

原创 Java - 探究Java优雅退出的两种机制

在Linux上通过方式强制终止进程的副作用,这种方式虽然简单高效,但也会带来一些问题,特别是对于应用软件而言。这些问题包括但不限于:数据丢失:由于缓存中的数据尚未持久化到磁盘中,强制终止进程可能导致数据丢失,尤其是对于数据库等需要持久化数据的应用。文件损坏:如果进程正在进行文件写操作,但尚未完成,突然退出可能导致文件损坏,进而影响数据完整性。请求丢失:如果线程的消息队列中有未处理的请求消息,强制终止进程可能导致请求消息丢失,进而影响系统的正常运行。

2024-03-10 15:43:14 1383

原创 Netty Review - 探究Netty服务端主程序无异常退出的背后机制

在使用Netty进行服务端程序开发时,初学者可能会遇到各种问题,其中之一就是服务端意外退出的问题。这种问题可能会出现在程序启动后,没有发生任何异常的情况下,突然退出。导致这种情况发生的原因可能是代码中存在一些隐含的问题。接下来我们通过一个案例来演示一下这个问题。

2024-03-09 23:11:34 1500

原创 加密与安全_PGP、OpenPGP和GPG加密通信协议

PGP (Pretty Good Privacy) 是一种加密通信协议,用于保护电子邮件和文件的安全性和隐私。它通过使用加密、数字签名和压缩技术来确保数据的保密性、完整性和可验证性。GP最初由麻省理工学院的Nick embrace和Eric Hughes开发,后来由Phil Zimmermann进一步发展。它使用公钥加密和私钥解密的机制,以确保只有信息的接收者才能解密和阅读邮件内容。PGP的主要优点是它易于使用,并能在大多数流行的电子邮件客户端中集成。然而,随着更高级的加密技术和标准(如OpenPGP和GP

2024-03-09 04:11:50 1736 1

原创 加密与安全_使用Java代码操作RSA算法生成的密钥对

在数字化时代,网络通信的安全性是必须关注的重要问题之一。非对称加密算法作为现代密码学的重要组成部分,为保护通信的隐私提供了一种可靠的解决方案。非对称加密算法,又称为公钥加密算法,是一种密码学中的重要概念。它与传统的对称加密算法不同,需要一对密钥:公钥和私钥。这对密钥之间存在着特殊的数学关系,但无法通过公钥推导出私钥,从而保证了通信的安全性。

2024-03-05 23:12:35 2163

原创 加密与安全_ 理解字节与比特

Byte(字节)是计算机中数据存储的基本单位,通常用于衡量存储容量,比如移动硬盘的容量可以是1TB(1TB = 1 terabyte = 1兆字节 = 1,024 gigabytes)。一个字节由8个比特(bit)组成。比特是最小的数据单位,它可以是0或1,用于表示二进制信息。数据传输时通常以比特为单位进行计量,比如家里的宽带速度可能是以兆比特(Mbps)或千兆比特(Gbps)为单位。当我们说家里的宽带是100Mbps时,意味着每秒可以传输100兆比特的数据。

2024-03-05 19:31:47 1388

原创 加密与安全_ 凯撒密码

凯撒密码是一种简单的替换加密技术,也称为移位密码。它是古典密码学中最早的密码之一,得名于古罗马军队领袖凯撒·尤利乌斯(Julius Caesar),据说他曾经使用过这种加密方法。恺撒密码,也称为恺撒加密或恺撒变换,是一种最古老且最简单的密码之一。它的原理很简单,就是通过将明文中的每个字母按照字母表顺序向后(或向前)移动固定的位置来进行加密。这个固定的位置就是密钥,通常用一个整数来表示,称为偏移量。例如,当偏移量为3时,明文中的字母A将被加密为D,B被加密为E,以此类推。

2024-03-04 22:38:33 2132

原创 加密与安全_探索数字证书

数字证书是一种重要的安全标准,它集成了多种密码学算法,以确保数据的安全性、完整性和可信度。在数字化信息传输中,摘要算法用于验证数据的完整性非对称加密算法用于加密和解密数据签名算法则用于验证数据的来源和确保抗否认性将这些算法集合到一起,并依据一套完善的标准来管理,形成了数字证书的体系。通过数字证书,用户可以实现数据加解密、身份认证和签名等多种功能。其中,最重要的作用之一是防止中间人攻击。这是通过采用链式签名认证来实现的。

2024-03-03 21:09:13 2183

原创 加密与安全_探索签名算法

在非对称加密中,使用私钥加密、公钥解密确实是可行的,而且有着特定的应用场景,即数字签名。数字签名的主要目的是确保消息的完整性、真实性和不可否认性。通过使用私钥加密消息,发送者相当于对消息进行了签名,因为只有发送者拥有私钥,所以只有发送者能够生成正确的签名。然后,其他人可以使用发送者的公钥来验证签名,确保消息确实是由发送者签署的。这种方式确保了消息的真实性和不可否认性,因为只有私钥的持有者才能够生成正确的签名,其他人无法伪造。同时,公钥的持有者可以通过验证签名来确认消息的完整性和真实性。

2024-03-02 20:45:00 2475

原创 加密与安全_探索非对称加密算法_RSA算法

如果修改待加密的byte[]数据的大小,可以发现,使用512bit的RSA加密时,明文长度不能超过53字节,使用1024bit的RSA加密时,明文长度不能超过117字节,这也是为什么使用RSA的时候,总是配合AES一起使用,即用AES加密任意长度的明文,用RSA加密AES口令。因此,通常的做法是,使用RSA加密对称密钥(如AES密钥),然后使用对称密钥加密要传输的数据。中我们可以看到,公钥-私钥组成的密钥对是非常有用的加密方式,因为公钥是可以公开的,而私钥是完全保密的,由此奠定了非对称加密的基础。

2024-03-02 07:15:00 1911 1

原创 加密与安全_探索密钥交换算法_Diffie-Hellman算法

对称加密算法解决了数据加密的问题,例如AES加密可以有效地保护文件的安全性。然而,一个关键的挑战是如何在不安全的通信信道上安全地传输密钥。假设小明需要向路人甲发送一个加密文件,他可以先生成一个AES密钥,使用该密钥对文件进行加密,然后将加密后的文件发送给对方。但是,问题在于对方需要密钥才能解密文件,因此密钥的传输必须是安全的。在传统的密钥传输方法中,密钥通常通过不同的方式发送,如口头告知、书面传递或者其他安全信道。

2024-03-02 05:45:00 1869

原创 加密与安全_探索口令加密算法(PBE)

加密与安全_探索对称加密算法中我们提到AES加密密钥长度是固定的128/192/256位,而不是我们用WinZip/WinRAR那样,随便输入几位都可以。这是因为对称加密算法决定了口令必须是固定长度,然后对明文进行分块加密。又因为安全需求,口令长度往往都是128位以上,即至少16个字符。

2024-03-01 21:44:26 1845

原创 加密与安全_探索对称加密算法

对称加密算法是一种加密技术,使用相同的密钥来进行加密和解密数据。在这种算法中,发送方使用密钥将明文(未加密的数据)转换为密文(加密的数据),而接收方使用相同的密钥将密文还原为明文。对称加密算法的安全性依赖于密钥的保密性,因为任何持有相同密钥的人都能够解密数据。常见的对称加密算法包括AES(高级加密标准)和DES(数据加密标准)。虽然对称加密算法在性能上通常比非对称加密算法更高效,但在密钥管理和分发方面存在挑战。通俗来讲,可以这么理解: 对称加密算法就像是一把钥匙可以打开一个锁。

2024-03-01 19:15:00 2047

原创 加密与安全_深入了解Hmac算法(消息认证码)

HMAC(Hash-based Message Authentication Code)算法是一种基于哈希函数的消息认证码算法,用于验证消息的完整性和认证消息的发送者。它结合了哈希函数和密钥,通过将密钥与消息进行哈希运算来生成消息认证码。首先,选择一个适当的哈希函数(如MD5、SHA-1、SHA-256等)和一个密钥。将密钥进行适当的填充和处理,以满足哈希函数的输入长度要求。将消息与填充后的密钥按照特定的方式进行组合。对组合后的数据进行哈希运算。将哈希结果作为消息认证码输出。

2024-03-01 06:36:30 2288

原创 加密与安全_面向密码学的开源库BouncyCastle

在某些情况下,Java标准库提供的哈希算法可能无法满足特定需求。方法一:自行实现这种方法需要对特定算法的原理和实现细节有深入的了解,然后才能编写出符合要求的算法。然而,这种方式的难度较大,尤其是对于复杂的加密算法而言,需要大量的时间和精力来完成。方法二:使用第三方库借助第三方库,我们可以方便地使用各种不同的哈希算法和加密算法,而无需自行实现。BouncyCastle就是一个提供了丰富的哈希算法和加密算法的第三方库。它包含了Java标准库没有的一些算法,如RipeMD160哈希算法。

2024-02-29 05:45:00 2941

原创 加密与安全_深入了解哈希算法

哈希算法(Hash)又称摘要算法(Digest)。哈希算法是一种重要的加密算法,其核心思想是将任意长度的数据映射为固定长度的哈希值,这个哈希值通常用于验证数据的完整性、索引数据和加速数据查找。在Java中,hashCode()方法是一种哈希算法的应用。相同的输入一定会得到相同的输出不同的输入大概率得到不同的输出。在实际编程中,我们经常需要根据对象的哈希值来进行数据存储和查找,比如使用哈希表等数据结构。为了确保正确性,如果一个类覆写了equals()方法,就必须同时覆写hashCode()

2024-02-28 22:36:54 2053

原创 加密与安全_探索常用编码算法

在计算机系统中,加密与安全是至关重要的概念。想象一下,当B想要发送一封邮件给A时,邮件可能在传送过程中遭到黑客的窃听,这就需要防止信息泄露。此外,黑客还可能篡改邮件内容,因此A需要确保她能够辨别出邮件是否被篡改。最后,黑客可能会冒充B发送虚假邮件给A,这需要A有能力辨别真伪。为了应对这些潜在的安全威胁,我们需要采取以下三项措施:防止窃听防止篡改防止伪造计算机加密技术旨在实现上述目标。现代计算机密码学建立在严格的数学理论基础上,并逐渐发展成为一门科学。

2024-02-28 22:04:09 2224

原创 Spring Cloud Alibaba - 利用Nacos实现高效动态线程池管理

随着现代应用程序的复杂性不断增加,动态线程池管理成为了构建可靠和高效系统的关键之一。而Nacos作为一个优秀的服务发现和配置中心,能够帮助我们实现动态线程池的灵活管理。我们这里将介绍如何利用Nacos来实现高效的动态线程池管理,并探讨其在分布式系统中的应用。在软件开发中,线程池是一种管理和重用线程的机制,它能够有效地控制并发执行的线程数量,避免资源耗尽和性能下降。动态线程池则是在传统线程池的基础上,能够根据系统负载和资源需求动态调整线程数量的一种改进型线程池管理方式。

2024-02-25 22:06:51 1679

原创 Nginx - 请求\上传下载速率_流控小妙招

限流(Rate Limiting)是一种有效的系统保护机制,通过控制系统的输入和输出流量来缓解潜在的压力和风险。在网站运行于公网环境时,面对用户正常访问、网络爬虫、恶意攻击或突发大流量等情况,系统可能会面临过载的风险,从而导致响应延迟甚至系统崩溃的问题。针对这种情况,限流技术能够有效地管理并发请求,保障系统的稳定运行。通过对一部分请求进行限制,例如限制同一IP地址的频繁请求,系统可以合理地分配资源,确保服务器能够正确响应其他请求。

2024-02-24 23:54:25 1840 1

原创 Maven - 代码混淆proguard-maven-plugin vs 代码加密classfinal

ClassFinal是一款java class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework;可避免源码泄漏或字节码被反编译。

2024-02-24 23:07:16 2502

原创 计网 - 深入理解HTTPS:加密技术的背后

摘要算法,也称为哈希函数,用于计算内容的哈希值或“指纹”。这个哈希值是根据内容计算出来的固定长度的唯一字符串,即使内容稍微有所改动,其哈希值也会完全不同。因此,通过比较接收到的哈希值和发送方发送的哈希值,可以判断内容是否被篡改。常用的摘要算法包括MD5、SHA-1、SHA-256等,它们都是单向函数,即从内容计算出哈希值很容易,但从哈希值反推内容几乎是不可能的。这使得摘要算法在保证数据完整性方面非常有用,同时也被广泛应用于密码学、数字签名等领域。

2024-02-21 23:13:40 2144

原创 计网 - 域名解析的工作流程

DNS安全性的重要性不言而喻。同时,建议定期更新系统和网络设备的软件版本,以修复已知的安全漏洞,并加强网络安全意识培训,提高用户对DNS安全的重视程度。确保DNS安全至关重要,因为DNS是互联网的基础设施之一,任何对DNS的攻击都可能导致网络中断、数据泄露、身份盗窃等严重后果。:攻击者通过向DNS服务器发送伪造的DNS响应,使得DNS服务器缓存了错误的域名解析结果,导致用户访问被篡改的网站。:攻击者通过向目标DNS服务器发送大量的DNS查询请求,使得目标DNS服务器无法处理合法的查询请求,造成服务拒绝。

2024-02-21 20:15:00 1783

原创 Golang - 从源码到二进制:探索在国产CPU架构上交叉编译Minio的方法

在C++中,交叉编译通常用于在开发机器上编译目标平台的程序,例如在使用x86架构的开发机器上编译ARM架构的程序。总的来说,交叉编译的原理是通过选择合适的交叉编译工具链,并配置正确的环境,将源代码编译成适用于目标平台的可执行文件或库。在编译过程中,编译器会根据目标平台的架构和操作系统生成相应的机器码。这些是一些常见的架构,实际上还有更多的架构可供选择,具体取决于 Go 编译器的支持和目标平台的要求。官方提供了部分架构的minio二进制,但有些国产CPU架构下的包,是没有提供的,因此需要自行编译。

2024-02-20 20:45:00 2099

原创 每日一博 - 大端(Big Endian)和小端(Little Endian)

大端(Big Endian)和小端(Little Endian)是用于描述在存储器中存储多字节数据时字节顺序的两种不同方法。

2024-02-20 19:15:00 1596

原创 Golang - 使用CentOS 7 安装Golang环境

下载Go语言包:您可以从官方网站 https://golang.org/dl/ 下载适用于Linux的Go语言包。选择与您的操作系统架构匹配的版本。例如,如果您的操作系统是64位的,您可能会下载类似go1.17.6.linux-amd64.tar.gz的文件。解压缩Go语言包:使用以下命令解压缩下载的Go语言包。请注意,您需要将路径替换为您下载文件的实际路径。

2024-02-19 19:45:00 1610

原创 Netty Review - 客户端流程源码解析

我们创建了一个NIO的EventLoopGroup,使用NioSocketChannel作为客户端的Channel类型,设置了TCP连接的保持活动选项,并初始化ChannelPipeline。EventLoopGroup是一组处理I/O操作的线程池,通常包含一个用于处理连接的boss线程池和一个用于处理I/O事件的worker线程池。此时,客户端会尝试连接到指定的远程服务器,并返回一个ChannelFuture对象,用于异步等待连接的建立。事件时,会执行相应的处理逻辑。

2024-02-18 08:15:00 2447

原创 Netty Review - NIO空轮询及Netty的解决方案源码分析

对于每个 Channel,取消其在旧 Selector 上的注册,然后重新在新的 Selector 上注册,并保持感兴趣的事件不变。但是,在某些情况下,由于操作系统或者底层网络实现的限制,Selector可能会出现空轮询的情况,即Selector不断地被唤醒,但没有任何就绪的事件,这会导致CPU资源的浪费。在Netty中,通过使用基于事件驱动的模型,避免了空轮询的问题。在早期版本的JDK中,Java NIO的实现对于空轮询问题没有进行有效的处理,导致在高并发、高负载的网络应用中,会造成CPU资源的浪费。

2024-02-18 06:45:00 2902

原创 Netty Review - ByteBuf扩容机制源码解析

ByteBuf 扩容机制是指在写入数据时,如果当前容量不足以容纳新增的数据,则需要进行动态扩容,以适应数据量的增长。容量检查在写入数据之前,会先检查当前可写入的容量是否足够。这通常是通过比较写索引和容量之间的关系来实现的。如果当前可写入容量不足,就需要进行扩容操作。内存分配当需要扩容时,会分配一个更大的内存空间来存储数据。这个内存空间的大小通常由扩容策略决定,可以是固定大小的增量,也可以是根据某种规则动态计算的。数据迁移在分配更大的内存空间后,原有的数据需要从旧的内存空间复制到新的内存空间中。

2024-02-17 17:56:40 1525

原创 Netty Review - ByteBuf内存池源码解析

ByteBuf 内存池是 Netty 中用于管理 ByteBuf 对象的一种机制,旨在提高内存的使用效率和性能。

2024-02-17 06:15:00 1790

原创 Netty Review - 底层零拷贝源码解析

Netty 的零拷贝技术是通过优化数据传输过程中的数据复制操作,以降低系统的开销和提高性能。Netty 利用 Java NIO 中的 ByteBuffer.allocateDirect() 方法来分配直接内存,直接内存的特点是可以直接被操作系统所管理,不受 Java 堆内存大小的限制,而且可以直接与操作系统进行数据交互,避免了数据在 Java 堆内存和操作系统之间的拷贝。

2024-02-16 22:26:46 1785

原创 Netty Review - 直接内存的应用及源码分析

在Java中,数据通常存储在堆内存中。Java里用可以分配一块直接内存(堆外内存),元空间对应的内存也叫作直接内存,它们对应的都是机器的物理内存。但是,在某些情况下,直接操作系统的本地内存(off-heap memory)可能更有利,特别是对于需要进行大量I/O操作的应用程序,比如网络应用程序。Netty是一个用于构建高性能网络应用程序的框架,它提供了对直接内存的支持,以便更有效地处理数据传输。直接内存的主要优势在于它的分配和释放不受Java堆内存管理的影响,因此可以避免堆内存的垃圾回收开销。

2024-02-16 21:16:03 1578

原创 OpenSource - 一站式自动化运维及自动化部署平台

一站式自动化运维及自动化部署平台, 使用多环境的概念, 提供了机器管理、机器监控报警、Web终端、WebSftp、机器批量执行、机器批量上传、在线查看日志、定时调度任务、应用环境维护、应用构建及发布任务、操作流水线等功能, 帮助企业实现一站式轻量化运维治理, 致力于企业级应用的智能运维。通用模板: https://lijiahangmax.gitee.io/orion-ops/#/template/java-springboot-template。后续应该不会更新了(除了修复bug) 个人精力有限。

2024-02-15 19:31:56 2064

Scalable IO in Java

NIO - Scalable IO in Java

2023-11-10

腾讯万亿级 Elasticsearch 架构实践

腾讯万亿级 Elasticsearch 架构实践

2023-07-24

实时分析引擎&实时分析引擎

实时分析引擎

2023-07-24

X86-NFS rpm包

gssproxy-0.7.0-21.el7.x86_64.rpm keyutils- libbasicobjects-0 libcollection-0.6 libevent-2.0.21-4 libini_config libnfsidmap libpath_utils-0.2 libref_array-0.1. libtirpc-0.2.4-0. libverto-libeventm nfs-utils-1.3.0-0m quota-4.01-14.ns7 quota-nls-4.01-14 rpcbind tcp_wrappers

2020-11-24

中标龙芯-MIPS- NFS rpm包

gssproxy-0.7.0-4.ns7_4.mips64 keyutils-1.5.8-3. libbasicobjects-0 libcollection-0.6 libevent-2.0.21-4 libini_config-1.3 libnfsidmap-0.25- libpath_utils-0.2 libref_array-0.1. libtirpc-0.2.4-0. libverto-libeventm nfs-utils-1.3.0-0m quota-4.01-14.ns7 quota-nls-4.01-14 rpcbind-0.2.0-42. tcp_wrappers-7.6

2020-11-24

mybatisSource.zip

MyBatis源码功能演示环境 ,演示MyBatis的Executor 、StatementHandler 、 SQL映射、对象转换 等核心功能

2020-06-14

apache-tomcat-8.5.50-src.zip

Tomcat启动流程分析 组件的生命周期管理 用Lifecycle管理启动、停止、关闭 Lifecycle接口预览 几个核心方法 Server中的init方法示例 为啥StandardServer没有init方法 LifecycleBase中的init与initInternal方法 为什么这么设计? 分析Tomcat请求过程 链接器(Connector)与容器(Container) 解耦 Connector设计 监听服务端口,读取来自客户端的请求 将请求数据按照指定协议进行解析 根据请求地址匹配正确的容器进行处理 将响应返回客户端 Container设计 Servlet容器的实现。

2020-06-02

「Tomcat源码剖析」.pdf

Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑)

2020-06-01

Jest-5.3.4.zip

Jest是Elasticsearch 的Java Http Rest 客户端。 ElasticSearch已经具备应用于Elasticsearch内部的java API,但是Jest弥补了ES自有API缺少Elasticsearch Http Rest接口客户端的不足。 Jest 配置ES 集群 示例代码 及源码解读 - 核心原理 - NodeChecker源码解读 -

2020-01-19

MQ对比:Kafka VS Rocketmq VS Rabbitmq.pdf

MQ对比:Kafka VS Rocketmq VS Rabbitmq 超详细 ,值的收藏,参考资料

2019-11-04

elasticsearch-analysis-ik-6.4.1.zip

修改ik分词器源码,支持从mysql中每隔一定时间,自动加载新的词库

2019-08-20

Nginx1.14.2 + zlib + pcre + openssl

1. nginx 主软件 和 3个依赖包 zlib + pcre + openssl

2019-03-12

Spring4CachingAnnotationsExample

Spring4CachingAnnotationsExample的示例,通过Java注解的方式整合EhCache框架

2017-10-04

ORACLE_AWR报告详细分析

ORACLE_AWR报告详细分析

2016-09-28

Java反编译工具

jd-gui.exe使用C++开发,主要具有以下功能: 一、支持众多Java编译器的反编译; 二、支持对整个Jar文件进行反编译,并本源代码可直接点击进行相关代码的跳转;

2015-06-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除