代码改变世界

Linux Socket编程(不限Linux)

2010-12-12 21:58 by 吴秦, 374645 阅读, 177 推荐, 收藏, 编辑
摘要:“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什么?3、socke 阅读全文

HTTP Keep-Alive模式

2010-12-11 18:44 by 吴秦, 107556 阅读, 67 推荐, 收藏, 编辑
摘要:——献给那些向我这样对HTTP的“伪”熟悉者。故事发生在10月份的一次面试经历中,本来我不想说出来丢人显眼,但是为了警醒自己和告诫后人,我决定写成博文发出来。因为在面试过程中,我讲在2009年写过QQ农场助手,在这期间深入学习了HTTP协议,而且在2010-05-18写了博文:HTTP协议及其POST与GET操作差异 & C#中如何使用POST、GET等。面试官说既然我熟悉HTTP协议,就问“当HTTP采用keepalive模式,当客户端向服务器发生请求之后,客户端如何判断服务器的数据已经发生完成?”说实话,当时我懵了,一直没有关注过keepalive模式。我只知道:HTTP协议中客户 阅读全文

需求驱动学习之Python(如何编写Python脚本替换文件中的多行字符?)

2010-12-08 23:40 by 吴秦, 10394 阅读, 4 推荐, 收藏, 编辑
摘要:当一个人太执着于某一个东西的时候,会错过很多美好的东西!Python值得学习的一个工具,不要局限在当前使用的语言中。在大概3个月之前,Python对我来说一直是个迷。然而,就在3个月前我经理给我一个任务——删除(替换)所有项目源码文件中包含特定几行内容的所有注释。整个项目源码的大小有1G,在Linux服务器(中高档)上编译需要半个多小时,可见代码量之大,不可能手动去一个一个改。肯定得用脚本去处理,于是我想到了Python。在这之前没有接触过Python,花了2个星期一顿恶补之后,总算顺利交差了。一直很想和大家分享一下碰到的问题及我如何解决的(可能我的方案并不好,但是他能够解决我的问题),但一直 阅读全文

(unix domain socket)使用udp发送>=128K的消息会报ENOBUFS的错误

2010-12-04 15:49 by 吴秦, 24063 阅读, 7 推荐, 收藏, 编辑
摘要:一个困扰我两天的问题,Google和Baidu没有找到解决方法!此文为记录这个问题,并给出原因和解决方法。1、Unix domain socket简介unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法,所用API于在不同主机上执行客户/服务器通信所有的API(套接字API,如AF_INET、AF_INET6等类型的API)相同。unix域协议可以视为是进程之间本地... 阅读全文

【日常小记】内存分配方式及常见错误

2010-12-03 00:07 by 吴秦, 6168 阅读, 5 推荐, 收藏, 编辑
摘要:积少成多,滴水穿石——自勉 内存操作对于程序开发人员来说,永远是一块雷区。在这片区域,总是不断的埋雷、排雷,而且往往是排雷花了非常大的代价。记得在公司实习时,有大概2个星期的时间,team的几个人去排雷——有地方发生了memory leak! 而以我现在的认知来看,只有极少数的programer敢拍着胸脯说,非常熟悉内存操作,手到擒来不会排雷。针对这个情况,我要求自己在尽量去探索,以求少埋雷、... 阅读全文

Linux多线程编程(不限Linux)

2010-10-30 20:58 by 吴秦, 99986 阅读, 70 推荐, 收藏, 编辑
摘要:——本文一个例子展开,介绍Linux下面线程的操作、多线程的同步和互斥。前言线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步、互斥,这些东西将在本文中介绍。我在某QQ群里见到这样一道面试题:是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能:1)有一int型全局变量g_Flag初始值为0;2) 在主线称中起动线程1,打印“this is thread1”,并将g_Flag设置为13) 在主线称中启动线程2,打印“this is thread2”,并将g_Flag设置为24) 线程序1需要在线程2退出后才能退出5 阅读全文

C++中的4种显示类型转换(草稿)

2010-09-30 23:14 by 吴秦, 5478 阅读, 2 推荐, 收藏, 编辑
摘要:类型转换在。我们编写程序时是不可避免的,比如我们分配一个内存区域,它将要存储的对象类型对编译器是不可知的。最典型的例子就是void*指针,调用malloc时会返回一个void*,编译器并不知道void*指向的对象类型。 由此可见,类型转换时不可以或缺的!下面我们介绍C++提供的4种显示类型转换,及继承自C的类型转换方式(Type)expression。本文的主要内容如下: 写在前面 static... 阅读全文

