摘要:
# 一、知识点 ## 1. std::bidirectional_iterator_tag `std::bidirectional_iterator_tag` 是 C++ 标准库中定义的一个迭代器类型标签,用于标识支持双向遍历的迭代器类型。 在 C++ 中,迭代器是一种泛型指针,用于遍历容器中的元素 阅读全文
摘要:
# Linux内核源码编译过程 **总体流程:** 1. 下载Linux内核源码文件 2. 安装所需工具 3. 解压源码文件并配置 4. make编译源码 5. 下载busybox 6. 配置busybox并编译 ## 1. Linux源码编译 https://mirrors.edge.kernel 阅读全文
摘要:
## 源码分析 Netty源码中调用链特别长,且涉及到线程切换等步骤,令人头大:) ### 1 启动剖析 ![](https://img2023.cnblogs.com/blog/3187783/202306/3187783-20230614201709012-2027464578.png) 我们就 阅读全文
摘要:
### Netty实现简易RPC调用 总体流程: - 客户端发起rpc调用请求,封装好调用的接口名,函数名,返回类型,函数参数类型,函数参数值等属性,将消息发送给服务器。 - 服务器的handler解析rpc请求,调用对应方法,并将方法结果写回客户端。 - 客户端在**主线程**发送消息后,准备一个 阅读全文
摘要:
# 三. Netty 进阶 ## 1. 粘包与半包 ### 1.1 粘包现象 服务端代码 ```java public class HelloWorldServer { static final Logger log = LoggerFactory.getLogger(HelloWorldServe 阅读全文
摘要:
# 二. Netty 入门 ## 1. 概述 ### 1.1 Netty 是什么? ``` Netty is an asynchronous event-driven network application framework for rapid development of maintainabl 阅读全文
摘要:
# 一. NIO 基础 non-blocking io 非阻塞 IO ## 1. 三大组件 ### 1.1 Channel & Buffer channel 有一点类似于 stream,它就是读写数据的**双向通道**,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据 阅读全文
摘要:
# 1. Netty总体结构 ## 1.1 Netty简介 Netty是一款用于创建高性能网络应用程序的高级框架。它的基于 Java NIO 的异步的和事件驱动的实现,保证了高负载下应用程序性能的最大化和可伸缩性。 其次,Netty 也包含了一组**设计模式**,将应用程序逻辑从网络层解耦, 阅读全文
摘要:
# 1. 项目总体流程: - 事件处理模式:采用Epoll边沿触发的IO多路复用技术,模拟Proactor模式; - 主线程使用epoll监听与客户端连接的socket,并在主线程中对这些socket执行数据读写; - 读出数据后将数据放入请求队列,交给工作线程(子线程)处理业务逻辑; - 子线程解 阅读全文
摘要:
3. 线程的同步与互斥 为什么需要同步与互斥 一个进程运行时,数据存储在内存中。如果一个数据要进行运算,必须先将数据拷贝到寄存器中。比如要对栈上的一个int i进行“++”操作,需要将i的值拷贝到寄存器中,将该值自加后再拷贝到原来的内存。 如果此时有两个线程均进行的是这样的操作,可能出现两个 阅读全文