C语言项目总结

#include
#include<stdarg.h>
using namespace std;

void LogInfo(const char szFormat,…)
{
char szBuf[4096]={};
va_list args; //第一步
va_start(args,szFormat); //第二步
vsnprintf(szBuf,4096,szFormat,args); //第三步
va_end(args); //第四步
//在这里对字符串 szBuf 作处理,输出到日志文件或直接打印信息
printf(“%s\r\n”,szBuf);
//
*******************************************************
return ;
}

int main()
{
LogInfo(“收到网关服务器中转命令,主命令:%d,副命令:%d,附带信息”,1,2,“hahahaha”);

return 0;

}

namespace AA
{
namespace BB
{
class Test
{
public:
Test(int x):x_(x){}
void printMsg()
{
printf(“x_ is %d\r\n”,x_);
}
private:
int x_;
};
}
}

int main(void)
{
std::shared_ptrAA::BB::Test sharedPtr;
sharedPtr = std::make_sharedAA::BB::Test(34);
sharedPtr->printMsg();
return 0;
}

3)sscanf
sscanf把一个字符串进行拆分(就是把一个字符串按一定格式,取出满足条件的字符串);
int main(void)
{
char str1[] = “https://www.baidu.com:1234”;
char protocol[32] = {0};
char hostname[128] = {0};
char port[8] = {0};
sscanf(str1,“%[:]😕/%[:]:%[1-9]”,protocol,hostname,port);
printf(“%s,%s,%s\r\n”,protocol,hostname,port);
return 0;
}

4)reactor
对io的处理,变成对事件的处理;

5)fileno函数的使用,(把文件流指针转换为文件描述符)
#include <stdio.h>
int main()
{
FILE *fp;
int fd;
fp = fopen(“/etc/passwd”, “r”);
fd = fileno(fp);
printf(“fd = %d\n”, fd); //输出3
fclose(fp);
}

43.6+668.8

systemctl status mysql //查看mysql是否运行;
systemctl restart mysqld //重启mysql;
如果编译出现" mysql/mysql.h: No such file or directory #include “mysql/mysql.h” "类似错误,
则用"find /usr/ -name “mysql.h” "命令查看是否有头文件,如果没有,需要安装,方法如下:
sudo apt-get install libmysqlclient-dev

出现下面的情况是权限不足,需要修改过;
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)

sudo mysql -u root -p //登录mysql;

string中,append函数的用法
#include
using namespace std;

int main()
{
std::string str = “”;
str.append(“AAAAA”);
str.append(“BBBBBB”);
cout<<str<<endl;//AAAAABBBBBB
return 0;
}

//5 std::stoi函数
#include
using namespace std;

int main()
{
std::string str = “1234abc5”;
size_t idx;
int num = std::stoi(str,&idx);
std::cout << num << std::endl; //1234
std::cout << "invalid character pos is " <<idx<< std::endl; //4
return 0;
}

//replace
#include
#include
#include

using namespace std;

int main()
{
std::vector vec = {“123”,“aaa”};
cout<<vec.at(0).replace(0,2,“AA”)<<endl; //从0-2(不包括下标2),顾输出AA3
return 0;
}

//S_ISREG or S_ISDIR
#include
#include <sys/stat.h>

int main(int argc,char** argv)
{
struct stat mystat = {0};
if(argc < 2) return -1;
stat(argv[1],&mystat);
if(S_ISDIR(mystat.st_mode))
{
printf(“dir file \r\n”);
}
if(S_ISREG(mystat.st_mode))
{
printf(“regular file \r\n”);
}
}

//zlib
#include
#include <sys/stat.h>
#include <zlib.h>

int main(int argc,char** argv)
{
unsigned char strSrc[] = “hello world! aaaaa bbbbb ccccc ddddd 中文测试 yes”;
unsigned char buf[1024] = {0};
unsigned char strDst[1024] = {0};
unsigned long srcLen = sizeof(strSrc);
unsigned long bufLen = sizeof(buf);
unsigned long dstLen = sizeof(strDst);

printf(“Src string:%s\nLength:%ld\n”, strSrc, srcLen);

/* 压缩 */
compress(buf, &bufLen, strSrc, srcLen);
printf(“After Compressed Length:%ld\n”, bufLen);

/* 解压缩 */
uncompress(strDst, &dstLen, buf, bufLen);
printf(“After UnCompressed Length:%ld\n”,dstLen);
printf(“UnCompressed String:%s\n”,strDst);

return 0;
}
注意:CMakeList.txt中,target_link_libraries(target -lpthread -lz),这样写链接zlib库;

