当前位置: 首页 > article >正文

负载均衡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-httplib
    Server 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;
原文地址:https://blog.csdn.net/LIHONGLI000125/article/details/144070907
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/427993.html

相关文章:

  • 我的“ai学伴”助力“程序”迭代
  • 应用案例 | 船舶海洋: 水下无人航行器数字样机功能模型构建
  • RK3568平台(内存篇)DDR定频修改
  • OD C卷【热点网站统计】
  • 漫画之家Spring Boot应用:打造您的数字漫画馆
  • 如何从命令行和用户输入收集输入
  • 读取csv里面的文件数据画曲线
  • B4X编程语言:B4J控件的样式设置属性(Style/StyleClasses)
  • 利用R包QstFstComp包进行Qst-Fst分析
  • 处理海量数据的查重方法总结
  • 【WRF运行第一期(Ubuntu)】模型运行前准备
  • 高数极限与连续练习题(自用)
  • 网络渗透实验二(渗透课)
  • 新160个crackme - 109-Jony-crackme
  • ElementUI:el-tabs 切换之前判断是否满足条件
  • docker-3.docker权限问题
  • 开发一个AMT(automatic multicast tunnel)协议库 C++版本,Client,Server详细的设计
  • STM32F103单片机使用STM32CubeMX创建IAR串口工程
  • mac 安装python3和配置环境变量
  • 【Leetcode Top 100】146. LRU 缓存