- 博客(7)
- 收藏
- 关注
原创 JMM
volatile是对JMM的一部分实现!!!可用其实现来介绍jmm实现。 什么是JMM? JAVA内存模型是一种规范,它描述了共享内存中的值被多线程修改和读取的过程。规定了共享变量的可见性和执行顺序。 why需要JMM? 为了屏蔽各平台之间的内存模型的差异,JMM为JAVA提供了统一的内存模型。 在统一内存模型的过程中,JMM会面临两种问题: (1)如何保证JAVA代码执行结果可预测,降低多线程的编写难度 (2)JMM内存模型不能太过于严格,否则会降低性能 针对这两个问题,JMM的解决方法是提供足够可用的内
2021-03-10 14:24:40
117
原创 面经1
面经总结 线程阻塞四种状态 1、当线程执行Thread.sleep()时,它一直阻塞到指定的毫秒时间之后,或者阻塞被另一个线程打断; 2、当线程碰到一条wait()语句时,它会一直阻塞到接到通知(notify())、被中断或经过了指定毫秒时间为止(若制定了超时值的话) 3、线程阻塞与不同I/O的方式有多种。常见的一种方式是InputStream的read()方法,该方法一直阻塞到从流中读取一个字节的数据为止,它可以无限阻塞,因此不能指定超时时间; 4、线程也可以阻塞等待获取某个对象锁的排他性访问权限(即等待
2021-02-28 22:10:49
96
原创 sql日志系统总结
一条SQL的执行过程 接下来我们看一条SQL更新语句是如何执行的? 与查询流程不一样的是,更新流程还涉及两个重要的日志模块,它们正是我们今天要讨论的主角:redo log(重做日志)和 binlog(归档日志)。 如果每一次的更新操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程 IO 成本、查找成本都很高。为了解决这个问题,MySQL 里经常说到的 WAL 技术,WAL 的全称是 Write-Ahead Logging,它的关键点就是先写日志,再写磁盘。 所以redo log就是加更
2021-02-25 13:31:23
258
原创 数组中的重复数字
找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof 著作权归领扣网络所有。商业转载请联系官方
2021-01-16 15:42:25
110
原创 只有主键索引是聚簇索引吗?举例?比如说联合索引可能是聚簇索引吗?什么情况下是聚簇索引?
聚簇索引的唯一性 正式聚簇索引的顺序就是数据的物理存储顺序,所以一个表最多只能有一个聚簇索引,因为物理存储只能有一个顺序。正因为一个表最多只能有一个聚簇索引,所以它显得更为珍贵,一个表设置什么为聚簇索引对性能很关键。 初学者最大的误区:把主键自动设为聚簇索引 因为这是SQLServer的默认主键行为,你设置了主键,它就把主键设为聚簇索引,而一个表最多只能有一个聚簇索引,所以很多人就把其他索引设置为非聚簇索引。这个是最大的误区。甚至有的主键又是无意义的自动增量字段,那样的话Clustered index对效率
2021-01-15 09:22:35
1479
原创 2020-12-22
剑指OFFER刷题笔记1 递归类型(通俗来说就是自己调用自己来解决问题,一般都是将一个大问题分解成越来越小的问题直到零号问题,然后回去计算): 一。斐波那契数列 1.尾递归(自己一直都是写这种,编写简单但是时间空间复杂度太高)2.可以用一个数组来从头记录下每一个值,这样就不存在1中的重复计算的问题(时间复杂度得到优化,但是空间复杂度为On,开销太大) 3.用两个变量记录 上面方法2,3就是DP,是一个从小到大计算的过程。注意:动态规划不一定是用空间换时间,方法三就得到了双重优化。 二。类似的问题,.
2020-12-22 20:30:35
108
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人