unlink(删除一般文件)
#include
#include <sys/stat.h>
#include <unistd.h>

int main(int argc,char** argv)
{
if(argc < 2) return -1;
int ret = unlink(argv[1]); //可以删除一般文件,不可以删除文件夹;
if(ret == 0)
{
printf(“unlink ok\r\n”);
}
else printf(“not unlink \r\n”);
}

//ifstream中,tellg,seekg等的使用
#include
#include
using namespace std;

int main(int argc,char** argv)
{
std::ifstream ifs(argv[1]);
if(!ifs.is_open())
{
cerr << “Open failed” << endl;
exit(1);
}
// 记录并输出当前读取位置
streampos pos = ifs.tellg();
cout << "Current position: " << pos << endl;
// 移动光标并输出当前读取位置
ifs.seekg(7, ios_base::beg);
pos = ifs.tellg();
cout << "Current position: " << pos << endl;
ifs.close();
return 0;
}

//isspace 的使用
#include
#include <ctype.h>

using namespace std;
//如果传入的字符是空白字符,则返回非零值;如果传入的字符不是空白字符,则返回零
int main(int argc,char** argv)
{
char c;
int ret;
scanf(“%c”,&c);
ret = isspace©;
if(ret > 0) printf(“is space charactor\r\n”);
else printf(“not space charactor\r\n”);
return 0;
}

//bind
int fun(int a,int b)
{
return a + b;
}
int main(int argc,char** argv)
{
auto f1 = std::bind(fun,std::placeholders::_1,4);
cout<<f1(5)<<endl;
return 0;
}

class A
{
public:
void printMsg(int a,int b)
{
printf(“a+b=%d\r\n”,a+b);
}
};

int main(int argc,char** argv)
{
A a;
auto f1 = std::bind(&A::printMsg,&a,std::placeholders::_1,5); //绑定成员函数
f1(5);
return 0;
}

//callback
回调就是把一个函数作为参数传递到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数;
#include
#include

using namespace std;

typedef int(*ptrFun)(int,int);

int myAdd(int a,int b)
{
return a + b;
}

//回调函数
int callBackFun(int a,int b,const ptrFun& fun)
{
return fun(a,b);
}

int main(void)
{
int ret = callBackFun(3,4,myAdd);
printf(“ret is %d\r\n”,ret);
return 0;
}

//function和bind的联合应用
#include
#include
#include

using namespace std;

class Baseclass
{
public:
int Add(int a, int b) { return a + b; };
};
int main()
{
int a = 1;
int b = 2;
Baseclass b1;
std::function<int(int, int)> addFunc = std::bind(&Baseclass::Add, &b1, std::placeholders::_1, std::placeholders::_2);

int c = addFunc(a, b);
std::cout << "c: " << c << std::endl;
return 0;

}

ll | grep Makefile
find ./ -iname “makefile” //忽略大小写查找;
netstat -antp | grep hello //配合-t、-u则只打印TCP、UDP协议的统计数据,-n 不解析域名
输出:
nc 127.0.0.1 9995 // nc是netcat的简写
在cmake中,打开编译开关的方法:
cmake -Devent_enable_verbose=on …/ //注意:前面有"-D"的参数;

//找头文件方法
pkg-config libevent --cflags //输出结果: -I/usr/local/include 所以必须sudo make install安装;
//找库方法
pkg-config libevent --libs //-L/usr/local/lib -levent_core -levent_extra
ll /usr/local/lib/ | grep libevent //输出所有libevent相关的库文件;

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig //只对当前终端窗口有效;
history | grep PKG_CONFIG_PATH //以后也这样查看历史命令
找不到库的解决办法:
export LD_LIBRARY_PATH=/user/local/lib //根据具体情况而添加;
ldd target //查看生成的程序连接信息;

//cmakelist.txt中,正确添加libevent库的方法:
cmake_minimum_required(VERSION 3.10)
project(event)
include_directories( P R O J E C T S O U R C E D I R / i n c ) i n c l u d e d i r e c t o r i e s ( / u s r / l o c a l / i n c l u d e / ) s e t ( C M A K E C X X F L A G S − f n o − e l i d e − c o n s t r u c t o r s ) s e t ( C M A K E C X X F L A G S " {PROJECT_SOURCE_DIR}/inc) include_directories(/usr/local/include/) set(CMAKE_CXX_FLAGS -fno-elide-constructors) set(CMAKE_CXX_FLAGS " PROJECTSOURCEDIR/inc)includedirectories(/usr/local/include/)set(CMAKECXXFLAGSfnoelideconstructors)set(CMAKECXXFLAGS"{CMAKE_CXX_FLAGS} -g -std=c++17 -Wall")
set(LIBEVENT_ROOT /usr/local/lib)
find_library(LIBEVENT_LIB NAMES event HINTS ${LIBEVENT_ROOT})

