摘要:
二叉树是一种非常常见的数据结构,它每个节点最多有两个子节点,通常被称为左子节点和右子节点。下面是一些关于二叉树的基本操作和使用: 创建二叉树:可以使用不同的方式创建二叉树,例如插入节点、复制现有二叉树等。二叉树的创建取决于所需要的数据结构和其用途。 插入节点:在二叉树中插入节点的方法取决于节点的位置 阅读全文
2023年12月12日
2023年12月7日
摘要:
源自: https://mp.weixin.qq.com/s?__biz=MzAxMjY5NDU2Ng==&mid=2651866587&idx=1&sn=adb24cc2766eefccc72efba8aba9d259&chksm=80490092b73e898471a0b31e7ae19db4a 阅读全文
2023年8月28日
摘要:
当执行插入批量数据时,可能会出现重复健问题。有以下解决方案: 1. 使用INSERT IGNORE语句:这样会忽略重复的插入,不会发生任何错误,但也不会插入新数据。 2. 使用REPLACE INTO语句:这会删除已经存在的行,并插入新行,但不会保留原有行的任何数据。 3. 使用INSERT INT 阅读全文
2023年3月18日
摘要:
全局ID生成器,满足以下特性: 1.唯一性,2.高可用,3.高性能,4.递增性,5.安全性。 实现:拼接,ID会用数值:Long型 直接插入数据库 策略: UUID;Redis自增;雪花算法;数据库自增 Redis自增: 方便统计订单量,每天一个Key。ID是时间戳+计数器 阅读全文
摘要:
悲观锁:简单粗暴,性能一般。 认为线程安全一定会发生,在操作数据之前获取锁,确保线程串行执行。 Synchronized。Lock都属于悲观锁 乐观锁,性能较好。 认为线程安全问题不一定存在,因此不加锁。只是在更新数据时去判断有没有其他线程对数据做修改。 如果没有修改则认为是安全。 如果被其他线程修 阅读全文
2023年3月17日
摘要:
缓存: 数据交换的缓冲区,是存储数据的临时地方,一般读写性能较高。 作用: 降低后端负载 提高读写效率,降低相应时间。 成本: 数据一致性和代码维护成本 缓存更新策略: 1.内存淘汰: 解决内存不足问题,默认开启。一致性较差,维护成本无。 2.超时剔除: 给缓存添加TTL时间,到期自动删除缓存,下次 阅读全文
2023年3月10日
摘要:
(线程)Java有几种方法创建线程执行任务1.单继承Thread,2.实现Runnable接口 (匿名内部类)3.Callable接口 4.线程池 3种循环:while;do-while;for3种跳出循环break return continue 三大特性之一:继承子类会自动获得父类的功能子类会获 阅读全文
2023年3月2日
摘要:
1.更新数据库再更新缓存2.删除缓存再更新数据库 (改善操作) 最终:先删缓存,再更新数据库。读的时候先读缓存,没有就去数据库,同步更新缓存。 阅读全文