Java 类的加载过程

前言

上次说到了类的加载器,分为 BootstrapClassLoaderExtClassLoaderAppClassLoader 。具体是怎么加载的没说,这次来说一说类的加载过程,主要分为装载、链接、初始化。其中链接又可以分为验证、准备、解析。

HTTPS 原理

为什么要有 HTTPS

做开发的都知道 HTTP 使用明文进行传输内容,就是在裸奔,一点安全感都没有。

在传输的过程中任何一个节点都可以对内容进行监听,篡改,冒充。

为了解决 HTTP 存在的这些问题就出现了 HTTPS

ClassLoader

前言

上一篇我们了解了字节码的结构,这些字节码文件都是什么时候被加载到内存中的,今天就来聊聊类加载。

Java Class 探秘

前言

Java 开发都知道 .java 文件编译后得到的是 .class 文件,这个文件是 Java 虚拟机能够识别加载的文件。有了这个字节码文件 Java 实现一次编写到处运行才成为可能。

然而我们平时都是写 .java 文件,很少接触 .class 文件,今天就来看看 .class 文件中有什么秘密,它长什么样子。

Java 垃圾回收机制

前言

之前我们介绍了 JVM 运行时内存是怎么分配的,其中方法区和堆是线程共享的,这里的对象如果不需要使用了,需要释放掉。

但我们很少像 C/C++ 一样去自己管理,释放内存,这其中就要归功于 Java GC ,它在背后默默的工作着。

虽然 Java GC 在背后默默的工作着,但是我们一直都不了解它,今天来看看它是怎么工作的,这样出现问题了才有应对之法。

在 Emacs 中使用 Git Flow

Git Flow 简介

随着 GitHub 的流行,越来越多人开始使用 GitGit 的强大在于我们可以随时随地的创建分支。

随时随地创建分支,给我带来了极大的方便,但同时,分支太多管理起来也是非常头疼。

Git 支持多人协作,如果没有一个规范的话,随着时间的变化,将会越来越难以管理。

这时 Git Flow 出现了,这个分支模型,为我们管理 Git 分支提供了一个模型,用来管理 Git 分支,有效的减少分支混乱不堪的情况。

JVM 运行时内存分配

前言

JVMJava 程序员绕不过去的坎,今天学习下 Java 虚拟机运行时是怎么分配内存的。

JVM 规范中规定, JVM 运行时内存分为程序计数器、虚拟机栈、本地方法栈、方法区、堆,这5个部分,如下图所示。

我的快捷键跨平台方案

前言

我经常要在 macOS 和 Linux 下来回切换使用,使用的过程中,有许多不便之处。比如快捷键就是一个非常头疼的问题,需要记两套不同的快捷键,而且两个平台的键位还不一样。

熟练使用快捷键可以成吨的提高效率。于是在两个平台之间使用我都要刻意去配置让两个平台的快捷键尽肯能的相似,这样开发效率才不会受到太多的影响。

MPAndroidChart 使用总结

前言

今年开工以来,一直接触图表相关的开发,经过选择最后采用 MPAndroidChart ,期间碰到了一些问题,踩了不少坑。特来总结一下,以免日后忘记。这些知识点虽然不难,但是非常零碎,找起来比较麻烦。

一键自动安装 ArchLinux

前因

由于我经常需要用到 Linux 就不可避免的要经常需要安装各种 Linux 实在是非常耗费时间的事情,装系统可能不下于百次了。

每次装系统都要花费许多时间,于是我就考虑能不能写一个脚本让其自动化安装,以节约时间。

虽然现在安装 Linux 非常方便,尤其是带有良好的安装界面,基本上只要点击下一步就能够装好。

但是我的需求是不需要带有 GUI 的,毕竟在虚拟机上使用 GUI 体验并不是非常好。

GPG加密四:用 GPG 加密你的密码

前言

前面我们讲的 GPG 的相关内容,对于大多数人来可能用的不多。今天我们就来实际的使用一下,用它来管理你的密码。

密码是我们日常都会用到的,而且使用很多,每个网站都有不同的账号和不同的密码。如果你使用同样的密码,那就非常危险了,一旦某个密码泄漏了,其他网站也会跟着遭殃。定期修改密码还是非常有必要的。

