学海无涯
naocs、feign、mongodb,flowlong,swagger、rabbitmg、redis、xxl-job、ruoy、security、 JWT、 sentinel, seata、 mybatis-plus, TDengine,nebula graph、 milvus、 MinlO/ FastDFS/ 七牛云、XXL-J0B.APIFOX、pageHelper、自定义注解、雪花算法、策略模式、python脚本、git、github、软考、pmp、group by 也得研究一下。
文章作者: coder-xuyong
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 coder-xuyong!
相关推荐

2026-07-22
jvm面试
JNI是什么Java编译器把Java文件编译为字节码文件之后,jvm执行引擎将字节码指令解释为对应操作系统能运行的指令,这也是为什么Java是编译和解释共存的语言。当Java代码执行的时候,需要调用底层的c或者c++写的本地方法,所以这里就需要本地方法接口(JNI)去和本地方法库做交互。 JVM的垃圾回收机制是怎么样的?想要回收垃圾,先得看一个对象他是不是垃圾,一般有两种方法: 引用计数法:如果对象被引用了,计数器+1,如果取消引用了就-1,计数器为零就可以回收了,简单除暴。但是他无法处理循环引用的问题。 可达性分析:对象A引用B,B引用C,C引用D会形成一个有向图。可达性分析会从根对象(gc root)出发遍历这个有向图,遍历不到的就是不可达对象,就是垃圾。 三色标记法:用于遍历标记判断的,用三种颜色去标记对象的状态。但是存在两个问题,一个是浮动垃圾,另一个是漏标的问题。 判断对象是垃圾之后,就需要使用垃圾回收算法去处理。基础的算法有三种: 标记清除算法:从gc roots 出发,去遍历标记所有可达性的对象,之后遍历堆去清除所有不可达的对象。缺点会产生内存碎片。 标记...

2025-06-22
Java查漏补缺
基础工具类String String 类能被继承吗? String,StringBuffer,StringBuilder 的区别。 String 类不能被继承。因为其被 final 修饰,所以无法被继承。 StringBuffer,StringBuilder 拼接字符串,使用 append 比 String 效率高。因为 String 会隐式 new String 对象。 StringBuffer 主要方法都用 synchronized 修饰,是线程安全的;而 StringBuilder 不是。 面向对象 抽象类和接口的区别? 类可以继承多个类么?接口可以继承多个接口么?类可以实现多个接口么? 类只能继承一个类,但是可以实现多个接口。接口可以继承多个接口。 继承和聚合的区别在哪? 一般,能用聚合就别用继承。聚合是“has-a”,类似 school 类存在 teachers 的变量。 反射⭐ 创建实例 反射创建实例有几种方式? 通过反射来创建实例对象主要有两种方式: 用 Class 对象的 newInstance 方法。 用 Constructor 对象的 newIns...

2026-07-31
场景分析
⭐海量数据下的实时模糊检索问题核心思路是:将“模糊检索”工作从关系型数据库(如MySQL)中剥离,交给专业的搜索/分析引擎来处理。 例如人:通过名字模糊查询用户,2000w数据,20%每月数据量增长,返回列表要怎么做?方案一:mysql硬撑方案二:引入第三方专业引擎,如ES,这是处理海量数据模糊搜索的标准工业级方案。方案三:高阶方案——分库分表 + ES 线程安全问题下面这段代码有什么线程安全问题,有几种方案解决? 12345678910public class demo { public void test(){ ReentrantLock lock = new ReentrantLock(); lock.lock(); //处理业务 lock.unlock(); }} 问题: 锁是局部变量,无法实现线程间互斥 未使用 try-finally,可能造成锁永不释放 解决方案一:将锁提升为成员变量,并配合使用try-finally 123456789101112...

2025-09-24
jvm字节码
字节码Java 字节码是Java虚拟机执行的一种指令格式。之所以被称之为字节码,是因为:Java 字节码文件(.class)是一种以 8 位字节为基础单位的二进制流文件,各个数据项严格按照顺序紧凑地排列在 .class 文件中,中间没有添加任何分隔符。整个 .class 文件本质上就是一张表。 Java 能做到 “一次编译,到处运行”,一是因为 JVM 针对各种操作系统、平台都进行了定制;二是因为无论在什么平台,都可以编译生成固定格式的Java 字节码文件(.class)。 字节码文件结构一个简单的 HelloWorld.java 1234567package cn.itcast.jvm.t5; // HelloWorld 示例public class HelloWorld { public static void main(String[] args) { System.out.println("hello world"); } } 执行 javac -parameters -d . HellowWorld.jav...

2025-10-15
Java并发简介
并发概念进程和线程 进程: 可以视为程序的一个实例。 线程: 线程作为最小调度单位,进程作为资源分配的最小单位。 一个进程之内可以分为一到多个线程。 一个线是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行 Java 中,线程作为最小调度单位,进程作为资源分配的最小单位。 在 windows 中进程是不活动的,只是作为线程的容器。 进程和线程的差异: 一个程序至少有一个进程,一个进程至少有一个线程。 线程比进程划分更细,所以执行开销更小,并发性更高 进程是一个实体,拥有独立的资源;而同一个进程中的资源是多个线程共享的。 并行与并发单核 cpu 下,线程实际还是串行执行的。操作系统中有一个组件叫做任务调度器,将 cpu 的时间片(windows下时间片最小约为 15 毫秒)分给不同的程序使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感觉是 同时运行的 。总结为一句话就是: 微观串行,宏观并行 ,一般会将这种 线程轮流使用 CPU 的做法称为并发, concurrent cpu 时间片1 时间片2 时间片3 时间片4 co...

2025-10-16
Java并发核心机制
Java 并发核心机制 Java 对于并发的支持主要汇聚在 java.util.concurrent,即 J.U.C。而 J.U.C 的核心是 AQS。 J.U.C 简介Java 的 java.util.concurrent 包(简称 J.U.C)中提供了大量并发工具类,是 Java 并发能力的主要体现(注意,不是全部,有部分并发能力的支持在其他包中)。从功能上,大致可以分为: 原子类 - 如:AtomicInteger、AtomicIntegerArray、AtomicReference、AtomicStampedReference 等。 锁 - 如:ReentrantLock、ReentrantReadWriteLock 等。 并发容器 - 如:ConcurrentHashMap、CopyOnWriteArrayList、CopyOnWriteArraySet 等。 阻塞队列 - 如:ArrayBlockingQueue、LinkedBlockingQueue 等。 非阻塞队列 - 如: ConcurrentLinkedQueue 、LinkedTransferQueue...
评论
公告
目录
