linux服务器 开发 资料 整理

1

telnetd ---- 一个linux下非常好用的telnet服务器,通过它可以远程访问终端,就像本地操作一样方便。

2

一个简单的游戏服务器框架demo(源码已经放在GitHub)
https://blog.csdn.net/nosix/article/details/76548984
https://github.com/no5ix/realtime-server-ue4-demo

3

linux高性能服务器编程+源码(带书签)
https://download.csdn.net/download/qq_20772811/10683128
《Linux高性能服务器编程》共17章,分为3个部分:第一部分对Linux服务器编程的核心基础——TCP/IP协议进行了深入的解读和阐述,包括TCP/IP协议族、TCP/IP协议,以及一个经典的TCP/IP通信案例;第二部分对高性能服务器编程的核心要素进行了全面深入的剖析,包含Linux网络编程API、高级I/O函数、Linux服务器程序规范、高性能服务器程序框架、I/O复用、信号、定时器、高性能I/O框架库Libevent、多进程编程、多线程编程、进程池和线程池等内容,原理、技术与方法并重;第三部分从侧重实战的角度讲解了高性能服务器的优化与监测,包含服务器的调制、调试和测试,以及各种实用系统

本书是Linux服务器编程领域的经典著作,由资深Linux软件开发工程师撰写,从网络协议、服务器编程核心要素、原理机制、工具框架等多角度全面阐释了编写高性能Linux服务器应用的方法、技巧和思想。不仅理论全面、深入,抓住了重点和难点,还包含两个综合性案例,极具实战意义。, 全书共17章,分为3个部分:第一部分对Linux服务器编程的核心基础——TCP/IP协议进行了深入的解读和阐述,包括TCP/IP协议族、TCP/IP协议,以及一个经典的TCP /IP通信案例;第二部分对高性能服务器编程的核心要素进行了全面深入的剖析,包含Linux网络编程API、高级I/O函数、Linux服务器程序规范、高性能服务器程序框架、I/O复用、信号、定时器、高性能I/O框架库Libevent、多进程编程、多线程编程、进程池和线程池等内容,原理、技术与方法并重;第三部分从侧重实战的角度讲解了高性能服务器的优化与监测,包含服务器的调制、调试和测试,以及各种实用系统监测工具的使用等内容。

链接:https://pan.baidu.com/s/1-UyrhsNryfk5XGXFdNEswg

密码:qv35

4

高性能linux服务器开发必备实战书籍pdf
Linux高性能服务器编程 后台开发:核心技术与应用实践.徐晓鑫 鸟哥的Linux私房菜服务器架设篇(第三版)

5

后台服务器开发进阶必读源码书籍pdf
libevent源码深度剖析 redis设计与实现(第二版) 深入理解Nginx模块开发及架构解析

分为三卷;后台开发 核心技术与应用实践高清PDF,因上传文件大小限制,分割成了三个文件,全部下载放在同一目录下,即可成功解压,总共两部分:后台开发 核心技术与应用实践.zip 后台开发 核心技术与应用实践.z01 后台开发 核心技术与应用实践.z02

6

后台开发:核心技术与应用实践.徐晓鑫(带详细书签)
腾讯云平台技术总监黄世飞、Facebook对外支付项目主程张子兴、微软软件工程师彭可竞、阿里巴巴资深算法工程师周乐、百度大数据高级测试工程师畅晋联袂推荐;围绕后台开发需要掌握的核心技术,从多个方面、多个角度进行了阐述,覆盖了该领域的几乎所有内容;充分抓住本质并结合实践,文字通俗易懂,可操作性强。 第一部分: 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。作为一名C++后台开发,首当其冲得学会如何写Makefile。这里介绍Makefile

