lily's blog

Thinking will not overcome fear but action will.

如果多个Java线程同时访问创建同一个对象的构造器,此时构造器方法的调用情况如下: 对象创建过程的原子性: 尽管有多个线程同时试图创建同一个对象,但JVM会保证对象创建过程的原子性。也就是说,在任意时刻只会有一个线程成功地完成对象的创建。 线程安全的对象创建: 由于对象创建是一个原子操作,因此即使多个线程同时访问同一个构...

计算机组成原理

二进制位计算 在计算机中 a&b 表示a与b进行按位与运算, 逐一比较两个数的二进制位,如果两个比特都是1,该位结果为1,否则为0。 在二进制中 x & 1,等价于检查数字的最低为是否为1(最右边的位)(因为1的二进制数为1)。 而在二进制到十进制的转换中,由于最右的数为 x*2_0,2_0=1,因此奇数可以表示为2k+1,偶数可以表示为2k。 **根据每个二进制...

Im架构

IM系统为了保证消息必达以及发送可靠,消息数据是先落盘后推送or同步的。消息从发 送方发出后,经过服务端转发,服务端会先将消息保存到消息库,完成消息的持久化保存 后,对于在线的接收方,会直接选择通过长链接在线推送。但在线推送并不是一个必达路 径,只是为了保证“即时”,采用的一个更优的消息传递路径。对于在线推送失败或者离线的 接收方,会通过主动拉取的方式获得服务端所有未同步消息。通过...

Redis底层数据结构

跳表 结构 ele 权重设计 节点的权重在跳表中通常是用来决定节点的排序和层级结构的。设计节点权重的方式主要考虑以下几个方面: 唯一性:每个节点的权重应该是唯一的,以便在查找时能够准确定位目标节点。 排序规则:节点的权重决定了跳表中节点的顺序。一般情况下,权重越大的节点在跳表中越靠后。 随机化:为了保持跳表的平衡性,节点的权...

Gpt话术大全

算法篇 上述题目是一场Java开发工程师讨论中提问的Java开发的问题,假如你是Java高级架构师,并且对Java程序员成长路线的所有技术栈都非常熟悉,精通Java基础、Mysql数据库知识、缓存数据库、Spring全家桶、分布式等各种知识请你尽可能详细、谨慎、全面、细心、前瞻,尽可能通俗易懂地,尽可能全面,尽可能仔细,尽可能仔细分析考虑所有可能为我讲解上述问题,可以尽可能多地输出...

Spring常考知识点

循环依赖问题 参考文章: 三级缓存是如何解决bean循环依赖的 bean的循环依赖解决过程 顺序为,实例化、属性赋值(属性填充)、初始化、依赖注入。 实例化 Bean: Spring 在实例化 Bean 时,会先创建一个空的 Bean 对象,并将其放入一级缓存中。 属性赋值: Spring 开始对 Bean 进行属性赋值,如果发现循环依赖,会将当前 Bean 对象提...

慢sql优化

学习文章 慢查询优化 (yuque.com) MySQL中什么情况下会出现索引失效?如何排查索引失效?_如何定位索引失效-CSDN博客 五分钟搞懂MySQL索引下推大家好,我是老三,分享一个小知识点。面试时候问到索引,常常会顺嘴问一句索引下推。给我五分钟, - 掘金 (juejin.cn) MySQL索引可能失效之or、is null、is not null、不等于(!=...

Juc

Java多线程 多线程的状态 java中锁的分类 乐观锁悲观锁 读写锁 可重入锁 自旋锁 因此自旋锁适用于锁竞争不激烈、锁持有时间短的场景。 优缺点 CAS 是什么 怎么实现的 缺点 ABA问题 只能保证一个共享变量的原子操作 cpu开销大 基于CAS实现的类 原子类操作基本数据类型 AQS CLH CLH详解 CLH比传统CAS自旋锁优化点 CLH数...

Hashmap

equals方法和hashCode方法 常见问题 equals()方法中,如果有两个引用类型的对象,例如两个hashMap,但是里面存储的键值对内容都相等,调用equals()方法返回得到true还是false呢? 在 Java 中,equals() 方法用于比较两个对象的内容是否相等。对于 HashMap 这样的引用类型,如果两个 HashMap 对象存储的键值对内容...

内存模型

参考文章:JVM内存模型 JVM内存模型 JVM内存模型图 栈stack 栈中的内容 在 Java 虚拟机(JVM)中,栈帧是用于管理方法调用的结构,其中包含几个重要的组成部分,包括局部变量表、操作数栈、动态链接和方法出口。以下是它们的定义和作用: 1. 操作数栈 (Operand Stack)**: 操作数栈是栈帧中的一个区域,用于存储方法执行过程中产生的中间结果。每当执行指...