add_executable(target ./src/main.cpp)
target_link_libraries(target -lrt -lpthread ${LIBEVENT_LIB})

libevent第一个项目程序
#include<stdio.h>
#include<unistd.h>
#include<event2/event.h>
#include<event2/util.h>
//evconnlistener_new_bind的使用
//bufferevent_socket_new的使用
int main(int argc,char** argv)
{
printf(“libevent version is %s\r\n”,event_get_version());
const char** method = event_get_supported_methods();
for(int i = 0; method[i] != NULL; i++)
{
printf(“\t%s\t”,method[i]);
}
printf(“\n”);

struct event_base* base = NULL;
struct event_config* cfg = NULL;
cfg = event_config_new();
event_config_avoid_method(cfg,"epoll");
event_config_avoid_method(cfg,"poll");
base = event_base_new_with_config(cfg);
printf("default is %s\n",event_base_get_method(base));
event_base_free(base);
event_config_free(cfg);
return 0;

}

//setbuf函数用于打开和关闭缓冲机制
// setbuf(stdout,NULL); //关闭了缓冲机制

ss命令 //socket statistic的简称
ldd命令
util读作[油太哦],是utility的缩写 实用,效用
tcpdump 命令抓包

#科学计数法
#3.34e2 == 3.34 X 10的2次方(相当于x100) = 334.0
#3.34e-2 == 3.34 X 10的-2次方(相当于x0.01) = 0.0334
复数类型
用complex函数创建复数

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

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

相关文章

2024亚洲智慧应急展|2024第十一届亚洲(北京)国际智慧城市安全与应急救援装备展

2024亚洲智慧应急展|2024第十一届亚洲&#xff08;北京&#xff09;国际智慧城市安全与应急救援装备展 展会别称&#xff1a;2024应急展|应博会|智慧应急展|应急产业展|应急救援展|应急装备展|应急安全展|应急防灾展 城市应急展|应急消防展|交通安全应急展|航空应急展|水域应…

CAN-位填充

位填充定义&#xff08;Bit Stuffing&#xff09; 当CAN节点发送 逻辑电平&#xff08;显性dominant或隐性recessive&#xff09;为持续相同的5位时&#xff0c;它必须添加一位反向电平。 CAN接收 节点会自动删除这个新增的额外电平位。 位填充作用 1---位填充是为了防止突发…

【2024-01-15】某安居客验证码分析-滑块验证码

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、抓包分析二、参数分析1.请求getInfoTp2.校验checkInfoTp一、抓包分析 网址: aHR0cHM6Ly9hcGkuYW5qdWtlLmNvbS93ZWI…

任务15:使用Hive进行全国气象数据分析

任务描述 知识点&#xff1a; 使用Hive进行数据分析 重 点&#xff1a; 掌握Hive基本语句熟练使用Hive对天气数据进行分析 内 容&#xff1a; 使用Hive创建外部表使用Hive对数据进行统计分析 任务指导 1. 使用Hive创建基础表 将China_stn_city.csv文件上传到HDFS的/…

统计学之常见的分布介绍

统计学中常见的分布有&#xff1a; 1. 正态分布&#xff08;Normal Distribution&#xff09;&#xff1a;也称为高斯分布&#xff0c;是最常见的分布之一&#xff0c;具有钟形曲线&#xff0c;对称且均值和标准差可以完全描述该分布。 2. 二项分布&#xff08;Binomial Dist…

Unity3D学习之数据持久化——PlayerPrefs

文章目录 1. 概念2. 存储2.1 存到内存当中2.2 存到硬盘当中2.3 局限性2.4 相同键会覆盖 3.读取3.1 int型3.2 float型3.3 string型3.4 判断数据是否存在 4. 删除数据5. 存储位置6. 反射6.1 判断一个类型的对象是否可以让另一个类型为自己分配空间6.2 通过反射获得泛型类型 7 数据…

spring boot 同一方法中如何使用多数据源

1、我使用的是mybatis-plus&#xff0c;思路是重写mp的Iservice借口的方法&#xff0c;比如list、insert、update这些方法 2、以list方法为例&#xff0c;这里我重写了list方法&#xff0c;然后在list方法增加DataSource注解&#xff0c;这样就可以了。 Service public class …

