C
文章平均质量分 64
ALex_zry
梦想走遍天涯,后来工作攒钱实现
展开
-
spdlog 日志库部分源码说明——日志格式设定,DIY你自己喜欢的调试信息,你能调试的远比你想象的还要丰富
前言最近,在使用spdlog日志库,但是不如自己使用std::cout 输出的方便,想要调整spdlog的格式化输出,但是网上缺少这块比较完整的资料,现在将这部分说明。本章节主要说明创建日志后怎样格式化输出,以及可以的格式化输出有哪些。准备#define LOG_CHARCK_HOUR 0 // 每日创建日志的小时值(24h)#define LOG_CHARCK_MINE 0 // 每日创建日志的分钟值(24h)std::shared_ptr<spdlog::logger> my_原创 2024-04-23 00:37:29 · 1464 阅读 · 2 评论 -
分享zframe_send使用过程中 的一个小问题
在这里,它被设置为0,表示这个函数在发送帧后不会销毁它。如果发送成功,这个函数将返回0,否则返回-1。这是因为在发送帧之后,该函数会销毁帧并将你的指针设置为NULL。所以,如果你的发送数据后续还要使用,可以使用zframe_dup函数处理这种情况。: 这个函数用于复制一个帧的数据并将其作为一个新的字符串返回。: 这个函数用于将一个帧发送到指定的套接字(在这里是。: 这个函数用于获取一个帧的大小,以字节为单位。的内容复制到这个新的帧中,然后发送这个新的帧。函数会发送这个新的帧,并在发送之后销毁它。原创 2023-11-06 22:11:30 · 165 阅读 · 0 评论 -
zframe_send发送的内容,可以使用zmq_recv接收吗
首先直接说结论:可以,但是不建议。因为:在ZMQ中,zframe_send是CZMQ库中的一个函数,用于发送ZMQ消息帧,而zmq_recv是ZMQ的原生函数,用于接收消息。如果你在同一套接字上混合使用CZMQ的zframe_send和ZMQ的zmq_recv,可能会遇到问题,因为这两个函数可能对ZMQ的内部状态有不同的预期。如果你在发送端使用zframe_send,那么在接收端最好使用对应的zframe_recv。原创 2023-11-06 22:10:43 · 102 阅读 · 0 评论 -
一个使用zmq_recv 接收 5555端口的demo
这个程序会一直运行,接收来自5555端口的消息,并打印出来。每接收到一个消息,它会等待1秒,然后发送一个"World"的回复。分享一个有趣的 学习链接:https://xxetb.xet.tech/s/HY8za。原创 2023-11-06 22:05:19 · 146 阅读 · 0 评论 -
czmq的4版本中CURVE怎么实现的两个程序之间使用的一个证书?
在CZMQ的4版本中,CURVE是一种加密机制,用于在两个程序之间建立安全的连接。要使用CURVE,你需要创建和分发公钥和私钥。然后,你需要在程序之间分发公钥。你可以将公钥存储在文件中,然后手动将其复制到其他程序的机器上。或者,你可以使用一些自动化的方法来分发公钥。在程序中,你需要加载公钥和私钥,然后使用它们来创建一个CURVE的服务器或客户端。以上就是在CZMQ的4版本中,使用CURVE实现两个程序之间使用一个证书的基本步骤。原创 2023-11-05 22:05:38 · 158 阅读 · 0 评论 -
zeromq怎么一个端口发送多个主题
我们这里使用czmq4 版本处理。在CZMQ的版本4中,在一个端口上发布多个订阅主题。这是通过使用PUB/SUB模式实现的。在这种模式下,一个或多个发布者将消息发布到一个或多个主题,然后一个或多个订阅者可以订阅一个或多个主题来接收消息。在发布者端,你可以通过将主题作为消息的一部分来发布到特定的主题。在订阅者端,你可以订阅一个或多个主题,只接收这些主题的消息。这样,你就可以在一个端口上发布多个主题,让订阅者根据自己的需求订阅感兴趣的主题。原创 2023-11-05 22:04:26 · 391 阅读 · 0 评论 -
C语言编程陷阱:预处理器 陷阱
这些示例代码展示了每个概念在C语言中的应用。它们可以帮助你理解宏定义、类型定义和预处理器的特性、使用方法和注意事项。原创 2023-08-21 14:50:11 · 67 阅读 · 0 评论 -
C语言编程陷阱:库函数陷阱
信号是真正意义上的"异步”理论上来说,一个信号可能在C程序执行期间的任何时刻上发生。但是处于安全的角度考虑,信号的处理函数不应该调用类似malloc这种复杂库内的函数。程序生成输入时,是否有必要将输出的内容立即展示给用户?缓冲数组最好时成为静态数组,或者显示内存申请。返回整数的getchar函数。暂存然后以大块写入的方式。使用error检测错误。捕获异步时间的一种方式。原创 2023-08-21 14:49:23 · 75 阅读 · 0 评论 -
C语言编程陷阱:链接陷阱
典型的连接器是把编译器或汇编器生成的若干个目标模块,整合成被称位载入模块或可执行文件的实体,该实体能够被操作系统直接执行。某些编译器会对静态函数和静态变量的名称做一定改变,将它们作为外部对象,因为经过了名称修饰,所以不会与其他的源程序文件中的同名函数或同名变量发生命名冲突。这种形式的声明是对一个外部对象的显示引用,即使它出现在一个函数的内部,也仍然具有相同的涵义。任何的C函数都有一个函数列表,列表中的每个参数都是一个变量。从连接器的角度来看,上述声明是对外部变量a的引用,而不是对a的定义。原创 2023-08-21 14:48:50 · 69 阅读 · 0 评论 -
C语言编程陷阱:语义陷阱
我们没有办法将一个数组作为函数参数直接传递,只能够使用函数名作为参数,是将数组的首地址传递。—个拥有N个元素的数组,不存在下标为N的元素,他的元素下表范围在O-N-1为止。我们将0赋值给一个指针变量时,绝对不能企图使用该指针所指向的内存存储的内容。逗号运算符,首先对左侧操作数求值,该值被丢弃,再对右侧操作数求值。b:c操作数a首先被求值,根据a的值再求操作数b或c。首先考虑最简单的情况下的特例,然后将所得到的结果外推。C语言中数组的元素可以是任何类型的对象。以及获得指向该数组下标为0的元素的指针。原创 2023-08-21 14:48:05 · 47 阅读 · 0 评论 -
C语言编程陷阱:语法陷阱
算术运算符>关系运算符>&&>|>赋值运算符。(void(*)0)指向返回值为void类型的函数的指针。组台声明: float *g().(*h)();可以使用typedef来解决函数指针类型声明问题。一组类似表达式的声明符(declarator)同—优先级的运算符,运算次序由结合方向所决定。h)()是浮点型表达式,()结合性优先级高于。函数声明:float ff();指针声明: float *pf;声明的结尾仅跟着函数定义时;表示单独—个语句了。return遗漏了—个分号;变量声明:float f;原创 2023-08-21 14:47:35 · 61 阅读 · 0 评论 -
C语言编程陷阱:词法陷阱
由双引号引起的亨符串,代表的却是—个指向无名数组起始字符的指针,该数组被双引号之间的字符以及—个额外的二进制为零的字符\0’初始化。如果编译器的输入流截止到某个字符都已经被分解为—个个符号,那么下—个符号将包从该字符之后可能组成一个符号的最长字符串。整型数(32bit)—般可以容纳多个字符,因此有的C编译器允许一个字符常量(字符串常量)中包括多个字符。整数值对应与该字符在编译器采用的字符集中的序列值。注意:除了字符串和字符常量,符号的中间不能嵌有空白(空格符、制表符、换行符)&和|不同于&&和Ⅱ。原创 2023-08-21 14:46:57 · 56 阅读 · 0 评论 -
C语言编程陷阱:移植性
通过遵循C语言标准、了解特定平台的行为和使用标准库提供的函数等手段,可以减少可移植性问题的发生,并编写出更加健壮和可靠的C代码。为避免可移植性问题,应使用标准库中提供的随机数生成函数,并根据具体需求对生成的随机数进行范围和精度的处理。为确保代码的可移植性,应使用标准库中提供的大小写转换函数,而不依赖于特定平台上的实现。为确保代码的可移植性,应尽量遵循C语言标准中对标识符的命名规则,并避免使用过长、有特殊含义或与关键字冲突的标识符名称。为确保代码的可移植性,应始终对变量进行显式的初始化,而不依赖于内存填充。原创 2023-08-20 11:47:22 · 164 阅读 · 0 评论 -
Linux下怎样编译通过使用C++17新特性的代码?
通过c++17的新特性实现对文件的读取。原创 2023-03-21 16:40:52 · 497 阅读 · 0 评论 -
2.2.2 redis、memcached、nginx 网络组件
【代码】2.2.2 redis、memcached、nginx 网络组件。原创 2022-09-25 20:22:09 · 815 阅读 · 0 评论 -
2.3.1 协程设计原理与汇编实现
mysqlclient 的开发接口应该有哪些?init_hook() 又是什么?dlsym()又是怎么截获的?三级协程结构的代码 :github.com/wangbojing/NtyCo。面试题: 对多进程中的hook之间是抢占式惊群还是先申请先使用?协程 和 线程 可以混用吗?c++的这样的内部变量还有哪些?那协程是怎样处理链接mysql的过程的?非协程链接mysql的过程是怎样的?编译时,-L 和 -I的区别。timewait 是什么时候?数据库的存储过程是什么?辨析:协程的性能怎么样?原创 2022-09-25 20:17:17 · 171 阅读 · 0 评论 -
2.4.1 用户态协议栈设计实现
arp 协议 与 arp 攻击 arp -a。SK buff 这个知名结构体。[[【C语言】【c++】零长数组]]icmp , ping 命令所使用到的。网卡工作在网络协议栈的哪一层?怎么查看 网卡是否支持多队列?原创 2022-09-25 20:13:56 · 352 阅读 · 0 评论 -
【c++】c++ 编译链接时提醒 搜索动态库 -lxxxx 时跳过不兼容的libxxx.so
这个问题的表现是——在通过g++或者gcc编译链接可执行程序的时候因为代码使用需要,需要添加对应 的三方库,这个时候在编译指令中 需要添加 动态库添加指令 告诉 ld 链接 对应名称的动态库、或者静态库。而在 ld 去指定路径下寻找时,这个路径下存在对应的动态库、静态库但是 这个时候,显示连接失败,这里以 我所使用的剑桥库。说的是 库编译时的操作系统位数 和 链接库时 代码的编译环境下操作系统位数 ,两者不一致。如果没有条件编译库文件,请修改 指定库文件 为对应位数下的库文件。原创 2022-09-02 16:06:00 · 6561 阅读 · 4 评论 -
【c++】c++ 编译链接成的可执行程序 执行时却表示无法找到某个或几个库
c++ 程序已经完成了编译链接,但是在执行时,提醒说某个 库 地址找不到,无法启动进程服务。在 /etc/ld.so.conf 中 写明 需要操作系统加载的库文件所在的文件夹的路径。使用 ldconfig 重新加载 库链接 地址到 /usr/lib 中。命令 查看执行程序 可以看到 存在 某个库 显示 not find。之后再次 使用 ldd 查看 ,已经找到了全部库连接地址了。告诉 操作系统 在哪里加载对应的库,原创 2022-09-02 16:01:42 · 694 阅读 · 0 评论 -
c语言、c++扩展介绍 ————柔性数组、零长数组。
注意: 一下所有的讨论都是基于结构体内部而言的,并不是单独拿出来的情境下的结论。原创 2022-08-27 09:55:04 · 384 阅读 · 0 评论 -
Cmake的介绍 适用于快速使用, 和期望深究的两类人群
服务器高级架构体系![[【cmake】cmake教程]] ↩︎原创 2022-08-14 18:12:58 · 793 阅读 · 0 评论 -
C语言 父进程fork()出的多个子进程在结束后,父进程如何回收?
我在网上找了半天都是在说wait()和waitpid()的详解或者是单个子进程的回收。答非所问。很简单,根据wait()或者waitpid()的函数特性。没有子进程时返回-1。while(-1 != wait(NULL)){ }//另:因为waitpid(pid_t pid,int*status,int options)函数不提供返回无子进程的值,也就是出错。while...原创 2019-03-31 17:14:31 · 2232 阅读 · 0 评论 -
Makefile教程(二)
使用条件判断——————使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值,或是比较变量和常量的值。一、示例下面的例子,判断$(CC)变量是否“gcc”,如果是的话,则使用GNU函数编译目标。 libs_for_gcc = -lgnu normal_libs = foo: $(objects) ifeq (...转载 2019-03-23 21:51:45 · 335 阅读 · 0 评论 -
Makefile教程(一)
概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写...转载 2019-03-23 21:49:24 · 139 阅读 · 0 评论 -
printf用法大全,C语言printf格式控制符一览表printf用法大全,C语言printf格式控制符一览表
输入输出函数(printf 和 scanf)是C语言中非常重要的两个函数,也是学习C语言必学的两个函数。在C语言程序中,几乎没有一个程序不需要这两个函数,尤其是输出函数(printf),所以这两个函数必须要掌握。如果在程序中要使用 printf 或者 scanf,那么就必须要包含头文件 stdio.h。因为这两个函数就是包含在该头文件中的。输出函数的功能是将程序运行的结果输出到屏幕上,而输入函...转载 2019-03-23 16:52:42 · 6132 阅读 · 0 评论 -
Makefile使用介绍
1. Makefile 简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力.本篇博客是基于{...转载 2019-03-23 16:30:27 · 328 阅读 · 0 评论