因为后台开发所需要的技术广泛而坚深,要成为一名后台开发工程师门槛很高,所以相关人才比较紧缺。作者是在腾讯工作多年的后台开发工程师,不仅技术精湛,而且在处理大量实际业务的过程中积累了丰富的开发经验。在这本书中,她不仅首次为后台开发工程师勾勒出了完整的知识能力体系结构图,而且还对后台开发工程师所需要掌握的大量复杂的技术知识进行了提炼、剥离和整合,专注于成为一名后台开发工程师所需掌握的核心技术、开发工具和实践方法,大幅度降低后台开发工程师的学习曲线。 本书的内容获得了来自腾讯、Facebook、微软、阿里、百度的多位资深技术专家的高度认可。, 全书一共13章,在逻辑上分为六大部分:, 第一部分(第1~3章)介绍了编程语言方面的知识,包括常用语法、类与常用STL的使用。, 第二部分(第4~5章)介绍了编译原理和调试方法相关的知识,编译原理包括编译与链接的具体过程、Makefile的编写、目标文件的内容与处理目标文件相关工具的使用,调试方法主要介绍了strace、gdb、top、ps与valgrind工具的使用等。, 第三部分(第6~8章)介绍了网络相关的知识,包括TCP协议的关键知识点和TCP server的实现,网络IO模型和select、poll与epoll三个重要函数的使用,还有ping、tcpdump、netstat和lsof这四个网络分析工具的使用。, 第四部分(第9~11章)主要是多线程、进程和进程间通信相关的知识,包括多线程的使用、多线程的同步和重入问题,进程方面有父子进程、僵死进程、守护进程和进程间通讯的方式。, 第五部分(第12章)主要是HTTP协议的介绍与使用、CGI的设计原理、实现和FASTCGI的简单介绍。, 第六部分(第13章)通过常用类库JsonCPP和Protobuf的使用,演示如何使用第三方库。

7

TCP/IP详解三卷
或者internetworking with tcp/ip三卷

linux网络编程经典啊

haproxy

TCP/IP详解三卷 这些只是讲api的原理和使用而已,
好像没有上面从服务器的设计和架构方面的比较好的书。

开源代码,我在看那个上面haproxy的代码,好像写的不错,还没仔细看。其实这些开源代码也不见的很复杂,人家都写的很整洁的,看了应该可以学到不少东西的。我觉得最好能从总体架构上理解别人的设计,整个框架是怎么设计的?然后再结合那些书查看相关的api应该就可以了

《LINUX 多线程服务器端编程》 陈硕
《多核多线程编程》
FreeMODBUS

A Modbus ASCII/RTU and TCP implementation
FreeMODBUS 是针对通用的Modbus协议栈在嵌入式系统中应用的一个实现。Modbus协议是一个在工业制造领域中得到广泛应用的一个网络协议。一个Modbus通信协议栈包括两层:定义了数据结构和功能Modbus应用协议和网络层。在FreeMODBUS的当前版本中,提供了Modbus Application Protocol v1.1a 的实现并且支持在Modbus over serial line specification 1.0中定义的RTU/ASCII传输模式。从0.7版本开始,FreeModbus也支持在TCP defined in Modbus Messaging on TCP/IP Implementation Guide v1.0a中定义的TCP传输。Freemodbus遵循BSD[1] ,这意味着本协议栈的实现代码可以应用于商业用途。目前版本的FreeModbus支持如下的功能码:

本实现基于最新的标准并且与标准完全兼容。接收和传输Modbus RTU/ASCII数据帧是通过一个由硬件提取层的调用来驱动状态机来实现的。这就使得该协议非常容易移植到其他的平台之上。当收到一个完整的数据帧后,该数据帧被传入Modbus应用层,数据帧的内容在该层得到解析。为例方便增加新的Modbus功能,Freemodbus在应用层通提供了Hooks。
如果用到了Modbus TCP协议,那么当准备处理一个新数据帧的时候,移植层就必须首先向协议栈发送一个事件标志。然后,协议栈调用一个返回值为接收到的Modbus TCP数据帧的函数,并且开始处理这个数据帧。如果数据有效,则相应的Modbus反馈帧将提供给移植层生成反馈帧。最后,该反馈被发送到客户端。

LWIP内存管理

LWIP的内存管理使用了2种方式:内存池memp和内存堆mem,如图1所示。

内存池的特点是预先开辟多组固定大小的内存块组织成链表,实现简单,分配和回收速度快,不会产生内存碎片,但是大小固定,并且需要预估算准确。

内存堆的本质是对一个事先定义好的内存块进行合理有效的组织和管理,主要用于任意大小的内存分配,实现较复杂,分配需要查找,回收需要合并,容易产生内存碎片,需要合理估算内存堆的总大小。

陈硕老师的Linux多线程编程也是一本好书
线程池

用glibc里面的g_thread_poll_new也行吧
github上关注过一个用c的, 叫https://github.com/zyearn/zaver

https://github.com/GNOME/glib/blob/master/tests/threadpool-test.c

https://blog.csdn.net/u014338577/article/details/52954796

http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed19fa950d100b81315d03de3e7e8090027fa3c614ce3b0c564711befb723f455a8895612647fc1902bded632c6c5337b7edaed20a8ae8c43f2ffe45692d42c75612a443e9941831847dd00ce6fa47bceae732e2e88893880705dd537438ddadd5&p=8b2a975eca9a11a05bef963a4d5c91&newp=937bc54ad5c143e944b0c7710f579f231601d13523808c0a3b8fd12591700d1a2a22b4fb66794d58dcc1786604af4c5ee9f23275310723b499ce8c4dc9fdff6978ca28632c4ac05d4f&user=baidu&fm=sc&query=glib+thread+pool&qid=a561e8e40002c63e&p1=2

