自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhangxiong2532的博客

不积跬步无以至千里

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

原创 内核经典数据结构list 剖析

list_head刨析,附测试程序

2023-02-16 17:15:20 568 2

原创 socket编程注意事项

1 进程间通信的方式常用的进程间通信的方式有:管道(pipe),命名管道(named pipe),信号,消息队列,共享内存,信号量等,这些通信基本是本机进程之间的,在网络中的主机之间是无法适用的。2 套接字socket套接字的出现主要解决网络间各主机间进程通信的问题,换而言之现在所以网络中的进程通信都采用socket方式。1.2.1 套接字的分类SOCK_STREAM流套接字,提供面向连接、可靠的数据传输服务,数据按字节流、按顺序收发,保证在传输过程中无丢失、无冗余。TCP协议支持该套接字

2022-04-07 14:17:44 2244

转载 WEB请求过程,http解析,浏览器缓存机制,DNS机制,CDN

转自:https://www.cnblogs.com/wade-luffy/p/5905786.html概述发起一个http请求的过程就是建立一个socket通信的过程。我们可以模仿浏览器发起http请求,譬如用httpclient工具包,curl命令等方式。curl "http://www.baidu.com"   返回页面数据curl -I "http://www.baid...

2018-11-26 15:21:11 1243

原创 简单的C语言事件接口,框架接口的实现

        一个C语言的简单事件接口实现,这里用的是结构体数组,请直接看代码,代码有详细注释。 #include <stdio.h>#include <string.h>#define CMDSIZE 100typedef int (*ptrFun)(int num);typedef struct Command_t{ const cha...

2018-11-06 18:46:03 2957 2

转载 strcpy与memcpy以及strncpy

