前言 前文讲到了 ConnectionHandler#process 方法,其中最关键的步骤是获取一个 org.apache.coyote.Processor 对象,然后调用这个对象的 process 方法,传入的参数就是它自己接收的参数,也就是 和 NioSocketWrapper 对象 和 SocketEvent 对象。tomcat 中 用于处理…
前言 Tomcat 是后端服务最常见的web容器,关于 Tomcat 一个重要的话题就是它的类加载机制,本文就基于 9.0.16 版本介绍一下 Tomcat 的类加载机制。 有几个类加载器? 在Tomcat的启动类 org.apache.catalina.startup.Bootstrap 里定义了三个 ClassLoader 类型的属性…
一、前言 最近ChatGPT非常受欢迎,尤其是在编写代码方面,我每天都在使用。随着使用时间的增长,我开始对其原理产生了一些兴趣。虽然我无法完全理解这些AI大型模型的算法和模型,但我认为可以研究一下其中的交互逻辑。特别是,我想了解它是如何实现在发送一个问题后不需要等待答案完全生成,而是通过不断追加的方式实现实时回复的。…
前言 经过前面对 Spring AOP 、事务的总结,我们已经对它们有了一个比较感性的认知了。 今天,我继续安利一个独门绝技: Spring 事务的钩子函数。 单纯的讲技术可能比较枯燥乏味。接下来,我将以一个实际的案例来描述Spring事务钩子函数的正确使用姿势。 一、案例背景…
Awesome-LLM-Strawberry 是一个精心整理的资源集合,它汇集了关于LLM 的论文、博客和项目。该项目特别关注 OpenAI o1 以及推理技术。 无论你是研究者、 开发者还是对目前最强大模型 OpenAI o1 充满好奇的普通爱好者,这里都有你需要的资源。 Awesome-LLM-Strawberry 已经在 GitHub…
weread2notion-pro 是一个自动化工具, 它能够帮助用户将微信读书中的笔记和书籍信息同步到 Notion。 通过这个项目,你可以轻松地将阅读过程中的思考和笔记整理到一个更加系统化的知识管理平台。 开源地址:https://github.com/malinkang/weread2notion-pro 核心内容 ① 自动化同步:项目通过…
前言 前文中讲到了 Connector 的初始化与启动,其中最关键的就是 ProtocolHandler 的初始化与启动。tomcat 中 ProtocolHandler 的默认实现类是 Http11NioProtocol。tomcat9.0.16 中 ProtocolHandler 的实现类中还有一个…
前言 前文讲到了 ProtocolHandler 及其默认实现类 Http11NioProtocol,在 Http11NioProtocol 的构造方法中创建了一个 NioEndpoint 对象,并且在 Http11NioProtocol 的 init 和 start 方法中最重要的步骤是调用这个 NioEndpoint 对象的 init 和 start…
前言 前文介绍了 NioEndpoint,其中讲到了在 NioEndpoint#startInternal 方法里创建并启动了 Acceptor 和 Poller,线程。本篇文章先看 Acceptor,下篇文章再看 Poller。 1. Acceptor Acceptor 的构造方法声明为: private final…
前言 前文里讲到了 NioEndpint 的启动过程中创建了多个 Poller 对象,并启动了 Poller 线程。在 上篇文章 中介绍了 Acceptor 的 run 方法,其中讲到了 Acceptor 的工作就是接受客户端的连接并转交给 Poller 线程处理,本文将分析 Poller 和 PollerEvent。Poller 和…