自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 端口分类

一、端口的定义端口(port),是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口。虚拟端口是指计算机内部或交换机路由器内的端口,不可见。物理端口又称接口,是可见端口。二、端口的分类端口是通过端口号进行标记,范围是从0~65535,端口的分类也是按照端口号进行分类的。1.公认端口(WellKnown Ports):范围0~1023。它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服

2017-07-26 21:14:45 527

原创 TCP定时器

一、定时器在TCP/IP协议栈中,因为重传,等待,确认的情况,很多都会用带定时器,所以定时器是TCP/IP协议栈中一个至关重要的“部件”,在很多时候都仰仗定时器来确认一个请求。最明显的大概就是TCP/IP协议栈中的四次挥手时的timewait时刻了,主动发起断开连接的一端,在等待timewait时间无回应后,即断开连接。这个时候的timewait就使用了一个定时器。 二、常见的几个定时器1.连接建

2017-07-26 20:54:50 369

原创 NAT技术与代理服务器

NAT网络地址转换产生原因: NAT(Network Address Translation)网络地址转换,用于将访问Internet上公网的私有IP地址转换为合法的共有IP地址。产生原因:IPv4地址危机,由于其先天性不足,,在九十年代初期,已经预计到了IPv4地址不足,从而开始开发IPv6技术。但开发IPv6需要足够的时间,为了延长IPv4的使用时间,产生了NAT技术。定义: NAT网络

2017-07-20 12:56:54 487

原创 crond与crontab

linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。一、crond和crontab是什么? 1>crond crond是linux下用来周期性的执行某种任务或等待

2017-07-20 10:54:27 446

原创 Linux 下的共享内存

一、什么是共享内存 共享内存指 (shared memory)在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。共享内存是 Linux下的多进程之间的通信方法 ,这种方法通常用于一个程序

2017-06-11 09:40:57 537

原创 Linux 下的消息队列

一、什么是消息队列 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。二、如何使用消息队列 Linux提

2017-06-10 09:17:12 824

原创 Linux 命名管道FIFO

一、什么是命名管道FIFO 在之前的学习中我们知道如果我们要在两个相关进程间交换数据,那么使用管道即可,也就是调用pipe函数就可以了;那么如果我们要在不相关的进程间交换数据,那么使用FIFO文件将会十分方便,也就是调用mkfifo函数来进行 FIFO文件通常也称为命名管道(named pipe)。命名管道是一种特殊类型的文件,它在文件系统中以文件名的形式存在。二、创建命名管道#include

2017-06-10 08:49:47 400

原创 Linux 线程概念与基础

一、什么是线程? 线程是在进程内部运行的控制流程。多线程的控制流程可以长期共存,操作系统会在各线程之间调度和切换,就像在多个进程之间调度和切换一样。 由于同一个进程的多个线程共享同一地址空间地址空间,因此代码段和数据段都是共享的,如果定义一个函数,在各线程之中都可以调用,如果定义一个全局变量,在各线程中都可以访问到的,除此之外,线程还共享以下资源: 1>文件描述符表 2>每种信号的处理方式

2017-06-08 17:41:16 334

原创 Linux 信号量

一、什么是信号量? 1>信号量的本质是一种数据操作锁、用来负责数据操作过程中的互斥、同步等功能。 2>信号量用来管理临界资源的。它本身只是一种外部资源的标识、不具有数据交换功能,而是通过控制其他的通信资源实现进程间通信。 3>信号量就相当于是一个计数器。当有进程对它所管理的资源进行请求时,进程先要读取信号量的值,大于0,资源可以请求,等于0,资源不可以用,这时进程会进入睡眠状态直至资源可用

2017-06-08 16:47:02 493

原创 二叉树的创建和基本操作(递归和非递归)

二叉树的定义在这里不做陈述,我们直接来看看如何实现一个二叉树的创建(c++)首先定义结点,这里我们呢用结构体来创建template<typename T>struct BinaryTreeNode //创建孩子二叉树的结点{ BinaryTreeNode(const T& data = T()) :_data(data) , _pLeft(NULL) , _p

2017-05-14 18:02:42 609

原创 Linux 文件描述符及FILE结构体

文件描述符 我们知道,在Linux下一切皆文件,对于内核而言,所有打开的文件都通过文件描述符引用,文件描述符是一个非负整数,当打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,使用open或creat返回文件描述符标示该文件,将其作为参数传送给read或write.在linux中,进程是通过文件描述符(file descriptors 简称fd)来访问文件的,

2017-05-14 17:35:10 752

原创 Linux 中的僵尸进程与孤儿进程

