第六天学习C++
文件传输服务器这是一个基于 C++ 实现的文件传输服务器,支持接收文本和二进制文件。服务器采用多线程设计,可以同时处理多个客户端连接。 功能特点 支持多客户端并发连接 支持文本和二进制文件传输 自动保持文件原始格式(扩展名) 使用时间戳确保文件名唯一 跨平台支持(Windows/Linux) 实时显示传输进度 自动创建存储目录 项目结构1234567891011.├── server/ # 服务器端代码│ ├── include/ # 头文件目录│ │ └── Server.h # 服务器类定义│ ├── src/ # 源文件目录│ │ ├── Server.cpp # 服务器实现│ │ └── main.cpp # 程序入口│ └── CMakeLists.txt # CMake 构建配置├── received_files/ # 接收的文件存储目录├── received_texts/ #...
概念辨析:面向过程与面向对象
面向过程和面向对象的解释为了更好地理解面向过程(Procedural Programming)和面向对象(Object-Oriented Programming, OOP),我们需要从它们的概念、特点以及两者的区别逐步进行分析。 什么是面向过程?面向过程是一种以任务为中心的编程范式,强调程序执行的步骤和流程。它将问题分解为一系列具体的步骤或函数,通过这些函数一步步完成任务。 特点 以函数为核心: 程序由多个函数组成,每个函数负责完成特定任务。 顺序执行: 程序按照自上而下的顺序依次执行代码。 数据与操作分离: 数据通常是全局变量或局部变量,函数直接对数据进行操作。 模块化设计: 通过将功能划分为不同模块(即函数),实现一定程度的代码复用。 效率高但维护性差: 面向过程编程更贴近底层硬件,性能较高,但当程序规模变大时,代码难以维护和扩展。 举例假设我们要实现一个简单的五子棋游戏,面向过程会将整个游戏拆解为以下步骤: 开始游戏; 黑子先走; 绘制画面; 判断输赢; 白子轮次; 重复以上步骤直到结束。 每个步骤可以用一个独立的函数来实现,比如...
第五天学习C++
加密日记本系统一个支持加密的个人日记管理系统,使用C++开发。 功能特点核心功能 ✅ 日记的创建与保存 ✅ 日记内容加密存储 ✅ 密码保护 ✅ 加密日记的读取与显示 ✅ HTML导出功能(可通过浏览器打印为PDF) 技术特性 基于异或算法的简单加密实现 面向对象的模块化设计 文件I/O操作 异常处理机制 使用方法写日记 运行程序,选择 ‘y’ 写日记 输入日记文件名(如:mydiary.txt) 设置加密密码 依次输入: 日记标题 日期 内容 系统自动加密保存 读日记 运行程序,选择 ‘n’ 然后 ‘y’ 读日记 输入要读取的日记文件名 输入对应的密码 系统自动解密并显示内容 项目结构diary_app/├── include/│ ├── DiaryEntry.h # 日记条目基类│ ├── EncryptedDiaryEntry.h # 加密日记类│ └── HTMLExporter.h # HTML导出功能├── src/│ ├── DiaryEntry.cpp│ ├──...
第四天学习C++
个人日记支持的功能: 是否创建新日记 命名格式为:名称 + 日期 添加标题 添加内容 是否查找日记 查找关键词:日期 代码/* DiaryApp.cpp */ #include <iostream> #include <fstream> #include <string> #include <stdexcept> #include <vector> #include <algorithm> #include <ctime> // 定义DiaryEntry抽象基类,包含虚函数save()和display() class DiaryEntry { public: std::string title; std::string content; std::string date; // 格式为 "YYYY-MM-DD" DiaryEntry(const std::string& title, const...
第三天学习C++
详细解释这段文件监控程序的实现方式: 这是一个使用 Windows API 实现的文件系统监控程序,主要功能是监控指定目录中的文件变化。让我们分几个主要部分来解析: 基础设置和初始化 程序使用全局变量 running 控制程序的运行状态 实现了 signalHandler 函数来处理 Ctrl+C 信号,确保程序可以优雅退出 设置控制台输出为 UTF-16 编码,以支持宽字符显示 文件操作类型处理DisplayFileAction 函数负责显示不同类型的文件操作: 文件创建 (FILE_ACTION_ADDED) 文件删除 (FILE_ACTION_REMOVED) 文件修改 (FILE_ACTION_MODIFIED) 文件重命名(新名称和旧名称) 目录监控的核心实现主要使用了以下 Windows API: CreateFileW:创建目录监控句柄 ReadDirectoryChangesW:异步监控目录变化 WaitForSingleObject:等待文件系统事件 异步监控机制 使用 OVERLAPPED...
第二天学习C++
优化代码第一天的代码优化交互体验 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152// first programme with c++ #include <iostream>#include <string>#include <filesystem>namespace fs = std::filesystem;void inputCheck(std::string dirPath, std::string newPrefix, std::string needSuffix) { if (dirPath.empty() newPrefix.empty() needSuffix.empty()) { std::cerr << "Error: " << "directory_path new_prefix...
每天学习一点C++
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152// first programme with c++ #include <iostream>#include <string>#include <filesystem>#include <windows.h>namespace fs = std::filesystem;void inputCheck(int argc, char* argv[] , char* envp[]) { if (argc != 4) { std::cerr << "Usage: " << argv[0] << " <directory_path> <new_prefix> <need_suffix>"...
Git常用命令及最佳实践
Git 常用命令速查表配置 设置用户名: 1git config --global user.name "Your Name" 设置邮箱: 1git config --global user.email "[email protected]" 查看当前配置: 1git config --list 初始化 初始化新的 Git 仓库: 1git init 克隆远程仓库: 1git clone [url] 基本操作 查看当前状态: 1git status 添加文件到暂存区: 1git add [file1] [file2] ... 提交暂存区到仓库: 1git commit -m "提交信息" 查看提交日志: 1git log 分支管理 列出所有分支: 1git branch 创建新分支: 1git branch [branch-name] 切换到指定分支: 1git checkout [branch-name] 创建并切换到新分支: 1git checkout -b...
第一篇博客
引言在当今数字化时代,拥有一个个人博客是展示自己、分享知识的绝佳方式。Hexo作为一个快速、简洁且高效的静态博客框架,结合GitHub Pages的免费托管服务,是搭建个人博客的理想选择。