HighConcurrencyCommFramework c++通讯服务器框架 :目录,修改标题,配置,日志打印

目录规划

nginx 根目录下的三个文件

makefile :编译项目的入口,编译项目从这里开始

config.mk:也是个配置脚本用来增加变动的东西,应付可变

common.mk:最核心的编译脚本,每个子目录都要被编译.cpp程序

配置文件

配置文件读取功能实战代码

该缩进的必须缩进,对齐的对齐;

1.读取文件的代码

2.内存泄露的检查

valgrind :工具集:

帮助程序员寻找bug,擅长内存管理的问题memcheck 检测内存;
)memcheck的基本功能,能发现如下的问题;/a)使用未初始化的内存//b)使用已经释放了的内存//c)使用超过malloc()分配的内存//d)对堆栈的非法访问//e)申请的内存是否有释放*//f)malloc/free,new/delete申请和释放内存的匹配//g)memcpy()内存拷贝函数中源指针和目标指针重叠;

检查实例

valgrind --tool=memcheck
--leak-check=full:指的是完全full检测内存泄露
--show-reachable=yes;显示内存泄露的地点
--trace-children=yes :是否跟入子进程
--log-file=log.txt :将调试信息输出到log.txt 不输出到屏幕

 

设置可执行程序的标题

原理和实现的分析

argc :命令行参数的个数

argv:是个数组,每个数组元素都是指向一个字符串的char*,存的是命令行参数

内存连续;

argv 之后紧挨着后面的内存是环境变量内存保存的可执行程序所有环境变量的参数信息;

修改可执行程序的实现思路:

先把环境变量的内存搬走;

搬走了,命令行后面的参数你不用了,才可以增加长度

设置标题,然后,只要一个参数,然后跳过标题让其全部后面的为0;

日志打印 :

查看work mast进程

ps -eo pid,ppid,sid,tty,pgrp,comm,stat,cmd | grep -E 'bash|PID|nginx'

内核写入的write的命令是原语

父子进程共享文件描述符,那么就是子进程写完之后,父进程紧随其后写,因此同时写进一个日志的时候不会混乱;

没有亲缘关系的不共享,可能发生混乱;

write掉电解决:

直接iO ,直接访问物理磁盘O_DRECT 绕过内核,直接到磁盘,512的倍数分配空间

同步选项:

open文件是用 O_SYNC ,将写入的内核缓冲区的数据立即写入到磁盘

每次写数据,必须要大块大块的写数据,一般都4k 4k的写,节省系统调用的次数;

缓存同步:尽量保证缓存数据,和写道磁盘上的数据一致

sync(void)将所有修改过的块缓冲区排入写队列,然后返回,并不等待实际写磁盘操作,数据是否写入磁盘没有保证

fsync(int fd)将fd对应的文件的快缓冲区立即写入磁盘,并等待实际写磁盘操作返回,全部都影响,属性和数据;

fdatasync(int fd)只影响数据,不影响属性

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

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

相关文章

postman创建mock server

B站博主的说明:

《python语言程序设计》第6章2题(求一个整数各个数字的和)编写一个函数

求一个整数各个数字的和编写一个函数,计算一个整数各个数字的和, def sumDigits(n):a n // 100b n % 100 // 10c n % 100 % 10print(f"{n}数,分成个,十,百,{a}{b}{c}", a b c)sumDigits(23…

算法日记day 16(二叉树的广度优先遍历|反转、对称二叉树)

一、二叉树的层序遍历 题目: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3]…

SQUID - 形状条件下的基于分子片段的3D分子生成等变模型 评测

SQUID 是一个形状条件下基于片段的3D分子生成模型,给一个3D参考分子,SQUID 可以根据参考分子的形状,基于片段库,生成与参考分子形状非常相似的分子。 SQUID 模型来自于 ICLR 2023 文章(2022年10月6日提交)&…

vue+watermark-dom实现页面水印效果

前言 页面水印大家应该都不陌生,它可以用于验证数字媒体的来源和完整性,还可以用于版权保护和信息识别,这些信息可以在不影响媒体质量的情况下嵌入,‌并在需要时进行提取。‌本文将通过 vue 结合 watermark-dom 库,教大…

OpenCV 像素操作—证件照换底色详细原理 C++纯手写实现

文章目录 总体步骤1.RGB转HSV2.找出要换的底色3.取反,黑白颠倒4.将原图像的非背景部分复制到新背景上 完整代码1.C纯手写版2.官方API版本 总体步骤 1.RGB转HSV 为什么一定要转为HSV 颜色空间? 将图像从BGR颜色空间转换为HSV颜色空间是因为HSV颜色空间更…

