自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 模拟实现memcopy()/memmove()

memcpy()和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下:void *memcpy(void *dst, const void *src, size_t count);void *memmove(void *dst, const void *src, size_t count); 他们的作用是一样的,唯一的区

2017-08-08 15:51:34 295

原创 Linux下epoll的学习总结

1、基本知识  epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epoll接口  epoll操作过程需要三个接口,分别如下:

2017-08-06 12:05:48 263

转载 Linux的Socket编程

1. 网络中进程之间如何通信进程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal)UNIX system V有:消息(message)、共享存储区(shared memory)和信号量(sem

2017-08-06 11:56:22 241

原创 C++实现单例类

在某些应用环境下,一个类只允许拥有一个实例,这就是单例模式。单例模式分为懒汉模式和饿汉模式。单例模式在实现时构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例。单例模式的饿汉和懒汉模式的特点是:饿汉模式可用于访问量较大,访问的线程较多时的情景

2017-07-29 13:29:01 1863

原创 求两个节点的最近公共祖先节点

解法分三种情况:1.节点有parent,即是三叉链。若是每个节点都有指向父节点的指针,则问题可以变形成求链表相交节点问题。这时就可以让路径长的节点先走几步,接着同时走,判断两个节点是否相等。int GetLength(Node *node) { if (node == NULL) return 0; int len = 0; while (node) {

2017-07-28 22:14:53 692

原创 Linux线程学习总结

线程线程的概念:线程被称为轻量级进程(LWP),是程序执行流的最小单元,一个标准的线程由线程ID,当前指令指针,寄存器集合和指令指针组成。线程是进程中的一个实体,是被系统调度和分配的基本单位,线程自己除了拥有运行的必要资源外不拥有系统资源,但是它可以与同属一个进程的其他线程共享进程的所有资源。线程有就、阻塞、运行三种状态。线程与进程的区别:1.进程至少有一个线程;它们共享进程的地址空间

2017-06-30 17:26:11 233

原创 数据传输中CRC校验码的实现

CRC校验码,即循环冗余校验(Cyclic Redundancy Check),目前最为常见的一种差错校验码,CRC的信息字段和校验字的长度可以任意选定,在数据传输过程中,为了确保数据的正确性,必须使用一种数据检错方法,CRC便是最常用的一种。CRC的原理是若在发送端发送数据,假设数据位数为K位,我们可以根据这K位的二进制码序列,以一定规则产生一个校验用的r位监督码(CRC),与原始信息一起组

2017-06-30 15:21:20 2993 1

原创 Linux下守护进程的探究

守护进程  在Linux下,守护进程也叫精灵进程,是运行在后台的一种特殊进程。它独立于控制终端并且周期的执行某种任务或等待处理某些发生的事件,守护进程是一种很有用的进程。Linux 的大多数服务器就是用守护进程实现的,比如Internet服务器inetd,Web服务器httpd等。同时,守护进程完成很多系统任务,比如作业进程规划进程crond等。如何创建守护进程?1.调用uma

2017-06-28 16:36:18 202

原创 实现二元信号量对屏幕保护

信号量是进程用于传递信号的的整数值,对信号量的操作只能是原子操作,信号量的增减可以影响进程的阻塞与否。理论上说,信号量是一个计数器,可以描述临界资源当中的资源数目。我们所说的二元信号量指的是计数量非0即1的计数量。接下来我们可以实现一个父子进程成对输出AABB,从而实现对屏幕的保护作用。int main(){ pid_t id=fork(); if(id==0)

2017-06-27 17:08:21 279

原创 Linux管道通信方式

进程间通信(IPC:Inner Proceeding Communication)进程是操作系统实现程序独占系统运行的假象的方法,每个进程都是一个独立的资源管理单元,任何一个进程的全局变量在另一个进程中都是无法看到的,因此各个进程之间是不能够直接的访问对方进程的资源的,不同的进程之间进行信息交互需要通过内核,进程A在内核中开辟一个缓冲区,并且把数据拷贝到此缓冲区中,进程B通过访问内核中的这

2017-06-21 20:59:56 426

原创 C++数据结构之AVL树

AVL树是最先发明的自平衡二叉查找树。AVL树得名于它的发明者 G.M. Adelson-Velsky 和 E.M. Landis,他们在 1962 年的论文 "An algorithm for the organization of information" 中发表了它。 在AVL树中,查找、删除和插入在最坏情况下的时间复杂度都是O(logn),增加、删除等操作可能需要对树进行一次或者多次旋

2017-04-26 18:47:57 288

原创 二叉树的简单实现

本篇博文主要关注C++数据结构二叉树的简单实现,主要实现二叉树类的构建,包括二叉树的构造、拷贝构造、析构函数、赋值运算符的重载、前序中序后序层序遍历二叉树、查找指定节点、查找节点的总个数等功能函数,主要依靠递归算法完成。 树的结点类型主要是根结点,指向右孩子的指针和指向左孩子的指针。下面是结点的构造函数: struct BinaryTreeNode{ BinaryTreeNode*

2017-04-08 14:11:52 283

原创 Linux的vim配置

Linux中初始的vim都需要配置,我们可以依照自己的使用习惯将vim进行重新配置,通常在/etc/目录中都有一个vimrc文件,这是系统对于Linux中所有用户的公共vim配置文件。我们可以在每个用户的目录下面创建.vimrc文件来对vim进行配置。例如/root下就存在一个.vimrc文件。然后打开.vimrc文件输入代码:set tabstop=4 设定tab值为4 set soft

2017-04-06 10:34:34 374

原创 Linux中粘滞位

粘滞位(Stickybit),又称粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,也只能针对目录设置,对于目录内文件有效。则设置了粘滞位后,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般于/tmp目录,以防止普通用户删除或移动其他用户的文件。 在L

2017-03-30 18:37:12 251

原创 Linux中的文件权限

在Linux中,所有的用户被分成不同的用户组,拥有不同的权限,作为文件访问者的用户来说,分成如下几组:所有者u-User、所在组的用户g-Group、其他用户o-Other。文件也拥有基本权限,如读(r)、写(w)、执行(x)等,而(-)则表示文件没有这项权限,这里也有一些特殊权限,suid (s/4)只能应用在可执行文件上,允许任意用户在执行文件时以.文件拥有者的.身份执.行sgid

2017-03-21 09:21:36 822

原创 Linux文件的三个时间参数

在Linux中,当你使用了stat指令之后会出现三个时间,这个三个时间代表着什么意思呢?我们可以通过实际操作来探究一下。首先,我们在Linux中创建了一个test.c文件,,然后我们执行stat命令,可以发现出现了三个时间分别是Access,Modify,Change,此时的三个时间都是相同的,现在我们来执行一下其他命令。首先我们使用cat指令访问一次test.c文件,观察变化

2017-03-21 08:41:49 516

原创 C++关于迷宫路径求解

这里写了关于迷宫求路径问题的代码#pragma once#include#include#include#includeconst size_t N = 10;using namespace std;void InitMaze(int Maze[][N],size_t n){ FILE* fout = fopen("Maze.txt", "x"); assert(fout);

2017-03-19 08:42:45 1264

原创 C++: 虚表和菱形虚拟继承

菱形继承存在二义性和数据冗余的问题。菱形继承体系中包含多份父类对象的数据冗余和浪费空间的问题。而虚继承解决了这些问题,但是虚继承在解决这些问题的同时也带来了性能上的损耗。菱形继承class Person{public: void f();protected: string name;};class Student:virtual public Person{

2017-02-15 18:01:11 200

原创 单链表的基本操作

#pragma once#include#include#include#includetypedef int Datatype;typedef struct SListNode{ Datatype data; SListNode *next;}SListNode;SListNode* BuyNode(Datatype x);//申请空间void PrintNo

2016-12-12 17:19:04 204

原创 动态表的基本实现

#pragma once#include#include#include#includetypedef int Datatype;typedef struct SeqList{ Datatype* arry; size_t size; size_t capacity;}SeqList;void InitSeqList(SeqList* seq);void Desto

2016-12-10 15:19:32 178

原创 静态顺序表的基本操作

#ifndef __W_H__#define __W_H__#include#include#include#include#define List_Size 100typedef int Datetype;typedef struct Seqlist{ Datetype arry[List_Size]; size_t size;}Seqlist;void Cre

2016-12-10 15:17:05 273

原创 c语言模拟实现strstr函数

#include #include const char *x_strstr(const char *str, const char *s){ for (int i = 0; str[i] != '\0'; i++) { int tem = i; int j = 0; while (str[i++] == s[j++]) { if (sub_str[j]

2016-10-22 12:42:48 260

原创 近期C语言学习总结

C语言的源程序中可包含各种编译指令,这些指令可以称之为预处理指令,#define,#error,       #include,#if,#else,#elif,#endif,#ifdef,#ifndef,#undef,#line,#pragma等都属C语言预处理命令。所有的预处理命令都以#开头。C语言还规范了5个固有的预定义宏,他们分别是 _LINE_、_FILE_、_DATA_ TI

2016-10-18 14:56:35 215

员工考勤管理系统

闲暇练手。 使用mysql数据库,下载之后需要配置数据库程序才可运行

2018-04-29

空空如也

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

TA关注的人

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