自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 shell脚本之符号与命令

1.理解``和$() 反引号在shell脚本中有独特的作用,凡是被反引号包括的内容shell会先执行该命令,再将该命令的输出结果代换到当前命令行中。所以反引号的作用是命令替换。$()则是算数代换,在shell脚本中,被双括号括起来的算数命令可以被替换成算术结果。$(())中只能用+ - * / %运算符进行算数运算,而且只能做整数运算。2.调研eval命令

2017-07-12 16:15:11 537

原创 shell脚本之命令代换

理解“和()反引号在shell脚本中有独特的作用,凡是被反引号包括的内容shell会先执行该命令,再将该命令的输出结果代换到当前命令行中。所以反引号的作用是命令替换。() 反引号在shell脚本中有独特的作用,凡是被反引号包括的内容shell会先执行该命令,再将该命令的输出结果代换到当前命令行中。 所以反引号的作用是命令替换。 ()则是算数代换,在shell脚本中,被双括号括起来的算数

2017-07-12 16:10:22 487

原创 Linux下的UDP连接编程

udp是无连接不可靠的IP协议,和tcp有所不同。 udp服务器调用socket(),bind(),listen()完成套接字初始化后,调用accept()阻塞等待处于监听端口的状态。 udp客户端调用socket()初始化后,调用connect()发送SYN字段并阻塞等待应答。 客户端如果一直与服务端连接,服务端退出后重启时,端口号已被占用,和tcp一直,具有TIME_WAIT特性。 代

2017-07-11 15:29:09 809

原创 TCP的四种定时器

TCP使用四种定时器(Timer,也称为“计时器”): 重传计时器:Retransmission Timer 坚持计时器:Persistent Timer 保活计时器:Keeplive Timer 时间等待计时器:Time_Wait Timer。(1)重传计时器:重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建这个特定报文段的重传计时

2017-07-10 21:56:03 446

原创 关于String类的写实拷贝

在自己定义的String类中使用写实拷贝来提高效率。写实拷贝是在浅拷贝的基础上使用引用计数器来拷贝对象,如果有对象被拷贝构造时只需要将计数器++,不用再开辟新的空间。可以编写初版的代码:#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;class String{public: String(con

2017-07-10 15:50:45 600

原创 Linux下的TCP连接

TCP连接可以分为三个情况,第一种是单进程,一个服务端只能有一个客户端;第二种是多进程,一个服务端可以接受多个客户端;第三种是多线程,相对于多进程而言更稳定,因为线程相对于进程是各自私有资源,各自独立。第一种—–单进程tcp_client 客户端 1 #include<stdio.h> 2 #include<sys/types.h> 3 #include<sys/socket.h>

2017-07-10 15:44:14 1094

原创 网络中的常用端口和端口分类

端口计算机端口是是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。一般有效端口有65535个。 端口可以按端口号分为三类:公认端口(Well Known Ports):端口号为0—1023,常这些端口的通讯明确表明了某种服务的

2017-07-08 19:31:56 1162

原创 C++下的String类

String类编写自定义的string类要运用到关于string的深拷贝 链接为:http://blog.csdn.net/zoctopusd/article/details/74775141 下面是我的代码部分,重点在于Find函数和Insert函数的两种方法。#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>#include<asser

2017-07-08 18:15:12 384

原创 C++中的浅拷贝与深拷贝

用自定义的String类解释什么是浅拷贝什么是深拷贝。class String { private: char* _str; };浅拷贝是在调用拷贝函数时进行了值拷贝,这样的拷贝看似没有问题,在调用析构函数时会导致内存泄漏,系统奔溃。#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;class Stri

2017-07-07 21:03:19 445

原创 C/C++动态内存管理