nginx基本原理

进程模型 当nginx启动之后,会有一个master进程和多个worker进程。默认是一个worker进程。 master进程的作用:接收来自外界信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程在异常情况下退出后&am…

C#实现数据采集系统-实现功能介绍

系统介绍 我们这里主要使用C#( .Net 6)来实现一个数据采集系统,从0到1搭建数据采集系统,从系统分析,功能拆解,到一一实现 数据采集 数据采集是企业信息化和数字化转型过程中的关键环节,它涉及到从生产设备、传感器…

jupyter_contrib_nbextensions安装失败问题

目录 1.文件路径长度问题 2.jupyter不出现Nbextensions选项 1.文件路径长度问题 问题: could not create build\bdist.win-amd64\wheel\.\jupyter_contrib_nbextensions\nbextensions\contrib_nbextensions_help_item\contrib_nbextensions_help_item.yaml: No su…

【艺术向】【素描创作记录】《如何为你的红颜知己创作一幅画像(之二)》

写在前面 之前分析过类似的创作过程,见博客【艺术向】【素描创作记录】《如何为你的红颜知己创作一幅画像》 本人业余时间修习素描多年,在此撰文记录《如何为你的红颜知己创作一幅画像(之二)》,博得对方好感&#xff…

C++常见问题

一、C入门基础 1.1、函数重载 函数重载允许在同一作用域内定义多个同名函数,只要这个函数的参数列表(即参数的数量,类型或者顺序不同) 如何支持:程序经过编译后,编译器会对程序中的函数按一定规则进行重…

设计模式-Git-其他

目录 设计模式? 创建型模式 单例模式? 啥情况需要单例模式 实现单例模式的关键点? 常见的单例模式实现? 01、饿汉式如何实现单例? 02、懒汉式如何实现单例? 03、双重检查锁定如何实现单例&#xff…

封装MAVSDK为JAR包并导出给其它Android工程用完整示例

效果: 未解锁状态 已执行解锁指令 已执行起飞指令 飞行中 已执行降落指令 已执行返航指令 实现步骤: 1.准备PX4容器并启动:

ip地址是电脑还是网线决定的

在数字化时代的浪潮中,网络已经成为了我们日常生活和工作不可或缺的一部分。当我们谈论网络时,IP地址无疑是一个核心的概念。然而,关于IP地址的分配和决定因素,很多人可能存在误解。有些人认为IP地址是由电脑决定的,而…

springboot nacos的各种注解、手动操作监听配置变化(监听指定DataId/监听任何变化)

文章目录 springboot nacos监听配置变化(监听指定DataId/监听任何变化)监听任何配置变化Nacos注解NacosConfigurationPropertiesNacosValueNacosConfigListenerNacosInjectedNacosConfigServiceNacosNamingService springboot nacos监听配置变化&#xf…

QT--事件(丰富操作,高级功能)

一、事件 1.事件与信号的区别 事件来自外部,是随机发生的。信号来自内部,是主动发生的。有点像外中断和内中断的区别。事件:适用于处理系统级别的输入和状态变化,种类繁多,能够应对复杂的交互需求。信号/槽&#xff…

中国 X86 CPU 技术源自何方

注: 原文发布于 2017 年,两篇合二为一。未与作者沟通,侵权,立删。 导语: Intel 对 X86 的授权有着极为严格的限制,那么上海兆芯的 X86 芯片技术到底从何而来?ZX-C 目前的短板在哪里?…

pytorch 46 将ASpanFormer模型导出onnx运行

ASpanFormer是一个2022年8月份发布的算法,其主要步骤与LoFTR模型类似,因此无法导出为onnx模型。根据ASpanFormer论文中的数据与效果图,可以确定AsPanFormer是可以作为一个比SP+SG更为有效的方案,其在标准数据集上的效果优于SP+SG,在速度上远超SP+SG,与LoFTR接近;在预测点…

【深度学习入门项目】多层感知器(MLP)实现手写数字识别

多层感知器(MLP)实现手写数字识别 导入必要的包获得软件包的版本信息 下载并可视化数据查看一个batch的数据查看图片细节信息设置随机种子 定义模型架构Build model_1Build model_2 Train the Network (30 marks)Train model_1Train model_1Visualize th…

AI+X活动开放报名!Datawhale来南京了

Datawhale线下 主办方:讯飞开放平台、Datawhale、GDG南京 AIX 主题活动今年将走进 10 个城市,100 所高校,目前已经走进32所高校,以及北京、深圳、上海、杭州、武汉五个城市,南京是第六个城市,时间7月27号。…