自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【JVM】垃圾回收算法

在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”(“死去”即不可能再被任何途径使用的对象)了。

2023-08-16 19:03:11 449

原创 Redis的数据淘汰策略

Redis的数据淘汰策略指的是在内存不足的情况下,如何决定哪些数据需要被淘汰以释放内存空间,当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉。

2023-07-30 17:23:59 1016

原创 【JVM】详细解析java创建对象的具体流程

例如:线程A要给对象分配8kb,读取到指针当前的位置,时间片用完,切换到线程B,线程B要给它的对象分配16kb,也读取到指针当前的位置(和线程A读取到的一样),将指针向空闲内存方向移动16kb大小,线程B时间片用完,切换到线程A继续执行,由于线程A使用的指针位置还是之前读到的。已被使用的内存和空闲的内存相互交错在一起,那就没有办法简单地进行指针碰撞了,虚拟机就必须维护一个列表,记录上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录。至此,对象创建成功。

2023-07-28 18:37:59 1765

原创 【设计模式】观察者设计模式解析

观察者模式(Observer Pattern): 定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。观察者模式是一种对象行为型模式。观察者模式的别名包括发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。细究的话,发布订阅和观察者有些不同,可以理解成发布订阅模式属于广义上的观察者模式。

2023-07-28 17:52:12 625

原创 【JVM】JVM五大内存区域介绍

与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stack)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧 [1] (Stack Frame)用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。

2023-07-28 17:30:33 1165

原创 volatile关键字(轻量级锁)

我们在写项目的时候,有时会使用多线程。为了保证一部分线程之间的通信,所以需要线程中的一些变量具有可见性。说到线程可见性,对于Java而言,有两种方法实现:volatile和synchronized。需要注意的是:volatile只用来保证该变量对所有线程的可见性,但不保证原子性。虽然加锁同样能解决共享变量不可见性的问题,但是加锁和锁的释放过程都是会有性能消耗的,所以在解决共享变量不可见性的问题时,我们首选 volatile关键字。

2023-07-27 10:25:35 159

原创 jdk,jre和jvm三者的关系和区别

​什么是JDK,JDK是用于Java程序开发的最小环境,包含:Java程序设计语言,Java虚拟机(JVM),Java类库(API)。它能够创建和编译程序。​

2023-07-25 11:30:43 734

原创 java注解和自定义注解

1、注解的作用①:注解一般用于对程序的说明,就像注释一样,但是区别是注释是给人看的,但是注解是给程序看的。②:让编译器进行编译检查的作用,比如下边这个@Override注解是重写的意思,子类重写了父类的方法,但是改动了方法名,所以报错。2、注解的格式注解是以“@注解名”在代码当中存在的,还可以添加一些参数值,例如 @SuppressWarnings(value = “unchecked”)3、注解在哪里使用可以附加在package、class、method、field等上面,相当于给他们添加

2023-07-24 20:44:28 415

原创 数据库case函数

case函数是一种多分支的函数,可以根据条件列表的值返回多个可能的结果表达式中的一个。可用在任何允许使用表达式的地方,但不能单独作为一个语句执行。分为:简单CASE函数搜索CASE函数

2023-07-24 18:18:15 1424

原创 Map集合类详解(附加思维导图)

⑪Map.getOrDefault(key,默认值);Map中会存储——对应的key和value。如果在Map中存在key,则返回key所对应的的value。如果在Map中不存在key,则返回默认值。

2023-07-24 13:49:37 105

原创 Set集合类详解(附加思维导图)

HashSet:HashSet的性能基本上比LinkedHashSet和TreeSet要好,特别是添加和查询,这也是用的最多的两个操作LinkedHashSet:LinkedHashSet的查询稍慢一些,但是他可以维持元素的添加顺序。所以只有要求当插入顺序和取出顺序一致的时候 才使用LinkedHashSet。TreeSet:只有在需要对元素进行排序时使用

2023-07-24 13:30:49 634

