自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

保持住思维的鲜活,才能充满活力。

GitHub地址:https://github.com/zsirkg

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

原创 C++文章总目录

STL学习–顺序容器操作STL学习–vectorSTL学习–listSTL学习–dequeSTL学习-mapSTL学习–setSTL学习–stackSTL学习–queue priority_queue

2017-02-25 17:13:39 699

原创 队列(Queue)-- 数组实现(C++ )

什么是队列?队列是一种先入先出的数据结构(FIFO),只允许在前端(front)删除,在后端(rear)插入。那么怎么实现队列呢?数组实现变量前端: front后端: rear存储数组: queue容量: capacity功能构造队列:Queue析构队列:~Queue入队:enqueue出队:dequeue判空:isEmpty大小

2017-02-25 17:01:44 5565

原创 应用正则表达式判断IP/MAC/DNS合法性

C中使用正则表达式在C语言中使用正则表达式也是见很简单的事,但在项目中使用的却很少,引用正则表达式判断一些格式的合法性非常方便。下面就举几个例子先睹为快。本文例子都经过测试可放心使用。正则表达式封装我们不必关心正则引擎的打开关闭等,因此把相关操作封装到一个函数中,实现如下:/** * 判断字符串是否满足正则表达式 * regex_pattern: 正则表达式 *

2017-01-24 10:08:49 4789 1

原创 linux - syslog详解

简介 syslog机制负责记录内核和应用程序产生的日志信息,管理员可以通过查看日志记录,来掌握系统状况。日志格式 规定syslog消息的UDP报文不能超过1024字节,并且全部由可打印的字符组成。完整的syslog消息由3部分组成,分别是PRI、HEADER和MSG。大部分syslog都包含PRI和MSG部分,而HEADER可能没有。 如下是一条syslog消息: <31>Jun 12 1

2016-12-07 09:59:49 17053

原创 STL学习--queue priority_queue

简介queue是一种先入先出(FIFO)的数据结构,它有两个出口,允许从底端加入元素,从顶端移除元素。STL底层默认基于deque容器实现,可在创建是更改list:queue > str_queue; // 由list实现的queuepriority_queue是拥有权值的queue,其内部元素不是按照添加的顺序排列,而是按照权值排列(权值默认为元素值),权值高的拍在前

2016-10-21 10:35:57 1547

原创 STL学习--stack

简介stack是一中后入先出(LIFO)的数据结构,它只有一个出口,只可以对顶端元素进行操作。STL底层默认基于deque容器实现。在创建适配器时,通过将一个顺序容器指定为适配器的第二个类型实参,可覆盖默认的容器类型。stack > str_stk; // 由vector实现的stackstack > str_stk; // 由list实现的stackstack

2016-10-21 10:33:23 412

原创 STL学习--set

简介map是键-值的集合,而set是单纯的键的集合。set不支持下标操作,value_type不是pair类型而是于key_type相同的类型。set底层实现为RB-Tree。特性set根据键值自动排序。set中键值是唯一不重复的。set的迭代器在STL中被定义为const_iterator,因此不能通过迭代器来改变键值。set的插入和删除操作只影响当前键值迭代

2016-10-21 10:31:09 529

原创 STL学习-map

简介map是键-值对的集合。map为关联容器,可以通过键作为下标来获取一个值,正如内置数组类型一样。map的底层实现基于RB-Tree。特性map是键-值的集合。map根据键值自动排序。map中每个键值即元素都是唯一不重复的。map中key必须是有序的,支持key与key之间的比较。map中可以通过迭代器改变实值,但不可以通过迭代器改变键值。map中

2016-10-21 10:27:52 557

原创 STL学习--deque

简介deque是一种双向开口的连续空间,可以在头尾两端进行添加和删除操作。不同与vector的是deque是一段段的连续空间,这些连续空间由中控器map(不是stlmap)管理,以提供一种类似的连续性。缓冲区大小为512。中控管理图:特性deque两端都可以快速的插入和删除元素deque可以进行随机存取,但存取速度比vector慢面试题1.

2016-10-20 13:41:42 934

原创 STL学习--list

简介list是一个环状链表,在链表的结尾用一个空白结点代替(即结点的值为空)。区别于vector的连续空间,list在每次添加和删除元素时,都会进行内存的申请和释放。特性list添加或删除元素时都会进行内存申请和释放list支持快速插入和删除,但随机访问效率很低面试题1. vector和list的区别。要点:内存空间,随机访问,插入删除。http:/

2016-10-20 13:36:57 345

原创 STL学习--vector

简介vector的数据结构为连续的线性空间,支持快速随机访问。在配置大小时可能会比需求的更大一些,这便是容量(capacity)概念。特性vector实际分配的空间小于等于其容量(capacity)。vector支持快速随机访问,但插入删除效率较低。面试题1. vector::erase()问题。要点:erase后会指向删除元素的下一个元素。

2016-10-19 18:48:57 1030

原创 STL学习--顺序容器操作

简介顺序容器内的元素按其位置存储和访问,STL中顺序容器有vector、list和deque。同时也提供了容器适配器stack、queue和priority_queue。顺序容器类型顺序容器vector 支持快速随机访问list 支持快速插入/删除deque 双端队列

2016-10-19 14:31:29 500

原创 gvim+w7+vundle安装教程

1. 下载安装gvim到D:\Vim(最好选择没有空格的目录方便实惠大方) 官方下载地址:http://www.vim.org/download.php 注意安装时选择full安装: 2. 使用vundle插件进行管理前,需要安装git 官方下载地址:https://git-for-windows.github.io/3. 创建curl.cmd文件,写入如下内容,拷贝到C:\Program

2016-09-12 23:19:56 6524 1

原创 数据结构(四) -- 二叉树

简介二叉树(Binary Tree)的特点时每个父节点最多只能有两个子节点,通常子树被称作“左子树”(Left Subtree)和“右子树”(Right Subtree)。

2016-08-18 00:21:50 291

原创 linux进程编程(三)-- execl()函数使用

exec()族函数功能是将当前的进程替换称一个新的进程,执行到exec()函数时当前进程就会结束新进程则开始执行。但保留之前当前进程的进程号,本文以execl()函数为例讲解exec()的编码。

2016-08-07 14:09:47 5605

原创 linux进程编程(二)-- waitpid()函数使用

函数简介

2016-07-31 16:00:47 343

原创 数据结构(三) -- 单向链表

简介单像链表是链表的一种,它是单一方向的,访问时只能从头节点开始。单项链表的C语言实现在实现单项链表时,最好加入头节点的概念。头节点(head)不存储数据,它的下一个节点才是真正存储数据的节点,这样的做的好处是可以头节点保持不变,令对链表第一个元素(头节点的下一个元素)的操作与对链表其他元素的操作保持一致,简化代码逻辑。#ifndef __LIST_H_

2016-07-31 12:06:24 355

原创 TCP/IP学习(一) -- 网络分层(OSI分层和TCP/IP分层)

OSI分层OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,它把网络从逻辑上分为了七层,详细信息参考下图: TCP/IP分层TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层,可以通过和OSI分层的关系进行理解: 在这里先对网络分层有一个整体的了解,接下来会针对常用的协议进行逐

2016-07-19 16:49:34 887

原创 TCP/IP文章总目录

本系列文章主要针对TCP/IP协议进行学习,加深对网络模型和协议的理解。

2016-07-19 16:42:45 359

原创 数据结构(二) -- 栈 数组实现

栈的描述栈是一种后进先出(LIFO)的数据结构,先入栈的元素只能在最后出栈,在实际生活中就像摆放盘子一样,最后放的一个可以最先拿走。

2016-07-16 17:25:01 426

原创 数据结构和算法文章总目录

本系列文章主要对数据结构和算法进行学习,并给出完成的代码实例,希望能一起进步。二分法查找(Binary Search)数据结构(一) – 循环队列数组实现数据结构(二) – 栈 数组实现 数据结构(三) – 单向链表 数据结构(四) – 二叉树 队列(Queue)– 数组实现(C++ )

2016-07-16 17:21:25 340

原创 数据结构(一) -- 循环队列数组实现

队列的描述队列的主要特征是先进先出(FIFO),这意味着先进入队列的元素将会首先出队,与生活中的排队一样。

2016-07-15 17:56:40 568

原创 linux文章总目录

linux文章总目录 1. linux信号机制基础 2. linux进程编程(一)– fork()函数简单应用 3. linux进程编程(二)– waitpid()函数使用 4. linux进程编程(三)– execl()函数使用 5. linux - syslog详解

2016-07-14 22:57:47 307

原创 网络编程文章总目录

网络编程文章总目录

2016-07-14 22:37:02 269

原创 判断字符串是否为合法整数

很简单直接上代码了(isValidInteger.c):#include #include #include int isValidIntegerString(char *s){ int i; int len; len = strlen(s); for(i = 0; i < len; i++) { if(i == 0 && (

2016-07-14 19:56:44 1434

原创 C语言文章总目录

C语言文章总目录宏定义中#和##的使用判断字符串是否为合法整数应用正则表达式判断IP/MAC/DNS合法性

2016-07-14 19:53:54 345

原创 linux进程编程(一)-- fork()函数简单应用

调用fork()函数会生成一份当前进程的副本。调用fork()的进程为父进程,副本进程为子进程。对与子进程,共享父进程的代码段,并拥有与父进程数据段,堆和栈的副本(与父进程相同,但空间独立)。

2016-07-13 16:02:45 459

原创 宏定义中#和##的使用

通过本文你会了解到: 1. 宏定义中#和##的含义 2. 简洁实例

2016-07-04 23:11:46 480

原创 linux信号机制基础

通过本文你会了解到: 1. 信号机制简介 2. 信号处理函数( signal/sigaction/kill)

2016-07-04 22:42:18 504

原创 epoll详解(四)-- LT模式实例

通过本文你会了解到: 1. epoll LT模式实例 2. 运行测试

2016-06-25 13:39:09 618

原创 epoll详解(三)-- ET模式实例

通过本文你会了解到: 1. 非阻塞预备知识点 2. 非阻塞server源码 3. 运行测试(应用linux 的 nc 工具)

2016-06-23 23:00:26 534

原创 epoll详解(二)-- epoll工作模式

本文要点: 1. epoll 两种工作模式 2. epoll 工作模式的选择 3. epoll 编程需要注意的问题

2016-06-23 22:47:57 1518

翻译 epoll详解(一)-- epoll在异步网络编程中的应用

在epoll模型的讲解中,这篇文章写的非常简单易懂,因此翻译过来分享给大家,做为epoll的入门。 模

2016-06-15 23:22:19 709

原创 linux select()详解( 四)-- Unix域字节流最简实例

通过本文你会了解到: 1. Unix域字节流 server的实例 2. Unix域字节流 client的实例 3. Unix域 字节流server和client的运行测试 4. Unix域 C/S模型的思考

2016-06-11 14:34:02 643

原创 linux select()详解( 三)-- TCP最简实例

通过本文你会了解到: 1. TCP server的实例 2. TCP client的实例 3. TCP server和client的运行测试 4. TCP C/S模型的思考

2016-06-04 18:21:30 726

原创 linux select()详解( 二)-- UDP最简实例

通过本文你会了解到: 1. UDP server的实例 2. UDP client的实例 3. UDP server和client的运行测试

2016-05-31 17:10:35 2426

原创 linux select()详解(一)-- 使用及注意事项

通过本文你会了解到: 1. select()原型及参数说明 2. select()应用情景 3. select()注意事项 4. select()作定时器

2016-05-28 17:01:01 4928

翻译 Linux - poll()

linux man中`poll`的翻译,`poll`在设计上解决了`select`可监听描述符的个数限制,但在一些系统中兼容性并不是很好,因此还是建议使用`select`来实现简单`socket`应用,翻译此问仅对`epoll()`的学习做一个铺垫。**名字**poll - 等待描述符上的事件**摘要**

2016-05-21 19:27:31 1569

翻译 Linux - select()

在 Linux 编程时遇到问题最方便的就是应用 `man` 命令, 每一个知识点都讲解得很详细, 所以遇到问题最佳的办法是先 `man` 读懂之后再去网络中搜资料。为方便阅读,此文翻译了 `man select` 的内容。

2016-05-13 17:32:05 1417

原创 二分法查找(Binary Search)

二分查找是在有序数组中查找一个元素的算法,它通过判断中间值进而缩小范围来查找目标值。例在数组 2,5,7,8,10,15,18,20,22,25,28中查找18,如下图所示: C语言实现函数原型: int binary_search(int *array, int imin, int imax, int key)/** * return the index of key.

2015-07-23 22:13:38 590

空空如也

空空如也

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

TA关注的人

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