一次sougo workflow库的使用过程
安装就是常规的make install
tutorial http_echoserver实现一下,在macos上实现
cmakelist.txt
cmake_minimum_required(VERSION 3.6)set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Release")project(mainLANGUAGES C CXX
)set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) #放在本项目下bin文件夹下
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_COMPILER g++) # cmake 找包
find_package(workflow REQUIRED CONFIG HINTS ..)
# 来自
include_directories(${OPENSSL_INCLUDE_DIR} ${WORKFLOW_INCLUDE_DIR})
# 找到workflow就有这些变量,不用管
link_directories(${WORKFLOW_LIB_DIR})# 源码目录
AUX_SOURCE_DIRECTORY(. SRC)# 目前只针对macos端
if (APPLE)set(WORKFLOW_LIB workflow pthread )
endif ()add_executable(main ${SRC})
target_link_libraries(main ${WORKFLOW_LIB})
main.cpp
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <string>
#include "workflow/HttpMessage.h"
#include "workflow/HttpUtil.h"
#include "workflow/WFServer.h"
#include "workflow/WFHttpServer.h"
#include "workflow/WFFacilities.h"void process(WFHttpTask *server_task)
{protocol::HttpRequest *req = server_task->get_req();protocol::HttpResponse *resp = server_task->get_resp();long long seq = server_task->get_task_seq();protocol::HttpHeaderCursor cursor(req);std::string name;std::string value;char buf[8192];int len;/* Set response message body. */resp->append_output_body_nocopy("<html>", 6);len = snprintf(buf, 8192, "<p>%s %s %s</p>", req->get_method(),req->get_request_uri(), req->get_http_version());resp->append_output_body(buf, len);while (cursor.next(name, value)){len = snprintf(buf, 8192, "<p>%s: %s</p>", name.c_str(), value.c_str());resp->append_output_body(buf, len);}resp->append_output_body_nocopy("</html>", 7);/* Set status line if you like. */resp->set_http_version("HTTP/1.1");resp->set_status_code("200");resp->set_reason_phrase("OK");resp->add_header_pair("Content-Type", "text/html");resp->add_header_pair("Server", "Sogou WFHttpServer");if (seq == 9) /* no more than 10 requests on the same connection. */resp->add_header_pair("Connection", "close");/* print some log */char addrstr[128];struct sockaddr_storage addr;socklen_t l = sizeof addr;unsigned short port = 0;server_task->get_peer_addr((struct sockaddr *)&addr, &l);if (addr.ss_family == AF_INET){struct sockaddr_in *sin = (struct sockaddr_in *)&addr;inet_ntop(AF_INET, &sin->sin_addr, addrstr, 128);port = ntohs(sin->sin_port);}else if (addr.ss_family == AF_INET6){struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&addr;inet_ntop(AF_INET6, &sin6->sin6_addr, addrstr, 128);port = ntohs(sin6->sin6_port);}elsestrcpy(addrstr, "Unknown");fprintf(stderr, "Peer address: %s:%d, seq: %lld.\n",addrstr, port, seq);
}static WFFacilities::WaitGroup wait_group(1);void sig_handler(int signo)
{wait_group.done();
}int main(int argc, char *argv[])
{unsigned short port;if (argc != 2){fprintf(stderr, "USAGE: %s <port>\n", argv[0]);exit(1);}signal(SIGINT, sig_handler);WFHttpServer server(process);port = atoi(argv[1]);if (server.start(port) == 0){wait_group.wait();server.stop();}else{perror("Cannot start server");exit(1);}return 0;
}
run.sh
cmake -B b
cmake --build b
./bin/main 9999 &
curl localhost:9999
killall main
rm -rf b
文件目录结构
MacBook :: Programming/myf » ls
CMakeLists.txt b bin main.cpp run.sh
相关文章:
一次sougo workflow库的使用过程
安装就是常规的make install tutorial http_echoserver实现一下,在macos上实现 cmakelist.txt cmake_minimum_required(VERSION 3.6)set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Release")project(mainLANGUAGES C CXX )set(CMAKE_RUNTIME_OUTP…...
macOS Big Sur(macos11版本)
macOS Big Sur是苹果推出的最新操作系统,具有以下特点: 全新的设计风格:Big Sur采用了全新的设计语言,包括更加圆润的窗口和控件、更加鲜明的色彩和更加简洁的界面。这种设计风格使得操作系统更加美观和易用。强大的性能表现&…...
泛微E-Office信息泄露漏洞复现
简介 Weaver E-Office是中国泛微科技(Weaver)公司的一个协同办公系统。 Weaver E-Office 9.5版本存在安全漏洞。攻击者利用该漏洞可以访问文件或目录。 漏洞编号:CVE-2023-2766 漏洞复现 FOFA语法: app"泛微-EOffice&qu…...
-bash: sudo: command not found的解决方法
在 Linux 系统中,使用 sudo 命令时提示 “command not found”,首先执行以下命令看一下 /etc/sudoers.d 文件是否存在: find /etc/sudoers.d1)如果返回 No such file or directory,就说明系统没有安装sudo,…...
CMOS介绍
1 二极管 2 CMOS 2.1 栅极、源极、漏极 2.2 内部结构 2.2 导电原理 - 原理:1.通过门级和衬底加一个垂直电场Ev,从而在两口井之间形成反形层2.如果加的电场足够强,反形层就可以把source(源极)和drain(漏极…...
《软件工程与计算》期末考试真题范例及答案
今天分享一套针对《软件工程与计算》这本书的真题案例,有关《软件工程与计算》23章内容的重点知识整理,已经总结在了博客专栏中,有需要的自行阅读: 《软件工程与计算》啃书总结https://blog.csdn.net/jsl123x/category_12468792.…...
springboot高校全流程考勤系统-计算机毕设 附源码 27637
Springboot高校全流程考勤系统 摘 要 本文针对高校考勤等问题,对其进行研究分析,然后开发设计出高校全流程考勤系统以解决问题。高校全流程考勤系统系统主要功能模块包括:考勤签到、课程信息、考勤情况、申请记录列表等,系统功能设…...
大二第四周总结——用原生js封装一个分页器
用原生js封装一个分页器 起因:这次项目还是用原生的js来写的,我负责的是后台,分页是后台最常见的一个功能了,于是干脆封装一下,废话少说,直接上代码 这里是基本的样式 .pagination {display: flex;width: 600px;hei…...
智能AI系统ChatGPT系统源码+支持GPT4.0+支持ai绘画(Midjourney)/支持OpenAI GPT全模型+国内AI全模型
一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...
ARM Linux 基础学习 / 系统相关,文件系统,文件属性
编辑整理 by Staok。 本文部分内容摘自 “100ask imx6ull” 开发板的配套资料(如 百问网的《嵌入式Linux应用开发完全手册》,在 百问网 imx6ull pro 开发板 页面 中的《2.1 100ASK_IMX6ULL_PRO:开发板资料》或《2.2 全系列Linux教程…...
nginx https 如何将部分路径转移到 http
nginx https 如何将部分路径转移到 http 我有一个自己的网站,默认是走的 https,其中有一个路径需要走 http。 实现 在 nginx 的配置文件 https 中添加这个路径,并添加一个 rewrite 的指令。 比如我需要将 tools/iphone 的路径转成 http&am…...
算法通关村第八关-白银挑战二叉树的深度和高度问题
大家好我是苏麟 , 今天说说几道二叉树深度和高度相关的题目 . LeetCode给我们造了一堆的题目,研究一下104、110和111三个题,这三个颗看起来挺像的,都是关于深度、高度的。 最大深度问题 描述 : 二叉树的 最大深度 是指从根节点到最远叶子…...
使用LogBack替换Log4j
目录 1.删除log4j有关的依赖,添加logBack依赖 2.删除log4j配置文件,增加logback.xml配置文件 3.更改application.yml配置文件,log文件指向logback.xml 4.重启 1.删除log4j有关的依赖,添加logBack依赖 <dependency><gr…...
财务报告是什么
财务报告是什么 财务报告是企业对外提供的反映企业某一特定日期的财务状况和某一会计期间的经营成果、现金流量等会计信息的文件。 根据财务报告的定义,财务报告具有以下几层含义:一是财务报告应当是对外报告,其服务对象主要是投资者、债权人…...
SOME/IP 协议介绍(四)RPC协议规范
RPC协议规范 本章描述了SOME/IP的RPC协议。 传输协议绑定 为了传输不同传输协议的SOME/IP消息,可以使用多种传输协议。SOME/IP目前支持UDP和TCP。它们的绑定在以下章节中进行了解释,而第[SIP_RPC_450页,第36页]节讨论了选择哪种传输协议。…...
PostgreSQL基础入门
为什么选择PostgreSQL 功能更全面:PGSQL的功能更加全面,支持开窗函数、物化视图、分区表、json等类型,MySQL8以上支持开窗函数、分区表、json等,但物化视图仍不支持。高可用:PG更适合分布式环境,如流复制、…...
Django 密码管理:安全实践与技术深入
在 Web 应用的开发中,密码管理是保障用户安全的关键环节。Django 作为一个强大的 Python Web 框架,提供了一套全面的系统来处理密码的存储、验证和安全。本文将详细探讨 Django 中的密码管理机制,包括密码存储、密码验证、密码安全策略以及自…...
说说你对React Router的理解?常用的Router组件有哪些?
一、是什么 react-router等前端路由的原理大致相同,可以实现无刷新的条件下切换显示不同的页面 路由的本质就是页面的URL发生改变时,页面的显示结果可以根据URL的变化而变化,但是页面不会刷新 因此,可以通过前端路由可以实现单…...
“可一学院”新课程《区块链企业应用》正式上线
2023年8月,上海可一澈科技有限公司启动了一站式区块链学习平台“可一学院BitClass”。9月6日,可一学院正式推出一门新课程《区块链企业应用》,这门课程将帮助学习者了解企业需要什么样的区块链,以及应该如何运用这项技术来推动自身…...
Springboot---整合对象储存服务MinIO
OSS 「OSS」的英文全称是Object Storage Service,翻译成中文就是「对象存储服务」,官方一点解释就是对象存储是一种使用HTTP API存储和检索非结构化数据和元数据对象的工具。 白话文解释就是将系统所要用的文件上传到云硬盘上,该云硬盘提供了…...
Phi-4-mini-reasoning实操手册:WebShell日志分析技巧与常见报错解决方案
Phi-4-mini-reasoning实操手册:WebShell日志分析技巧与常见报错解决方案 1. 模型简介与部署验证 Phi-4-mini-reasoning是一个基于合成数据构建的轻量级开源模型,专注于高质量、密集推理的数据处理能力。作为Phi-4模型家族的一员,它特别强化…...
PyTorch实战:从CIFAR-10数据加载到可视化,搞懂dataset和dataloader的完整工作流
PyTorch实战:从CIFAR-10数据加载到可视化,搞懂dataset和dataloader的完整工作流 在深度学习项目中,数据处理流程往往占据整个开发周期的60%以上时间。对于刚接触PyTorch的开发者而言,torchvision.datasets和DataLoader这两个核心组…...
MiniCPM-V-2_6部署避坑指南:Ollama安装常见问题与解决方案
MiniCPM-V-2_6部署避坑指南:Ollama安装常见问题与解决方案 1. 为什么选择MiniCPM-V-2_6? MiniCPM-V-2_6是目前最先进的视觉多模态模型之一,它在OCR识别、图像理解和视频分析方面表现出色。相比其他大型模型,它只有80亿参数&…...
老化OCA气泡异常分析
■问题描述整机包装堆码测试:1>模拟运输堆码测试(4层),负重300kg,常温测试48H后出现气泡不良;2>模拟运输堆码测试(3层),负重225公斤,常温测试48H后无气…...
【仅限首批200位架构师开放】:AI原生软件研发日志分析平台建设沙盘推演手册(含混沌工程注入模板+SLI/SLO反向推导表)
第一章:AI原生软件研发日志分析平台建设概览 2026奇点智能技术大会(https://ml-summit.org) AI原生软件研发日志分析平台并非传统日志系统的简单升级,而是以大模型理解能力为内核、以研发语义为驱动、以实时反馈闭环为目标的新型可观测基础设施。该平台…...
成本-质量-时延三角平衡法则,深度拆解大模型MLOps评估中被90%团队忽略的3个隐性指标
第一章:大模型工程化评估指标体系构建指南 2026奇点智能技术大会(https://ml-summit.org) 构建面向生产环境的大模型评估指标体系,需兼顾模型能力、系统性能、业务适配性与合规可持续性四大维度。脱离工程落地场景的纯学术指标(如零样本准确…...
04 前端 Web 开发 HTML5 + CSS3 + 移动 web 视频教程,前端web入门首选黑马程序员
04 前端 Web 开发 HTML5 CSS3 移动 web 视频教程,前端web入门首选黑马程序员 一、参考资料 【前端Web开发HTML5CSS3移动web视频教程,前端web入门首选黑马程序员】 https://www.bilibili.com/video/BV1kM4y127Li/?p44&share_sourcecopy_web&vd…...
STM32步进电机4轴控制源码(相对/绝对/回原点/梯形加减速运动控制 F103 F405版本)
STM32步进电机4轴控制源码,相对,绝对,回原点,梯形加减 STM32步进电机4轴控制源码,相对,绝对,回原点,梯形加减速,运动控制,两份源码,F103ÿ…...
Ostrakon-VL-8B效果实测:百种零售商品SKU识别精度报告
Ostrakon-VL-8B效果实测:百种零售商品SKU识别精度报告 最近在帮一个做零售的朋友研究智能货架方案,他们最头疼的就是商品识别不准。货架上东西一多,系统就经常把可乐认成雪碧,或者把不同口味的薯片搞混。正好看到Ostrakon-VL-8B这…...
AMD Ryzen系统调试实战:3大高级策略解决硬件性能瓶颈
AMD Ryzen系统调试实战:3大高级策略解决硬件性能瓶颈 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://git…...
