摘要: 对象内存布局 HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。 从上面的这张图里面可以看出,对象在内存中的结构主要包含以下几个部分: Mark Word(标记字段):对象的Mark Word部 阅读全文
posted @ 2020-12-04 18:14 hongdada 阅读(2945) 评论(2) 推荐(3) 编辑
摘要: 安装 自动安装 官方推荐的安装方式,一键完成。不过让我很没有安全感,我倾向于手动安装。 sh -c "$(curl -fsSL https://raw.githubusercontent.com/zdharma/zinit/master/doc/install.sh)" 手动安装 首先 clone 阅读全文
posted @ 2020-11-27 16:08 hongdada 阅读(4271) 评论(0) 推荐(0) 编辑
摘要: 简介 在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在Java SE5后,Java提供了Lock接口,相对于Synchronized而言,Lock提供了条件Condition,对线程的等待、唤醒操作更加 阅读全文
posted @ 2019-11-19 13:48 hongdada 阅读(536) 评论(0) 推荐(0) 编辑
摘要: 自定义安装路径安装 scoop安装应用路径 目标目录是D:\Program Files\Scoop,在PowerShell命令控制台中运行: [environment]::setEnvironmentVariable('SCOOP','D:\Scoop','User') $env:SCOOP='D: 阅读全文
posted @ 2019-11-12 18:35 hongdada 阅读(6548) 评论(1) 推荐(2) 编辑
摘要: 什么是AQS aqs全称为AbstractQueuedSynchronizer,它提供了一个FIFO队列,可以看成是一个用来实现同步锁以及其他涉及到同步功能的核心组件,常见的有:ReentrantLock、CountDownLatch等。 AQS是一个抽象类,主要是通过继承的方式来使用,它本身没有实 阅读全文
posted @ 2019-10-18 14:51 hongdada 阅读(1030) 评论(0) 推荐(1) 编辑
摘要: 秒杀商品设计 前端限制 前端控制,不能重复点击 精简sql 典型的一个场景是在进行扣减库存的时候,传统的做法是先查询库存,再去update。 这样的话需要两个sql,而实际上一个sql我们就可以完成的。 可以用这样的做法: update miaosha_goods set stock =stock- 阅读全文
posted @ 2023-01-15 21:12 hongdada 阅读(4) 评论(0) 推荐(0) 编辑
摘要: JAVA线程池 submit方法返回值 AbstractExecutorService public abstract class AbstractExecutorService implements ExecutorService { // RunnableFuture 是用于获取执行结果的,我们 阅读全文
posted @ 2023-01-15 15:29 hongdada 阅读(10) 评论(0) 推荐(0) 编辑
摘要: JAVA线程-interrupt 中断一个线程非常简单,只需要在其他线程中对目标线程调用interrupt()方法,目标线程需要反复检测自身状态是否是interrupted状态,如果是,就立刻结束运行。 案例一: public class Main { public static void main 阅读全文
posted @ 2023-01-12 13:47 hongdada 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 一些心理学小技巧 人们倾向于记住最先发生的事情和最后发生的事情, 中途发生的事情会被后来者覆盖. 所以, 如果要做自我介绍的话, 最好做第一个或者最后一个, 面试的时候也是一样的. 报价之后, 不再说话. 无论是销售还是其他领域, 这项技巧都很有用. 情景再现: 与顾客寒暄完毕, 报出价格后, 从此 阅读全文
posted @ 2023-01-10 20:06 hongdada 阅读(9) 评论(0) 推荐(0) 编辑
摘要: Elasticsearch 问题收集 Mac端安装 安装elasticsearch 安装elasticsearch ❯ brew install elasticsearch Running `brew update --auto-update`... ==> Auto-updated Homebre 阅读全文
posted @ 2022-12-22 11:57 hongdada 阅读(6) 评论(0) 推荐(0) 编辑
摘要: JAVA并发-Thread.sleep(0)深入理解 Thread.Sleep(0)的作用,就是“触发操作系统立刻重新进行一次CPU竞争”。 通过调用 Thread.sleep(0) 的目的是为了让 GC 线程有机会被操作系统选中,从而进行垃圾清理的工作。它的副作用是,可能会更频繁地运行 GC,毕竟 阅读全文
posted @ 2022-12-20 15:37 hongdada 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 反转链表 import java.util.Arrays; import java.util.List; import org.springframework.util.CollectionUtils; import com.google.common.collect.Lists; import l 阅读全文
posted @ 2022-12-20 10:04 hongdada 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 【转载】硬核干货:4W字从源码上分析JUC线程池ThreadPoolExecutor的实现原理 前提 很早之前就打算看一次JUC线程池ThreadPoolExecutor的源码实现,由于近段时间比较忙,一直没有时间整理出源码分析的文章。之前在分析扩展线程池实现可回调的Future时候曾经提到并发大师 阅读全文
posted @ 2022-12-19 15:29 hongdada 阅读(5) 评论(0) 推荐(0) 编辑
摘要: JAVA并发-Disruptor框架 Disruptor简介 最好的方法去理解Disruptor就是将它和容易理解并且相似的队列,例如BlockingQueue。Disruptor其实就像一个队列一样,用于在不同的线程之间迁移数据,但是Disruptor也实现了一些其他队列没有的特性,如: 同一个“ 阅读全文
posted @ 2022-12-16 21:24 hongdada 阅读(15) 评论(0) 推荐(0) 编辑
摘要: JAVA Unsafe类详解 官方不建议使用Unsafe 使用Unsafe要注意以下几个问题: 1、Unsafe有可能在未来的Jdk版本移除或者不允许Java应用代码使用,这一点可能导致使用了Unsafe的应用无法运行在高版本的Jdk。 2、Unsafe的不少方法中必须提供原始地址(内存地址)和被替 阅读全文
posted @ 2022-12-16 00:05 hongdada 阅读(28) 评论(0) 推荐(0) 编辑
摘要: Sharding-JDBC 问题收集 简介 Sharding-JDBC 最早是当当网内部使用的一款分库分表框架,到2017年的时候才开始对外开源,这几年在大量社区贡献者的不断迭代下,功能也逐渐完善,现已更名为 ShardingSphere,2020年4⽉16⽇正式成为 Apache 软件基⾦会的顶级 阅读全文
posted @ 2022-12-12 00:14 hongdada 阅读(57) 评论(0) 推荐(0) 编辑
摘要: Kafka 事务 幂等性 幂等性是指发送同样的请求,对系统资源的影响是一致的。结合 Kafka Producer,是指在多次发送同样的消息,Kafka做到发送消息的不丢失和不重复。 Kafka为啥需要幂等性? 在使用Kafka时,需要确保Exactly-Once语义。分布式系统中,一些不可控因素有很 阅读全文
posted @ 2022-12-02 17:22 hongdada 阅读(28) 评论(0) 推荐(0) 编辑
摘要: Kafka 生产者Producer 整体架构 从上面的架构图可以看出,生产的流程主要就是一个producer线程和一个sender线程,它们之间通过BatchQueue来获取数据,它们的关系是一一对应的,所以kafka的生产过程都是异步过程。 它的同步和异步指的是接收响应结果的模式是同步阻塞还是异步 阅读全文
posted @ 2022-11-29 15:51 hongdada 阅读(67) 评论(0) 推荐(0) 编辑
摘要: Kafka 控制器Controller Broker 在启动时,会尝试去 ZooKeeper 中创建 /controller 节点。Kafka 当前选举控制器的规则是:第一个成功创建 /controller 节点的 Broker 会被指定为控制器。 Controller Broker的主要职责有很多 阅读全文
posted @ 2022-11-29 11:48 hongdada 阅读(40) 评论(0) 推荐(0) 编辑
摘要: free 命令常用参数 free 命令用来查看内存使用状况,常用参数如下: -h human-readable 格式打印 -w 把 cache & buffer 分开打印 -t show total for RAM + swap free 结果指标剖析 centos6中,cache,buffers是 阅读全文
posted @ 2022-11-25 23:16 hongdada 阅读(37) 评论(0) 推荐(0) 编辑