在介绍僵尸进程和孤儿进程之前我们先了解一下进程的几种状态 进程状态 1. R状态 进程要么在运行要么在运行队列中。 2. S状态 睡眠状态,进程在等待某事件完成(可被中断) 3. D状态 不可中断的睡眠状态(通常其在第等待IO结的束) 4. T状态 被停止的进程 (发送信号SIGSTOP停止进程 SIGCONT让进程继续运行) 5. X状态 进程已死 已被回收 kernel你的do_ex

2017-05-14 00:24:49 350

原创 Linux 中task_struck

task_struck 之前在进程初步中提到了进程制块这个概念,进程控制块中主要就是task_struck这个结构体,那么这个结构体到底是什么样子的结构让他能够完成进程控制的功能呢,我们一起来看看#define TASK_RUNNING 0//进程要么正在执行,要么准备执行#define TASK_INTERRUPTIBLE 1 //可中断的睡眠,可以通过一个信号唤醒#defi

2017-05-07 16:14:46 996

原创 Linux 进度条

进度条我们平时都不陌生,特别是在玩游戏的时候会特别的多,那么如何用c代码实现一个简单的进度条呢,我们首先来分析一下。 进度条实现我们其实可以用字符数组来做,类似于这样[============ ]来实现。假设我们让一个=来表示一个百分比,那么加上两边的[]我们可以确定以这个数组的大小是102;那其实就很简单了,让我们在linux下来做一下 其中fflush主要是为了清楚因为lin

2017-04-17 18:05:06 280

原创 Linux 下的 find 指令

find指令是linux系统中一个很重要的指令,他的用法很多,也很方便,所以学习使用find指令就显得格外重要了Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。但是它占用的资源相对来说比较多,所以一般把它放在后台来运行命令格式: fi

2017-04-17 17:14:33 329

原创 智能指针

智能指针是什么? 通常,内存是一种被现实管理的资源,这种管理主要是指对原生内存的获取和释放操作,在管理动态分配的内存的时候,最棘手的问题就是决定何时释放这些内存,所以我们引入了一个概念叫做智能指针!智能指针被用来干什么? 简单来说,智能指针就是用于简化内存管理对于c++而言,智能指针是一些在行为上类似于普通指针的类,因为其中有显式访问和间接访问,而且该类还封装了一些内存管理或者资源管理polic

2017-04-14 21:59:14 386

原创 Linux 下的进程初步

一.操作系统:是一款做软件与硬件管理的软件 操作系统与硬件之间有一个层次叫做驱动 硬件<-驱动<-操作系统(核心层)<-外壳<-用户(最外层到最底层) 对操作系统而言,对下要管理各种软件与硬件,对上而言,要提供各种使用方式对于用户 内核:对下 外壳:对上二.系统调用:调用的是一个个的函数,是操作系统提供的接口(操作系统给的一个个函数接口,用来进行各种操作)

2017-04-11 21:33:02 262

原创 Linux 下的 粘滞位

什么是粘滞位? 一个系统一般都是有多个账号使用的,而有些目录和文件需要赋予其他用户可读写的权限,比如/tmp/a.tmp,这就有一个问题了,比如A在/tmp目录下放的文件a.tmp,而B也需要有/tmp的权限,他就可以删除这个a.tmp文件;如果只想让b有读写这个文件的权限,但是没有删除这个文件的权限该怎么办呢?这个时候就引入了粘滞位,也就是让用户只能删除属于自己的文件。如何设置粘滞位? 1.

2017-04-02 21:43:37 527

原创 Linux 下的权限与 ACM

