自定义博客皮肤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

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

原创 Netty Review - 探索Channel和Pipeline的内部机制

这个链的结构可以看作是一个双向链表,每个节点是一个处理器。内部代码实现的流程是从头(Head)到尾(Tail)的顺序,对于传入数据,或者从尾(Tail)到头(Head)的顺序,对于传出数据。首先,想象一下Channel就像是通道,它提供了一些操作方法,比如读(read)和写(write)。每个小工具被称为Handler,它们负责处理网络通信中的不同任务,比如数据的编码、解码和其他处理。可以是网络套接字,文件,或者任何可以进行I/O操作的实体。提供了异步的I/O操作,可以通过注册关注的事件来触发。

2023-11-30 19:15:00 4494

原创 Java Review - Java命令行参数指南:掌握 -D 和 -- 的使用技巧

在Java应用中,参数传递可以通过命令行选项进行,其中包括使用-D和--作为前缀的选项。

2023-11-25 09:45:00 4689

原创 Spring Boot - 瘦身大作战:优雅应对Spring Boot Fat Jar

类是特殊的引导程序类,用作可执行jar的主要入口点。它是jar文件中的实际Main-Class,用于设置适当的URLClassLoader并最终调用main()方法。MODULE,将所有的依赖库打包(scope为provided的除外),但是不打包Spring Boot的任何Launcher。它们的目的是从目录中的嵌套jar文件或war文件(而不是在类路径中显式的文件)加载资源(.class文件等)。WAR,即通常的可执行war,需要的servlet容器依赖位于WEB-INF/lib-provided。

2023-11-25 07:45:00 4609

原创 Maven - 打包之争:Jar vs. Shade vs. Assembly

Maven 提供了多种打包方式,其中常见的包括三种:jar、shade、assembly。Jar 打包方式:这是最常见的打包方式,它创建一个标准的Java JAR文件。简单直接,适用于大多数简单项目。不能包含项目的依赖,如果项目有外部依赖,用户必须手动将它们添加到类路径中。Shade 打包方式:Maven Shade插件允许创建一个可执行的JAR文件,其中包含所有依赖。生成一个独立的可执行JAR,无需用户手动添加依赖。可能会导致JAR文件较大,不适合所有项目。

2023-11-24 21:15:00 4769

原创 Netty Review - 探索ByteBuf的内部机制

由于协议传输过程中,通常会有拆包、合并包的过程,一般的做法就是System.arrayCopy了,但是Netty通过ByteBuf.slice以及Unpooled.wrappedBuffer等方法拆分、合并Buffer无需拷贝数据。: Netty提供了CompositeByteBuf,它是一种特殊的ByteBuf,可以将多个ByteBuf组合成一个逻辑上的ByteBuf。: Netty的ByteBuf支持零拷贝的特性,这意味着在某些情况下,数据可以在不涉及实际数据复制的情况下传递给其他组件。

2023-11-23 21:30:00 4638

原创 庖丁解牛:NIO核心概念与机制详解 07 _ 字符集

我们将看一下如何使用 Charsets 处理文本数据为给定的字符编码创建 Charset使用该 Charset 解码和编码文本数据。

2023-11-21 21:30:00 3915

原创 庖丁解牛:NIO核心概念与机制详解 06 _ 连网和异步 I/O

在 Java NIO 中,连网操作与其他操作一样,依赖于通道(Channel)和缓冲区(Buffer)。通道是用于读取和写入数据的途径,而缓冲区则用于暂存数据。与传统的同步 I/O 不同,Java NIO 中的通道操作是非阻塞的,这意味着在发起 IO 请求后,进程可以继续执行其他任务,而不需要等待 IO 操作完成。当 IO 操作完成后,进程会收到通知,此时再进行相应的处理。

2023-11-20 21:45:00 3870

原创 庖丁解牛:NIO核心概念与机制详解 05 _ 文件锁定

