免费的跨平台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/ 帮助文档

https://tortoisesvn.net/

https://tortoisegit.org/

Wireshark

https://www.wireshark.org/download/win64/

https://accfcx.github.io/post/tools/

socket:中国大陆翻译为套接字,台湾翻译为插座。感觉插座更容易理解。

https://blog.csdn.net/alitech2017 阿里技术官方号

http://coolshell.cn/ 陈皓

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++ 并发编程指南》

select、poll、epoll之间的区别总结[整理]

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 -- Facebook开源C++库 --- Folly: Facebook Open-source Library

https://github.com/facebook/folly/tree/master/folly/futures

详谈C++11新特性之future及开源项目ananas(folly,std c++11和ananas的future各自的区别是?) -- ananas, Qedis

ananas RPC源码分析-net库概览(一)

腾讯高性能RPC开发框架Tars实现服务治理(微服务)

腾讯微服务框架Tars介绍

Tars C++版本的编译

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://www.lanindex.com/

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版本

发布一个基于 Reactor 模式的 C++ 网络库

多线程服务器的常用编程模型 --- oneloop per thread + threadpool

muduo库整体架构简析

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://blog.csdn.net/zsxxsz

http://zsxxsz.iteye.com/

https://github.com/freeeyes/PSS

熊万平,网络io框架

https://github.com/xwpcom/CoreLooper

cpp-netlib

http://cpp-netlib.org/

https://github.com/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

TCP 的那些事儿(上)

TCP 的那些事儿(下)

mysql连接池

c++ 实现数据库连接池

数据库连接池c++ (msyql) mysql connector c++ 的使用

基于Mysql Connector(C++)的数据库连接池的实现

redis+mysql数据同步(协同)C/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不是并发模型,只是一个循环处理。用代码表示的话,可以表示为:

while(true)
{int fd=accept(……);read(fd,……) or write(fd……);close(fd);
}

一次只能处理一个连接,第一个连接处理完毕后,才可以进入下一次循环,否则阻塞在I/O的read或write上。

方案1 accept+fork

这是个并发模型,这个模型比较简单,在accept后,fork一个子进程,在子进程处理连接。可以表示为:

while(true)
{int fd=accept(linstenFd,……);int pid=fork();if(pid==0)//child{close(listenFd);read/write(fd……);close(fd);}//Parentclose(fd);
}

这个模型中要注意的是,要在子进程关闭监听的fd,在父进程关闭到来连接的fd。

方案2 accept+thread

这个方案和方案1类似,只是这个方案中是通过新建了线程来处理连接,方案1是通过新建线程来处理连接。

void ProcessIO(void* arg)
{int fd=*static_cast<int *>arg;read/wire(fd,……);close(fd);
}void ProcessAccept()
{while(true){int fd=accept(……);pthread_create(……, NULL, ProcessIO, &fd);}}
}

先调用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 
muduo和Netty采用的是这种方案。在一个main Reactor中负责accept,之后把建立的连接fd放到sub Reactor中,这个连接的所有操作都在sub Reactor中完成。这个方案的特点是one loop per thread,有多个thread。

方案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高性能服务器编程》 -- 作者:游双
http://download.csdn.net/download/analogous_love/9673008

《TCP/IP协议族》

《Netty权威指南(第2版)》

《Linux多线程服务端编程:使用muduo C++网络库》

《编程珠玑第2版·修订版》

《编程珠玑(续)(修订版)》

《Linux环境编程:从应用到内核》 -- Linux领域第一本将应用编程与内核实现相结合的图书

《构建高可用Linux服务器(第4版)》

《编程之美——微软技术面试心得》

《编程之法:面试和算法心得》

《剑指OFFER:名企面试官精讲典型编程题(第2版)》

《程序员代码面试指南:IT名企算法与数据结构题目最优解》

《数据结构(C语言版)(第2版) 严蔚敏 李冬梅 吴伟民 (编著)》
http://www.ryjiaoyu.com/book/details/3489

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网络编程

被推荐烂了,书很厚,但只需要读一小半:
第1-7章;基础,特别是要理解TCP的双工特性.
第14章;了解gather write/scatter read.
第16章;这是本书最最重要的一章。
第30章;
也就是说,这么厚的书,只需要读10章足矣,现在有信心了吗?

作者:(美)梅耶(Scott Meyers)四部曲:
《Effective C++》 -- 有人说C++程序员可以分成两类,读过Effective C++的和没读过的。世界顶级C++大师Scott Meyers成名之作的第三版的确当得起这样的评价。当您读过这本书之后,就获得了迅速提升自己C++功力的一个契机。

《More Effective C++》

《Effective STL》

《Effective modern C++》 -- 学习C++11只需要这一本书,请耐心多读几遍。

作者:(美) Stanley B. Lippman著

《C++ Primer》
《Essential C++》

《深度探索C++对象模型》

作者:[美]Martin Fowler 著

《重构 改善既有代码的设计》

《UML精粹:标准对象建模语言简明指南(第3版)》

作者:[美]Robert C. Martin 著

《代码整洁之道》

《代码整洁之道 程序员的职业素养》

MySQL学习:推荐几本学习MySQL的好书

---------------------------------------好拿offer-------------------------------------------------------

网站学习:

https://leetcode.com/ -- LeetCode英文站点

