自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 acm模板

持续补充。。。欧拉筛法/*求小于等于n的素数的个数*/#include<stdio.h>#include<string.h>using namespace std;int main(){ int n, cnt = 0; int prime[100001];//存素数 bool vis[100001];//保证不做素数的倍数 ...

2019-05-11 10:32:19 184 2

原创 保护模式下是如何访问内存的?

前文说到我们由实模式进入保护模式之前会对生成GDT并且设置GDTR,现在就是在保护模式下利用他们访问内存的时候了。文章目录当前的GDT和GDTR结构段选择子打印字符串当前的GDT和GDTR结构这是上篇中我们设置的GDT,它有四段,现在我们的目标是在屏幕上打印字符串,所以要操作的就是显存所在的段,第三段下标索引是2.段选择子8086下访问内存需要给CS,DS,ES,SS写入段地址,然后左移四位加上偏移地址直接访问物理内存。保护模式下,段寄存器扩展了两个FS和GS,改叫段选择器,我们向其中写入的.

2020-08-28 11:23:08 300

原创 GDT和GDTR

文章目录GDTR和GDTGDT和GDTR关系GDTR的结构GDT的结构如何在MBR中建立GDT和GDTR?GDTR和GDTGDT和GDTR关系       GDT是global descriptor table,全局描述符表,它是描述符组成的一张描述符表。描述符就是段描述符它用来描述一个段的信息,由8个字节组成(64bit),其中信息包括了段地址和偏移地址界限等,特权级等一些信息。  GDTR中的r是register,表示的是用来存储GDT位置的寄存器,叫做

2020-08-27 18:52:44 1643

原创 计算机是如何从磁盘读取数据的(一)?

磁盘的物理结构基本概念首先磁盘有几个个概念盘面(磁头),扇道(柱面),扇区。要理解他们的含义要结合磁盘的实际物理结构 :每个磁盘有若干盘面摞在一起,每个盘有两个面,我觉得类似蒸笼一样。每个盘面分别有一个磁头,由一个机械臂连接在主转马达上。一个盘面被分成一些同心圆,这些圆就构成了磁道,每个磁道又分成若干扇形这个称为扇区。读写的基本原理磁盘的两面涂有磁性材料,根据N,S可以来记录0,1两种状态。写入数据时,磁头电磁铁改变极性材料的磁性来写数据。读入数据时,磁头的读取器可以得到磁性材料的极性

2020-08-22 19:52:36 6909

原创 文本模式下计算机是如何显示字符的?

硬件基础显卡和显存  计算机屏幕上要显示字符,需要的硬件支撑包括显卡和显存。显卡:和计算机的CPU有点类似叫GPU(Graphics Processing Unit),负责对图像的信息处理。显存:处理存储过程中的完成的信息和未完成的信息等等。顺便一提,显卡分为集成显卡和独立显卡,前者集成在主板上,使用主存。后者独立,使用显存性能强于集显。显示的原理  显卡控制显示器的最小单位是像素,用1个bit来对应一个像素,因为只有黑白两种颜色,分别对应像素的亮和不亮,所以可以用0,1两种状态来表示。显卡只要根

2020-08-16 15:07:35 1037

原创 TCP四次挥手