文件锁定初看起来可能让人迷惑。它似乎指的是防止程序或者用户访问特定文件。事实上,文件锁就像常规的 Java 对象锁 ― 它们是 劝告式的(advisory) 锁。它们不阻止任何形式的数据访问,相反,它们通过锁的共享和获取赖允许系统的不同部分相互协调。我们可以锁定整个文件或者文件的一部分。如果你获取一个排它锁,那么其他人就不能获得同一个文件或者文件的一部分上的锁。如果你获得一个共享锁,那么其他人可以获得同一个文件或者文件一部分上的共享锁,但是不能获得排它锁。文件锁定并不总是出于保护数据的目的。

2023-11-20 08:15:00 3986

原创 庖丁解牛:NIO核心概念与机制详解 04 _ 分散和聚集

分散/聚集 I/O 是使用多个而不是单个缓冲区来保存数据的读写方法。一个分散的读取就像一个常规通道读取,只不过它是将数据读到一个缓冲区数组中而不是读到单个缓冲区中。同样地,一个聚集写入是向缓冲区数组而不是向单个缓冲区写入数据。分散/聚集 I/O 对于将数据流划分为单独的部分很有用,这有助于实现复杂的数据格式。

2023-11-20 06:45:00 3987

原创 庖丁解牛:NIO核心概念与机制详解 03 _ 缓冲区分配、包装和分片

到目前为止,我们已经使用缓冲区进行日常工作所需要掌握的大部分内容。例子没怎么超出标准的读/写过程种类,在原来的 I/O 中可以像在 NIO 中一样容易地实现这样的标准读写过程。这里我们将讨论使用缓冲区的一些更复杂的方面,比如缓冲区分配、包装和分片。我们还会讨论 NIO 带给 Java 平台的一些新功能。这里我们可以看到如何创建不同类型的缓冲区以达到不同的目的,如可保护数据不被修改的 只读 缓冲区,和直接映射到底层操作系统缓冲区的 直接 缓冲区。最后介绍如何在 NIO 中创建内存映射文件。

2023-11-19 21:03:52 4026

原创 庖丁解牛:NIO核心概念与机制详解 02 _ 缓冲区的细节实现

可以用三个值指定缓冲区在任意时刻的状态:positionlimitcapacity这三个变量一起可以跟踪缓冲区的状态和它所包含的数据。我们将详细分析每一个变量,还要介绍它们如何适应典型的读/写(输入/输出)进程。在这个例子中,我们假定要将数据从一个输入通道拷贝到一个输出通道。

2023-11-19 12:18:28 4034

原创 庖丁解牛:NIO核心概念与机制详解 01 _ 入门篇

通道 和 缓冲区 是 NIO 中的核心对象,几乎在每一个 I/O 操作中都要使用它们。通道是对原 I/O 包中的流的模拟。到任何目的地(或来自任何地方)的所有数据都必须通过一个 Channel 对象。一个 Buffer 实质上是一个容器对象。发送给一个通道的所有对象都必须首先放到缓冲区中;同样地,从通道中读取的任何数据都要读到缓冲区中。Buffer 是一个对象, 它包含一些要写入或者刚读出的数据。在 NIO 中加入 Buffer 对象,体现了新库与原 I/O 的一个重要区别。

2023-11-18 10:59:04 4203

原创 Netty Review - 从BIO到NIO的进化推演

poll同样会将所有的请求拷贝到内核态,和select一样,poll同样是一个阻塞函数,当一个或多个请求有数据的时候,也同样会进行置位,但是它置位的是结构体pollfd中的events或者revents置位,而不是对fd本身进行置位,所以在下一次使用的时候不需要再进行重新赋空值的操作。多线程BIO服务器虽然解决了单线程BIO无法处理并发的弱点,但是也带来一个问题:如果有大量的请求连接到我们的服务器上,但是却不发送消息,那么我们的服务器也会为这些不发送消息的请求创建一个单独的线程,那么如果连接数少还好,

