- 博客(18)
- 资源 (1)
- 收藏
- 关注
原创 c++字典树(智能指针shared_ptr实现)
#include<bits/stdc++.h>using namespace std;struct Node{ bool isTrue;//节点是否为有效 map<char, shared_ptr<Node>> next;};void add(shared_ptr<Node> root, string word, int cur = 0){ if(cur == word.size()) { ro
2020-08-08 00:07:42 333
原创 C++输入方法:cin.get() cin.getline() getline()
1.cin.get()(1)输入单个字符char a;a = cin.get();cin.get(a);(2)输入指定长度的char[]字符串,只能是char[],不能是stringchar a[10];cin.get(a,10);(3)输入到arrayname字符数组中,当到达长度size时结束或者遇到字符s时结束,仍然只能是char[],不能是stringchar a[1...
2019-04-06 11:20:16 224
原创 Linux内核设计与实现 第八章
下半部和推后执行的工作在第七章中我们讨论了中断处理程序的上半部,在操作系统响应中断时,存在着一些限制,比如中断处理可能打断其他一些重要代码,或者执行中断时需要屏蔽其他中断。这些限制决定上半部的执行过程需要越快越好。下半部在划分上半部和下半部的工作时,尽管没有严格的规则,但是往往我们可以借鉴一些提示:(1)对时间任务非常敏感的任务,放在中断处理程序中执行(2)和硬件相关的任务,放在中断处...
2019-03-26 15:04:56 182
原创 HDFS原理
HDFS原理HDFS全称Hadoop Distributed File System,是hadoop中的一个分布式文件系统,与传统的文件系统不同,HDFS主针对的是大数据情景下的文件存储。1 区别:普通文件系统:数据块/磁盘块*n = 文件系统块的大小 (512KB) (若n<1,则n=1)HDF...
2019-03-26 14:48:18 155
原创 epoll源码解析
epoll源码解析 struct epoll_filefd { struct file *file; int fd; } __packed; /* * Each file descriptor added to the eventpoll interface will * have an entry of thi...
2019-03-18 14:50:28 287
原创 Linux内核设计与实现 第七章
中断和中断处理一些简单基础的概念就不过多介绍了,着重说一些比较新的和重要的东西上半部与下半部我们对中断处理程序有两个要求:一是运行速度快,而是完成的任务量多。鉴于两者此消彼长的关系,我们将中断处理分为两部分上半部:接受一个中断,就立即执行,但只做有严格时限的工作,例如对中断进行应答或复位硬件,这些工作都是在所有中断被禁止的情况下完成的。在本章,我们主要讨论上半部的工作下半部:能...
2019-02-21 19:57:24 184
原创 Linux系统设计与实现 第六章
这章感觉没什么好说的,以后看见这些数据结构的API操作后能认出来是啥就行了呗。http://www.cnblogs.com/wang_yb/archive/2013/04/16/3023892.html
2019-02-18 22:40:10 186
原创 Linux内核设计与实现 第五章
系统调用作用:为用户空间提供一个管理接口;保证系统的安全;利于多任务和虚拟内存的实现。系统调用系统调用号:每个系统都有唯一的编号,即使该系统调用被删除此编号也不能回收利用,进程在进行系统调用时直接使用系统调用号而不是系统调用的名字。系统调用的性能:Linux中系统调用贼快:进程切换快,系统调用本身简洁。系统调用处理程序用户空间的程序无法直接执行内核代码,所以必须通知内核自己...
2019-02-18 14:46:56 216
原创 Linux内核设计与实现 第四章
Linux内核设计与实现 第四章多任务多任务系统可以划分为抢占式多任务和非抢占式多任务。进程在被抢占之前能够运行的时间叫时间片。Linux采用的就是抢占式多任务Linux的进程调度IO消耗型进程:频繁处于可运行状态但是只运行很短的时间。处理器消耗型:时间大多用在执行代码上,系统尽量降低其调度频率而延长运行时间。进程调度要在两个调度之间寻求平衡:响应时间短和最大系统利用率。优先...
2019-02-17 11:20:48 421
原创 Linux内核设计与实现 第三章
Linux内核设计与实现 第三章这一章介绍了Linux中进程的实现进程描述符Linux的进程信息放在一个叫进程描述符(task_struct)的结构中,各个进程描述符又组合成一个双向循环链表,即任务队列。这里的任务队列属于操作系统。对于每个进程来讲,在进程栈中还有另一个结构来描述本进程,这个结构往往就在栈顶或者栈底,叫threa...
2019-02-06 18:40:18 228 1
原创 C++中explicit关键字的用法
C++中的explicit可以阻止在构造函数时发生的隐式转换class A{ public : A(int num) : n(num) {} private: int n;};class B{ public : explicit B(int num) : n(num) {} private: int n;...
2018-10-30 16:35:45 122
原创 C++11对map容器的访问:下标访问、at()、find、lower_bound&upper_bound、equal_range
C++中对map容器的访问有好几种方式,最简单的就是直接通过下标访问,但是这种模式有一个缺点就是如果被访问元素不在map中,会插入此元素并初始化,下面详细介绍几种访问方式:1 下标访问:map<int ,int> m;m[1]=111;m[2]=222;m[3]=333;cout<<m[4];此时输出:0可见下标访问输出了一个本来没有的m[4...
2018-10-30 11:12:34 34508 1
原创 C++11中insert的返回值
在C++11中,关联容器都有insert()操作,其返回值是一个pair,pair的first返回指向元素的迭代器,second是一个bool,true表示原容器中没有要插入的元素并且插入成功,false与前者相反。 map<int,int> m; int a=0,b=1; auto ret=m.insert({1,1}); cout<<...
2018-10-29 20:32:02 3012
原创 C++11中emplace的最简单初步的理解
emplace是对容器添加元素时的操作,与之前的insert、push_back相比效率更高,简单的来说就是可以提升容器的插入效率。vector:emplace == insertemplace_back == push_backset:emplcace== insertmap:emplace== insert除以上三种外还有emplac...
2018-10-29 20:21:53 2566
原创 B:Butterfly
B:Butterfly总时间限制: 1000ms单个测试点时间限制: 100ms内存限制: 65536kB描述有一群旅行爱好者,有一天,他们带回了n只蝴蝶回来。他们相信每一只都属于两个不同种类中的一种,为了讨论方便,我们称它们为A与B。他们想把n只标本分成两组——一些属于A且一些属于B——但是直接标记任何一个标本对于他们是非常困难,因此他们决定采用下面的方法。对...
2018-10-29 12:54:00 446
原创 D:Radar Installation
D:Radar Installation总时间限制: 1000ms 内存限制: 65536kB描述Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locatin...
2018-10-29 12:30:53 225
原创 E:Agri-Net
E:Agri-Net总时间限制: 1000ms 内存限制: 65536kB描述Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet connectivity to all farms in the area. He needs ...
2018-10-29 09:56:27 155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人