
网络编程
文章平均质量分 95
juary_01
一个菜鸟成长的记录
展开
-
Apache不重新编译,利用apxs工具给Apache添加模块,如cgi模块
想实践下Apache是如何运行cgi程序的,却发现先前编译安装Apache的时候,没有安装Apache的cgi模块。附:CentOS6.x编译安装LAMP(2):编译安装 Apache2.2.25此时,从 httpd.conf 文件中可看到如下模块被动态加载(没有cgi模块):LoadModule deflate_module modules/mod_deflate.soLo转载 2016-07-13 20:01:37 · 3141 阅读 · 0 评论 -
C++后台实践:古老的CGI与Web开发
C++后台实践:古老的CGI与Web开发本文写给C/C++程序猿,也适合其他对历史感兴趣的程序猿============================================= 谈到web开发,大家首先想到的PHP、JavaEE/JSP、.NET/ASP、Ruby on rails、Python的Django等等。可谓百花齐放,你一般不会想到转载 2016-07-18 15:29:22 · 11097 阅读 · 1 评论 -
简单所以不要忽视,关于\r\n和\n程序员应了解的实际应用
众所周知,\r叫回车符,\n叫换行符。由于历史原因,windows环境下的换行符是\r\n;(文章最后会稍微解释这个历史原因)linux和html等开源或公开标准中的换行符是\n. 记录这篇笔记的原因是:textarea中含换行符时,在C#中接收后自动增加了一个\r符号。假设这个字段叫Name nvarchar(50),由于自动增加了一个\r符号,在前台验证转载 2016-06-22 14:42:06 · 627 阅读 · 0 评论 -
我所了解的cgi
我所了解的cgi2014-08-25 09:01 by 掸尘, 11050 阅读, 9 评论, 收藏, 编辑 当我们在谈到cgi的时候,我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,as转载 2016-06-22 14:47:16 · 242 阅读 · 0 评论 -
编译语言、解释语言与脚本语言之间的区别
资料一:1、解释型语言与编译型语言的区别翻译时间的不同。。编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。C/C++ 等都是编译型语言,而Java,C#等都是解释型语言。虽然Java程序在运行之前也有一个编译过程转载 2016-07-07 20:00:43 · 16440 阅读 · 1 评论 -
大端模式与小端模式、网络字节顺序与主机字节顺序 (经典)
大端模式与小端模式 一、概念及详解 在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian,即大端模式和小端模式。 先回顾两个关键词,MSB和LSB: MSB:Most Significant Bit ------- 最高有效位 LSB:Least Significant Bit ------- 最低转载 2016-07-08 10:31:24 · 338 阅读 · 0 评论 -
EAGAIN、EWOULDBLOCK、EINTR与非阻塞
EWOULDBLOCK:用于非阻塞模式,不需要重新读或者写EINTR:指操作被中断唤醒,需要重新读/写 在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。转载 2016-07-08 10:44:53 · 26431 阅读 · 0 评论 -
SSL/TLS原理详解
关于证书授权中心CA以及数字证书等概念,请移步 OpenSSL 与 SSL 数字证书概念贴 ,如果你想快速自建CA然后签发数字证书,请移步 基于OpenSSL自建CA和颁发SSL证书 。SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰。正文开始。1. SSL/TLS概览1.1 整体结构SSL是一个介于H转载 2016-07-19 11:50:30 · 609 阅读 · 0 评论 -
RSA加密算法详解
研究RSA不知为何,这几天突然有些心烦。望苍茫大地,凭添几分忧伤,可能是下雨的缘故。本篇主要想详细介绍RSA加密算法的原理,经常听别人说,这里是自己想搞清楚,弄明白。首先介绍了基本的数学原理,然后给出一个具体的计算例子和相关的理论充分性证明。皓眸大前端开发学习转载请注明出处:http://www.haomou.net/2014/08/27/2014_rsa/RS转载 2016-07-19 11:51:44 · 37205 阅读 · 9 评论 -
HTTP错误状态码定位与解决
实践总结本次基于对500错误定位为例,给大家讲解整个分析过程与解决方法。1.本次实践为HTTP错误状态码定位提供一个高效、精确的定位方式,不仅仅局限于500错误。 2.针对500错误本身,可以基于问题出现频率和下述经验值将问题进行归类,缩小定位范围。问题描述1:单个调用接口返回500错误。分析过程1、 首先,弄清什么是“HTTP请求状态码500”?转载 2016-07-17 23:02:12 · 2458 阅读 · 0 评论 -
白话解释 对称加密算法 VS 非对称加密算法 OSI模型,TLS/SSL 及 HTTPS
对称加密算法(Symmetric-key algorithm)和非对称加密算法(asymmetric key encryption algorithm)只不过就是密码学(encryption)中的两种解密算法罢了,什么是算法,你就可以理解成为是一种规则吧,这种规则可以将信息从一种形式转变成另一种形式,不懂没关系,继续往下看。对称加密首先,让我们先从一个情景开始讲起,想当初我们在初中转载 2016-07-16 12:57:41 · 1527 阅读 · 0 评论 -
ubuntu 源码安装apache和nginx
首先注明下面的操作都是在root下执行或者使用sudo命令。1)去http://httpd.apache.org/download 下载apache源码2)解压到/usr/src,在下载目录执行tar -zxvf httpd-x.x.x.tar.gz -C /usr/src (我用的是httpd-2.4.3.tar.gz)3)进入目录/usr/src/httpd-2.4.3,执行:.转载 2016-07-13 15:20:01 · 969 阅读 · 0 评论 -
CentOS 6.3下Samba服务器的安装与配置
一、简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File Syst转载 2016-07-15 11:27:12 · 314 阅读 · 0 评论 -
TCP协议疑难杂症全景解析
说明:1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人。因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义4).除了《TCP/IP详解》(卷一,卷二)以及《Unix网络编程》以及Linux源代码之外,转载 2016-07-04 16:33:56 · 537 阅读 · 0 评论 -
TCP对SACK的处理以及乱序的处理细节
不容易啊,天气热得厉害,终于到了周末却哪里也去不了,昨晚就特意向老婆申请了一段不长不短的周末时间用来总结近期的工作,也实属不易,如果申请没有获得批准,我也只好利用夜晚了,因为我几乎是一个不用怎么睡觉,可吃可不吃的人,只要有水,烧酒,就好了...大早上的,热醒了,看来也用不到我申请的时间了。...此时是早上4点半...RFC2018描述了TCP SACK的规范,主要是规范了SAC转载 2016-07-04 16:35:23 · 4200 阅读 · 0 评论 -
TCP的TIME_WAIT快速回收与重用
声明一点:Linux中是无法修改tcp的TIME_WAIT值的,除非重新编译,起码我是没有找到怎么改。值得注意的是,net.ipv4.tcp_fin_timeout这个参数是FIN_WAIT_2的值,而不是TIME_WAIT的值。我不知道为何很多人都会把它当成是TIME_WAIT的值,想了一下,我觉得是两点:1.TIME_WAIT过于耀眼,以至于所有出现timeout,加上里面有个tcp的转载 2016-07-04 16:36:10 · 703 阅读 · 0 评论 -
TCP/IP模型背后的内涵
20世纪最激动人心的东西太多了,我最喜欢的相对论算一个,然而在工程界,我觉得最伟大的发明就是TCP/IP,没有之一!它从单台的计算机互联,到承载着如今爆炸式的互联网以及今后的物联网过程中,一直都很优秀,并且最激动人心的是,它几乎还是保持着它刚出生的样子,如此的稳定!不变性本身就是美,就是永恒!再次读到大师的《The design philosophy of the DARPA internet转载 2016-07-04 16:40:47 · 1656 阅读 · 0 评论 -
cap数据包文件解析
windows下的wireshark和Linux下的tcpdump所抓的包为同样的CAP文件的格式,sniffer软件所抓的包文件扩展名也是.cap,但格式却不太一样。本文主要说明ethereal和tcpdump抓包产生的.cap文件的格式。 其实,要获得PCAP文件的格式,除了直接打开.cap文件来分析外,可以看WinPcap包或Linux下/usr/include下的pcap.h转载 2016-07-05 09:36:26 · 33597 阅读 · 0 评论 -
HTTPS详解SSL/TLS
研究HTTPS曾几何时,只记得HTTPS的端口和HTTP的不同,一个是443,一个是80。以前做项目也是只晓得用第三方的jar包,只晓得怎么生成证书和使用方法与流程,对原理并不是很清楚。这里接着上一篇RSA算法,本篇就详细介绍HTTPS协议和相关的SSL/TLS加密协议。皓眸大前端开发学习转载请注明出处:http://www.haomou.net/2014/08/30/转载 2016-07-19 11:52:30 · 15587 阅读 · 4 评论 -
zh-cn:模板入门
zh-cn:模板入门Languages: English • 日本語 • (Add your language)Contents1 WordPress的页面结构1.1 基本模板文件2 更加复杂的页面结构2.1 肉在哪里?3 模板文件中的模板文件4 特殊的模板文件5 模板文件技巧6 模板文件资源 模板文件是WordPress网转载 2016-06-23 19:02:42 · 547 阅读 · 0 评论 -
加解密,对称与非对称 签名 数字证书原理
文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用。接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理,最后演示使用makecert生成数字证书。如果发现文中有错误的地方,或者有什么地方说得不够清楚,欢迎指出! 1、基础知识 这部分内容主要解释一些概念和术语,最好是先理转载 2016-07-20 16:46:23 · 4777 阅读 · 6 评论 -
Tcp服务端一直sleep,客户端不断发送数据产生的问题
问题: “一个tcp服务端和一个tcp客户端,客户端和服务端建立连接后,服务端一直sleep,然后客户端一直发送数据会是什么现象”。 回答这个问题前我们先想一想tcp的特征和tcp发送数据的大体过程:首先,tcp是有链接的可靠传输协议,所谓可靠也就是说保证客户端发送的数据服务端都能够收到,并且是按序收到。那么对于上面的问题就不可能存在数据的丢弃。那么客户端一直发送数据越来越转载 2016-08-09 19:12:31 · 1285 阅读 · 0 评论 -
再次深入理解TCP网络编程中的send和recv
本篇我们用一个测试机上的阻塞socket实例来说明主题。文章中所有图都是在测试系统上现截取的。需要理解的3个概念1. TCP socket的buffer每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的流量(拥塞)控制便是依赖于这两个独立的buffer以及buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没有调用r转载 2016-08-09 19:29:24 · 1382 阅读 · 0 评论 -
Socket的阻塞模式和非阻塞模式
阻塞模式 Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。在阻塞模式的套接字上,调用任何一个Windows Sockets API都会耗费不确定的等待时间。图所示,在调用转载 2016-08-09 19:29:55 · 4663 阅读 · 0 评论 -
Linux虚拟地址空间布局
Linux虚拟地址空间布局 在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Address-Aware Execut转载 2016-08-09 19:43:50 · 2302 阅读 · 0 评论 -
进程间传递描述符
进程间传递描述符一每个进程都拥有自己独立的进程空间,这使得描述符在进程之间的传递变得有点复杂,这个属于高级进程间通信的内容,下面就来说说。顺便把 Linux 和 Windows 平台都讲讲。Linux 下的描述符传递Linux 系统系下,子进程会自动继承父进程已打开的描述符,实际应用中,可能父进程需要向子进程传递“后打开的描述符”,或者子进程需要向父进程传递;或者两个进程可能是无关的,转载 2016-08-09 19:58:47 · 1539 阅读 · 0 评论 -
进程间传递文件描述符
进程间传递文件描述符作者: strider 时间: March 19, 2015 分类: Nginx首先,必须声明,“进程间传递文件描述符”这个说法是错误的。在处理文件时,内核空间和用户空间使用的主要对象是不同的。对用户程序来说,一个文件由一个文件描述符标识。该描述符是一个整数,在所有有关文件的操作中用作标识文件的参数。文件描述符是在打开文件时由内核分配,只在一转载 2016-08-09 20:00:56 · 8152 阅读 · 0 评论 -
Socket编程中 listen函数第二个形参backlog的作用
菜菜地写下心得...[高手批评,观者参考]最近一次作业,写一个socket程序,超简单的那种,就C/S架构,客户端发服务器端接,然后服务器把接到的东西在发回给客户端,TCP的,用到的方法无非就是socket()、bind()、listen()、accept()、connect()、send()、recv()、closesocket(),还有那WSAStartup()、WSACl转载 2016-08-10 21:06:16 · 4002 阅读 · 0 评论 -
高性能Mysql主从架构的复制原理及配置详解
温习《高性能MySQL》的复制篇.1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个转载 2016-08-15 14:41:16 · 1881 阅读 · 0 评论 -
深入浅出JSONP--解决ajax跨域问题
深入浅出JSONP--解决ajax跨域问题2012-03-24 16:52 by 快乐乔巴, 64070 阅读, 25 评论, 收藏, 编辑取不到数据! 上周客户新买了服务器,原本在旧的服务器上放着客户的Web主页信息和一个后台程序(asp.net),在客户的主页中有一个动态显示最新消息的处理,这个处理就是通过ajax异步从那个后台程序中取得的。由于又购买了新的服务器,客户想转载 2016-08-09 17:31:20 · 462 阅读 · 0 评论 -
详解js跨域问题
什么是跨域?概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。URL 说明 是否允许通信http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许http://www.a.com/lab/a.jshttp://www.a.com/script/b.js 同一转载 2016-08-09 11:01:24 · 2654 阅读 · 0 评论 -
ubuntu安装systemtap
由于发行版的内核默认无内核调试信息,所以需要一个调试内核镜像,在http://ddebs.ubuntu.com/pool/main/l/linux-lts-wily/。找到内核版本相对应的内核调试镜像(版本号包括后面的发布次数、硬件体系等都必须一致),如针对我上面的内核版本,就可以用如下命令下载安装内核调试镜像:dpkg -i linux-image-4.2.0-42-generic-dbgs转载 2016-07-20 14:23:06 · 3870 阅读 · 1 评论 -
动态追踪技术漫谈
关于作者大家好,我是章亦春,网名 agentzh。很多朋友可能是通过我做的一些开源项目了解到我的,比如我创立的OpenResty 开源项目,再比如我编写的很多 Nginx 的第三方模块,我从大学时代就开始贡献的 Perl 开源模块,以及最近一些年写的很多 Lua 方面的库。我的兴趣比较广泛,喜欢抽象层次很高也比较花哨的东西,比如函数式和逻辑式编程语言;同时又对很底层的东西非常感兴趣,比如操转载 2016-07-21 14:36:15 · 6277 阅读 · 0 评论 -
内核探测工具systemtap简介
systemtap是内核开发者必须要掌握的一个工具,本文我将简单介绍一下此工具,后续将会有系列文章介绍systemtap的用法。什么是systemtap假如现在有这么一个需求:需要获取正在运行的 Linux 系统的信息,如我想知道系统什么时候发生系统调用,发生的是什么系统调用等这些信息,有什么解决方案呢?最原始的方法是,找到内核系统调用的代码,加上我们需要获得信息的代码、重新编转载 2016-07-21 14:41:22 · 348 阅读 · 0 评论 -
多阶hash表
关于多阶hash表的具体代码实现,请移步到:《使用共享内存的多级哈希表的一种实现》http://webcache.googleusercontent.com/search?q=cache:GEiOeyiYdXEJ:www.cppblog.com/lmlf001/archive/2007/09/08/31858.html+&cd=2&hl=zh-CN&ct=clnk本文主要讲多阶HASH表的转载 2016-08-16 11:37:57 · 4864 阅读 · 0 评论 -
一氪钟:浅说 Lucene 倒排索引与分词
Lucene 是基于倒排索引来实现快速的全文检索的,那么倒排索引是什么概念呢?首先来看看普通索引是怎样建立的,请参考下图。图中,我们为右侧的每一个文档都建立了一个索引编号,当我们知道这个编号时,就可以查询到对应的文档,而如果我们还对这些索引编号进行排序,那检索的速度就会更快。但是,当我们需要检索包含“F”的文档时,普通索引就完全不能发挥作用了,因为我转载 2016-08-16 20:44:59 · 1440 阅读 · 0 评论 -
彻底搞懂字符编码(unicode,mbcs,utf-8,utf-16,utf-32,big endian,little endian...)
最近有一些朋友常问我一些乱码的问题,和他们交流过程中,发现这个编码的相关知识还真是杂乱不堪,不少人对一些知识理解似乎也有些偏差,网上百度,google的内容,也有不少以讹传讹,根本就是错误的(例如说 unicode编码是两个字节),各种软件让你选择编码的时候,常常是很长的一个选单,让用户不知道该如何选。基于这样的问题,我就写下我的理解吧,一方面帮助一些需要帮助的人纠正认识,一方面作为自己以后备查的转载 2016-08-17 14:38:43 · 5813 阅读 · 0 评论 -
【原创】说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
前言: 说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决。但到目前为止最被推崇或者说首选的方案还是用JSON来传数据,靠JSONP来跨域。而这就是本文将要讲述的内容。 JSON和J转载 2016-08-08 10:56:53 · 293 阅读 · 0 评论 -
简单理解jQuery中$.getJSON、$.get、$.post、$.ajax用法
在WEB开发中异步请求方式普遍使用,ajax技术减少程序员的工作量,也提升用户交互体验。AJAX的四种异步请求方式都能实现基本需求,闲话不多说,直接切入正题。1.$.getJSON $.getJSON()是专门为ajax获取json数据而设置的,并且支持跨域调用,其语法的格式为: 1 $.getJSON(2 url,转载 2016-08-08 14:41:07 · 352 阅读 · 0 评论 -
回调函数(CALLBACK)学习总结
回调函数应该和设计相关而不是和语言相关。在分层设计中,高层次的模块会叫低层次的模块做一些事情,通常是通过函数调用。 从设计上来说,低层次的模块不应该直接调用高层次模块的函数。所以高层次模块在叫低层模块做事的时候会注册一个回调函数给低层模块,然后低层模块做完了就调用这个函数。表现在C语言上是个函数指针调用(calling)机制从汇编时代起已经大量使用:准备一段现成的代码,转载 2017-01-07 10:45:29 · 1187 阅读 · 0 评论