| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux/Windows/C++网络开源库项目集合 -> 正文阅读 |
|
[系统运维]Linux/Windows/C++网络开源库项目集合 |
免费的跨平台SSH和SFTP工具: https://www.putty.org/?-- Windows https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html https://www.poderosa-terminal.com/?-- Windows/Mac https://filezilla-project.org/?-- Windows/Mac/Linux --?https://download.filezilla-project.org/client/ 英文?https://filezilla-project.org/? 中文?https://www.filezilla.cn/ Mac下使用自带终端SSH功能?-- 自带的SFTP是文本输入型的,没有图形界面 Windows SSH推荐使用XShell或者putty --?https://www.portablesoft.org/xshell-legacy-versions/ Mac SSH推荐使用自带的终端命令 http://firecats-MacBook-Pro:~$ ssh root@172.16.17.135 Windows/Mac SFTP推荐使用FileZilla,CentOS 7终端命令行方式安装FileZilla ? Github桌面版工具,GitHubDesktop: https://desktop.github.com/?-- 支持Windows 64bit和Mac系统 https://help.github.com/desktop/guides/?帮助文档 ? Wireshark https://www.wireshark.org/download/win64/ https://accfcx.github.io/post/tools/ ? socket:中国大陆翻译为套接字,台湾翻译为插座。感觉插座更容易理解。 https://blog.csdn.net/alitech2017?阿里技术官方号 https://www.taohui.pub/??-- 陶辉,《深入理解Nginx:模块开发与架构解析(第2版)》作者 https://blog.csdn.net/russell_tao?-- 陶辉,《深入理解Nginx:模块开发与架构解析(第2版)》作者 https://blog.csdn.net/nsrainbow --- 杨曦,《HBase不睡觉书》作者 http://zhuanlan.51cto.com/columnlist/shenj/?--- 58沈剑 http://blog.csdn.net/analogous_love?--- 范蠡&张小方 https://www.cnblogs.com/balloonwj/?--- 范蠡&张小方 https://github.com/baloonwj/flamingo?---?范蠡&张小方 http://blog.csdn.net/column/details/15700.html?--- teamtalk https://github.com/forhappy/Cplusplus-Concurrency-In-Practice?--- 《C++ 并发编程指南》 epoll定时器实现系列文章:高性能定时器实现的三种方式---升序链表,时间轮,最小堆 TCP面试常见题:张小方的知乎Live:轻松搞定技术面试中常见的网络通信问题 去BAT,你应该要看一看的面试经验总结?【面试三部曲1,推荐】 面试成功必备,C++ 后台开发面试时一般考察什么?【面试三部曲2,推荐】 Linux服务器百度面试【面试三部曲3,推荐】 ? 《Linux多线程服务端编程:使用muduo C++网络库》学习笔记?【firecat整理,推荐】 我个人的Linux TCP Server和client测试源码,C语言(1)(★firecat推荐★) 我个人的Linux TCP server和client测试源码,C语言(2)(★firecat推荐★) ? C/C++语言版本的http server和client,请关注RESTful http://blog.csdn.net/libaineu2004/article/details/78490165 ? C++11 future https://github.com/facebook/folly/tree/master/folly/futures 详谈C++11新特性之future及开源项目ananas(folly,std c++11和ananas的future各自的区别是?)?-- ananas, Qedis ? https://github.com/TarsCloud/Tars?-- 重量级rpc https://github.com/TarsCloud/TarsDocker?-- docker,由于管理平台和基础服务安装配置太复杂,所以搞了个镜像 https://github.com/TarsCloud/TarsCpp https://github.com/TarsCloud/TarsGo https://github.com/Tencent/TSeer https://github.com/Tencent/phxrpc?-- 轻量级rpc https://github.com/Tencent/mars?-- weChat https://github.com/Tencent/rapidjson?-- rapidjson http://rapidjson.org/zh-cn/index.html ? muduo muduo是一个高质量的Reactor网络库,采用one loop per thread + thread pool架构实现,代码简洁,逻辑清晰,是学习网络编程的很好的典范。 http://blog.csdn.net/solstice? --- muduo blog https://github.com/chenshuo/muduo?--- muduo官方boost版本 https://github.com/chenshuo/muduo/tree/cpp11?--- muduo官方C++11版本 https://github.com/chenshuo/muduo/tree/cpp98?--- muduo官方C++98版本 多线程服务器的常用编程模型?---?oneloop per thread + threadpool? http://blog.csdn.net/KangRoger/article/category/5679833 muduo源码学习 http://www.cnblogs.com/peimin/category/548834.html muduo源码学习 使用C++11改造muduo?--?https://github.com/AlexStocks/muduo 发布一个改写自muduo的C++网络I/O库?--?https://github.com/kimg-bo/kimgbo 开源网络库的分析libevent muduo nginx ... ? C++仿造muduo实现的多线程网络库,github检索关键词"C++11 network" https://github.com/loveyacper/ananas?-- C++11写的网络库和rpc,腾讯员工的开源项目 https://github.com/guangqianpeng/tinyev?-- C++17写的网络库 https://github.com/guangqianpeng/jrpc?-- C++17写的rpc https://github.com/IronsDu/brynet?-- C++11写的网络库 https://github.com/IronsDu/gayrpc?-- C++14/17写的rpc https://github.com/yedf/handy?-- C++11写的网络库 https://github.com/xiongziliang/ZLToolKit?-- C++11写的网络库,支持windows https://github.com/xiongziliang/ZLMediaKit?--?A lightweight RTSP, RTMP, WebSocket, HTTP server and client framework based on C++11 https://github.com/cpp-taskflow/cpp-taskflow?--?Modern C++ Parallel Task Programming Library ? HP-Socket HP-Socket是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口 https://github.com/ldcsaa/HP-Socket https://gitee.com/ldcsaa/HP-Socket https://www.oschina.net/p/hp-socket https://www.cnblogs.com/ldcsaa ? ACL 爱奇艺,郑树新,One advanced C/C++ library https://github.com/acl-dev/acl https://github.com/acl-dev/libfiber https://github.com/freeeyes/PSS ? 熊万平,网络io框架 https://github.com/xwpcom/CoreLooper ? cpp-netlib ? 360 evpp https://github.com/Qihoo360/evpp https://github.com/Qihoo360/pika ? libuv https://github.com/libuv/libuv?-- 源码,cmake https://nikhilm.github.io/uvbook/index.html?-- 文档 http://docs.libuv.org/en/v1.x/api.html?-- api http://docs.libuv.org/en/v1.x/guide.html?-- user guide https://github.com/nodejs/http-parser?-- http,可以和libuv结合起来使用 https://github.com/libevent/libevent?-- 竞争者 ? ec是基于libevet的C++11封装 https://git.oschina.net/havesnag/ec ? mysql连接池 数据库连接池c++ (msyql) mysql connector c++ 的使用 基于Mysql Connector(C++)的数据库连接池的实现 https://github.com/zsummer/zsummerX https://github.com/zsummer/log4z ? https://github.com/cameron314/concurrentqueue ? kcp?https://github.com/skywind3000/kcp kcp是一种可靠udp,是一套纯算法的来保证udp包有序、不丢失。那么问题来了,这说的不就是tcp吗?为啥还要可靠udp这个东西,原因在于有很多场景对网络延迟要求非常高,游戏中的实时对战就是这样的场景,如果直接使用tcp延迟太高会很卡,如果直接使用udp会丢包,无序。kcp和tcp都会保证可靠,但问题时kcp为何在保证可靠的情况下比tcp快。tcp时很多年前设计的,在低延迟的场景下tcp并不能很好的胜任,kcp改进了tcp的不足:RTO翻倍vs不翻倍、快速重传、延迟ACK vs 非延迟ACK、选择性重传 vs 全部重传。换句话说,tcp的实现并编译进了操作系统,而kcp是一套算法,基于udp传输,可以灵活的调整一些参数来提高传输速度,降低延迟。 ? ------ ? 在学习muduo网络库前,应该先熟悉一下多线程网络服务编程模型。在6.6.2节介绍了11种方案。方案0到方案4用的是阻塞I/O。方案5到方案11用的都是非阻塞I/O。 方案0:?accept+read/write 方案0不是并发模型,只是一个循环处理。用代码表示的话,可以表示为:
? 一次只能处理一个连接,第一个连接处理完毕后,才可以进入下一次循环,否则阻塞在I/O的read或write上。 方案1?accept+fork 这是个并发模型,这个模型比较简单,在accept后,fork一个子进程,在子进程处理连接。可以表示为:
? 这个模型中要注意的是,要在子进程关闭监听的fd,在父进程关闭到来连接的fd。 方案2?accept+thread 这个方案和方案1类似,只是这个方案中是通过新建了线程来处理连接,方案1是通过新建线程来处理连接。
? 先调用ProcessAccept等待连接,如果有连接,则创建新线程来调用ProcessIO,把新建连接的fd传给这个函数。 方案3?prefork 这个和方案1类似,只是先创建好进程。当有连接到来时,可以马上使用这些进程。具体可以参考http://www.t086.com/code/apache2.2/mod/prefork.html 方案4?pre thread 这和方案2类似,先创建好线程,等连接到来时,省去了创建线程的开销。 方案5?poll(reactor):非阻塞IO+IO复用 这个方案是基于I/O复用的select/poll/epoll;复用的是进程,不是I/O。这是一个单线程/进程的方案,在I/O事件到达后,直接在当前线程/进程处理I/O。单线程/进程的Reactor模式,在处理当前I/O事件时,如果有新的I/O事件到来,不能及时响应。这样事件的优先级不能得到保证。 Lighttpd,libevent,libev采用这种方案。 方案6?reactor+thread-per-task 这个方案是为每一个I/O事件创建一个线程,在新建的线程中处理I/O事件。注意,这里是为每个I/O事件创建一个线程,而不是为每个连接创建线程。这样一来,每个新建线程处理的I/O事件的结果会有out-of-order的可能,即多次处理后的顺序和请求顺序未必一直了。 方案7?reactor+worker thread 为了避免方案6中的out-of-order的问题,在这个方案中,为每个连接创建一个线程。但是线程数目受限于CPU。 方案8?reactor+thread pool 这个方案是,在reactor线程中,等待I/O事件,当I/O事件到来时,在thread pool中取出一个线程(不是新创建)来处理I/O事件。 方案9?reactors in threads? 方案10?reactors in process 这个是Nginx的方案,连接之间无交换时,这是很好的解决方案。Nginx每个工作进程都有一个event loop。 方案11?reactors+thread pool 这是方案8和方案9的混合体。即使用多个Reactor,有的负责accept,有的负责I/O事件的到来。再使用线程池,处理I/O事件。 更多的介绍请参见《Linux多线程服务端编程:使用muduo C++网络库》第3章。 1、必须用单线程的场合:程序需要fork;限制CPU占有率; 2、单线程优缺点:简单,但是事件没有优先级处理机制; ? --------------------------------------------好书推荐----------------------------------------------------- Linux C/C++学习: github源码学习:redis,Nginx,mosquitto,skynet,teamtalk,libuv,libevent,muduo,evpp,网狐棋牌6603源码,张小方easyMule,张小方filezilla,张小方flamingo,Gh0st,PCShare,郑树新acl,ananas-rpc,Tars,美图twemproxy,zsummerX,log4z,libco,seastar 工具学习:cmake,keepalived/LVS,haproxy,CDN,kafka,log4xx,OpenResty,HBase,tengine 语言学习:lua,shell 书籍学习: 《Linux高性能服务器编程》 -- 作者:游双 《TCP/IP协议族》 《Netty权威指南(第2版)》 《Linux多线程服务端编程:使用muduo C++网络库》 《编程珠玑第2版·修订版》 《编程珠玑(续)(修订版)》 《Linux环境编程:从应用到内核》 --?Linux领域第一本将应用编程与内核实现相结合的图书 《构建高可用Linux服务器(第4版)》 《编程之美——微软技术面试心得》? 《编程之法:面试和算法心得》 《剑指OFFER:名企面试官精讲典型编程题(第2版)》? 《程序员代码面试指南:IT名企算法与数据结构题目最优解》 《数据结构(C语言版)(第2版) 严蔚敏 李冬梅 吴伟民 (编著)》 https://download.csdn.net/download/libaineu2004/10411905 《数据结构习题解析与实验指导 李冬梅 张琪 (编著)》 http://www.bjfuacm.com/structure/ 《数据结构与算法分析:C语言描述(原书第2版)》 《算法:C语言实现 (第1-4部分)基础知识、数据结构、排序及搜索(原书第3版)》 《算法基础:打开算法之门》《算法导论》 《妙趣横生的算法(C语言实现) 第2版》 《程序员面试宝典(第5版)》 《深入理解计算机系统(第3版)》 ? 作者:[美]W. Richard Stevens 《TCP/IP Illustrated,Volume 1》 --?TCP/IP详解 卷1 协议 《Advanced Programming in the UNIX? Environment》 -- APUE,UNIX环境高级编程 《UNIX Network Programming》 -- UNP,UNIX网络编程 被推荐烂了,书很厚,但只需要读一小半: ? 作者:(美)梅耶(Scott Meyers)四部曲: 《More Effective C++》 《Effective STL》 《Effective modern C++》 --?学习C++11只需要这一本书,请耐心多读几遍。 ? 作者:(美) Stanley B. Lippman著 《C++ Primer》 《深度探索C++对象模型》 ? 作者:[美]Martin Fowler 著 《重构 改善既有代码的设计》 《UML精粹:标准对象建模语言简明指南(第3版)》 ? 作者:[美]Robert C. Martin 著 《代码整洁之道》 《代码整洁之道 程序员的职业素养》 ? MySQL学习:推荐几本学习MySQL的好书 ? ---------------------------------------好拿offer------------------------------------------------------- 网站学习: https://leetcode.com/?--?LeetCode英文站点 https://leetcode-cn.com/ -- LeetCode中文站点 http://zhedahht.blog.163.com/?何海涛,《剑指Offer——名企面试官精讲典型编程题》 https://github.com/zhedahht/CodingInterviewChinese2?何海涛GitHub,《剑指Offer——名企面试官精讲典型编程题》配套源码 https://blog.csdn.net/v_JULY_v?七月在线,《编程之法:面试和算法心得》作者 https://github.com/julycoding?七月在线GitHub https://blog.csdn.net/v_july_v/article/details/6543438?程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦 https://blog.csdn.net/v_july_v/article/details/49302193?《编程之法:面试和算法心得》勘误 https://github.com/arkingc/note/tree/master/interview?面经汇总 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 15:47:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |