摘要:进程概念介绍 进程是操作系统对运行程序的一种抽象。 • 一个正在执行的程序; • 一个正在计算机上执行的程序实例; • 能分配给处理器并由处理器执行的实体; • 一个具有普以下特征的活动单元:一组指令序列的执行、一个当前状态和相关的系统资源集。 内核观点:担当分配系统资源(CPU时间,内存)的实体。 阅读全文
posted @ 2017-04-13 22:07 滴巴戈 阅读(4229) 评论(0) 推荐(0) 编辑
摘要:在继承关系里面, 在派生类中如果没有显示定义这六个成员函数, 编译系统则会默认合成这六个默认的成员函数。 1、构造与析构函数的调用关系 调用关系先看一段代码: 输出结果为: 代码中,我们利用派生类Derived,创建了一个对象d,根据输出结果看到,貌似创建对象d的过程是:先调用基类的构造函数,再调用 阅读全文
posted @ 2017-04-09 21:58 滴巴戈 阅读(1668) 评论(0) 推荐(0) 编辑
摘要:date指令相关用法示例 date 用法: date [OPTION]... [+FORMAT]date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] 直接输入date date 指定格式显示时间: date +%Y_%m_%d, date +%Y:% 阅读全文
posted @ 2017-03-28 09:58 滴巴戈 阅读(47213) 评论(0) 推荐(0) 编辑
摘要:C++中程序存储空间除栈空间和静态区外,每个程序还拥有一个内存池,这部分内存被称为或堆(heap)。程序可以用堆来存储动态分配的对象,即那些在程序运行时创建的对象。动态对象的生存期由程序来控制 ,当动态对象不再使用时,程序必须显式的销毁它们。new操作符就是从自由存储区上为对象动态分配内存空间的。这 阅读全文
posted @ 2017-03-26 21:26 滴巴戈 阅读(2607) 评论(0) 推荐(0) 编辑
摘要:go GC 的基本特征是非分代、非紧缩、写屏障、并发标记清理。核心是抑制堆增长,充分利用CPU资源。 1. 三色标记 是指并发(垃圾回收和用户逻辑并发执行)的对系统中的对象进行颜色标记,然后根据颜色将对象进行清理。基本原理: 起初将堆上所有对象都标记为白色; 从底部开始遍历对象,将遍历到的白色对象标 阅读全文
posted @ 2019-12-29 13:30 滴巴戈 阅读(413) 评论(0) 推荐(1) 编辑
摘要:Go语言内置运行时(就是runtime),不同于传统的内存分配方式,go为自主管理,最开始是基于tcmalloc架构,后面逐步迭新。自主管理可实现更好的内存使用模式,如内存池、预分配等,从而避免了系统调用所带来的性能问题。 1. 基本策略 每次从操作系统申请一大块内存,然后将其按特定大小分成小块,构 阅读全文
posted @ 2019-12-27 13:32 滴巴戈 阅读(1797) 评论(0) 推荐(3) 编辑
摘要:1. 什么是反射 Golang提供了一种机制,在编译时不知道类型的情况下,可更新变量、运行时查看值、调用方法以及直接对他们的布局进行操作的机制,称为反射。 2. 反射的使用 2.1 获取变量内部信息 reflect提供了两种类型来进行访问接口变量的内容: 类型reflect.ValueOf() 的作 阅读全文
posted @ 2019-12-19 15:32 滴巴戈 阅读(144) 评论(0) 推荐(0) 编辑
摘要:1. goroutine源码分析 1.1 初始化 go程序的启动流程分为四步 其中,schedinit 就是调度器的初始化,除了schedinit 中对内存分配,垃圾回收等操作,针对调度器的初始化大致就是初始化自身,设置最大的maxmcount, 确定p的数量并初始化这些操作。 schedinit 阅读全文
posted @ 2019-11-28 16:49 滴巴戈 阅读(304) 评论(0) 推荐(1) 编辑
摘要:1. goroutine的使用 在Go语言中,表达式go f(x, y, z)会启动一个新的goroutine运行函数f(x, y, z),创建一个并发任务单元。即go关键字可以用来开启一个goroutine(协程))进行任务处理。 创建单个goroutine 输出 这里的sleep是必须的,否则你 阅读全文
posted @ 2019-11-26 19:54 滴巴戈 阅读(1241) 评论(0) 推荐(0) 编辑
摘要:1. defer的使用 defer 延迟调用。我们先来看一下,有defer关键字的代码执行顺序: 输出结果: 结论:多个defer的执行顺序是倒序执行(同入栈先进后出)。 由例子可以看出来,defer有延迟生效的作用,先使用defer的语句延迟到最后执行。 1.1 defer与返回值之间的顺序 输出 阅读全文
posted @ 2019-11-21 20:59 滴巴戈 阅读(220) 评论(0) 推荐(0) 编辑
摘要:1. select的使用 定义:在golang里头select的功能与epoll(nginx)/poll/select的功能类似,都是坚挺IO操作,当IO操作发生的时候,触发相应的动作。 1.1 一些使用规范 在Go的语言规范中,select中的case的执行顺序是随机的,当有多个case都可以运行 阅读全文
posted @ 2019-11-20 17:03 滴巴戈 阅读(727) 评论(0) 推荐(0) 编辑
摘要:1. channel的使用 很多文章介绍channel的时候都和并发揉在一起,这里我想把它当做一种数据结构来单独介绍它的实现原理。 channel,通道。golang中用于数据传递的一种数据结构。是golang中一种传递数据的方式,也可用作事件通知。 1.1 声明、传值、关闭 使用chan关键字声明 阅读全文
posted @ 2019-11-20 09:31 滴巴戈 阅读(710) 评论(0) 推荐(1) 编辑
摘要:1. 接口的基本使用 golang中的interface本身是一种类型,它代表一个方法的集合。任何类型只要实现了接口中声明的所有方法,那么该类就实现了该接口。与其他语言不同,golang并不需要显式声明类型实现了某个接口,而是由编译器和runtime进行检查。接口解除了类型依赖, 有助于减少可视方法 阅读全文
posted @ 2019-11-18 16:24 滴巴戈 阅读(350) 评论(0) 推荐(0) 编辑
摘要:1. map的使用 golang中的map是一种数据类型,将键与值绑定到一起,底层是用哈希表实现的,可以快速的通过键找到对应的值。 类型表示:map[keyType][valueType] key一定要是可比较的类型(可以理解为支持==的操作),value可以是任意类型。 初始化:map只能使用ma 阅读全文
posted @ 2019-11-15 14:59 滴巴戈 阅读(1179) 评论(0) 推荐(2) 编辑