99 1 分钟

✨mybatis-plus 是现在我们经常使用的插件,极大的提高了我们开发的效率,LambdaQueryWrapper 类我们也经常使用,我把大部分的方法,可以把本网址收藏起来 方便以后查阅。 🚀🚀🚀
5.9k 10 分钟

我们经常说的通信协议,以及三次握手四次挥手,都是什么? http 和 https 有什么关系,建立链接的流程一样么?为什么 https 就安全了? 读完这篇文章你就会有非常深刻的认识🙇 # 协议 📌网络协议是计算机之间为了实现网络通信而达成的一种 “约定” 或者” 规则 “,有了这种” 约定 “,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信。 # HTTP 协议 ✨HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在...
2.8k 5 分钟

面试经常被问到的问题,今天给大家总结一下📌 # 进程和线程 # 进程 教科书上解释:进程是资源分配的最小单位 👀可以理解为:先加载程序 A 的上下文,然后开始执行 A,保存程序 A 的上下文,调入下一个要执行的程序 B 的程序上下文,然后开始执行 B, 保存程序 B 的上下文。进程的生命周期有调入,执行,保存的过程。 # 线程 教科书上解释:线程是 CPU 调度的最小单位 👀可以理解为:一个应用程序的执行可能有多个分支和多个程序段,就好比要实现程序 A,实际分成 a,b,c 等多个块;这里的 a,b,c 就是线程,也就是说线程是共享了进程的上下文环境,单核任务中划分更为细小的 CPU...
2.2k 4 分钟

使用 spring 的项目,在处理转账、付款等操作的时候,为了数据能被正确的修改,通常会使用 spring 的注解 @Transactional 对事务进行控制。spring 对事物也有失效的场景我们来看一下,防止以后程序出现 bug👀 # spring 事务失效场景 # 1、数据库引擎不支持事务 以 MySQL 为例🌰,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。 # 2、没有被 Spring 管理 如下面代码所示: // @Servicepublic class OrderServiceImpl...
5.9k 10 分钟

🌈写 SpringBoot 项目的时候,经常用到的一个保存用户信息的类就是 Threadlocal,我们今天就来详细介绍一下这个类。 # Threadlocal 有什么用: 📌简单的说就是,一个 ThreadLocal 在一个线程中是共享的,在不同线程之间又是隔离的(每个线程都只能看到自己线程的值)。如下图: # ThreadLocal 使用实例 # API 介绍 🦄在使用 Threadlocal 之前我们先看以下它的 API: ThreadLocal 类的 API 非常的简单,在这里比较重要的就是 get ()、set ()、remove (),set 用于赋值操作,get...
946 2 分钟

# 内存溢出和内存泄露的区别与联系 内存溢出:(out of memory),简单说就是内存不够分了,指程序要求的内存超出了系统所能分配的范围,出现 OOM;比如申请一个 int 类型,但给了它一个 int 才能存放的数,就会出现内存溢出,或者是创建一个大的对象,而堆内存放不下这个对象,这也是内存溢出。 内存泄漏:(Memory Leak),是指程序在申请内存后,无法释放已申请的内存空间 (指分配出去的内存无法被 gc...
2.8k 5 分钟

我们现在大多 MySQL 数据库,生成 ID 的算法就是用的 SnowFlake,下面我们了解一下这个算法的生成原理,以及是如何工作的👀 # SnowFlake 算法 SnowFlake 是 twitter 公司内部分布式项目采用的 ID 生成算法,开源后广受国内大厂的好评。由这种算法生成的 ID,我们就叫做 SnowFlakeID。 SnowFlake 算法生成 id 的结果是一个 64bit 大小的整数,它的结构如下图: 分为四段: 第一段: 1 位为未使用,永远固定为 0。 (因为二进制中最高位是符号位,1 表示负数,0 表示正数。生成的 id...
7.5k 13 分钟

# 常见的限流算法分析 限流在我们日常生活中经常见到,如火车站门口的栏杆、一些景点的门票只出售一定的数量 等等。在我们的开发中也用到了这种思想。 # 为什么要限流 🏫在保证可用的情况下尽可能多增加进入的人数,其余的人在排队等待,或者返回友好提示,保证里面的进行系统的用户可以正常使用, 防止系统雪崩。 # 限流算法 🌴🌴限流算法很多,常见的有三类,分别是 计数器算法 、漏桶算法、令牌桶算法...
981 2 分钟

# 聊聊 Redis 的缓存穿透、缓存击穿、缓存雪崩 Redis 的缓存相关内容,面试的时候可是经常遇到的,今天总结一下,这方面的知识 # 缓存穿透 # 什么是缓存穿透 👀缓存穿透就是大量的请求 key 在缓存中不存在,直接落到了数据库上。比如攻击者故意制造缓存中不存在的 key,发起大量请求,穿过缓存,落在了数据库上。 # 缓存穿透的解决办法 最基本的就是⾸先做好参数校验,⼀些不合法的参数请求直接抛出异常信息返回给客户端。⽐如查询的数据库 id 不能⼩于 0、传⼊的邮箱格式不对的时候直接返回错误消息给客户端等等。 缓存⽆效 key ​ 如果缓存和数据库都查不到某个 key...
4.5k 7 分钟

我们写项目的时候经常需要测试,不仅需要功能测试还需要压力测试。接下来就介绍一下大家经常使用的测试工具。在学习 DDoS 知识的过程中,了解到 ab 这个测压工具,之前在其他博客上也了解到 jmeter 的测压工具。这两款软件都是 Apache 的开源项目,也是目前常用的网站测压工具。 # ab 和 jmeter 的区别 1. jmeter 是一次完整的请求和返回;AB 只是发出去请求 2. ab 是 shell 模式下轻量级的测试工具,jmeter 则作为有 GUI 界面的更高级测试工具 3. jmeter 可以提供更加详细的统计结果数据,比如接口错误信息、单线程的请求时间等,而 AB...