2023-11-15 06:45:00 4506

原创 Netty Review - 核心组件扫盲

我们知道可以在channel中装配ChannelHandler流水线处理器,那一个channel不可能只有一个channelHandler处理器,肯定是有很多的,既然是很多channelHandler在一个流水线工作,肯定是有顺序的。一般在Socket编程中,等待响应结果都是同步阻塞的,而Netty则不会造成阻塞,因为ChannelFuture是采取类似观察者模式的形式进行获取结果。在Netty中,Handler处理器是由我们定义的,上面讲过通过集成入站处理器或者出站处理器实现。则是具体处理请求的处理器。

2023-11-14 22:15:00 4188

原创 Netty Review - 快速上手篇

另一方面:现在互联网系统讲究的都是高并发、分布式、微服务,各类消息满天飞(IM系统、消息推送系统就是其中的典型),Netty在这类架构里面的应用可谓是如鱼得水,如果你对当前的各种应用服务器不爽,那么完全可以基于Netty来实现自己的HTTP服务器、FTP服务器、UDP服务器、RPC服务器、WebSocket服务器、Redis的Proxy服务器、MySQL的Proxy服务器等等。的实例,一个负责接收客户端的连接,另一个负责处理消息I/O,这里为了简单展示流程,让一个实例把这两方面的活都干了;

2023-11-13 21:45:00 3966

原创 Netty - 回顾Netty高性能原理和框架架构解析

Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件、整体架构。@Override。

2023-11-11 23:14:16 4852

原创 高性能网络编程 - 解读3种线程模型

介绍完服务器如何基于 I/O 模型管理连接,获取输入数据,下面将介绍基于进程/线程模型,服务器如何处理请求。值得说明的是,具体选择线程还是进程,更多是与平台及编程语言相关。例如 C 语言使用线程和进程都可以(例如 Nginx 使用进程,Memcached 使用线程),Java 语言一般使用线程(例如 Netty),为了描述方便,下面都使用线程来进行描述。

2023-11-11 07:45:00 4274

原创 高性能网络编程 - 解读5种I/O模型

从上图中我们可以看出,越往后,阻塞越少,理论上效率也是最优。这五种 I/O 模型中,前四种属于同步 I/O,因为其中真正的 I/O 操作(recvfrom)将阻塞进程/线程,只有异步 I/O 模型才与 POSIX 定义的异步 I/O 相匹配。

2023-11-10 06:30:00 4258

原创 ChatGPT - 在ChatGPT中设置通用提示模板

在ChatGPT中设置通用提示模板。

2023-11-09 19:30:00 4079

原创 高性能网络编程 - The C10M problem

在接下来的10年里,因为IPv6协议下每个服务器的潜在连接数都是数以百万级的,单机服务器处理数百万的并发连接(甚至千万)并非不可能,但我们需要重新审视目前主流OS针对网络编程这一块的具体技术实现实现C10M(单机千万级并发连接处理能力)确实是一个挑战,但在过去的几年中,有人采用一些创新的方法来应对这一挑战。其中,Errata Security的CEO Robert Graham在Shmoocon 2013大会上的演讲可能提供了一些有趣的见解。

2023-11-09 05:45:00 4299

原创 高性能网络编程 - select、 poll 、epoll 、libevent

Select(选择):Select 是一种传统的 I/O 多路复用机制,用于在类 Unix 操作系统(如 Linux)中同时管理多个文件描述符(如网络套接字或文件)。它允许程序监视多个 I/O 源以检测可读性或可写性,并在数据可读或可写时触发事件。Select 相对简单,但在处理大量文件描述符时性能和可扩展性有限。int main()// 1.创建套接字exit(0);// 2. 绑定 ip, portexit(0);// 3. 监听exit(0);

2023-11-08 22:45:00 4262

原创 高性能网络编程 - The C10K problem 以及 网络编程技术角度的解决思路

