负载均衡OJ项目中遇到的问题

1、续行符问题

在这里插入图片描述
关于换行符 ,代码在使用了换行符后无法编译文件,也没有爆出任何错误,更没有按照我们的代码打印出如下类似内容
:[ERROR][compiler.hpp][66][1732635247]编译失败,没有形成可执行程序
随机排查才发现。

代码中的 \续行符,用于在 C/C++ 源代码中将一行代码拆分为多行。其主要作用是告诉编译器:“当前行还没有结束,下一行是它的继续”。如果滥用或误用续行符,可能会导致代码行为异常。


删除\后又出现:

[LHL@VM-8-7-centos compile_server]$ ./compile_server
申请的进程PID:28530
申请的进程PID:0
[DEBUG][compiler.hpp][67][1732671807]./tempcode.cpp
[ERROR][compiler.hpp][68][1732671807]编译失败,没有形成可执行程序

问题,重新使用\符号,并清除后面的空格后正常。

为什么去掉 \ 后程序正常?

在你的代码中:

execlp("g++", "g++", "-o", PathUtil::Exe(file_name).c_str(),\PathUtil::Src(file_name).c_str(), "-std=c++11", nullptr /*不要忘记nullptr结尾*/);
  • \ 的作用是将代码分成两行,逻辑上视为一整行。
  • 如果 execlp 的参数列表已经完整,则使用 \ 并不必要。
  • 如果后面的行存在多余的空格或不可见字符,execlp 的行为可能会受到影响,导致编译器或运行时处理异常。

去掉 \ 后代码变为:

execlp("g++", "g++", "-o", PathUtil::Exe(file_name).c_str(), PathUtil::Src(file_name).c_str(), "-std=c++11", nullptr /*不要忘记nullptr结尾*/);

这种情况下,每个参数显式地分开,且没有多余的续行逻辑,编译器直接处理整个语句,不会因隐藏字符问题导致错误。


续行符可能引发的问题

  1. 隐藏的空格或不可见字符
    如果 \ 后有空格或 Tab,续行符会失效,导致编译器视后续部分为单独一行。例如:

    execlp("g++", "g++", "-o", PathUtil::Exe(file_name).c_str(),\    
    PathUtil::Src(file_name).c_str(), "-std=c++11", nullptr);
    

    上面代码中,\ 后的空格会导致下一行被独立解析,参数传递失败。

  2. 滥用续行符破坏代码可读性
    使用过多的续行符会让代码变得复杂和难以维护。如果一行代码不长,尽量不要用 \

  3. 难以调试
    如果 execlp 出现问题,比如执行失败,错误日志可能无法正确定位问题原因。


  • 续行符 \ 是为分割长行代码而设计的,去掉它让代码写成单行,有助于避免隐藏字符等潜在问题。
  • 如果保留续行符,需严格检查后续行是否有多余字符。
  • 优化日志记录以便于调试参数错误。

2、umask问题

在这里插入图片描述

启动http服务后浏览器无法访问的问题

启动服务端后,在网页中并无法访问服务器端口,经排查原因如下:
检查云平台的安全组规则: 确保在云平台(如阿里云、AWS、腾讯云等)控制台中,安全组规则允许 8080 端口的流量通过。你需要为服务器的公网 IP(49.232.209.35)开放 TCP 端口 8080。

在云平台的控制台中,找到相应的安全组,确保添加了允许来自 任何地方(0.0.0.0/0) 或特定 IP 地址的 8080 端口 TCP 流量。
在这里插入图片描述
如上如所示添加相关项即可。

