自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 半同步-半异步进程池实现 web 服务器

半同步/半异步进程池实现 web 服务器源代码 程序开始时创建一个监听套接字,该套接字被接下来创建的进程池中所有子进程所共享,这么做的目的是为了让父进程负责监听客户端连接,一旦有客户连接,父进程随即从进程池中选取一个子进程,通过管道( m_pipefd ) 向子进程发送一个 new_conn(它是一个整型,值为1),子进程会将该客户所对应的套接字添加至自己的关心事件中。for (

2018-02-01 12:52:45 281

原创 c++多态特性

本篇博客主要讲解c++特性之一多态参考资料:c++ 面向对象程序设计、hackbuteer1:浅谈c++多态性邮箱:[email protected]. 十二月 2017 02:50下午C++多态多态最初的含义是一种事物有多种形态,c++ 的多态的特性可以简单概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,他是面向对象编程领域的核心概念。C++的多态性是通过虚函数来实现的,虚函数允

2017-12-15 21:37:17 856

原创 进程间通信之管道

星期三, 13. 十二月 2017 06:34下午本篇博客主要讲解用于进程间通信的匿名管道和命名管道参考资料:UNIX环境高级编程邮箱:[email protected]匿名管道 #include <unistd.h> int pipe(int pipefd[2]); //成功返回 0,失败返回 -1经由 pipefd 返回的两个文件描述符,pipefd[0] 为

2017-12-15 19:51:11 334 2

原创 多线程的优缺点及线程池的引入

本篇博客主要讲解多线程的优缺点,以及何时使用线程池感谢巨人的肩膀参考资料:UNIX 环境高级编程、雷明:多线程的优缺点、sunflower:多线程的运用和好处 邮箱:[email protected]简介典型的 UNIX 进程可以看作只有一个工作线程,CPU 在执行任务时实际上是在调度这些线程(线程是操作系统最小的执行单位),每一个线程都是由创建他的进程所管理,进程为线程分配资源,一个进程中的所有

2017-12-10 17:58:01 3403

原创 set 相关函数

本篇博客主要讲解 STL 中与 set 有关的算法,分别是交集(set_intersection)、并集(set_union)、差集(set_difference )、对称差集(set_symmetric_difference)参考资料:cpluscplus、[email protected]感谢观看,请多多指教**注意** 1. 使用这四个函数时必须要保证所传集合有序,在后面的

2017-12-08 17:26:35 334

原创 程序替换

本篇博客主要讲解 linux 下程序替换函数邮箱:[email protected]参考资料:UNIX 环境高级编程感谢观看,请多多指教exec 函数一般我们在一个进程中调用 fork 创建出子进程,该子进程往往需要执行另一个程序,此时我们就需要调用 exec 函数。当进程调用一种 exec 函数时,该进程的执行程序完全替换了新进程,而新程序则从其 main 函数开始执行。注意:exec 并不创建新

2017-12-07 17:35:03 283

原创 空间适配器

本篇博客主要剖析 STL 空间适配器源码,并自己造一个轮子。参考资料:STL源码剖析,侯捷译邮箱:[email protected]欢迎提出问题和建议代码及源码空间适配器为什么要有空间适配器: 处理内存碎片 内存碎片使 CPU 高效处理当前成程序 每一次申请空空间,CPU 都会被打断一次建议最好参照源代码,自己实现一遍,我自己实现的代码里也有注释,如果觉得源代码难读可以直接看我自己实现的,

2017-12-05 21:05:00 379

原创 用两个栈实现队列、用两个队列实现一个栈

本篇博客主要讲解如何用两个栈实现一个队列以及如何用两个队列实现一个栈邮箱:[email protected]代码欢迎指出问题两个栈实现一个队列解题思路 栈中的数据是先进后出,将栈中的数据存入另一个该栈中顺序变为原来进栈的顺序两个队列实现一个栈解题思路 将两个队列中的数据相互倒,你倒过来留最后一个,我倒过去留最后一个。

2017-12-02 19:43:00 202

原创 判断元素出栈、入栈顺序的合法性

本篇博客主要讲解怎样判断元素出栈、 入栈顺序的合法性邮箱:[email protected]欢迎提出问问题问题描述 给定入栈顺序,判断出栈顺序是否合法解题思路 模拟出栈顺序,将出栈划分为几次,原来栈只要入栈一次就打破了连续出栈的顺序,让现在对比栈匹配出栈元素如果匹配到,就判断出栈顺序(需要判断的出栈顺序)和当前对比栈顺序是否相同, 如果相同清理对比栈元素,后面存放下一次连续的 pop。每一次

2017-12-02 17:23:33 454

原创 进程控制

本编博客主要介绍进程的一些基本概念感谢观看,欢迎提出问题联系方式:[email protected]进程1. 进程标志每一个进程都有一个非负整数用来表示唯一的进程,这个整数就是进程 ID 可以用 ps 命令和 top 命令来查看。除了进程 ID 还有一些其他标识符。下列函数返回这些标识符2. 函数 fork已给现有的进程可以调用 fork 函数创建一个新进程。 frok 函数被调用一次返回两次

2017-11-27 16:20:24 165

原创 AVLTree 学习

本篇博客主要讲解 AVLTree 的插入 修改 查找 判断感谢观看,欢迎提出建议和问题联系方式:[email protected]完整代码AVLTree维基百科是这么解释的在計算機科學中,AVL 樹是一種自平衡二叉搜索樹。這是第一個要發明的數據結構。在 AVL 樹中,任何節點的兩個子樹的高度最多不同一個; 如果在任何時候它們不同於一個,則重新平衡來恢復此屬性。查找,插入和刪除都在平均和最差情況下都採

2017-10-20 12:11:34 329

原创 基于哈夫曼编码的文件压缩

本篇主要介绍如何利用哈夫曼编码使文件进行压缩、如何构建哈夫曼树欢迎提出问题和建议联系方式:[email protected]代码链接哈夫曼树树的结构(节点结构)。两个指向叶子节点的指针、一个权值、一个指向父节点的指针(用来构建哈夫曼码)template <class T>struct HuffmanNode{ T _wt; HuffmanNode<T>* _left; H

2017-10-13 14:30:39 610

原创 TCP三次握手四次挥手

本篇博客主要讲解 TCP 的三次握手和四次挥手的过程感谢观看,欢迎提出建议和问题联系方式:[email protected][参考资料] : linux高性能服务器编程此篇文章大多引用自此书。TCP 服务的特点传输层协议主要有两个:TCP 协议和 UDP 协议。TCP 协议相对于 UDP 协议的特点是:面向连接、字节流和可靠传输。使用 TCP 协议时通信双方必须先建立连接,然后才能开始数据的读写。

2017-10-06 09:02:12 249

原创 ARP协议详解

解析arp协议的内容

2017-09-30 20:19:45 458

原创 命名管道

命名管道与匿名管道相比,命名管道使两个没有血缘关系的进程看到同一份临界资源。管道创建:可以用mkfifo也可以用mknod#include #include int mkfifo(const char* filename, mode_t mode)int mknod(const char* filename, mode_t mode | S_SIFIF0

2017-08-01 17:14:14 331

原创 重建二叉树

重建二叉树要求:由前序遍历和中序遍历重建二叉树(前序序列:1 2 3 4 5 6 - 中序序列:3 2 4 1 6 5) 解题思路:在前序遍历的数组中取出第一个元素,在中序遍历中找到该元素,以该元素为中心左半部分是其左子树上的元素,右半部分是其右子树上的元素。#include #include using namespace std;int prev[102

2017-07-29 10:34:07 219

原创 E - A == B ? HDU - 2054

E - A == B ? HDU - 2054Give you two numbers A and B, if A is equal to B, you should print “YES”, or print “NO”. Input each test case contains two numbers A and B. Output for each case, if

2017-07-22 21:37:26 287

原创 统计难题

统计难题Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Submission(s): 42063 Accepted Submission(s): 15153Problem Description Ignatius最近遇到一个难题,老师交给他很多单词

2017-07-21 21:29:54 229

原创 计算N的阶乘

计算N的阶乘#include using namespace std;int main(){ int a[1024] = {0}; int n = 0; while (scanf("%d",&n) == 1){ memset(a, 0, sizeof(a)); a[0] = 1;//代表从1开始乘 int k = 1000;

2017-07-21 16:00:48 440

原创 链表

链表#ifndef __LIST_H__#define __LIST_H__#include #include #include using namespace std;template class T>struct ListNode{ ListNode* _next; ListNode* _prev; T _d; ListNode(T d) :_

2017-07-20 20:15:09 187

原创 Rightmost Digit

Rightmost DigitTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 56655 Accepted Submission(s): 21400Problem Description Given a positive

2017-07-18 10:46:35 200

原创 Big Number

Big NumberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8311 Accepted Submission(s): 5726Problem Description As we know, Big Number

2017-07-17 20:43:10 217

原创 Let the Balloon Rise

Let the Balloon RiseTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 123205 Accepted Submission(s): 48540Problem Description Contest ti

2017-07-17 20:37:18 184

原创 The area

The areaTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Problem Description Ignatius bought a land last week, but he didn’t know the area of the land because

2017-07-17 12:54:15 258

原创 七夕节

七夕节Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6335 Accepted Submission(s): 2182Problem Description 七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和

2017-07-16 18:09:27 259

原创 Largest prime factor

Largest prime factorTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6803 Accepted Submission(s): 2078Problem Description Everybody kno

2017-07-16 17:26:25 186

原创 找新朋友

找新朋友Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4168 Accepted Submission(s): 1894Problem Description 新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员

2017-07-16 16:24:02 349

原创 基础训练

基础训练基础训练Who's in the MiddleTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4184 Accepted Submission(s): 1543Problem

2017-07-15 21:30:02 230

原创 寻找素数对

寻找素数对时间限制:2000/1000 MS(Java / Others)内存限制:65536/32768 K(Java / Others) 总提交:13910接受提交:7018问题描述 哥德巴赫猜想大家都知道一点吧。我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数。 做好了这件实事,就能说明这个猜想

2017-07-15 21:28:09 235

原创 计算机端口

计算机端口分类计算机端口分类什么是端口端口的作用端口分类1. 按端口号分布划分2. 按协议类型划分什么是端口  “端口”是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物

2017-07-08 20:26:39 279

原创 RM -RF /

使用rm -rf /会发生什么首先在你的终端输入rm -rf /,但在敲回车之前,先确保这只是一个没用的虚拟机,而不是你用吃饭学习养家糊口的。 敲下回车后你可能会出现这种情况我用的是centos5.x,大爱啊,有木有。为了防止我敲错还特意加了提示。但固执的你一定要坚持看看rm -rf /后会发生什么,但你又不想装一台虚拟机,所以我做了这件事 你以为我

2017-06-11 22:40:06 750

原创 线程的同步与互斥

线程的同步与互斥线程的同步与互斥mutex (互斥量)每个线程专属的私有空间,其中上下文信息和栈私有空间很是重要。当多个线程在进程中运行时,他们看到同一份地址空间,这使得线程之间很容易的看到一份公共资源(临界资源),当多个线程看到同一份资源并对这份公共资源进行读写时,我们希望这份资源是原子性的,即我在使用这份资源时我不希望有其他执行流

2017-06-11 16:01:46 220

原创 线程的分离和结合

线程的分离和结合线程的分离和结合线程的分离和结合线程同步与互斥 有关分离线程线程的分离和结合在任何y个i时间点上,线程是可结合的(joinable)或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死。在被其他线程回收之前,它的存储器资源(例如栈)是不释放的。相反,一个分离的

2017-06-10 22:01:39 402

原创 管道(下)

命名管道命名管道简介概念命名管道的创建与读写实现简介之前我们所介绍的是匿名管道,它独有的特点适用于具有血缘关系的进程之间实现进程间通信命名管道则允许两个毫不相干的进程实现进程间通信。 创建命名管道用mkfifo()概念管道的一个不足之处是没有名字,因此,只能用于具有亲缘关系的进程

2017-06-09 16:11:10 236

原创 管道

管道(上)管道(上)为什么需要管道what is 管道(pipe)几种特殊情况总结为什么需要管道每一个进程在正常情况下都有自己的地址空间(address speace),这样的好处是让进程运行具有独立性,且凡是由进程编写的程序,该进程的稳定性好,(一个进程在自己的地址空间内运行,当他不小心崩溃了他也不会影响到其他进程),但

2017-06-08 15:55:29 214

原创 线程_上

线程线程简介线程创建线程等待线程终止简介简单来说线程就是进程的一个分支,在进程内部运行,这个被创建出来的线程在Linux系统下可以看作是一个轻量级的进程(LWP),一旦一个轻量级进程被创建出来,他与父进程共用同一份代码和数据,为什么说是轻量级进程呢,要知道在Linux系统下,并没有描述线程的这一结构体,所以并没有真正意义上

2017-06-07 15:32:01 273

原创 搜索树BinarySearchTree

搜索树搜索树定义组成主要实现操作插入插入代码删除递归版非递归版完整实现定义二叉搜索树(Binary Search Tree), 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。

2017-05-30 16:25:16 158

原创 vfork

vforkfork后父进程和子进程通过自己的地址空间和页表看到自己的物理地址上的代码和数据,而vfork子进程和父进程共享一份地址空间结合页表映射到同物理内存上如何证明#include #include #include #include #include #include #include int main(){ pid_t id = v

2017-05-30 15:40:19 352

原创 输入输出重定向

输出\入重定向和追加重定向原理什么是输出重定向,举个例子把hello world从键盘输入的数据输入到mylog中 把mylog中的内容输出到显示屏文件 这就是输出重定向 cat+回车同理输入重定向,是先将0号数组中的文件关闭,再打开一个文件,以后就从该文件读取数据 cat 现在我们看看这个代码运行结果

2017-05-24 22:27:25 2391

原创 文件描述符fd与FILE

FILE与文件描述符fdFILE与文件描述符fdFILE文件描述符FILEFILE结构体是stdio.h所包含的结构体之一,注意FILE是一个数据结构而不是磁盘上的任何一个文件 FILE在C中作为一个结构体存在结构如下:#ifndef _FILE_DEFINED struct _iobuf {

2017-05-15 19:26:01 665

空空如也

空空如也

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

TA关注的人

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