C中的继承和多态

2010-09-23 00:27 by 吴秦, 27138 阅读, 15 推荐, 收藏, 编辑
摘要:1、引言 继承和多态是面向对象语言最强大的功能。有了继承和多态,我们可以完成代码重用。在C中有许多技巧可以实现多态。本文的目的就是演示一种简单和容易的技术,在C中应用继承和多态。通过创建一个VTable(virtual table)和在基类和派生类对象之间提供正确的访问,我们能在C中实现继承和多态。VTable能通过维护一张函数表指针表来实现。为了提供基类和派生类对象之间的访问,我们可以在基类中... 阅读全文

C++中的指针与引用

2010-09-22 02:32 by 吴秦, 56438 阅读, 27 推荐, 收藏, 编辑
摘要:写在前面指针和引用形式上很好区别,但是他们似乎有相同的功能,都能够直接引用对象,对其进行直接的操作。但是什么时候使用指针?什么时候使用引用呢?这两者很容易混淆,在此我详细介绍一下指针和引用,力争将最真实的一面展现给大家。如果我喷得不够好,希望嘴下留情、手下留命,还请指点一二;如果感觉还不错,请大家鼓掌。1、指针和引用的定义在深入介绍之前我们首先来看一下指针和引用的定义、指针和引用的区别,然后分别针... 阅读全文

C++的函数重载

2010-09-05 21:26 by 吴秦, 156846 阅读, 38 推荐, 收藏, 编辑
摘要:——每个现象后面都隐藏一个本质,关键在于我们是否去挖掘写在前面:函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题1、声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了... 阅读全文

Android开发之旅: Intents和Intent Filters(实例部分)

2010-07-31 15:38 by 吴秦, 14688 阅读, 6 推荐, 收藏, 编辑
摘要:引言上篇我们介绍了Intents和Intent Filters的理论部分,主要是介绍了:activities、services、broadcast receivers三种组件的Intent机制两种Intent(显式和隐式)及它们如何去匹配目的组件、Intent对象包含哪些信息、Intent Filters的action & category & data。Intent的重要性,我... 阅读全文

SQL过关

2010-07-25 22:50 by 吴秦, 13485 阅读, 39 推荐, 收藏, 编辑
摘要:引言 做为一个web开发者,不与数据库打交道几乎是不可能的!由此可见,掌握SQL语句对于一个web开发人员来说是多么的重要。下面是我在整理电脑时,找到的资料,觉得还不错就拿出来与大家分享。不废话了,好不好你看了就知道。进入主题,本文的主要内容如下: 问题背景 SQL查询54问? 1、问题背景 本文中的SQL语句都是基于下面几张表的,这也是比较经典的用于数据库教学的数据库例子。 (1)/*员工人... 阅读全文

Mongoose源码剖析:核心处理模块

2010-07-25 16:41 by 吴秦, 8591 阅读, 4 推荐, 收藏, 编辑
摘要:引言 前面我们介绍了Mongoose所有的几个主要的数据结构mg_context、mg_connection、mg_request_info,还有Mongoose的生命主线。有了这些基础就可以来看看Mongoose的核心处理工作是怎样的。如果你还没有阅读前面的文章,你可以通过下面的隧道直通: Mongoose源码剖析:外篇之web服务器 Mongoose源码剖析:Introduction and... 阅读全文

Mongoose源码剖析:mongoose的工作模型

2010-07-24 22:23 by 吴秦, 12521 阅读, 3 推荐, 收藏, 编辑
摘要:引言 我看一个项目的时候,比较喜欢首先看它的架构和设计。因为这样在研读源码的时候,有一个指导作用,不会迷失于具体细节,并能够引导我如何去将点串成线,将线串成面。而且一个软件怎么样,很大程度上取决于它采用的架构。 本文主要介绍Mongoose的工作模型,及根据这个模型将代码大致串起来,找出主线。内容框架如下: 1、线程模型 2、从程序入口着手 3、Mongoose的生命旅程 1、线程模型 Mo... 阅读全文

Mongoose源码剖析:数据结构篇

2010-07-24 21:08 by 吴秦, 8985 阅读, 2 推荐, 收藏, 编辑
摘要:引言 Mongoose中有几个数据结构扮演着重要的角色,它们分别是: struct mg_context:保存Mongoose的上下文,几乎每个函数都有mg_context参数 struct mg_connection:保存HTPP连接信息 struct mg_request_info:保存HTTP请求的信息,这个结构体传递给URL处理函数 我之所以现在这里介绍它,因为之后的分析工作中要用到它们... 阅读全文