线程池的实现

https://www.oschina.net/code/snippet_1987090_44422

可直接商用的跨平台c,c++动态线程池库libstpool
libstpool是一个c,c++高效的跨平台动态线程池,任务池库,支持优先级任务,内含跨平台定时器
libstpool是一个轻便高效的支持优先级的,跨平台的c语言 线程池,任务池库.

该资源是 git 上 libstpool 线程池的目前最新的代码,因为是开源的关系,就免费提供,项目可本地编译生成lib文件,也同时包含demo。

https://blog.csdn.net/pkueecser/article/details/13380757
开源实现:

  1. 成熟: http://threadpool.sourceforge.net/index.html

(代码分析文章: http://blog.csdn.net/byxdaz/article/details/6299020)

  1. 代码量小: https://github.com/mbrossard/threadpool

(代码分析文章: http://swind.code-life.info/posts/c-thread-pool.html

web服务器

web服务器可以看看tinyhttpd,或者看看apache,nginx,根据自己水平选吧。

线程池

线程池原理及C语言实现线程池
https://blog.csdn.net/qq_36359022/article/details/78796784
这个里面的代码 在线程退出的时候,会有内存泄漏的问题

下面的链接给修改好了。
https://github.com/512Community/threadpool.git

c语言线程池的实现

https://www.oschina.net/code/snippet_123621_18783

c语言线程池 libstpool

https://www.oschina.net/code/snippet_1987090_51076

https://github.com/piggy-xrh/libstpool.git

https://gitee.com/libstpool/libstpool

 /** 定义期望获得的能力集 */
    eCAPs = eCAP_F_DYNAMIC|eCAP_F_ROUTINE|eCAP_F_TASK_WAIT_ALL;

	/** 创建线程池 */
	pool = stpool_create("mypool", /** 线程池名                      */
						 eCAPs,    /** 期望libstpool提供的的功能特性 */
	                      5,	   /** 线程池中运行的最大线程数目    */
				          0,	   /** 预启动提供服务的的线程数目    */
				          0,	   /** 保持线程池创建后调度任务状态  */
				          1		   /** 优先级队列数目                */
					   );
	
	/** 添加10个任务*/
	for (i=0; i<10; i++) {
		stpool_add_routine(pool, "mytask", task_run, task_err_handler, NULL, NULL);
	}

	/** 等待所有任务执行完成 */
	stpool_wait_all(pool, -1);
	
	/** 打印线程池的运行状态信息 */
	puts( stpool_stat_print(pool) );

	/** 释放线程池 */
	stpool_release(pool);
	
从windows到linux的换行转换工具dos2unix

https://www.cnblogs.com/anpengapple/p/5664235.html
sudo apt-get -y install dos2unix
$ dos2unix afile.txt
dos2unix: converting file afile.txt to Unix format …

    PS背景:我在公司做sdk 的pc端开发,所以经常会在win下编译通过之后跑到linux下再运行一次已确保能支持多平台。

    今儿在win下跑完一程序,然后放到linux下跑的时候,我用指令:

sudo ./build.sh

但是却没有任何反应。于是我换了指令,用

chmod u+x build.sh
./build.sh

报错 “build.sh /bin/bash^M: 坏的解释器:没有那个文件或目录”。 以前遇到这个问题,换了几种编译方法就解决了,单这次还是不行,于是又换:
bash build.sh
编译的时候报错 :

后来一想 \r 这个符号怎么出现的,于是各种百度,才知道原因可能是因为我在win下操作的时候,修改到了此文件。

    在win下编辑的时候,换行结尾是\n\r , 而在linux下 是\n,所以才会有 多出来的\r

    用指令:

sed -i ‘s/\r$//’ build.sh
会把 build.sh 中的\r 替换成空白!

    再次编译!成功!!

PS:写在后面

参考文章:http://www.educity.cn/wenda/153393.html

一楼大牛提议,有一个dos2unix的软件,我一看果然好用!感谢CedarDiao 大牛!

libstpool 编译过程
//https://gitee.com/libstpool/libstpool
//git clone  https://gitee.com/libstpool/libstpool.git
//dos2unix configure
//./configure
//make
//sudo make install

cp stpool.h stpool_group.h stpool_caps.h msglog/msglog.h /usr/include/stpool
cp libmsglog.a libmsglog.so libstpool.a libstpool.so /usr/lib

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值