原创 List集合类详解(附加思维导图)

ArrayList集合的一些方法①.add(Object element) 向列表的尾部添加指定的元素。②.size() 返回列表中的元素个数。③.get(int index) 返回列表中指定位置的元素,index从0开始。

2023-07-23 10:00:14 254

原创 重写equals为什么要重写hashCode(配合源码分析)

hashCode()是Object定义的方法,它将返回一个整型值,这个方法通常用来将对象的内存地址转换为整数之后返回,它存在的价值是为Hash容器处理数据时提供支持,Hash容器可以根据hashCode定位需要使用的对象,也可以根据hashCode来排除2个不相同的对象,即:hashCode不同,则视为2个对象不同。

2023-07-18 17:44:28 222

原创 泛型和Object的区别

泛型和Object类的区别主要是在使用的时机不同:泛型:如果确定要用哪个对象,并且使用到这个对象里面的属性,选择用泛型,因为泛型代表着更精确的对象,能够使用对象里面独有的方法。Object:Object是所有类的父类,特别笼统,且只能使用固定的属性。只要有Object的地方,基本都能用泛型替代。

2023-07-18 16:38:55 1262

原创 Nginx正向代理和反向代理详解

正向代理,“它代理的是客户端”,是一个位于客户端和目标服务器之间的服务器,为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标(目标服务器),然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。正向代理中目标服务器并不知道访问它的真实用户是谁,因为和它交互的是代理服务器。

2023-07-18 11:55:23 523

原创 vue路由接口转发

vue的路由和nginx的路由有许多相似之处,也有一些不同的地方。两者都有接口转发的功能,但是具体转发的方式会有一些区别。

2023-07-15 12:09:49 561

原创 Node.js下载安装和环境变量配置(详细教程)

步骤: 鼠标右击【node_global】的文件夹,点击【属性】,再点击【安全】,再点击【编辑】,将权限都勾上,随即点击【确定】即可,【node_cache】步骤同理。==============或单击鼠标右键选择【以管理员身份运行】==========================(1)找到安装的目录,在安装目录下新建两个文件夹【node_global】和【node_cache】⑤在【系统变量】中选择【Path】点击【编辑】添加【NODE_PATH】,随后一直点击【确定】

2023-07-13 11:12:58 1370 1

原创 数据库索引(详细解析)

索引是一种用于快速查询和检索数据的数据结构。常见的索引结构有: B 树, B+树和 Hash。索引的作用就相当于目录的作用。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。

2023-07-10 10:09:00 4698

原创 线程池的使用

从字面上理解它就是一个管理线程的池子。它帮我们管理线程,避免增加创建线程和销毁线程的资源损耗。因为线程其实也是一个对象,创建一个对象,需要经过类加载过程,销毁一个对象,需要走GC垃圾回收流程,都是需要资源开销的。提高响应速度。 如果任务到达了,相对于从线程池拿线程,重新去创建一条线程执行,速度肯定慢很多。重复利用。 线程用完,再放回池子,可以达到重复利用的效果,节省资源。

2023-07-09 21:17:33 447

原创 魔法值问题

魔法值,也叫做魔法数值、魔法数字,通常是指在代码编写时莫名出现的数字,无法直接判断数值代表的含义,必须通过联系代码上下文分析才可以明白,严重降低了代码的可读性。除数字之外,代码中作为key值的常量字符串也被认为是魔法值,尽管其表示含义比数值较为清晰,但是仍然会产生不规范问题。

2023-07-09 16:57:53 307

原创 数据结构之B+树

1.非叶子节点仅具有索引功能,也就是说非叶子节点只能存储key值,不能存储value值2.B+树的所有叶子节点后构成一个有序的链表,这样就可以根据key值遍历数据

2023-07-07 13:54:40 422

原创 数据结构之B树

1、B树的数据存储是key-value类型的;2、B树有几个叉:并不能确定,要看具体实现;3、M阶B树:每个节点最多有M-1个值,并且以升序排列。

