自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 总结——》【Linux】

版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。https://blog.csdn.net/weixin_43453386/article/details/89241912序号日期标题12018-10-31 Linux——》/etc/profile22018-11-06 解决——》413Request Enti...

2019-04-12 15:36:14 412

原创 总结——》【Mysql】

一起学习mysql

2019-03-19 17:24:53 1519 1

原创 总结——》【读书有益】

版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。https://blog.csdn.net/weixin_43453386/article/details/84788317序号日期标题12018-08-25 note1——》商业营销中的色彩22018-08-26 note2——》今日简史32018-08...

2018-12-27 09:57:22 369 3

原创 总结——》【养生之道】

版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。https://blog.csdn.net/weixin_43453386/article/details/84788053序号日期标题12018-11-30 养生之道——》每天8杯水22018-12-07 生活小窍门——》辣椒辣手32018-12-07...

2018-12-10 09:53:10 210

原创 总结——》【SpringBoot】

一起学习SpringBoot

2018-12-04 14:59:46 1325 1

原创 总结——》【MongoDB】

版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。https://blog.csdn.net/weixin_43453386/article/details/84788053序号日期标题12018-10-23 MongoDB——》mongoexport导出和mongoimport导入22018-10-24 Mon...

2018-12-04 14:48:21 370

原创 总结——》【Java】

java

2018-12-04 14:41:37 1769 1

原创 总结——》【MyBatis、MyBatis-Plus】

总结——》【MyBatis、MyBatis-Plus】

2018-12-04 14:29:39 595

原创 Java——》JSONObjet 数据顺序

JSONObject 内部是用 Map 来存储的:● HashMap 元素是无序的● LinkedHashMap 元素是有序的

2023-12-01 14:03:27 498

原创 算法——》排序&&查找

一、排序算法用于将一组数据`按照特定的规则进行排序`。排序算法可以分为`内部`排序和`外部`排序两种。不同的排序算法在时间复杂度、空间复杂度和稳定性等方面有所差异,选择合适的排序算法取决于具体的应用场景和数据规模。二、查找算法查找算法 = 搜索算法,是一种用于在数据集中`查找特定元素`的算法。查找算法可以应用于各种数据结构,如数组、链表、树等。

2023-11-29 14:12:27 172

原创 Java——》线性数据结构

线性表就是数据排成像一条线的结构。每个线性表上的数据最多只有前和后两个方向。线性表结构:数组、链表、队列、栈

2023-11-28 13:39:26 248

原创 Mysql——》int(1)和 int(10)区别

1.int后面的数字,不影响int本身支持的大小,int(1)、int(2)…int(10)没什么区别。2.int后面的数字,配合zerofill一起使用才有效。3.int(3) + zerofill实现了不足3位补0的现象,对于001,底层存储的还是1,只是在展示的会补0。

2023-11-27 15:12:55 439

原创 SpringBoot——》关联映射

以员工、地址、部门、角色四者之间的关联关系为例:在员工表中会有一个指向地址表主键的字段address_id实现二:@PrimaryKeyJoinColumn如果员工表和地址表是以主键关联的:实现三:不使用@JoinColumn和@PrimaryKeyJoinColumnHibernate会自动在员工表生成关联字段,字段默认的命名规则:被控方类名_被控方主键,如:address_id2、@OneToMany(一对多)实现一:@JoinColumn实现二:@JoinTable实现三:不使用

2023-11-24 16:53:30 331

原创 SpringBoot——》配置logback日志文件

二、logback-spring.xml

2023-11-21 16:14:25 720

原创 Java——》MESI

MESI是CPU缓存一致性的协议,大多数的CPU厂商都根据MESI去实现了缓存一致性的效果。

2023-11-07 14:00:49 176

原创 Java——》可见性

可见性是指线程间的,对变量的变化是否可见。通常被解释为将线程本地状态反映到主内存上,volatile就是负责保证可见性的。可见性问题是指一个线程修改了一个共享变量的值,但是另一个线程无法立即看到这个修改后的值。因为每个线程都有自己的工作内存(CPU三级缓存),线程之间无法直接访问对方的工作内存,只改自己的工作内存,没有及时的同步到主内存,导致一个线程对共享变量的修改对其他线程不可见,从而出现数据不一致。CPU在处理时,需要将主内存数据刷新到寄存器中再执行指令,执行完指令后,再将寄存器数据刷新到主内存中。

