欢迎来到小面包的小站🥝
薪酬管理系统关于路径问题
关于路径问题的总结 问题描述 在项目中,我引入了一个第三方的 CSV 解析库。问题出现了:这个库不支持相对路径,因此在助教的环境中运行时,我必须要求他们手动指定绝对路径。这个做法显然不太方便,尤其是在不同的环境中部署时。 解决思路 我开始思考,是否能够自动获取可执行文件的路径,并基于此拼接出一个绝对路径,这样就不需要依赖手动输入路径了。于是我尝试过多种方法,包括调用 Windows 自身的 API 等,但始终没有成功。 最终解决方案 经过不断尝试和调整,我终于找到了一个有效的方式,成功获取了可执行文件的路径并拼接成了正确的绝对路径。虽然过程中尝试了很多方法,有些方法最终都没有奏效,但最终我找到了一个合适的解决方案。 小结 路径问题经常在跨平台开发中出现,尤其是第三方库不支持相对路径时。通过获取可执行文件的路径并拼接成绝对路径,我避免了手动配置路径的问题。这次的经历让我更加深刻地理解了路径处理在不同环境下的重要性,尤其是在多平台支持的项目中。 int & fun() { return x; }
智能指针管理Person
关于智能指针和抽象基类的 new 总结 问题描述 在最初编写 Person 类时,我发现为了实现多态,personVec(用于统一管理 Person 对象)应该存储的是指针。然而,问题随之而来:如何管理这些指针的内存?因为我习惯于“谁申请,谁释放”的内存管理方式,而此处的指针是外部传进来的。 ![图片1](https://cdn-a.markji.com/files/6722fb9858683e065ff1cf18_hd.png?e=1737643978020&token=xX63b9jqTlDOcGmctt5K9254rV0LG8hS9BmDeFBy:MrTGKOeuNYNd13PvUj_Ad7hu74A=用 为了简化内存管理,我决定统一使用智能指针来管理 Person 对象。通过将裸指针隐藏在智能指针中,我确保了内存的自动管理,并避免了手动释放的繁琐与错误。 遇到的问题与思考 在实现过程中,我遇到了一些挑战,特别是在派生类的构造过程中。最初,我认为通过解引用智能指针就能得到 Person 类的对象,但实际上这个过程中出现了问题。原因在于,派生类并没有接受 Per ...
c++中关于嵌套定义的思考
关于嵌套定义的总结 问题描述 在 C++ 中,嵌套定义是指在一个头文件中包含另一个头文件,并且在不同的源文件(.cpp)中进行交叉引用。我在学习编译过程时发现,预处理阶段会将头文件 a.h 和 b.h 的内容都拷贝到源文件中。这一过程影响了编译的顺序和方式。 预处理和编译过程 预处理阶段 预处理阶段会将 a.h 和 b.h 文件的内容插入到源文件中。其实编译器本质上只处理 .cpp 文件,头文件仅仅是被复制粘贴进源文件。 编译过程 在编译 a.cpp 时,A 类的定义通过前向声明 B 类可以正常通过编译。由于 a.cpp 只是对指针进行操作,而指针的大小是固定的,因此它可以直接编译并使用,甚至在调用成员函数时也没有问题,因为成员函数本质上也是指针。 链接阶段 在链接阶段,编译器会将 a.o 和 b.o 文件链接到一起,最终完成整个程序的编译过程。 注意事项 尽管嵌套定义在一定情况下是可行的,但我建议尽量避免过度使用这种方式。使用指针可以解决类之间的依赖关系,但最好还是审视一下类之间的关系,确保设计合理。 小结 嵌套定义的本质是在预处理阶段将头文件内容拷贝进源文件, ...
薪酬管理系统--关于终端字符集问题
关于中文字符集问题的总结 问题描述 在解决了大部分问题并成功跑起程序后,我开始进行一些操作测试。然而,输入中文时却出现了乱码。经过一番排查,我发现程序中的字符集设置默认是 utf-8,但是 VSCode 的命令行终端似乎使用的是 gbk 编码,导致了中文乱码问题。 排查过程 检查 VSCode 设置 我首先查看了 VSCode 的 settings.json 文件,发现其中的设置都是空白的,且提示:“此设置无法应用于此工作区。它将在您直接打开包含的工作区文件夹时应用。” 修改设置文件 之后,我尝试切换到全局设置。在 VSCode 左上角选择 文件 -> 首选项 -> 设置,搜索 setting.json,并选择“在 setting.json 内部编辑”。我修改了一些编码相关的设置,但即便重启了 VSCode,中文乱码问题依然没有解决。 进一步分析 无论我在 VSCode 内部切换 gbk 或 utf-8 编码,都无法解决乱码问题。然后我发现可能是终端编码的问题。 通过查询,我得知 chcp 命令是用来切换命令行窗口的编码页,936 是 gbk 编码(简 ...
csv解析器编写
关于编写 CSV 解析器的总结 问题描述 我在开发过程中决定编写一个用于解析 CSV 文件的类,并且要求使用模板来实现。模板在 C++ 中的语法比较复杂,导致我在实现过程中遇到了很多报错,这让我一开始遇到很多问题。 遇到的问题与解决方案 模板语法问题 一开始我在模板的使用上遇到了很多问题,导致编译时出现了大量的报错。AI 给出的建议是使用模板特例化,但实际应用中,模板特例化适用于特定的 CSV 格式,这种方式并不通用,因此最终我决定将其转化为普通模板函数(非类成员模板函数)。 模板前置声明 即便我将模板转换为普通模板函数,依然遇到报错。后来我通过添加模板的前置声明解决了这个问题。 模板全特化 经过进一步的思考,我发现模板全特化本身就具有显式实例化的功能。这让我意识到,模板特例化就像是全局头文件引入全局变量之后产生的多重定义一样,存在一些设计上的问题。 遇到的其他问题 虚拟机无法连接到 GitHub 我遇到了虚拟机无法连接到 GitHub 的问题,这让我在获取资源时遇到了一些困扰。经过一番排查,发现虚拟机的网络设置可能存在问题,导致无法访问 GitHub。 ...
Linux知识第二弹
Linux 知识总结 加载和卸载 Linux 内核模块 使用 insmod 或 modprobe 来加载内核模块(WSL 不支持,输入后显示一个都没启用)。 配置静态 IP 先使用 ip link show 查看可用的网卡。 编辑 /etc/network/interfaces 并写入(替换为自己的网卡名称):123456auto eth0iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 8.8.4.4 执行 sudo systemctl restart networking 重启网络。 Linux 的常见目录 /bin:存放用户基本命令,如 ls、cp、mv 等。 /sbin:存放系统级命令,如 ifconfig 和 reboot。 /boot:存放启动程序和内核映像文件。 /etc:存放环境变量、系统配置等。 /lib:存放共享库和内核模块。 /mnt:作为文件系统的挂载点。 ...
第一篇博客
心得1 创建博客 1. 安装 Hexo 首先,安装 Hexo。 遇到的小问题 在安装过程中遇到了依赖问题,最终没有解决 npm 的依赖解析问 题。我初步怀疑是 npm 和 pnpm 之间的兼容性问题。 转战 WSL 后来决定直接在 WSL 上进行安装。首先,我发现 WSL 中没有安装 Node.js,于是执行以下命令来安装: 12sudo apt updatesudo apt upgrade -y 更新软件包索引,然后执行: 1curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - 添加 Node.js 仓库,然后安装 Node.js: 1sudo apt install -y nodejs 接着安装了 pnpm,但发现执行 pnpm add hexo-cli -g 时,提示我需要执行 pnpm setup。解决办法是执行: 1pnpm setup 执行完 pnpm setup 后,Hexo 就成功安装到环境变量中了。刷新环境变量后,问题解决。 初始化 Hexo 博客 123hexo initpnpm inst ...
avatar
🐟认真摸鱼中
小面包🥝
Future is now 🍭🍭🍭
前往小窝
公告栏
欢迎来到小面包的博客!🎉
最新通知:
  • 网站正在持续更新中...
  • 如有问题请留言交流
空降评论复制本文地址
随便逛逛昼夜切换关于博客美化设置切换全屏打印页面