摘要:注意,那2条正是关于市场运营和建设策略的。当然程序员嘛,还是得先把最基本的写程序的技能搞定了,再谈这些关于市场的策略性的问题,在我看来卓越的程序员不仅要会写代码,还要懂得好多好多,最后成为在市场,技术,管理这三个方面有强大优势的人才。[2011-12-15] 又一次赞下自己的想法 “麦路推荐的核心优势...广告”引自http://www.mailu.cn/product/ecommerce/好吧,当我在想推荐系统的时候我就想到广告平台也是个好方向(不是随便想到的,经过深思的..没那么简单),这一点 同类型的百分点科技http://www.baifendian.com/并没有想到。[2011-. 阅读全文
Linux TCP server系列(8)-cgi server
2011-09-18 21:36 by Aga.J, 1272 阅读, 0 推荐, 收藏, 编辑
摘要:目标:单进程cgi服务器CGI介绍: CGI使在网络服务器下运行外部分应用程序(或网关)成为可能。CGI-BIN目录是存放CGI脚本的地方。这些脚本使WWW服务器和浏览器能运行外部程序,而无需启动另一个原因程序。 CGI是在HTTP服务器下运行外部程序(或网关)的一个接口,它能让网络用户访问远程系统上的使用类型程序,就好像他们在实际使用那些远程计算机一样。 尽管CGI易于使用,但是当大批人同时使用一个CGI应用程序是会反应较慢,网络服务器 速度也会受到很大 影响。CGI应用程序的优点是可以独立运行。 CGI应用程序可以由大多数的编程语言编写,如Perl(Practical Extracti.. 阅读全文
Linux TCP server系列(7)-select模式下的prefork server
2011-09-18 21:11 by Aga.J, 1664 阅读, 0 推荐, 收藏, 编辑
摘要:目标: 多进程服务器的性能提升。 前面介绍过一种server模式为每个客户端连接都创建一个子进程,这种方式对server的压力较大,首先创建进程会消耗时间,其次,进程没有办法得到重复利用也会浪费了进程的创建,最后,进程间切换会带来性能上的影响。 本程序使用prefork思想,预先为server派生多个子进程,方便在需要时可以马上使用,而不需要等待进程创建,同时,进程还可以重复使用。思路: 程序预先fork多个子进程,用来处理每个客户端socket的信息交互或者请求(决定预先fork多少个子进程是个问题!)一开始每个子进程都阻塞在和父进程的通信通道上,等待父进程的消息通知(处理某个客户请求),然 阅读全文
Linux TCP server系列(6)-select模式下的多线程server
2011-09-18 20:00 by Aga.J, 5317 阅读, 1 推荐, 收藏, 编辑
摘要:目标: 修改上一篇的select模式下的server,让它使用多线程来处理客户端请求(多进程的模式已经在上篇中加了注释)。思路: (1)服务器 我们已经在之前的客户端模型多个并发用户的过程中使用过多线程的技术了(其中还涉及到多线程利用条件变量进行线程同步),在这里我们可以很轻松的在上篇文章代码中加入线程部分代码。//for thread int *lptr; pthread_t pid; //for thread for(i=0;i<=maxi;i++) { if((sockfd=client[i]) <0) continue; if(FD_ISSET(sockfd,&rs 阅读全文
Linux TCP server系列(5)-select模式下的单进程server
2011-09-18 19:25 by Aga.J, 3385 阅读, 1 推荐, 收藏, 编辑
摘要:目标:让服务器退化为单进程模式,但是利用select来提升性能思路: (1)服务器 传统的单进程服务器一旦accept了客户端的TCP连接后,就转入客户请求的处理,处理完成后才能再一次的调用accept来接受下一个客户端的TCP连接和请求。 为了更加提高单进程server的性能,本程序使用select这种IO复用的模式,同时监听已经连接的socket端口和正在监听的服务器listening端口,这样一来,就可以大大提升sever处理并发请求的能力。 select的使用方式如下: a)定义fd_set fd_set allset; select允许我们监听来自标准输入,标准输出,标准错误输出的I 阅读全文
Linux TCP server系列(4)-浅谈listen与大并发TCP连接
2011-09-18 18:43 by Aga.J, 4230 阅读, 2 推荐, 收藏, 编辑
摘要:背景: 服务器在调用listen和accept后,就会阻塞在accept函数上,accpet函数返回后循环调用accept函数等待客户的TCP连接。如果这时候又大量的用户并发发起connect连接,那么在listen有队列上限(最大可接受TCP的连接数)的情况下,有多少个connect会成功了。试验证明,当连接数远远高于listen的可连接数上限时,客户端的大部分TCP请求会被抛弃,只有当listen监听队列空闲或者放弃某个连接时,才可以接收新的连接,那么我们应该如何来避免这种情况出现?分析:(一)客户端客户端运行初期完成所设定的一定量的socket创建和相应的处理线程的创建,然后使用条件变量 阅读全文
Idea
2011-09-16 19:28 by Aga.J, 528 阅读, 0 推荐, 收藏, 编辑
摘要:http://www.weebly.com/?footer这东西,就是我之前的一个idea,原来人家07年就做了,还接了风投。 阅读全文
Linux TCP server系列(3)-fork注意事项
2011-09-15 17:17 by Aga.J, 4788 阅读, 0 推荐, 收藏, 编辑
摘要:前两篇文章都是使用fork子进程来处理客户端请求,所以我们需要在这里了解一下fork的具体信息。 当server从accept返回时,它获得socket连接另一端的client socket 文件描述符和socket地址信息,然后使用fork创建子进程来执行对应client socket上的操作。 使用fork应该注意以下几点: (1)子进程可以关闭不必要的文件描述符或者释放其他资源,因为使用fork后,如果子进程不调用exec以使用新的进程空间的话,子进程会复制父进程的进程空间内容,包括数据段等(代码段是共享的,数据段等采用一种写时复制的策略来提高性能)。所以不必要的资源可以尽快释放。 (2 阅读全文
Linux TCP server系列(2)-简单优化服务器和客户端程序
2011-09-15 16:48 by Aga.J, 2309 阅读, 0 推荐, 收藏, 编辑
摘要:目标:在上个server中考虑更多细节问题,完善server。思路:(1)服务器父进程使用fork派生子进程后,如果子进程运行结束,那么该进程不会立刻被销毁,而会进入“僵尸状态”,仍然维护着自身的信息,这时候如果服务器父进程不加以处理,那么很快就会消耗完系统的内存空间,所以父进程需要监听子进程SIGCHLD信号,并做出处理以销毁残留信息,这里可以使用wait或者waitpid来实现。我们在父进程调用listen之后,注册监听信号和信号处理函数signal(SIGCHLD, sig_child);信号处理函数实现如下:void sig_child(int signo) //父进程对子进程结束的信 阅读全文
Linux TCP server系列(1)-简单TCP服务器+多进程处理客户请求
2011-09-15 09:53 by Aga.J, 8728 阅读, 1 推荐, 收藏, 编辑
摘要:目标: 完成一个精简TCP服务器,可接收来自多个用户的请求,并返回结果。思路: (1)服务器 C++ TCP服务器的实现主要由以下几个函数来完成: a)socket 创建服务器监听套接字b)bind 绑定服务器监听信息到套接字上c)listen 开始监听,接收客户端的TCP连接d)accept 从listen所维护的队列中取出一条已连接的TCP,返回该连接的socket描述字 e)服务器客户端在连接socket描述字上进行消息通信f) close 关闭打开着的套接字 为了更好的服务多个发起请求的客户端,在e步骤上,我们使用fork以派生子进程来独立处理每个客户端的请求。 if( (childp 阅读全文