
每日面经整理
文章平均质量分 73
守笑
后端开发。wx:Chanloblok,添加时请备注来意。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
微服务常用日志追踪方案:Sleuth + Zipkin + ELK
摘要:微服务架构中,Sleuth+Zipkin+ELK组合提供了完整的链路追踪方案。Sleuth自动生成TraceID/SpanID并传播,Zipkin收集存储追踪数据并提供可视化,ELK集中管理业务日志。通过MDC关联日志与追踪上下文,实现全链路追踪。配置采样率和B3协议后,各服务上报数据至Zipkin,业务日志发送至ELK,通过TraceID可跨系统关联调用链路与业务日志,便于问题定位和全链路追踪。原创 2025-06-02 17:01:48 · 798 阅读 · 0 评论 -
面试官最爱问的接口幂等性
接口幂等性是指同一接口的多次调用与单次调用效果一致。在网络不可靠环境下,它能防止重复请求导致的数据异常,提升系统健壮性。实现方案包括Token池+Redis集群,通过唯一Token一次性验证机制确保操作原子性。典型应用场景包括支付退款、文件删除等需保证数据一致性的业务。核心实现包含Token生成/校验服务和拦截器,采用Lua脚本保证Redis操作的原子性,有效防范重复提交和恶意攻击。原创 2025-06-01 20:30:28 · 827 阅读 · 0 评论 -
分治法和动态规划法
动态规划法是通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。与分治法不同的是,动态规划解决的子问题往往不是互相独立的,即不同的子问题之间可能共享一些子子问题的解。动态规划通过存储这些子问题的解来避免重复计算,从而提高效率。原创 2024-09-12 16:28:20 · 487 阅读 · 0 评论 -
单例模式解析
一种常用的软件设计模式,它确保,并提供一个全局访问点来获取这个实例。原创 2024-09-10 08:38:05 · 1044 阅读 · 0 评论 -
JVM工作过程
将JVM工作过程粗略分为5个阶段,包括其中,(1)加载阶段、主要由完成(2)初始化阶段是由在类加载过程的最后阶段的。(3)执行阶段主要由负责(4)回收阶段主要是(Garbage Collector)负责。原创 2024-09-07 11:53:26 · 1151 阅读 · 0 评论 -
JVM中运行时数据区
(1)运行时数据区是JVM内存模型的重要组成部分(前有类加载器,后有执行引擎(2)JVM在执行Java程序时,用于存储和管理各种数据的内存区域(多块区域),这些区域共同协作以支持Java程序的运行。(3)包括方法区(旧名字叫永久代->java8换名字为元空间)、堆、虚拟机栈、本地方法栈、程序计数器等五大区域。线程共享区域:Java堆和方法区(或元空间),这些区域在JVM启动时创建,随着JVM的关闭而销毁。线程私有区域。原创 2024-09-07 09:37:55 · 1095 阅读 · 0 评论 -
zookeeper初识
(1)ZooKeeper是一个、开放源码的,是一个为分布式应用提供一致性服务的软件,作为Apache的顶级项目,最初是为Hadoop的分布式协调而设计,主要用来解决。(2)简单来说,ZooKeeper 可以被看作是,它维护着一些关键的数据和状态信息,使得系统中的各个组件能够协调一致地工作。(3)ZooKeeper的数据模型在结构上,每个节点(在ZooKeeper中称为)都可以,从而形成一个。原创 2024-09-06 16:21:33 · 1294 阅读 · 0 评论 -
redis面试题
在Redis数据库使用过程中,某个或某些key被极其频繁地访问,远远超出其他key的访问频率。(1)缓存击穿指的是缓存中某个热点数据在过期或被删除后,由于大量并发请求同时访问该数据,导致这些请求直接穿透到数据库或其他后端存储系统,从而增加了后端系统的负载,甚至可能引发数据库崩溃。(2)缓存穿透指的是查询一个数据库中不存在的数据,由于缓存中也没有这个数据,所以每次查询都会直接访问数据库,如果有大量此类请求,就会对数据库造成很大压力,这种现象被称为缓存穿透。(3)缓存雪崩指的是在。原创 2024-09-06 09:01:47 · 1170 阅读 · 0 评论 -
JAVA线程、线程池解析
是操作系统能够进行的最小单位,它被包含在进程之中,是进程中的实际运作单位。进程是资源分配的基本单位,它拥有自己独立的地址空间和各种资源;而线程是处理机调度的基本单位,它只能和其他线程共享进程的资源,而。线程的上下文切换速度比进程快。原创 2024-09-03 00:25:58 · 1276 阅读 · 0 评论 -
JAVA异常
异常是指程序执行过程中出现的不正常情况,它打断了程序的正常执行流程。在Java中,异常被当作对象来处理,这些对象都是Throwable类的实例或其子类的实例。当Java内置的异常类型不满足开发需求时,可以通过继承Exception或RuntimeException来创建自定义异常类。参考:https://blog.csdn.net/qq_43061290/article/details/124078378。原创 2024-09-02 08:36:55 · 529 阅读 · 0 评论 -
类加载器整理解析
Java类加载器(Class Loader)是Java运行时环境(JRE)的一部分,负责动态地将Java类加载到Java虚拟机(JVM)的运行时环境中。当一个Java程序需要使用某个类时,JVM并不会立即去加载这个类,而是等到程序真正运行时,第一次引用到这个类的时候,才会通过类加载器来加载这个类。类加载器必须实现的核心功能是通过全类名获取类的二进制字节流,并将类的二进制字节流解析并转换成JVM能够识别的数据结构(如Java类和接口的内部表示,以及类的元数据信息等),然后存储在JVM的方法区。原创 2024-09-01 09:24:05 · 1300 阅读 · 0 评论 -
字节码文件简单解析
字节码文件()是一种包含执行程序的二进制文件的具体体现,包含了程序的指令集,可以被解释器或虚拟机读取和执行。(1)从源代码到字节码文件的编译过程(称为“”)是跨平台的。(2)字节码文件本身并不是直接执行的机器码,需要被虚拟机进一步**“解释”或“即时编译”**(JIT编译)成机器码才能在物理硬件上执行。(视为在目标平台上进行的“”)原创 2024-08-31 08:02:47 · 541 阅读 · 0 评论 -
Lambda表达式解析
(1)Lambda表达式在逻辑上等同于定义了一个实现了函数式接口的匿名内部类,并且这个匿名内部类中包含了一个(且只有一个)与函数式接口抽象方法签名相匹配的方法。(2)但是,这个匿名内部类并不是以传统意义上Java匿名内部类的形式存在(即不是一个独立的.class文件),而是被编译成了一种可以让JVM理解并执行的内部表示。(3)当Lambda表达式被“调用”时(尽管这个词可能不太准确,因为Lambda表达式本身不是可调用实体),实际上是在创建一个这样的匿名内部类的实例,并调用其实现的抽象方法。原创 2024-08-30 23:43:39 · 1048 阅读 · 0 评论 -
CAS简单解析
Compare-And-Swap,即“比较并交换”,是一种无锁算法(一种原子操作)。算法(原子操作)过程:a)读变量为预期值b)比较这个变量的内存值(可能在从a到b这个过程中被人改了,改了内存值就是改完的值,没改内存值就是原来的值,总之内存值是b这个状态下变量的值)和预期值c)相同则更新变量,不同则自旋(自旋指的是重新从a过程开始循环尝试,直到成功更新变量值,或者达到自旋次数或时间)、或回退、或重试。CAS非阻塞。原创 2024-08-30 22:40:40 · 312 阅读 · 0 评论 -
ConcurrentHashmap解析
一种由hashmap演变来的存放键值对的容器,线程安全。原创 2024-08-30 08:56:23 · 392 阅读 · 0 评论 -
volatile保证可见性,原理是什么
volatile保持可见性原理原创 2022-05-18 21:17:52 · 1916 阅读 · 0 评论