- 博客(55)
- 收藏
- 关注
转载 nginx lua
gx_lua 是一个 NGINX 的第三方扩展模块,它能够将 Lua 代码嵌入到 NGINX 中来执行。UPYUN CDN 大量使用了 NGINX 作为反向代理服务器,其中绝大部分的业务逻辑已经由 Lua 来驱动了。这个主题之前在 OSC 源创会 2014 北京站 和 SegmentFault D-Day 2015 南京站 有做过简单分享,Slide 在这里:《Using
2015-12-03 10:59:42
928
转载 ngx lua
第一个lua脚本ngx.say 是打印的打印输出的意思。。。location /echo {default_type text/plain;echo hello lua;}location /lua {default_type text/plain;content_by_lua 'ngx.say("hello world")';}用lua脚本做nginx的访问的限
2015-10-14 17:35:00
1221
转载 https server
最近在研究nginx,整好遇到一个需求就是希望服务器与客户端之间传输内容是加密的,防止中间监听泄露信息,但是去证书服务商那边申请证书又不合算,因为访问服务器的都是内部人士,所以自己给自己颁发证书,忽略掉浏览器的不信任警报即可。下面是颁发证书和配置过程。首先确保机器上安装了openssl和openssl-devel#yum install openssl#yum install o
2015-07-08 14:44:20
1291
转载 makefile 书写
一、 三个基本概念(注:本文所有的测试都是在 Linux 环境下进行的) 在Makefile中,最重要的三个概念是:目标(target)、依赖关系(dependency)和命令(command)。目标是指要干什么,即运行make后生成什么;依赖是指明目标所依赖的其他目标;命令则告诉make如何生成目标,这三个概念是通过Makefile中的规则(rule)关联在一起的。
2015-04-20 15:17:32
574
原创 nginx 源码分析 1 - 配置解析
看了nginx代码,感觉应该写点什么,记下来,自己以后慢慢看,很多还是浅浅的懂了那么点点看代码,首先进入的当然是main函数了,nginx.c -> main()进入后,是一堆的一些初始化局部变量有一个cycle, init_cycle 看代码可以看到,起初把一些配置信息都是放到init_cycle里面,然后通过把需要的本模块的配置指令都返回到cyc
2015-03-12 11:09:38
488
转载 网络包流程
发送:应用程序调用系统调用,将数据发送给socketsocket检查数据类型,调用相应的send函数send函数检查socket状态、协议类型,传给传输层tcp/udp(传输层协议)为这些数据创建数据结构,加入协议头部,比如端口号、检验和,传给下层(网络层)ip(网络层协议)添加ip头,比如ip地址、检验和如果数据包大小超过了mtu(最大数据包大小),则分片;ip将这些数据
2015-01-14 13:43:46
669
原创 ndk 编译调试
在交叉编译的时候,尤其是不同中语言之间的交叉编译,往往遇到问题后,会很让人头疼。。。这俩天在编译调试ndk的时候,就出现了!!之前ndk编译的各种so,给android调用一直都是好好的,过了一段时间,修复了一些bug后,再编译成so,然后给andorid调用的时候,莫名的崩溃,启动就崩溃,由于最近也给android编译了ijkPlayer播放器,然后全部都集成进去了!!那么问题来
2014-12-19 16:14:05
636
原创 linux 文件时间
linux 文件一般有三个时间 (通过stat或者lstat获取文件属性)可以得到文件的st_atime, st_mtime, st_ctime当使用 cat read 等一系列读取文件操作的时候,文件的st_atime会跟随着一直改变;我的系统是ubuntu,当使用vi操作的时候,文件的访问时间st_atime没有跟随着变化当使用 write 等一系列写操作文件的时
2014-12-18 12:06:00
583
转载 linux 列出最近修改的文件
查找当前目录下.phtml文件中,最近30分钟内修改过的文件。find . -name '*.phtml' -type f -mmin -30查找当前目录下.phtml文件中,最近30分钟内修改过的文件,的详细情况。find . -name '*.phtml' -type f -mmin
2014-12-18 10:37:48
1341
原创 brk和sbrk malloc关系讲解
brk和sbrk主要的工作是实现虚拟内存到内存的映射.在GNUC中,内存分配是这样的: 每个进程可访问的虚拟内存空间为3G,但在程序编译时,不可能也没必要为程序分配这么大的空间,只分配并不大的数据段空间,程序中动态分配的空间就是从这 一块分配的。如果这块空间不够,malloc函数族(realloc,calloc等)就调用sbrk函数将数据段的下界移动,sbrk函数在内核的管理
2014-09-12 16:10:59
2033
原创 andoird jni - 应用出现各种权限问题解决
android 生成app,会出现<uses-permission android:name="
2014-08-21 17:19:36
1734
原创 linux jni头文件生成
进入到工程的src文件,把你要运行如下命令> javac com\android\libjni\LibJavaHeader.java> javah com.android.libjni.LibJavaHeader
2014-08-08 10:41:27
796
原创 ---***---
# if __WORDSIZE == 32 #define _INT_64_ "lld"#else #define _INT_64_ "ld"#endifprintf("%"_INT_64_"-%"_INT_64_"/%"_INT_64_"\n", a, b , c);
2014-05-27 10:17:38
6441
转载 linux 下cat都正常显示,vi却显示乱码 问题解决
今天在做一个东西的时候发现,LANG设置为en_US.UTF-8,putty上的编码设置为Use font encoding, putty上输出汉字正常,重定向到文件后vi乱码,cat,more这个文件汉字显示也正常,查了网上很多东西最后发现按一种说法改对了:应该是格式化的问题! 比如man手册的文件有一些格式标记,你用man ,cat都可以正常现实,但是用vi看起来就有点混乱!因为vi把
2014-05-19 14:11:29
3847
原创 printf 缓冲机制的问题
printf()打印的时候,才int32_t a = 1234; int64_t b = 8976;printf( "b = %lld, a = %d \n", b, a );
2014-04-09 16:33:37
958
原创 linux 获取程序运行的运行路径
char * CMainServer::get_exe_path( char * buf, int count){ int i; int rslt = readlink("/proc/self/exe", buf, count - 1); if (rslt = count - 1)) { return NULL; }
2014-02-27 16:18:13
787
原创 range断点续传
Client request:Server通过请求头中的Range: bytes=0-xxxserver response : Content-Range: bytes 0-100/2350
2014-02-18 17:31:30
675
转载 wget gzip
Apache启用gzip/deflate或者Nginx启用gzip之后用wget测试的话需要加上--header="accept-encoding:gzip"用curl则加上--compressed浪费了20分钟在这选项上,milk关于gzip和deflate有两篇文章(1和2), 作者应该是一个人,明显是从1毛跳去了性浪..
2014-02-13 16:00:38
1346
原创 linux 简单的下载down
#include #include #include #include #include #include #include #include #include #include #include #include #include int main ( int argc, char *argv[] ){int sockfd;st
2014-02-13 11:07:13
795
转载 peer handShake
Peer wire protocol (TCP)概述peer(端)协议使片(piece)的交换变得容易,片的描述请参考元信息文件。注意:原来的规范在描述peer协议时,也使用术语piece“(片)”,但是这不同于元信息文件里面的术语“piece(片)”,由于这个原因,在本规范中,将使用术语“块(block)”来描述peers(端)之间交换的数据。一个客户端(client)必须维持其
2014-01-24 15:34:44
1408
转载 打洞,,
UDP,TCP打洞技术内容概述:在p2p通信领域中,由NAT(Network Address Translation,网络地址转换)引起的问题已经众所周知了,它会导致在NAT内部的p2p客户端在无论以何种有效的公网ip都无法访问的问题。虽然目前已经发展出多种穿越NAT的技术,但相关的技术文档却很少,用来证明这些技术的稳定性和优点的实际数据更少。本文的目的在于描述和分析在实际中运用得最广泛、
2014-01-24 11:16:06
829
转载 位域的操作
位域简介有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,可以在程序中按域名进行操作。 这样就可以把几个不
2014-01-24 09:42:59
902
转载 bt torrent文件
BT源代码学习心得(四):种子文件的生成在知道种子文件采取的编码方式后,我们现在可以来看一个种子文件具体是如何生成的了。在BT中,生成种子文件的可执行模块是btmaketorrent.py(命令行模式)或者btmaketorrentgui.py(图形界面模式),通过分析,可以知道它们最终都将调用函数make_meta_files进行种子文件的生成,区别仅仅在于提供给这个函数
2014-01-23 18:47:04
1028
转载 bt peer通信协议报文格式
接下来协议的所有报文采用如下的结构:。length prefix(长度前缀)是一个4字节的大端(big-endian)值。message ID是单个十进制值。playload与消息相关。l keep-alive: keep-alive消息是一个0字节的消息,将length prefix设置成0。没有message ID和payload。如果peers在一个固定时间段内没有收到任何报文(k
2014-01-22 16:44:52
1895
原创 localtime 和 localtime_r
locatime 为不可重入函数。。locatime_r 为可重入函数;例如int main (){ p = time( NULL );pend = p+1800;locatime( p);locatime( pend );sfrtime( date1, "%H。。。。“ , p );sfrtime( date2, "%H。。。
2014-01-20 10:38:33
893
原创 结构体字节对齐
#pragma pack( push,1 )struct_ A{int a;char b;}A;#pragma pack(pop)
2014-01-17 10:16:43
719
原创 linux md5运用。。。
#include#include#includeint main( int argc, char **argv ){MD5_CTX ctx;unsigned char *data="123";unsigned char md[16];char buf[33]={'\0'};char tmp[3]={'\0'};int i;MD5_Init(&ct
2014-01-16 18:11:56
503
原创 Linux 操作int64_t
# if __WORDSIZE == 32#define _INT_64_ "lld"#else#define _INT_64_ "ld"#endif然后输出。。。。printf("%"_INT_64_"\n", a);同样可以运用到对各种字符串的操作,如sscanf,或者sprintf等等。。。
2014-01-15 17:36:13
1678
翻译 eclispe 跳转问题 找不到头文件
eclipse上配置好cdt后,新建一个简单的项目测试下,当写入头文件时,却出现如下错误提示:unresolved inclusion: 原因与解决:这是c/c++标准库未设置所致。解决方法如下。选中项目,依次操作:右键单击 -> properties -> C/C++ General -> Paths and Symbols -> Add... ->
2014-01-15 12:21:59
1187
转载 共享内存
从表面上看,UNIX® 应用程序单独控制底层主机。它随时可以访问处理器,它的内存是神圣不可侵犯的,连接它的设备只为它服务。但是表面现象会骗人,这样有如君主一般的绝对地位只是幻想而已。UNIX 系统同时运行大量应用程序,有限的物理资源要在它们之间共享。处理器能力被划分为时间片,应用程序映像经常被换入和换出真实内存,设备访问由需求驱动,还受到访问权限的限制。尽管您的 shell 提示符不断闪烁,但是
2014-01-14 15:50:06
628
转载 共享内存操作,mmap映射
shm_id=shm_open(argv[1],O_RDWR|O_CREAT,0644);/*创建共享内存区*/ftruncate(shm_id,100);/*调整共享内存区大小*/sem=sem_open(argv[1],O_CREAD,0644,1);/*创建信号量*/ptr=mmap(NULL,100,PROT_READ|PROT_WRITE,MAP_SHARED,s
2014-01-14 15:07:08
677
原创 获取系统时间的各种格式。。
#if 0time_t timeNow;struct tm *p_tm;char *wday[]={(char *)"Sun",(char *)"Mon",(char *)"Tue",(char *)"Wed",(char *)"Thu",(char *)"Fri",(char *)"Sat"};char *month[] = { (char *)"Jan",(char *)"Fe
2014-01-13 15:54:38
707
转载 linux 时间转换
linux下的时间函数我们在编程中可能会经常用到时间,比如取得系统的时间(获取系统的年、月、日、时、分、秒,星期等),或者是隔一段时间去做某事,那么我们就用到一些时间函数。linux下存储时间常见的有两种存储方式,一个是从1970年到现在经过了多少秒,一个是用一个结构来分别存储年月日时分秒的。time_t 这种类型就是用来存储从1970年到现在经过了多少秒,要想更精确一点,可以用结构s
2014-01-12 12:32:07
823
原创 c 正则匹配简单运用
int status, i;int cflags = REG_EXTENDED;regmatch_t pmatch[10];const size_t nmatch = 10;regex_t reg; char buf[] = "this is to cmp to the ZhengZe\n";char requestUrl[ 1024 ] = "";char has
2014-01-09 11:47:47
804
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人