按照libevent的官方网站,libevent库提供了以下功能:当一个文件描述符的特定事件(如可读,可写或出错)发生了,或一个定时事件发生了,libevent就会自动执行用户指定的回调函数,来处理事件。时代的到来,情况发生了变化。另一方面,互联网不再局限于简单的网页浏览,而是逐渐变为互动的平台,应用程序的逻辑也变得更加复杂,select要解决上面阻塞的问题,思路很简单,如果我在读取文件句柄之前,先查下它的状态,ready 了就进行处理,不 ready 就不进行处理,这不就解决了这个问题了嘛?

2023-11-08 19:45:00 4301

原创 Algorithms_LSM树(Log-Structured Merge Tree)

为了优化读取性能,LSM树通常使用多层级的SSTable文件,其中越靠近顶部的SSTable越新,越靠近底部的SSTable越旧。从分布式数据库系统到云存储服务,LSM树提供了一种高效的方式来处理大量的数据,并支持高性能的写入和读取操作。综上所述,LSM树和B+树在写入性能、读取性能、存储空间使用和合并操作等方面有明显的区别,因此在不同的使用场景中选择合适的数据结构非常重要。LSM树:LSM树需要定期执行合并操作,以将多个SSTable文件合并为更大的文件,以减小数据碎片,提高读取性能,以及管理存储空间。

2023-11-08 06:30:00 4256

原创 架构漫谈 - 如何设计高性能、高可用、高扩展架构

支付业务可以容忍的时间是分钟级别的;银行卡支付和余额转账的主要区别就是银行卡支付的相关信息可以重复,且可用性和数据一致性要求没有那么高,基于这两个区别,银行卡支付的高可用复杂度中,数据复制方式可以采用异步复制,由于银行卡信息可以新增、删除、修改,并不要求高可用和高一致性,因此可以不选用民主式决策。那么对于钱包业务来说,业务上可以分为余额转账、银行卡支付、运行后台等,对于余额转账、可以实时也可以不实时,银行卡支付,这种一般是用户向商家支付,这种是要求实时的,运营后台,内部人员使用,容忍度要低一些。

2023-11-07 21:45:00 4826

原创 高性能网络编程 - 关于单台服务器并发TCP连接数理论值的讨论

单台服务器可以支持的并发TCP连接数取决于多个因素,包括硬件性能、操作系统限制、网络带宽和应用程序设计。以下是一些影响并发TCP连接数的因素:服务器硬件性能:服务器的CPU、内存和网络适配器性能会直接影响其能够处理的并发连接数。更强大的硬件通常可以支持更多的连接。操作系统限制:操作系统有最大文件描述符限制,这将限制服务器可以打开的TCP连接数。您可以通过调整操作系统的文件描述符限制来增加最大连接数。网络带宽:服务器的网络带宽也是一个限制因素。

2023-11-04 20:00:00 4803

原创 大长案例 - 经典长连接可水平扩容高可用架构

系统应该能够自动检测并处理故障,包括硬件故障、网络故障和应用程序故障。:数据安全至关重要,特别是与用户付款信息和充电记录相关的数据。:系统应该具备高度可扩展性,能够轻松应对新增充电桩的需求。:需要一个可靠的数据存储系统,用于记录充电桩的状态、充电记录和其他关键信息。:系统需要实时监控充电桩的状态,以便快速检测并响应问题。:系统应该经过性能优化,以提供低延迟和高吞吐量。:预测未来充电桩的增长趋势,进行容量规划,以确保系统能够满足未来的需求。:确保系统符合相关法规和标准,特别是涉及用户隐私和支付数据的法规。

2023-11-01 21:52:16 4565

原创 Kafka - 监控工具 Kafka Eagle:实时洞察Kafka集群的利器

Kafka Eagle是一款开源的、高度可定制的监控和告警工具,专门为Apache Kafka设计。它为Kafka集群提供了丰富的实时监控和管理功能,以确保高可用性、性能和数据完整性。Kafka Eagle的核心目标是帮助用户更好地理解和优化他们的Kafka环境,减少潜在问题的风险。