2023-11-06 18:00:35 191

原创 Java——》4种引用:强软弱虚

一、NormalReference = 强 = 普通 = 默认强引用是平常中使用最多的引用,强引用在程序内存不足(OOM)的时候也不会被回收二、SoftReference = 软软引用在程序内存不足时,会被回收三、WeakReference = 弱弱引用就是只要JVM垃圾回收器发现了它,就会将之回收四、PhantomReference = 虚虚引用的回收机制跟弱引用差不多,但是它被回收之前,会被放入 ReferenceQueue 中。

2023-11-06 16:35:09 136

原创 Java——》CAS

CAS = Compare And Swap = 比较并交换● 先比较一下值是否与预期值一致,如果一致,交换,返回true● 先比较一下值是否与预期值一致,如果不一致,不交换,返回false

2023-11-06 15:04:15 139

原创 Java——》如何保证线程的安全性

Q:如果存在临界(共享)资源,如何保证线程的安全性?A:加锁,怎么做?不加锁,怎么做?一、加锁1、悲观锁synchronized、Lock(ReentrantLock,ReadWriteLock) 2、乐观锁CAS二、不加锁1. ThreadLocal:让多个线程将共享资源copy到本地,没有多线程操作共享资源的问题 2. volatile:只要不包含并发对共享数据进行运

2023-11-06 13:59:21 106

原创 SpringBoot——》引入Redis

org.springframework.boot spring-boot-starter-data-redis

2023-10-08 17:29:36 287

原创 SpringBoot——》更改Redis序列化方式

序列化方式1. GenericJackson2JsonRedisSerializer2. GenericToStringSerializer3. Jackson2JsonRedisSerializer4. JdkSerializationRedisSerializer(默认使用)5. StringRedisSerializer6. 自定义 Serializer

2023-10-08 17:27:49 365

原创 Java——》IO

Java IO(Input/Output)是Java编程语言中用于处理输入和输出的一组类和接口。输入:数据输入到计算机内存的过程。输出:计算机输出到外部(数据库、文件)的过程。数据传输过程类似水流,因此称为IO流。Java IO 分为输入流和输出流 ,而根据数据的处理方式又分为字节流 和字符流。● 字节流:以字节为单位进行操作,适用于处理二进制数据● 字符流:以字符为单位进行操作,适用于处理文本数据

2023-09-27 15:01:48 307

原创 Java——》线程的打断(停止正在运行的线程)

Java——》线程的打断(停止正在运行的线程)一、设置标志位二、利用中断标志位三、利用InterruptedException

2023-09-21 17:07:40 236

原创 Java——》乐观锁、悲观锁

悲观锁 获取不到锁资源时,会将当前线程挂起(进入BLOCKED、WAITING) 线程挂起会涉及到用户态和内核态的切换,而这种切换是比较消耗资源的。用户态:JVM可以自行执行的指令,不需要借助操作系统执行。内核态:JVM不可以自行执行,需要操作系统才可以执行。乐观锁 获取不到锁资源时,可以再次让CPU调度,重新尝试获取锁资源 基于Java中的CAS操作

2023-09-11 16:15:33 181

原创 Java——》synchronized锁粗化&锁消除

一、锁粗化(锁膨胀)场景:在一个循环中,频繁的获取和释放锁资源操作:synchronized在编译时,可能会优化到循环外部,将锁的范围扩大优点:避免频繁的竞争和获取锁资源带来不必要的消耗二、锁消除场景:在synchronized修饰的代码中,没有任何共享(临界)资源,也不存在锁竞争操作:synchronized在编译时,就直接将锁的指令优化掉(自动把synchronized去掉)

2023-09-11 16:02:04 273

原创 Java——》公平锁、非公平锁

公平锁 排队竞争锁 线程A获取到了锁资源,线程B没有拿到,线程B去排队,线程C来了,直接排到线程B的后面,等待B拿到锁资源或者是B取消后,才可以尝试去竞争锁资源。非公平锁 先插队竞争锁,如果不成功再排队竞争锁 线程A获取到了锁资源,线程B没有拿到,线程B去排队,线程C来了,先尝试竞争锁资源成功拿到锁资源:开心,插队成功。没有拿到锁资源:依然要排到线程B的后面,等待B拿到锁资源或者是B取消后,才可以尝试去竞争锁资源。

