自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

隙光

写写更健康~

  • 博客(38)
  • 资源 (3)
  • 收藏
  • 关注

原创 Linux子进程继承父进程的文件描述符

Linux子进程可以很方便地继承父进程的文件描述符

2017-09-05 10:42:45 4257 1

原创 linux下的argv与environ变量

linux下environ = argv + argc + 1,其中1是argv结束的NULL指针,并且它们指向的数据存储在连续的内存块中。

2017-08-29 13:54:01 1286

原创 Getting Started

1.1 ChunksChunks是一个代码文件或者命令行交互模式的一行代码,更特别地,是一个简单的语句。例如:命令行交互模式[root@lghvm001 practise]# luaLua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio> a = 1> b = a*2> print(a,b)1 2> > c

2017-08-18 15:35:38 347

原创 搭建Lua开发环境

lua安装curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz tar zxf lua-5.3.4.tar.gz cd lua-5.3.4 make linux test #如果是苹果电脑,则是make macosx test第一个例子“Hello,world!”一、直接在命令行运行 [lgh@lghvm001 lua-5.3.4]$ lua

2017-08-18 15:03:08 324

原创 redis高可用:keepalived+redis主从部署

Redis主从+Keepalived

2017-08-11 15:30:56 13942 2

原创 模拟微信红包派发算法

输入红包总金额,红包数。输出派发的红包金额。#include #include #include #define RAND(min,max) \ ((min) + (max)*((double)random()/RAND_MAX))int main(int argc, char *arg[]){ double total, randmax, min = 0.01, bon

2017-07-24 17:57:31 1377

原创 高可用系统组件keepalived部署

1 keepalived简介1.1什么是Keepalived?什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,那说到keepalived时不得不说的一个协议就是VRRP协议,可以说这个协议就是keepalived实现的基础,那

2017-07-21 16:37:05 2888

转载 Epoll在LT和ET模式下的读写方式

在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unavailable总结:这个错误表示资源暂

2017-05-08 18:17:17 319

转载 使用Nginx实现UDP反向代理

原文:https://www.hi-linux.com/posts/14615.html?utm_source=tuicool&utm_medium=referral在「使用Nginx实现TCP反向代理」一文中讲解了如何实现TCP转发功能。今天讲讲怎样实现UDP的反向代理,Nginx从1.9.13起开始发布ngx_stream_core_module模块不仅能支持TCP代理及负载均衡,其实

2017-04-17 18:41:52 32786 3

转载 mac 连接mysql提示 Warning: mysqli::real_connect(): (HY000/2002): No such file or directory

1.首先登录mysql命令行,查看unix socket所在目录。mysql> STATUS--------------/usr/local/mysql/bin/mysql  Ver 14.14 Distrib 5.7.15, for osx10.11 (x86_64) using  EditLine wrapperConnection id: 2

2017-02-18 23:02:38 14487

转载 pthread_sigmask 控制线程的信号掩码

示例1:/* 示例一:屏蔽信号SIGINT 来源:http://www.leoox.com/?p=321 编译:gcc pthread_sigmask1.c -lpthread 运行后,你发现你按下CTRL+C(触发SIGINT信号),这个程序根本停不下来。因为SIGINT信号已经如我们所愿被屏蔽掉了。*/#include #include #include #

2016-12-13 10:48:43 5683

转载 __sync_fetch_and_add系列的命令

__sync_fetch_and_add系列的命令,发现这个系列命令讲的最好的一篇文章,英文好的同学可以直接去看原文。Multithreaded simple data type access and atomic variables     __sync_fetch_and_add系列一共有十二个函数,有加/减/与/或/异或/等函数的原子性操作函数,__sync_fetch_and_ad

2016-12-08 10:02:32 678

原创 中国象棋将帅问题

#include int main(){ struct{ unsigned char a:4; unsigned char b:4; }i; for (i.a = 1; i.a <= 9; i.a++) { for (i.b = 1; i.b <= 9; i.b++) { if (i.

2016-11-29 23:17:43 385

转载 printf hex msg

