自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tycoon的专栏

淘测试

  • 博客(95)
  • 资源 (92)
  • 收藏
  • 关注

原创 关于python多线程编程中join()和setDaemon()的一点儿探究

#!/usr/bin/env pythonimport threadingimport timeclass MyThread(threading.Thread):    def __init__(self, func, args, name=''):        threading.Thread.__init__(self)        self.name=name

2014-09-30 09:52:52 487

原创 动态地改变Python搜索路径

sys.path.insert(0, os.path.normpath(os.path.join(os.path.normpath(os.path.join(os.getcwd(),os.path.dirname(__file__))), './..')))

2014-09-23 19:09:30 2029

原创 关于硬链接和软连接(符号链接)的区别

http://blog.csdn.net/hairetz/article/details/4168296

2014-09-23 11:48:44 498

原创 《Unix环境高级编程》:单实例守护进程的实现

//《APUE》程序13-1:初始化一个守护进程//《APUE》程序13-2:保证只运行某个守护进程的一个副本//《APUE》程序14-5:在文件整体加锁#include #include #include #include #include #include #include #include #include #include #includ

2014-09-23 10:44:57 391

原创 文件锁 记录锁

下面介绍两种两种Linux下对文件加锁的两种方式一、文件锁思想:假设有一个文件A。创建一个加锁文件B,通过不同的进程互斥的访问此加锁文件B达到互斥的访问文件A的目的。源码如下

2014-09-23 10:40:56 442

原创 非阻塞socket的连接 connect

连接套接字,阻塞的套接字超时时间很长无法接受,而是用非阻塞套接字时使用的方案也有多种。后者是个比较好的方法方案1:不断重试,直到连接上或者超时:int connect_socket_timeout(int sockfd,char *dest_host, int port, int timeout){  struct sockaddr_in address;  struct

2014-09-19 22:24:42 4866

原创 Linux的udp服务端、客户端例子

UDP编程的服务器端一般步骤是:1、创建一个socket,用函数socket();2、设置socket属性,用函数setsockopt();* 可选3、绑定IP地址、端口等信息到socket上,用函数bind();4、循环接收数据,用函数recvfrom();5、关闭网络连接;UDP编程的客户端一般步骤是:1、创建一个socket,用函数socket();2、设置socket属性,用函数set

2014-09-18 11:58:48 665

原创 ICMP报文

一。为什么需要ICMP?因为IP协议不提供可靠性且不能保证信息传递,因此发生问题时,通知发送人是很重要的。(IP协议是一种不可靠的协议,无法进行差错控制。但IP协议可以借助其他协议来实现这一功能,如ICMP)二。什么是ICMP? ICMP: Internet Control Message Protocol 即Internet消息控制协议。ICMP报文分为两种类型(1)ICMP差错报告

2014-09-18 11:41:24 4822

原创 非阻塞connect的实现

步骤1: 设置非阻塞,启动连接实现非阻塞 connect ,首先把 sockfd 设置成非阻塞的。这样调用 connect 可以立刻返回,根据返回值和 errno 处理三种情况:(1) 如果返回 0,表示 connect 成功。(2) 如果返回值小于 0, errno 为 EINPROGRESS,  表示连接      建立已经启动但是尚未完成。这是期望的结果,不是真正的错误。

2014-09-12 19:34:48 488

原创 tcpdump

tcpdump默认只抓取一个包的前68或96个字节,如果要查看更多内容,需要加"-s number"选项,下面是我最常用的选项:-i any : 监听所有接口,-n : 不解析主机名-nn : 不解析主机名和端口名

2014-09-11 19:57:39 315

原创 用C语言实现Ping程序功能 IBM**************8

PING协议是用来检验本地主机与远程主机是否连接,发送的是ICMP ECHO_REQUEST包。普通的套接字是基于TCP或者是UDP的,无法发送ICMP包,所以必须用原始套接字来实现。PING协议的客户端类型值为8,代码值为0,表示请求。而PING协议的响应端类型值为0,代码值也为0,表示应答. 以太网数据部分的最小值为46字节,而IP首部占20个字节,ICMP的首部占8个字节,所以PING的数据

2014-09-11 16:48:06 626

原创 用原始套接字编程实现linux中的 ping 命令 ************************

用原始套接字编程实现linux中的 ping 命令#include #include #include #include signal.h> #include #include #include #include #include #include #include #include #include #include

2014-09-11 16:04:12 769

原创 原始套接口的ping命令编程

原始套接口(SOCK_RAW)允许对较低层协议(如IP或ICMP)进行直接访问,常用于检验新的网络协议实现,也可用于测试新配置或安装的网络设备。创建一个原始套接口时,一般格式如下: SOCKET sockid=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);//ICMP协议SOCKET sockid=socket(AF_INET,SOCK_RAW,IPPRO