一、TCP断开连接的过程下面…以客户端主动发起断开请求为例:1.第一次挥手   客户端发送FIN报文,表明客户端将不在发送数据。   具体过程:把FIN标志位改为1,序号seq=u(之前发送的数据加1,这里规定即使不携带数据序号也要+1。   该过程中客户端通过close从ESTABLISHED状态进入FIN_WAIT_1。2.第二次挥手   服务端收到客户端发来的连接释放报文(F...

2019-11-30 19:37:18 216 3

原创 TCP三次握手

TCP三次握手是为了确保两端套接字可以正常通信即两端的收发能力都是正常的,在正式传输数据前进行试探的一种方式,就好比两个人对话,因为不能确定对方是否领会了你的意思,需要频频询问"听懂了吗?",对方频频应答"嗯嗯"。一、TCP建立连接的过程0.准备服务端套接字从主动套接字(CLOSED)变为被动打开(LISTEN)。服务端通过调用socket,bind和listen来达到一个准备好接受...

2019-11-29 16:56:26 223 2

原创 socket、bind、listen

一、int socket(int family,int type,int protocol);1.功能:该函数用于指明通信协议类型并且创建一个套接字。2.参数释义:第一个参数family是指协议族,相当于指定OSI7层模型中的网络层(INv4/IPv6),第二个参数type表示指明套接字类型(字节流套接字/数据包套接字),第三个参数表示的是传输协议(TCP/UDP/SCTp),相当于OSI...

2019-11-28 18:47:13 603

原创 初探OSI七层模型

OSI模型主要用来解释数据是如何从一台计算机发送到另一台计算机上的,该模型将通信协议必要的功能分成了7层,同一层之间遵守的约定我们称其为协议,上下层之间的约定我们称其为接口。一、应用层1.应用层  以发送一封邮件来举例子的,比如A要发送一封邮件给B。邮件内容是:“早上好”,收件人是:B,那么就要就在发送的数据首部写如收件人信息和信息内容。从A按下发送的瞬间开始,这个通信就进入了应用层,...

2019-11-24 16:30:45 150 1

原创 利用哈夫曼编码实现压缩文件

实现功能1.压缩文本文件 xzip 源文件名字 压缩后文件名字2.解压文本文件 xuzip 压缩文件名字 解压后文件名字3.压缩比大约18%左右(与文件内容有关系)4.做成了类似Linux命令的样子放在了/bin目录下...

2019-11-21 20:58:31 1469

原创 float的存储和运算

float的存储float的存储遵循IEEE标准,一个float4字节32位,被分成三个部分:s(1位)表示符号位,0表示正数,1表示负数;M(8位)表示指数位即小数点移动的位数,这里引入了一个余码系统后面会分析;E(23位)表示尾数部分,转成二进制表示1.X;余码系统在开始了解存储之前我们有必要了解一下余码系统,我们以四位来举例说明,四位能表示的有符号整数的范围是[1111,011...

2019-11-17 22:20:42 1600

原创 简单的时间获取CS

sockaddr和sockaddr_in结构体struct sockaddr{unsigned short sa_family;/*addressfamily,AF_xxx*/char sa_data[14];/*14bytesofprotocoladdress*/};family地址家族,套接字编程中是AF_INET,代表TCP/IP协议。sata代表协议地址(IP地址)。这也...

2019-11-16 20:12:57 196 1

原创 Qt实现计算器(支持负数和小数)

计算器主要利用了栈这种数据结构,需要用的知识有逆波兰表达式,就是所谓的中缀表达式转后缀表达式。一、什么是中缀和后缀表达式?中缀表达式:9+(3-1)*3+10/2,这就是一个中缀表达式,顾名思义就是符号在中间的表达式,这是符合我们平时书写规范的表达式。但是对于计算机计算这种表达式就有点困难了,因为中间涉及括号和运算符号的优先级问题,因为如果计算机从左向右扫一遍的话不知道先计算哪些值,哪个和...

2019-10-08 20:40:49 2992 5

原创 DAG拓扑排序-Kahn算法

拓扑排序就是对一个有向无环图进行排序,使其变成一个线性关系,并且保证其前后的位置关系不改,简言之,就是把一个偏序变成一个全序(线性序)。拓扑排序有两种算法,一种是借助DFS排序,另一种是卡恩算法,这里采用的是卡恩算法。算法思想很简单就是,就是不断删除入度为零的节点,因为入度为零就说明该节点没有前去节点,所以可以加如我们最后所要求的序列中,而那些有前驱的节点,就要受限制,就不能加入我们的最后...

2019-09-28 20:09:18 604 2

原创 匿名对象和拷贝构造函数

拷贝构造函数用于用一个对象初始化另一个对象的时候,本质上它也是一个构造函数,写法也和构造函数一样不同的是它用于用对象初始化。这里讨论拷贝构造函数,注意和下文中两个参数的构造函数的区别。对象初始化和赋值观察如下两个语句(Test是一个类): ① Test t = Test(1,4); ②Test t1 = t;两句话都是=操作符,但是含义有所不同:①中表示初始化一个匿名对象,只会调用...

2019-09-16 16:34:55 2032 2

原创 makefile入门

这篇博客将从最简单的makefile讲起,通过不断升级,最后成为项目中常用的makefile文件。文章目录入门效果预览语法浅析进阶再进阶终极版本题外话入门效果预览1.一个最简单的输出"Hello world"的hello.c文件,内容如下:#include <stdio.h>int main(){ printf("Hello world\n"); r...

2019-08-27 23:53:37 231

原创 Mysql增删改查

sql和c语言API实现创建数据库,创建表等操作参考这两篇博客:mysql数据库的简单用法C语言操作MYSQL数据库1.增删改查在开始之前说一下,mysql_query()的返回值,成功为0,异常为非0,需要注意。1.增加一条数据 char str[1024]; sprintf(str,"INSERT INTO student (name,money) VALUES(...

2019-08-06 11:48:58 138 1

原创 多线程虚假唤醒

在线程池中线程基于条件变量阻塞的时候有这样一个操作 //无任务状态和不销毁时,线程阻塞等待 while(pool->cur_queue_size == 0 && pool->shutdown != 1) { /* printf("线程[0x%lx]正在等待\n",pthread_self()); *...

2019-08-01 22:11:25 290

原创 线程池

线程池是什么?所谓线程池就是一个池子,池子里面充满线程,这些线程处于阻塞状态,当有任务需要创建线程执行的时候,会唤醒线程池中的一个线程,被唤醒的线程执行当这个任务,执行完后,又回到线程池阻塞,等待下次唤醒。等待执行的任务会形成任务队列,任务多于线程的时候(就是说线程不够用的时候),按照一定的次序出队,再交由线程执行。为什么需要线程池?试想这样一个情景,单个任务处理事件很短,但是请求数目很大很...

2019-07-31 15:48:31 207

原创 为什么有了互斥锁还要条件变量?

互斥锁和条件变量所解决的问题不同,应用的场景不同,就好比有了火车为什么还要有飞机,二者面向的问题不同。互斥锁主要用来共享资源上而条件变量主要用来在满足条件时通知线程互斥锁线程中有的资源是共享的,那么如果两个线程同时对一个变量做修改就会有一个先后问题,如果访问顺序处理不当,程序的逻辑可能就会受影响,比如下面这个程序,两个线程同时修改number的值,那么number最后的值是多少?可...

2019-07-26 16:10:05 544 1

原创 浅析upper_bound和lower_bound

二分查找又称为折半查找,就是通多对有序数列不断二分,将复杂度降至O(logn),二分查找尽管可以用递归实现,但是一般把二分写成非递归的。问题引入有一个有序数组,要求针对的某个元素v,如果它存在于数组中,返回他的第一次出现的位置,如果不存在,返回一个下标i,在此处插入v,其他元素后移,数组仍然有序,说白点就是找到第一个>=v的元素的下标比如 数组a[10] = {1,2,2,2,4,...

2019-07-25 10:58:22 184

原创 手写chmod

在写chmod之前先补上了之前的一个遗漏知识点,“主函数的参数”,主函数是可以有参数的,之前也知道但是没有去了解过。主函数的参数main(int argc,char **argv)  主函数的参数大体来说有两个,也有三个的算是扩展的的吧,第一个是参数的个数(arguments counter)表示的是参数的个数比如./chmod 745 repeat.c argc就是3,分别是./chm...

2019-06-20 12:16:44 150

原创 课设前期准备

由于快要进行课程设计,我对那本厚书看着也不是很懂,所以决定笨鸟先飞,这段时间暂时放一下算法,准备一下课设的前期工作,顺便复习一下期末考试。多文件存储多文件存储顾名思义就是讲数据放在多个文件中,方便维护,但是这必然就要跨文件检索,所以其中又引入了一个主键,来辨别各个数据文件的唯一身份,以依靠这个将数据建立起联系,下面以学生管理系统为例:  学生管理系统涉及三个文件,学生文件,课程文件,成...

2019-06-08 19:38:07 355 2

原创 矩阵快速幂

思想与整数快速幂类似,这里有一篇博客写的很详细,这里就不再重复整理了。模板#include <stdio.h>#include <cstring.>typedef struct Matrix{ int m[3][3];}Matrix;Matrix multiple(Matrix a,Matrix b,int n){ Matrix res; ...

2019-06-01 18:20:54 149

原创 北京蓝桥杯决赛心得

我们一行人远赴北京,去中国农大参加了蓝桥杯的决赛,最后得了个国三,比想像的差一点,后来和别人交流一下,感觉也是情理之中,在这里总结一下这次比赛。杂谈我们是提前一天坐火车到北京的,历时13小时有余,路上坐的硬卧还可以,还是比较舒服的,总是不能和在学校的床比的。到了北京时间也比较宽裕,大家一起去玩了半天多,一路上大家也熟悉了很多,这里说一下在颐和园自己开的电动船还是很好玩的。比赛那天我是下午...

2019-05-30 11:38:33 589

原创 Color the ball HDU - 1556(BIT)

Color the ball HDU - 1556N个气球排成一排,从左到右依次编号为1,2,3…N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?Input每个测试实例第一行为一个整数N,(N <= 10...

2019-05-29 10:26:40 186

原创 BIT模板题

Stars HDU - 1541Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that ar...

2019-05-28 20:40:20 130

原创 Binary Indexd Tree(树状数组)

与前缀和类似,树状数组最基础的应用也是求前缀和,不过它可与动态维护一个前缀和,就是说当元素改变时,它的前缀和也会相应的改变。BIT的应用:区间和区间加/单点查询二维动态树状数组关于BIT的一些前期基础知识可以参考这篇博客。这里贴一个板子:求i二进制最低位的权重int lowbit(int i){return i&(-i);}维护前缀和数组void add(...

2019-05-28 20:30:25 330

原创 Linux兴趣小组面试题总结(2015+2017+2018)

原码、反码、补码4. 解释该函数的输出结果:void func(void){unsigned int a = 6 ;int b = -20 ;(a+b>6) ? puts(“>6”) : puts(“<6”);}这道题主要考察计算机中数据是怎么存储的,以及加减法在计算机内是怎么实现的?运行结果是 >6,思考为什么会这样子?那我们再看如果输出a+b的结果又...

2019-05-20 16:16:49 244

原创 LIS算法

经典LIS算法:导弹拦截某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。Input输入有两行,...

2019-05-17 11:16:05 2026 1

原创 背包_完全+二维

完全+二维最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,xhd就不会玩这游戏。xhd还说了他最多只杀s只怪。请问他能升掉这最后一...

2019-05-17 10:47:57 267

原创 c语言_结构体

结构体C语言结构体从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的,结构体就是一种复合型的自定义数据类型。例如,在校学生有姓名、年龄、身高、成绩等属性,这时我们就可以定义一个学生结构体类型。结构体定义结构体的定义形式为:struct 结构体名{结构体所包含的变量或数组};下面我将据一个例子:struct st...

2019-05-13 21:59:43 144

转载 扩展欧几里得_extended Euclidean algorithm

扩展欧几里得就是已知a, b求解一组x,y,使它们满足等式: ax+by = gcd(a, b) =c,它的解是一定存在的,只要c是gcd的倍数。在说扩展欧几里得算法之前需要知道朴素欧几里得算法,即gcd(a,b) = gcd(b,a%b),(最大公约数Greatest Common Divisor),证明也很简单,我采用的是反证法,这里不再赘述。突然发现一篇博客写的非常非常好,这里直接...

2019-05-11 17:45:27 584

原创 STL_sort

Standard Template Library常见的排序算法有冒泡,插排,选择等等这些时间复杂度为O(n^2),并不是很高效,之后有了希尔,归并,快速排序等时间复杂度为O(n*logn)的高效排序算法,但是高效是高效,很多场合都需要用到排序,每次都手写很是麻烦,而STL中也是封装了排序算法,我们来了解一下sort()排序函数。sort既可以对()进行排序,也可以对自定义类型进行排序,既...

2019-05-11 10:19:09 88

原创 欧拉筛法

#欧拉筛法判断一个数是不是素数,最朴素的就是o(n^2)的暴力法,改进一下可以优化筛选到sqrt(n),但是复杂度还是太高,所以有了埃氏筛法,但是有的数还是会被筛选两次,比如说像6 = 2*3就会被2和3重复筛去,欧拉筛法就更加优化,不会重复筛,所以效率也就更高了。模板/*求小于等于n的素数的个数*/#include<stdio.h>#include<string....

2019-05-07 20:37:05 141

原创 C语言_函数

基础篇函数定义:既可以定义含参数的函数,也可以定义不含参数的函数,下面以一段含参数的函数定义为例子int add(int a,int b) // 返回值类型 函数名(形式参数){return a+b; //功能是返回a和b的和}//{}内是函数主体返回值既可以是常规数据类型,int,float也可以是结构体,如果不需要返回值,可以写作void fun...

2019-04-29 14:07:47 139

原创 并查集入门

A - Rumor题目描述Vova 对自己发誓,绝不再玩电脑游戏…… 但最近,知名的游戏开发商暴火娱乐有限公司,发布了他们的最新游戏 “World of Farcraft”,并且该游戏变得非常流行。显然,Vova 又开始玩这款游戏。现在,他尝试解决一个任务。这项任务是,来到一个名叫 Overcity 的定居点,并在里面散播谣言。Vova 知道,在 Overcity 有 n 个人物角色。某些...

2019-04-28 18:39:03 121

转载 并查集_转载

一、问题引入原题:杭电hdu1232畅通工程 题意:首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质就是求有几个连通分支。如果是1个连通分支,说明整幅图...

2019-04-28 14:40:53 110

原创 STL_summary

Standard Template Library容器入出头尾大小清空是否为空交换stacks.push()s.pop()s.top()\s.size()\s.empty()queueq.push()q.pop()q.front()q.back()q.size()\q.empty()vectorv.push_back...

2019-04-27 12:06:27 110

原创 STL-queue

Standard Template Library这一篇中我们学习,队列这种结构,即queue。1.头文件#include <queue .>using namespace std;2.定义queue q;3.关于queue的一些基本操作和函数入队q.push()出队q.pop()获取队首元素q.front()获取队尾元素q.back()获取队...

2019-04-23 15:58:37 98

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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