C组件库
文章平均质量分 77
Blueeyedboy521
Java架构师,微服务,前端Vue,人工智能,C/C++嵌入式编程
展开
-
Ubuntu20.04安装redis的c++操作库hiredis
我们这里先了解一下hiredis的基本接口,笔者都加了注释。由于上面下载的不是源码,所以不需要如下操作。由于上面下载的不是源码,所以不需要如下操作。由于上面下载的不是源码,所以不需要配置。原创 2023-07-12 08:50:45 · 815 阅读 · 0 评论 -
centos或ubuntu部署OpenSips
竞争对手Kamailio、Asterisk。原创 2023-05-22 08:00:00 · 1413 阅读 · 4 评论 -
linux中epoll+socket实战
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这似乎并不治本。TCP接收到事件时会回调触发epoll_wait 中事件第一个参数就是前面函数的返回值。原创 2023-05-15 08:00:00 · 1807 阅读 · 0 评论 -
在 C++ 中使用 Lambda表达式
在此示例中,sum变量是一个 Lambda 表达式,它接受两个参数a并b返回它们的总和。此外,lambda 表达式可以从周围范围捕获变量,这使得它们对于创建闭包和使用 C++ 中的函数式编程概念非常有用。默认情况下,lambda 表达式捕获的变量是常量,不能在 lambda 表达式主体内修改。两个示例都获得了相同的结果,但第二个示例使用了std::for_each算法和 lambda 表达式,这是 C++ 中更现代和简洁的技术。在最后一个例子中,变量x是通过引用捕获的,lambdaadd可以修改它的值。转载 2023-03-15 08:00:00 · 233 阅读 · 0 评论 -
linux下libcurl库编译和使用
libcurl库编译方法libcurl库的编译使用libcurl库的编译与使用libcurl 发送 post 请求,请求体为 json 格式libcurl作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TF原创 2023-01-16 19:35:19 · 933 阅读 · 0 评论 -
深入学习IO多路复用select/poll/epoll实现原理
Linux 服务器处理网络请求有三种机制,select、poll、epoll,本文打算深入学习下其实现原理。结论本文其他的内容主要是得出了下面几个结论:服务器要接收客户端的数据,要建立 socket 内核结构,主要包含两个重要的数据结构,(进程)等待队列,和(数据)接收队列,socket在进程中作为一个文件,可以用文件描述符 fd 来表示,为了方便理解,本文中, socket 内核对象 ≈ fd 文件描述符 ≈ TCP连接;原创 2023-01-10 08:00:00 · 1003 阅读 · 0 评论 -
c/c++调用system获取返回值
在 c/c++ 程序中,可以使用 system()函数运行命令行,但是只能得到该命令行的 int 型返回值,并不能获得显示结果。例如system(“ls”)只能得到0或非0,如果要获得ls的执行结果,则要通过管道来完成的。首先用popen打开一个命令行的管道,然后通过fgets获得该管道传输的内容,也就是命令行运行的结果。C/C++ 程序中调用命令行命令并获取命令行输出结果...原创 2022-06-28 16:58:16 · 7192 阅读 · 3 评论 -
C/C++开发指南
一、基本操作字符串char*转stringconst char* s = "你好";string str = string(s);字符串stringint 转字符串int i = 0;to_string(i);long 转字符串unsigned long i = 0;to_string(i);int字符串转intconst char* v = "80";atoi(v);结构体定义typedef struct NALU { int naluType;原创 2022-05-09 19:11:33 · 1244 阅读 · 1 评论 -
c/c++操作xml库-Tinyxml2入门及高级用法
一、概念TinyXML2是一个开源、简单、小巧、高效的C++ XML解析器,它只有一个.h文件和一个.cpp文件组成,可以轻松集成到其它程序中。它解析XML文档并从中构建可以读取、修改和保存的文档对象模型(Document Object Model, DOM)。它不能解析DTD(Document Type Definitions, 文档类型定义)或XSL(eXtensible Stylesheet Language, 扩展样式表语言)。在TinyXML2中,XML数据被解析为可以浏览和操作的C++对象,然原创 2022-05-07 11:42:55 · 4947 阅读 · 0 评论 -
交缠编译osip2和exosip2
用的是地平线交叉编译工具链一、说明# 在此目录下操作/usr/local/exosip2/# 最终效果root@sony-HP-Notebook:/usr/local/exosip2# lsexosip2_horizon libexosip2-5.1.2 libexosip2-5.1.2.tar.gz libosip2-5.1.2 libosip2-5.1.2.tar.gz osip2_horizon由于exosip2依赖osip2,所以先编译osip2二、交叉编译osip2下原创 2022-03-30 18:36:02 · 1232 阅读 · 0 评论 -
cJSON的所有用法
引入cJSON.h和cJSON.c一、读取从文件读取cJSON_ParseFILE* fp_old_gb = fopen(OLD_GB_PATH,"r");if(fp_old_gb != NULL){ char buf_status[1024] = {0}; fread(buf_status,1,sizeof(buf_status),fp_old_gb); fclose(fp_old_gb); cJSON* root = cJSON_Parse(buf_status)原创 2022-03-30 15:57:30 · 984 阅读 · 1 评论