自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第二个个:基于Springbooot+vue的气象管理系统(第一个人介绍的)

2024-03-09 21:37:32 317

原创 第一次兼职写毕设

2024-03-07 20:48:27 376

原创 currenthashmap如何保证线程安全

将散列分成n段,每一个段都拥有自己的锁,通过继承lock锁来实现的,这样就锁的力度减少了,效率提高了n倍,没个段里面的每个数组有维护了自己的一个hashmap集合,这样来减少我们的冲突。JDK1.8引入了红黑树,将锁的细粒度进一步划分,每一个node的顶级节点,就是hashmap中的数组位置,通过CAS对node的顶级节点。,每一个node下面将力度更一步细分,它还支持协助扩容。在JDK1.7通过分段锁的形式来实现。在JDK1.8通过CAS实现。

2023-09-26 20:43:58 104

原创 分布式任务调度策略xxl-job

4.分片广播(广播触发所有集群完成一次任务,同时系统自动传递分片参数,可根据分片参数开发分片任务)例如:全局广播,将信息发送给所有需要发送的用户。通过分片广播,首先获取集群的index和集群的总数,然后通过处理信息的条数来对集群总数取模的方式分不到不同的集群上去处理。通过配置故障转移和重试策略就能解决绝大部分失败问题,绝小部分不能解决通过我们的记录日志或者通过发送邮件的方式来人工解决。3.故障转移(心跳检测第一个检测正常,发起任务)一:xxl-job的路由策略(最常用)二、xxl-job任务失败怎么解决。

2023-09-20 17:33:34 288 1

原创 如何解决分布式事务问题

微服务会执行sql会提交事务到我们的事务协调者是上,然后会保存一个undolog的日志,然后会各自去提条自己的事务不需要等待其他事务的提条,一旦有事务失败的话,那么相应的微服务会调用自己的日志文件去反向恢复我们的数据。微服务会执行sql会提交事务到我们的事务协调者是上,我们的事务协调者会检查事务的是否正常,如果事务不正常的话会回滚事务,每一个事务都需要等待其他事务的执行完成,吞吐量很低,但是能保证数据的强一致性。消费者消费成功数据会返回一个ack给队里,消费失败会返回一个nack给队列。

2023-09-19 21:03:05 71

原创 jvm的垃圾回收机制

当我们有新的对象创建我们jvm虚拟机的年轻代会给它分配一个内存,如果内存不够会进行一次minorgc,然后在来判断我们年轻代的内存够不够,如果够的话就会分配一个内存,如果不够就会,将它存入老年代中去,判断老年代的内存够不够,如果不够的话就会进行一次fullgc,fullgc比minorgc要慢十倍左右很影响性能,如果老年代内存还是不够就会报内存溢出问题。jvm会对我们的回收的对象进行一个标记,通过将标记放在一个方向然后回将要回收的对象进行移动出容器的方式进行清除。

2023-09-17 22:40:32 50 1

原创 索引失效的情况

1.使用了like查询然后查询的字段前面使用了-或% 如 like "_name"或like "%name"select * from user where password="123456" 正确。select* from user where password=123456 错误。3.使用or的时候左边或右边不是索引。7.错误的使用group by。B:索引字段重复度过高时候。6.计算了列或者使用了函数。2.没有遵循最左前原则。

2023-09-13 19:26:47 30 1

原创 集合List 、Set、Map的区别与联系

TreeMap的特点在于,所得到的结果是经过排序的。类似于HashMap,但是迭代遍历他时,取得的"键值对"的顺序是其插入次序,或是最近最少使用的(LRU)的次序。具有HsahSet的查询速度,内部使用链表维护元素的顺序(插入的次序)在使用迭代器遍历Set时,结果会按元素插入的次序显示。Map中存储的数据是无序的,他的键是不允许重复的,值是可以重复的。Map是存储键值对这样的双列数据的集合,是个独立接口。List中存储的数据是有序的,可以是重复的。Set中存储的数据是无序的,且不允许重复。

2023-09-06 21:32:15 129 1

原创 linux常用命令

11. find 查找文件 find /etc-name *profile 查看etc下面所有以profile结尾的目录。2.ls -a 查看所有的目录包含隐藏目录 ls -l 查看文件详细信息 ls-al 查看所有目录及详细信息。1. cd /路径 切换目录 cd ./ 切换当前目录下的目录 cd ../切换到当前目录的上级目录。9. cp 复制目录或文件 cp 文件或目录 /移动到的目录。10. mv 移动或改名 mv 文件/目录 /移动到的目录。23.yum install 下载。

2023-09-03 19:37:13 30

原创 事务的传播行为

3.supported 有事务就以事务方式执行没有就以非事务方式执行。2.required_new 当前有事务挂起没有事务新建事务。1.required 当前有事务就加入,没有事务就新建事务。4.not_supported 有事务挂起以无事务方式执行。7.nested如果当前存在事务就执行,没有事务就新建事务。5.mandatory 支持事务,如果没有事务就报错。6.never 不支持事务,有事务就报错。

2023-09-03 19:08:54 23

原创 spring中的bean是否线程安全

所以有状态的bean线程不安全,而没有状态的bean线程安全。什么是无状态bean,只能对它进行读操作而不能进行修改操作。什么事有状态bean,对它能进行读和修改操作。单例bean又分为有状态和无状态。我们可以从bean的作用域去看。3.会话(每次都建立新的连接)4.请求(每次都建立新的连接)2.原形(每次都new新的)1.单例bean(共享)5.全局会话(共享)

2023-09-02 21:30:52 26

原创 java锁的分类

