一个技术人天马行空的一亩田

技术需要土壤来扎根,技术需要土壤来成长,技术人更需要土壤来吐槽~

微服务拆分的10条准则

当下微服务是真的火啊!真是感觉现在在IT圈混的说自己不懂微服务都OUT了。放眼当前的大环境,大到各种大大小小的厂商产品介绍,小到漫天乱飞的招聘信息,微服务这个词总能在你的眼前飘来飘去。 说真的,微服务这个词真是让人又爱又恨。爱的是凡打上了微服务架构的标签,不管内部构架如何,产品立马让人觉得高大上了,逼格更高了(潜台词:能卖个好价钱)。然而让人恨得是,让我们架构师自己扪心自问,我们的产品当前做......

Shell脚本中执行MongoDB命令

对于平常经常使用 MongoDB 的用户来讲,势必会经常进行查询、维护等操作。一般情况下,我们会使用图形化界面的客户端工具来操作,例如 Studio 3T for MongoDB。 那万一因为某种原因你只能在封闭环境(外网不可达或未暴漏 MongoDB 服务端口)上操作,并且是大量操作。你会怎么办? 这种面对大量shell下大量操作的情况,我们一般会写个脚本来执行,省心省力。但您有没有在sh......

如何查询Docker Image的所有Tag

在使用 Docker 时,查询一个 Docker镜像(Docker image)。一般使用 docker search keywords 命令来查询 keywords 的镜像信息,如下: 并且通常使用 docker pull imagename 命令从远端仓库拉取镜像。默认情况下会拉取到 tag 为 lastest 的镜像。但是,如果不想使用这个 tag 的镜像应该怎么办? 下面介绍两种查......

常见的系统陷阱与对策

读《系统之美》摘要

所有的事情都不是独立的,所有的结果也都是有原因的。这并不是宿命论的观点,而是一个科学的论证。如果我们放慢一点生活节奏,多用脑袋思考思考,身边所有的一切都是互相关联,互相影响的。 每一个肉眼可见的主体,每一个能叫的上名字的东西,甚至是每一个抽象的存在。我们或者从微观上去观察又或者从宏观上去审视,都能发现与其千丝万缕的另一种存在。 例如,我现在眼前的显示器,微观上往里面看,它有液晶屏、电源控制、......

关于Git鉴权你不得不知道的知识点

解决各种git操作需要频繁输入密码的问题

Git 作为一款目前广为流行的版本控制系统,想必大家都很熟悉了,这里不再过多的介绍,如果想系统的了解 Git 可以去 这里 在线阅读,或者 下载PDF 学习。 背景 用过 Git 的朋友都知道,不管我们使用的是 GitHub、GitLab、Gitee还是其他公司自建的基于 Git 做版本控制的系统。当我们 clone 了一个仓库之后,配置完仓库密钥,后面在自己本地不管什么操作都会一路畅通无阻......

JVM的类加载

一篇介绍Java类文件是如何被加载进JVM的科普文章

类加载的时机 类的生命周期 类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括以下 7 个阶段: 加载 验证 准备 解析 初始化 使用 卸载 验证、准备、解析三个阶段统称为连接。 加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始(注意是“开始”,而不是“进行”或者“完成”)。而解析阶段则不一定:它在某些情况下可以在初始化......
JVM

Java类文件结构

class文件中到底有何玄机

JVM 的“无关性” 谈论 JVM 的无关性,主要有以下两个: 平台无关性:任何操作系统都能运行 Java 代码 语言无关性:JVM 能运行除 Java 以外的其他代码 Java 源代码首先需要使用 javac 编译器编译成 .class 文件,然后由 JVM 执行 .class 文件,从而程序开始运行。 JVM 只认识 .class 文件,它不关心是何种语言生成了 .class 文件,......

JVM内存分配与回收策略

对象的内存分配,就是在堆上分配(也可能经过 JIT 编译后被拆散为标量类型并间接在栈上分配)内存,对象主要分配在新生代的 Eden 区上,少数情况下可能直接分配在老年代,分配规则不固定,取决于当前使用的垃圾收集器组合以及相关的参数配置。 对象优先在 Eden 分配 大多数情况下,对象在新生代 Eden 区中分配。当 Eden 区没有足够空间进行分配时,虚拟机将发起一次 Minor GC。 M......
JVM

HotSpot 垃圾收集器

Hotspot 虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点。虽然我们要对各个收集器进行比较,但并非为了挑选出一个最好的收集器。我们选择的只是对具体应用最合适的收集器。 新生代垃圾收集器 Serial垃圾收集器(单线程) 只开启一条 GC 线程进行垃圾回收,并且在垃圾收集过程中停止一切用户线程(Stop The World)。 一般客户端应用所需内存较小,不会创建太多对象,而且堆内存......

垃圾收集策略与算法

程序计数器、虚拟机栈、本地方法栈随线程而生,也随线程而灭;栈帧随着方法的开始而入栈,随着方法的结束而出栈。这几个区域的内存分配和回收都具有确定性,在这几个区域内不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就随着回收了。 而对于Java堆和方法区,我们只有在程序运行期间才能知道会创建哪些对象,这部分内存的分配和回收都是动态的,垃圾收集器所关注的正是这部分内存。 判定对象是否存......