2023-10-31 23:45:00 7253

原创 Kafka - 3.x 消费者 生产经验不完全指北

这使得消费者能够以事务的方式处理消息,包括从Kafka中读取消息、处理消息和提交消息的offset。之前,Kafka的消费者通常使用手动提交offset的方式,但这种方式可能导致消息被重复消费或漏消费,特别是在处理消息和提交offset之间发生错误的情况下。:一些Kafka客户端库提供了高性能的消费者实现,如Apache Kafka的Java客户端,它具有较低的延迟和更高的吞吐量。:选择适当的分区分配策略,以确保分区分配在不同的消费者之间均匀分布,以充分利用多个消费者实例的并行性。

2023-10-31 22:15:00 5564

原创 Kafka - 3.x offset位移不完全指北

如果需要更精确的offset控制,或者需要在消息处理失败时执行自定义逻辑,消费者也可以选择禁用自动提交,手动管理offset。在手动提交offset的机制中,消费者有更多的控制权和灵活性,可以在确保消息被处理后再提交offset。Kafka的自动提交offset机制是一种用于管理消费者在消费消息时的偏移量(offset)的方式。这机制的主要特点是自动地将已成功消费的消息的offset提交给Kafka,而不需要消费者显式地去追踪和提交offset。因此更多的情况下,会选用异步提交offset的方式。

2023-10-31 19:45:00 6048

原创 Kafka - 3.x 分区分配策略及再平衡不完全指北

Sticky策略的主要优点是减少了分区再分配的频率,减轻了系统的不稳定性,降低了重新平衡的成本。RoundRobin分区分配策略是Kafka中一种常用的消费者分区分配策略,它的原理非常简单:每个消费者依次轮流分配Topic的分区,以确保分区分配是均匀的。即在执行一次新的分配之前,考虑上一次分配的结果,尽量少的调整分配的变动,可以节省大量的开销。需要注意的是,Kafka的分配策略和Consumer Group的协调机制使得数据的消费和负载均衡变得相对容易管理,同时允许水平扩展,以适应不同规模的工作负载。

2023-10-31 06:45:00 4783

原创 Kafka - 3.x Kafka消费者不完全指北

每个实例代表一个消费者组中的一个成员。:初始化消费者组前,需要创建一个消费者配置对象,其中包括了一些重要的属性,例如Kafka集群的地址、消费者组的ID、自动提交偏移量等。:首先,你需要配置消费者的属性,包括Kafka集群的地址、消费者组、主题名称、序列化/反序列化器、自动偏移提交等。:如果有消费者实例加入或离开消费者组,或者分区的分配发生变化,Kafka会自动进行重新平衡,以确保消息均匀分配。:如果消费者实例加入或退出消费者组,或者分区的分配发生变化,消费者组会自动进行重新平衡,以确保消息均匀分配。

2023-10-30 20:15:00 4639

原创 Kafka - 3.x 文件存储不完全指北

Kafka的producer生产数据,要写入到log文件中,写的过程是一直追加到文件末端,为顺序写。总之,Kafka的日志清理策略是一个关键组成部分,用于管理消息日志的大小和维护磁盘空间。根据业务需求,可以选择不同的保留策略和清理策略,以满足数据保留、性能和可用性方面的要求。Kafka的日志清理策略是为了管理磁盘上的数据,确保系统的性能和可用性。日志清理策略通常与消息日志的保留策略相关。总之,Kafka的数据存储机制通过主题、分区和段的组织,支持高吞吐量的消息流处理,使其成为一种强大的数据流平台。

2023-10-28 11:15:00 4598

原创 Kafka - 3.x 副本不完全指北

