当前位置: 首页 > news >正文

网盘网站建设淘宝优惠券查询网站怎么做

网盘网站建设,淘宝优惠券查询网站怎么做,seo排名网,wordpress 演示#x1f60f;★,:.☆(#xffe3;▽#xffe3;)/$:.★ #x1f60f; 这篇文章主要介绍cpp-tbox百宝箱组件库。 无专精则不能成#xff0c;无涉猎则不能通。。——梁启超 欢迎来到我的博客#xff0c;一起学习#xff0c;共同进步。 喜欢的朋友可以关注一下#xff0c;… ★,°:.☆(▽)/$:.°★ 这篇文章主要介绍cpp-tbox百宝箱组件库。 无专精则不能成无涉猎则不能通。。——梁启超 欢迎来到我的博客一起学习共同进步。 喜欢的朋友可以关注一下下次更新不迷路 文章目录 :smirk:1. 项目介绍:blush:2. 安装运行:satisfied:3. 进阶使用 1. 项目介绍 项目Github地址https://github.com/cpp-main/cpp-tbox cpp-tbox 是一个跨平台、轻量级的 C 工具库旨在提供丰富的常用功能和便捷的编程接口。它的设计目标是简单易用、高效可靠并且具有较低的资源消耗。 以下是 cpp-tbox 的一些特点和功能 1.跨平台支持cpp-tbox 可以在多个主流操作系统上运行包括 Windows、Linux、Mac等。它封装了操作系统相关的功能提供了统一的接口使得开发者可以在不同的平台下写出可移植的代码。 2.线程和并发支持cpp-tbox 提供了线程管理、互斥锁、条件变量等基础的线程和并发功能。你可以使用 cpp-tbox 来创建和控制线程进行线程同步和互斥操作实现多线程并发编程。 3.内存管理cpp-tbox 提供了内存管理的工具和接口帮助你更方便地进行内存分配和释放。它封装了常用的内存操作如动态内存分配、内存对齐、内存拷贝等提供了安全和高效的内存管理功能。 4.常用数据结构和算法cpp-tbox 实现了许多常用的数据结构和算法如动态数组、链表、哈希表、堆等。它们被设计为高效和易用的可以满足各种场景下的需求。 5.文件和IO操作cpp-tbox 提供了便捷的文件和IO操作接口使得文件处理和IO操作变得更简单。你可以使用 cpp-tbox 来读写文件、创建目录、遍历文件系统等。 6.字符串操作cpp-tbox 封装了常见的字符串处理操作如拆分、连接、格式化等。它还提供了正则表达式的支持使得字符串匹配和替换更方便。 7.时间和日期处理cpp-tbox 提供了时间和日期相关的功能如获取当前时间、计算时间差、日期格式化等。它还支持时区转换以及常见的时间和日期操作。 2. 安装运行 编译运行 cd cpp-tbox # make编译 make 3rd-party modules RELEASE1 STAGING_DIR$HOME/.tbox # cmake编译 cmake -B build -DCMAKE_INSTALL_PREFIX$HOME/.tbox # 完成之后头文件与库文件都在 $HOME/.tbox 路径下另外这个开源项目也配套了使用教程https://gitee.com/cpp-master/cpp-tbox-tutorials/blob/master/README.md 我已经跟着走了一遍感觉还是不错的可以学到一些东西。 3. 进阶使用 一个基本的基于reactor事件的进程 #include tbox/main/main.hnamespace app1 {class App : public tbox::main::Module {public:App(tbox::main::Context ctx);~App();protected:virtual bool onInit(const tbox::Json cfg) override;virtual bool onStart() override;virtual void onStop() override;virtual void onCleanup() override; };}Makefile示例 TARGET:demoOBJECTS:app_main.oCXXFLAGS:-I$(HOME)/.tbox/include -DLOG_MODULE_IDdemo LDFLAGS:-L$(HOME)/.tbox/lib -rdynamic LIBS:\-ltbox_main \-ltbox_terminal \-ltbox_network \-ltbox_eventx \-ltbox_event \-ltbox_log \-ltbox_util \-ltbox_base \-lpthread -ldl$(TARGET): $(OBJECTS)g -o $ $^ $(LDFLAGS) $(LIBS)clean:rm *.o一个打印日志的示例 #include tbox/main/module.h #include tbox/base/log.h#include iostreamclass MyModule : public tbox::main::Module {public:explicit MyModule(tbox::main::Context ctx) : tbox::main::Module(my, ctx) { }virtual ~MyModule() { }public:virtual bool onInit(const tbox::Json js) override { // 等级、时间点、线程号、模块名、函数名、内容、文件名行号std::cout Start print log! std::endl;LogFatal(this is fatal log);LogErr(this is error log);LogWarn(this is warn log);LogInfo(this is info log);LogDbg(this is debug log);return true; }virtual bool onStart() override { LogTag(); return true; }virtual void onStop() override { LogTag(); }virtual void onCleanup() override { LogTag(); } };namespace tbox { namespace main { void RegisterApps(Module apps, Context ctx) {apps.add(new MyModule(ctx));std::cout Start print log2! std::endl; } } }一个定时器事件 #include tbox/main/module.h #include tbox/base/log.h #include tbox/event/timer_event.h /// 导入TimerEvent类class MyModule : public tbox::main::Module {public:explicit MyModule(tbox::main::Context ctx): tbox::main::Module(my, ctx), tick_timer_(ctx.loop()-newTimerEvent()) /// 实例化定时器对象{ }virtual ~MyModule() { delete tick_timer_; } /// 释放定时器对象public:virtual bool onInit(const tbox::Json js) override {/// 初始化设置定时间隔为1s持续触发tick_timer_-initialize(std::chrono::seconds(1), tbox::event::Event::Mode::kPersist); // kPersist kOneshot/// 设置定时器触发时的回调tick_timer_-setCallback([this] { onTick(); });return true;}/// 启动virtual bool onStart() {tick_timer_-enable();return true;}/// 停止virtual void onStop() {tick_timer_-disable();}private:void onTick() {count_;LogDbg(count:%d, count_);}private:tbox::event::TimerEvent *tick_timer_;int count_ 0; };namespace tbox { namespace main { void RegisterApps(Module apps, Context ctx) {apps.add(new MyModule(ctx)); } } }一个信号事件的处理 #include unistd.h #include tbox/main/module.h #include tbox/base/log.h #include tbox/event/timer_event.h #include tbox/event/signal_event.h //! 导入SignalEventusing namespace std::placeholders;class MyModule : public tbox::main::Module {public:explicit MyModule(tbox::main::Context ctx): tbox::main::Module(my, ctx), tick_timer_(ctx.loop()-newTimerEvent()), signal_event_(ctx.loop()-newSignalEvent()) //! 实例化SignalEvent对象{ }virtual ~MyModule() {delete signal_event_; //! 释放SignalEvent对象delete tick_timer_;}public:virtual bool onInit(const tbox::Json js) override {tick_timer_-initialize(std::chrono::seconds(1), tbox::event::Event::Mode::kPersist);tick_timer_-setCallback([this] { onTick(); });//! 初始化SignalEvent令其同时监听SIGUSR1,SIGUSR2信号且是持续有效signal_event_-initialize({SIGUSR1, SIGUSR2}, tbox::event::Event::Mode::kPersist);//! 设置回调函数均指向onSignalEvent()signal_event_-setCallback(std::bind(MyModule::onSignalEvent, this, _1));return true;}virtual bool onStart() {tick_timer_-enable();signal_event_-enable(); //! 使能SignalEventreturn true;}virtual void onStop() {signal_event_-disable();tick_timer_-disable(); //! 关闭SignalEvent}private:void onTick() {count_;LogDbg(count:%d, count_);}//! 信号事件时的处理void onSignalEvent(int signo) {LogInfo(got signal: %d, signo);if (signo SIGUSR1)tick_timer_-disable(); //! 关闭定时器else if (signo SIGUSR2)tick_timer_-enable(); //! 打开定时器}private:tbox::event::TimerEvent *tick_timer_;tbox::event::SignalEvent *signal_event_; //! 定义SignalEvent对象int count_ 0; };namespace tbox { namespace main { void RegisterApps(Module apps, Context ctx) {apps.add(new MyModule(ctx)); } } }一个http服务示例 #include tbox/main/module.h #include tbox/base/log.h #include tbox/http/server/server.h //! 导入Http服务class MyModule : public tbox::main::Module {public:explicit MyModule(tbox::main::Context ctx): tbox::main::Module(my_http, ctx), http_server_(ctx.loop()) //! 实例化Http服务对象{ }public:virtual bool onInit(const tbox::Json js) override {//! 初始化Http服务绑定 0.0.0.0:12345 地址backlog为2if (!http_server_.initialize(tbox::network::SockAddr::FromString(0.0.0.0:12345), 2))return false;//! 指定Http服务的请求的处理方法http_server_.use([] (tbox::http::server::ContextSptr http_ctx,const tbox::http::server::NextFunc next_func) {//! 不管请求的是什么直接指定回复的body内容http_ctx-res().body R(pWelcome to CppTbox./brThis is http example./p);});return true;}virtual bool onStart() override {http_server_.start(); //! 启动Http服务return true;}virtual void onStop() override {http_server_.stop(); //! 停止Http服务}private:tbox::http::server::Server http_server_; //! 定义Http服务对象 };namespace tbox { namespace main { void RegisterApps(Module apps, Context ctx) {apps.add(new MyModule(ctx)); } } }以上。
http://www.zqtcl.cn/news/874325/

