重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar)

news2024/11/20 10:32:54

重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar)

重写Sylar基于协程的服务器系列:

重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar)

前言

sylar是一个基于协程的服务器框架。同go语言思想一样,整个框架贯彻协程化的思想,淡化线程的存在。笔者有幸反复阅读sylar数次,并重写过base核心模块。该项目是我真正入门C++的第一个项目,我也将其作为本科毕设,顺利通过答辩。非常感谢sylar的作者能将多年从业经验浓缩在这个项目当中,这真的是为后来者点了一扇关键的灯。

环境搭建以及下载安装

开发环境参考如下表:

环境版本
Linux操作系统CentOS 7.5 64位(2核2G)
G++编译器4.8.5
CMake3.14.5
C++标准C++11
项目调试工具GDB
项目开发工具VSCode

搭建项目框架:

本系统的文件结构如图所示。项目根目录有CMakeList文件和Makefile文件,也即有两种编译方式。编译输出的中间文件输出在build目录,二进制文件输出在bin目录下,静态库以及动态库输出在lib目录下,src目录存放项目源码,源码划分为基础模块、网络模块、初始化模块、以及HTTP模块,本文重点集中在基础模块,即src/base目录下的文件。bin目录存放的是二进制可执行程序。bin/conf以及bin/module目录分别存放的是,可执行程序的配置文件以及动态库模块。

在这里插入图片描述

下载、编译、试玩重写的简化版sylar:

去除了sylar原来的负载均衡、数据库连接、protobuff、orm、zk等模块。(实际上是太菜了,这些模块没跟下去。)

#源码下载
git clone https://github.com/LunarStore/lunar.git 

# 安装boost库
yum install boost-devel # boost库

# 安装yaml-cpp(可能需要升级cmake
git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
mkdir build && cd build
cmake .. && make -j
sudo make install

# 创建build目录
cd lunar
mkdir build
cd build

# 在build目录生成makefile文件
cmake ..

# 编译
make -j2

# 建立一个必要目录
# 否则会报错:
# 2024-01-28 05:01:06	[ERROR]	[system]	/root/workspace/lunar/src/init/application.cc:116	open pidfile /apps/work/lunar/lunar.pid failed
mkdir -p /apps/work/lunar

# 终端运行,让网站跑起来
../bin/test_application -s

浏览器输入ip:8090出现默认页如下:

在这里插入图片描述


本章完结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1417057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

竞赛练一练 第30期:GESP和电子学会相关题目练习