follower发生故障后会被临时踢出ISR,待该follower恢复后,follower会读取本地磁盘记录的上次的HW,并将log文件高于HW的部分截取掉(HW之前每个节点都有,故安全),从HW开始向leader进行同步。当分区的领导者(Leader)失败时,会触发新的领导者选举过程,确保分区的可用性。eader发生故障之后,会从ISR中选出一个新的leader,之后,为保证多个副本之间的数据一致性,其余的follower会先将各自的log文件高于HW的部分截掉,然后从新的leader同步数据。

2023-10-28 08:00:00 5092

原创 Kafka - 3.x 图解Broker总体工作流程

图解Broker工作流程

2023-10-28 06:15:00 5171

原创 Kafka - 3.x Producer 生产者最佳实践

对于某些不太重要的数据,对数据的可靠性要求不是很高,能够容忍数据的少量丢失,所以没必要等ISR中的follower全部接收成功。所以Kafka为用户提供了三种可靠性级别,用户根据对可靠性和延迟的要求进行权衡,选择以下的配置。,参数值默认为true,设置为false就关闭了。在prudocer的配置对象中,添加参数。

2023-10-27 21:45:00 4523

原创 Kafka - 3.x Kafka 生产者分区技巧全面指北

除了使用 Kafka 提供的默认分区器进行分区分配,还可以使用自定义的分区器,只需同DefaultPartitioner 一样实现 Partitioner 接口即可。默认的分区器在 key 为 null 时不会选择非可用的分区, 我们可以通过自定义的分区器 来打破这一限制,具体的实现可以参考下面的示例代码,实现步骤:① 定义类,实现Partitioner接口② 重写partition()方法import org/*** @author 小工匠} else {

2023-10-27 07:15:00 4946

原创 Linux - firewall-cmd 命令添加端口规则不生效排查

命令中的区域名称和端口号是正确的。如果你有更多的详细信息或特定的错误消息,可以提供它们以便更好地帮助你解决问题。:有时候,防火墙规则之间可能存在冲突。:在添加或更改规则后,需要重新加载防火墙规则以使更改生效。如果你仍然遇到问题,可能需要检查系统日志以获取更多信息,以便进一步诊断问题。:确保你正在为正确的防火墙区域(zone)添加端口规则。最后,如果你使用的是特定的防火墙区域或有定制需求,确保你的。命令查看所有规则,检查是否存在任何与所需规则冲突的规则。区域,请将区域名称更改为适合你的情况。

2023-10-27 05:30:00 7540 1

原创 Kafka - 异步/同步发送API

该方法有两个参数分别是RecordMetadata(元数据信息)和Exception(异常信息)。回调函数callback()会在producer收到ack时调用,为异步调用。需求:创建Kafka生产者,采用异步的方式发送到Kafka broker。同步发送的意思就是,一条消息发送之后,会阻塞当前线程,直至返回ack。注意:消息发送失败会自动重试,不需要我们在回调函数中手动重试。忽略我这个offset …

2023-10-26 22:45:00 6192

原创 Kafka - 图解生产者消息发送流程

发送消息到RecordAccumulator:主线程将创建的消息发送到一个双端队列(deque)叫做RecordAccumulator。管理消息的状态:RecordAccumulator跟踪每条消息的发送状态,以确保消息被成功发送到Kafka broker。从RecordAccumulator拉取消息:Sender线程定期轮询(poll)RecordAccumulator,检查是否有新消息需要发送。负责消息批量化:RecordAccumulator也有助于消息的批量发送,以减少网络开销和提高性能。

2023-10-26 20:45:00 4710

原创 Kafka - TimeoutException: Expiring 1 record(s) for art-0:120001 ms has passed since batch creation

不关闭防火墙,但是建议本机防火墙开放特定端口,可以使用如下命令 (使用root账户)我并没有大改配置,具体的配置可参考。结果都是关闭的 (建议开放特定端口)可以看消费者的控制台程序,输出正常。要解决这个问题,修改如上配置即可。这种情况,肯定要先看网络问题嘛。如下的配置并没有修改。

2023-10-26 20:45:00 9989 2

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关注的人

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