自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

丁香枝上,豆蔻梢头

提出问题,解决问题,是我前进的动力

  • 博客(13)
  • 问答 (2)
  • 收藏
  • 关注

原创 shell脚本练习(进度条......)

进度条#!/bin/bashi=0bar=""lable=("|" "/" "-" "\\")while [ $i -le 100 ]do let index=i%4 printf "[%-100s][%d%%][\e[43;46;1m%c\e[0m]\r" "$bar" "$i" "${lable[index]}" bar+='#' let i++ u

2017-06-28 19:29:06 382

原创 进程通信2——消息队列

消息队列是由链表实现的,它是基于system V标准。特点:双向通信;基于消息(数据块);不遵循“先入先出”的原则;生命周期随内核;创建新的消息队列或取得已存在的消息队列 int msgget(key_t key,int msgflg);key:可认为是端口号,由ftok()函数生成; msgflg:IPC_CREAT:如果IPC不存在,生成新的IPC资源,否则打开旧的资

2017-06-27 15:26:35 280

原创 进程通信1——管道、命名管道

匿名管道 管道是一种简单的进程通信(IPC)机制。管道实质上就是pipe函数在内核中开辟了一段缓冲区,有一个读端和一个写端。两个进程之间能够通信的本质:通过fork函数传递文件描述符(子进程是父进程的副本,父进程所有打开的文件描述符都被复制到子进程中,父子进程的每个相同的打开描述符共享一个文件表项)使得两个进程可以访问同一个管道,从而实现通信。特点:单向通信(若实现双向通信,必须建立两个管道);

2017-06-26 16:06:23 389

原创 线程

什么是线程? 线程也被称为轻量级进程,是进程内部的一个执行分支,是程序执行流的最小单位(调度的最小单位)。线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程。一个进程中可以有多个线程,其本质是多个线程在同一进程的地址空间运行。线程不拥有系统资源,但它共享所属进程的资源(文件描述符表,各种信号的处理方式,用户id和组id,当前工作目录)。但有些资源是线程独自享

2017-06-25 01:10:03 294

原创 tcp_server的实现

下面是单进程版本,具体问题在代码中标注。#include<stdio.h>#include<netinet/in.h>#include<arpa/inet.h>#include<stdlib.h>#include<string.h>static void usage(const char *proc){ printf("%s [local_ip] [local_port]\n",

2017-06-23 21:32:49 673

原创 端口分类、TCP定时器、URG和PSH对比

端口分类我们这里讲的端口不是传统意义上的物理端口,而是特制TCP/IP协议中的端口。这里端口可以分为TCP端口和UDP端口。两者是独立的,并不冲突。这里端口可以分为三种:周知端口、注册端口、动态端口。周知端口:范围是0~1023,其中80端口分配给www服务,21端口分配给FTP服务等。在地址栏中输入网址时不用指定端口号,因为www服务的端口是默认的80端口。如果你要使用其他端口时,只需在地址后面

2017-06-20 14:05:22 448

原创 TCP握手与挥手

下图是TCP的通讯时序图,并伴有解释 思考:在建立连接时为什么需要“三次握手”?我们来设想一下,如果是两次握手,服务端能够确保它发送的连接数据一定会被客户端收到吗?这显然不可能确保。如果服务端发送的连接数据包丢失,客户端长时间接收不到服务端的信号,他就可能会认为自己发送的连接数据未成功发送给服务端,所以他就会一直向服务端发送连接信号,导致服务端缓冲区里充斥着大量客户端发送的连接请求信号,服务端的很

2017-06-19 19:15:52 344

原创 NAT技术,代理服务器

NAT技术又称网络地址转换技术(Network Address Translation),属于接入广域网技术。是一种将私有(保留)地址转换为合法IP地址的转换技术,他被广泛应用于各种类型Internet接入方式和各种类型的网络中。它不仅解决了IP地址不足的问题,而且还有效地避免了来自网络外部的攻击,隐藏并保护网络内部的计算机。借助于NAT,私有(保留)地址的”内部”网络通过路由器发送数据包时,私有地

2017-06-18 22:55:11 354

原创 生产者消费者模型

我们来认识一下一个模型:生产者消费者模型。在实际的软件开发过程中,可能遇到这种情况:一个模块负责产生数据,另一个模块负责处理数据。注:这里的模块是广义上的模块,可能是进程,线程,类等。产生数据的模块是生产者,处理数据的模块是消费者。但是还不够得上生产者消费者模型,这里还需要一个缓冲区,处于生产者消费者中间,作为中介,生产者往缓冲区生产数据,消费者从缓冲区消费数据。缓冲区的优势: 解耦:假设生产者,

2017-06-18 11:18:55 409

原创 死锁问题

死锁的概念: 指两个及两个以上的进程(线程)在执行过程中,因为争夺资源而造成的一种互相等待的现象。若无外力作用,他们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。这些等待的进程(线程)被称作死锁进程(线程)。对于资源的访问是互斥的,所以当某个进程提出访问资源后,使得有关进程在无力协助下,永远分配不到必须的资源而无法继续运行,这就产生了死锁的问题。死锁产生的条件: 互斥条件;资

2017-06-10 18:20:19 330

原创 AVL树的实现

AVL树又名高度平衡的搜索二叉树,上一篇文章我们讲到二叉搜索树时,说到它存在一个问题:退化,这使得它的时间复杂度从O(lgN)降到了O(N)。为了解决这个问题,出现了一棵新的树,也就是AVLtree,我们先来看看它的性质: 1,它是一棵搜索 二叉树,所以满足每个节点的值大于左子树中任意节点的值,并且小于右子树中任意节点的值。 2,它是一棵平衡树,他要求每个节点的左右子树的深度之差不能超过1,即这

2017-06-10 18:05:29 780

原创 红黑树的模拟实现

这里我来提供两篇写的不错的文章供大家参考: http://www.cnblogs.com/fornever/archive/2011/12/02/2270692.html http://blog.csdn.net/chenhuajie123/article/details/11951777 http://www.cnblogs.com/v-July-v/archive/2011/01/03/2

2017-06-06 23:58:46 410

原创 搜索二叉树的实现

要模拟实现搜索二叉树,必须了解他的性质: 搜索二叉树的性质: 1,每个节点都有一个用于搜索的关键码,每个节点的关键码都不一样; 2,一个节点的左子树上所有的关键码总是小于它,而右子树的关键总是大于它; 3,每一个子树都是一个搜索二叉树;这里简单来模拟实现一下搜索二叉树(递归和非递归): 插入: 当插入一个节点时,你会发现新插入节点不会影响原先树的结构,所以不用调整,这是简单之处。

2017-06-04 23:40:16 460

空空如也

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

TA关注的人

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