◈项目
项目
2026.07.12 · 1 分钟

1. 虽然 spring 对于 controller 的返回会自动进行序列化和反序列化,但是架不住项目中其它模块比如说 redis、日志等模块也需要用到序列化操作,所以通常都需要手动封装一个 JsonUtil工具类 。 2. 为了防止 JsonUtil 工具类被多次创建导致反复创建 ObjectMapper,实际上只需要用单例的 JsonUtil 即可,而不需要反复去创建 JsonUtil,所以通...

根据实际情况,将系统划分为下面五个微服务模块: 服务名称 端口 角色/定位 核心职责 具体功能点 涉及数据库表 ojgateway 10020 网关 流量入口、鉴权 1. 统一路由转发<br2. 统一鉴权<br3. 跨域配置<br4. 限流熔断(拓展) ojuser 8004<br 用户服务 C端用户管理 1. 用户注册/登录 (C...

考点:你能不能在 1 分钟内讲清楚业务价值和技术主线。 你可以这样答: 这是一个面向食品加工企业内部知识管理场景的智能问答项目。企业内部有大量法规、行业标准、检测规范、操作规程和业务文档,原来主要靠人工翻阅,检索效率比较低。 我做的事情是把这些文档统一解析和入库,基于 RAG 的方式搭建问答系统。用户输入自然语言问题后,系统会先做问题向量化,再去向量库检索相关片段,经过重排序后拼接上下文,最后...

首先,我们不可能只是让一个线程去完成所有的事情,那样子的话效率是不高的,所以肯定是要进行多线程并发处理问题的! 此外,我们在项目介绍的时候还强调,一个 EventLoop 对象只能在一个线程中执行,这样子才不会有线程安全问题,当 EventLoop 模块实例化一个对象的时候,其构造函数也会初始化一个线程标识 tid,如下所示(可以翻阅前面的笔记): 当我们在一...

细心的同学该发现,该模块就是之前测试代码中监听套接字负责的模块,我们要将其单独拎出来进行管理! 该模块是对 Socket 模块(实现监听套接字的操作)、Channel 模块(实现套接字IO事件管理以及事件触发后的回调处理)的一个整体封装,实现了对一个监听套接字的整体的管理。 具体处理流程如下: 1. 创建一个监听套接字。 2. 启动读事件监控。 3. 等到读...

该模块是对 Buffer模块、Socket模块、Channel模块的一个整体封装,实现了对一个通信套接字也就是连接的整体的管理,每一个进行数据通信的套接字(也就是 accept 获取到的新连接)都要使用 Connection 模块进行管理。 一个连接的任何事件该如何管理,其实是由使用者来决定的,但这对程序来说是未知的,所以我们需要在 Connection 模块中提供事件回调的机制...

Linux fd 系列 — eventfd 是什么? 所谓的 eventfd 其实就是一种事件通知的机制,就像 socket 有 socketfd,文件有文件的 fd 一样,eventfd 就是文件描述符的类型之一,专门用于事件通知的! 其本质就是在内核维护一个计数器,当我们创建了一个 eventfd 的时候就相当于创建了一个内核计数器。 每当我们使用 writ...

该模块是对 epoll 的操作进行封装的一个模块,主要实现 epoll 的 IO 事件添加、修改、移除、获取活跃连接的功能。 而该模块的这些功能其实和 Channel 模块是相关联的,因为 Channel 模块管理的就是文件描述符的事件,又因为后面的 EventLoop 模块其实就封装了 Poller 模块,对所有的监控事件进行管理,所以 Channel 模块管理事件仅仅是对事件...

该模块是对一个描述符需要进行的 IO 事件管理的模块,实现对描述符可读,可写,错误..……事件的管理操作,以及 Poller 模块对描述符进行 IO 事件监控就绪后,根据不同的事件,回调不同的处理函数功能。 之所以需要有该模块,是为了更方便的在编码的时候进行一个文件描述符对应事件的维护处理,比如说对一个文件描述符可写事件的设置,这个动作是很频繁的,我们可以将其封装成接口使用等等情...