后端

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

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

27. Java中的反射机制

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

趣味数学:蜡烛还可以再烧多久?

蜡烛还可再烧多久? 易老师为学生思思和方方讲应用题。今天的题目是这样的: 两根粗细相同、材质相同但长度不同的蜡烛竖直地漂在水面上,一开始,长蜡烛露出水面的部分是短蜡烛总长度的一半;将两根蜡烛同时点燃 1 小时后,长蜡烛露出水面的部分与短蜡烛总长度相等. 已知蜡烛漂在水面上时,露出水面的长度始终等于蜡烛在水下长度的 ,那么短蜡烛还可再烧多久? 长蜡烛还可再烧多久? 易老师:拿到题目首先干什么

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

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

Mybatis的代理对象MapperProxy的CURD

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

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

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

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

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

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

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

缓存雪崩导致的危害和解决办法

1. Redis 数据失效导致的雪崩 因为缓存失效,从而导致大量请求导向数据库。 大量请求,导致数据库处理不过来,整个系统依赖数据库的功能全部崩溃 单系统挂掉,其他依赖于该系统的应用也会出现不稳定甚至崩溃 2. Redis数据失效的场景 最大内存控制 maxmemory 最大内存阈值 maxmemory-policy 到达阈值的执行策略 3. 缓存雪崩解