自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

litter_driver777的博客

Talk is cheap. Show me the code

  • 博客(49)
  • 收藏
  • 关注

原创 在Linux下基于tcp协议实现一个简单的通信

1.server端#include#include#include#include#include#include#include#include#include#includestatic void usage(const char* proc){ printf("usage: %s [ip] [port]\n",proc);}void* thread_run

2016-07-26 21:24:17 593

原创 进程通信总结篇

进程通信 :每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进 程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间 拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信 (IPC,InterProcess Com)。一.结构图 这张图片也是从别人的博客中down下来的,本人认为对学习这部分知识

2016-07-14 22:39:54 378

原创 进程通信--信号量

信号量的本质是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。 一.必备知识  1.同步与互斥:同步:指通过机制实现访问者对资源的有序访问。互斥:多进程的环境下,某进程进入临界区,其他进程不能进入,独占性。  2.临界区与临界资源临界资源:

2016-07-14 21:05:03 340

原创 进程通信--消息队列

一.消息队列消息队列是提供一种从一个进程想另一个进程发送数据块的方法。用这种方法解决命名管道的同步和阻塞问题。不同于管道的是,消息队列是基于消息的,而管道是基于字节流的,并且消息队列的对去不一定是先入先出。同样,消息队列也存在消息的最大 长度(MSGMAX),每个消息队列总的字节数也是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI)。测试机器的三个上限值:

2016-07-04 01:30:22 460

原创 进程通信--命名管道(FIFO)

一.命名管道(FIFO)    FIFO不同于管道之处在于它提供一 个路径名与之关联,以FIFO的文件形式存储于文件系统中。命名管道是一个设备文件,因 此,即使进程与创建FIFO的进程不存在亲缘关系,只要可以访问该路径,就能够通过FIFO 相互通信。值得注意的是,FIFO(first input first output)总是按照先进先出的原则工作,第一 个被写入的数据将首先从管道中读出。 二

2016-07-02 10:36:20 385

原创 进程通信--无名管道

一.进程间通信:基于每一个进程都有自己的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到。所以为了解决这种问题,引入进程间的相互通信,进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区进程A把数据从用户空间拷到内核缓冲区,再由进程B从内核缓冲区中读取数据,由内核提供的这种机制称为进程间的通信---IPC(InterProcess Communication)。下图为简单的示意图。

2016-07-02 00:55:22 457

原创 UnionSet--并查集

一.定义            并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 二.应用若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲

2016-06-24 20:32:15 447

原创 二叉树面试题1

二叉树面试题1一.由前序遍历和中序遍历重建二叉树(前序序列:1 2 3 4 5 6 - 中序序列:3 2 4 1 6 5)。  问题分析:   这个问题给的条件为二叉树的前序遍历和中序遍历,可以理解为给了两个有一定关系的数组,让创建一颗二叉树。当然,这个关系需要我们去分析。 1.给出一个简单的例子,分析可行性a.思想:前序遍历的第一个元素为二叉树的根节点,此例子为1.在

2016-06-14 23:53:27 474

原创 浅谈进程2--进程优先级,进程的创建执行

上一篇博客也在记录进程的一些知识,这一篇博客是在哪个基础上继续谈谈进程。一.进程优先级  进程cpu资源的分配就是指进程的优先权。优先权高的进程有优先执行的权利。  那么加入NI值之后,PRI的值变成 PRI(new) = PRI(old) + nice;          那么当nice值为负值的时候,进程的PRI将变小,进程的优先级将变大,进程相对于原来的PRI值会更早

2016-06-13 23:44:42 528 1

原创 浅谈进程

一.进程概念   1.OS角度:程序的一个执行实例,正在执行的程序。能分配处理器并由处理器执行的实体。   2.内核观点:分配系统资源(CPU时间,内存)的实体。           进程的两个基本元素:           1.程序代码(可能被执行相同程序的其他进程共享)。    2.代码相关的数据集。            进程是一种动态描述,但是并不代表所有的进程都在

2016-06-11 22:34:44 302

原创 RBTree