斯坦福 Stats60:21 世纪的统计学:第十五章到第十八章

第十五章&#xff1a;比较均值 原文&#xff1a;statsthinking21.github.io/statsthinking21-core-site/comparing-means.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 我们已经遇到了许多情况&#xff0c;我们想要询问样本均值的问题。在本章中&#xff0c;我们…

Keepalived 双机热备

本章主要内容&#xff1a; Keepalived 双机热备基础知识学会构建双机热备系统学会构建LVSHA 高可用群集 简介 在这个高度信息化的IT时代&#xff0c;企业的生产系统&#xff0c;业务运营&#xff0c;销售和支持&#xff0c;以及日常管理等环节越来越依赖于计算机和服务&#…

[GN] 使用vue3+vite+ts+prettier+eslint

学习目标&#xff1a; 做到代码格式等统一&#xff0c;此时&#xff0c;esint和prettier就要登场了。 学习内容&#xff1a; eslint是代码检测工具&#xff0c;可以检测出你代码中潜在的问题&#xff0c;比如使用了某个变量却忘记了定义。 prettier是代码格式化工具&#xff…

Shape-IoU——综合考量边框形状与尺度的度量

今天看到一篇文章主要是提出了一种更有效的IOU度量方法&#xff0c;论文地址在这里&#xff0c;如下所示&#xff1a; 摘要 边界盒回归损失作为检测器定位分支的重要组成部分&#xff0c;在目标检测任务中起着重要作用。现有的边界框回归方法通常考虑GT框和预测框之间的几何关…

AS,android SDK

android sdk中包含什么&#xff1f; Android平台工具&#xff08;Android Platform Tools&#xff09;&#xff1a; 这包括 adb&#xff08;Android Debug Bridge&#xff09;等工具&#xff0c;用于在计算机和 Android 设备之间进行通信、调试和数据传输。 Android命令行工具…

【ES6 Map数据结构】建议日常开发操作数组时使用 new Map

Map数据结构 new Map使用属性及方法:1. size属性2. set(key,value)3. get(key)4. has(key)5. delete(key)6. clear()7. 遍历方法&#xff1a; keys()、values()、entries()、forEach()(1). keys()(2). values()(3). entries()(4). forEach() 8. toString()9. valueOf 算法使用 …

使用ffmpeg进行视频截取

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-sta…

SqlAlchemy使用教程(四) MetaData 与 SQL Express Language 的使用

四、Database MetaData 与 SQL Express Language 的使用 MetaData对象用于描述表结构&#xff0c;SQL Express Language是DBAPI SQL的统一封装器。MetaData 与SQL Express 语句可以在Core层使用&#xff0c;ORM层基于MetaData, SQL Express基础上做了进一步抽象。本章将介绍在…

Python简单ORM实现:不使用元类的灵活数据操作与查询构建【第29篇—python:ORM】

文章目录 不使用元类的简单ORM实现Field类Compare类Model类Query类示例使用扩展查询功能支持 LIMIT 和 OFFSET支持 GROUP BY 和 HAVING 示例用法总结 不使用元类的简单ORM实现 在 Python 中&#xff0c;ORM&#xff08;Object-Relational Mapping&#xff09;是一种将对象和数…

GBASE南大通用CommandBuilder 属性

DataAdapter 属性 获取或设置一个用于自动生成 SQL 语句的GBASE南大通用DataAdapter 对象。  语法 [Visual Basic] Public Property DataAdapter As GBASE南大通用DataAdapter Get Set [C#] public GBaseDataAdapter DataAdapter { get; set; }  属性 一个 GBase…

244.【2023年华为OD机试真题(C卷)】密码解密(JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…

基于uniapp的在线课程教学系统

介绍 项目背景&#xff1a; 随着互联网的快速发展&#xff0c;在线教育已经成为一种流行的学习方式。针对这一趋势&#xff0c;我们决定开发一个基于UniApp的在线课程教学系统。该系统旨在为学生提供方便快捷的在线学习体验&#xff0c;同时也为教师提供一个高效管理课程的平台…

Vue3实现带点击外部关闭对应弹出框(可共用一个变量)

首先&#xff0c;假设您在单文件组件(SFC)中使用了Vue3&#xff0c;并且有两个div元素分别通过v-if和v-else来切换显示一个带有.elpopver类的弹出组件。在这种情况下&#xff0c;每个弹出组件应当拥有独立的状态管理&#xff08;例如&#xff1a;各自的isOpen变量&#xff09;。…