JVM - 垃圾回收器概述

2020-12-26
阅读 3 分钟
1.3k
[toc]既然选择了远方,即使天寒地冻,路遥马亡,我本就一无所有,又有何惧。串行收集器单线程、独占式进行垃圾回收独占式:应用程序线程会停止工作,只有垃圾回收线程在工作,即 stop the world。在并行能力较差的机器上,会有更好的性能表现。新生代串行收集器新生代串行收集器使用的是 复制算法使用 -XX:UseSerialGC, ...

Java 注释规范

2020-12-10
阅读 3 分钟
1.4k
好的注释往往能减少提供协同开发的工作效率,以及极大的提升系统的可维护性。因此写好代码注释也是一个很重要的事情。Javadoc 一般分为三段:

JMH -- JAVA 微基准测试工具套件

2020-12-08
阅读 4 分钟
2.4k
1、概览2、jmh 简介3、jmh 使用demo4、jmh 常用设置介绍5、注意事项你的努力,终将成就无可替代的自己将来的你一定会感谢现在拼命的自己1、概览在日常开发中,我们往往需要优化我们自己写的代码。优化后的代码,执行效率是否比之前的还高?具体高多少?这些都是需要去测量。目前比较主流的做法是使用 jmh 进行微基准测试...

重温 JAVA -- ThreadLocal 终

2020-11-08
阅读 4 分钟
1.8k
ThreadLocal 是什么作用ThreadLocal 用于存储线程间的私有变量数据结构内存泄露?要解释这个问题之前,需要先看 JAVA 对象中的 强引用、软引用、弱引用、虚引用对象的四种引用类型强引用new 或通过反射创建出来的对象被称为强引用,只要强引用还存在,就不会被垃圾回收软引用使用 SoftReference 修饰的对象被称为软引用...

重温 JAVA -- 阻塞队列 终

2020-11-03
阅读 2 分钟
1.3k
BlockingQueueBlockingQueue 接口定义了很多插入和删除的方法,这里总结梳理如下:添加容器满了,抛异常add(e)返回是否成功offer(e)容器满了,阻塞put(e)容器满了,等待超时退出offer(e, time, unit)删除容器没有元素,抛异常remove()返回是否成功remove(obj)poll()容器没有元素,阻塞take()容器没有元素,等待超时退出p...

重温 JAVA -- synchronized 终

2020-10-27
阅读 5 分钟
1.3k
synchronized 关键字用于实现多线程之间的同步操作。synchronized 可用于修饰 类方法, 对象方法, 代码块使用 syncronized 时,需要有监视器。当修饰 类方法时, 监视器为该类; 当修饰 对象方法, 监视器为该对象; 当修饰 代码块, 需要手动传入监视器

重温 JAVA -- AQS 终

2020-10-22
阅读 3 分钟
1.1k
当 AQS 在尝试获取锁失败时,会将当前线程构造成 Node 节点,插入同步队列中。在说入队列操作之前,需要对 Node 的数据结构进行一下说明

kafka 系列 -- 4.2、消费者分区策略

2020-08-22
阅读 2 分钟
3.3k
kafka 允许通过配置 partition.assignment.strategy 来改变消费组的分区策略。kafka 提供了以下几个分区策略

kafka 系列 -- 4.1、消费者基本介绍

2020-08-20
阅读 8 分钟
2.1k
topic 为逻辑上的概念,partition 才是物理上的概念。那么看完这个以上的消费模型图。你可能会很疑惑。当一个组下有多个消费者时,每个消费者是如何消费的?

springcloud 系列 -- 初识 zuul

2020-08-12
阅读 9 分钟
2.1k
Zuul 的上下文,继承 ConcurrentHashMap。内置 ThreadLocal 变量。因此每个线程都会有自己的 RequestContext 变量

kafka 系列 -- 3.2、生产者客户端原理分析