2023-09-11 15:50:19 352

原创 Java——》JVM对原生的锁做了哪些优化

在线程进行阻塞操作之前先让线程自旋等待一段时间,可能在等待期间其他线程已经解锁,这时就无需再让线程执行阻塞操作,避免了用户态到内核态的切换。当JVM检测到不同的竞争状况时,会自动切换到适合的锁实现,这就是锁的升级、降级(Java——》synchronized锁升级)。

2023-09-11 15:13:25 425

原创 Java——》synchronized锁升级

无锁 :没有开启偏向锁(偏向锁延迟开启时间内),没有线程拿锁匿名偏向 :开启偏向锁,没有线程拿锁,没有偏向任何线程

2023-09-11 15:11:33 213

原创 Java——》synchronized的使用

synchronized是互斥锁,锁是基于对象实现的,每个线程基于synchronized绑定的对象去获取锁!有明确指定锁对象:● synchronized(变量名):当前变量做为锁● synchroinzed(this):this做为锁无明确指定锁对象:同步方法和同步代码块● 有static修饰:当前类.class做为锁(类锁)● 无static修饰:当前对象做为锁(对象锁)

2023-09-11 10:19:12 261

原创 Java——》synchronized的原理

1. 在虚拟机执行到monitorenter 指令时,首先要尝试获取对象的锁。如果这个对象没有锁定,或者当前线程已经拥有了这个对象的锁,把锁的计数器+1。2. 当虚拟机执行到monitorexit 指令时,将锁的计数器-1。 当计数器为0时,锁就被释放了。

2023-09-11 10:01:08 277

原创 Java——》synchronized互斥性

synchronized是互斥锁,每个线程获取synchronized时,基于synchronized绑定的对象去获取锁!

2023-09-11 09:52:11 273

原创 Java——》synchronized编译

指令:monitorenter、monitorexit

2023-09-08 18:00:37 147

原创 Java——》Synchronized和Lock区别

Synchronized是Java中的关键字,只能用于同步代码块或方法 Lock是一个接口,Java提供了多种实现该接口的锁,如ReentrantLock、ReadWriteLock等。Lock是一个接口,Java提供了多种实现该接口的锁,如ReentrantLock、ReadWriteLock等。

2023-09-08 17:25:29 467

原创 Java——》ThreadLocal

ThreadLocal可以理解为,他会在每个线程都,那么在线程之间访问内部副本变量就行了,做到了线程之间互相,相比于synchronized的做法是用空间来换时间。ThreadLocal的本质就是一个,ThreadLocal做为key,将一个数据和本地线程绑定在一起。

2023-09-08 17:07:18 450

原创 Java——》线程间是如何通信的

线程之间的通信有两种方式:共享内存和消息传递。

2023-09-08 16:33:02 519

原创 Redis——》Redis的部署方式对分布式锁的影响

主从+哨兵发生锁数据丢失问题,因为主从复制是异步的,主库加了锁却没来得及同步到从库上,从库就被哨兵提升为新主库,所有这个锁在新的主库上,丢失了!当引入Redis副本后,分布式锁还是可能受到影响。即使Redis通过sentinel保证高可用,如果这个master节点由于某些原因发生了主从切换,那么就会出现锁丢失的情况。

2023-08-30 14:55:02 719

原创 Redis——》实现分布式锁

实现分布式锁

2023-08-30 14:41:21 716

原创 Redis——》如何评估锁过期时间

key的失效时间是10s,但是客户端C在拿到分布式锁之后,然后业务逻辑执行超过10s,那么问题来了,在客户端C释放锁之前,其实这把锁已经失效了,那么客户端A和客户端B都可以去拿锁,这样就已经失去了分布式锁的功能了!!!

2023-08-30 14:36:25 984

原创 Redis——》锁被别人释放

SET lock_key 1 EX 10 NX // 10s后自动过期执行以上命令,给锁加自动过期时间,但每个客户端在释放锁时,都是无脑操作,并没有检查这把锁是否还归自己持有,所以就会发生释放别人锁的风险。

2023-08-30 14:22:12 249

原创 Redis——》死锁

已经获得锁的客户端一直占用锁,其他客户端永远无法获取到锁,这就是死锁

2023-08-30 10:19:58 1164

空空如也

空空如也

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

TA关注的人

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