#include "compiler.hpp"
#include "runner.hpp"
#include "compile_run.hpp"
#include "../comm/httplib.h"using namespace ns_complier;
using namespace ns_runner;
using namespace ns_compile_and_run;
using namespace httplib;/*编译服务随时可能被多个人请求,必须保证传递上来的code,
形成的源文件名称具有唯一性,否则多用户之间会相互影响
*/
int main()
{//提供的编译服务,打包形成一个网络服务//cpp-httplibServer svr;svr.Get("/hello",[](const Request &req,Response &resp){resp.set_content("hello httplib,你好 httplib!","content-type: text/plain;charset=utf-8");});svr.listen("0.0.0.0",8080); //启动http服务return 0;

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

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

相关文章

android编译assets集成某文件太大更新导致git仓库变大

不知道大家有没有类似的困扰,你的工程assets文件过大,我曾经在某度车机地图团队工作过一段时间时候,每次发包会集成一个上百MB的文件。工作一段时间你的git仓库将会增加特别多。最后,你会发现你如果重新git clone这个仓库会非常大…

关闭windows11的“热门搜索”

win10搜索栏热门搜索怎么关闭?win10搜索栏热门搜索关闭方法分享_搜索_onecdll-GitCode 开源社区 注册表地址是:计算机\HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\ 最后效果如下:

【数字电路与逻辑设计】实验五 4人表决器

文章总览:YuanDaiMa2048博客文章总览 【数字电路与逻辑设计】实验五 4人表决器 一、实验内容二、设计过程(一)设置变量(二)真值表(三)表达式 三、源代码(一)代码说明&…

Yeeco成长型一体化数智赋能平台:科技矩阵重塑企业数字生态

随着科技的飞速发展,我们正在步入一个被称为“数智化时代”的新时代。在这个时代中,数据处理和分析的能力被提升到一个前所未有的高度,而这种变化背后的重要推动力量就是各种新兴的技术趋势。 为了在激烈的市场竞争中脱颖而出,Yee…

PlantUML——类图

背景 类图是UML模型中的静态视图,其主要作用包括: 描述系统的结构化设计,显示出类、接口以及它们之间的静态结构和关系。简化对系统的理解,是系统分析与设计阶段的重要产物,也是系统编码和测试的重要模型依据。 在U…

LabVIEW热阻炉温度控制

在工业自动化和控制系统领域,温度的精确控制对于保障生产过程的稳定性和产品质量非常重要。热阻炉作为一个典型的受控对象,其温度控制系统的设计和实现涉及多个技术层面,包括硬件选择、控制策略的设计以及软件的实现。项目使用LabVIEW软件开发…

MongoDB在自动化设备上的应用示例

发现MongoDB特别适合自动化检测数据的存储。。。 例如一个晶圆检测项目&#xff0c;定义其数据结构如下 #pragma once #include <vector> #include <QString> #include <QRectF> #include <string> #include <memory>class tpoWafer; class tp…

day04-产品原型-学习计划

1. 分析整体业务流程 2. 提交学习记录-接口 2.1 需求 在课程学习页面播放视频时或考试后&#xff0c;需要提交学习记录到服务器保存&#xff0c;如用户播放视频的进度、学过的章节等。 2.1 接口详情 请求方式&#xff1a;POST 请求路径&#xff1a;/learning-record 请求…

基于Matlab的卷积神经网络(CNN)苹果分级检测系统

本研究提出了一种基于卷积神经网络&#xff08;CNN&#xff09;的自动化苹果分级系统&#xff0c;该系统根据苹果的视觉特征进行分类。系统采用了预训练的深度学习模型&#xff0c;使用包含不同等级苹果的图像数据集进行训练。研究方法包括图像预处理、特征提取和苹果等级分类。…

MySQL内置函数学习

引言 MySQL内置函数是MySQL数据库系统提供的预定义函数&#xff0c;用于执行特定的操作&#xff0c;如数学计算、字符串处理、日期和时间操作等。这些函数极大地简化了SQL语句的编写&#xff0c;提高了数据库操作的效率。 MySQL内置函数分类 MySQL内置函数可以大致分为以下几…

小程序入门学习(四)之全局配置

一、 全局配置文件及常用的配置项 小程序根目录下的 app.json 文件是小程序的全局配置文件。常用的配置项如下&#xff1a; pages&#xff1a;记录当前小程序所有页面的存放路径 window&#xff1a;全局设置小程序窗口的外观 tabBar&#xff1a;设置小程序底部的 tabBar 效…

【Web】AlpacaHack Round 7 (Web) 题解

Treasure Hunt flag在md5值拼接flagtxt的文件里&#xff0c;如 d/4/1/d/8/c/d/9/8/f/0/0/b/2/0/4/e/9/8/0/0/9/9/8/e/c/f/8/4/2/7/e/f/l/a/g/t/x/t 访问已经存在的目录状态码是301 访问不存在的目录状态码是404 基于此差异可以写爆破脚本 这段waf可以用url编码绕过 做个lab …

android studio 读写文件操作(应用场景三)

android studio版本&#xff1a;2023.3.1 patch2 例程&#xff1a;filesaveandread 其实我写这个都是我记录我要做后个数独小游戏&#xff0c;每一个都是为了解决一个问题。即是分享也是备忘&#xff0c;反正我什么都不会&#xff0c;就是一顿瞎改&#xff0c;不行就研究。这…

c++:timer

1.设置休眠时间sleep_for 添加头文件 #include <thread> #include <iostream> #include <chrono> #include <thread>int main(int argc, char const *argv[]) {// 休眠2秒std::this_thread::sleep_for(std::chrono::seconds(2));// 休眠500毫秒std:…

【开源】A064—基于JAVA的民族婚纱预定系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…

嵌入式学习(17)-stm32F407串口使用注意事项

一、概述 配置串口时串口的接收一直不好使&#xff0c;对比例程发现了问题&#xff1a; 在网上也找了一些资料供参考“STM32F4的串口RX引脚不能被设置为输入是因为串口的接收&#xff08;RX&#xff09;功能是由硬件电路实现的&#xff0c;无法通过软件配置来控制。串口接收功…

如何在UI自动化测试中创建稳定的定位器?

如何在UI自动化测试中创建稳定的定位器&#xff1f; 前言1. 避免使用绝对路径2. 避免在定位器中使用索引3. 避免多个类名的定位器4. 避免动态和自动生成的ID5. 确保定位器唯一6. 处理隐藏元素的策略7. 谨慎使用基于文本的定位器8. 使用AI创建稳定的定位器 总结 前言 在自动化测…

在做题中学习(77):快排

解法&#xff1a;快排 思路&#xff1a; 1.快排排一趟&#xff0c;递归分出来的左区间和右区间&#xff08;一趟的思想&#xff0c;看我的前一个文章&#xff1a;颜色分类题解&#xff09; 2.递归&#xff1a;想清楚 函数头 和 返回条件怎么写 函数头&#xff1a;把递归想成…

数学拯救世界(二)——— 学艺

一、 然而&#xff0c;袁qy大臣又犯难了&#xff0c;他在想&#xff0c;如何把分数与国人知道的小数或者整数联系在一起呢&#xff1f;如果直接告诉国王分数是自己是造出来的&#xff0c;那么可能会导致国王发怒。 “可恶而又死板的暴君&#xff0c;不愿意接受任何新东西”&…