首先,我们要明确在Linux下的一个概念:一切皆文件;那么Linux下的文件类型有什么呢? 1.普通文件类型 [-]开头 2.目录类型 [d]开头 3.连接文件 第一个字符为[ l ] 4、设备和设备文件 块设备文件,即一些存储文件,如硬盘、软盘等,第一个字符为[ b ] 字符设备文件,即一些串行端口的接口文件,如键盘、鼠标等,第一个字符为[ c ] 5、套接字 第一个字符为[

2017-03-26 17:34:52 568

原创 c++三大特性之 继承

继承:一个非常自然的概念,现实中的很多事情都是具有继承性的。类似于自己继承父母的特性,这也是继承的特性: 而继承的上层称为基类,下一层就叫做派生类。 格式: class 派生类 : 继承方式 基类继承 例如:#include<iostream>using namespace std;class Person{public: int length; i

2017-03-13 17:15:44 414

原创 判断一个字符串是否是另一个字符串的左旋,如果是输出左旋的次数

一个c语言程序实现判断一个字符串是否是另一个字符串的左旋,代码如下:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<windows.h>#define num 100000int check_levo(char str1[num], char str2[num]){ int i = 0; int j = 0

2016-12-04 22:02:22 436

原创 字符串左旋

这里编写一个c程序,功能是实现一个字符串的左旋。这个函数输入字符串和所需要左旋的次数,最终实现程序的最终结果:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<windows.h>#define num 100000char *levorotation(char str[num],int n){ int i = 0;

2016-12-04 21:57:44 258

原创 c语言中关于声明和左值右值问题

float *f() 中,()的优先级高于* 所以真正的理解意义为 float *(f());即返回值为双精度型的指针变量 引入typedef 与 signal 举个例子: void (*signal(int, void(*)(int)))(int); 简化为:typedef void (*HANDLER)(int);HANDLER signal (int , HAND

2016-12-02 16:14:47 566 1

原创 c语言中的符号优先级问题

大部分运算符都有优先级的先后问题 据一些例子 1> if(flags & FLAGS) //其中flags 与 FLAGS 都是变量,想用来判断flags 与 FLAGS 在二进制上同位是否有同1,也就是存在相同二进制位上的指数是否相同且为1,对于电脑来说自然而然地认为if(flags & FLAGS != 0)为真,但是当运行时,因为运算符优先级的问题,电脑认成if(flags

2016-12-02 15:48:20 1802

原创 判断一个字符串是不是回文字符串

编写了一个程序,功能是判断一个输入的字符串是否是回文字符串,代码如下int is_plal(char str[100]){ char *str1 = str; char *str_s = str1; char *str_m = str1; while (*str_s) { str_s++; } str_s--; wh

2016-12-01 21:59:34 5014

原创 c语言函数调用中的栈帧变化

我们写一个比较简单的c语言程序 `#include“ int fun(int x,int y) { int c = 0xcccccccc; printf(“hehe\n”); return c; } int main() { int a = 0xaaaaaaaa; int b = 0xbbbbbbbb; int c = fun(

2016-11-18 15:10:31 1217

原创 宏与函数

定义一个求两个数中最大值的函数MAXviod MAX(int x,int y)类似于这样,函数MAX的形参x,y都是int类型的,而且函数调用会占用时间。函数调用要使用系统的栈来保存数据,而且CPU也要在函数调用时保存和恢复现场,进行压栈和弹栈操作,所以函数调用需要CPU时间。  再定义一个宏#define MALLOC(n,type)((type*)malloc((n)*(siz

2016-11-05 07:42:11 295

原创 简单用户登录程序

一个简单的用户登陆程序,程序实现为输入一个6位数密码,输入两次不对提示登录失败,请重新输入,并提示剩余次数,输入三次不对则提示登录失败,限制登陆,三次有一次输入正确则提示登陆成功。此代码比较好的一点就是方便用户理解,操作时不会有理解障碍!虽然程序简单,但是考虑到用户的使用情况,便做了一些视图上的优化,看起来更加直观和明了。        vs2013下实现!#define _CRT

2016-10-12 16:30:08 1687

原创 c语言实现一个正整数返回二进制参数的偶数位和奇数位顺序输出

编写了一个程序实现一个正整数返回二进制参数的偶数位和奇数位顺序输出,但是总觉得自己写的很麻烦,但实在想不出来怎么改的更好,毕竟只是个c入门,不懂的地方还有很多,一些语言自身能力没有办法去简化,还需要大量的学习!#define _CRT_SECURE_NO_WARNINGS#include#includeint main(){ int arr[100] = { 0 }; int

2016-09-30 18:40:07 1526

原创 一个简单的c语言程序实现两个整数求最大公约数

昨天编了一个简单的c语言程序,目的是实现求两个整数的最大公约数,代码如下:#define _CRT_SECURE_NO_WARNINGS#include#includeint main(){ int num1 = 0, num2 = 0, gcm = 0; int i = 0; printf("请输入两个整数:\n"); scanf("%d %d",&num1,&num2)

2016-09-30 18:35:45 6513

原创 一个有意思的符号

作为一个接触时间很长却几乎没有动过手的c菜鸟来说,这个程序让我有着浓厚的兴趣。这是一个返回参数二进制中1的个数的程序,在开始做的时候,想的是如何将一个整型十进制先变成一个二进制,按照十进制转换为二进制的定义尝试去编,也就是用除二取余进行运算,做这样一个函数让后将十进制数放进去转化为二进制序列在返回给主函数进行调用,写完之后在书上查了查,然后发现一个按位与运算&,然后借鉴编出来下面这个代码,比之前编

2016-09-27 16:42:13 391

原创 不归之路

简单介绍一下自己,我是就读于西安工业大学数学专业的大三学生。从大一开始接触计算机基础从而开始一条“不归之路”,到现在也浑浑噩噩的过去两年时间了,大三的来临才让我意识到现在已经不早了,以前浑浑噩噩的生活该结束了,从现在开始要好好学习,天天向上了。大一大二接触的c并没有让我认真对待,觉得并不会走上编程的道路,可是专业的限制性逼我走上这条道路,尽管之前很不情愿,但开始了就要振作起来,但在慢慢的了解中,我

2016-09-26 11:02:47 438

空空如也

空空如也

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

TA关注的人

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