自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 MySQL 的 Explain 命令

使用 MySQL 数据库时,经常会有查询效率慢的时候,此时就需要进行优化,Explain 就是用来帮助开发者完成优化分析的重要命令,他能直观的显示出来此时 SQL 语句执行的情况,比如常见的是否使用了索引,用了哪个索引,以及访问了多少条数据才得到结果的数据等。这也是面试当中常见的考点。

2024-05-24 09:44:28 541

原创 后端雪花算法主键ID传到前端变了

这个主键策略会用雪花算法生成一个 19位的ID,比如 1791006670084734978。

2024-05-18 14:47:36 242

原创 RabbitMQ 交换机类型

一个生产者给多个队列发送消息,X 代表交换机。交换机的作用:类似网络路由器,主要提供转发功能,解决怎么把消息转发到不同的队列中,让消费者从不同队列取然后消费。绑定:交换机和队列关联起来发布订阅交换机,队列进行持久化,生产者发布消息,所有消费者都能接收到消息。生产者代码消费者代码channel 频道:理解为操作消息队列的 Client,通过 channel 收发消息,提供了和消息对了 server 建立通信的传输方法方法参数:queue:这是一个字符串参数,代表要声明的队列的名称。

2024-05-18 14:15:40 1049

原创 RabbitMQ 消息队列安装及入门

RabbitMQ 安装及入门消费者,生产者

2024-05-18 12:29:01 987

原创 Redis基于Redisson的限流和限流算法

限流是在高并发或者某个瞬间高并发时,为了保证系统的稳定性,对超出服务处理能力之外的请求进行拦截,对访问服务的流量进行限制。

2024-05-16 13:01:21 695

原创 Java中的常见的 IO 模型

I/O 就是输入和输出,为了保证操作系统的稳定性和安全性,一个进程的地址空间分为用户空间和内核空间。平时运行的应用程序都是在用户空间内,内核空间进行系统级别的资源有关的操作。比如果文件管理,进行通信等。用户空间的程序不饿能直接访问内核空间。当程序执行 IO 操作时,应用程序发起调用请求让操作系统帮助。开发中接触的比较多的就是磁盘 IO 、文件读写和 网络 IO、网络请求和响应。从应用程序来看,应用程序就是向操作系统的内核空间发起调用请求,操作系统的内核执行实际的 IO 操作。

2024-05-15 09:18:39 707

原创 Redis为什么快

用了那么久的redis,突然意识到这个问题答不上来,只知道内存数据库,内存的读写性能快于磁盘。

2024-05-14 11:18:10 462

原创 Redis 持久化机制

Redis 持久化机制有三种:1. RDB,快照的方式2. AOF 只追加文件的方式3. 二者结合(4.0之后新增)

2024-05-11 18:06:10 911 1

原创 Vue + Vite + Axios 项目多环境以及部署前后端跨域

最近在前端多环境和部署服务器之后出现的跨域的问题。

2024-05-10 17:15:26 584 3

原创 Java 常见集合类

Java 的集合,也可以叫做容器,根据集合的整体框架可以看出,主要是两大集合接口:第一个是 Collection 接口,主要用来存放单一的元素对象;另一个是 Map 接口,主要用于存储键值对。Collection 接口有三个子类,List、Set、Queue,下面是抽象类和具体实现类,主要说明具体实现类。常见的有 ArrayList、LinkedList、HsahSet、LinkedHashSet、HsahMap、LinkedHshMap等。

2024-05-08 20:51:59 1133

原创 Redis——缓存雪崩、缓存穿透、缓存击穿

在项目中,通常会使用数据库比如 MySQL 存储应用数据,但是当数据太多之后,比如多了几十万条或上百万条的商品信息,这个时候查询商品数据的速度会很慢,影响用户体验。此时一般我们会选择将部分商品信息缓存起来,提高商品的查询速度,比如使用 Redis 将明天参加秒杀活动的商品提前缓存起来,用户直接访问到缓存。速度不会很慢,也不会对数据库产生太大压力。不过,Redis 缓存也会出现问题,最常见的在某个时间点,缓存出现的大量失效的情况,导致大量的数据直接请求到了数据库,就像雪崩一样,给数据库造成巨大压力。

2024-05-07 16:36:47 585

原创 操作系统的死锁

死锁是指在多道程序环境下,若干进程之间因为抢夺资源而完成的进程互相等待现象。从而导致这些进程都没法继续执行,造成进程间的死锁。举个例子。现在有甲乙两个人在修车,甲手里有扳手,乙手里有螺丝刀,甲这个时候需要螺丝刀才能继续工作,相同的,乙需要扳手才能继续工作,此时他们两个都在等待对方将持有的工具放下,然后获取到之后继续工作,于是他们两就僵持住了,导致工作都无法继续执行。

2024-05-07 09:50:11 349