相关文章:

  • 个人网站搭建平台wordpress免费还是收费
  • 网站优化协议嘉兴企业网站设计哪家好
  • 英文网站设计哪家好用php做的网站用什么数据库
  • 公司网站建设包括服装设计公司效果图
  • 做网站怎么购买主机下载安装百度一下
  • wordpress网站 搬家大型网站开发什么书籍好
  • 机关事业单位 网站建设方案书网站推送怎么做
  • php网站如何绑定一级域名到子目录做推广便宜的网站
  • 江苏省网站建设与管理历年自考试题商城网站 价格
  • 淘宝客网站建站源码icp备案查询官网入口
  • 环球资源网站网址微信管理中心
  • 青岛seo建站企业网址下载
  • 开发网站多少钱一个月做网站宽度
  • wordpress企业站主题哪个好做床上用品网站
  • 宜兴市做网站网站建设简讯
  • 点的排版设计网站音乐网站网页设计
  • 牛商网做网站的思路建设网站的机构
  • flash网站制作实例自适应网站做百度推广
  • 深圳建立网站电影里的做视频在线观看网站
  • 国家建设标准发布网站在哪里在线教育网站怎样建设
  • 徐州 商城网站设计winserver wordpress
  • 做网络课程的网站一般网站的架构
  • 网站建设包含哪些内容句容住房和城乡建设局网站
  • 做网站是做完给钱还是新房装修图片
  • 阿里云建站视频wordpress显示摘要插件
  • 济宁网站建设 企业谷网站开发有什么用
  • 网站建设一般多少钱官网代做网站公司哪家好
  • 页面简洁的网站深圳广告宣传片拍摄
  • 做外卖网站青岛助创网络科技有限公司
  • 怎么选择优秀的网站建设公司建设银行宁波分行 招聘网站