2020-08-09
阅读 11 分钟
2.2k
RecordAccumulator 主要用于缓存消息,以便 Sender 线程能够批量发送消息。RecordAccumulator 会将消息放入缓存 BufferPool(实际上就是 ByteBuffer) 中。BufferPool 默认最大为 33554432B,即 32MB, 可通过 buffer.memory 进行配置。当生产者生产消息的速度大于 sender 线程的发送速度,那么 send 方法就会阻塞。默认...

kafka 系列 -- 3.1、生产者客户端基本使用

2020-08-05
阅读 2 分钟
1.4k
该参数为 broker 地址,不需要全部都填,因为 kafka 会从当前 broker 中获取其他 broker 信息。不过为了某个 broker 挂掉,一般填多个 broker 地址

kafka 系列 -- 2、搭建与实践

2020-07-19
阅读 4 分钟
2.8k
前言动手实践往往比看看更重要😇单机版 Docker 搭建 {代码...} 注意事项:如果想要 java 客户端能够正常连接上 kafka, 需要配置宿主机的 host {代码...} 如何使用 kafka 自带的 kafka-console-producer 测试发送消息? {代码...} 集群版 + kafka managerkafka 集群 docker-compose {代码...} 注意事项:如果想要 java 客...

springcloud 系列 -- 了解一下 OpenFeign

2020-06-25
阅读 2 分钟
2k
对于 Feign,无疑就是整合了 Ribbon + Hystrix,然后封装为对开发使用起来更加友好的 jar。因此本质上,Feign 是 Ribbon + Hystrix. 因此,在学习 Feign 之前,建议先把 Ribbon, Hystrix 学习一下。

springcloud 系列-- 三言两语,带你认识 ribbon

2020-05-31
阅读 4 分钟
1.7k
前言 ribbon 作为一个负载均衡组件,个人认为,其核心的功能就是提供多种负载均衡策略。 暂停思考一下,如果让你自己写负载均衡组件,要如何做? 获取有多少合适的服务可供负载 服务有时候可能会不可用,那么需要更新维护服务,及时将不合理的服务剔除 提供策略判断服务是否可用 实现多种负载算法,供用户选择 负载失败...

springcloud 系列--用几张图,带你了解 eureka-server

2020-05-04
阅读 6 分钟
2.2k
不建议为了看源码而看源码,这样做无意义!其次,有时候了解工作机制即可,不一定得深入源码的每一个细节。更多的时候,看源码,只是工作需要。因此,源码分析,不会贴大量的源码,而只是给了流程 + 代码入口。看源码的工作,还是得自己去看。

RocketMQ(4.6.1)系列教程--消息消费篇

2020-04-25
阅读 30 分钟
7.5k
集群模式下,主题下的同一消息只允许被消费组内的一个消费者消费,消费进度存储在 broker 端。广播模式下,则每个消费者都可以消费该消息,消费进度存储在消费者端。

springcloud 系列--用几张图,带你了解 eureka-client

2020-04-19
阅读 2 分钟
1.6k
springcloud 通过 SPI 技术加载 spring.factories 文件中定义好的Bean。其中 EurekaClientAutoConfiguration 装入了 EurekaClient。 一个 EurekaClient 代表的就是我们的客户端,也是我们主要需要关心的对象。

RocketMQ(4.6.1)系列教程--消息存储篇

2020-04-04
阅读 22 分钟
2.7k
概要设计 RocketMQ 的存储文件,放在 ${ROCKET_HOME}/store 目录下 Commitlog:消息存储文件,所有消息主题的消息都存储在 Commitlog 文件中 ConsumeQueue:消息消费队列,消息到达 Commitlog 文件后,将异步转发到消息队列,供消息消费者消费 IndexFile:消息索引文件,主要存储消息 key 与 offset 对应关系 核心消息存...

RocketMQ(4.6.1) 系列教程 -- Producer 篇

