/images/avatar.jpg

Java之GC

/images/gc-java.png

GC

GC就是垃圾回收(Garbage Collection),如果你写过C++或者C程序的,你就会知道new一个数据后,就需要delete它的内存,这就是手动管理内存,但这样如果你粗心点的话,就容易造成内存泄露,所以就有了自动垃圾回收,也就我们这里所讨论的GC。Java的GC会对JVM(Java Virtual Machine)中的内存进行标记,并确定哪些内存需要回收,根据一定的回收策略,自动的回收内存,永不停息(Nerver Stop)的保证JVM中的内存空间,防止出现内存泄露和溢出问题。
其实GC很早就有了,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。

一步步自己做个Docker之Go调用Namespace

/images/docker-logo.png

本文环境:

  • OS:Ubuntu 18.04.4 LTS
  • Golang版本:1.12.13

Golang

Go语言是Google开发的一种静态类型、编译型的高级语言,它设计的蛮简单的,学过C的话,其实上手Go很快的,当然相比于C的话,Go有垃圾回收和并发支持,所以写起来心智负担更低一点。
对于Go的安装和配置,我以前写过一篇文章——go语言基本配置,我这里就不在赘述了。Go1.11增加了go modules,使用它的话,就没必要一定要把代码放到GOPATH下面啦~(≧▽≦)/~。 go modules详细 使用请参考go mod 使用

https深入分析

https

https就是在http的基础上又增加了一个TLS层,它就是一个套壳协议。

加密和解密

https的发展和密码学的发展是分不开的。加密方式可以大体分为对称加密和非对称加密

基于Zookeeper的分布式锁

Zookeeper 是 Apache 的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。 由于 ZooKeeper 便捷的使用方式、卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系统中。

Java之synchronized的实现原理

synchronized

在Java多线程编程中,我们最先碰到的也是最简单的方法就利用synchronized关键字。用它的方式有三种:

  • 修饰实例方法,锁是当前实例对象
  • 修饰静态方法,锁是当前类的class对象(每个类都有一个Class对象)
  • 修饰代码块,锁定括号里的对象

加上synchronized之后,我们的代码就变成了同步代码,神奇又强大,但有的时候也不禁会思考下:Java底层是怎么实现synchronized关键字的?
在阅读了一些文章之后,我在这里做了一些归纳和总结。