会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
滴巴戈
博客园
首页
新随笔
联系
订阅
管理
[置顶]
Linux-进程描述(1)—进程控制块
摘要: 进程概念介绍 进程是操作系统对运行程序的一种抽象。 • 一个正在执行的程序; • 一个正在计算机上执行的程序实例; • 能分配给处理器并由处理器执行的实体; • 一个具有普以下特征的活动单元:一组指令序列的执行、一个当前状态和相关的系统资源集。 内核观点:担当分配系统资源(CPU时间,内存)的实体。
阅读全文
posted @ 2017-04-13 22:07 滴巴戈
阅读(5738)
评论(0)
推荐(0)
[置顶]
C++中的继承(2)类的默认成员
摘要: 在继承关系里面, 在派生类中如果没有显示定义这六个成员函数, 编译系统则会默认合成这六个默认的成员函数。 1、构造与析构函数的调用关系 调用关系先看一段代码: 输出结果为: 代码中,我们利用派生类Derived,创建了一个对象d,根据输出结果看到,貌似创建对象d的过程是:先调用基类的构造函数,再调用
阅读全文
posted @ 2017-04-09 21:58 滴巴戈
阅读(2197)
评论(0)
推荐(0)
[置顶]
Linux系统date命令的参数及获取时间戳的方法
摘要: 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 滴巴戈
阅读(85457)
评论(0)
推荐(1)
[置顶]
new/new[]和delete/delete[]是如何分配空间以及释放空间的
摘要: C++中程序存储空间除栈空间和静态区外,每个程序还拥有一个内存池,这部分内存被称为或堆(heap)。程序可以用堆来存储动态分配的对象,即那些在程序运行时创建的对象。动态对象的生存期由程序来控制 ,当动态对象不再使用时,程序必须显式的销毁它们。new操作符就是从自由存储区上为对象动态分配内存空间的。这
阅读全文
posted @ 2017-03-26 21:26 滴巴戈
阅读(4789)
评论(0)
推荐(0)
2021年9月16日
go实现堆排序、快速排序、桶排序算法
摘要: 一. 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法。以大堆为例利用堆顶记录的是最大关键字这一特性,每一轮取堆顶元素放入有序区,就类似选择排序每一轮选择一个最大值放入有序区,可以把堆排序看成是选择排序的改进。它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下
阅读全文
posted @ 2021-09-16 11:00 滴巴戈
阅读(1656)
评论(0)
推荐(0)
2019年12月29日
golang垃圾回收GC
摘要: go GC 的基本特征是非分代、非紧缩、写屏障、并发标记清理。核心是抑制堆增长,充分利用CPU资源。 1. 三色标记 是指并发(垃圾回收和用户逻辑并发执行)的对系统中的对象进行颜色标记,然后根据颜色将对象进行清理。基本原理: 起初将堆上所有对象都标记为白色; 从底部开始遍历对象,将遍历到的白色对象标
阅读全文
posted @ 2019-12-29 13:30 滴巴戈
阅读(1404)
评论(0)
推荐(1)
2019年12月27日
golang内存分配原理及make和new的区别
摘要: Go语言内置运行时(就是runtime),不同于传统的内存分配方式,go为自主管理,最开始是基于tcmalloc架构,后面逐步迭新。自主管理可实现更好的内存使用模式,如内存池、预分配等,从而避免了系统调用所带来的性能问题。 1. 基本策略 每次从操作系统申请一大块内存,然后将其按特定大小分成小块,构
阅读全文
posted @ 2019-12-27 13:32 滴巴戈
阅读(4269)
评论(0)
推荐(4)
2019年12月19日
go中的关键字-reflect 反射
摘要: 1. 什么是反射 Golang提供了一种机制,在编译时不知道类型的情况下,可更新变量、运行时查看值、调用方法以及直接对他们的布局进行操作的机制,称为反射。 2. 反射的使用 2.1 获取变量内部信息 reflect提供了两种类型来进行访问接口变量的内容: 类型reflect.ValueOf() 的作
阅读全文
posted @ 2019-12-19 15:32 滴巴戈
阅读(692)
评论(0)
推荐(0)
2019年11月28日
go中的协程-goroutine的底层实现(2)
摘要: 1. goroutine源码分析 1.1 初始化 go程序的启动流程分为四步 call osinit, 这里就是设置了全局变量ncpu = cpu核心数量 call schedinit make & queue new G (runtime.newproc, go func()也是调用这个函数来创建
阅读全文
posted @ 2019-11-28 16:49 滴巴戈
阅读(944)
评论(0)
推荐(2)
2019年11月26日
go中的协程-goroutine的底层实现(1)
摘要: 1. goroutine的使用 在Go语言中,表达式go f(x, y, z)会启动一个新的goroutine运行函数f(x, y, z),创建一个并发任务单元。即go关键字可以用来开启一个goroutine(协程))进行任务处理。 创建单个goroutine 1 package main 2 3
阅读全文
posted @ 2019-11-26 19:54 滴巴戈
阅读(4083)
评论(0)
推荐(0)
2019年11月21日
go中return与defer的执行顺序,defer的实现原理
摘要: 1. defer的使用 defer 延迟调用。我们先来看一下,有defer关键字的代码执行顺序: 1 func main() { 2 defer func() { 3 fmt.Println("1号输出") 4 }() 5 defer func() { 6 fmt.Println("2号输出") 7
阅读全文
posted @ 2019-11-21 20:59 滴巴戈
阅读(2158)
评论(0)
推荐(1)
2019年11月20日
go中的关键字-select
摘要: 1. select的使用 定义:在golang里头select的功能与epoll(nginx)/poll/select的功能类似,都是坚挺IO操作,当IO操作发生的时候,触发相应的动作。 1.1 一些使用规范 在Go的语言规范中,select中的case的执行顺序是随机的,当有多个case都可以运行
阅读全文
posted @ 2019-11-20 17:03 滴巴戈
阅读(1863)
评论(0)
推荐(0)
go中通道channel的使用及原理
摘要: 1. channel的使用 channel,通道。golang中用于数据传递的一种数据结构。是golang中一种传递数据的方式,也可用作事件通知。 1.1 声明、传值、关闭 使用chan关键字声明一个通道,在使用前必须先创建,操作符 <- 用于指定通道的方向,发送或接收。如果未指定方向,则为双向通道
阅读全文
posted @ 2019-11-20 09:31 滴巴戈
阅读(4603)
评论(0)
推荐(1)
2019年11月18日
go中接口interface的使用与原理
摘要: 1. 接口的基本使用 golang中的interface本身是一种类型,它代表一个方法的集合。任何类型只要实现了接口中声明的所有方法,那么该类就实现了该接口。与其他语言不同,golang并不需要显式声明类型实现了某个接口,而是由编译器和runtime进行检查。接口解除了类型依赖, 有助于减少可视方法
阅读全文
posted @ 2019-11-18 16:24 滴巴戈
阅读(2122)
评论(0)
推荐(0)
下一页
公告
点击右上角即可分享