自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 struct和class

struct和class区别

2022-06-07 11:23:51 500

原创 线索二叉树

我们把指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树jiu'cheng'wei

2018-06-04 21:36:00 192

原创 成员函数重载、覆盖和隐藏的区别

(1)成员函数被重载的特征:        a. 相同作用域        b. 函数名相同        c. 参数列表不同        d. virtual 关键字可有可无(2)覆盖是指派生类函数覆盖基类函数,特征是:        a. 不同作用域(分别位于派生类和基类中)        b. 函数名相同        c. 参数相同        d. 基类中必须要有virtual 关键...

2018-06-03 21:39:58 328

原创 二叉树

一、二叉树相关的概念 树(tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任何一棵非空树中:(1)有且仅有一个特定的成为根的结点(root);(2)当n>1时,其余结点可分为m(m<0)个互不相交的有限集T1、T2、……、Tm,其中每一个集合本身又是一棵树,并且称为根的子树,如下图所示:结点拥有的子树称为结点的度;度为0的结点称之为叶子节点或终端结点;树的度是树内各...

2018-06-01 20:49:56 686

原创 C++设计模式_观察者监听者模式

#include <iostream>#include <string>#include <map>#include <vector>#include <vld.h>using namespace std;//观察者监听者模式模式class Listener{public: Listener(string str):...

2018-03-25 20:02:50 675

原创 C++设计模式_工厂模式

工厂模式是将带有继承于基类的子类的创建过程交给一个工厂来创建,通过赋予不同的创建标识来创建不同的子类的模式。C++有三种工厂模式:简单工厂模式、工厂模式和抽象工厂模式简单工厂模式:现在有一个工厂要生产几种产品,这个简单工厂自己可以判断生产哪一种产品代码如下:#include <iostream>#include <string>#include <vld.h&gt...

2018-03-25 16:12:29 218

原创 字符串匹配算法

在字符串str中定位/查找某个字串sub的操作通常被称为字符串的模式匹配。字符串匹配有多种算法,这里总结一下BF算法和KMP算法。BF算法BF算法是一个暴力算法,从str的第一个字符开始,依次比较str和sub中的字符,如果没有完全匹配,则从第二个字符开始,再次比较,如此重复,直到找到sub的完全匹配或者不存在匹配。这里设str和sub的长度分别是m和n,则它在最坏情况下的时间复杂度是O(m*n)...

2018-02-27 23:06:16 579

原创 进程间的通讯方式_共享内存

共享内存:共享内存是在两个正在运行的进程之间传递数据的一种非常有效的方式,它允许两个不相关的进程访问同一个逻辑内存。虽然X/Open标准并没有对它做出要求,但大多数共享内存的具体实现都把由不同进程之间共享的内存安排为同一段物理内存。       共享内存是由IPC为进程创建的一个特殊的地址范围,它将出现在该进程的地址空间中。其他进程可以将同一段共享内存连接到它们自己的地址空间中。所有进程都可以

2017-12-13 21:06:45 240

原创 如何处理僵死进程?

如何处理僵死进程?       给进程设置僵尸状态的目的是维护子进程的信息,以便父进程在以后某个时间获取,这些信息包括进程的 pid、终止状态以及资源的利用信息(CPU时间,内存使用量等)。如果一个进程终止,而该进程有子进程处于僵尸状态,那么它的所有僵尸子进程的 ppid 将被重置为1(init 进程)。继承这些子进程的 init 进程将清理它们(init 进程将 wait 它们,从而去除僵死

2017-12-07 21:31:29 592

原创 typedef 和 define 的区别

typedef 和 define 的区别还没完呢。。。。

2017-11-28 13:26:09 199

原创 const 在C语言和C++语言中的区别

const 在C语言和C++语言中的区别还没完呢。。。。。

2017-11-28 12:24:37 544

原创 static 的作用

static 的作用一、static 在C语言中,主要定义静态全局变量,定义静态局部变量,定义静态函数       1. 静态全局变量的特点:         (1)在全局数据区分配内存         (2)如果静态全局变量没有初始化,其默认值为 1         (3)该变量在本文件内从定义开始到文件结束均可见       2. 静态局部变量的特点:

2017-11-24 23:47:43 251

原创 网络编程基础(三)UDP

网络编程基础(UDP 编程)UDP 报文头部结构如下图所示:TCP 流式服务和 UDP 数据包服务

2017-11-22 23:52:55 441

原创 网络编程基础(二)

网络编程基础TCP 协议的特点       传输层协议主要有两个:TCP 协议和 UDP 协议。TCP 协议相对于 UDP 协议的特点是:面向连接、字节流和可靠传输。       使用 TCP 协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。TCP 连接是全双工的,即双方的数据读写可以通过一个连接进行。完成数

2017-11-21 13:09:35 198

原创 网络编程基础(一)

网络编程基础       网络编程的实现就必须有服务器和客户端的存在       服务器:为客户提供服务的一方       客户端:获取数据的为客户端,可以是任意一台主机,只要它和服务器存在连接,并且的到服务器的授权,就可以使用服务器提供的服务       有两种协议可以选择:      (1)TCP:面向连接的      可靠的          流式服务      (2

2017-11-19 21:31:01 192

原创 线程控制(线程同步 & 线程安全)

一、线程同步       当多个控制线程共享相同的内存时,需要确保每个线程看到一致的数据。如果当某个线程可以去修改变量,而其他线程也可以去读取或者修改这个变量的时候,就需要对这些线程进行同步控制,以确保它们在访问变量的存储内容时不会访问到无效的数值。       同步:多进程或者多线程访问临界资源时,必须进行同步控制。多进程或者多线程的执行并不是完全绝对的并行运行,有可能主线程需要等待函数

2017-11-12 20:06:59 418

原创 函数调用堆栈

函数调用堆栈       函数调用相信大家都不陌生,调用函数向被调用函数传递参数,然后执行被调用函数的代码,最后被调用函数向调用函数返回结果。       函数的调用实际上就是在栈上发生的,那么函数调用在计算机内部到底是如何实现的呢?       对于一个程序,编译器会对其分配一段内存,这段内存在逻辑上可以分为:代码段、数据段、堆和栈。      (1)代码段:保存程序

2017-11-07 23:45:33 349

原创 线程管理

线程的概念       线程是进程内部的一条执行序列(执行流),每个进程至少有一条执行序列:main 执行体。       进程可以通过线程创建 N 条线程,这些新创建的线程称之为函数线程,main 函数所代表的线程为主线程。线程与进程的区别      1. 进程是资源分配的最小单位,线程是 CPU 调度的最小单位      2. 线程是轻量级的进程      3. 管理方

2017-11-04 23:10:14 247

原创 进程间的通讯方式_消息队列

消息队列:提供了一种从一个进程向另一个进程发送一个数据块的方法,而且每个数据块都被认为含有一个类型,接收进程可以独立地接受含有不同类型值得数据块。       消息:数据 & 类型       队列:一种数据结构,先进先出       消息队列:是一种临时存储信息的队列,完成进程间的数据传递,优先级队列消息队列的特点:      1.与信号量相比:都以内核对象来确保多进程访问同

2017-11-02 21:32:01 612

原创 进程间的通讯方式_信号量

信号量       当我们编写的程序使用了线程时,不管它是运行在多用户系统上、多线程系统上,还是运行在多用户多进程系统上,我们通常会发现程序中存在着一部分临界代码,我们需要只有一个进程(或一个执行线程)可以进入这个临界代码并拥有对资源独占式的访问权。为了防止出现因多个程序同时访问一个共享资源而引发的问题,我们需要有一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的

2017-10-28 21:52:27 272

原创 进程间的通讯方式_管道(无名管道)

无名管道      是相对于有名管道而言的,无名管道在使用时产生,不使用后释放,并不会再系统上留下任何蛛丝马迹。      无名管道因其使用前没有任何的标示,所以它只能应用于父子进程之间。      子进程会复制父进程的文件表数组(浅拷贝)。无名管道的相关操作:      创建:int pipe(int fd[2]);  //fd[0] 读    //fd[1] 写

2017-10-28 18:39:54 236

原创 进程间的通讯方式_管道(有名管道)

当从一个进程连接数据流到另一个进程时,我们使用属于管道(pipe)。我们通常是把一个进程的输出通过管道连接到另一个进程的输入。(管道是在内存上开辟出一块空间,不被任何其他进程所占用的)管道包括全双工通讯和半双工通讯。管道原理:管道操作:       有名管道:应用于任意两个进程之间数据的单向传递       创建:命令方式(mkfifo)、函数方式(mkfifo)

2017-10-22 23:39:55 424

原创 数据结构_循环链表

循环链表(带头节点)(与单链表类似,只是尾结点的 next 指向头节点)循环链表的结构如下:1. 循环链表的结构体定义,代码如下typedef struct CNode { int data; struct CNode *next;}CNode,*CList;2. 循环链表的初始化,代码如下void InitList(CList plist){ assert

2017-10-11 21:32:50 243

原创 数据结构_单链表(带头节点)

单链表(以带头节点的单链表为例)的表示图如下:   1. 定义单链表结构,结构体中包括 data 数据域和 next 指针域,代码如下:typedef struct Node{ int data;//数据域 struct Node *next;//指向下一个节点}Node,*List;//List == Node*2. 单链表的初始化,代码如下:void InitLis

2017-09-21 22:48:15 927 1

原创 数据结构_顺序表

一、定长顺序表1. 采用结构体定义顺序表,定义顺序表的存放数据、有效数字个数以及结构体自身的指针,代码如下:typedef struct SeqList{ int elem[SIZE];//存放数据 int length;//有效数字个数}SeqList,*PSeqList;2. 顺序表的初始化,代码如下:void InitSeqList(PSeqList ps){ a

2017-09-13 13:12:56 318

原创 字符串的相关问题

1. 求字符串的长度int Mystrlen(const char *str){ int i; for (i=0; str[i]!='\0'; i++) {;} return i;}2. 字符串拷贝函数,这里给出了4种方法    方法一:    void Mystrcpy1(char *des, const char *src){ int i = 0; while

2017-09-09 11:37:47 214

原创 青蛙跳台阶问题

题目:一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级台阶,          请问这只青蛙跳上 n 级台阶总共有有多少种跳法。根据题意可以分析:       青蛙跳上 1 级台阶有 1 种跳法,跳上 2 级台阶有 2 种跳法,跳上 3 级台阶有 3 种跳法,       跳上 4 级台阶有 5 种跳法,由此可以分析出青蛙跳台阶问题实质上只是斐波那契数列的一个应用。该题代码

2017-09-09 11:00:17 282

原创 const 的用法

const 常类型是指使用类型修饰符 const 说明的类型,常类型的变量或对象的值是不能被更新的。const 的使用:1. 定义常量  (1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。           TYPE const ValueName = value;            co

2017-09-06 22:57:09 237 2

原创 数据结构排序算法

数据结构排序算法排序:排序即排列顺序,把一组数据排列成有序的数据,或者把一组数据按照关键字排成有序的排序的分类:     (1)按照存储位置分为:内部排序(即在内存中)和外部排序(即内存调用磁盘)     (2)按照算法或者逻辑分为:插入排序、选择排序、交换排序、归并排序和基数排序     (3)按照排序结果分为:升序排序和降序排序时间复杂度:某个事件的执行次数空间复杂

2017-08-28 22:25:07 306 2

原创 假设在n进制下,下面的等式成立,567 * 456 = 150216,n的值是()。

由题意可得:

2017-08-25 11:48:15 483 2

空空如也

空空如也

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

TA关注的人

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