pass 介绍

pass 是一个符合 Unix 哲学的命令行工具,它被设计成用来管理密码,并且是开源的,如果你不放心,可以去查看代码,或者改成你需要的。不要看到命令行就怕了,它有很多客户端,可以满足大多数人使用。

类似 pass 的产品有我们常见的 1PasswordLastPass 等。 1Password 是个收费的软件, LastPass 虽然也有免费的版本,但是密码放在别人那里总是不放心。毕竟之前也出过幺蛾子。如果你有使用这些产品,也可以非常方便导入到 pass 中。

pass 使用 GPG 非对称加密,这就是我们选择它的原因。

GPG加密三

前言

经过前面的两次的学习,各位小伙伴应该能够满足日常使用了。今天我们把剩下的一些知识给讲完,将来会用到的。

GPG加密二

前言

上一篇文章我们了解了怎么使用 GPG 进行加密、解密、签名。

这篇来讲讲密钥的导入导出以及子密钥的使用。

GPG加密一

GPG介绍

提到 GPG 不得不提一下 PGP(Pretty Good Privacy)PGP 最开始是由 Phil Zimmermann 开发,开发的目的是为了躲避监视,如果文件在网络上明文传输,那是多么危险。 PGP 虽然受很多人喜爱,但是是个商业软件,不能自由使用。所以自由基金会决定自己开发一个取名叫 GPG ,这就是 GPG 的由来。 GPGPGP 都遵循 OpenPGP 加解密标准, 现在 PGP 被赛门铁克公司收购了。

2019总结

Photo by NordWood Themes on Unsplash

看书

今年读书比较多,大多数是电子书。还有两本纸质书,其中一本是在书店里看完的,用了 4 天下班后的两个小时看完的,比较新奇的体验。

我以前看书没有做笔记的习惯,有的能想起来书名,具体就要整本书的去找。如果不幸忘记,根本无从下手。所以今年用电子书看的会做一些笔记,看完之后会导出,然后使用 Org Mode 进行整理。这样提高了我查找的效率。

Parallels tools 安装失败

缘由

最近做实验,需要一个新的 Linux 环境来折腾,于是就去下载了最新版的 Manjaro

按照常规安装好虚拟机之后,我还会安装 Parallels tools 来更好的体验 LinuxParallels tools 可以方便的在宿主机和虚拟机之间拷贝文件和共享文件,当然还有最重要的就是显示效果会好上一大截,鼠标移动不会卡顿,窗口的缩放可以自适应等,所以没有理由不装。

在安装的过程中碰到了安装失败的情况,下面记录一下解决的过程。

用Docker下载AOSP源码

AOSP 介绍

AOSP 是 Android 开放源码项目,通俗点就是整个 Android 的源码。有了 AOSP 我们就可以在源码的层面去了解整个 Android 系统。甚至可以自己基于 AOSP 去定制自己系统,这也是众多 ROM 的直接或间接起源。

在Emacs中用PlantUML画UML

简介

平时需要画 UML 图,用的比较多的就是 StarUMLVisioRational Rose 。其中 StarUML 是跨平台的免费软件,相比其他的收费软件是个不错的选择。

今天要介绍的是PlantUML它是一个开源的用文字来描述的工具,简单来说就是用文字去写出各种 UML 图,而不是用鼠标去拖拽。上面介绍的工具都是通过鼠标去拖拽的方式去画出各种 UML 图。可能由于是个开发的缘故,天生就喜欢纯文本的东西,解析起来方便,占用内存小,改起来也方便,只要一个文本编辑器就可以改。当然我使用的原因是可以在 Emacs 中通过 Org Mode 结合 Org-Babel 使用,生成对应的 UML 图,所见即所得。

这里有一个在线体验的网址,有兴趣可以点击链接,前去体验。

拔智齿

Photo by Luigi Liccardo on Unsplash

智齿简介

引用一段百度百科的介绍。

智齿也称智慧齿、是人类的第三磨牙,随着遗传基因的不同智齿一般会在 16-30 岁之间长出,也是人一生中最后长出的牙齿,所以它最靠近喉咙,因为此时期的人们心智比较成熟而得名。