自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JavaEdge

全是硬核干货的公众号:JavaEdge

原创 深入理解Java虚拟机(JVM) --- 垃圾收集算法(中)

2 回收无效对象的过程 当经可达性算法筛选出失效的对象之后,并不是立即清除,而是再给对象一次重生的机会 判断是否覆盖finalize() 未覆盖该或已调用过该方法,直接释放对象内存 已覆盖该方法且还未被执行,则将finalize()扔到F-Queue队列中 执行F-Queue中的final...

2019-10-31 09:33:35

阅读数 646

评论数 0

原创 关于mac上输入 insert和replace的快捷键切换

\无意间把输入的insert格式变成replace模式,在mac系统下没有insert快捷键怎么都切换不了,最后百度试了了各种方法,终于成功了 第一步,按一下ESC键,随后i代表insert,r代表replace,根据需求任意切换 ...

2019-10-30 12:55:43

阅读数 436

评论数 0

原创 深入解析JVM源码 - 创建HotSpot

那么,一个Java实例从开始运行至结束经历了什么?本文将从JVM源码角度一探究竟,深入剖析HotSpot其创建流程。 1 程序主入口 src/java.base/share/native/launcher/main.c main函数返回了JLI_Launch()函数,位于 src/java.ba...

2019-10-30 02:15:23

阅读数 405

评论数 0

原创 RocketMQ实战(一) - 简介

1 RocketMQ是什么 RocketMQ是由阿里捐赠给Apache的一款分布式、队列模型的开源消息中间件,经历了淘宝双十一的洗礼。 官网 2 RocketMQ的发展史 2017开始发布即最新4.0.0版本 3 RocketMQ的特性 4 RocketMQ基本概念 Client...

2019-10-24 13:39:30

阅读数 314

评论数 1

原创 Java的Iterator迭代器类

迭代对于我们搞 Java 的来说绝对不陌生。我们常常使用 JDK 提供的迭代接口进行 Java 集合的迭代。 Iterator iterator = list.iterator(); while(iterator.hasNext()){ String str...

2019-10-22 22:16:06

阅读数 189

评论数 0

原创 Elasticsearch 实战(一) - 简介

官腔 Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 基本等于没说,咱们慢慢看 1 概述 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象) 百度 != 搜索,这...

2019-10-22 01:32:10

阅读数 325

评论数 0

原创 Java的原子操作

1 竞态条件与临界区 多个线程访问了相同的资源,向这些资源做了写操作时,对执行顺序有要求。 1.1 临界区 incr 方法内部就是临界区域,关键部分代码的多线程并发执行,会对执行结果产生影响。 1.2 竞态条件 可能发生在临界区域内的特殊条件。多线程执行incr方法中的i++关键代码时,产生了竞态...

2019-10-20 17:06:13

阅读数 330

评论数 0

原创 可重入的读写锁 - ReentrantReadWriteLock 及 AQS 源码分析

1 读写锁维护了一对相关的锁,一个用于只读操作,一个用于写入操作。 只要没有writer,读锁可以由多个reader线程同时保持。 写锁是独占的。 互斥锁一次只允许一个线程访问共享数据,哪怕进行的是只读操作 读写锁允许对共享数据进行更高级别的并发访问 对于写操作,一次只有一个线程(write线...

2019-10-19 00:48:37

阅读数 509

评论数 0

原创 Spring Cloud 微服务实战(三) - 服务注册与发现

订单服务源码 https://github.com/Wasabi1234/SpringCloud_OrderDemo 商品服务源码 https://github.com/Wasabi1234/SpringCloud_ProductDemo 0 分布式下服务注册的地位和原理 0.1 分布式系统中为...

2019-10-18 22:55:27

阅读数 418

评论数 0

原创 Docker容器实战(八) - 漫谈 Kubernetes 的本质

在前面以Docker项目为例,一步步剖析了Linux容器的具体实现方式。 通过这些应该明白:一个“容器”,实际上是一个由Linux Namespace、Linux Cgroups和rootfs三种技术构建出来的进程的隔离环境。 一个正在运行的Linux容器,其实可以被看做 一组联合挂载在 /va...

2019-10-18 03:16:59

阅读数 232

评论数 0

原创 优雅地在Mac OS Catalina下 编译 Open JDK 13

bash configure --with-debug-level=slowdebug --enable-dtrace --with-jvm-variants=server --with-target-bits=64 --enable-ccache --with-num-cores=8 ...

2019-10-17 04:29:24

阅读数 295

评论数 0

原创 Mac OS 最新系统 Catalina升级记

1 打开系统设置,自动弹出版本信息 语言与地区 显示器文件增多

2019-10-17 00:07:14

阅读数 2566

评论数 0

原创 Docker容器实战(七) 上 - 容器里的进程看到的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一搞,进程就真的被“装”在了一个与世隔绝的房间里,而这些房间就是PaaS项目赖以生存...

2019-10-15 02:41:37

阅读数 332

评论数 0

原创 Java高性能编程实战 - 线程通信

要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果等等。 涉及到线程之间相互通信,分为下面四类: 1 文件共享 2 网络共享 socket编程问题,非本文重点,不再赘述 3 共享变量 4 线程协作 - JDK API 细分为: suspend/resume 、 wait/...

2019-10-08 03:52:45

阅读数 246

评论数 1

原创 Java内存模型与volatile关键字

0 CPU 性能优化手段 - 缓存 为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。: 例如: CPU高速缓存。 尽可能地避免处理器访问主内存的时间开销,处理器大多会利用缓 存(cache)以提高性能。 0.1 多级缓存 L1 Cache(一级缓存) CPU第一层高...

2019-10-08 02:09:48

阅读数 194

评论数 0

原创 Docker容器实战(六) - 容器的隔离与限制

Linux容器中用来实现“隔离”的技术手段:Namespace。 Namespace实际上修改了应用进程看待整个计算机“视图”,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容。对于宿主机来说,这些被“隔离”了的进程跟其他进程并没有区别。 在之前虚拟机与容器技术的对比图里,不应该把Do...

2019-10-08 01:14:52

阅读数 186

评论数 0

原创 Linux 常用命令全拼

pwd: print work directory 打印当前目录 显示出当前工作目录的绝对路径 ps: process status(进程状态,类似于windows的任务管理器) 常用参数:-auxf ps -auxf 显示进程状态 df: disk free 其功能是显示磁盘可用空间数目信...

2019-10-06 21:15:34

阅读数 424

评论数 0

提示
确定要删除当前文章?
取消 删除