2021年12月17日

摘要: 多线程编程时,需要通过多个线程来处理多个任务。如果不经过优化,那么最简单的想法应该是每到来一个任务,就创建一个线程用来处理这个任务,当这个任务处理完毕,就销毁这个线程。但是这个简单的想法会带来大量的时空开销。设想,假如有成百上千个任务,为了处理它们,岂不是要创建和销毁线程成百上千次,这显然是不划算的 阅读全文
posted @ 2021-12-17 21:42 换甲 阅读(269) 评论(0) 推荐(0) 编辑
 

2021年12月8日

摘要: 拓扑排序 一、有向无环图 学习拓扑排序必须先要了解有向无环图(Directed Acyclic Graph,DAG)。有向无环图,顾名思义就是不存在环结构的有向图。从有向无环图的任意一个顶点出发,都没有办法回到该节点。 二、拓扑排序 拓扑排序是关于DAG图最重要的应用之一。拓扑排序将DAG图排列成一 阅读全文
posted @ 2021-12-08 22:31 换甲 阅读(62) 评论(0) 推荐(0) 编辑
 

2021年11月21日

摘要: vim介绍 vim是一款Unix/linux平台下的文本编辑器.相对于其他编辑器,vim为使用者提供了很多的操作,以实现各种各样的功能.如果能把这些功能融汇贯通,使用者就可以大大提升文本编辑的效率.除了传统的文本编辑以外,很多人把它直接当作一款软件开发工具,来加速开发.vim就像原来的五笔打字一样, 阅读全文
posted @ 2021-11-21 11:46 换甲 阅读(412) 评论(0) 推荐(0) 编辑
 

2021年10月29日

摘要: 字典树是一种多叉树,一般用来存储一个字符串集合。字典树的边记录了字符串的一个字符,从根节点出发,不同路径就相当于不同的单词(或者单词前缀),为了确定字符串是不是到头了,需要为每个节点记录一个标志,用以判断。下面是字符串集合和字典树的对应关系。 字典树的数据结构: 1 struct TrieNode{ 阅读全文
posted @ 2021-10-29 22:43 换甲 阅读(156) 评论(0) 推荐(0) 编辑
 

2021年10月28日

摘要: 事务的隔离性 数据库的事务有四大特性:原子性,一致性,隔离性,持久性。其中隔离性指的是在有多个事务在一个数据库上同时执行时,不会造成数据的不一致。理想状态下,事务应该互不干扰。可是要实现这一点并不容易,必须要通过数据库锁机制配合,这就会带来极大的性能开销。所以,就有了数据库隔离级别的概念,不同隔离级 阅读全文
posted @ 2021-10-28 11:29 换甲 阅读(308) 评论(0) 推荐(0) 编辑
 

2021年10月24日

摘要: 函数指针,是指向函数的指针。定义函数指针是,要指明函数的返回类型和形参列表。 int (*p)(int,int); //定义一个函数指针 p是一个函数指针,它指向函数的返回类型为int类型,用两个int类型的形参。 给函数指针赋值 当我们把函数名作为一个值使用时,该函数自动转化为指针。所以可以用函数 阅读全文
posted @ 2021-10-24 21:01 换甲 阅读(383) 评论(0) 推荐(0) 编辑
 
摘要: typedef是C/C++中一个很关键的关键字,它的作用是用来给类型起别名。因为在遇上不同数据类型,尤其是复杂类型,typedef的用法有一些细微的差距,所以很多人会有一些疑惑,今天我就来整理一下。 typedef关键字主要用来给一下几种类型起别名: 基本数据类型 结构体 数组 枚举类型 指针 函数 阅读全文
posted @ 2021-10-24 17:09 换甲 阅读(1088) 评论(0) 推荐(1) 编辑
 
摘要: 随机数指的是从一个可能的范围中挑选出一个值返回,每一个范围内的数字被选中的概率是一样的。C++中提供了一系列函数来实现随机数生成。 1. rand rand函数每次都返回一个0~65536范围内的随机整数。这些随机数通过算法生成,并不是真正的随机数。 1 #include <iostream> 2 阅读全文
posted @ 2021-10-24 11:47 换甲 阅读(63) 评论(0) 推荐(0) 编辑
 

2021年10月23日

摘要: 前言 在数组,我们常常会遇上区间求和相关的问题,即求数组A中第i个元素到第j个元素(i<j)之和。 这个问题看起来比较简单,只需要累加即可: $$Sum(i,j) = A[i]+A[i+1]+...+A[j]$$ 但是在面对大数据量的时候,它的时间复杂度也很高,而且如果需要进行多次查询,我们可能会进 阅读全文
posted @ 2021-10-23 15:23 换甲 阅读(155) 评论(0) 推荐(0) 编辑
 

2021年8月10日

摘要: 最近在做项目的时候,遇到了跳跃表这种数据结构,仔细研究了之后发现这是一种很有用的数据结构,值得写一篇博客来记录一下。 1. 跳跃表的作用 大家都清楚,对于有序数组,我们可以通过二分法将查找元素的复杂度降到O(logn)。可是因为存储地址不连续,我们没办法将二分法运用到有序链表中。跳跃表就是用来解决这 阅读全文
posted @ 2021-08-10 22:43 换甲 阅读(213) 评论(0) 推荐(0) 编辑