2014-09-11 15:57:14 481

原创 Python中处理JSON字符串

http://www.crifan.com/files/doc/docbook/json_tutorial/release/html/json_tutorial.html

2014-09-10 14:12:16 6109 1

原创 vim的quickfix模式

通常,我们在开发过程中,经常要写代码,编译,修改编译错误,这个过程会数十遍上百遍的重复。如果你是根据编译器输出的错误信息,打开出错的文件,找到出错的行,然后再开始修改,那效率未免太低下了。利用vim的quickfix模式,可以大大加快这一过程,你可以在vim启动编译,然后vim会根据编译器输出的错误信息,自动跳到第一个出错的地方,让你进行修改;修改完后,使用一个快捷键,跳到下一个错误处,再进行

2014-09-09 20:37:02 1533

原创 Linux如何解决动态库的版本控制

(换句话说,soname不是真实存在的文件,只是在此库中和将来调用此库的文件中保存的一个名字,在加载时去找这个名字,使用时创建一个软连接来指向真实文件,这样真实文件的版本号就可以升级了) Linux 系统,也同样面临和Window一样的问题,如何控制动态库的多个版本问题。Window之前没有处理好,为此专门有个名词来形容这个问题 “Dll hell”,其严重影响软件的升级和维护。 Dll

2014-09-09 13:26:57 491

原创 nm、readelf和共享库

逛论坛时 有人说现在linux系统里的.so大部分不是用gcc -shared生成的,本身不包含符号表,而符号表是保存在一个.a文件里的,链接时只需要那个.a就可以了,类似Windows那样。第一次听说这样的事,我也试试:$nm /usr/lib/libm.sonm: /usr/lib/libm.so: no symbols果然如此,上网查了查,有人说是因为

2014-09-09 13:16:03 1341

原创 chroot 与 jail

所谓“监牢”就是指通过chroot机制来更改某个进程所能看到的根文件夹,即将某进程限制在指定文件夹中,保证该进程仅仅能对该文件夹及其子文件夹的文件有所动作,从而保证整个server的安全。    创建chroot“监牢”    曾经,Unix/Linux上的daemon都是以root权限启动的。当时,这似乎是一件理所当然的事情,由于像Apache这种server软件须要绑定到“众所

2014-09-09 13:02:12 778

原创 shell中括号的特殊用法 linux if多条件判断

Shell中的括号有其特殊的用法, 现总结如下:1. 符号$后的括号${a} 变量a的值, 在不引起歧义的情况下可以省略大括号.$(cmd) 命令替换, 结果为shell命令cmd的输出, 和`cmd`效果相同, 不过某些Shell版本不支持$()形式的命令替换, 如tcsh.$((exp)) 和`expr exp`效果相同, 计算数学表达式exp的数值, 其中exp只要符合C语言

2014-09-09 11:09:45 27340 1

原创 网络后台开发工具 tcpdump(抓包) route(路由) nslookup和host(路由) md5sum(版本校验)

tcpdump抓包:想输出点分十进制:        tcpdump    -n     *** 想输出mac地址:            tcpdump    -e     *** 抓到目标为A的包:         tcpdump    dst      A                         //需要root权限,或sudo。 route添加路由 : 

2014-09-09 10:45:08 960

原创 Shell脚本内置变量 和 awk脚本内置变量 比较

1、参数个数:            Shell使用$#表示输入的参数个数;           awk使用ARGC表示输入的参数个数;2、参数内容:            Shell使用$*或者$@表示参数的内容;Shell没有将参数当做数组来处理。            awk使用ARGV表示参数内容;awk将参数当做一个数组来出来。3、内置变量:         

2014-09-09 09:39:30 917

原创 awk脚本 模式匹配语句 ~匹配运算符 !~不匹配运算符

网络后台开发工具     tcpdump(抓包) route(路由)  nslookup和host(路由)  md5sum(版本校验) Linux文件权限的修改chmod命令参数详解及umask值的含义awk脚本 模式匹配语句 ~匹配运算符 !~不匹配运算符  2010-12-02 09:16:49|  分类:Shell脚本编程 |  标签:|举

2014-09-09 09:37:22 5845

原创 shell如何模块化和复用——shell深入学习

shell如何模块化和复用——shell深入学习2011-09-18 星期天 阴天基本上所有的编程语言都支持模块化,以达到功能复用的效果。比如java和python的import xxx。C/C++的include。那么shell支持模块化吗?shell本质上并不支持模块化,但是有些机制可以使它达到类似的效果。首先要了解有两种方式可以执行一个sh

