(Translated by https://www.hiragana.jp/)
GitHub - sylar-yin/sylar: C++高性能分布式服务器框架,webserver,websocket server,自定义tcp_server(包含日志模块,配置模块,线程模块,协程模块,协程调度模块,io协程调度模块,hook模块,socket模块,bytearray序列化,http模块,TcpServer模块,Websocket模块,Https模块等, Smtp邮件模块, MySQL, SQLite3, ORM,Redis,Zookeeper)
Skip to content

C++高性能こうせいのう分布ぶんぷ式服しきふく务器かまち,webserver,websocket server,てい义tcp_server(包含ほうがんこころざし块,配置はいち块,线程块,协程块,协程调度块,io协程调度块,hook块,socket块,bytearray序列じょれつ,http块,TcpServer块,Websocket块,Https块等, Smtp邮件块, MySQL, SQLite3, ORM,Redis,Zookeeper)

Notifications You must be signed in to change notification settings

sylar-yin/sylar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

视频

[C++こう教程きょうてい]从零开始开发ふく务器かまち(sylar)

视频教程きょうてい内容ないよう

1.にちこころざし

支持しじりゅう式日しきじつこころざし风格うつし志和しわ格式かくしき风格うつしこころざし支持しじこころざし格式かくしきてい义,にちこころざし级别,にちこころざしぶん离等とうこうのう りゅう式日しきじつこころざし使用しよう:SYLAR_LOG_INFO(g_logger) << "this is a log"; 格式かくしきこころざし使用しよう:SYLAR_LOG_FMT_INFO(g_logger, "%s", "this is a log"); 支持しじ时间,线程id,线程名称めいしょう,にちこころざし级别,にちこころざし名称めいしょう,ぶん件名けんめい,くだりごうとう内容ないようてき自由じゆう配置はいち

2.配置はいち

さいよう约定よし配置はいちてき思想しそうてい义即使用しよう需要じゅよう单独解析かいせき支持しじ变更通知つうちこうのう使用しようYAMLぶんけん做为配置はいち内容ないよう支持しじ级别格式かくしきてきすうすえ类型,支持しじSTL容器ようき(vector,list,set,mapとうとう),支持しじてい义类がたてき支持しじ需要じゅよう实现序列じょれつはん序列じょれつ方法ほうほう)使用しよう方式ほうしき如下:

static sylar::ConfigVar<int>::ptr g_tcp_connect_timeout =
	sylar::Config::Lookup("tcp.connect.timeout", 5000, "tcp connect timeout");

てい义了いち个tcp连接ちょう时参すう直接ちょくせつ使用しよう g_tcp_connect_timeout->getValue() 获取さんすうてき值,とう配置はいちおさむあらためおもしん载,该值更新こうしん 上述じょうじゅつ配置はいち格式かくしき如下:

tcp:
    connect:
            timeout: 10000

3.线程

线程块,ふうそうりょうpthreadさとめんてき一些常用功能,Thread,Semaphore,Mutex,RWMutex,Spinlockとう对象,以方便びん开发ちゅう对线ほど日常にちじょう使用しよう 为什么不适用c++11さとめんてきthread ほんかまち使用しようC++11开发,使用しようthread,いん为thread其实也是もと于pthread实现てき。并且C++11さとめんぼつゆう提供ていきょう读写互斥りょう,RWMutex,Spinlockとう在高ありだか并发场景,这些对象经常需要じゅようよういたてき所以ゆえん选择りょう自己じこふうそうpthread

4.协程

协程:よう户态てき线程,相当そうとう于线ほどなかてき线程,さら轻量级。きさき配置はいちsocket hook,以把复杂てき异步调用,ふうそうなりどう操作そうさくだてい业务逻辑てき编写复杂目前もくぜん该协ほどもと于ucontext_tらい实现てききさき续将支持しじさいようboost.contextさとめんてきfcontext_tてき方式ほうしき实现