2023-07-07 13:20:59 205

原创 git拉取项目出现的问题

git rebase和git merge命令处理的是同样的问题,这两个命令都用于把一个分支的变更整合进另一个分支——只不过他们达成同样目的的方式不同。

2023-07-06 11:00:51 386

原创 Docker常用基本命令

docker常用的基础命令,本文针对docker的常用指令进行了简单的说明,并进行了实际测试以便于更好的使用掌握命令。

2023-07-05 18:48:01 257

原创 java数据结构----树的实现

如果二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续,我们称为完全二叉树。能提高数据存储,读取的效率,比如利用二叉排序树,既可以保证数据的检索速度。同时也可以保证数据的插入,删除,修改的速度。优点:在一定程度上对数组存储方式进行优化(比如插入一个节点,只需要将插入节点,链接到链表当中可删除的效率也很好)。缺点:在进行检索时,效率仍然比较低,比如(检索某个数值,需要从头结点开始遍历)2.二叉树的子节点分为左节点和右节点。

2023-07-04 17:42:52 2748

原创 SpringCloud篇:sentinel中间件的简单使用

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。

2023-07-02 10:51:05 148

原创 SpringCloud篇:GateWay网关

传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关,客户端只能在本地记录每个微服务的调用地址,当需要调用的微服务数量很多时,它需要了解每个服务的接口,这个工作量很大。 网关作为系统的唯一流量入口,封装内部系统的架构,所有请求都先经过网关,由网关将请求路由到合适的微服务。

2023-07-02 10:28:27 1949

原创 mybatis-plus实现逻辑删除

mybatis-plus逻辑删除

2023-07-01 22:49:48 6662

原创 SpringBoot自定义注解+AOP+redis实现防接口幂等性重复提交

springboot防止接口幂等性重复提交,接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因 为多次点击而产生了副作用;

2023-06-30 12:49:24 284

原创 线程池解析

从字面上理解它就是一个管理线程的池子,它帮我们管理线程,避免增加创建线程和销毁线程的资源损耗。

2023-06-29 13:33:23 98

原创 kafka详解

kafka是一款分布式、支持分区的、多副本,基于zookeeper协调的分布式消息系统。最大的特性就是可以实时处理大量数据来满足需求。

2023-06-28 19:28:47 2299

原创 cookie和token的区别

cookie和token区别:cookie和token的共同点都是用来判断用户是否“已登录”,至于判断具体是哪个用户,服务器的做法不一样

2023-06-28 18:54:58 1377

原创 消息队列.

消息队列:一般我们会简称它为MQ(Message Queue)。 Message Query(MQ),消息队列中间件,很多初学者认为,MQ通过消息的发送和接受来实现程序的异步和解耦,mq主要用于异步操作,这个不是mq的真正目的,只不过是mq的应用,mq真正的目的是为了通讯。

2023-06-25 20:31:24 171

原创 缓存和微服务相关问题解析

缓存和微服务

2023-06-25 18:44:28 88

原创 阿里的easyExcel的使用解析

easyExcel的使用解析

2023-05-26 21:38:54 1302

原创 前后端交互(SpringMVC)获取请求参数

前后端交互(SpringMVC)获取请求参数

2023-05-24 19:28:33 273

原创 数据库基础语句解析

数据库基础语句解析

2023-05-23 19:30:58 43

原创 springboot配置文件

spring配置文件

2023-03-24 20:35:26 75

原创 【设计模式】spring单例模式

单例模式是设计模式中最简单也是最常用的设计模式之一,单例顾名思义就是系统中只有唯一实例,这个唯一实例的获取方式就是通过一个方法的调用获得,而不是通过正常流程中的new实例化。

2023-03-24 19:33:28 1322

原创 java常用集合类

java常见的集合类

2023-03-17 20:27:50 2231

空空如也

空空如也

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

TA关注的人

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