synchronized和lock底层是一个map集合来存储我们的锁key为我们的锁,value是锁获取的次数,当是同一个线程的时候就可以再次获取锁,然后次数加一,锁的释放也需要全部释放将value变为0。当我们读数据的时候就会对数据上一个读锁,如果还有其他的线程来读取数据就可以获取锁,如果其他的线程来修改数据就不会获取到锁会进行等待,当我们是写锁的时候不会允许任何线程来获取锁。lock非公平锁有略微区别:首先线程会直接去竞争锁资源,如果获取不到会进入排队,如果线程刚刚来且有线程释放锁资源会再次竞争资源。

2023-09-02 21:19:16 32

原创 线程的六种状态

5.time_wating状态(调用了sleep方法)时间等待状态。3.blocked状态(没有获取到锁的状态)阻塞状态。4.wating状态(调用了wait方法)等待状态。2.runnable状态(就绪和运行状态)6.结束状态(线程结束)

2023-08-29 21:01:30 41 1

原创 springboot的自动装配

在这个类里面有扫描两个文件一个是DETA-INF下的spring.factories和DETA-INF包下的spirng包下的META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports这两个文件里面配置了我们自动装配的配置文件。@EnableAutoConfiguration里面@import(AutoConfigurationImportSelector.class)导入了自动装选择配器这个类。

2023-08-28 21:36:27 149 1

原创 spring的循环依赖

1.一级缓存将已经完成bean的生命周期的bean存在一级缓存里面2.二级缓存将还没有完成初始化的bean存在二级缓存中3.三级缓存将还没有完成初始化bean的工厂放在三级缓存中。

2023-08-28 21:23:44 25 1

原创 redis的持久化

redis宕机后我们可以通过redis中的bgsave然后主进程会fork(相当于复制一个)一个子进程(会阻塞毫秒值忽略不计),子进程通过从主进程复制来的表单,来映射物理内存,然后子进程会从磁盘来读取之前存储的RDB,执行RBD文件来恢复我们的缓存(存储以二进制存储)。RDB他是二进制文件,在保存的时候体积比较小,它的恢复的比较快,但是他有丢数据的风险,我们项目中通常使用AOP来恢复数据,虽然他慢一点但是它丢失数据的风险要小很多,在AOP文件中可以设置刷盘策略,我们当时设置的就是每秒批量写入一次命令。

2023-08-25 22:30:14 29 1

原创 redis序列化器

7.没有这个序列化器的时候默认就是jdk如果我们有序列化器就会执行我们自己的序列化器。5.它是在Bean的属性设置完成后,由Spring容器自动调用的一个回调方法。4.底层实现了InitializingBean。6.如果没有序列化器默认是我们的jkd序列化器。3.查看RedisTemplate的实现原理。2.创建自定义序列化器。

2023-08-23 17:37:34 51 1

原创 redis的五种常用类型的常用命令-1

启动服务端命令 redis-server.exe redis.windows.conf启动客户端命令 redis-cli.exe -h localhost -p 6379 -a 密码 或 redis-cli.exe auth 密码退出客户端 exit关闭redis服务端 redis-cli -a 密码 shutdown。

2023-08-21 19:47:16 54 1

原创 redis单线程为什么还是那么快

非阻塞io也会管理多个请求或连接,当客户端发起连接读取数据的时候,如果内核没有数据我们就会让连接返回,可以继续连接下一个socket,然后返回的socket会一直去获取数据直到获取成功,当有socket获取到数据后就会进入数据就会进入就绪状态,当数据进行返回时候还是会进行阻塞,这样效率也不是很高。1.redis是基于内存的他的速度比io操作快几千倍甚至上万倍所以很快。2.redis是单线程的,他不会出现线程阻塞的情况。3.redis它采用了非阻塞io而且引入了多路复用。什么是阻塞io什么事非阻塞io?

2023-08-19 21:04:38 34

原创 ThradLocal

由于ThreadLocalMap是由弱引用(ThreadLocal对象)和强引用(值)组成的,而弱引用不会阻止对象的垃圾回收,因此ThreadLocal对象在没有其他强引用指向它时会被垃圾回收,但对应的值却不会被释放,从而导致内存泄漏。(当我们的线程重新启动的时候我他就会读到上个线程没有清除的数据这样的话就导致了数据的不一致性)2.当使用ThreadLocal时,每个线程都会维护一个自己的ThreadLocalMap,其中保存了当前线程持有的所有ThreadLocal对象及其对应的值。

2023-08-18 21:37:25 27 1

原创 b树b+树二叉树红黑树的区别

2. B+树(B+ tree): - B+树是在B树的基础上进行了优化的一种多路搜索树,也常用于外部存储设备上的数据结构。- B+树与B树的区别在于,B+树的内部节点只存储关键字,而不存储数据,所有的数据都存储在叶子节点中。1. B树(B-tree): - B树是一种多路搜索树,它是五阶树,用于在磁盘等外部存储设备上进行高效的查找和插入操作。4. 红黑树(Red-Black Tree): - 红黑树是一种自平衡的二叉搜索树,用于在动态插入和删除操作频繁的情况下保持树的平衡。

2023-08-17 17:12:33 103 1

原创 volatile 变量和 atomic 变量有什么不同?

volatile 变量:使用 volatile 关键字修饰的变量可以确保对该变量的读取和写入操作对其他线程是可见的。volatile变量:适用于对变量的读取和写入操作都是简单的赋值操作,并且需要保证对其他线程的可见性。volatile变量:volatile 关键字只能保证对单个变量的读取和写入操作的可见性,不能保证复合操作的原子性。Atomic变量提供了一组原子操作方法,可以保证对变量的操作是原子的,同时也具有可见性。volatile 变量保证了对变量的读取和写入操作的可见性,但不能保证复合操作的原子性。

2023-08-15 21:26:04 402 1

空空如也

空空如也

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

TA关注的人

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