linux 网络服务器开发
文章平均质量分 63
markman101
这个作者很懒,什么都没留下…
展开
-
我为什么选择go语言
这里,我并不打算引起语言争论的口水仗,我并不是什么大牛,对语言的造诣也不深,只是想通过自己实际的经历,来说说为什么我在项目中选择go。其他语言的经历C++在接触go之前,我已经有多年的c++开发经验。主要用在游戏服务端引擎开发以及P2P上面,那可是一段痛并快乐的时期,以至于我看到任何的程序钉子问题都觉得可以用c++这把锤子给敲定。但是对于互联网项目开发来说,除非你的团队整体的c++转载 2014-09-17 17:23:10 · 1974 阅读 · 0 评论 -
linux后台运行命令
后台运行脚本 monitor.sh & --shell终端断掉脚本就停止运行了nohup command & --不挂断的执行程序setsid command & --关闭shell终端,命令继续后台运行 (monitor.sh &) --关闭shell终端,命令继续后台运行disown -h %转载 2013-11-15 12:21:02 · 985 阅读 · 0 评论 -
IO - 同步,异步,阻塞,非阻塞
原文地址:http://blog.csdn.net/historyasamirror/article/details/5778378读完此兄文章 也谈谈自己的感悟。文章中主要比较了四种IO Model: blocking IO nonblocking IO IO multiplexing asynchronous IO 背景知识:对于一原创 2012-02-29 16:15:33 · 1041 阅读 · 1 评论 -
在linux上 重定向 管道实现
管道和重定向输入输出不仅可以重定向到文件,也可以通过管道传递到其他进程中。基本思路:linux:1. 创建管道对pipe(int pipefd[2])2. 创建进程首先fork,然后子进程用dup2把pipefd[0]复制到STDIN_FILENO(就是0),然后关闭pipefd[1],或者把pipefd[1]复制到STDOUT_FILENO(就是1),然后关闭pipe转载 2012-02-29 10:39:44 · 5166 阅读 · 0 评论 -
GDB十分钟教程
作者: liigo原文链接: http://blog.csdn.net/liigo/archive/2006/01/17/582231.aspx日期: 2006年1月16日本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者。GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具转载 2012-02-20 15:46:55 · 908 阅读 · 0 评论 -
用QtCreator做IDE开发非Qt的C/C++程序
在Windows还是习惯用VS2005但是现在到了Linux下,开发起来C/C++程序就没有那么得心应 手的IDE了。虽然很多人推荐E开头那个主要作为Java开发的IDE,不过安上插件后感觉不大好,一个是那个智能完成功能反应有点迟钝,对标准库的支持 不大好,另一个是编译起来还是麻烦,不能自动根据工程生成合适的makefile(或者是我没发现这个功能哈,一直用它的同志们不要笑我土)转载 2012-02-27 14:12:04 · 1540 阅读 · 1 评论 -
常用linux命令总结
Ubuntu查看系统资源消耗:linux commond: top查看某进程的资源消耗:linux commond: top -p 进程的ID查看本机IP:linux commond: ifconfig在系统范围内搜索某个文件:linux commond: sudo find / -name qma* -print如果执行某个命令时提示 per原创 2012-01-04 15:23:56 · 561 阅读 · 0 评论 -
Ubuntu 更新源地址列表及更改方法
1、首先备份Ubuntu 11.04源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (备份下当前的源列表,有备无患嘛) 2、修改更新源 sudo gedit /etc/apt/sources.list (打开Ubuntu 11.04源列表文件)转载 2012-02-15 10:52:02 · 870 阅读 · 0 评论 -
Socket send函数和recv函数详解
int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;转载 2011-12-30 16:39:40 · 788 阅读 · 0 评论 -
模板类中定义 std::list::iterator iter在Linux下不识别的解决方法。
templatevoid CCommList::Clear(){ std::list::iterator iter = infolist.begin(); for (; info_iter!=infolist.end(); info_iter++) { delete &*info_iter;转载 2012-01-03 15:40:23 · 2821 阅读 · 0 评论 -
关于errno.h的解释(转载)
#ifndef _I386_ERRNO_H#define _I386_ERRNO_H#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /* No such process */#define EINTR 4 /*转载 2012-02-04 08:53:47 · 2427 阅读 · 0 评论 -
errno — Standard errno system symbols
This module makes available standard errno system symbols. The value of each symbol is the corresponding integer value. The names and descriptions are borrowed from linux/include/errno.h, which sh转载 2011-12-30 16:33:28 · 893 阅读 · 0 评论 -
网络发送时 返回值小于零的情况
while (len > 0) { res = write (c->sock_fd, tcp_buf, len); if (res < 0) { switch (errno) { case EAGAIN: case EINTR: break; default:原创 2011-12-30 16:19:46 · 683 阅读 · 0 评论 -
为大量用户服务的服务端网络架构设计(负载均衡相关)
由来:因为打算自己开发一个类似于即时通讯的服务端,为了以后的发展,需要先规划好框架,其中最主要的客户端连接服务端的方案。因为随着客户的增多(比如说100万),客户的同时上下线(比如说1万),对系统都将是一个很大的压力。而且还要考虑服务器的负载均衡。思路:通过学习MSN面对用户数量不断增大时所不断改进的后台负载方案(google "亿万用户网站MySpace的成功秘密"),可以让转载 2012-02-02 17:05:22 · 1488 阅读 · 1 评论 -
send() 和 EPOLLOUT 的关系
一般都是非阻塞send,直到失败了,才请求EPOLLOUT事件,检测到了就可以继续发送转载 2011-12-30 16:38:03 · 1129 阅读 · 0 评论 -
VIM下,在文件及目录中查找字符串的方法 (vimgrep)
以前用editplus的时候,有一个在文件中查找的功能,可以在所有打开的文件中查找字符串,也可以在某一个目录及它的子目录中查找.那么在VIM中是否也有相关的功能呢?答案当然是肯定的.VIM中有个类似grep的命令,叫做vimgrep,语法如下::vimgrep /{pattern}/[g][j] {file} ... 简单来讲,就是在路径和文件命符合{file}的所有文件转载 2013-11-26 17:05:10 · 1228 阅读 · 0 评论 -
Vim的分屏功能
本篇文章主要教你如何使用 Vim 分屏功能。 分屏启动Vim使用大写的O参数来垂直分屏。vim -On file1 file2 ...使用小写的o参数来水平分屏。vim -on file1 file2 ...注释: n是数字,表示分成几个屏。关闭分屏 关闭当前窗口。Ctrl+W c关闭当前窗口,如果只剩最后一个了,则退出Vim。Ctr转载 2013-11-26 17:05:55 · 724 阅读 · 0 评论 -
linux端口状态查看相关命令总结
1netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况-a 显示一个所有的有效连接信息列表(包括已建立的连接,也包括监听连接请求的那些连接)-n 显示所有已建立的有效连接-t tcp协议-u udp协议-l 查询正在监听的程序-p 显示正在使用socket的程序识别码和程序名称例如:netstat -nt转载 2014-02-11 18:17:08 · 3433 阅读 · 0 评论 -
我的编程语言经历
Alan Perlis 说过:“一种不改变你编程的思维方式的语言,不值得去学。”,虽然写了这么多年程序,用了这么多的语言,但我自认还没悟道编程语言如何改变我的思维方式。几天前,我需要用python来为 ledisdb 写一个客户端,我突然发现,对于c++,go这种语言,我如果需要实现一个功能,首先想到的是问题是代码应该怎么写。但是当我使用python的时候,我首先考虑的问题是在哪里去找一个转载 2014-09-17 17:21:52 · 2065 阅读 · 0 评论 -
服务器应用--双缓冲队列
在服务器开发中 通常的做法是 把 逻辑处理线程和I/O处理线程分离。 逻辑处理线程:对接收的包进行逻辑处理。 I/0处理线程:网络数据的发送和接收,连接的建立和维护。 通常 逻辑处理线程和I/O处理线程是通过数据队列来交换数据,就是生产者--消费者模型。 这个数据队列是多个线程在共享,每次访问都需要加锁,因此如何减少 互斥/同步的开销就显得尤为重要。原创 2011-12-19 10:25:57 · 6358 阅读 · 3 评论 -
MTPutty 保存设置
先load你指定的ip然后选择左侧目录中的windows->translation 再在右侧选择utf-8编码选中后,点击左侧目录中的session,回到首页面,点击 save 保存 然后open就行了.在 mtputty中新添加时选择刚才保存的那个绘画添加上相应的端口用户名密码就行了如果是想修改mtputty中已经添加过会话,这样右键你像改动的会话转载 2014-07-28 09:25:41 · 10404 阅读 · 0 评论 -
C++ 构造函数浅析
1、C++ 构造函数分类原创 2014-07-16 13:37:41 · 779 阅读 · 0 评论 -
Linux的sleep()和usleep()的使用和区别
1、将线程以秒为单位挂起转载 2014-07-16 09:13:49 · 1372 阅读 · 0 评论 -
那些年·我们读过的专业书籍
有的书带着我们走进一个全新的世界,有的书解答了我们心中久蓄的疑惑,有的书让我们眼前一亮兴奋不已,有的书令我们回味无穷终生难忘。作为计算机专业的人,相信大家一定看过不少经典的专业书籍。这里我们列举一下,那些年,我们读过的专业书籍。(*部分书籍我还没有读过,就不盲目做评论了,以免误导大家)1. C++《C++ Primer》:C++经典,入门必读,几乎涵盖C++所有特性。转载 2014-04-17 10:18:03 · 1183 阅读 · 0 评论 -
linux后台开发必看书
系统编程类《UNIX环境高级编程》W.Richard Stevens:非常经典的书。虽然初学者就可以看,但是事实上它是《Unix NetworkPrograming》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。《Unix网络编程卷二》Unix网络编程卷第二卷没有涉及网络的东西,主要讲进程间通讯和Posix线程。网络编程类转载 2014-04-17 09:56:47 · 1005 阅读 · 0 评论 -
国外程序员推荐:每个程序员都应读的书
如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西。”很多程序员响应,他们在推荐时也写下自己的评语。以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 10的书。其实除了前10本之外,推荐数前30左右的书籍都算经典,伯乐在线整理编译这个问答贴,同时摘译部分推荐人的评语。下面就按照各本书的推荐转载 2014-04-17 09:53:41 · 1196 阅读 · 0 评论 -
Linux tcpdump命令详解
简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命令实例默认启动tcpdump转载 2014-04-01 14:56:18 · 1578 阅读 · 0 评论 -
Awk 与 运算符
awk 作为文本处理优秀工具之一,它有自己丰富的运算符,可分为:算术运算符,赋值运算符,关系运算符,逻辑预算法,正则运算符。一、运算符介绍运算符描述赋值运算符= += -= *= /= %= ^= 赋值语句逻辑运算符||逻辑或&&逻辑与转载 2014-03-05 18:05:43 · 1252 阅读 · 0 评论 -
shell 循环实现
循环语句:Bash Shell中主要提供了三种循环方式:for、while和until。一、for循环 for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区域(在do和done 之间),直到所有元素取尽为止。 其中,串行是一些字符串的组合,彼此用$IFS所定义的分隔符(如空格符)隔开,这些字符串称为字段。for的语法结构如下:转载 2014-03-05 17:12:38 · 1034 阅读 · 0 评论 -
shell之Awk
AWK一、awk基础知识1、awk格式awk 选项 '命令体' file1,file2...选项:-F 指定分隔符,默认是空格或者tab制表符命令体:读前处理:BEGIN{命令...}------->页眉所有行处理:{命令...}------->内容读后处理:END{命令...}------->页脚例如: awk -F: 'BEGIN{...转载 2014-03-05 17:06:43 · 948 阅读 · 0 评论 -
Wireshark捕捉与显示过滤器语法详解
捕捉过滤器是数据经过的第一层过滤器,它用于控制捕捉数据的数量,以避免产生过大的日志文件。显示过滤器是一种更为强大(复杂)的过滤器。它允许您在日志文件中迅速准确地找到所需要的记录。 捕捉过滤器的语法与其它使用Lipcap(Linux)或者Winpcap(Windows)库开发的软件一样,比如著名的TCPdump。捕捉过滤器必须在开始捕捉前设置完毕,这一点跟显示过滤器是不同的。 设置捕转载 2014-01-15 12:09:25 · 6480 阅读 · 0 评论 -
awk语法解析及实例
(1) awk视文本文件为文本数据库 awk将文本文件的每一行看作为一个记录,将每一行中每一个被空白符分割开的部分看作一个字段 (2) awk语法结构分析 awk [-F ERE] [-vassignment] ...program[argument ...] awk [-F ERE] –f progfile ... [-v assignment]...[a原创 2014-02-25 14:29:05 · 834 阅读 · 0 评论 -
select, poll和epoll的区别——网络资料自结
前天的笔试有一道题是:请分别说明select, poll和epoll的区别?当时看题时懵掉了,因为这个题是那次讲课时我问的老师的题目,老师这个太八神说这个太难了你不用钻牛角尖的。这下好了,这次考到了,而且是在公司笔试。。咳,这个太八神呀。。!好吧,今天找了下资料把它们的区别罗列一下,好像还是有一点抽象,不过还好,钻一下,悟出了那么一点点……。现在把网上找到的资料转一下咯。。一下文章转载 2012-02-02 17:04:51 · 900 阅读 · 0 评论 -
安装 mysql workbench
我在windows系统下使用的mysql客户端是mysql-front。可惜没有for Linux版本,而且现在更新也是有一阵没一阵。不过在《程序员》杂志上看见workbench的新版本已经发布的消息。况且除了客户端功能,还有建模功能,又支持三大主流操作系统。因此我决定在我的ubuntu上安装它。以后就全部转为workbench来工作了。 step1:下载地址:http://www转载 2012-01-30 16:07:27 · 1743 阅读 · 0 评论 -
MySQL: ubuntu10.10 下安装
1. 下载mysql-5.5.1-linux2.6-i686.tar.gz 下载地址:http://dev.mysql.com/downloads/mysql/ 这是二进制版本,已经编译过。相当于绿色版本。http://dev.mysql.com/downloads/mysql/ 2. 根据官网手册安装说明,进行安装 详细请看:htt转载 2012-01-30 15:36:44 · 620 阅读 · 0 评论 -
ubuntu 11.04英文环境下使用ibus输入中文,并且自动启动输入法 ibus介绍
1. 安装我安装11.04英文,默认也已经安装好了ibus输入法,sudo apt-get install ibus #安装ibus输入法框架,可能提示已经安装,没关系sudo apt-get install ibus-pinyin #安装ibus的拼音输入法sudo apt-get install ibus-sunpinyin #安装ibus的另一种拼音输入法转载 2011-12-20 14:20:32 · 4225 阅读 · 0 评论 -
我郑重的问自己
Q:我现在奋斗的精神动力是什么。A:去找一个适合自己的窝待着。什么样的窝适合自己呢,一个能让自己有拥有归属感和产生自豪感的地方。Q:怎么才有归属感?A:找到一群对编程抱有极大兴趣的人,大家想在一起真正做点事。Q:怎么才能有自豪感?A:做真正的互联网产品,不经意间在家人,朋友的PC,手机上看到自己团队开发的产品,能真切感觉到产品本身对生活的影响,就会产生自豪感。原创 2011-12-08 22:40:54 · 778 阅读 · 1 评论 -
服务器程序设计初探
换工作了后,很久没有来写点什么,总感觉时间不够用。一则工作上的事情比较多;在生活上的时间也比较多。闲话不说,直接谈谈服务器程序的设计的几个部分1。内存分配内存分配对于任何程序都是很重要的,如何分配内存,如何减少频繁的内存分配,如何提高内存的使用效率,减少内存碎片都是需要值得好好研究的问题;对于内存要求比较高的系统,还要考虑内存不够的情况。一般的程序,都会将内存的操作封装成几个函数,一次请求转载 2011-12-08 22:33:35 · 851 阅读 · 1 评论 -
spserver 开源服务器框架研究与分析
网上开源的C/C++服务器框架 还是比较少的。 最近研究了 spserver , 里面用了较多的设计模式,使用设计模式的目的是把不变的东西和可变的东西分离并且封装起来,避免以后修改代码, 所谓 “对修改关闭,对扩展开放”,但是滥用设计模式会把简单的问题复杂话了。 spserver代码量比较少,比较容易看懂,如果只是做一个简单的echo服务器的话,spserver 可以给新手一个快速搭转载 2011-12-17 14:15:09 · 3740 阅读 · 0 评论 -
mysql API
>数据库连接 MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, constchar *user, constchar原创 2011-12-06 17:44:19 · 597 阅读 · 0 评论