鱼鳞

鱼鳞

暂无个人简介
Java后端
2026
湘潭大学

该用户为会员

会员专享项目教程/ 答疑等服务

打卡: 1. 日常八股文复习+算法练习 2. 定时微服务完成 3. 将ai服务新增自动查票助手,SpringAI+deepseek+爬虫实现,可以参考我的博客https://blog.csdn.net/hsnsnusjs/article/details/147288088?spm=1001.2014.3001.5502

今日打卡: 1. 八股文复习+算法练习 2. 定时微服务实操+压力测试

打卡: 1. 八股文复习 2. 算法练习 3. 定时微服务(看完基本架构,明天开始实操)

打卡: 1. 八股文复习 2. 算法 3. ai开发(完结) 4. 定时微服务(未完成)

打卡: 1. 八股文复习 2. 算法题 3. AI开发 4. 定时微服务

打卡 1. 八股文复习+算法 2. ai应用开发

好久没打卡了,今日工作: 1. 复习八股文 2. 算法题 3. 学习了一下RAG和RAFT 4. 复习spring 集合 JUC JVM 5. 学习扫码登录 6. 定时微服务学习中

打卡,今日算法5题,重学java集合,巩固知识,明天开始停止背诵新的八股文,反复复习之前的八股文,背了也快140题了,后续加强算法的学习。 今日八股文: 1、编译执行与解释执行的区别是什么?JVM 使用哪种方式? 1. 编译执行:程序执行前会将代码事先编译成机器码,再直接在cpu上运行。优点:运行速度块,缺点:兼容性差,在不同的平台需要重新编译。 例如 c/c++ 2. 解释执行:程序不事先编译,而是使用解释器解释执行。优点:兼容性高,不需要针对不同的平台重新编译。缺点:运行慢,每次执行都要翻译然后执行 3. jvm使用解释执行+预先编译 显示使用解释执行,将代码编译成字节码,然后翻译字节码文件执行。 预编译:当JIT中发现某个代码块或方法经常执行,就会事先预编译成机器码,存入缓存中。 2、Java 的 synchronized 是怎么实现的? 修饰方法 ACK_SYNCHRONIZED 修饰代码块 monitorenter、monitorexit。 锁升级:无锁 偏向锁:在线程状态上设置一个标识位,下次线程获取时不需要任何同步操作直接获取锁 轻量级锁:偏向锁在被其他线程获取后,升级为轻量级锁。线程通过CAS获取锁,如果获取失败,尝试自旋重试,如果自旋超过一定时间,升级为重量锁。 重量级锁:线程获取锁失败会被阻塞,由操作系统或其他线程唤醒。 3、线程的生命周期是什么,线程有几种状态,什么是上下文切换 创建、运行、就绪、阻塞(在内存中)、挂起(被移除内存)、结束

打卡,今天没学啥, 算法三道:1. 括号生成 2. 单词搜索 3. 分割回文串 今日八股文: 1、Java 线程池核心线程数在运行过程中能修改吗?如何修改? 允许修改,可以使用ThreadExcutor.CoreSize()指定核心线程数的大小。 指定大小不会打断当前任务,会在下一个任务提交时生效 一般遵循: 1. 等待队列过长时可以增加线程数。 2. 系统负载很小时可以减少线程节省资源。 3. 负载很大时候可以增加线程减少系统负载。 4. 增加线程时候要保证系统资源支持。 2、Java 中的 final 关键字是否能保证变量的可见性? final修饰的数据是不能改变引用的,所以如果final修饰int long等基本数据类型时候,不能修改,而修饰list等引用类型时可以修改,虽然是同一个list,但是list中的值是可以改变的,所以final关键字只能保证引用可见,但是不能保证引用内部可见。 3、什么是 Java 中的原子性、可见性和有序性? 原子性:线程操作要么都成功要么都失败。实现:CAS、原子类、锁 可见性:线程修改数据后,其他线程可以马上观测到最新数据。实现:volatile、JMM、sychronised 有序性:程序实际运行顺序要和代码顺序一致。实现:volatile、内存屏障 4、为什么 Java 中的 ThreadLocal 对 key 的引用为弱引用? 主要是为了防止内存溢出或者是内存泄漏 每个线程都有一个ThreadLocalMap,key是ThreadLocal,value是对应的值,一个线程可以有多个ThreadLocal对象,当使用某个ThreadLocal对象时,此时的结果就是栈中的ThreadLocal引用和堆中的key都指向ThreadLocal对象,如果key指向ThreadLocal是强引用,那么当ThreadLocal不再被外部使用时,Thread Local引用销毁但是ThreadLocal不会被垃圾回收,造成内存泄漏。 使用弱引用就会被垃圾回收(ThreadLocal引用对ThreadLocal对象是强引用,所以如果还在使用是不会垃圾清理的)。

打卡,今日学习kafka和es 算法三道:1. 字符串数相加 2. 手机电话数字字母组合(回溯) 3. 数组元素组合成目标数(回溯) 八股文: 1. 什么是hotkey hotkey是探测热点数据的中间组件,可以动态判断数据是否经常被访问,从而动态调整缓存。 核心组件有etcd、worker,首先etcd相当于注册中心,用于向client和worker提供对方的信息,此外还可以通过etcd的控制台进行配置热点判定规则等。client首先计算数据的访问,然后发送给worker,然后统一汇总多个client的数据,再根据热点判断规则,判断是否为热点数据。 2. concurrenthashmap 1.7和1.8之间的区别 结构上:1.7使用segment,每一个segment相当于一个hashmap,默认是16个segment,线程访问segment需要获取segment的锁,所以最多同时可以有16个线程同时访问;1.8移除了segment的使用,而是直接使用hashmap类似的结构,使用一个列表作为主要存储,将锁的粒度细化到链表的头结点或红黑树的根节点,大大增加了并发量。 扩容:1.7扩容时是segment扩容,segment之前的扩容互不影响,遵循1.7hashmap的扩容机制;1.8扩容采用延迟扩容,先复制一个原列表两倍大小的新列表,将数据迁移,允许多个线程迁移,每当有一个线程要操作列表时,发现列表正在扩容,就会帮忙进行数据迁移。 3. mysql优化器是如何优化的 先将sql展开为解析树 优化sql,例如静态数据计算、子查询展开等 生产多个查询方案,并根据成本,选择成本最低的方案查询。 4. java线程池有哪些拒绝策略 默认抛出异常 交给提交任务的线程执行 直接丢弃当前任务 丢弃等待队列中最先被提交的任务 自定义拒绝策略

下载 APP