RBTree--红黑树一.规则   1.每一个结点不是红色就是黑色。2.根结点是黑色。3.如果一个节点是红色,那它的两个子结点是黑色。(parent结点不能和child节点颜色同为红色)4对每个节点来说,从该节点到其所有后代的叶子结点的简单路径上,均包含相同数目的黑色结点。     二.RNTreeNodeenum color{ RED, BLACK,};t

2016-06-11 19:05:18 348

原创 操作系统中常见的调度算法

一.先来先服务调度算法  先来先服务的调度算法(FCFS)是一种最简单的调度算法,该算法既可以用于作业调度,也可以用于进程调度。当在作业调度中采用该算法时,每次都是从后备作业队列选择一个或多个最先进入该队列的作业,将他们调入内存,为他们分配内存,为他们分配资源,创建进程,然后放入就绪队列中。在进程中采用FCFS算法时,则每次调度室从就绪队列中选择一个最先进入该队列的进程,位置分配处理机,使之投入运

2016-06-11 14:08:13 607

原创 博客搬家

搬家到csdn!!!!!!!本文出自 “做一个小小小司机” 博客,请务必保留此出处http://10799170.blog.51cto.com/10789170/1787650

2016-06-11 14:08:08 215

原创 AVLTree

一.AVLTree的性质    1.左子树和右子树的高度差不超过1    2.左右子树都是AVL树    3.每一个节点都有一个平衡因子,任一点的平衡银子为(-1,0,1)  二.AVL树的效率    log2n  三.AVLTreeNodetemplatestruct AVLTreeNode{ AVLTreeNode* _parent; AVLTreeNode* _left; AVLT

2016-06-11 14:08:04 313

原创 BinarySerachTree

一.二叉搜索树的性质   1.每一个节点都有一个key作为搜索依据,每一个节点的key都不同。   2.左子树的key值比根节点小。   3.右子树的key值比根节点的大。   4.左右子树都是二叉搜索树。  二.结构   1.节点(BinarySerachTreeNode)templatestruct SearchBinTreeNode{ SearchBinTreeNode* _left;

2016-06-11 14:07:59 245

原创 BinaryTree

二叉树是一个比较重要的数据结构,这篇文章将基于linux下实现BinaryTree 一.进入工作目录,我自己在工作目录下建了一个DataStruct的目录。 $touch BinaryTree.cpp 的文件 $vim BinaryTree.cpp 650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/80/EC/wKiom1dEgav

2016-06-11 14:07:56 233

原创 配置vim

vim可以说是一款很强大的编辑软件,其强大在于vim插件和vim配置文件,可以按照用户的习惯改造vim 一.我的vim效果图650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/80/88/wKiom1dDzDDjuD6JAABQputQ0Fg519.png" title="vim效果图1.png" alt="wKiom1dDzDDju

2016-06-11 14:07:52 285

原创 插入排序,希尔排序,堆排序

本文将介绍三种排序算法--插入排序,希尔排序,堆排序。本文所有例子都是使用升序  一.插入排序   算法思想    维护一个有序数组,将要插入的数据与有序数组自最后一个元素直到合适位置的数一一比较。eg: 有序数组:1,3,5,6,7   现在待插入数据为2,那么他将会和7,6,5,3,依次作比较,当带插入数据小于有序数组最后的元素大小,则将该元素后移,直到待插入元素找到合适位置为止。   代码实

2016-06-11 14:07:48 199

原创 Test

Test本文出自 “做一个小小小司机” 博客,请务必保留此出处http://10799170.blog.51cto.com/10789170/1782076

2016-06-11 14:07:43 157

原创 基于linux平台的find命令

一.linux查找指令有,which,whereis,locate,find,其中比较重要的是find命令。   a.which:寻找执行档   b.whereis:寻找特定档案   c.locate   d.find 二.find命令的格式:find [PATH] [option] [action]  参数与选项  1).与时间有关系的选项,-mtime,-ctime,-atime.    -m

2016-06-11 14:07:40 238

原创 linux文件的三种时间

我个人的linux系统使用的是ubuntu  一.linux的文件时间分为三种:   1).文件最近内容修改时间--mtime   2).文件最近权限和属性修改时间--ctime   3).文件最近被访问时间--atime  二.   打开vm,运行linux系统,在工作目录底使用touch命令创建一个文件,如图:650) this.width=650;" src="http://s1.51cto

