后端

Netty的内存分配相关知识&零拷贝机制

1. Netty 自己的ByteBuf ByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的。 JDK ByteBuffer的缺点: 无法动态扩容 长度固定,无法动态扩展和收缩,当数据大于ByteBuffer容量时,会发生索引越界异常。 API使用复杂 读写的时候需要手工调用flip() 和 rewind() 等方法,使用时需要非常谨慎的

【MySQL数据库基础】(六)MySQL 表的约束详解:从基础到实战,拿捏数据合法性!

前言         在 MySQL 数据库开发中,我们总希望存入表中的数据是合法、规范、符合业务逻辑的。虽然数据类型能对字段做基础限制,但面对复杂的业务需求,仅靠数据类型远远不够。比如要求邮箱唯一、用户名不能为空、学生的班级必须是已存在的班级…… 这些需求都需要靠表的约束来实现。         表的约束是数据库保证数据完整性的核心手段,

27. Java中的反射机制

1、Java中创建对象的方式 new + 构造方法 反序列化(存储在文件中对象,还原回来) java反射机制 2、已经使用反射的场景 jdbc 加载驱动 Class.forName("com.mysql.jdbc.Driver"); servlet servlet 对象有服务器创建 <servlet-class>com.company.project.servle

Mybatis的代理对象MapperProxy的CURD

上篇-原生mybatis流程 因Mapper是interface,不能实例化对象,所以必须使用动态代理(使用JDK动态代理)创建代理对象MapperProxy,又因Mapper是接口,没有具体的方法体,所以MapperProxy的invoke方法中自行编写方法逻辑,下面介绍CURD的执行过程。 public class MapperProxy<T> implements Invocat

Java/Spring/Dubbo三种SPI机制,到底谁更好?

SPI 机制应用在了大家项目中的很多地方,在很多框架中也有普遍应用,只不过很多人并没有感知。 举个例子,为什么我们在项目中引入 mysql-connector 的 jar 包,就可以直接连接 MySQL 数据库了? 本篇文章就来介绍一下 SPI,聊聊 Java 、Spring、Dubbo 中的 SPI 机制。 SPI SPI ( Service Provider Interface),是一种服务发

在SpringBoot中使用logback优化异常堆栈的输出

一、背景 在我们在编写程序的过程中,无法保证自己的代码不抛出异常。当我们抛出异常的时候,通常会将整个异常堆栈的信息使用日志记录下来。通常一整个异常堆栈的信息是比较多的,而且存在一些没用的信息。那么我们如何优化一些异常堆栈的信息打印,过滤掉不必要的信息呢? 二、需求 1、现有的异常堆栈信息 现有的异常堆栈信息 2、我们想优化成如下 优化后的堆栈信息 三、使用的技术 1、此处我

测试KingbaseES在线体验平台:从架构解析到代码实战的企业级数据库修炼指南

目录 📊 文章框架 第一章:国产数据库新标杆的诞生背景 1. 数字化转型中的数据库选型之痛 2. 在线体验平台架构解析 第二章:核心功能实战演练 1. 查询 1. 示例查询 2. 关联查询 3. 分组查询 4. 子查询 5. with子句 2. 视图 1. 视图创建 2. 视图查询 3. 删除视图

《数据结构和算法之美》学习笔记 Day 2

课程:《复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?》 总结 算法的一个非常重要的的考量指标是执行效率,复杂度分析就是用来衡量代码执行效率的一种方法。前面又提到复杂度分析是数据结果和算法学习的精髓。 为什么需要复杂度分析? 1. 实际的测试结果非常依赖测试环境 比如测试环境硬件配置不一样,得到的结果截然不同 2. 测试结果受数据规模的影响很大 比如排序算法,就会受实际测试数据的有序

告别手写SQL?Cursor智能生成实战指南与避坑技巧

文章目录 前言 一、 原理揭秘:Cursor 为什么比 ChatGPT 更懂你的数据库? 1. 核心架构组件 2. 架构流程图解 二、 实战教学:从自然语言到高质量 SQL 场景一:自然语言生成 SQL(Text-to-SQL) 场景二:复杂 SQL 生成(