https://leetcode-cn.com/ -- LeetCode中文站点

https://www.nowcoder.com/ 牛客网

http://zhedahht.blog.163.com/ 何海涛,《剑指Offer——名企面试官精讲典型编程题》

https://github.com/zhedahht/CodingInterviewChinese2 何海涛GitHub,《剑指Offer——名企面试官精讲典型编程题》配套源码

https://www.julyedu.com/ 七月在线

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 面经汇总

微信公众号:架构师之路-沈剑,程序员小灰,即时通讯网

收藏的博客 -- 高性能Linux/Windows服务器/C++网络库(★★★★★)相关推荐

  1. 收藏的博客 -- Qt/C++学习

    Qt Creator环境: 使用Qt Creator作为Linux IDE,代替Vim:实现两台Linux电脑远程部署和调试(一台电脑有桌面系统,一台电脑无桌面系统) 使用Qt Creator作为Li ...

  2. 如何远程链接linux服务器,如何远程登陆Linux/Windows服务器

    原标题:如何远程登陆Linux/Windows服务器 如何远程登录Linux或Windows服务器?租用了服务器,需要远程登录后才能管理自己的服务器.不同操作系统的服务器远程登录方法不一样,下面优与云 ...

  3. 部署hexo博客到阿里云服务器

    一:域名购买.服务器ECS购买 购买域名,服务器ECS,并将域名解析到服务器的公网ip 通常域名的实名认证需要花一段时间,建议提早准备好. 二:本地博客搭建 首先建立一个博客,本地能访问就行 三:云服 ...

  4. linux编写一个博客脚本,Linux 脚本编写基础 - 凌度 - 博客园.pdf

    Linux 脚本编写基础 - 凌度 - 博客园 Linux 脚本编写基础 1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始 (必须放在文件的第一行): # ...

  5. linux生产服务器有关网络状态的优化措施

    本博文为老男孩linu培训机构早期的培训教案,特分享以供大家学习参考. 全部系列分为五篇文章,本博文为第五篇:5.1高并发linux生产服务器内核参数优化案例 高并发linux生产服务器内核参数优化案 ...

  6. 优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM 深度/机器学习 AI opencv nlp)

    pudn 阿甘兄 前端 服务端 底层 移动端 大数据 云计算 AI 培训机构的课程差不多就这一套了 大数据 AI NLP 高等数学 LeetCode.<数据结构与算法之美>学习笔记.AI ...

  7. 优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM AI 深度/机器学习 opencv nlp)

    pudn 阿甘兄 前端 服务端 底层 移动端 大数据 云计算 AI 培训机构的课程差不多就这一套了 LeetCode.<数据结构与算法之美>学习笔记.AI 前端资料学习,vue.js re ...

  8. 我的第200篇博客:Linux下手把手搭建DHCP、DNS、HTTP、FTP服务器及遇到问题的解决过程

    这是我的第200篇博客,所以我打算写一个质量还算高的文章. 今天耗时11个小时,在CentOS 上搭建一个功能相对完整的服务器,用来检验我这几天的学习成果.(不一定非要CentOS,Ubuntu也很香 ...

  9. 【Zblog搭建博客网站】windows环境搭建属于自己的博客并发布上线 - cpolar内网穿透

    文章目录 1. 前言 2. Z-blog网站搭建 2.1 XAMPP环境设置 2.2 Z-blog安装 2.3 Z-blog网页测试 2.4 Cpolar安装和注册 3. 本地网页发布 3.1. Cp ...

最新文章

  1. 解读ADC采样芯片(EV10AQ190A)的采样(工作)模式(双通道模式)
  2. Java高并发编程:线程池
  3. Sentinel: 分布式系统的流量防卫兵 1
  4. 安全性问题(数据篡改(拿到别人的URL,篡改数据(金额)发送给系统))
  5. 我们网管不能自己贬低自己
  6. codeforces 369C Valera and Elections
  7. 【 Linux 网络虚拟化 】Openvswitch
  8. 软件开发过程与需求获取
  9. 用几何画板演示高尔顿钉板动画
  10. mongodb 5.文章评论
  11. 一阶线性微分方程 解法
  12. SAP ABAP 取物料号的采购订单文本内容
  13. Jetty和Tomcat的比较。
  14. MTK机器原始OTA更新方法
  15. 中国公交广告高峰论坛——天津
  16. 推荐一本书《亚马逊网络书店传奇》
  17. 证件照修改尺寸像素大小和存储大小
  18. beeline 参数
  19. 120项优化: 超级爬虫Hawk 2.0重磅发布!
  20. 技术导航源码【带后台】

热门文章

  1. wps脚注转参考文献格式
  2. 大创项目前传——存储阶段(1)
  3. win10删除文件:文件访问被拒绝,你需要提供管理员权限才能删除此文件
  4. Anaconda开始菜单快捷方式打不开或找不到——解决办法
  5. 通达OA系统对接 单点登录 标准SaaS技术服务说明
  6. SPI知识总结以及库函数编程
  7. 用python将照片做成数据集_TensorFlow2.X使用图片制作简单的数据集训练模型
  8. ​人和人之间的差距在哪里?
  9. mybatis 多表连接查询,万能map
  10. 2019年浙江大学计算机学院的考研经验