OkHttp3网络请求与连接管理
官网中文官网:http://okhttp.foofun.cn/英文官网:https://github.com/lysine-dev/okhttp OkHttp3特点 特性 说明 连接池复用 避免频繁 TCP 握手,高并发下性能优异 HTTP/2 支持 多路复用,单连接承载多个请求 超时控制精细 连接超时、读取超时、写入超时可独立配置 拦截器机制 统一处理日志、重试、加解密等横切逻辑 Dispatcher 控制并发请求数,防止资源耗尽 核心概念一次请求的完整链路1OkHttpClient → Request → Call → (拦截器链) → Response OkHttpClient:客户端工厂,管理连接池、超时、拦截器等全局配置(应全局单例) Request:描述一次 HTTP 请求(URL、Method、Header、Body) Call:Request 的可执行对象,.execute() 同步执行,.enqueue() 异步执行 Response:服务器返回的响应(状态码、Header、Body) 2.2 关键组件 组件 作...
JDK17新特性
概述 JDK 17 是继 JDK 8 之后最重要的 LTS 版本,支持至 2029 年。Spring 6.x / Spring Boot 3.x 最低要求 Java 17。 Records关键字 一个新的关键字,和class、enum一个级别。是不可变数据载体的终极方案,类似于Lombok功能。特别的是声明的时候就带有参数 解决的问题:传统 POJO/DTO/VO 需要编写私有字段、构造器、getter、equals()、hashCode()、toString() 等大量样板代码。 核心用法: 12345678// 一行代码定义一个不可变数据类public record Point(int x, int y) { }// 使用Point p = new Point(10, 20);System.out.println(p.x()); // 10(注意:是 x(),不是 getX())System.out.println(p); // Point[x=10, y=20]System.out.prin...
XXL-SSO单点登录
概述XXL-SSO 是一个 单点登录框架,只需要登录一次就可以访问所有相互信任的应用系统。更多可以查看官网:https://www.xuxueli.com/xxl-sso/ 快速入门 依赖 123456<!-- https://mvnrepository.com/artifact/com.xuxueli/xxl-sso-core --><dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-sso-core</artifactId> <version>{最新Release版本}</version></dependency> 具体代码可以查看:官方 | github
XXL-Boot
特点 开箱即用,处理好数据库就可以运行 安全登录,基于token登陆,集成XXL-SSO单点登录 RBAC(Role-based access control) 权限管控 更多可以查看[官网](> https://www.xuxueli.com/xxl-boot/) 概述
XXL-JOB分布式任务调度
先写标题,慢慢补充
JDK17 新特性
Java Stream 集合转 MapCollectors.toMap 详解场景:将 List 列表转换为 Map<K, T> 映射表,常用于通过唯一键(ID/编号)实现 O(1) 级别的快速数据查找。语法: 123456789import java.util.function.Function;import java.util.stream.Collectors;Map<String, DigitSiteEquip> equipMap = allDigitSiteEquips.stream() .collect(Collectors.toMap( DigitSiteEquip::getThirdNum, // 参数1:Key 生成器(取什么做键) Function.identity(), // 参数2:Value 生成器(取什么做值,identity表示对象本身) (oldValue, newValue) -> oldValue // 参数3...
SQL分组查询
基本语法123SELECT column1, column2, ...FROM table_nameORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...; group by 意思就是通过什么分组,就是把某个字段A相同的值分成一个组。但是分组之后,变成了一行,字段A大家都一样,其他字段可能都不一样,零零散散的。这个时候,就需要用到聚合函数,将这些零散的数据算出一个结果。 1234567-- 没分组:查出所有明细SELECT score FROM exam; -- 返回 100行-- 分组后:每个学生只占一行SELECT student_id, AVG(score) FROM exam GROUP BY student_id; -- 返回 10行(10个学生) 执行顺序有关group by的sql执行顺序是:FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT 需要注意的是: WHERE 在分组前执行,过滤的是原始行(里面可以用普通字段,不能用聚合函数)...
Mysql常见函数
SUBSTRING_INDEX 语法:SUBSTRING_INDEX(字符串, 分隔符, 计数) 参数含义: 字符串:要处理的原始文本。 分隔符:用来切割的字符,比如 /、,、- 等。 计数(正负决定方向):正数,从左往右数,找到第 N 个分隔符,返回分隔符左边的全部内容;负数反过来 eg:SUBSTRING_INDEX(‘a/b/c/d/e’, ‘/‘, 2) 从左数第 2 个 /(在 b 后面),返回左边 ‘a/b’ 日期范围筛选(字符串比较)字符串日期可以不使用日期笔记,可以直接使用字符串:where str BETWEEN '20250504' AND '20260818' 原理:格式为 YYYYMMDD 固定长度,字符串字典序与时间顺序完全一致(年→月→日优先级从左到右)。 局限性:仅适用于**“大端序”**且长度固定的日期格式,如 YYYY-MM-DD 亦可;但 DD/MM/YYYY 或可变长度(如 2025-5-3)会失效...
RabbitMQ消息队列
先记录一点工作中的使用,后面自己有时间补上基础至少核心概念 概念 说明 Producer(生产者) 发送消息的客户端应用程序 Consumer(消费者) 接收消息的客户端应用程序 Broker RabbitMQ 服务节点/服务实例 Connection(连接) 客户端与 Broker 之间的 TCP 连接 Channel(信道) TCP 连接上的虚拟连接,用于复用 TCP 连接、减少开销 Queue(队列) 存储消息的数据结构,消息的容器 Exchange(交换机) 消息分发中心,接收生产者消息并按规则路由到队列 Binding(绑定) 交换机和队列之间的虚拟连接,绑定中可包含 Routing Key Routing Key(路由键) 消息头的属性,决定交换机的转发路径 Virtual Host(虚拟主机) 逻辑隔离机制,类似 MySQL 的 database 工作流程:生产者 → 发送消息到 Exchange → Exchange 根据 Routing Key 和 Binding 规则 → 路由到对应 Queue → ...