原创 MySQL 事务的隔离级别

1. 原子性。事务内的操作都是原子性的,要么都失败,要么都成功。2. 一致性。事务执行前后的数据是一样的,比如转账前后的总金额都是一样的。3. 隔离性。并发环境下,并发事务之间时相互隔离的,互不影响。4. 持久性。事务提交之后,数据拥有持久性,即使数据库出现故障也不会导致数据丢失。

2024-05-06 21:14:09 1033

原创 MySQL 数据库事务 ACID 特性

将一些对数据库的操作组成一个集合,这个集合就是事务。事务的特点,包含在内的操作要么都执行,要么都失败。关于事务经典的问题就是金融转账了,小明要向小红转账1000元,转账的过程中包含了以下操作。1. 小明发起转账,账户金额 - 1000;2. 小红接收转账,账户金额 + 1000;整个转账的流程就是一个事务,这个事务包含了以上两个操作。此时,如果因为某些原因导致其中一个操作执行失败了,如果不保证事务的全失败或者全成功,那么就是出现小红账户 + 1000,而小明金额不变, 他两的总金额就改变了。

2024-05-06 12:39:51 1002

原创 常见排序算法——快速排序

归并排序,是通过将数组 n / 2 进行分组,然后比较遍历元素之间进行的排序。快速排序在归并排序的基础上,直接在数组中选取一个中心点(基点),以升序为例,将比中心点小的放在左边,比他大的放在右边。特点就是快速排序分的两部分,一部分一定比另一部分小。

2024-05-04 17:44:48 322

原创 常见排序算法——归并排序

分治思想,通过将一个大问题分成小问题,然后将每个小问题解决,合并成最大的问题。将待排序的序列分成小序列,将小序列排序完成后组成大序列,大序列之间再进行排序,直到组成初始的数组。

2024-05-04 16:38:42 126

原创 利用 nvm 管理 nodejs 的版本

利用 nvm 管理 nodejs 的版本

2024-05-03 17:40:08 903 1

原创 使用 WordPress 快速搭建个人博客

使用 WordPress 快速搭建个人博客

2024-05-03 17:38:21 938 1

原创 SpringBoot使用@Scheduled注解实现定时任务

SpringBoot使用@Scheduled注解实现定时任务

2024-05-03 17:35:17 1108 1

原创 常见排序算法——希尔排序

希尔排序在插入排序的基础之上,将待排序序列分成组,分成 gap 个组,组的数量通过 length / 2 获得,比如6个元素的序列,那么就是 3 个组,每个组两个元素,然后将每个组的元素进行插入排序即可,此时分组完成之后,将3个组再分,得到1,进行常规插入排序即可。每次插入排序,不是和前一个元素进行比较,而是和前面第 gap 个元素进行比较。

2024-05-03 17:30:52 398 1

原创 常用排序算法——插入算法

插入算法从名字就能理解,可以用玩扑克牌理牌来比喻1. 当摸完牌之后,根据牌的大小进行排序,比如 3,5,7,8,9,4,需要将 4 插入到 3 的后面2. 此时 4 的下标应该改为 index = 1,而从 5 开始的元素就要集体往后移一位3. 所以可以这样:用 4 和前一个元素进行比较,如果比它小,就和他交换,再次和前一位元素比较,如果比他小就再交换,直到 4 比前一个元素比它大时。

2024-05-03 16:44:46 228 1

原创 自定义全局异常处理器

在写代码的过程中,常常会因为需要提前处理上述的异常,就会出现大量的 try / catch 语句,影响代码的可读性。此时使用全局异常处理器就能减少这些冗余的代码。自定义全局异常处理器,可以更清楚返回给客户端异常的原因即相关描述,更加个性化以及更加灵活。学名是 Controller 增强器,作用是给 Controller 控制器添加统一的操作和处理。结合实现全局异常处理。用于处理应用程序中的异常,当程序发生异常时,该注解会将其拦截并处理,并返回结果给前端。

2024-05-02 12:09:01 798

原创 常见排序算法——选择排序

常见排序算法——选择排序

2024-05-02 09:43:48 219

原创 常见排序算法——冒泡排序

常见排序算法——冒泡排序

2024-05-02 09:22:43 9

原创 vant4 使用 FormData 传文件到后端变成{}

这样就可以将 excel 格式的文件序列化,此时,使用 axios 将文件传到后端时,会出现 数据文件被序列化后转为空。transformRequest 是一个请求转化器,主要功能是在请求前对数据进行转换。如果想深入了解的话 可以参考。上传文件之后会调用回调函数将数据表上传 :after-read。上传的文件需要进行二级制的序列化,使用 FormData()此时需要在 axios 传输的时候进行配置。前端使用的 vant4 框架进行文件上传。首先使用框架中的组件 uploder。

2024-04-19 23:13:51 200 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除