自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis三台虚拟机搭建三主三从:

就可以看到如图所示,代表当前虚拟机上有两个redis服务,对应端口号后面的[cluster]表示是以集群的形式启动的(同样,三台虚拟机都是同样的操作)接下来就可以搭建三主三从的redis集群,为了缓解压力,不可能起六台虚拟机部署,所以一台虚拟机上就是一台主机一台从机,端口不一样,首先大致这样分配,在cluster目录下创建两个.conf文件夹,名字自己取,这里面配置的是主机以及从机的配置文件,启动的时候加载不同文件,则启动不同的机器。比如我的是这样,可以使用xftp新建,也可以使用命令(每一台都一样)

2023-07-20 20:46:58 618 1

原创 基于SSM的后台管理项目

2304-ssm后台管理系统: 技术栈 后端: SSM框架(SpringMVC,Spring,Mybatis) 安全框架 SpringSecurity 前端: Jquery,BootStrap,Css,Jsp,AdminLTE,Echarts (gitee.com)前端: Jquery,BootStrap,Css,Jsp,AdminLTE,Echarts。技术栈 后端: SSM框架(SpringMVC,Spring,Mybatis)下载地址:包括数据库代码以及项目技术总结。

2023-07-18 20:37:00 110 1

原创 HashMap,一看就会,超级白话文讲解

头插法 就是每次新插入的链表都在第一个,因为作者认为,后插入的数据访问概率高,放在第一个,减少查找步数,但是在扩容时会发生问题,比如说原本b在a后面,扩容的时候,先得到b所以插入,然后再得到a,因为头插,所以a又在b上面,此时如果线程1执行扩容操作,还没有来得及修改b的尾结点,线程2执行查找c的操作,那么就会出现a指向b,b指向a,出现循环依赖,死循环。指定大小,则为大于指定值最近的二次方,比如传入10,那么初始化为16(2的4次方)算法思路就是让高位的1后面的所有位都为1,然后在进行+1操作。

2023-07-18 20:28:59 106 1

原创 一看就懂的ArrayList和LinkedList

删除一个元素,就是将删除位置之后的元素通过arraycopy()拷贝到对应位置的前一位,然后将最后一位值为空,其实就是覆盖前面的,所以说看删除的位置,离末尾越近性能越好,因为越近所需要复制的数据越少。:是基于双向链表实现的,在内存中是不连续的内存片段,所以遍历查找速度不如ArrayList,但是插入删除操作效率高,只需要修改头尾节点的连接地址就好,所以插入删除效率高,查找和访问元素的速度快,增加和删除速度慢,因为是基于数组,所以也是就继承了数组的特性。线程不安全,访问频率高。

2023-07-18 20:27:22 80

原创 volatile关键字的理解

比如说懒汉式单例模式,线程一加锁过后对对象进行创建,如果说指令重排将对象的创建地址分配提前了,而此时线程二进入进行第一次判断,发现该对象有地址,会误以为已经实例化,然后使用时发现对应属性还没有赋值,所以这里要使用volatile进行禁止指令重排。就是说不管怎么重排,在单线程下,最终运行结构得和顺序运行结果相同,也就是说后面的语句不依赖于前面的语句,就可以重排,但是在多线程情况下,两个线程之间的依赖它实际是控制不了的,所以会出错。StoreStore屏障, 就是说在执行a=1操作之前有的语句要先执行。

2023-07-18 20:25:23 40

原创 对线程池的理解(谁都看得懂)

线程池:为了降低资源消耗,避免来一个任务就创建一个线程提高响应速度,任务到达无需执行创建线程操作,直接获取执行增加线程的管理性,线程是稀缺资源,使用线程池方便管理以及监控调优线程池的五种状态:RUNNING:接收新任务并处理排队任务SHUTDOWN:不接受新任务,但处理排队任务STOP:不接受新任务,不处理排队任务,并终断正在进行的任务TIDYING:所以任务都已终止,TERMINATED:TIDYING执行terminated()后进入此状态七大核心参数:核心线程数;最大线程数;非核心线程存活时间;存活时

2023-07-18 20:22:20 39

原创 死锁的理解,(谁都看得懂)

就是说哲学家获取了筷子,则另外一个哲学家就不能获取同一支筷子,这里哲学家相当于线程,筷子相当于资源,资源在某一时间点,只能被一个线程占用,所以是互斥;就是说一个哲学家抢到了一支筷子,又发起了对另外一支筷子的请求,而我们知道在这个案例中,实质上每一支筷子都是被一个哲学家获取且未释放的,所以发生了阻塞。就是说在吃饭之前每个哲学家都去申请筷子,申请到两支筷子的吃饭,没申请到的就等待,而且在提交申请之前要释放已经抢到的筷子;就是说一个哲学家在抢不到第二只筷子可以将其释放,这样就会有哲学家可以抢到足够的筷子吃饭;

2023-07-18 20:20:33 26

原创 线程中,start和run的区别,以及为什么不能调用两次start

而调用start方法创建一个线程,start方法会先判断当前线程状态,如果是第一次调用,则会调用一个start0方法,是一个由native修饰的方法,底层有对应c语言写的API,调用会使操作系统状态转换为内核态,我们知道,只有内核态才能创建线程,所以调用start0会创建出一个线程。如果是第二次调用,在第一步判断时就会抛出一个异常,所以不能同时调用两次start方法。首先调用run方法,只是单纯调用一个我们重写的run方法,不会创建一个线程,当前类也只作为一个普通类。

2023-07-18 20:18:47 166

原创 java中String,StringBuilder,StringBuffer的区别理解

String类型的值不能进行修改,我们对其进行任何修改,其实都是需要重新创建一个string对象,这个就不符合享元模式,享元模式就是说尽量达到对象复用,减少对象的创建,比如说Integer这个包装类就引入了一个IntegerCache来缓存 -128~127的值,这样两个变量指向的就是同一个地址,超出这个范围的才在内存中创建。

2023-07-18 20:14:49 35

原创 JVM机制基础理解

JVM机制基础理解

2023-02-22 22:57:38 113

原创 mysql底层B+树索引理解总结

mysql底层B+树索引理解总结

2023-02-21 18:18:41 53

原创 第一次使用navicat连接docker创建的mysql容器

使用navicat连接docker创建的mysql容器

2023-02-10 16:28:50 444

原创 idea推送代码到gitee被远程拒绝

idea推送代码到gitee被远程拒绝

2023-02-09 16:08:35 3101 1

空空如也

空空如也

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

TA关注的人

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