Below you will find pages that utilize the taxonomy term “java”
Arthas工具
Arthas 简介 为什么要用它,能做什么 开发测试中经常遇到需要调试的时候,比如代码走到某个调用方法时这里的参数是什么值,方法出参是什么值?代码是否走了某个方法?优化接口耗时
Java AOP及在SpringBoot项目中实践
AOP概念 面向切面编程(AOP,Aspect-Oriented Programming)是一种编程范式,旨在通过将横切关注点(如日志记录、事务管理、安全性等)从业
Java GC垃圾收集
概述 GC的三个问题: 哪些内存需要回收 什么时候回收 如何回收 Java 是自动垃圾回收的语言,所回收的内存区域指堆和方法区,主要面向占用大部分内存的堆区。类如线程栈这种,执行
Java NIO
理解好Java NIO前提要熟悉IO模型,IO复用(以epoll为例)、非阻塞IO的基础知识。java.nio抽象出来一些类或接口,底层实际是对epoll等系统调
Java synchronized实现原理
synchronized是Java中的关键字,提供了一种对共享资源互斥访问的并发控制,也可以作为线程同步的一个工具。这里我们看下synchronized背后的实
Java ThreadLocal原理
为什么要有ThreadLocal 多线程利用锁来解决共享变量的问题,那如果每个线程都有自己的一份变量,就不涉及到线程安全的事情了。 当然这个变量不是方法里线程栈上的
Java YoungGC的一次排查优化
问题发现 线上报警发生频繁young gc 初步排查 频繁ygc很快就结束了,持续几十秒。没有dump日志或者统计信息可看。 初步排查,是最近刚上线一个功能,10点整有外部
Java 包装线程池或者task,统一异步线程流水
日志串流水,统一一次请求的流水号。同一个线程里比较简单,线程上下文ThreadLocal直接用。 当遇到起异步线程或者线程池的,我们怎么把业务线程的流水传递过去呢
Java8 笔记
Java8 给出了很多新特性,让Java编程更丝滑。如引入Stream流处理、Lambda表达式、默认方法、Optional处理等等。这里做个应用总结。 stream 构建stream
Java基础知识
1. 内存区域划分 程序计数器PC 和操作系统的PC类似,Java虚拟机也需要,都是指执行下一条的命令。每个线程私有的。 虚拟机栈 也可以称作线程栈,每个线程私有的。在每个
Java条件变量之阻塞队列实现
条件变量概念 条件变量,不需要代码层面盲目轮询一个条件,线程可以等待直到有其他线程唤醒。 条件变量使用 条件变量的使用,通常是基于一个互斥锁,并在while循环条件中
Java线程池
线程池的实现原理用一句话理解:维持多个线程和一个阻塞队列。队列里的放的是待执行任务,线程从队列里循环获取任务并执行。
JUC 常用并发组件
这里列举几个常用的并发组件:
- Semaphore
- CountDownLatch
- CyclicBarrier
- SynchronousQueue
JUC 并发组件CompletableFuture
优势 不会阻塞当前线程,如主线程后续逻辑; 异常处理 多个异步任务的编排 函数式编程、链式处理等 基本原理 CompletableFuture 同样实现了之前的 Future ,此外新增加了接口 CompletionSta
Reactor模式
服务器基础 三种fd 认识三个fd listenfd connfd clientfd 服务器监听连接请求 accept 返回connfd,后续和客户端的通信fd 客户端进行connect连接请求的 clientfd 基本服务器模型 单线程阻塞 int listenfd;
Spring 原理入门
IOC-对象池 IOC 控制反转,Bean 对象由 Spring 来托管(生命周期),这些对象所在的位置暂且称为 Bean 的对象池(Map)。Bean 对象的创建除了实例化,还经历了哪些步骤最终
SpringBoot bean的常用扩展点
了解Spring这些扩展点,有助于我们编写更优雅的代码。扩展点的具体应用实践,我们可以多看优秀的源码借鉴思路。 扩展点顺序 【1】BeanFactoryPostPr
SpringBoot 如何开发一个starter组件
引言 在SpringBoot生态系统中,starter组件是一种非常重要的机制,它简化了依赖管理和自动配置的过程。这里介绍如何开发自己的SpringBoot-st
基于SPEL实现ABTest服务
ABTest服务 一个实验组,分多个实验,业务需要验证哪个实验更优。 为调用方提供选择哪个实验的服务。 方案 通常基于用户属性信息做分流。我们将用户各种属性信息加工成标
性能优化之-对象池技术
在高并发、高吞吐的系统架构中,对象的频繁创建与销毁是性能瓶颈的常见来源——比如数据库连接、线程、网络连接等重量级对象,每次创建都伴随着系统资源的开销,频繁GC更
性能优化之-批处理提升吞吐量
在高并发业务场景中,单条数据处理的方式往往会因频繁的IO操作、资源调度导致性能瓶颈,批处理是提升系统吞吐量的核心手段。比如kafka生产者有这种应用场景。 当然批
笔记-Java日期处理
引言 在各种语言编程中,日期和时间的处理都是一个常见的需求。Java中还特殊一点,在Java8 前后提供了不同的日期和时间 API,它们在设计和使用上有很大的差异。本
笔记-Java集合容器
说到Java容器集合,忍不住要对比下Go。 Java要掌握的语法和API更多,相比来说Go要更简洁。但另一个角度看,Java提供了非常丰富的类和API,这点Go就
简易实现固定窗口限流
限流器有多种算法,比如固定窗口、滑动窗口、漏桶、令牌桶等。比如Guava的限流器采用的令牌桶。 我们这里实现一个简易的固定窗口的限流器,来初体验下限流器的作用和实
算法-LRU
LRU介绍 LRU(Least Recently Used)最近最少使用算法,通常在缓存策略中使用。操作系统在内存管理中,对页的置换有应用这一算法。 通常缓存空间有限,因此当空间满的
设计模式:单例模式与线程安全
模式说明 单例模式,顾名思义,JVM全局下某Class只有一个实例对象。 使用场景 一个全局使用的类避免频繁地创建与销毁,节省系统资源。 理解重点 构造函数私有 统一访问入
设计模式:策略+工厂+模板方法 混合使用
模式说明 策略工厂: 策略模式+工厂模式 工厂模式用来生成策略 模板方法 模板方法里组装策略方法 使用场景 策略模式 自然要求是 完成一件事情,其间有不同的业务场景区分。 工厂模式
设计模式:装饰器模式应用
模式说明 装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为
设计模式:责任链、观察者模式在Spring下的应用
模式说明 责任链模式: 本本上的定义,责任链模式避免了请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到