2020-03-25
阅读 4 分钟
2.5k
RocketMQ 消息发送 三种发送方式 同步 生产者发送消息,需要等到消息服务器返回结果 异步 生产者发送消息, 不需要等到消息服务器返回结果,生产者线程不阻塞,只需注册监听回调函数即可。 单向 生产者只管发,不管成功与否。 消息结构 org.apache.rocketmq.common.message.Message {代码...} properties 存放的扩展属性...

eureka server 动态开启自我保护

2019-12-02
阅读 2 分钟
1.8k
The self preservation config is definedhere. To disable self preservation in the example, set the property:eureka.enableSelfPreservation=false.

jdk1.8 API 常用方法

2019-10-28
阅读 10 分钟
3.6k
description: if value is null that it will throw null exceptions. decrease use it.

2、zookeeper 系列 -- 简单学习 zk 提供的 java API

2019-10-26
阅读 4 分钟
1.1k
public String create(final String path, byte data[], List<ACL> acl, CreateMode createMode)

1、zookeeper 系列 -- zookeeper 的创建与使用

2019-10-26
阅读 2 分钟
2.5k
本地搭建 单机版 zoo.cfg 配置文件 {代码...} 集群版 zoo.cfg 配置文件 {代码...} start {代码...} check server status {代码...} Docker 版 docker-compose.yml {代码...} start container {代码...} client script client connect server {代码...} list all command {代码...} create create -s -e path data acl {...

线程系列四AQS

2018-08-09
阅读 7 分钟
3.3k
1、什么是aqs aqs是一个FIFO的双向链表队列。aqs将等待获取锁的线程封装成结点,放在队列中。 我们可以将aqs的作用理解为在多线程的环境下保证线程等待获取锁(添加进入队列)以及线程获取锁,并队列中出去都是线程安全的。 更简单的可以理解为aqs为了保证在多线程的环境下入队列和出队列的线程安全性提供了一个基本功能框...

线程系列三、synchronized 关键字

2018-08-09
阅读 2 分钟
1.4k
1、synchronized 关键字的锁对象是谁? ①当synchronized 关键字加在实例方法上,那么锁对象是当前类实例 示例代码 {代码...} ②、当synchronized 关键字加在静态方法上,那么锁对象是当前类 示例代码 {代码...} 2、synchronized 关键字可重入吗? synchronized 是可重入的! 示例代码 {代码...} a方法中调用b方法。因为当...

线程系列二、线程的活跃性

2018-08-09
阅读 1 分钟
1.5k
1、死锁 ①什么是死锁? 双方因为互相等待对方的资源而进入了循环等待的过程 ②产生死锁的条件? 1、环路等待 2、持有并等待 3、互斥 4、不剥夺 必须满足以上4个条件,才会产生死锁 ④示例代码 {代码...} 解释: 互斥:T1和T2存在锁互斥条件 环路等待及持有并等待:T1持有T1锁,等待T2锁;T2持有T2锁,等待T1锁。 操作系统...

线程系列一、线程的创建与停止

2018-08-09
阅读 2 分钟
1.4k
1、通过继承Thread类 {代码...} 2、通过实现Runnable接口实现 {代码...} 3、创建可抛异常且有返回值的线程任务 {代码...} 解释: 1、FutureTask的继承类图 因为FutureTask最终实现的是Runnable接口,因此FutureTask可以直接放在Thread中执行。 2、Callable接口 Callable接口允许我们在线程执行的时候有返回值,以及抛出...

记一次,jvm 内存溢出

2018-07-15
阅读 1 分钟
3.1k
3、当时的环境:打包成jar后,直接 运行 java -jar xx.jar。默认的jvm 运行参数 -Xms 。 因此给jvm分配的内存比较小。然后,当时上传了1个有10W条的数据的excel插入到数据库。结果就是,运行了几分钟,用top命令查看,java 的 cpu使用率为 99%。结果就是程序直接报错。

springBoot的工作机制--springBoot揭秘

2018-03-31
阅读 3 分钟
4.8k
文章目录1、@SpringBootApplication -- SpringBoot的核心注解2、SpringApplication的执行流程3、SpringApplication的扩展点