static void hexdump (FILE *fp, const char *name, const void *ptr, size_t len) { const char *p = (const char *)ptr; size_t of = 0; if (name) fprintf(fp, "%s hexdump (%zd bytes):\n", name,

2016-11-29 15:29:01 652

原创 安装部署kafka

说明:本博客是对学习安装部署kafka的总结,某些资源来自互联网,如有雷同,纯属引用参考。1 zookeeper集群安装部署      由于zookeeper集群的投票选举机制,集群机器数量必须是单数,这里以三台机器作为一个集群为例。假设这三台机器的IP分别是:172.30.1.20、172.30.1.21、172.30.1.22。      用域名代替IP访问,修改/etc/host

2016-11-28 16:31:54 1201

转载 更改系统udp缓冲区大小

来源:http://www.tuicool.com/articles/b6Z3au鉴于tcp有重传机制,更多的时候udp对收发缓冲区的大小可能更加敏感一点。udp缓冲区的大小主要和以下几个值有关:/proc/sys/net/core/rmem_max ——— udp缓冲区的最大值,单位字节,下同 /proc/sys/net/core/rmem_default ——— udp缓冲区的

2016-11-28 11:13:48 14239

转载 校验和的计算/校验算法

这里使用算法和IP头部校验算法一致    计算CheckSum:将报文CheckSum字段初始化为0,将整个报文使用下列get_checksum()函数进行计算,将其结果填入报文的CheckSum字段。    校验CheckSum:将整个报文使用下列get_checksum()函数进行计算,若计算结果为0,则校验正确,否则校验失败。       计算/校验算法: unsigne

2016-11-03 14:52:13 3833

原创 jsoncpp库使用例子

从json格式的字符串中解析读://g++ jsoncpp_read_sample.cpp -I/usr/local/include/jsoncpp -ljsoncpp#include #include #include int main(void) { std::string strjson = "{\"key1\":\"value1\",\"array\":

2016-10-19 17:53:55 2068

原创 Linux如何避免僵死进程

僵尸进程的避免方法:方法一: 忽略SIGCLD信号:signal(SIGCHLD, SIG_IGN),系统将不产生僵死进程。方法二: 两次深度fork(),子进程退出,让孙子进程成为孤儿进程,从而init进程将负责清除这个孤儿进程。

2016-09-26 15:18:57 333

转载 Linux 创建多个子进程

Linux 创建多个子进程#include<stdio.h> #include<stdlib.h> #include<unistd.h> //pid_t pid; /* * num:当前已经创建的子进程数 * max:需要创建的子进程数 */ void createsubprocess(int num,int max) { pid_t

2016-02-04 17:24:35 951

转载 linux 精灵函数

void daemon() { int pid, fd; if ((pid = fork()) == -1) exit(1); if (pid != 0) exit(0); if (setsid() == -1) exit(1); if ((pid = fork()) == -1) exit(1); if (pid != 0) exit(0); //for (int i = 0;

2015-07-27 15:44:22 512

原创 计算字符c第一次出现在字符数组src的下标

#include#include/* 功能:计算字符c第一次出现在字符数组src的下标 *   example: strcgap("abc", 'c') 返回2 * 参数:src,源字符串;c,字符; * 返回值:若c在src中返回字符c第一次出现在字符数组src的下标,范围:[0,strlen(src)-1] *     失败返回-1。 */int s

2015-07-27 11:16:48 839

原创 时间格式化函数strftime

#include #include #include int main() {  char timebuf[100]={0};  time_t timep;    struct tm *p_tm;      timep = time(NULL);    p_tm = localtime(&timep); /*获取本地时区时间*/     st

2015-06-12 18:52:25 1146

转载 linux system()函数

/********************************************************************************* Description : wrap system()** Parameter : void** Return : 0 :success; -1 :fail** Author : Ke

2015-02-12 11:01:23 632

转载 从配置文件取参数

/*从配置文件取参数*/int GetParameter(char *File,char *Section,char *Keyword,char *Buffer,int Size){ FILE *fp; char buf[400],tmpbuf[400]; char Sec[400] ,Key[400]; int SecFlag = 0; char *ptb , *psen

2013-04-23 16:01:42 723

原创 获取系统日期

/* get the local system date */int get_system_date(char *str_date){ struct tm *tp=NULL; time_t t; time(&t); tp = (struct tm *)localtime(&t); sprintf(str_date, "%04d%02d%02d", tp

2013-03-28 03:19:04 658

原创 取格式化字符串两头的数值

int is_in_period(int num, char *prd);int main(int argc, char *argv[]){ int num = 15; if( is_in_period(num, "11-20") ) printf("yes!\n"); else printf("no!\n"); exit(0);

2013-03-26 09:53:39 821

原创 Socket编程入门---TCP篇

本文主要介绍socket编程(TCP)的基础知识,通过抽象的概念和具体的实例相结合对socket编程有个基本的了解,本篇介绍TCP,UDP暂且不讲(下篇见)。本文面向的读者:对网络编程懵懂的IT雏鸟,有一定网络编程经验的IT菜鸟可略过,Orz..好了,下面进入主题。。。一、什么是socket(套接字)?socket的英文原义是“插座”,手机要充电需要用充电器连接到供电插座,看有线电

2012-03-05 11:02:23 1095

原创 创建多级路径

由于linux只有创建单级路径的库函数(如果有创建多级路径的库函数,麻烦通知在下),参考了网上的一些代码,觉得它们都有不足之处,遂整合完善之,以示下文,如有还有不足之处,还请指正,多谢合作!#include #include #include #include #include int mk_multy_dir(char *muldir);int main()

2012-02-01 11:24:11 707

原创 关于全局变量

一个源程序有几个模块组成:模块一:log.h, log.c    模块二:aaa.h, aaa,c    模块三:bbb.h, bbb.c模块二和模块三都要用到模块一。但是模块一中又使用了一些全局变量,这些全局变量都定义在log.c中。显然,模块二和模块三会共享模块一中的全局变量。可以写个小程序测试一下:模块一:log.h#ifndef LOG_H#define LOG

2012-01-13 18:18:15 738

原创 libevent的简单应用

Libevent的应用主要围绕几大事件:超时事件、信号事件、读/写事件。下面就一一简单介绍一下它们的使用。超时事件示例: /* * Compile with: * gcc time-test time-test.c -o time-test time-test -I/usr/local/include -L/usr/local/lib -levent */

2011-12-21 11:03:30 8023

原创 解析进程参数

在启动一个进程前,有时会给进程传一些参数,如./main 3,ps -aux等。在控制终端传参数很简单,只要输一串字符串,操作系统会给我们分解参数。现在在代码中,我们有时也会有这样的需求,用exec启动一个进程,有时会传参数给进程。我不知道有没有这样的库函数实现了这种功能,所以就自己写了一个。#include char **parse_argument(const char *args

2011-12-09 16:01:05 1085

原创 libevent介绍

libevent讲解 什么是libeventlibevent 是一个轻量级的事件触发的网络库。它适用于windows、linux、bsd等多种平台,它是跨平台的。libevent是c语言编写的一个开源的网络库。libevent 的设计目标是: 1、可移植性,它是跨平台的。2、效率高。基于事件驱动(event-driven),采用非阻塞I/O,对事件异步处理;       l

2011-12-05 11:05:43 10918

原创 linux 定时器函数

先看代码:例1,alarm()#include #include #include #include void alarm_handler(int sig){ printf("hello!--sig:%d\n",sig); alarm(1);}int main(){ if (signal(SIGALRM, alarm_handler)

2011-11-18 11:07:50 2134

原创 深入浅出fork()

先看一个简单的例子1:#include #include int main(){ pid_t pid; int i; char *str = "hello!"; for (i = 0; i<2; i++) { if ((pid = fork()) < 0) { perror("fork"); return -1; } els

2011-11-17 16:33:04 488

原创 linux 信号

一、概念信号是运载消息的工具,是消息的载体。在linux世界中,信号是进程间通信的方式之一,它提供了处理异步事件的一种方法。信号是软中断,一个进程收到某信号后可以执行一个信号处理函数(捕捉信号),与CPU收到一个中断请求在原理上是一样的。进程收到信号后,也可以采用系统的默认动作,忽略信号、终止或停止进程。但是有两个信号是不能被忽略和捕捉:SIGKILL和SIGSTOP。早期的信号机制只是一

2011-11-02 09:39:58 1474 1

原创 解析文件路径

有时候在编程时会碰到文件路径的解析,如提取一个文件路径中的文件名、文件所在目录,文件的后缀名等。下面写了一个小函数以实现这些功能。#include #include typedef struct file_pathname{ char mini_pathname[1024]; /*文件的路径和名字(不带扩展名)*/ char fdir[1024];

2011-09-27 17:49:33 2252 3

原创 Linux C 环境下不带缓冲的I/O操作函数

摘要:本文主要介绍Linux C 环境下不带缓冲的文件I/O操作函数——open(),creat(),read(),write(),lseek(),close()。结合实例,简单地利用单进程和多进程对同一个文件的操作,加深对这些函数的理解。正文:一、Open(): 打开或

2011-09-26 14:19:47 3457 3

c高级编程技术.rar

C语言编程的好东西,对编程有很大提高,特别是基础不太好的同学。

2009-11-01

空空如也

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

TA关注的人

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