- 博客(57)
- 收藏
- 关注
原创 快速新建springboot项目
4.1.1方法一:在maven仓库中找到mybatis-plus的坐标,将坐标粘贴到pom文件中,搜索http://mvnrepository.com,在仓库在搜索mybatis-plus,选个用户多的。3、排除jdbc的自动装配机制(当然,这里也可以在 application.properties 配置文件中,加入数据库配置内容)2.在这里提前配置一些需要使用的依赖,当然后面也可以配置,然后点击Create。6.在IDEA中新建数据库,并在数据中中新建表,将刚刚在官网复制的语句粘贴。
2024-04-24 02:51:22 514
原创 Cookie、Session以及Token的区别
客户端第一次访问服务器时,服务器返回cookie给客户端A,客户端A存储cookie,下次客户端直接带着cookie即可访问服务器数据。这里你可以把服务器理解为银行,客户端就是银行客户,cookie相当于存折,客户第一次来银行存钱时会给客户发放存折,客户通过存折来银行取钱,也就是取数据。
2024-04-20 15:02:48 335
原创 TCP和UDP协议的区别
TCP协议的全称是Transmission Control Protocol(传输控制协议),是一种面向连接的点对点的传输层协议。UDP协议的全称是User Datagram Protocal(用户数据报协议),为应用程序提供一种无需建立连接就可以发送封装的IP数据包方法,也是一种传输层协议。
2024-04-18 21:45:12 303
原创 finally、final、finalize区别
finalize用于垃圾回收,finalize 是Object类的一个方法,在垃圾回收器执行时会调用被回收对象的finalize()方法,可以覆盖此方法来实现对其他资源的回收,例如关闭文件等。finally用于抛异常,finally代码块内语句无论是否发生异常,都会在执行finally,常用于一些流的关闭。final用于修饰类、变量、方法,
2024-04-08 17:21:43 182
原创 缓存击穿以及解决方案
缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。
2024-04-07 22:38:56 326
原创 缓存雪崩以及解决思路
缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。利用Redis集群提高服务的可用性。给不同的Key的TTL添加随机值。给缓存业务添加降级限流策略。
2024-04-07 22:27:37 246
原创 缓存更新策略
缓存更新是Redis为了节约内存而设计出来的一个东西,主要是因为内存数据宝贵,当我们向redis插入太多数据,此时就可能会导致缓存中的数据过多,所以redis会对部分数据进行更新,或者淘汰。
2024-04-07 20:58:18 424
原创 Springboot中常见的配置文件
SpringBoot程序的配置文件必须是application,只是后缀名不相同而已。YAML作为一种数据序列化格式,其拓展名有.yml(主流)和(yaml)两种。pom.xml文件:管理依赖,只需要导入相关项目坐标即可将项目导入。@configutation注解标注某个类表示这个类是一个配置类。
2024-03-23 09:06:32 262
原创 Spring cloud的五大组件
1.Eureka(nacos) 注册中心。4.Hystrix 隔离、熔断、降级。5.zuul 微服务网关,网络路由。3.Ribbon 负载均衡。2.Feign 远程调用。
2024-03-13 13:22:57 143 1
原创 Redis常见的数据类型
Redis是一个Key-value的数据库,Key一般是String类型,不过value的类型多种多样,有以下8种数据类型:
2024-01-19 10:37:34 532
原创 线程间的通信方式
线程是轻量级的进程,系统进⾏资源调度的基本单位是进程,但是因为进程上下⽂切换开销太⼤,所以有了线程, 节省开销。:⽤于线程之间的协调和通信,⼀个线程可以通过条件变量等待某个条件的出现,另⼀个线程可以通过条件变量通知正在等待的线程。:远程过程调⽤(RPC)是⼀种跨网络进行的远程调用,可以实现在不同的线程或机器之间进行信息交换。:管道是⼀种半双⼯的通信⽅式,⼀个进程可以向管道中写⼊数据,另⼀个进程可以从管道中 读取数据。:⼀个线程向消息队列中放⼊⼀条消息,另⼀个线程从消息队列中取出消息。
2024-01-08 08:30:00 487
原创 TCP的三次握手和四次挥手
第⼆次握手:服务器收到客户端的 SYN 报文,向客户端发送 SYN+ACK 报文,表示可以建⽴连接。第三次握手:客户端收到服务器的 SYN+ACK 报文,向服务器发送 ACK 报文,表示连接已经建⽴。第⼆次挥手:服务器收到客户端的 FIN 报⽂,向客户端发送 ACK 报⽂,表示收到关闭请求。第四次挥手:客户端收到服务器的 FIN 报⽂,向服务器发送 ACK 报⽂,表示收到关闭请求。第三次挥手:服务器向客户端发送 FIN 报⽂,请求关闭连接。第⼀次挥手:客户端向服务器发送 FIN 报⽂,请求关闭连接。
2024-01-07 15:04:39 1166
原创 进程与线程的/并行与并发/同步与异步
1.1进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。1.2 线程线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的和资源,但每个线程有自己的和。
2024-01-04 08:30:00 717
原创 什么是上下文切换
当前任务在执行完CPU时间片切换到另外一个任务之前会先保存自己的状态,以便下次再切换回这个任务时,可以加载这个任务的状态,任务从保存到再次加载这个过程叫做。上下文切换通常是计算密集型的,也就是说它需要相当可观的处理器时间,事实上可能是操作系统中时间消耗最大的操作。
2024-01-03 16:07:05 408
原创 线程池的7个参数以及拒绝策略
如果是 CPU 密集型,主要是执行计算任务,响应时间很快,cpu 一直在运行,这 种任务 cpu 的利用率很高,那么线程数的配置应该根据 CPU 核心数来决定,CPU核心数=最大同时执行线程数,加入 CPU 核心数为 4,那么服务器最多能同时执行 4 个线程。过多的线程会导致上下文切换反而使得效率降低。那线程池的最大线程数可以配置为 cpu 核心数+1。
2024-01-03 15:58:37 487
原创 聚簇索引和非聚簇索引的区别
在 MySQL 中,B+ 树的实现主要是通过 InnoDB 存储引擎来实现的。InnoDB 存储引擎中的索引主要有聚簇索引和非聚簇索引两种类型,聚簇索引是根据主键创建的索引,⽽非聚簇索引是根据⾮主键列创建的索引。对于非聚簇索引,MySQL 中会同时创建⼀个对应的聚簇索引,这样可以提⾼查询效率。聚簇索引是物理索引,因此数据表在物理上是连续存储的,且顺序按照聚簇索引顺序存储,比如在一个表中,id是主键且为聚簇索引,因此表中所有的记录行是按照id自增顺序存储,因此一个表只能有一个聚簇索引。
2023-12-30 08:30:00 928
原创 主键、唯一键、外键
可以添加组合键(复合主键),但扩展性不行,一张表里可以有多个组合键,但是可能在非特殊的情况下实际的意义不大,添加复合主键要先把原主键删除。2.不能更改主表中的值而导致子表中的记录孤立(学生信息表中的id变化了,学生成绩表中的id也要随着发生改变)1.当主表中没有对应的记录时,不能将记录添加到子表(学生成绩表中不能出现学生信息表中没有的学号)3.子表存在与主表对应的记录,不能从主表中删除该行(不能把部门表中的数据删除)主键用来区分数据,联系各个表,不能为空且在表中数据是唯一的。4.删除主表前,先删子表。
2023-12-28 08:00:00 571
原创 单例模式的四种具体写法
通过在类中定义一个静态内部类,将对象实例的创建与初始化放在内部类中完成,我们在getInstance中获取对象直接通过静态内部类调用单例对象。饿汉模式在getInstance方法调用前实例已经被创建,因此实例在类加载的时候就已经存在于JVM中,因此。懒汉模式就是在加载类的时候只声明变量,不new对象,后面需要用到的时候再new对象,并把对象赋给变量。主要被用于一个全局类的对象在多个地方被使用并且对象的状态是全局变化的场景下。普通的懒汉模式在单线程场景下是线程安全的,但在多线程场景下是非线程安全的。
2023-12-24 07:30:00 843
原创 MySQL支持的存储引擎以及区别
存储引擎:Mysql用各种不同的存储技术,将数据存储到文件或内存中。数据库存储引擎是数据库的底层的软件组件,数据库可以使用数据存储引擎进行创建,查询,更新和删除数据的操作。不同的存储引擎会提供不同的存储机制,索引技巧,锁定水平等功能,现在许多的数据库管理系统都支持多种的不同的存储引擎。
2023-12-23 07:30:00 601
原创 MySQL事务
不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。 解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表
2023-12-22 10:23:25 696
原创 varchar和char的区别
char是定长字符串,最多能存放255个字符,与编码无关,如果插入数据的长度小于固定长度,则用空格填充,存取速度比varchar快,是空间换时间的做法。:varchar是可变长字符串,长度可变,插入的数据是多长就按多长来存储,最多能存放字符数为65532,存取慢,是时间换空间的做法。
2023-12-15 15:54:10 423
原创 JVM的内存分区以及垃圾收集
每个方法在执行的 时候都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接和方法出口等信息。虚拟机栈是线程私有的,它的生命周期与线程相同。内存空间小,字节码解释器工作时通过改变这个计数值可以选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理和线程恢复等功能都需要依赖这个计数 器完成。java 堆是所有线程所共享的一块内存,在虚拟机启动时创建,几乎所有的对象实例都在这里创建,因此该区域经常发生垃圾回收操作。方法区主要用来存储已在虚拟机加载的类的信息、常量、静态变量以及即时编译器编译后的代码信息。
2023-12-14 22:41:50 850
原创 拦截器与过滤器的区别
过滤器:你要从一堆请求中通过一个工具挑选出符合你要求的请求,而这个工具就是过滤器拦截器:当一个流程正在进行时,你希望干预它的进展,甚至是直接将它终止。
2023-12-13 15:27:49 615
原创 Spring的两大核心概念
Spring框架的两大核心是与控制反转指的是将对象的创建和依赖注入由应用代码转移到了Spring容器中进行,即由Spring容器负责创建对象和管理它们之间的依赖关系。这样,应用代码只需要关注业务逻辑的实现,而不需要关注对象的创建和管理,降低了应用代码的复杂度,提高了代码的可重用性和可维护性。其中作为Spring框架中的一种设计模式,用于实现控制反转。它是一种将对象之间的依赖关系从硬编码中解耦的方法。
2023-12-12 23:18:53 821
原创 Spring支持哪几种事务管理类型,Spring 的事务实现方式和实现原理是?
在数据层保障一系列的数据库操作同成功同失败:在数据层或业务层保障一系列的数据库操作同成功同失败Spring为了管理事务,提供了一个平台事务管理器PlatformTransactionManager。
2023-12-12 15:06:36 506
原创 Spring框架中的五种常用设计模式
Spring 的 Bean 默认是单例模式,通过 Spring 容器管理 Bean 的⽣命周期,保证每个 Bean 只被 创建⼀次,并在整个应⽤程序中重用。
2023-12-12 07:00:00 1400
原创 synchronized和volatile的区别
volatilevolatile是Java提供的最轻量级的同步机制,Java语言包含了两种内在的同步机制:同步块和volatile变量,相比synchronized(重量级锁),volatile更轻量级,因为它不会引起上下文的切换和调度,但是volatile变量同步性差,使用时容易出错 volatile 保证了共享变量的可见性,被 volatile 关键字修饰的变量,如果值发生了变化,其他线程立刻可见,避免出现脏读现象。 volatile 禁止了指令重排,可以保证程序执行的有序性,但是由于禁止了指令
2023-12-11 09:52:08 510
原创 HashMap的那些事
HashTable是一种键值映射的数据结构,自从java发布就存在,而HashMap是jdk1.2后才出现的,虽然说HashTable出现得早且线程安全,但是效率很低已经弃用了,现在HashMap逐渐成为主流。
2023-12-10 07:00:00 567
原创 Http常见的状态码
200:表示客户端请求成功 301:Premanent Moved(永久移除),旧地址的资源被永久移除了,原来的资源无法访问了 302:Temporarily Moved 临时重定向 旧地址资源还在,只是临时性的将请求转到另外一个地址 400:Bad Request. 客户端请求有语法错误,服务器理解不了 401:Unauthorizad 请求未经授权,一般报401会发送www-Authenticate标头,可能用户账号或者密码输入有误 403:Forbidden 服务器收到请求但拒绝服务
2023-12-09 20:47:27 803
原创 REST风格
REST(Represensentational State Transfer),意为表现形态转换,它是一种软件架构风格根据这种风格对资源进行访问称为RESTful,当我们想要表示一个网络资源时,可以使用以下两种方式:传统方式:id=1这是表示查询id为1的用户信息的操作REST风格描述方式:传统方式一般就是一个url对应对应一个请求,这样别人看见url就知道你在干嘛,不仅写起来麻烦还不安全而REST风格写起来很简单,光看url也不知在干嘛,书写简单且更安全。
2023-12-08 07:00:00 597
原创 Cookie和Session的区别
在首次访问Web服务器时,浏览器发送请求中没有携带Cookie浏览器看到请求没有携带Cookie,在HTTP的响应头中加入Set-Cookie浏览器收到Set-Cookie后就会在本地文件夹中存储这个Web服务器发送的Cookie以后再给这个Web服务器发送请求时就会携带这个Cookie。
2023-12-06 10:05:42 512 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人