- 博客(12)
- 收藏
- 关注
原创 redis的分布式锁
是指在给定的键不存在时,将该键的值设置为指定的值。如果键已经存在,则不进行任何操作。这种方法在多线程和分布式环境下非常有用,能够避免竞态条件,确保操作的原子性。
2024-10-28 17:30:18
139
原创 Optional orElse orElseGet的基本用法
/ 执行该句时会打印"Generating a name..."//orElseGet 只有为空的时候才走 返回值为方法返回。//OrElse 里的方法必走 返回值为方法返回。//Optional 值为空。
2024-10-13 12:52:47
204
1
原创 Springboot EnableScheduling注解解析
解析:Spring @EnableScheduling 注解是要实现计划任务,首先通过在配置类注解@EnableScheduling来开启对计划任务的支持,然后在要执行计划任务的方法上注解@Scheduled,声明这是一个计划任务。一般公司里面企业级开发会集成经常用到此应用实例demo1.创建springboot项目maven不需要加别的依赖2.写一个类 类里面写两个方法 方法上使用注解Scheduled 利于属性fixedRate设置定时时间间隔,完整代码如下:package com.z
2022-05-09 17:08:01
2338
原创 Sql优化,数据库优化
Sql 优化正确使用sql1.正确使用索引 查询条件列,排序列添加索引 项目中是如何使用的 查询条件2.应改避免索引失效 name like "%张%" 改为全文索引在 where 子句中 避免 num is null在 where 子句中使用!=或<>操作符避免在 where 子句中使用 or 来连接条件在where num/2=100 使用运算符在where中使用函数 substring()3.mysql建议使用主键自增 合理利用索引结构4.索引不宜建
2022-01-22 21:09:50
555
原创 MVCC的知识点
MVCCMVCC(多版本并发控制 Multi-Version Concurrent Control)为了提升mysql 读-写,写-读两个操作同时进行, 写-写mysql支持行级锁的,如果操作同一行数据,那么肯定是不可以的.每次对表中的记录操作时,会保存一个日志(undolog) 里面会记录事务的id号.如果有多个事务操作时,他们就会根据事务id,找到自己操作的版本记录.不同的隔离级别在读数据时, 会根据版本链生成一个ReadView(临时读视图) 版本链快照READ C
2022-01-22 15:06:02
981
原创 Mysql事物的四大特性,隔离级别
关系型数据事务4大特性:原子性: 一次事务过程中的多个操作要么都成功,要么都失败.持久性: 事务一旦提交,数据就不可改变.即使数据库服务出现问题.隔离性: 数据库是允许同时有多个事务进行访问, 这时就需要对多个事务间的操作进行隔离,隔离分为4个级别:读未提交 问题 脏读读已提交 解决 脏读 不可重复读可重复读 解决 不可重读 幻读串行化 解决一切问题 加锁 效率低一致性: 在事务开始之前和事务结束以后,数据库的完整性没有被破坏.例如: 我们多种方式对银行账户的余额进行
2022-01-22 15:05:15
486
原创 并发编程总结
回顾线程基本内容程序: 静态代码 安装在硬盘上的进程: 运行中的程序 是操作系统分配内存空间的单位线程: 线程是进程中的一个最小执行单位, 是cpu调度单位 线程依赖于进程创建线程1.线程类 继承 Thread 类 实现 Runnable接口 重写 run( ) 创建Thread类的对象,为其分配任务 类 实现 Callable接口 重写 call( ) 有返回值 可以抛出异常 创建Thread类的对象,为其分配任务常用方法run() calll(
2022-01-19 13:16:08
120
原创 集合高频小结
一.集合1.HashMap的低层实现原理?线程不安全,存储null的key和valuejdk7:数组+链表(jdk7) HashMap map = new HashMap();在实例化之后就创建了一个长度为16的一维数组Entry[] table,map.put(key1,value1) 首先调用Key1所在类的hashCode()计算key1的哈希值,此哈希值经过某种算法计算后,得到在Entry数组存放的位置,如果此位置上的数据为空,此时的key1-value1添加成功,如果此位置上的数据不为
2021-11-20 23:29:30
515
原创 死锁概念的具体实现
一:线程概念:不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃 自己需要的同步 资源,就形成了线程的死锁. 出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于 阻塞状态,无法继续。synchronized:隐试加锁,释放锁,可以锁定代码块,也可以锁定方法。lock:可以显示的加锁,只能锁定代码块package day05.demo2;import java.util.concurrent.locks.Lock;import java.util.concurre..
2021-06-29 20:59:32
167
原创 集合set和map总结
一:set不可以重复,值没有索引1.1:HashSet:无序 低层用哈希表+链表+红黑树package day01;import java.util.HashSet;public class HashSetDemo1 { public static void main(String[] args) { HashSet<Integer> set = new HashSet<>(); set.add(2); s
2021-06-25 21:14:39
108
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人