自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 计算机网络的七层模型

1.应用层。

2024-04-16 10:54:25 802

原创 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

原创 缓存穿透问题

缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。

2024-04-07 22:21:49 293

原创 缓存更新策略

缓存更新是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

原创 覆盖索引和联合索引

和是数据库中常⻅的两种索引类型。

2023-12-31 08:00:00 637

原创 聚簇索引和非聚簇索引的区别

在 MySQL 中,B+ 树的实现主要是通过 InnoDB 存储引擎来实现的。InnoDB 存储引擎中的索引主要有聚簇索引和非聚簇索引两种类型,聚簇索引是根据主键创建的索引,⽽非聚簇索引是根据⾮主键列创建的索引。对于非聚簇索引,MySQL 中会同时创建⼀个对应的聚簇索引,这样可以提⾼查询效率。聚簇索引是物理索引,因此数据表在物理上是连续存储的,且顺序按照聚簇索引顺序存储,比如在一个表中,id是主键且为聚簇索引,因此表中所有的记录行是按照id自增顺序存储,因此一个表只能有一个聚簇索引。

2023-12-30 08:30:00 928

原创 数据库索引

索引是MySQL中能够高效获取数据的一种数据结构,类似于字典中的目录。

2023-12-29 08:00:00 566

原创 主键、唯一键、外键

可以添加组合键(复合主键),但扩展性不行,一张表里可以有多个组合键,但是可能在非特殊的情况下实际的意义不大,添加复合主键要先把原主键删除。2.不能更改主表中的值而导致子表中的记录孤立(学生信息表中的id变化了,学生成绩表中的id也要随着发生改变)1.当主表中没有对应的记录时,不能将记录添加到子表(学生成绩表中不能出现学生信息表中没有的学号)3.子表存在与主表对应的记录,不能从主表中删除该行(不能把部门表中的数据删除)主键用来区分数据,联系各个表,不能为空且在表中数据是唯一的。4.删除主表前,先删子表。

2023-12-28 08:00:00 571

原创 Select语句完整的执行顺序

SQL Select语句完整的执行顺序:

2023-12-27 21:16:05 377

原创 单例模式的四种具体写法

通过在类中定义一个静态内部类,将对象实例的创建与初始化放在内部类中完成,我们在getInstance中获取对象直接通过静态内部类调用单例对象。饿汉模式在getInstance方法调用前实例已经被创建,因此实例在类加载的时候就已经存在于JVM中,因此。懒汉模式就是在加载类的时候只声明变量,不new对象,后面需要用到的时候再new对象,并把对象赋给变量。主要被用于一个全局类的对象在多个地方被使用并且对象的状态是全局变化的场景下。普通的懒汉模式在单线程场景下是线程安全的,但在多线程场景下是非线程安全的。

2023-12-24 07:30:00 843

原创 MySQL支持的存储引擎以及区别

存储引擎:Mysql用各种不同的存储技术,将数据存储到文件或内存中。数据库存储引擎是数据库的底层的软件组件,数据库可以使用数据存储引擎进行创建,查询,更新和删除数据的操作。不同的存储引擎会提供不同的存储机制,索引技巧,锁定水平等功能,现在许多的数据库管理系统都支持多种的不同的存储引擎。

2023-12-23 07:30:00 601

原创 跨域问题的解决

浏览器从一个域名的网页去请求另外一个域名的资源时,域名、端口或者协议不同都是跨域。

2023-12-22 17:24:20 543

原创 MySQL事务

不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。 解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

2023-12-22 10:23:25 696

原创 Java类加载的过程

类加载器主要用于将字节码文件加载到虚拟机中。

2023-12-18 14:08:51 563

原创 数据库的三大范式

在上表中contact应该分为phone和adress两列。

2023-12-16 14:57:24 540

原创 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

原创 集合的大家族

常见面试题:ArrayList和LinkedList的区别。

2023-12-07 11:54:28 594 1

原创 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关注的人

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