原创 编程语言 详解gc(垃圾回收)机制六:分代垃圾回收 分代垃圾回收人们在众多程序案例中总结出了一个经验:"大部分的对象在生成后,经过调用之后马上就变成了垃圾,很多有对象能活的很久"分代垃圾回收利用该经验,在对象中导入了"年龄"的概念,经历过一次GC后活下来的对象年龄会增长1岁新生代对象和老年代对象分代垃圾回收中把对象分类成几代,根据不同的代数,使用不同的GC算法,我们把刚生成的对象称为新生代,到达一定年龄后称为 2022-11-29 浏览(1,255) 评论(0) 阅读全文
原创 编程语言 详解gc(垃圾回收)机制五:GC标记-压缩算法 GC标记-压缩算法gc标记-压缩算法是 详解gc(垃圾回收)机制三:GC复制算法 和 详解gc(垃圾回收)机制四:GC标记-清除算法 结合的产物可以看到,从此章开始,gc算法从一个独立的,变成了多个组合方式的,大多数有着垃圾回收的语言,都是使用了多个gc算法组合进行的gc步骤1:遍历所有的活动对象,并且标记2:设定s 2022-11-28 浏览(1,238) 评论(0) 阅读全文
原创 编程语言 详解gc(垃圾回收)机制四:GC标记-清除算法 标记-清除算法GC标记-压缩算法由标记阶段和清除阶段构成我们在详解gc(垃圾回收)机制(一) 简单说明了 标记-清除算法gc步骤:1:暂停程序业务逻辑,对所有对象进行标记分类2:找出程序可达对象和不可达对象3:删除不可达对象标记清除算法就是如此简单明了,不会出现循环引用的问题,但是标记清除算法需要暂停程序,会造成程序卡顿同时每次标记都需要扫描整个堆内存空间步骤一:遍历根引用 2022-11-28 浏览(1,240) 评论(0) 阅读全文
原创 编程语言 详解gc(垃圾回收)机制三:GC复制算法 在前2篇中,我们大致了解了语言的gc,以及gc的基本概念详解gc(垃圾回收)机制(一) 详解gc(垃圾回收)机制二:认识GC基本概念 gc算法大致分为以下几种:1:标记-清除2:引用计数法3:GC复制4:GC标记-压缩5:保守GC6:分代垃圾回收7:增量式垃圾回收8:RC Immix在第一篇文章,有讲到 标记-清除,引用计数,以及go的特色 三色标记法.GC复制算法GC复制简单来说,就 2022-11-23 浏览(1,422) 评论(0) 阅读全文
原创 服务架构 docker的多阶段构建 如何执行go程序写一个go的程序:package mainimport "fmt"func main() { fmt.Println("hello world")}在本地的话,我们可以有2种方案执行 go run main 2022-09-01 浏览(1,238) 评论(0) 阅读全文
原创 编程语言 详解gc(垃圾回收)机制(一) 虚拟内存进程在运行时,所操作的内存就是虚拟内存,每个进程之间的虚拟内存互相独立,通过 MMU 内存管理技术再映射到物理内存中,同时,虚拟内存空间块分为:栈内存栈内存在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。在调用栈结束后将会自动回收#include<stdio.h>#include<stdlib.h>void test() 2022-08-24 浏览(2,333) 评论(0) 阅读全文
原创 mysql mysql explain 详解 准备一条复杂一点的语句字段描述id mysql查询序列号可以认定为mysql语句的执行顺序1:如果是同一组查询,id序号则一致,顺序从上到下2:如果是子查询,则序号自增,执行顺序从小到大select_type查询的类型mysql的查询方式,有以下几种类型:SIMPLE & 2022-05-25 浏览(1,365) 评论(1) 阅读全文
原创 服务架构 分布式学习十四:etcd实现服务注册/发现 架构图注册/发现流程图代码代码地址:https://github.com/tioncico/etcd_service-registry-discovery 2022-04-15 浏览(1,277) 评论(0) 阅读全文
原创 编程语言 分布式学习十三:实现全局唯一id命名 全局唯一id在单体服务中,我们可以通过数据库的自增id去实现唯一id命名,但是在分布式服务中,分库分表之后,就无法直接使用自增id了,数据库只能保证当前表的id唯一,这个时候我们就需要通过其他方式去生成全局唯一id,例如UUIDUUIDuuid通俗来讲,就是针对于 每个机器/机器的线程/当前的时间戳/伪随机数 作为生成凭据,能保证每个机器下的每个线程都会生成不同的id生成的数据大概为一串无规律的数 2022-03-26 浏览(1,235) 评论(0) 阅读全文
原创 编程语言 分布式学习十二:zookeeper实现数据订阅/发布 数据订阅/发布在分布式集群中,假设数据库发生了改动,就得修改所有分布式服务的数据库配置我们可以通过zookeeper来实现数据库配置的订阅发布我们先初始化数据库配置项环境在zookeeper配置以下数据[zk: localhost:2181(CONNECTED) 51] get /config-server/app1/database{"Hos 2022-03-23 浏览(1,419) 评论(0) 阅读全文