C++:继续上一篇文章学CGI编程:乱码问题、误入歧途学了CGI编程(其实只是安装劝退因祸得福)、通过知乎直答及时更改学习方向、找到方向(花了2天)
菜鸟教程:
标题兼目录:
-
了解乱码问题本质,进一步会解决乱码问题,感觉已经可以处理很多乱码问题了
-
\r、\n问题
-
误入歧途:以为Linux系统的步骤在win下安装CGI库(cgicc):configure、make、make install
- 崩溃改用VS(依旧逃不过上面的命令)
-
改用知乎直答,豁然开朗,放弃CGI库编程(cgicc)
- 制定计划逐步落地
-
找到方向(花了2天)
插一句话,妈逼的,自此之后的codeblock变成UTF-8编码了
之前刷题和学C++用的codeblock的Settings→Editor,都是windows-936,charset语句无论怎么写,或者不写,控制台上都正常(因为控制台是windows-936),但到浏览器localhost上就是如下情形:
-
代码如下:空格+h1
#include <iostream> #include <stdlib.h> #include <string> using namespace std; int main () { cout << "Content-Type: text/html; charset=utf - 8\r\n\r\n";//其中“Content-Type”不可以中间有空格,而"utf - 8"必须有这俩空格 cout << "<html>\n"; cout << "<head>\n"; cout << "<title>CGI 环境变量</title>\n"; cout << "</head>\n"; cout << "<body>\n"; cout << "<h1>h的1</h1>\n"; cout << "</body>\n"; cout << "</html>\n"; }
这代码输出正常:
-
但是如果去掉h1,只有空格
#include <iostream> #include <stdlib.h> #include <string> using namespace std; int main () { // cout << "Content-Type\r都是\n\r\n"; // cout << "Content-Type: text/html; charset=utf - 8\r都是\n\r\n"; cout << "Content-Type: text/html; charset=utf - 8\r\n\r\n"; cout << "<html>\n"; cout << "<head>\n"; cout << "<title>CGI 环境变量</title>\n"; cout << "</head>\n"; cout << "<body>\n"; // cout << "<h1>h的1</h1>\n"; cout << "</body>\n"; cout << "</html>\n"; }
这段代码标题是乱码的,称为形式A乱码
-
如果没空格,有h1
#include <iostream> #include <stdlib.h> #include <string> using namespace std; int main () { // cout << "Content-Type\r都是\n\r\n"; // cout << "Content-Type: text/html; charset=utf - 8\r都是\n\r\n"; cout << "Content-Type: text/html; charset=utf-8\r\n\r\n"; cout << "<html>\n"; cout << "<head>\n"; cout << "<title>CGI 环境变量</title>\n"; cout << "</head>\n"; cout << "<body>\n"; cout << "<h1>h的1</h1>\n"; cout << "</body>\n"; cout << "</html>\n"; }
结果是依旧乱码,但形式不同,称为形式B乱码
-
如果没空格,没h1
#include <iostream> #include <stdlib.h> #include <string> using namespace std; int main () { // cout << "Content-Type\r都是\n\r\n"; // cout << "Content-Type: text/html; charset=utf - 8\r都是\n\r\n"; cout << "Content-Type: text/html; charset=utf-8\r\n\r\n"; cout << "<html>\n"; cout << "<head>\n"; cout << "<title>CGI 环境变量</title>\n"; cout << "</head>\n"; cout << "<body>\n"; // cout << "<h1>h的1</h1>\n"; cout << "</body>\n"; cout << "</html>\n"; }
结果是乱码跟形式B相同
-
如果整个charset都不写,依旧是乱码
如上,这就是之前豆包一直说,正确的应该是没空格的,我却必须带空格才能正常输出
如果codeblock的设置换成UTF-8,直接说结论
没空格
-
有h1
- 控制台乱码
-
浏览器正常
-
没h1
- 控制台乱码
-
浏览器正常
有空格
-
有h1
- 控制台乱码
-
浏览器乱码
-
没h1
- 控制台乱码
-
浏览器乱码
根本就没charset
-
有h1
- 控制台乱码
-
浏览器正常
-
没h1
- 控制台乱码
-
浏览器正常
而且改变codeblock的时候还必须做写操作才能变过来
(例如如果codeblock改成了utf-8,需要在main里最开始写一句最直白的cout,用来输出任何汉字都行,才会乱码,否则一直是windows936的正常不乱码)
各种情况很难描述,反正实际遇到我会根据情况处理了,反正沾的玄学的边
妈逼的离了个奇了
但豆包给出了我可以接受到解释,完美释怀!
曾经最怕的就是乱码问题,现在也搞懂了
调试过程:
菜鸟教程里“下面的 CGI 程序列出了所有的 CGI 变量”这句话下面的代码,一开始以为是像上个博客提到的,title(或者目录、everything的指令)有空格就要加引号,跟everything一样,结果发现不是这个事。最后逐一一行一行弄,发现是豆包说的“码文件是以 GBK 编码保存的,而程序里指定的是 UTF - 8 编码,这就会造成乱码”,源于我定位到发现去掉h1是不一样的结果,最后去改了下codeblock编码
关于\r
注意:\r
是光标回到本行首位置
豆包讲述完给的代码真烂,完全没效果,自己花了几分钟重写了下,这也算是实践了下\r
这玩意,了解了光标到首行的应用
#include <iostream>
#include <unistd.h>
int main() {
int n=3;
while(n--){
std::cout << "\rLoading";
for (int i = 0; i < 5; ++i) {
std::cout << ".";
std::cout.flush();
sleep(1);
}
std::cout << "\rLoading ";
}
std::cout << std::endl;
}
另外这个代码
居然没覆盖Content问豆包也没搞懂,最后想通了,我宽度40,自动换行了,其中8
在下一行,AAA覆盖了行首8
唉,这教程,没点能力真看不懂。新手真的别看菜鸟教程了,太有跳跃性了
C++ CGI 库,这又他妈卡死了艹~~~~(>_<)~~~~
localhost:8080成功后,具体研究CGI代码,即从教程里的“上面的 C++ 程序是一个简单的程序,把它的输出写在 STDOUT 文件上,即显示在屏幕上”这句,到安装CGI库之前,了解CGI库的安装意义
豆包问答分享
以防失效
了解CGI库(cgicc)后开始安装
回忆基地,LBC我估计还有10个Y
好像17年的时候人家就已经开始练习绝世武功武学武林,准备各种实战技巧,而我如今25年才开始
别人10年的经验
我如今1年就觉得已经他们10年强百倍
可是我没工作
可是我觉得好亏。唉浪费了这么多年
妈逼的安装cgicc卡了我两天!!唉我操~~~~(>_<)~~~~崩溃了
呃啊啊啊啊啊啊啊啊啊!@!!!!!!!¥!@¥~#~#¥%……&%……&
~~~~(>_<)~~~~~~~~(>_<)~~~~
分享一部分豆包问答,再不分享滑动条滚动条小的页面卡死了
豆包回答也开始反复重复一样的回答了,也不搜索回答了,也没深入思考了(虽然很鸡肋)
3d坦克一样,为什么最初的总是最好的,越优化越烂
现在大意是:
目的是安装CGI库,这玩意叫做cgicc
首先是下载压缩包解压后,cmd是win的,要用linux,就用cygwin了,这块豆包不告诉你用cygwin,是我自己想到的问他行不行,他说行,他给我扯了一堆其他linux工具,妈逼的我要不是有丁点了解又要去搞一堆工具妈逼的~~~~(>_<)~~~~,就不能主动说cygwin,后来发现cygwin少东西,重新安装下主要弄上了binutils(卡了半天),这玩意大概就是做链接用的,然后开始用cygwin,总共安装cgi库三步骤:
我理解大概这玩意要捆绑到gcc上,所以不能简单的说直接exe那么搞,所以要
1、先用configure
执行命令,发现Id没找到搞半天发现是需要加个地址,像这样LD=/usr/bin/ld ./configure --prefix="/cygdrive/c/Program Files/CodeBlocks/w64devkit"
,这样出来一个makefile文件,在doc下
2、去doc下,执行make
命令
3、最后执行make install
,说是弄到我的gcc/g++目录下,我用的w64devkit,不是mingw,所以弄到w64devkit下,结果怎么都是不成功
这期间还改了makefile里许多东西,比如目录要加“ ”,╮(╯▽╰)╭,~~~~(>_<)~~~~真的好崩溃啊
为了清晰贴我牛逼追问下的豆包回答
唉我真的好心累啊,这个博客园的这个TinyMCE5编译器,有时候莫名其妙的变了格式,我想选择段落
段落打勾,这样可以两行之间有个距离,可是我如果10行里有4行是不符合要求的,按理说Ctrl+A全选,应该是混合模式,可是他却依旧显示是段落打勾,这样一来我就要一个一个去定位到这4行,来分别把没打勾的4行,打上勾
唉
而且,贴过来的豆包回答带标题,我想取消标题,全是段落,结果全选也是全是段落打勾,妈逼的,我还要分别定位到每个标题行,然后手动一个一个的选上段落
而且TinyMCE5编译器还他妈的,把写完的字加粗和变颜色,99%的概率失灵,弄完也光标回到起始位置,TinyMCE反而不会这样,要来回切换,TinyMCE的搜索比tm记事本的还难用!~~~~(>_<)~~~~弄死我吧!!呃啊啊啊啊啊!!!~~~~(>_<)~~~~
现在发现cygwin又缺少autoconf
、m4
和 perl
,唉,好坑啊~~~~(>_<)~~~~
又他妈逼缺少automake
吐了
搞了真的整整2天了
继续问豆包
又安装vim
,文件txt更改太慢了
“我真的崩溃受不了了,我能不能换个其他办法呢?现在我捋顺一下 我是windows系统,学C++,现在到了CGI编程这一步骤,该怎么办呢?我不想再软件安装上浪费的太多时间了”
放弃codeblock,转用VS
豆包问答分享
以防失效
误入教程里Linux命令进而想用对应windows命令给codeblock指定的w64devkit里gcc/g++强行关联装CGI库(即cgicc)而引发的血案
真他么烦!搞半天codeblock的localhost网页Web编程那些白搞了
不知道是不是学偏了,回家看色情漫画准备导管子的时候,突然想起,搜了下百度cgicc发现windows好像根本没有这玩意的安装教程
而且
附上VS默认初试编码
妈的win是不是有病啊
之前codeblock就是,现在VS也是,默认的UTF-8带签名就控制台没事,浏览器乱码
改成UTF-8无签名控制台乱码,浏览器也半乱码
妈逼的乱码又改了一下午最后这样才行
之前试验过
我总结一下VS里:
浏览器编码没管也不知道是啥
对于utf-8
VS里默认的UTF-8带签名,就是控制台正常,浏览器全乱码
VS里另存为UTF-8无签名,就是控制台乱码,浏览器半乱码(主要发生在“文字+空格+英文字母”的情况)
VS里另存 GBK 2312 936,就是控制台正常,浏览器全乱码 但是我如果写成utf - 8 带空格了,就是浏览器正常了,不写charset浏览器也是全乱码
最后发现另存为的那个编码没啥用,如图里的,项目右键,然后属性,
添加utf-8,浏览器正常,控制台乱码
去掉utf-8,浏览器乱码,控制台正常
妈逼的
上午好好的,一到晚上,http://localhost:8080/cgi-bin/MyFirstProgram.exe
这种IDM就给我弹出下载,然后IDM里设置localhost网址不弹出,网页直接500了,把IDM关了才好,豆包给出的相应头,没懂为啥,有空研究研究IDM的下载底层原理吧
IDM提示框关了,莫名其妙设置里想开找不到地方了,下次想用估计也没法用了,不管了
唉,豆包就跟个智障一样,大模型想对专业问题回答的让人满意真的路漫漫啊!!!
有点像包工头不给钱一样,边边角角的事情(狠心)
豆包真的给我整崩溃了,没力气说啥了,cgicc安装CGI库,给我整死了
豆包问答分享
崩溃
一开始打算codeblock,在cmd或者是cygwin都是安装都是要configure、make、make install
换用VS,结果添加后一堆报错,说是CgiDefs.h.in妈逼的,还要用命令行搞下编译,把.in文件弄成不带.in的
卧槽,真的被折磨死了啊
B站一堆C++视频哪怕黑马教程也没啥玩意,拉到最后无非就是cout一堆东西的狗屎,还叫项目,傻逼玩意
豆包白扯分,放弃豆包(翻来覆去又是开始重复一样的话)
我是windows 怎么才能在VS下最简洁最便利最快速的弄CGI编程安装cgi库呢? 注意: 我的目录C:\Program Files\CodeBlocks\w64devkit\bin下有gccg++ 我的apache可以启动localhost并展示VS里写的代码 下载了cgicc压缩包解压后发现C:\Users\GerJCS岛\Downloads\cgicc-3.2.20\cgicc-3.2.20\cgicc里有许多.cpp和.h文件 我改咋弄?禁止废话,禁止linux
豆包分享
转用知乎直答试试
我打算找C++的开发工作 参照菜鸟教程学到了CGI编程 我想首先确定下这玩意有必要学吗? 如果有的话,我目前是windows系统,需要弄成Linux吗? 我在试图安装CGI库即cgicc,我无论怎样试验都不行,我试了cmd和cygwin命令行来弄C:\Program Files\CodeBlocks\cgicc-3.2.20目录下的configure,然后make,然后make install,最后因为貌似是LInux类的命令导致无论怎样都以失败告终,因为C/Program和Files有空格导致一些配置文件里的目录异常 然后我又试图弄VS,说这个简便,可是C:\Program Files\CodeBlocks\cgicc-3.2.20\cgicc下的cgiDefs.h.in不是cgiDefs.h,导致还是需要回答之前的configure,我已经彻底崩溃了,折磨的真的没办法了,我要怎么弄这个呢?CGI的cgicc库有必要弄吗? 我太缺钱了,已经没工作很久了,我不想在现在这个时候弄的什么东西,只想学最有助于找工作的东西,找到工作后再研究这些,想知道CGI编程cgicc这些过时吗?
豆包真的差劲,放弃了
傻逼菜鸟教程去你妈的吧,坑货!
知乎直答救了我
之前觉得Deepseek自言自语烂,现在用知乎直答接入Deepseek发现给的计划好棒
CGI也算因祸得福了,没有CGI卡这么久,估计还会在菜鸟教程上学CGI然后越走越远,不会及时换知乎直答
艾佛森
梅西贺炜()
罗斯
当幸福来敲门
黑人海军
中科院博士黄国平论文
意外看到个知乎的鱼皮问题?
知乎直答每次联网搜索的都很棒,不联网就不行,回答分享(截图重影因为那个箭头没法ADblock Plus屏蔽掉)(ADGUARD可以)
由于格式有问题我点了重新生成,结果再也没这句话了,所以没链接,直接截了个图(每次生成都会生成不同的同类型回答,很棒)
一直学的很折磨,觉得自己一无是处穷途末路,看到几个褒扬之词感觉还挺开心的,而且感觉看到了希望,说的很多都是我喜欢的比如金融啥的
通过联网搜索弄的完整知乎直答 问答 分享
说话的艺术
虽然知道不太好以一个评判批评银行测试外包+自己苦穷哭同情啥的博同情,但不知道咋说
罗斯(我就不能做开发吗?不能成为联盟最好的球员吗),+乌鸦(不能别人比你强你就GameOver了缴枪了结束了啊,我就不服输,以后一直比我强吗?)
转变成:
测试经历: 测试经验带来质量意识(金融系统核心需求)
算法跟工作没关系,但学习动力兴趣进入状态,
我实际工作不要说太短,这样感觉会对我这个人工作人情世故有疑心,就普普通通的工作者,然后想转开发。赚钱为了吃饭、乐趣,测试只是一个检测成就感
哪怕 一年 三年改变也比别人高了,自己摸索
马云小公司起步,因为大公司没的做,只能做小公司,逼不得已
我与众不同,我没法做Java那些管理系统,既难又复杂又体现不出来我的核心竞争力,只能另辟蹊径 算法+C++,不然我也不会别的啊,
我跟人家卷Java?都被培训班或者更牛逼的人占坑了,就培训班那些教授的话术简历的包装程度,哪还有我的位置啊艹,乌烟瘴气的,只能另辟蹊径
公众号那些互联网大佬做那些什么手撕操作系统?,那么吓人,自己牛逼架搞那么高,能下得来台吗?我又没钱买人家的课
为了学找工作,我写书。别人只是学
为了学找工作,自己创造很多项目。别人只是照着抄
与众不同
都是CRUD很容易会算法的,可我连那些框架都看不懂
傻乎乎的薪资给我一半也行,或者剩下的分到领导你薪资里也行,就是想有份工作
知乎直答也是文字截图缺少(之前通义千问 搜“手动”)
手动补全文字:
还要考虑到他的实际应用场景,比如求职面试中展示项目。建议他分阶段改造代码,先在外围接口使用现代C++,核心算法保持原样,这样既能展示工程能力,又不影响现有代码的稳定性。同时,提供具体的代码对比示例,让他看到改造后的好处,如内存自动管理、代码简洁性提升等。
最后,鼓励他设置短期目标,比如每周学习两个新特性,并应用到一个算法模块中。通过小步快跑的方式积累信心,避免一次性改造所有代码带来的压力。提醒他遇到问题时如何寻求帮助,比如在论坛提问时提供最小复现代码,以便快速获得解答。
总结来说,我需要将复杂的问题拆解成可管理的小任务,提供具体的工具和资源,降低学习门槛,同时给予情感支持,帮助他建立信心,逐步克服困难。
手动补全文字:
# 三步建立技术壁垒:
1. **算法封装**:将刷题成果打包成header-only库(如`algo4cpp`)
2. **性能报告**:用perf工具对比STL算法与你的实现(参考内容中的复杂度分析)
3. **专利布局**:申请「基于并查集的动态线程调度方法」等实用专利
找到方向
宏观来说,长期目标金融量化投资高频交易(不喜欢Java,不喜欢安卓,刷题熟悉C++,不想做游戏和网络安全只当业余爱好?,医疗又没太大的兴趣,金融高频交易量化投资钱多,之前浙大考研里的一个做这个,好多钱),目前就是找份C++的工作。一个是钱,一个是学习发现有兴趣(刷题启蒙),再加上起初入行的就是银行,从最差到了解了很多,感觉这个行业挺高级
通过豆包和知乎直答,用了2天时间找到了第一个可以做的项目,并有了接下来大概的计划
1、回顾算法至少把博客之前用心弄的弄的彻底!看情况打比赛?(codeforce!+力扣?)当作无聊的+建立自信
从那天学到CGI崩溃到改用知乎直答及时止损!看到好多项目挺开心的,好兴奋