2016-06-11 14:07:35 259

原创 网络体系结构与网络协议

1.计算机网络体系结构   我们将计算机网络的各层以及其协议的结合,称之为网络的体系结构。  2.OSI开放系统互联参考模型    650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/80/12/wKiom1c15YTT0FaGAABMUKf1h9M839.png" title="9CY%5KYOW76%45Q`P@P5)U7.png

2016-06-11 14:07:31 704

原创 HashTable

HashTable-散列表/哈希表,是根据关键字(key)而直接访问在内存存储位置的数据结构。它通过一个关键值的函数将所需的数据映射到表中的位置来访问数据,这个映射函数叫做散列函数,存放记录的数组叫做散列表。   构造哈希表的方法:     1.直接定址法--取关键字的某个线性函数为散列地址,Hash(Key)= Key 或 Hash(Key)= A*Key + B,A、B为常数。     2.除

2016-06-11 14:07:26 156

原创 大数运算

本人在在写这个小项目的时候,首先考虑到数的存储问题。计算机能够表示的最大值为0x7FFFFFFFFFFFFFFF,最小值为0x8000000000000000,那么要运算比这个大的数字该怎么办呢?是否可以使用字符串来保存比计算机能够表示的最大的数呢?怎么初始化大数呢?字符串的加减乘除该怎么实现呢?成员变量需要怎么定义呢?   1.是否可以使用字符串来保存比计算机能够表示的最大的数呢?    学过c

2016-06-11 14:07:22 250

原创 广义表

广义表作为数据结构的一种,是区别于顺序表的一种数据结构,思想需要使用递归来实现。   实现广义表的节点(generaaLizedNode)enum Type{ HEAD, VALUE, SUB,};struct generaalizedNode{ generaalizedNode(Type type = HEAD, char value = 0)       :_Type(t

2016-06-11 14:07:15 353

原创 两个队列实现一个栈

两个队列实现一个栈       思路:模拟栈中定义两个队列q1,q2。    push:模拟栈push数据,在q1中push,调用队列q1的push方法    pop:模拟栈pop数据,将q1的数据留出队尾的数据,其余的push到q2中,pop掉q1中剩下的最后一个元素。之后将q2的数据在push到q1中。(需要pop多个数据,需要写循环).650) this.width=650;" src="h

2016-06-11 14:07:10 186

原创 两个栈实现一个队列

利用栈的特性,实现队列    1.栈-后进先出,队列-先进先出,使用两个栈,栈1作用为push数据用,栈2作为pop数据用。    2.原理分析:      1).push数据-当模拟实现的queue push数据往栈1中push。      2).pop数据-判断栈2是否为空,如果栈2为空,则首先将栈1的数据压入到栈2中(依次取栈顶元素push到栈2中),然后pop栈2的栈顶元素。如果,栈2有元

2016-06-11 14:07:07 169

原创 xshell为什么连接不上ubuntu---ould not connect to 'ip' (port 22): Connection failed.

换了电脑之后,很多环境都要重新搭建,今天我就碰到我的xshell连接不是上ubuntu的问题,分享给大家。    我用VM打开我的ubuntu之后,想用xshell连接,在windows环境下操作,毕竟这样比较方便,但是,当我使用xshell连接的时候总是发现会连接失败,如下图:650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/7E

2016-06-11 14:07:03 536

原创 栈面试题

问题描述,实现一个栈,要求push,pop,min(返回最小值的操作)的时间复杂度为O(1)。          思路1:模拟实现一个栈,在成员变量中一个int类型的变量,用来保存最小值,每当push一个数据,都将push的数据与变量中保存的数据进行对比,如果,push数据小于保存的值,那么就将最小值更新为push进来的数据,反之,则不用替换。假想push(2,3,4,1),那么最后保存的最小值是

2016-06-11 14:06:59 649

原创 基础c++体系结构图解

学习c++也有一段时间了,一直想要做一个类似知识体系的东西便于学习c++这门语言。    首先,分享一下我自己用思维导图(MindManager)画的简单的c++的体系,当然不会涉及知识的详谈只是一个框架之类的东西。650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/7E/72/wKiom1b_0kXR-88DAADVy3s0Xk04

2016-06-11 14:06:55 2627

原创 顺序表和链表的模板

c++引入模板是为了更好的代码复用,模板这边分为两个大块.       1.模板函数       2.模板类    我们今天来介绍模板类的应用—顺序表和链表(单链表为例)        //模板的顺序表        template    class SeqList    {    public:     SeqList()     :_array(NULL)     , _

2016-06-11 14:06:51 174

原创 使用c语言编写程序:不允许创建第三方变量

深入理解异或运算实例    一.代码实现        #include        int main()    {     int a = 10;     int b = 12;     a = a^b;     b = a^b;     a = a^b;     printf("%d %d",a,b);     system("pause");     return 

2016-06-11 14:06:47 222

原创 浅谈顺序表与链表

顺序表和链表是基本的数据结构,也是最简单但又很重要的数据结构。    一.顺序表    1.直接给数组大小的情况    typedef int DataType;        typedef struct SeqList    {     Datatype array[MAXSIZE];     size_t size;    }SeqList    2.需要扩容的        t

2016-06-11 14:06:38 225

原创 顺序链表

学习链表是为了更好的学习c++;顺序链表又是最简单的链表。顺序链表在实现的时候有些需要注意的事情。    实现顺序链表初始化,尾部插入,尾部删除,头部插入,头部删除,选择位置插入,查找,删除某个位置上的数,删除一个。    一.首先让我们将定义一个结构体    typedef struct SeqList    {     DataType array[MAX_SIZE];     size

2016-06-11 14:06:27 246

原创 浅谈c语言的知识体系

学习完c语言一直想写一个知识体系的东西,总感觉自己能力不够。终于鼓起勇气,来和大家聊聊我学习c语言的感悟。当然,要在这几千字中将c语言的所有知识点都遍历一遍是不现实的,本人也不具备这样的能力。我会在下面写到我学习c语言的时候感觉重要的东西。     一.选择结构程序设计以及循环结构设计    1.if语句的使用    1).bool变量与“零值”比较    bool i = FALSE;    那

2016-06-11 14:06:22 2652

原创 冒泡排序既可以排字符串也可以排字符串

编写一个冒泡排序,既可以编写字符串也可以编写数字。    1).需要实现一个函数指针,在排序的时候将函数的入口地址传进来。        void sort(void *base, int len, int width, int(*cmp)(const void*, const void*))    {        assert(base);     int i = 0;     in

2016-06-11 14:06:13 275

原创 输入数字n,按顺序打印出从1到最大的n位十进制数

输入数字n,按顺序打印出从1到最大的n位十进制数,热锅按照先找到最大的数,然后循环输出,当n很小的时候,程序是不会有什么问题的。当n很大的时候这种情况就是在按照这种思路来实现就会出现问题,那么就需要找出一种大数相加的办法。    一.首先实现上面思路                #include        void find_maxnum(int n)    {        if

2016-06-11 14:06:03 2405

原创 结构体中的内存对齐

结构体中的内存对齐是用空间换时间的一种内存操作。    一.结构体对齐的规则     1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。     2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身

2016-06-11 14:05:59 300

原创 用结构体实现一个电话本

结构体是c语言又一个存储数据的类型,那么用结构体怎么实现一个简单的可以存储1000个人信息的电话本呢?    一.首先需要定义一个结构体,包含一个人的信息(比如姓名,性别,年龄,电话,住址等等)。我们先来定义一个结构体。    typedef struct Pdhb-info    {      char name[5];      char sex[3];      int age; 

2016-06-11 14:05:54 469

原创 理解数组与指针不可缺少的东西

作为c语言的特色,也可以说是精华,指针实质名归!另一大组成部分--数组,总是和指针糅合在一起操作内存,不得不提的是c语言的难点就是内存管理,而与内存关系最为密切就是数组和指针,导致初学者学习起来很困难,并且在产生错误的时候很难发现错误并改正,需要耐心的调试和查看变量的值。基于这一点,以下就是本人在学习数组和指针的时候一些经验,分享给大家。    一.首先看我在学习这一阶段画的一幅图650) thi

2016-06-11 14:05:49 236

空空如也

空空如也

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

TA关注的人

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