Day14:CIE一级2022.06_报时的公鸡 故事背景:公鸡在黎明时分会打鸣迎接太阳升起,古人也将鸡鸣声当做晨起的“闹钟”。 1. 准备工作 (1)背景:根据下图绘制两张背景; 01 02 (2&…

时序分解 | MATLAB实现CEEMDAN+SE自适应经验模态分解+样本熵计算

时序分解 | MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算 目录 时序分解 | MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算 包括频谱图 附赠案例数据 可直接运行 …

2024年社区店加盟:最火爆的项目投资小指南

在这个追求健康与品质的时代,社区店加盟成为了越来越多创业者的首选。 而在众多项目中,鲜奶吧因其独特的产品魅力和广泛的市场需求,成为了最火爆的投资项目之一。 作为一名拥有多年鲜奶吧经营经验的创业者,同时也是自媒体创业板…

C++11(中):智能指针

智能指针 1.内存泄漏1.1内存泄漏的概念以及危害1.2内存泄漏的场景1.3如何避免内存泄漏 2.智能指针的使用及原理2.1RAII2.2智能指针的原理2.3 std::auto_ptr2.4 定制删除器2.5 std::unique_ptr2.6 std::shared_ptr2.7 std::weak_ptr2.7.1 std::shared_ptr的循环引用2.7.2 循环引…

《WebKit 技术内幕》学习之十五(4):Web前端的未来

4 Cordova项目 Cordova是一个开源项目,能够提供将Web网页打包成本地应用格式的可运行文件。读者可能对Cordova项目陌生,但是大家可能对它的前身非常熟悉,那就是PhoneGap项目,它后来被Adobe公司收购。 图15-4描述了Cordova的主要工…

“Morpheus-1”的全新人工智能模型声称能引发清醒梦境

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

探索半导体制造业中的健永科技RFID读写器的应用方案

一、引言 在当今高度自动化的工业环境中,无线射频识别(RFID)技术已经成为实现高效生产的重要一环。特别是在半导体制造业中,由于产品的高价值和复杂性,生产过程的追踪和管理显得尤为重要。健永科技RFID读写器以其出色…

leetcode 第三弹

链表声明: * Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(n…

服务端开发小记03——vsftpd

这里写目录标题 vsftpd简介vsftpd在Linux下的安装vsftpd验证vsftpd常用命令 vsftpd简介 vsftpd是“very secure FTP daemon”的缩写,是一个用于Linux环境下的免费开源的ftp服务器软件。vsftpd在Linux发行版中最受推崇,小巧轻快,安全易用&…

解决:IDEA无法下载源码,Cannot download sources, sources not found for: xxxx

原因 Maven版本太高,遇到http协议的镜像网站会阻塞,要改为使用https协议的镜像网站 解决方案 1.打开设置 2. 拿到settings.xml路径 3. 将步骤2里箭头2的User settings file:settings.xml打开,作以下修改 保存即可。如果还不行…

《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述(1)

随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋。与单端并行信号相比,高速差分信号可以使用更高的时钟频率,使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的总线带宽。…

多用户多店商城小程序开发价格_高品质源码_免费部署_OctShop

电商行业不断的发展壮大,市场份额越来越大的形势下,越来越多的企业开始开发自己的商城系统,搭建自己的电商平台,而这其中的一些大中型企业直接就开发像京东淘宝类似的多用户商城系统或多用户商城小程序,来实现将自己的…

Docker 安装nacos本地服务

docker 安装nacos实现服务注册与发现 本篇文章旨在快速搭建本地nacos服务 1 寻找nacos镜像 docker search nacos/nacos-server 2 拉取镜像 docker pull nacos/nacos-server docker pull nacos/nacos-server:v2.3.0 3docker run运行nacos docker run -d --name nacos -p 884…

GitHub Action 实现超简单的持续集成(CI)

GitHub Action 官方文档 GitHub Action 中使用 Docker 的官方文档 所用项目代码获取:公众号发送cloud 前言 在上一篇几分钟完成前后端分离项目部署文章中,我们完成了前后端分离项目的部署,但随着开发的进行,我们每次更新都手动打包…

CMake 完整入门教程(五)

CMake 使用实例 13.1 例子一 一个经典的 C 程序&#xff0c;如何用 cmake 来进行构建程序呢&#xff1f; //main.c #include <stdio.h> int main() { printf("Hello World!/n"); return 0; } 编写一个 CMakeList.txt 文件 ( 可看做 cmake 的…

代码随想录算法训练营29期|day32 任务以及具体安排

第八章 贪心算法 part02 122.买卖股票的最佳时机II // 贪心思路 class Solution {public int maxProfit(int[] prices) {int result 0;for (int i 1; i < prices.length; i) {result Math.max(prices[i] - prices[i - 1], 0);}return result;} } 思路&#xff1a;将股票问…

美赛注意事项

2024年1月27日 &#xff1a; 赖维杰 同学分享 1、最后的展现必须要漂亮&#xff08;绘图、呈现&#xff09; 李维情 西北建模王 论文位&#xff08;核心&#xff09;必须清楚建模位、编程位知道做了些什么 常见模型&#xff1a; 1、看真题&#xff0c;读往年论文&#xff0c;选…

一、对人工智能大模型了解与认知

黑8说 月黑风高&#xff0c;乌云密布&#xff0c;树木低垂&#xff0c;黯淡沉闷。这黎明前的风暴&#xff0c;预示着新时代的变革即将到来。 在一个8线小城市的办公室中 黑8对主任说&#xff1a; 世界上有男人、女人、人妖&#xff0c;米国有1/3男&#xff0c;2/3女…&#xff…

100天精通鸿蒙从入门到跳槽——第16天:ArkTS条件渲染使用教程

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》 — Go语言学习之旅!《100天精通鸿蒙》 — 从Web/安卓到鸿蒙大师!100天…

基于springboot游戏分享网站源码和论文

网络的广泛应用给生活带来了十分的便利。所以把游戏分享管理与现在网络相结合&#xff0c;利用java技术建设游戏分享网站&#xff0c;实现游戏分享的信息化。则对于进一步提高游戏分享管理发展&#xff0c;丰富游戏分享管理经验能起到不少的促进作用。 游戏分享网站能够通过互…