- 博客(14)
- 收藏
- 关注
原创 linux线程同步与互斥-读写锁
读写锁是一种特殊的自旋锁,对临界资源的访问者分成读者和写者,读者只对临界资源进行读访问,所以可以有好多读者一起读,但此时不能写入,写者则需要对共享资源进行写操作。相比于其他的所他可以实现读多写少的模型,读者间可以一起读,没有关系,只要维护读者与写者之间互斥即可。他有三种状态(1)读加锁 (2)写加锁 (3)不加锁相关的函数int pthread_rwlock_init(pt
2017-06-19 15:27:21
389
1
原创 堆排序和TopK问题
堆是一种很有趣的数据结构,有最大堆和最小堆两种形式,在上一篇文章里已经讲到了最大最小堆的建立;这里用一下堆的方法解决问题。 1.首先是在一大堆数字中找到K个最大或最小的数字(topK问题)topK问题是生活中很常见的问题;比如找到N个在某个科目成绩最好的同学,或者在很多游戏中都会有很多数据分析结果,年度评价之列的都是什么游戏时间最长啦,与你开黑时间最多的K个小伙伴啦,都会用到。
2017-05-23 12:28:12
3162
原创 最大堆最小堆的建立
堆是一种数据结构,它是一颗完全二叉树,最大堆和最小堆是二叉堆的两种形式。最大堆:每个父亲结点的键值都大于孩子结点最小堆:每个父亲结点的键值都小于孩子结点下面看一下我的实现方式↓#pragma once#include using namespace std;templatestruct Great{ bool operator()(con
2017-05-22 11:41:10
993
原创 迷宫求解
求解迷宫是一件挺简单的事情,对于计算机而已,则需要按算法遍历直到找到解,有路口、有死胡同,所以这个过程和栈的进出过程一样。若是需要最优解,则需要遍历所有路线找到路径最短的解。下面是一些对于迷宫求解的算法,希望有用1.建立一个mazemap。#include #include #include #include #pragma warning(disable
2017-05-06 00:00:55
345
原创 【STL】vector的模拟实现
STL中的vector也是一个常用的容器,他是一个顺序表,很多用法和接口都和list的一样。下面来看一下vector的模拟实现#include #include using namespace std;templateclass Vector{public: typedef T* Iterator; typedef const T* ConstIt
2017-05-05 14:34:52
338
原创 STL中list各个接口的使用
list是STL中的一个重要的容器,它是一个双向的循环的带头结点的链表,可以高效的进行插入删除元素,这里来看一下他的接口们。
2017-05-03 16:15:38
414
原创 迭代器与List
List是STL库(标准模板库)中的一个容器。它的实质上就是一个双向链表,而且要注意的是,这个双向链表是有头的;他有一个空的头结点,插入删除时不用判断表中有无数据,双向循环可以轻易的_head->prev轻松地找到最后一个节点end。 它使用内置的迭代器来遍历和管理这个容器,迭代器就像指针一样管理着这个空间,重载实现了与指针以一样的++、*、= 、!=等操作符。 下面让我们简单的模拟实
2017-05-02 18:22:05
301
原创 SharePtr的简单实现
智能指针就是一个智能的指针:有以下两个特点管理指针指向对象的释放问题;又能像指针一样使用。所以可以用RAII(资源获取就是初始化)的方式设计一个指针的对象用它的析构函数来管理资源、避免内存泄露。shared_ptr是一个智能指针,比起auto_ptr 、unique它更像一个智能指针。下面看一下SharePtr的简单实现↓template<class T,class Del>class S
2017-04-14 13:27:13
1923
原创 vim的简单配置
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器。 想要用的得心应手一些自己喜欢的配置就尤为重要。想要配置vim就要先找到vimrc对其进行配置在每个用户的主工作目录下都有一个.vimrc的隐藏文件(ls-a可以看到),在其中输入以下的一些指令即可全局的vimrc在 /etc/vim/vimrc这个目录下对他进行配置需要root权限下面进行本人用户的一些简单的配置显示高亮 :sy
2017-04-09 13:27:16
219
原创 linux find命令详解
find命令功能强大,所以他的选项众多,他消耗资源多,所以他的工作效率并不是很高,但是要经常使用,所以我们来了解一下find的一些用法。1. find命令格式 find的一般格式为:find pathname -options [-print -exec -ok …]。2. find命令的参数; pathname: find命令所查找的目录路径。 -print: find命令将匹配的文件输出到
2017-04-04 14:38:51
836
原创 linux文件的三个时间及目录权限的解释
一、三个时间的查看:用stat 获取文件的三个时间;二、三个时间的意义及改变条件access time :表示最后一次访问(仅是访问)文件的时间。modify time:表示最后一次修改文件。的时间。change time:表示最后一次对文件属性改变的时间,包括权限,大小,属性等等。总结一下:访问只会改变access time; 更改内容只会修改modify time; 修改文件权限只
2017-03-22 13:24:51
383
原创 关于求一个十进制的数在二进制形式中1的个数
今天遇到了一个有趣的问题,求一个数的二进制形式中的1的个数,有以下的程序: #include < stdio.h> int main (){ int n = 0,count = 0; scanf("%d",&n); for(;n>0;n /= 2) { if( n%2 == 1) count++; } pri
2016-10-29 23:47:59
520
原创 博客第一天
大家好,我是目前是陕科大的一名大二学生,我的名字叫邵书源,来自杭州,没什么特别的爱好,平时喜欢打打游戏,但是玩了一个又一个游戏发现并没有一个能适合我的让我一直保持痴迷的游戏,而越来越发现会开发游戏才是最有趣的,能让别人玩你的游戏一定比玩别人的游戏带来的成就感强烈。对于脚本也有很大的兴趣( *︾▽︾) ,用过脚本,却并不知道它是怎么工作的,是怎么构成的。于是就向这个道路越走越远,高考的专业选择5个志
2016-10-28 16:31:49
228
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人