- 博客(10)
- 收藏
- 关注
原创 一个数据库表量太大应该如何优化?
当 MySQL 单表记录数过大时,数据库的 CRUD 性能会明显下降。CRUD 是数据库操作的四个基本功能缩写,分别代表创建(Create)、读取(Read)、更新(Update)和删除(Delete)。
2025-06-07 09:47:44
491
原创 谈谈你对事务的理解
事务(transication)是数据库操作的最小逻辑单位。需要InnoDB引擎才支持。事务开始后所有操作要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作想没有发生过一样,也就是说事务是一个不可分割的整体。事务开始前和结束后,数据库的完整性约束没有被破坏。在同一个事务中看到的数据是一致的。同一时间,只允许一个事务请求同一数据,不同事务之间彼此没有任何干扰。举个例子来说:就是A在一张银行卡里取钱,在A取钱的过程结束之前,B不能向这张银行卡转账。
2025-05-28 17:09:03
367
原创 谈谈MYISAM引擎和INNODB引擎的区别
首先,从MySql5.5版本以后将innodb引擎做为默认的数据库引擎,之前的版本是以myisam引擎作为默认的数据库引擎。myisam引擎和innodb主要有以下五个区别。
2025-05-27 19:42:01
296
原创 谈谈你对MYSQL数据库常用引擎的理解
允许将多个结构相同的 MyISAM 表 “逻辑合并” 为一个虚拟表,对外提供统一访问接口,但数据仍存储在原物理表中;MySql数据库常用的引擎有四种分别为:myisam引擎,innodb引擎,memory引擎和merge引擎。默认使用HASH索引,检索效率非常高,但不适用于精确查找,主要用于那些内容变化不频繁的代码表;存储在内容中,速度快,但会占用和数据量成正比的内存空间且数据在 mysql 重启时会丢失;MERGE 引擎是 MySQL 早期版本(5.7 及之前)提供的一种特殊存储引擎;
2025-05-27 17:05:38
210
原创 CPU使用率达到100%系统反应速度慢应该怎么排查
i.CPU 利用率过高的线程一直是同一个,说明程序中存在线程长期占用 CPU 没有释放的情况,这种情况直接通过 jstack 获得线程的 Dump 日志, 定位到线程日志后就可以找到问题的代码。CPU 只能通过上下文切换的方式来执行不同的线程,如果较多的上下文切换会占据大量 CPU 资源,从而使得 CPU无法去执行用户进程中的指令,导致响应速度下降。ii.CPU 利用率过高的线程 id 不断变化,说明线程创建过多,需要挑选几个线程 id,通过 jstack去线程 dump 日志中排查。
2025-05-24 15:00:58
559
原创 Spring Boot 约定优于配置的理解
维护第三方组件集成到 Spring IOC 容器中的配置项)且这些配置还需要多次维护。2、Spring Boot 就是在这样一种理念下生成的,它就好比Spring框架的一个底座,我们可以通过Spring Boot 更轻松简洁地搭建出一个基于Spring生态的程序。这里面的核心就在于减少软件开发(程序员)对配置项的维护,从而有更多的精力投入到功能逻辑的开发及业务场景的搭建。而在 Spring Boot 中,我们不需要再去做这些繁琐的配置,Spring Boot 已经自动帮我们完成了,这就是约定于配置的体现。
2025-05-24 10:43:12
216
原创 谈谈你对Seata的理解
对于这类问题的解答思路,一般按照以下几个方面进行阐述:1. 它是什么?2. 它能解决什么问题?3. 它有哪些特点和优势?4. 它的核心原理,为什么能解决这类问题?Seata全称为(简单可扩展的自治事务框架),Seata是由阿里巴巴开源的分布式事务解决方案。主要是解决微服务架构下的分布式事务问题,确保跨服务事务的一致性问题。在微服务架构中,一个业务操作可能需要调用多个服务、操作多个数据库(甚至跨数据库类型)。传统的单体事务(如数据库本地事务)无法解决跨服务的事务一致性问题。Seata 采用。
2025-05-19 19:37:37
846
原创 利用哈希表来判断链表中是否有环的存在
什么是链表?链表就是集合的一种,由于我们常用的同类元素容器——数据长度一旦确定就再也无法发改变,没有办法实现动态的增减元素。这时候我们想要在不确定长度的情况下动态的增减元素,就需用用到集合,链表正是集合的一种,它实现的是List接口。 链表通常由一连串节点组成,每个节点包含该节点的数据和指向上一节点或者下一节点的引用。 单向链表包含两个部分内容,一是保存某些数据信息的对象,另一个是存储下一个节点的地址,最后一个节点存储的地址是指向空值。 如果单向链表一个节点储存的地址是指向别的节点地址那么我们称这个链
2021-11-06 14:29:22
545
原创 数据流中的中位数
很简单一个排序算法题。要求自己写一个Insert的方法来读取流中的数据,再写一个GetMedian方法来计算中位数。如果流中的数据是奇数则返回中间的数即可,如果流中的数据是偶数则返回中间的两个数的平均值。 具体实现流程,现在方法区中创建一个动态数组来接受流中的数据,我用的是Vertor集合,特点就是查找快,增删慢,底层就是一个数组。然后在Insert方法中只需要写一句添加元素的操作即可。然后在GetMethdian方法中先对流中的数据进行排序用sort方法,再加一个奇偶的判断即可。 完整代码实现如下:
2021-11-05 20:25:58
184
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