2014-09-05 20:45:43 686

原创 shell

if 语句格式if  条件then Commandelse Commandfi                              别忘了这个结尾If语句忘了结尾fitest.sh: line 14: syntax error: unexpected end of fi    if 的三种条件表达式

2014-09-05 20:34:22 335

转载 深入理解SetUID ************************888

而内核检查一个进程是否具有访问某权限时,是使用进程的有效用户 ID 来进行检查的。

2014-09-05 18:24:24 555

原创 Linux使用日志系统调试守护进程

守护进程脱离终端控制,在调试时候造成一定不便。可以用syslog服务把程序出错信息输入日志文件中。从而可以看出问题所在。  把上次的程序用日志方式改写。  主要用到三个函数:syslog,openlog,closelog。  守护进程的写法不变,加入日志服务。  代码来自华清远见:  #include  #include  #include  #include 

2014-09-05 18:08:02 1218

原创 系统日志函数syslog(),openlog(),closelog()

今天完成一个守护进程实验。  1 熟悉守护进程编写和调试(系统日志)  2 编写多进程程序的方法  本实验首先创建一个守护进程,然后在其中新建一个子进程,暂停10秒,自动退出,守护进程收集子进程退出的消息。源代码来自华清远见  #include  #include  #include  #include  #include  #include  int ma

2014-09-05 18:05:08 722

原创 linux守护进程小例 与syslog

程序目的:设计三个并发的守护进程在后台运行,其中第一子进程写守护进程的运行日志记录,第二子进程child2则监控进程中是否有gedit工具调用,第二子进程child3则检查自己是否有新邮件到达,若有则将邮件内容输出到一个主目录下文件 程序分析:此处我借用fork()函数创建三个并发的守护进程,借用syslog调试程序运行;其中,第二子进程child2作为gedit工具调用的监控守护进程,

2014-09-05 17:40:04 759

原创 linux下daemon守护进程的实现(以nginx代码为例)

