- 博客(26)
- 资源 (8)
- 收藏
- 关注
原创 nacos集群的搭建
修改配置文件中的cp cluster.conf.example cluster.conf修改cluster.conf中要添加的ip放开application.properties中的数据库配置在数据库中执行 nacos-mysql.sql sql脚本修改bin目录下的startup.sh,在 JVM Configuration配置下添加如下命令JAVA_OPT="${JAVA_OPT} -Dnacos.server.ip="你本机的ip"#!/bin/bash# Copyright
2022-05-09 21:42:38
498
原创 Future和CompletableFuture的使用
future使用public class FutureDemo { private static Logger logger = LoggerFactory.getLogger(FutureDemo.class); public static void main(String[] args) throws ExecutionException, InterruptedException { FutureTask futureTask = new FutureTask(()-
2022-05-02 13:15:23
378
原创 MySQL底层B+Tree
二叉树: mysql用二叉树设计索引的话,如果是连续的就会变成顺序查找红黑数: 在数据量太大的情况下,树的高度会变高,在次执行查询效率就会低B Tree: 每个节点都会会存放data数据,占用空间,树的高度会比较高B+Tree变种(B+Tree叶子节点是单向的)非叶子节点不会存data,只存储索引,节省非叶子节点的空间,存放更多的索引,降低的树的高度,只有叶子节点会存放data。叶子节点包括所有的索引字段叶子节点之间用指针连接,提高区间的访问性能HASH: 查找数据非常快,但是不支持范围
2022-03-14 22:45:20
740
原创 ThreadLocal
ThreadLocal线程本地存储机制,可以把数据缓存到该线程中,只要是该线程执行的方法,就可以随时获取缓存的数据。ThreadLocal是用ThreadLocalMap实现的,每个线程都会有一个ThreadLocalMap,key为ThreadLocal,value为要缓存的值一个线程可以有多个ThreadLocal如果在线程池中使用ThreadLocal 会造成内存溢出,在线程池中的线程会一直存在,所以ThreadLocalMap就会一直存在,里面的ThreadLocal的value就会一直存
2022-03-12 12:20:49
154
原创 java线程
1、进程:操作系统以进程为单位,分配系统资源,进程是资源分配的最小单位2、线程:是操作系统调度执行的最小单位3、线程同步:一个线程依赖于另一个线程,他没有得到另一个线程的消息时等待,直到被唤醒。4、线程互斥:对与共享的系统资源,各个单个线程互斥,排它。5、上下文切换:是指从一个进程或线程切换到另一个线程或者进程在内核态进行上下文切换,上下文切换是多任务操作系统尽量避免上下文切换,比较耗费资源6、内核态和用户态内核态:不受任何限制可以访问硬件和内存,用户态:执行代码不能直接访问硬件和内存,
2022-02-26 19:43:18
296
原创 Springboot测试类中 @Before与@BeforeEach的区别
org.junit.jupiter.api.Test;包中的@Test注解为5.0+ 要用@BeforeEach注解。org.junit.Test;包中的@Test注解为4.0+,用@Before注解
2022-02-09 19:43:45
1244
原创 zookeeper集群搭建
我的是在同一台机器搭建(推荐使用奇数台服务,不包括observer)1、在目录/usr/local/zookeeper 创建文件夹zkcolony2、创建4个文件夹 zk1 zk2 zk3 zk43、echo 1 > zk1/myidecho 2 > zk2/myidecho 3 > zk3/myidecho 4 > zk4/myid4、进入到zookeeper的conf目录复制4份配置文件cp zoo_sample.cfg zoo1.cfgcp zoo_
2022-02-09 18:03:17
1128
原创 关于springboot test中使用@Before 不执行
把@Before 改成@BeforeEach@After 改成@AfterEach
2022-02-09 12:49:40
2032
原创 zookeeper节点和监听
一、zookeeper节点:1、PERSISTENT持久化目录节点:客户端与zookeeper断开连接后,该节点依旧存在,只要不手动删除该节点,他永久存在2、PERSISENT_SEQUENTIAL 持久化顺序编号目录节点:客户端与zookeeper断开连接后,该节点依旧存在,zookeeper给该节点名称顺序编号3、EPHEMERAL 临时目录节点:客户端与zookeeper端开连接后,该节点被删除4、EPHEMERAL_SEQUENTIAL 临时顺序编号目录节点:客户端与zookeeper端开连
2022-02-08 19:42:19
2879
原创 zookeeper安装和简单的使用
1、在/usr/local/ 目录下创建zookeeper文件夹mkdir zookeeper2、上传apache-zookeeper-3.5.8-bin.tar.gz到该目录下(可以换成你的版本)3、解压 tar ‐zxvf apache‐zookeeper‐3.5.8‐bin.tar.gz4、进入 cd apache-zookeeper-3.5.8-bin5、创建data文件夹(mkdir data)6、进入conf文件夹修改zoo_sample.cfg中的dataDir(也可以用默认
2022-02-07 16:34:44
1286
原创 linux安装JDK8
1、去官网下载jdk8https://www.oracle.com/java/technologies/downloads/#java82、在/usr/local/目录下创建java文件夹mkdir java3、把下载好的文件上传到该目录下,解压tar -zxvf jdk-8u321-linux-i586.tar.gz4、vi /etc/profile5、添加如下set java environment JAVA_HOME=/usr/local/java/jdk1.8.0_321 JRE_
2022-02-07 14:01:34
6770
原创 redis6.0主从配置
redis安装:https://blog.youkuaiyun.com/weixin_44130094/article/details/121886847?spm=1001.2014.3001.5501修改从节点的redis.config文件 #主节点的redis ip和端口replicaof 127.0.0.1 6379#开启只读replica-read-only yes#主节点的redis密码,如果没有密码注释掉即可masterauth 123456...
2021-12-31 22:10:24
1036
原创 redis持久化
RDB快照持久化:默认状态,会把文件保存在dump.rdb二进制文件下。但是rdb文件,可能会导致数据的丢失,如果数据还没有保存到rdb文件中,这个时候redis挂了,数据就会丢失。save和bgsave的生成rdb文件的区别:1、save会阻塞redis其他的命令,bgsave不会阻塞2、save是同步的,bgsave是异步的,bgsave采用(copy on write)写时复制。rdb默认文件名rdb策略AOF持久化:可以在redis.conf中开启aof持久化会把所有的修改命令保存
2021-12-29 18:18:37
480
原创 Linux下Redis的安装
1、进入usr/local目录下2、我安装是6.2.6版本 , 使用 wget https://download.redis.io/releases/redis-6.2.6.tar.gz3、解压 tar xzf redis-6.2.6.tar.gz4、进入解压好的目录下 cd redis-6.2.65、编译安装 make6、修改配置文件 vim redis.conf#关闭保护模式,开启的话,只有本机才可以访问redisprotected-mode no#后台启动da
2021-12-12 16:33:13
714
原创 CountDownLatch
CountDownLatch是一个同步协助类,允许一个或多个线程等待,直到其他线程完成。CountDownLatch和Thread.join的区别:1、join的实现是不停的去监测join线程是否存活,如果join线程存活就让当前线程等待2、CountDownLatch是调用count.countDown();方法使计数器减一CountDownLatch和CyclicBarrier(回环栅栏)的区别:1、CountDownLatch不可以复用,而CyclicBarrier的计数器达到0时,会重置,
2021-12-11 22:14:18
1046
原创 Semaphore(信号量)
构造方法: //permits 定义信号量数量 public Semaphore(int permits) { //非公平锁 默认 sync = new NonfairSync(permits); } //permits 定义信号量数量, fair 定义公平、非公平锁 public Semaphore(int permits, boolean fair) { sync = fair ? new FairSync(permits) : new NonfairSync(
2021-12-10 20:09:00
269
原创 CyclicBarrier
1、CyclicBarrier:回环栅栏,可以让一组线程等待到某个状态,然后在全部通过并执行,可以复用。 //parties 定义线程达到该值才可以放行 public CyclicBarrier(int parties) { this(parties, null); } public CyclicBarrier(int parties, Runnable barrierAction) { if (parties <= 0) throw new Ill
2021-11-21 14:32:45
346
原创 HashMap
JDK1.7 版本 :数组+链表JKD1.8以及之后:数组+链表+红黑树HashMap的特性容量:1、HashMap的容量大小指的就是数组的大小。new HashMap() ; 初始容量默认为***16***。2、如果写了初始容量,如果写的为11,他其实初始化的并不是11,而是取2n ,取与11最相近的那个值,必须大于等于11,所以为16。 /** * The default initial capacity - MUST be a power of two. * 默
2021-11-05 17:15:23
775
原创 线程池流程
线程池// 线程核心数量:corePoolSize//最大线程数(非核心线程+核心线程):maximumPoolSize//最大允线程停止时间:keepAliveTime//时间单位:unit//存放未来的及执行的任务:workQueue//创建线程的工厂:threadFactory//拒绝策略:handlerThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
2021-08-28 23:16:07
68
原创 字符串常量池
1、jdk1.8之后:没有永久代,字符串常量池在堆中,运行时常量池在元空间2、String str = “test”;先判断test在字符串常量池值是否存在,如果存在就直接返回引用,不存在,会在字符串常量池中创建一个test,返回引用3、String str = new String(“test”);在字符串常量池和堆中都创建一个test,他也会先判断在字符串常量池中是否存在test,不存在就创建,然后再去堆里面创建一个引用返回该引用4、intern(1)字符串常量池中存在testString
2021-08-10 22:06:02
199
原创 判断一个数是不是2的N次方
判断一个数是不是2的N次方通过按位与运算符(&)进行判断&把给定的数转化为二进制 比较每一位数字,如果不一样返回 0 10000 & 01111 = 00000--------------------------1 = 1 0 = 01 & 0 = 0;2 = 101 = 012 & 1 = 10 & 01 = 0;4 = 1003 = 0114 & 3= 100 & 011 = 0;8 = 1
2021-08-09 13:03:51
400
rabbitmq 安装包
2022-05-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人