1:malloc/free和new/delete之间关系和差异。 C通过malloc/free来管理动态内存,而C++通过new/delete管理动态内存。malloc/free的使用方法与new/delete有所不同。malloc/free:int main(){ int *p=(int *)malloc(sizeof(int));

2017-07-04 20:33:34 427

原创 C++的入门基础知识

今天简单的介绍一下C++的入门基础知识,包括C++代码的基础以及指针与引用。1、命名空间命名空间用花括号将文件代码的一部分括起来,变成一个域。用namespace关键字开头组成名字,类似于类的命名。namespace name1{int i=0;}使用命名空间中的元素时要使用作用域解析符:::,例如name1::i=4在编写C++代码时,我们需要在代码之前使用s

2017-07-04 16:23:43 426

原创 C++中的构造函数与拷贝构造的优化处理

1.C++对传参和传返回值时构造的优化处理。先简单介绍一下C++类中的默认成员函数:(1)构造函数成员变量为私有的,要对它们进行初始化,必须用一个公有成员函数来进行。同时这个函数应该有且仅在定义对象时自动执行一次,这时调用的函数称为构造函数(constructor) 。构造函数是特殊的成员函数,其特征如下:a. 函数名与类名相同。b. 无返回值。c. 对象构造(

2017-07-03 19:57:14 838

原创 Linux下的mysleep

我们模拟实现一下sleep,称为mysleep,在实现之前先介绍三个函数alarm函数,sigaction函数,以及pause函数。      首先我们来看alarm函数:       #include        unsigned int alarm(unsigned int seconds);       调用alarm函数可以设定一个闹钟,大家都知道,在现实生活

2017-06-30 20:32:56 375

原创 Linux下子进程的异步等待

通过wait函数或者waitpid函数可以清理僵尸进程,父进程可以通过两种方式等待子进程,一种是阻塞方式,另一种是非阻塞方式,而不管是那种方式,父进程都做不到完全不理会子进程而去完成自己的动作,即子进程不能达到异步等待的目的。1、关于SIGCHLD信号子进程在终止时会给父进程发SIGCHLD信号,该信号的默认处理动作是忽略,父进程可以自定义SIGCHLD信号的处理函数,这样父进程就可以进行

2017-06-30 19:49:53 807

原创 Linux下的可重入函数与线程安全

可重入函数和线程安全1.线程安全线程安全:当一个函数被多个并发进程反复调用时,它会一直产生正确而的结果,称其为线程安全的。若一个函数不是线程安全的,就称其为线程不安全的。线程安全就是说多线程访问同一代码,不会产生不确定的结果。换句话说,线程安全就是多线程访问时,采用加锁机制,当一个线程访问该类的某个数据时,用锁对数据进行保护,其他线程不能访问该数据直到该线程读取完,

2017-06-30 16:19:47 444

原创 C++下的Date类编写

Date类的编写要求如下,编写构造函数以及运算符的重载,以及测试基础代码class Date {                                      public: Date(int year = 1900, int month = 1, int day = 1) :_year(year) ,_month(month) ,_day(day) {

2017-06-30 16:07:48 773

原创 Linux下的crond与crontab

一、概念1. 定义        crond 是 Linux 系统用来定期执行命令或指定程序的服务的一种服务或软件。一般情况下当我们安装完成 linux 操作系统之后,默认便会启动 Crond 任务调用服务。Crond 服务会定期(默认一分钟检查一次)检查系统中是否有要执行的任务工作。如果有,便根据其预先设定的定时任务规则自动执行该定时任务工作。这个 Crond 定时服务就像闹

2017-06-29 14:45:22 350

原创 CRC校验

1. 定义        CRC  即循环冗余校验码:是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。在链路层被广泛使用的检错技术。 循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似算法,以保证数据传输的正确性和完整性。 2. 原理        在数据链路层传送的帧中,

2017-06-29 14:31:50 460

原创 C++中的类和对象

类和对象类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。与结构体一样,类只是一种复杂数据类型的声明,不占用内存空间。而对象是类这种数据类型的一个变量,或者说是通过类这种数据类型创建出来的一份实实在在的数据,所以占用内存空间。 类的定义 类是用

2017-06-28 17:14:39 340

原创 C++中的复数Complex类

Complex类的成员变量有实部与虚部: protected: double _real; double _image;本次将实现在C++中的Complex类的基本函数,包括四个默认成员函数,比较运算符重载函数,赋值运算符重载函数,

2017-06-28 17:06:58 29801 1

原创 Linux下的守护进程

守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进�%5�5��现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond等。Linux系统启动时会启动很多系统服务进程,这些

2017-06-27 18:33:07 1998

原创 C语言实现无头节点的单链表

测试代码singlelinkedlist.h头文件#ifndef __SINGLELINKEDLIST_H__#include#include#includetypedef int DataType;typedef struct ListNode{ DataType data; struct ListNode *next;}ListNode;Lis

2017-06-13 21:26:20 768

原创 C语言的单链表面试题----进阶

题目判断单链表是否带环?若带环,求环的长度?求环的入口点?并计算每个算法的时间复杂度&空间复杂度。判断两个链表是否相交,若相交,求交点。(假设链表不带环)判断两个链表是否相交,若相交,求交点。(假设链表可能带环)【升级版】求带环链表环长(无环返回 -1)思路快慢指针法,快指针一次走两步,慢指针一次走一步,如果链表带环,则从慢指针到达入口点开始,由于快慢指针都

2017-06-13 21:17:03 428

原创 C语言中的单链表面试题----基础

题目总览从尾到头打印单链表删除一个无头单链表的非尾节点在无头单链表的一个节点前插入一个节点单链表实现约瑟夫环逆置/反转单链表单链表排序(冒泡排序&快速排序)合并两个有序链表,合并后依然有序查找单链表的中间节点,要求只能遍历一次链表查找单链表的倒数第n个节点,要求只能遍历一次链表思路及代码从尾到头打印单链表递归法,若当前节点不为空,在打印当前节点前打印上一个节点。

2017-06-13 21:14:45 459

原创 C语言下的静态顺序表

静态顺序表的实现seqlist.h#define _CRT_SECURE_NO_WARNINGS 1#pragma once#include#include#include#includetypedef int DataType;#define MAX 100typedef struct Seqlist //定义顺序表结构{ DataType

2017-05-30 21:40:12 278

原创 Linux下的读写锁

读写锁其实是一种特殊的自旋锁在linux下有两种锁:                               (1)自旋锁:不断地周而复始的做一件事情,不挂起,轮询                               (2)挂起等待锁:信号量,互斥锁读写锁也有三种关系:             写者和写者:互斥

2017-05-30 20:16:30 872

原创 Linux下的信号量----生产者与消费者

关于信号量的函数:初始化信号量                  int sem_init (sem_t *sem, int pshared, unsigned int value)         第一个参数是信号量;第二个参数pshared设为0,意思是信号量用于同一进程间同步;第三个参数value是计数器的初始值。P操作

2017-05-30 19:37:53 1475

原创 Linux下的死锁

死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程(线程)在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。

2017-05-27 21:26:38 371

原创 Linux下的共享内存

测试代码:comm.h 1 #ifndef _COMM_H_ 2 #define _COMM_H_ 3 4 #include 5 #include 6 #include 7 8 #define PATHNAME "." 9 #define PROJ_ID 0x6666 10 11 int creat(int size); 12 int get(

2017-05-20 16:11:24 450

原创 Linux下的信号量

linux下的信号量本身就是临界资源,所以PV操作都是原子操作。下面是实现二元信号量的代码,二元信号量就是互斥锁。comm.h 1 #ifndef _COMM_H_ 2 #define _COMM_H_ 3 4 #include 5 #include 6 #include 7 #include 8 #include 9 10 #define PA

2017-05-19 21:04:44 371

原创 C语言---静态内存结构体实现通讯录

contact.h#pragma once#include#include#include#define NAME_MAX 20#define SEX_MAX 5#define TELE_MAX 20#define ADDR_MAX 30#define MAX 1000typedef struct PeoInfo{ char name[NAME_MAX]; int

2017-05-17 22:34:08 602

原创 Linux下的消息队列MsgQueue

server文件运行时先收消息再发消息,但是server.c中创建了消息队列,所以先运行serverclient文件运行时先发消息再收消息运行结果:打开两个terminal分别进行comm.h头文件 1 #ifndef _COMM_H_ 2 #define _COMM_H_ 3 4 5 #include 6 #include 7 #includ

2017-05-15 23:11:46 2531

原创 模拟实现C库函数strncpy、strncat、strncmp

1.模拟实现strncpychar *my_strncpy(char *dest, const char* str, int count){ assert(dest != NULL); assert(str != NULL); char *ret = dest; while (count && (*dest++ = *str++)) { count--; } if (cou

2017-05-13 16:54:22 423

原创 模拟实现qsort函数

模仿qsort的功能实现一个通用的冒泡排序int cmp(const void*n1, const void*n2) //判断n1,n2元素大小,n1比n2大返回正数;小返回负数,相同返回0{ return *(char*)n1 - *(char*)n2; //升序}void Swap(char *buf1, char*

2017-05-12 22:42:28 411

原创 Linux下的管道pipe----管道容量和实现机制

管道容量    linux上的PipE容量为(capacity)65536个字节;实验得到Ubuntu的PIPE_BUF为4096。   当 管道的写端存在时,如果请求的字节数目大于PIPE_BUF,则返回管道中现有的数据字节数,如果请求的字节数目不大于PIPE_BUF,则返回管道中现有数据字节数(此时,管道中数据量小于请求的数据量);或者返回请求的字节数(此时,管道中数据量不小于请求的数

2017-05-12 21:07:26 2503

原创 C语言下的qsort函数

qsort是编译器自带的快速排序函数函数原型为void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));参数含义为:void*base----void*接受任何类型的地址,传入要排序的数组地址           size_t num----size_t

2017-05-12 20:35:02 445

原创 Linux中的管道pipe----管道的四种情况和特点

1 #include 2 #include 3 #include 4 #include 5 int main() 6 { 7 int fds[2]; 8 if(pipe(fds)<0) 9 { 10 perror("pipe"); 11 return 1; 12 } 13 printf(

2017-05-10 23:05:41 1492

原创 模拟实现C库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove

1、模拟实现strcpychar *my_strcpy( char *dest, const char *str){ assert(dest != NULL); assert(str != NULL); while (*dest++=*str++) { ; } return dest;}int main(){ char p[20]; char *p1 = "worl

2017-05-06 14:16:59 607

原创 Linux下的FILE*与fd

1. 文件描述符:在linux系统中,设备也是以文件的形式存在,要对该设备进行操作就必须先打开这个文件,打开文件就会获得文件描述符,它是个很小的正整数。每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。文件描述符的优点:兼容POSIX标准,许多Linux和UNIX系统调用都依赖于它。文件描述

2017-04-27 20:50:09 840

原创 Linux下的atexit,exit,_exit函数

在Linux中函数的退出有以下8种情况,其中前5种为正常情况,后3种为异常情况1 从main函数返回;2 调用exit函数;3 调用_exit或_Exit;4 最后一个线程从启动例程返回;5 最后一个线程调用pthread_exit;6 调用abort函数;7 接到一个信号并终止;8 最后一个线程对取消请求做出响应exit函数与_exit函数的区别

2017-04-25 23:07:58 612

空空如也

空空如也

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

TA关注的人

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