好开心, 项目有名字了 明天6点-22点 知乎直答建议我的 成家了吗? 没, 对象也没有 这些都是很远的事 我只想赚钱赚多多的钱 我太穷了太饿了太旧了 只想好好学本事学技术以后可以做管理赚多多的钱 现在只想学本事赚多多的钱 好想跟王钰涵研究下这些项目可不可行 就像考试周破防B站那个视频 看会球看会书挺快的 我类比就是我看C++的知识,看不懂就刷题找找感觉,刷题A不掉再做项目。良性循环 我跟年轻人有朝气有激情热情学习劲头 增加信心就打两场codeforced和力扣 没成家没对象 就想在这行多学点东西多点赚钱 我带骑行团,朝气 我好研究 不然我也不会辞职饿肚子一直自学C++开发,我会继续外包待下去。哪怕饿肚子也没有想过再去外包公司 我对算法感兴趣,也不会刷题打比赛,这些其实我知道对找工作好多人都说没用没帮助,但我还是坚持了下去,就为了找学习状态(虽然发现没啥关系好像确实没啥用) 但我很享受其中 blue祝峰:你学发现哪里不对头可以再找我,咱们再分析分析 他很中钉 父母赡养 总不能就这么算了吧 世界就是一个巨大的草台班子 自己弄后发现不想弄他的OJ项目了 不那么想华为OD了 那些乌鲁木齐领导 JP你zangli 看人好准 知道我可以 带队是啥的 陈雨桐
2、
关于项目:(目标2个月找到工作,今天2025年3月6日)(目前重点)
▶性价比最高目前: 网络编程+HTTP+线程池 ,实现一个简易 HTTP 服务器(C++ 多线程版本)
▶用 C++17 重构你的算法题代码(展示现代 C++ 特性)(性能优化)
▶然后做个宏观框架打算金融?做个大概
项目名称:
- 金融实时风控系统(基于 C++ 的高性能交易欺诈检测)
技术栈:
C++17
多线程
Redis(可选)
Boost 库
算法应用场景:(很开心,对于豆包深度思考给出的描述,我有着清晰的算法实现原理一个框架)
KMP 算法:实时交易流水的模式匹配(检测异常交易序列)(如连续 5 次大额转账)
BFS/DFS:构建交易关系图,识别多层级关联账户
并查集:快速合并关联账户组,标记可疑集群(基于IP地址) ——(其实就是社交关系网并查集应用,只不过高大上的说法和业务名称)
最短路算法:计算资金流转最短路径(识别洗钱通道)(优化资金流转监控路径,减少重复计算)
最小生成树:构建账户关系网络的最小通信成本模型(构建账户风险传播的最小路径模型)
另外很有兴趣,入职后练手的(最粗浅的想法,短时间就能想到的,没啥深入构思,且还不是主要针对长远金融或者长远项目经验考虑,仅仅2天、且啥也不知道、啥也不会、且没任何技术理论啥都不懂,啥技术栈都不知道,只懂一些算法结合豆包+知乎直答给出的项目),简单整理下
融入一个物流路径规划系统,业务逻辑:(好像刷过的题目)
用户输入多个城市间的运输需求(起点、终点、货物量)
系统自动生成成本最优路径(Dijkstra) + 网络容灾方案(最小生成树)
实时监控运输状态,异常时触发备选路径搜索(BFS/DFS)
想到了一些之前刷题:奶牛开party题目、志愿者统计最短花销问题、还有个最短路那个运输transport啥的(邝斌经典最短路)、最小生成树第一个题的图(邝斌经典最小生成树)、迷宫单独有点低级了
结合高德地图(之前高德地图的项目郑浩然搞了个呵呵) 关系网并查集跟金融账户衔接?或者类似账户风控啥的 KMP匹配弄个有趣的,日志啥的太无聊了,比如股票代码(长连接?5min内推荐用户自选股票代码有关的新闻 )
社交网络好友关系分析器(并查集)
村庄光纤部署模拟器(最小生成树)
知乎直答追问链接分享
豆包追问链接分享
最后,妈逼的我刷的那些算法是冷门算法貌似
艹了,还要搞动态规划!二叉树(感觉二叉树不是考逻辑思维,而是考这些别扭的玩意,搜“人容易傻”)
~~~~(>_<)~~~~
- 豆包回答更智能,贴近我想追问的意思,但极致专业性差点
-
而知乎直答,都是根据知乎回答搜索的,极致专业,但智能性差挺多,有时候get不到我追问的意思。有时候衔接性也很差!
###:豆包巨坑预警:
当进入AI编程模式的时候,或者Ctrl+F搜索的时候,按Esc退出,会清空编辑框内容
当写好一大段问题,然后引用一段代码,写好的内容会清空
###:cygwin路径问题,参考博客里搜“在Cygwin64里可能会被转换成类似”
###:
知乎直答编辑框还好,有时候发送后有bug问题没回答,刷新的时候记得复制问题。
还有,编辑已经回答过的问题时候,之前的回答不会像豆包一样以2/2这种形式保存,记得宁可重新复制/编辑提问
且编辑的时候编译到一半点其他地方会退出编辑,白写了
###:(乌鲁木齐离焦http耻辱) 想过无数次给吴师兄红包问问华为OD怎么进入,算了,经历过,不会再这样了,卢奇知乎岳京杭不再这样“炫耀请教了”
无数次的自言自语自己的经历。苦难。和不甘心
###:未来的路还很漫长,希望可以看到我的学习能力、自我驱动能力,希望各位面试官可以给我一给机会让我
###:3月5日发现豆包加了Deepseek深入思考按钮
-
但对于回答制定计划知乎直答比豆包好,主要是知乎联网搜索了自己知乎内部的各种大佬回答,整合的非常不错。豆包在这块一对比就很差了
-
而对于阅读知乎直答分享的链接内容,知乎直答自己反而没豆包能阅读,知乎仿佛无法阅读自己分享的链接,导致仅仅根据“阅读该链接”搜索了知乎回答继续回答的,就驴唇不对马嘴了。豆包可以阅读知乎分享的链接,知乎貌似有自己的解析链接的机制
但知乎直答回答问题内存太少了,问几个就卡了
而且知乎直答今天用感觉没昨天那么细致了,各种精准的计划表格没了
豆包和知乎直答结合用吧╮(╯▽╰)╭
###:“你在小红书上查查测试知识”呵呵