![](https://img-blog.csdnimg.cn/direct/77c9546871284532b0f940e5561536cc.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试
文章平均质量分 55
分享面试相关内容
我是来人间凑数的
一个工作多年,技术却不咋地的程序媛
展开
-
Mysql为什么使用B+Tree作为索引结构
总体来说,我认为技术方案的选型,更多的要根据具体的业务场景来决定,并不一定是说B+树就是最好的选择,就像MongoDB里面采用B树结构,本质上来说,其实是关系型数据库和非关系型数据库的差异。原创 2024-02-04 14:45:21 · 611 阅读 · 0 评论 -
count(1)、count(*)与 count(列名)的区别?
count(*)包括了所有列,相当于行数,在统计结果时候,不会忽略列值为NULLcount(1)包括了忽略所有列,用 1代表代码行,在统计结果时候,不会忽略列值为NULLcount(列名)只包括列名那一列,在统计结果时候,会忽略列值为空(这里空不是只空字符串或者 0,而是表示 null)计数,即某个字段值为 NULL时,不统计。原创 2024-01-09 17:23:36 · 482 阅读 · 0 评论 -
select for update会锁表还是行锁还是其它
select查询语句是不会加锁的,但是 select for update除了有查询的作用外,还会加锁呢,而且它是悲观锁哦。至于加了是行锁还是表锁,这就要看是不是用了索引/主键啦。id为主键,select for update 1270070这条记录时,再开一个事务对该记录更新,发现更新阻塞啦,其实是加锁了。因此,没用索引/主键的话,selectfor update加的就是表锁。我们再开一个事务对另外一条记录 1270071更新,发现更新成功,因此,如。没用索引/主键的话就是表锁,否则就是是行锁。原创 2024-01-04 15:39:23 · 736 阅读 · 0 评论 -
第三天:对ThreadLocal理解
ThreadLocal,也就是线程本地变量。如果你创建了一个 ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地副本,多个线程操作这个变量的时候,实际是操作自己本地内存里面的变量,从而起到线程隔离的作用,避免了线程安全问题。threadLocal内存结构图。原创 2023-12-25 16:54:39 · 846 阅读 · 0 评论 -
第二天:线程与进程
为了让用户感觉多个线程是在同时执行的, CPU资源的分配采用了时间片轮转也就是给每个线程分配一个时间片,线程在时间片内占用 CPU执行任务。当线程使用完时间片后,就会处于就绪状态并让出 CPU让其他线程占用,这就是上下文切换。Java中的线程分为两类,分别为 daemon线程(守护线程)和 user线程(用户线程)。在 JVM启动时会调用 main函数,main函数所在的钱程就是一个用户线程。其实在 JVM内部同时还启动了很多守护线程,比如垃圾回收线程。那么守护线程和用户线程有什么区别呢?原创 2023-12-19 15:28:15 · 809 阅读 · 0 评论 -
第一天:并行与并发的区别
并发的实现依赖于 CPU 切换线程,因为切换的时间特别短,并行就是同一时刻,两个线程都在执行。这就要求有两个 CPU 去分。就好像我们去食堂打饭,并行就是我们在多个窗口排队,几个阿姨同时打。并发就是我们挤在一个窗口,阿姨给这个打一勺,又手忙脚乱地给那。并发就是同一时刻,只有一个执行,但是一个时间段内,两个线程都。从操作系统的角度来看,线程是 CPU 分配的最小单位。所以基本对于用户是无感知的。原创 2023-12-18 10:33:09 · 362 阅读 · 0 评论