5.协程调度

协程调度管理かんり协程てき调度,内部ないぶ实现为一个线ほどいけ支持しじ协程ざい线程中切なかぎり换,也可以指定してい协程ざい固定こていてき线程ちゅう执行。いち个N-Mてき协程调度模型もけい,N个线ほど,M个协ほどじゅう利用りようごといち个线ほど

6.IO协程调度

继承あずか协程调度ふうそうりょうepoll(Linux),并支持しじてい时器こうのう使用しようepoll实现てい时器,精度せいど毫秒级),支持しじSocket读写时间てき添加てんか,删除,取消とりけしこうのう支持しじいちせいてい时器,循环てい时器,条件じょうけんてい时器とうこうのう

7.Hook

hookけい统底层和socketしょう关的API,socket ioあい关的API,以及sleep系列けいれつてきAPI。hookてき开启ひかえせい线程つぶてき自由じゆう选择。つう过hook块,以使一些不具异步功能的API,てん现出异步てき性能せいのう。如(mysql)

8.Socket

ふうそうりょうSocket类,提供ていきょう所有しょゆうsocket APIこうのう,统一封装了地址类,はたIPv4,IPv6,Unix统一おこりらい。并且提供ていきょういきめい,IP解析かいせきこうのう

9.ByteArray序列じょれつ

ByteArray二进制序列化模块,提供ていきょう对二进制数据的常用操作。读写にゅうもと础类がたint8_t,int16_t,int32_t,int64_tとう支持しじVarint,std::stringてき读写支持しじ,支持しじ节序转化,支持しじ序列じょれついたぶんけん,以及从文けんはん序列じょれつとうこうのう

10.TcpServer

もと于Socket类,ふうそうりょういち通用つうようてきTcpServerてきふく务器类,提供ていきょう简单てきAPI,使用しよう便びんとし以快そく绑定一个或多个地址,启动ふく务,监听はしこう,accept连接,处理socket连接とうこうのう具体ぐたい业务こうのうさらてきふく务器实现,ただ需要じゅよう继承该类就可以快そく实现

11.Stream

ふうそうりゅうしきてき统一せっこう将文まさふみけん,socketふうそうなり统一てきせっこう使用しようてき时候,さいよう统一てき风格操作そうさもと于统いちてき风格,提供ていきょうさら灵活てき扩展。目前もくぜん实现りょうSocketStream

12.HTTP

さいようRagel(有限ゆうげんじょう态机,性能せいのう媲美汇编),实现りょうHTTP/1.1てき简单协议实现uriてき解析かいせきもと于SocketStream实现りょうHttpConnection(HTTPてききゃく户端)かずHttpSession(HTTPふく务器はしてき链接)。もと于TcpServer实现りょうHttpServer。提供ていきょうりょうかんせいてきHTTPてききゃく户端API请求こうのう,HTTPもと础APIふく务器こうのう

13.Servlet

仿照javaてきservlet,实现りょういち套Servletせっこう,实现りょうServletDispatch,FunctionServlet。NotFoundServlet。支持しじuriてきせいじゅんひきはい模糊もこひきはいとうこうのうHTTP块,一起かずき提供ていきょうHTTPふく务器こうのう

14.其他しょう

联系方式ほうしき: QQ:564628276 邮箱:564628276@qq.com ほろしん:sylar-yin QQぐん:8151915(sylarわざ术群) 个人ぬし页:www.sylar.top github:https://github.com/sylar-yin/sylar

About

C++高性能こうせいのう分布ぶんぷ式服しきふく务器かまち,webserver,websocket server,てい义tcp_server(包含ほうがんこころざし块,配置はいち块,线程块,协程块,协程调度块,io协程调度块,hook块,socket块,bytearray序列じょれつ,http块,TcpServer块,Websocket块,Https块等, Smtp邮件块, MySQL, SQLite3, ORM,Redis,Zookeeper)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published