- 博客(181)
- 收藏
- 关注
原创 ThreadLocal的作用是什么?ThreadLocal使用,源码分析以及内存泄漏问题介绍
引用类型引用强度垃圾回收条件适用场景强引用最强强引用不存在时才可能被回收普通对象的创建和使用软引用较强系统将要发生内存溢出异常之前回收内存敏感的缓存弱引用较弱垃圾回收时必定回收避免内存泄漏,如虚引用最弱不影响对象生命周期,用于对象回收通知资源清理操作,如直接内存管理。
2025-02-11 08:46:45
1014
原创 【MySql】数据库Undo日志介绍
redo log是事务持久性的保证,undo log是事务原子性的保证。在事务中更新数据的前置操作其实是要先写入一个undo log。
2025-02-06 08:53:34
708
原创 【MySql】数据库Redo日志介绍
事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?REDO LOG 称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。UNDO LOG 称为回滚日志,回滚行记录到某个特定版本,用来保证事务的原子性、一致性。有的DBA或许会认为 UNDO 是 REDO 的逆过程,其实不然。物理级别逻辑操作事务的回滚逆操作一致性非锁定读。
2025-02-05 09:35:39
680
原创 位图和布隆过滤器以及海量数据相关面试题
一种支持删除的方法:将布隆过滤器中的每个比特位扩展成一个小的计数器,插入元素时给k个计数器(k个哈希函数计算出的哈希地址)加一,删除元素时,给k个计数器减一,通过多占用几倍存储空间的代价来增加删除操作。求小文件交集:对于编号相同的小文件,将其中一个小文件的整数加载到内存中的哈希集合中,然后遍历另一个小文件的整数,检查是否在哈希集合中,如果存在则为交集元素。4. 解决数据库缓存击穿,黑客攻击服务器时,会构建大量不存在于缓存中的key向服务器发起请求,在数据量足够大的时候,频繁的数据库查询会导致挂机。
2025-01-31 09:21:27
755
原创 【Redis】Redis 典型应用 - 缓存 (cache)
缓存 (cache) 是计算机中的一个经典的概念. 在很多场景中都会涉及到.核心思路就是把一些常用的数据放到触手可及(访问速度更快)的地方, 方便随时读取.🐵 举个例子:比如我需要去高铁站坐高铁. 我们知道坐高铁是需要反复刷身份证的 (进入高铁站, 检票, 上车,乘车过程中, 出站....).正常来说, 我的身份证是放在皮箱里的(皮箱的存储空间大, 足够能装). 但是每次刷身份证都需要开一次皮箱找身份证, 就非常不方便.
2024-12-26 07:45:00
1634
原创 【Redis】Redis RDB和AOF持久化介绍
Redis 支持 RDB 和 AOF 两种持久化机制,持久化功能有效地避免因进程退出造成数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。本章内容:• 介绍 RDB、AOF 的配置和运行流程,以及控制持久化的命令,如 bgsave 和bgrewriteaof。• 对常见持久化问题进行分析定位和优化。
2024-12-22 07:45:00
750
原创 【MySql】数据库中索引失效的场景
这是因为我们需要把索引字段的取值都取出来,然后依次进行表达式的计算来进行条件判断,因此采用的就是。在使用LIKE关键字进行查询的査询语句中,如果匹配字符串的第一个字符为“%”,索引就不会起作用。在 WHERE 子句中,如果在 OR 前的条件列进行了索引,而在 OR后的条件列没有进行索引,那么索引会失效。索引提供了高效访问数据的方法,并且加快查询的速度,因此索引对查询的速度有着至关重要的影响。其实,用不用索引,最终都是优化器说了算。存储引擎的表来说,在我们没有显式的创建索引时,表中的数据实际上都是存储在。
2024-12-16 07:45:00
941
原创 【MySql】MySQL 索引数据结构选择的合理性
从MySQL的角度讲,不得不考虑一个现实问题就是磁盘IO。如果我们能让索引的数据结构尽量减少硬盘的 IO 操作,所消耗的时间也就越小。可以说,磁盘的 IO 操作次数对索引的使用效率至关重要。查找都是索引操作,一般来说索引非常大,尤其是关系型数据库,当数据量比较大的时候,索引的大小有可能几个G甚至更多,为了减少索引在内存的占用,。当我们利用索引查询的时候, 不可能把整个索引全部加载到内存,只能逐一加载,那么MySQL衡量查询效率的标准就是磁盘IO次数。
2024-12-12 07:45:00
630
原创 【MySql】数据库索引概念及其作用详细介绍
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构索引的本质:索引是数据结构。你可以简单理解为 “排好序的快速査找数据结构”,满足特定查找算法这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法。
2024-12-10 08:00:00
1121
原创 【MySql】MVCC是如何解决幻读的? MVCC实现原理详细介绍
MVCC(Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。MVCC 没有正式的标准,在不同的 DBMS 中 MCC 的实现方式可能是不同的,也不是普遍使用的(大家可以参考相关的 DBMS 文档)。
2024-12-09 07:45:00
2129
原创 【MySql】数据库的一二三范式详细介绍
本文围绕范式相关内容展开论述。先是对范式进行了总体介绍,随后列举了范式包含的具体类型。接着阐释了键与相关属性概念,在此基础上分别详细讲解了第一范式(1st NF)、第二范式(2nd NF)以及第三范式(3rd NF)。还着重探讨了反范式化,涵盖其概述、应用举例,同时分析了反范式带来的新问题以及适用场景,整体系统且全面地呈现了范式及反范式化等多方面的关键知识要点。
2024-12-06 07:45:00
2074
原创 【Redis】Redis Zset 有序集合常见指令, 内部编码以及使用场景介绍
本文于reids一系列命令相关内容,条理清晰且全面实用。开篇详述诸多普通命令,涵盖数据添加(ZADD)、统计集合基数(ZCARD)、按分数范围查询(ZRANGEBYSCORE)等操作,各命令各司其职,应对多样数据处理需求。集合间操作部分,着重介绍 ZINTERSTORE 和 ZUNIONSTORE,助力实现集合交叉、合并存储等复杂功能。此外,设有命令小结梳理要点,提及内部编码剖析原理,还探讨使用场景,旨在为使用者提供从基础指令到实践运用的完整指南。
2024-12-01 08:15:00
1014
原创 【Redis】Redis Set 集合常见命令, 内部编码以及使用场景介绍
本文聚焦 Redis Set 集合,详细介绍常见命令。普通命令如 SADD 用于添加成员,SMEMBERS 查看成员等,实现集合基本操作。集合间操作命令像 SINTER 等,可处理集合交集、并集、差集等运算及存储。接着进行命令小结梳理要点。还深入剖析内部编码原理,最后展示在数据去重、关系判断等多样使用场景中的应用,助读者全面掌握 Redis Set 集合的运用及底层逻辑。
2024-11-30 08:15:00
1070
原创 【Redis】Redis List 列表
本文介绍 redis list 相关命令,涵盖 LPUSH、RPUSH 等常规及阻塞版本命令,详述其功能与操作方式。通过命令小结梳理要点,探讨内部编码原理,并展示在多种使用场景下的应用,助读者全面了解 redis list 的使用及优势。
2024-11-29 08:00:00
1486
原创 【Redis】Hash 哈希数据类型介绍
本文围绕 redis hash 数据类型展开。介绍 HSET、HGET 等常见命令及其功能,通过命令小结梳理要点。探讨内部编码,分析在不同使用场景下的应用,还对比了相关缓存方式,全面呈现 redis hash 数据类型在数据处理、缓存应用等方面的关键内容。
2024-11-29 07:30:00
693
原创 【Redis】Redis String 字符串
本文聚焦系列命令,常见命令涵盖 SET、GET 等,助数据存取值;计数命令如 INCR 系列,实现数值灵活运算;另有 APPEND 等处理字符串。总结各命令特点后剖析内部编码,更展示其在缓存、计数、手机验证码场景的关键效用。
2024-11-28 07:45:00
1030
原创 【Redis】Redis 预备知识
本文围绕 Redis 相关内容展开。首先介绍了如 KEYS、EXISTS 等基本全局命令及其作用。接着提及数据结构和内部编码方面知识。最后阐述了 Redis 的单线程架构特点。通过这些内容,能帮助读者初步了解 Redis 在命令使用、结构编码及架构上的关键要点。
2024-11-27 07:30:00
869
原创 【Redis】Redis介绍
本文围绕 Redis 展开阐述。首先介绍 Redis 是一款具备多种特性的工具,其速度快,基于键值对的数据结构,功能丰富且简单稳定,支持多客户端语言,还有持久化、主从复制、高可用及分布式等特性。接着指出 Redis 的诸多使用场景,涵盖缓存、排行榜系统、计数器应用、社交网络、消息队列系统等方面。最后还提及 Redis 不可以做的事情。总体而言,通过对 Redis 的特性、应用场景及限制的介绍,能让读者较为全面地了解 Redis。
2024-11-26 07:00:00
1315
原创 【JavaEE进阶】Spring 事务和事务传播机制
本文全面阐述了事务相关内容。先是回顾事务,包括其定义为一组操作的集合,要么全成功要么全失败;阐述需要事务来保证数据一致性和完整性;介绍事务操作。接着讲 Spring 事务实现,编程式事务作简单了解,重点是声明式 @Transactional。通过对比事务提交和回滚日志加深理解。还详细解析 @Transactional,如 rollbackFor 属性和失效场景。同时涵盖事务隔离级别,包括 MySQL 和 Spring 的相关内容,以及 Spring 事务传播机制的概念和多种类型。
2024-11-12 07:30:00
1177
原创 【JavaEE进阶】Spring AOP 原理
文章先介绍代理模式,即通过代理类控制对其他对象的访问。分为静态和动态代理。静态代理在程序运行前代理类已存在,手动编写代码实现,不够灵活。JDK 动态代理在运行时利用反射创建,需实现 InvocationHandler 接口,但只能代理接口。CGLIB 动态代理基于字节码生成库,通过继承实现,可代理类和接口,需添加依赖。还讲解了它们在框架中的应用,如 Spring AOP 会根据情况选择,同时对比了两者的区别。
2024-11-10 11:10:30
814
原创 【RabbitMQ】RabbitMQ 7种工作模式简单使用示例
本文对 RabbitMQ 7 种工作模式,包括简单模式、工作队列、发布 / 订阅等进行了详细介绍和代码演示
2024-10-15 10:03:45
1043
原创 【RabbitMQ】RabbitMQ 的七种工作模式介绍
本文介绍RabbitMQ 的 7 种工作模式,包括简单模式、工作队列、发布 / 订阅等,各模式特点不同,适用不同场景,如消息传递、异步处理等。
2024-10-13 21:02:36
1020
1
原创 【RabbitMQ】RabbitMQ 的概念以及使用RabbitMQ编写生产者消费者代码
本文介绍了 RabbitMQ 的核心概念,包括生产者、消费者、Connection 和 Channel、Virtual host、Queue、Exchange 等,还讲解了 AMQP 协议及 RabbitMQ 快速入门,包括引入依赖、编写生产者和消费者代码及示例。
2024-09-23 17:00:57
2105
原创 【JavaEE】JVM 内存区域划分,以及 Java 垃圾回收机制引用计数器,可达性分析等
本文主要介绍了JVM 内存区域划分, 堆, 栈, 程序计数器, 元数据区,以及 Java 垃圾回收机制引用计数器,可达性分析, 垃圾回收算法等
2024-08-16 08:02:39
926
1
原创 【数据结构】二叉搜索树的实现
这篇文章主要介绍了二叉搜索树的概念以及各种操作, 如查找, 插入, 删除. 其中删除操作最为复杂, 需要分情况讨论. 最后对二叉搜索树的性能进行简单分析.
2024-08-14 07:00:00
582
原创 【数据结构】十大排序算法总结和代码实现(插入, 希尔, 选择, 堆排, 冒泡, 快排, 归并, 计数)
本文主要介绍了十大排序算法总结和代码实现(插入, 希尔, 选择, 堆排, 冒泡, 快排, 归并, 计数)
2024-08-12 07:00:00
1019
原创 【JavaEE进阶】数据库加密 -- MD5 加密方法
是指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法. 摘要算法是不可逆的, 也就是无法解密. 通常用来检验数据的完整性的重要技术, 即对数据进行哈希计算然后比较摘要值, 判断是否一致. 常见的摘要算法有: MD5, SHA系列(SHA1, SHA2等), CRC(CRC8, CRC16, CRC32)
2024-08-11 06:00:00
1335
原创 【JavaEE进阶】用户登录场景中的令牌技术(JWT令牌)
JWT全称: JSON Web Token官网:JSON Web Token(JWT) 是一个开放的行业标准(RFC 7519), 用于客户端和服务器之间传递安全可靠的信息.其本质是一个token, 是一种紧凑的URL安全方法.
2024-08-10 10:16:26
1171
原创 【JavaEE进阶】Spring AOP使用篇
创建一个注解类(和创建Class文件一样的流程, 选择Annotation就可以了)代码简单说明, 了解即可, 不做过多的解释1. @Target 标识了 Annotation 所修饰的对象范围, 及该注解可以用在什么地方.常用取值:ElementType.TYPE: 用于描述类, 接口(包括注解类型)或 enum 声明ElementType.METHOD: 描述方法ElementType.PARAMETER: 描述参数ElementType.TYPE_USE: 可以标注任意类型。
2024-06-27 22:48:52
1181
2
原创 【JavaEE进阶】Spring统一功能处理:统一异常处理和统一结果返回
2.降低前端程序员和后端程序员的沟通成本,按照某个格式实现就可以了, 因为所有接口都是这样返回的.4.有利于后端技术部门门]的统一规范的标准制定,不会出现稀奇古怪的返回内容.在图书管理系统中的强制登录的过程中, 我们共做了两步工作。1.方便前端程序员更好的接收和解析后端数据接口返回的数据。在多次测试不同的返回结果之后, 发现只有返回结果为。2.对后端返回数据进行封装, 告知前端处理的结果。类名, 方法名和返回值可以自定义, 重要的是注解。要进行处理,其他的不进行处理.接口返回为数据是, 需要加上。
2024-06-25 23:59:15
1220
原创 【JavaEE进阶】Spring统一功能处理:拦截器的使用
定义拦截器: 实现HandlerInterceptor接口, 并重写其所有方法@Slf4j@Overridelog.info("LoginInterceptor ⽬标⽅法执⾏前执⾏..");@Overridelog.info("LoginInterceptor ⽬标⽅法执⾏后执⾏");@Overridelog.info("LoginInterceptor 视图渲染完毕后执⾏,最后执⾏");
2024-06-18 09:53:58
1204
1
原创 【JavaEE进阶】Cookie和Session详解
Cookie是服务器传给客户端的体积很小的纯文本文件。客户端请求服务器,如果服务器需要记录该用户状态,就向客户端浏览器发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。HTTP协议自身是属于"无状态"协议."无状态"的含义指的是:默认情况下HTTP协议的客户端和服务器之间的这次通信,和下次通信之间没有直接的联系.
2024-04-07 09:18:58
1418
47
原创 【JavaEE进阶】SpringMVC中的常用注解和用法
是应用程序中最常被用到的注解之一, 它是用来注册接口的路由映射的.表示服务收到请求时, 路径为/sayHi的请求就会调用sayHi这个方法的代码.当用户访问一个URL时,将用户的请求对应到程序中某个类的某个方法的过程就叫路由映射.既然已经可以达到我们的⽬的了, 我们为什么还要加呢?我们把去掉, 再来访问⼀次:可以看到, 程序报了404, 找不到该页⾯.这就是起到的作用.一个项目中,会有很多类,每个类可能有很多的方法,Spring程序怎么知道要执行哪个方法呢?
2024-04-05 21:52:05
2164
56
原创 【JavaEE】网络原理: HTTPS协议相关内容
HTTPS也是一个应用层协议, 是在HTTP协议的基础上引入了一个加密层.HTTP协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡改的情况.
2024-02-26 22:59:10
1040
7
原创 【JavaEE】网络原理: HTTP协议相关内容
思考问题:为什么HTTP报文中要存在"空行"?因为HTTP协议并没有规定报头部分的键值对有多少个. 空行就相当于是"报头的结束标记", 或者是"报头和正文之间的分隔符".HTTP在传输层依赖TCP协议, TCP是面向字节流的. 如果没有这个空行,就会出现"粘包问题".
2024-02-22 11:24:39
1426
2
原创 【JavaEE】网络原理: UDP协议和TCP协议的相关内容
网络通信中, 协议是一个非常重要的概念. 协议进行了分层, 此处就是按照这几层顺序来介绍每一层中的核心协议.
2024-02-14 10:03:32
1548
3
原创 【JavaEE】网络原理:UDP数据报套接字编程和TCP流套接字编程
1.1 DatagramSocketDatagramSocket 是UDP Socket,用于发送和接收UDP数据报。DatagramSocket 的构造方法:方法签名方法说明DatagramSocket()创建⼀个UDP数据报套接字的Socket,绑定到本机任意⼀个随机端口(⼀般用于客户端)DatagramSocket(int port)创建⼀个UDP数据报套接字的Socket,绑定到本机指定的端口(⼀般用于服务端)
2024-01-27 20:03:26
1416
12
原创 【JavaEE】网络原理: 网络编程套接字(概念)
网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信 (或称为网络数据传输)。当然,我们只要满足进程不同就行;所以即便是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程.特殊的,对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。进程A:编程来获取网络资源进程B:编程来提供网络资源。
2024-01-27 17:14:26
1329
1
原创 【JavaEE】网络原理:网络中的一些基本概念
协议分层是将网络协议按照不同的功能和层次进行分组和组织的一种方式。它将复杂的网络通信过程划分为多个层次,每个层次负责特定的功能和任务。
2024-01-20 22:05:32
1398
13
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人