摘要: 第四代编程语言,或者说是第四阶段的编程语言,这是我自己理解定义的一个概念,请勿告诉我说4gl是SQL。 个人认为,对程序员而言,编程语言已经发展到第四个阶段了。 第一阶段,汇编语言。在此之前,还有机器语言,即0101010101010这样的二进制代码。对程序员来说,机器语言无疑是天书,完全不可接受。而汇编用针对指令的符号代替二进制代码,对程序员来说无疑的莫大的福音。但是,我们直接去操作寄存器,需要了解不同硬件平台,比较抽象,相对于人们日常生活描述方式差之极远。 第二阶段,以C为代表,它给我们抽象一些底层的东西,我们大部分时间是关心业务逻辑,而不要了解我们当前的硬件。这类语言充分接近人... 阅读全文
posted @ 2013-09-21 19:46 winxp_520 阅读(5232) 评论(14) 推荐(1) 编辑
摘要: 一.XML-RPC是什么?XML-RPC是UserlandSoftware公司设计的一种格式:是一种使用HTTP协议传输XML格式文件来获取远程程序调用(RemoteProcedureCall)的传输方式。官方网站是www.xmlrpc.com。在http://phpxmlrpc.sourceforge.net/上面有个PHPXML-RPC的框架(类集合)用于使用PHP语言来写XML-RPC客户端和服务端。现在的稳定发行版本是2.2,下载地址是http://sourceforge.net/projects/phpxmlrpc/files/phpxmlrpc/2.2.2/xmlrpc-2.2.2 阅读全文
posted @ 2011-07-27 15:34 winxp_520 阅读(7662) 评论(0) 推荐(1) 编辑
摘要: 一.Gearman是什么?Gearman是一个分发任务的程序框架。它由三部分组成,如下图:GearmanClient:它提供GearmanClientAPI给我们的应用程序调用,API可以使用是C,PHP,Perl,MySQLUDF等等语言,它是请求的发起者。 GearmanJobServer:将客户端的请求分发到各个GearmanWorker的调度者,相当于中央控制器,它不负责处理具体业务逻辑。 GearmanWorker:它提供GearmanWorkerAPI给应用程序调用,具体负责客户端的请求,并将处理结果返回给客户端。二.Gearman能干什么?通过上面可以看出,在GearmanCli 阅读全文
posted @ 2011-07-26 12:37 winxp_520 阅读(9451) 评论(1) 推荐(1) 编辑
摘要: 一.LVS是什么?LVS的英文全称是LinuxVirtualServer,即Linux虚拟服务器。它是我们国家的章文嵩博士的一个开源项目。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。二.LVS能干什么?LVS主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。它易用,配置非常简单,且有多种负载均衡的方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。另外可扩展性也非常好。三.工作原理如上图,LVS可分为三部分:1.LoadBalan 阅读全文
posted @ 2011-07-25 12:05 winxp_520 阅读(30007) 评论(2) 推荐(11) 编辑
摘要: 1.什么是消息队列 消息队列以队列形式(消息链表)的数据结构存放在系统内核中的,它可用于客户进程与服务进程之间的双向数据流。但是它跟信号量、共享内存一样,都只在系统范围内通信,且其在系统里没有名字,其内容不会自动删除,没有文件描述符。这些缺点导致现代进程通信基本不用它了。尽管如此,但是今天我还是需要了解它。2.消息的数据类型 首先,在头文件<sys/msg.h>中,定义了我们可用传给消息队列的数据类型:struct msgbuf{ long mtype; char mtext[1];}mtype是指该消息的类型,区分出不同的消息,我们就可以辨别出消息的来源,比如我们把客户进程的mt 阅读全文
posted @ 2011-06-16 16:00 winxp_520 阅读(3109) 评论(3) 推荐(2) 编辑
摘要: 1.什么是无缓冲I/O 我们首先要知道Linux操作系统提供给我们的用户程序调用的接口,除了使用库函数,还可以直接使用系统调用。而今天我要介绍的相关函数就是直接调用了内核的系统调用,所以说它是无缓冲的,它跟标准的I/O函数相对应。2.打开或者创建文件的函数:open() 要操作相关文件,就必须获得该文件的句柄,专业点叫文件描述符。它是进程在打开一个文件或者创建一个文件时,内核返回给该进程的一个唯一的非负的整数,且一定是当前可以的描述符中最小的一个数。进程获得这个文件描述符后,就可以根据它来告诉read()或者write相关函数具体来操作哪个文件了。 Tips:通常系统对一个进程可打开的文件描述 阅读全文
posted @ 2011-06-12 20:37 winxp_520 阅读(2783) 评论(1) 推荐(2) 编辑
摘要: 我们都知道,进程就是正在执行的程序。而在Linux中,可以使用一个进程来创建另外一个进程。这样的话,Linux的进程的组织结构其实有点像Linux目录树,是个层次结构的,可以使用pstree命令来查看。在最上面是init程序的执行进程。它是所有进程的老祖宗。Linux提供了两个函数来创建进程。1.fork() fork()提供了创建进程的基本操作,可以说它是Linux系统多任务的基础。该函数在unistd.h库中声明。 #include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(){ pr 阅读全文
posted @ 2011-06-06 13:39 winxp_520 阅读(4091) 评论(2) 推荐(1) 编辑
摘要: 在大中型项目中,在数据库设计的时候,考虑到数据库最大承受数据量,通常会把数据库或者数据表水平切分,以降低单个库,单个表的压力。我这里介绍两个我们项目中常用的数据表切分方法。当然这些方法都是在程序中使用一定的技巧来路由到具体的表的。首先我们要确认根据什么来水平切分?在我们的系统(SNS)中,用户的UID贯穿系统,唯一自增长,根据这个字段分表,再好不过。方法一:使用MD5哈希 做法是对UID进行md5加密,然后取前几位(我们这里取前两位),然后就可以将不同的UID哈希到不同的用户表(user_xx)中了。function getTable( $uid ){ $ext = substr ( md. 阅读全文
posted @ 2011-06-02 17:47 winxp_520 阅读(6612) 评论(33) 推荐(10) 编辑
摘要: PHP 的命令行模式能使得 PHP 脚本能完全独立于 web 服务器单独运行。在linux下我们通常可以使用PHP的命令行模式来调试一些东西,和crontab定时执行一些PHP文件。 通常PHP可执行的命令在PHP安装目录的bin文件夹下面,名称一般是php,或者php-cli。当然这跟你安装的方式及安装时配置的参数有关。 由于有两种SAPI(Server Application Programming Interface,服务端应用编程端口):CLI 和 CGI,尽管它们之间有很多共同的行为,但是他们还是有很多的不同,具体可以查看PHP的文档http://www.php.net/manua. 阅读全文
posted @ 2011-05-30 21:00 winxp_520 阅读(5351) 评论(0) 推荐(0) 编辑
摘要: ubuntu版本:Ubuntu 10.04 LTS1、首先使用apt-get下载Nginx,php,mysql,phpmyadmin,spawn-fcgi。sudo apt-get install nginx php5-cgi php5-cli mysql-server-5.1 phpmyadmin spawn-fcgi期间可能要输入mysql的密码,按照提示一步一步安装就是了。OK后,你在Firefox中访问http://127.0.0.1/或者http://localhost/应该就能看见Nginx的欢迎界面了。2、此时Nginx并不能跑PHP程序。需要修改一些配置文件。$ cd /etc 阅读全文
posted @ 2011-05-27 15:01 winxp_520 阅读(2426) 评论(0) 推荐(0) 编辑