1. strcpy函数   strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。   函数原型及实现:[c-sharp] view plain copychar* strcpy(char* strDst, const char* strSrc)      {

2016-03-11 16:05:05 415

转载 NAT的四种类型及类型检测

考 虑到UDP的无状态特性,目前针对其的NAT实现大致可分为Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四种。值得指出的是,对于TCP协议而言,一般来说,目前NAT中针对TCP的实现基本上是一致的,其间并不存在太大差异,这是因为TCP协议本身 便是面向连接的,因此无需考虑网络连接无状态所带来复杂性。用语定义

2016-03-09 16:05:15 629

原创 结构体字节对齐,pragma pack,__attribute__(packed)

程序编译器对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏   蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式。例如我们设置结构体的对齐方式:struct student{int age;char c;};对于以上结构体,默认用sizeof输出大小为8字节,默认的字节对齐方式是4,当然我们也可以设置他的对齐   方式,如下:...

2016-03-08 14:46:32 15356 2

转载 随机函数 rand,srand,random,srandom 的区别与使用

函数定义:       int rand(void);                                         返回 0 ------- RAND_MAX 之间的一个 int 类型整数,该函数为非线程安全函数。并且生成随机数的性能不是很好,已经不推荐使用。       void srand(unsigned int seed);          设置种子值,一

2016-03-07 17:36:06 1288

转载 linux下与实践相关的结构体 struct timeb,struct timeval ,struct timezone,struct timespec,struct tm 等

1、时间类型。Linux下常用的时间类型有4个:time_t,struct timeb, struct timeval,struct timespec,clock_t, struct tm.(1) time_t是一个长整型,一般用来表示用1970年以来的秒数.该类型定义在中.一般通过 time_t time = time(NULL); 获取.(2) struct t

2016-03-07 17:34:33 6918

转载 linux下gettimeofday()的使用

一.gettimeofday()函数的使用方法:1.简介:在C语言中可以使用函数gettimeofday()函数来得到时间。它的精度可以达到微妙2.函数原型:#includeint gettimeofday(struct  timeval*tv,struct  timezone *tz )3.说明:gettimeofday()会把目前的时间用

2016-03-07 17:30:08 1038 1

转载 NAT穿透,打洞,NAT类型

看完就懂了,详细易懂一、什么是NAT?为什么要使用NAT?NAT是将私有地址转换为合法IP地址的技术,通俗的讲就是将内网与内网通信时怎么将内网私有IP地址转换为可在网络中传播的合法IP地址。NAT的出现完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。 二、NAT的分类STUN标准中,根据内部终端的地址(LocalIP:Loca

2016-03-07 14:33:32 3831 2

转载 socket一个完整的过程中TCP的11中状态

TCP状态图详解

2016-02-29 09:57:11 660

原创 C语言日志的实现,用宏实现日志

我们都知道在写代码的时候日志是必不可少的,那么该如何写日志呢,请往下看:以前我是这么写日志的:用fopen,open等创建好文件,然后将write,fwrite封装,这样就可以实现基本的日志。但是这样却又很多弊端,比如写入的日志的行号,所在文件名,函数名等无法写入,这样的日志用着不方面。最近学习了一种新的方法,他能弥补上面所说的不足。下面我们主要通过代码看一下:注:这里我们就不

2016-02-24 12:30:30 2818

原创 进程同步,条件变量,pthread_cond_wait,pthread_cond_init,PTHREAD_COND_INITIALIZER

条件量同互斥锁一样也是进程同步的一种机制

2016-02-22 14:50:55 5312

原创 浅谈进程非正常退出时资源回收相关的函数pthread_cleanup_push/pthread_cleanup_pop

进程非正常退出时资源的回收

2016-02-22 12:25:43 982

转载 CURL函数简单介绍,CURL简单用法,初识CURL

libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。

2016-01-31 12:13:31 5070 1

原创 fwrite,fflush,你不知道的事!

正常调用fwrite函数后数据没有写入文件的原因之一。

2016-01-29 18:51:16 23087 5

原创 getopt_long 解析命令行参数(--help)

大家可能用到过getopt函数来解析命令行参数,如./a.out -a xx -b xx .....,这些被称为短参数,有时我们在编译一些开源库的时候会见到这样解析命令行参数,如--help ,--DIR /home/test,这些则为长参数,而长参数的解析可以用getopt_long函数,下面我们仔细来说说。头文件:#include函数原型:int getopt_long(int

2016-01-15 11:39:09 1037

转载 poll解析 ,poll和select区别

poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,下面是这个函数的声明:#include int poll(struct pollfd fds[], nfds_t nfds, int timeout);参数说明:fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符;每当调用这

2016-01-14 16:26:58 719

原创 获取命令行参数,getopt

获取命令行参数,getopt

2016-01-14 15:58:44 581

原创 用二进制,十进制,输出一个随机数

现获取一个随机数,并用2进制10进制和16进制,分别输出

2016-01-13 17:22:22 818 1

原创 关于创建线程后CPU使用率100%的问题

CPU使用100的问题之一

2016-01-08 09:56:02 4053

转载 CentOS7/RHEL7 systemd详解

CentOS7/RHEL7 systemd详解 目录1. 为什么是systemd(1) 关于Linux服务管理(2) SysV init的优缺点(3) UpStart的改进(4) systemd的诞生(5)为什么systemd能做到启动很快2. SysV init介绍(1) 什么是SystemV(2)SysV init的运行级别(3)SysV

2015-10-22 17:20:12 1332

原创 linux下设置代理服务器

代理服务器,顾名思义就是局域上不能直接上网的机器将上网请求(比如说,浏览某个主页)发给能够直接上网的代理服务器,然后代理服务器代理完成这个上网请求,将它所要浏览的主页调入代理服务器的缓存;然后将这个页面传给请求者。这样局域网上的机器使用起来就像能够直接访问网络一样。     并且,代理服务器还可以进行一些网站的过滤和控制的功能,这样就实现了我们使用它的初衷——控制和节省上网费用。   

2015-09-21 12:30:06 27567 3

空空如也

空空如也

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

TA关注的人

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