ngx_int_tngx_daemon(ngx_log_t *log){    int  fd; // 让init进程成为新产生进程的父进程: // 调用fork函数创建子进程后,使父进程立即退出。这样,产生的子进程将变成孤儿进程,并被init进程接管, // 同时,所产生的新进程将变为在后台运行。    switch (fork()) {    case -1:

2014-09-05 17:37:19 660

原创 Linux中exec系列函数的应用

这段时间在研究linux中用户登陆和shell执行程序的原理。我们知道,shell命令分为内部命令和外部命令,内部命令有诸如cd,history,exit,echo等,常见的外部命令有ls,ping,netstat等,通过type命令可以查看一个命令是内部命令还是外部命令。当执行的命令是一个内部命令是,shell直接执行;那么shell是如何执行一个外部命令的呢?Shell本身也是一个程序

2014-09-05 17:27:24 1866

原创 linux下dup/dup2函数的用法

系统调用dup和dup2能够复制文件描述符。dup返回新的文件文件描述符(没有用的文件描述符最小的编号)。dup2可以让用户指定返回的文件描述符的值,如果需要,则首先接近newfd的值,他通常用来重新打开或者重定向一个文件描述符。他的原型如下:#include int dup(int oldfd);int dup2(int oldfd,int newfd);dup 和dup2都

2014-09-05 17:26:17 480

原创 用Python给Linux编写守护进程

守护进程(daemon)是指在UNIX或其他多任务操作系统中在后台执行的电脑程序,并不会接受电脑用户的直接操控。此类程序会被以进程的形式初始化。通常,守护进程没有任何存在的父进程(即PPID=1),且在UNIX系统进程层级中直接位于init之下。守护进程程序通常通过如下方法使自己成为守护进程:对一个子进程调用fork,然后使其父进程立即终止,使得这个子进程能在init下运行。–维基百科

2014-09-05 17:17:46 539

原创 Linux 技巧:让进程在后台可靠运行的几种方法

http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html

2014-09-05 16:55:21 295

转载 Linux修改进程名称(setproctitle())

每一个c程序都有个main函数,作为程序启动入口函数。main函数的原型是int main(int argc , char *argv[]);其中argc表示命令行参数的个数;argv是一个指针数组,保存所有命令行字符串。Linux进程名称是通过命令行参数argv[0]来表示的。Linux 还有环境变量参数信息,表示进程执行需要的所有环境变量信息。通过全局变量Char **environ;

2014-09-05 16:29:17 2320

原创 memcached源码学习-Main线程

看了看memcached, memcached 主要的线程框架是master-slave的主线程-工作线程模式,单进程,多线程,之间通过管道和链表通信,基本就是这样。下面具体看下代码。worker工作线程memcached服务其使用libevent库进行网络事件的监听等,在main函数的开头,解析完所有的配置参数后,主线程会先创建一个struct event_base *main_ba

2014-09-05 15:59:08 413

原创 memcached源码分析之线程池机制-----worker线程

/* Create threads after we've done all the libevent setup. */    for (i = 0; i         //为线程池创建数目为nthreads的线程,worker_libevent为线程的回调函数,        create_worker(worker_libevent, &threads[i]);    }

2014-09-05 15:50:59 488

原创 memcached Master-Worker 模型分析

scgi的实现是用的多进程,主进程负责监听socket连接请求,然后分发给各个子进程来处理。nginx的实现是用的多进程,创建好子进程之后,各个子进程直接自己来监听socket连接请求并处理。memched的实现则是用的多线程,主线程负责监听请求,然后分发给各个子线程来处理。

2014-09-05 14:36:14 437

原创 Multiple Private Networks with Open vSwitch GRE Tunnels and Libvirt

http://trickycloud.wordpress.com/2014/05/02/multiple-private-networks-with-open-vswitch-gre-tunnels-and-libvirt/

2014-09-05 12:04:13 1038

原创 Using GRE Tunnels with Open vSwitch

http://blog.scottlowe.org/2013/05/07/using-gre-tunnels-with-open-vswitch/ I’m back with another “how to” article on Open vSwitch (OVS), this time taking a look at using GRE (Generic Routing Enca

2014-09-05 11:53:30 652

原创 Linux Switching – Interconnecting Namespaces 母机桥技术

Switching in software on Linux is one of the important parts when using virtualization technologies like KVM or LXC. Typical hosts do not provide one or more physical adapters for each NIC of a virtua

2014-09-05 11:45:45 693

Fisher线性判别

Fisher线性判别

2013-05-26

Fisher线性判别

Fisher线性判别分析实验

2013-05-26

机器学习中文版

机器学习中文版 Tom M. Mitchell

2013-05-26

经典算法研究

十五个经典算法研究

2013-05-24

隐马尔科夫

隐马尔科夫

2013-05-21

决策树ID3算法

决策树ID3算法

2013-05-21

粒子群算法

粒子群算法

2013-05-12

遗传算法入门

遗传算法入门

2013-05-12

hough变换直线

hough变换直线

2013-05-02

图像倾斜纠正

图像倾斜纠正

2013-05-02

车牌字符分割

车牌字符分割

2013-04-26

Hough变换原理

Hough变换原理

2013-04-26

人脸识别技术

人脸识别技术

2013-04-26

人脸识别算法

人脸识别算法

2013-04-22

图像预处理.

图像预处理.

2013-04-22

图像归一化

图像归一化

2013-04-22

数字图像处理

数字图像处理课设

2013-04-22

远程线程入门

call入门

2013-01-09

pragma data_seg

#pragma data_seg应用

2013-01-09

套接字五元组

套接字五元组

2013-01-09

cavium octeon

cavium

2016-07-19

线性变换 线性变换

线性变换 线性变换线性变换线性变换线性变换线性变换

2015-08-17

虚拟化云计算

从虚拟化到云计算_VMware_vSphere概略

2014-08-01

boltzmann机程序

boltzmann机程序

2014-04-21

遗传算法GA

2012年数学建模之遗传算法 国防科大

2014-02-21

二叉排序树插入

二叉排序树插入

2013-08-25

微型计算机系统

小型微型计算机系统投稿要求 小型微型计算机系统投稿要求

2013-08-21

组合数算法

组合数算法

2013-08-11

均匀随机排列数组

均匀随机排列数组

2013-07-26

蓄水池抽样

蓄水池抽样 均匀抽样蓄水池抽样 均匀抽样

2013-07-26

随机数生成

随机数生成

2013-07-15

Tarjan应用LCA

Tarjan应用LCA

2013-07-15

tarjan求割边

tarjan求割边

2013-07-15

图的基本算法

图的基本算法

2013-07-15

Tarjan算法

最近公共祖先LCA Tarjan算法

2013-07-15

EM算法分析

EM算法分析

2013-07-04

感知器算法

模式识别中感知器算法

2013-05-30

线性判别分析

线性判别fisher

2013-05-29

遗传算法SVm

遗传算法和最小二乘支持向量机遗传算法和最小二乘支持向量机遗传算法和最小二乘支持向量机

2013-05-29

Fisher判别

\Fisher线性判别

2013-05-26

空空如也

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

TA关注的人

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