- 博客(567)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 总结——》【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
450
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 总结——》【读书有益】
版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。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
389
3
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 总结——》【养生之道】
版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。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
249
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 总结——》【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
416
原创 Java——》JSONObjet 数据顺序
JSONObject 内部是用 Map 来存储的:● HashMap 元素是无序的● LinkedHashMap 元素是有序的
2023-12-01 14:03:27
1254
原创 算法——》排序&&查找
一、排序算法用于将一组数据`按照特定的规则进行排序`。排序算法可以分为`内部`排序和`外部`排序两种。不同的排序算法在时间复杂度、空间复杂度和稳定性等方面有所差异,选择合适的排序算法取决于具体的应用场景和数据规模。二、查找算法查找算法 = 搜索算法,是一种用于在数据集中`查找特定元素`的算法。查找算法可以应用于各种数据结构,如数组、链表、树等。
2023-11-29 14:12:27
218
原创 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
538
原创 SpringBoot——》关联映射
以员工、地址、部门、角色四者之间的关联关系为例:在员工表中会有一个指向地址表主键的字段address_id实现二:@PrimaryKeyJoinColumn如果员工表和地址表是以主键关联的:实现三:不使用@JoinColumn和@PrimaryKeyJoinColumnHibernate会自动在员工表生成关联字段,字段默认的命名规则:被控方类名_被控方主键,如:address_id2、@OneToMany(一对多)实现一:@JoinColumn实现二:@JoinTable实现三:不使用
2023-11-24 16:53:30
1090
原创 Java——》可见性
可见性是指线程间的,对变量的变化是否可见。通常被解释为将线程本地状态反映到主内存上,volatile就是负责保证可见性的。可见性问题是指一个线程修改了一个共享变量的值,但是另一个线程无法立即看到这个修改后的值。因为每个线程都有自己的工作内存(CPU三级缓存),线程之间无法直接访问对方的工作内存,只改自己的工作内存,没有及时的同步到主内存,导致一个线程对共享变量的修改对其他线程不可见,从而出现数据不一致。CPU在处理时,需要将主内存数据刷新到寄存器中再执行指令,执行完指令后,再将寄存器数据刷新到主内存中。
2023-11-06 18:00:35
224
原创 Java——》4种引用:强软弱虚
一、NormalReference = 强 = 普通 = 默认强引用是平常中使用最多的引用,强引用在程序内存不足(OOM)的时候也不会被回收二、SoftReference = 软软引用在程序内存不足时,会被回收三、WeakReference = 弱弱引用就是只要JVM垃圾回收器发现了它,就会将之回收四、PhantomReference = 虚虚引用的回收机制跟弱引用差不多,但是它被回收之前,会被放入 ReferenceQueue 中。
2023-11-06 16:35:09
197
原创 Java——》CAS
CAS = Compare And Swap = 比较并交换● 先比较一下值是否与预期值一致,如果一致,交换,返回true● 先比较一下值是否与预期值一致,如果不一致,不交换,返回false
2023-11-06 15:04:15
152
3
原创 Java——》如何保证线程的安全性
Q:如果存在临界(共享)资源,如何保证线程的安全性?A:加锁,怎么做?不加锁,怎么做?一、加锁1、悲观锁synchronized、Lock(ReentrantLock,ReadWriteLock) 2、乐观锁CAS二、不加锁1. ThreadLocal:让多个线程将共享资源copy到本地,没有多线程操作共享资源的问题 2. volatile:只要不包含并发对共享数据进行运
2023-11-06 13:59:21
122
原创 SpringBoot——》引入Redis
org.springframework.boot spring-boot-starter-data-redis
2023-10-08 17:29:36
332
原创 SpringBoot——》更改Redis序列化方式
序列化方式1. GenericJackson2JsonRedisSerializer2. GenericToStringSerializer3. Jackson2JsonRedisSerializer4. JdkSerializationRedisSerializer(默认使用)5. StringRedisSerializer6. 自定义 Serializer
2023-10-08 17:27:49
609
原创 Java——》IO
Java IO(Input/Output)是Java编程语言中用于处理输入和输出的一组类和接口。输入:数据输入到计算机内存的过程。输出:计算机输出到外部(数据库、文件)的过程。数据传输过程类似水流,因此称为IO流。Java IO 分为输入流和输出流 ,而根据数据的处理方式又分为字节流 和字符流。● 字节流:以字节为单位进行操作,适用于处理二进制数据● 字符流:以字符为单位进行操作,适用于处理文本数据
2023-09-27 15:01:48
339
原创 Java——》线程的打断(停止正在运行的线程)
Java——》线程的打断(停止正在运行的线程)一、设置标志位二、利用中断标志位三、利用InterruptedException
2023-09-21 17:07:40
275
原创 Java——》乐观锁、悲观锁
悲观锁 获取不到锁资源时,会将当前线程挂起(进入BLOCKED、WAITING) 线程挂起会涉及到用户态和内核态的切换,而这种切换是比较消耗资源的。用户态:JVM可以自行执行的指令,不需要借助操作系统执行。内核态:JVM不可以自行执行,需要操作系统才可以执行。乐观锁 获取不到锁资源时,可以再次让CPU调度,重新尝试获取锁资源 基于Java中的CAS操作
2023-09-11 16:15:33
207
原创 Java——》synchronized锁粗化&锁消除
一、锁粗化(锁膨胀)场景:在一个循环中,频繁的获取和释放锁资源操作:synchronized在编译时,可能会优化到循环外部,将锁的范围扩大优点:避免频繁的竞争和获取锁资源带来不必要的消耗二、锁消除场景:在synchronized修饰的代码中,没有任何共享(临界)资源,也不存在锁竞争操作:synchronized在编译时,就直接将锁的指令优化掉(自动把synchronized去掉)
2023-09-11 16:02:04
390
原创 Java——》公平锁、非公平锁
公平锁 排队竞争锁 线程A获取到了锁资源,线程B没有拿到,线程B去排队,线程C来了,直接排到线程B的后面,等待B拿到锁资源或者是B取消后,才可以尝试去竞争锁资源。非公平锁 先插队竞争锁,如果不成功再排队竞争锁 线程A获取到了锁资源,线程B没有拿到,线程B去排队,线程C来了,先尝试竞争锁资源成功拿到锁资源:开心,插队成功。没有拿到锁资源:依然要排到线程B的后面,等待B拿到锁资源或者是B取消后,才可以尝试去竞争锁资源。
2023-09-11 15:50:19
365
原创 Java——》JVM对原生的锁做了哪些优化
在线程进行阻塞操作之前先让线程自旋等待一段时间,可能在等待期间其他线程已经解锁,这时就无需再让线程执行阻塞操作,避免了用户态到内核态的切换。当JVM检测到不同的竞争状况时,会自动切换到适合的锁实现,这就是锁的升级、降级(Java——》synchronized锁升级)。
2023-09-11 15:13:25
449
原创 Java——》synchronized锁升级
无锁 :没有开启偏向锁(偏向锁延迟开启时间内),没有线程拿锁匿名偏向 :开启偏向锁,没有线程拿锁,没有偏向任何线程
2023-09-11 15:11:33
283
原创 Java——》synchronized的使用
synchronized是互斥锁,锁是基于对象实现的,每个线程基于synchronized绑定的对象去获取锁!有明确指定锁对象:● synchronized(变量名):当前变量做为锁● synchroinzed(this):this做为锁无明确指定锁对象:同步方法和同步代码块● 有static修饰:当前类.class做为锁(类锁)● 无static修饰:当前对象做为锁(对象锁)
2023-09-11 10:19:12
275
原创 Java——》synchronized的原理
1. 在虚拟机执行到monitorenter 指令时,首先要尝试获取对象的锁。如果这个对象没有锁定,或者当前线程已经拥有了这个对象的锁,把锁的计数器+1。2. 当虚拟机执行到monitorexit 指令时,将锁的计数器-1。 当计数器为0时,锁就被释放了。
2023-09-11 10:01:08
286
原创 Java——》synchronized互斥性
synchronized是互斥锁,每个线程获取synchronized时,基于synchronized绑定的对象去获取锁!
2023-09-11 09:52:11
295
原创 Java——》Synchronized和Lock区别
Synchronized是Java中的关键字,只能用于同步代码块或方法 Lock是一个接口,Java提供了多种实现该接口的锁,如ReentrantLock、ReadWriteLock等。Lock是一个接口,Java提供了多种实现该接口的锁,如ReentrantLock、ReadWriteLock等。
2023-09-08 17:25:29
478
原创 Java——》ThreadLocal
ThreadLocal可以理解为,他会在每个线程都,那么在线程之间访问内部副本变量就行了,做到了线程之间互相,相比于synchronized的做法是用空间来换时间。ThreadLocal的本质就是一个,ThreadLocal做为key,将一个数据和本地线程绑定在一起。
2023-09-08 17:07:18
465
原创 Redis——》Redis的部署方式对分布式锁的影响
主从+哨兵发生锁数据丢失问题,因为主从复制是异步的,主库加了锁却没来得及同步到从库上,从库就被哨兵提升为新主库,所有这个锁在新的主库上,丢失了!当引入Redis副本后,分布式锁还是可能受到影响。即使Redis通过sentinel保证高可用,如果这个master节点由于某些原因发生了主从切换,那么就会出现锁丢失的情况。
2023-08-30 14:55:02
765
原创 Redis——》如何评估锁过期时间
key的失效时间是10s,但是客户端C在拿到分布式锁之后,然后业务逻辑执行超过10s,那么问题来了,在客户端C释放锁之前,其实这把锁已经失效了,那么客户端A和客户端B都可以去拿锁,这样就已经失去了分布式锁的功能了!!!
2023-08-30 14:36:25
1033
原创 Redis——》锁被别人释放
SET lock_key 1 EX 10 NX // 10s后自动过期执行以上命令,给锁加自动过期时间,但每个客户端在释放锁时,都是无脑操作,并没有检查这把锁是否还归自己持有,所以就会发生释放别人锁的风险。
2023-08-30 14:22:12
434
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人