vector的日常使用

在编程题中,遇到输入要求多行数据时,之前是采用二维数组保存数组,但是空间的开辟总是未知的,或多或少也不合适。数组的越界问题会导致程序的奔溃,而且数组的动态性不好。 vector内存的特点是可变大小的,尾部插入删除元素的效率还是很高的。 顺便一提,迭代器的失效问题: 在向容器添加元素后: 如...

2018-09-08 12:15:20

阅读数 98

评论数 0

main函数前后做了什么

__start:      :      init stack;      init heap;      open stdin;      open stdout;      open stderr;      :      push argv;      push argc;      c...

2018-09-04 17:33:13

阅读数 313

评论数 0

golang结构体偷懒初始化

运行一段程序,警告: service/mysqlconfig.go:63::error: golang.guazi-corp.com/tools/ksql-runner/model.CreatingMysqlMongodbRecord composite literal uses unkeye...

2018-08-22 14:38:21

阅读数 2977

评论数 0

Go Stack Trace

package main import "fmt" type trace struct{} func main() { slice := make([]string, 2, 4) var t trace ...

2018-07-13 09:44:18

阅读数 83

评论数 0

并发

Go语言的并发是是指goroutine运行时是相互独立的,能让某个函数独立于其他函数运行。并发不是并行。并行是让不同的代码片段同时在不同的物理处理器上执行。并行的关键是同时做很多事情,而并发是指同时管理很多事情,这些事情可能只做了一半就被暂停去做别的事情了。Go的并发同步模型来自通信顺序进程(Co...

2018-07-11 17:44:44

阅读数 30

评论数 0

go的随机性

go执行的随机性和闭包谁也不知道最后执行之后打印的结果是什么样,但是A:均是10 B:从0-9顺序不定。 第一个go func中i是外部for的一个变量,地址不变化。遍历完成后,最终i=10。 故go func执行时,i的值始终是10。 第二个go func中i是函数参数,与外部for中的i完全是...

2018-07-11 11:38:31

阅读数 90

评论数 0

内存管理之slab分配器

STL中的空间配置器采用一、二级配置器进行内存管理,当配置区块    在一级配置器中,allocate()直接使用malloc(),deallocate()直接使用free(),对于内存不足的情况,模拟C++的set_new_handler()机制;      在二级配置器中,首先会维护16个自由...

2018-06-20 20:57:29

阅读数 69

评论数 1

Linux内存管理

1.页    Linux的内核把物理页作为内存管理的基本单位。而视窗操作系统中的基本单位是进程和线程,与Linux的不同。    内存管理单元(MMU):管理内存并把虚拟地址转换为物理地址的硬件。MMU通常以页为单位来管理系统中的页表。当然,页的大小在不同的体系结构下是不同的0.32位一般支持4K...

2018-06-20 16:15:32

阅读数 54

评论数 0

epoll源码剖析

(主要基于Linux-2.6.11.12版本进行分析。)1. 主要数据结构struct eventpoll { /* Protect the this structure access */ rwlock_t lock; /* * This semaphore is used to e...

2018-06-09 21:11:34

阅读数 186

评论数 0

poll源码剖析

Poll系统调用,是在指定时间内轮询一定数量的文件描述符,以测试是否有就绪者。 函数原型: int poll (struct poddfd *fds, nfds_t nfds, int timeout);   · fds参数是一个pollfd结构类型的数组,指定所有感兴趣的文件描述符上发生...

2018-06-09 16:09:05

阅读数 233

评论数 0

Linux内核同步方法——互斥锁

互斥锁“互斥体(互斥)”指的是任何可以睡眠的强制互斥锁,比如计数是1的信号量。    也就是说,互斥体是一种互斥信号。    互斥在内核中对应数据结构互斥,其行为和使用计数为1的信号量类似,因为是直接调用的信号量的操作接口,实现更高效,而且使用限制更强。也就是一个简化版的信号量,因为不需要管理任何...

2018-06-08 16:30:23

阅读数 182

评论数 0

Linux内核同步方法——自旋锁(spin lock)

自旋锁    Linux的的内核最常见的锁是自旋锁。自旋锁最多只能被一个可执行线程持有。如果一个执行线程试图获得一个被已经持有(争用)的自旋锁,那么该线程就会一直进行忙循环-旋转-等待锁重新可用要是锁未被争用,请求锁的执行线程就可以立即得到它,继续执行。    在任意时间,自旋锁都可以防止多于一个...

2018-06-08 16:20:37

阅读数 8361

评论数 0

Linux内核同步方法——读写锁

读 - 写自旋锁    一个或多个任务可以并发地持有读者锁;相反,用于写的锁最多只能被一个写任务持有,而且此时不能有并发地读操作。   读/写锁也叫做共享/排斥锁,或者并发/排斥锁,因为这种锁对读者而言是共享地,对写者以排斥形式获取地。基本数据结构    在内核代码中,读-写自旋锁用rwlock_...

2018-06-08 13:49:15

阅读数 1186

评论数 0

Linux内核同步方法——信号量

信号量    Linux中的信号量是一种睡眠锁。    如果有一个 任务试图获得一个不可用(已经被占用)的信号量是,信号量将会将其推进一个等待队列,然后让其睡眠。这时处理器能重获自由,从而去执行其他代码。当持有的信号量可用(被释放)后,处于等待队列的哪个任务将被唤醒,并获得该信号量。    举个门...

2018-06-03 16:48:49

阅读数 1113

评论数 0

64位Linux下的地址映射

IA32-e模式下地址映射之前写过,32位Linux虚拟地址映射,讨论了在CPU 80386下的虚拟地址映射。看过博主的《Linux内核在x86_64 CPU中地址映射》,对32位和64位下地址映射的区别做了一些总结。----------------------------------------...

2018-06-02 17:57:54

阅读数 1942

评论数 0

select系统调用源码分析

select系统调用主要对select调用过程进行一些总结,后边也会跟着poll和epoll的一系列分析。对于分析select的源码版本是2.6.11.12。select系统调用的用途是:在一段指定时间内,监听用户感兴趣的文件描述符上的可读、可写和异常等事件。1. select系统调用的原型如下:...

2018-05-18 21:34:25

阅读数 155

评论数 0

字符串匹配之KMP

KMP算法 学习了数据结构之后,对KMP算法一直不是特别深入理解,在《大话数据结构》中,连续 大量的篇幅叙述,读起来特别费劲。直到同学推荐,读了阮一峰博主的文章之后,才对 KMP算法真正理解,写的特别好,自己就在这里做个小总结。 http://www.ruanyifeng.com/blog...

2018-04-30 14:49:58

阅读数 42

评论数 0

事务

主要整理总结关于事务以及事务处理技术,数据库恢复以及并发控制所带来的问题。 事务: 一系列数据库操作,是数据库应用程序的基本逻辑单元。 事务是恢复和并发控制的基本单位。 在关系型数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。 对于事务和程序的区别主要在于:一个...

2018-04-04 15:01:42

阅读数 77

评论数 0

关系型与非关系型数据库

以下主要对关系型数据库和非关系型数据库进行了比较。 参考《数据库系统概论》,《深入浅出MySQL》 以及博客https://blog.csdn.net/lijinqi1987/article/details/51823506 关系型数据库: 书中的解释是:在实体以及实体间的联系用关...

2018-04-03 21:52:42

阅读数 81

评论数 0

MySQL索引

索引 1. 什么是索引 创建在表上,是对数据库表中一列或多列的值进行排序的结构。 用于快速查询数据库表中的特定记录,可提高查询速度。 不同的存储引擎定义了每个表的最大索引数和最大索引长度。所有存储引擎对每个表至少支持 16个索引,总索引长度至少256字节。 ...

2018-04-02 21:27:45

阅读数 77

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