突破编程_C++_基础教程(输入、输出与文件)
1 流和缓冲区
C++中,流( stream )和缓冲区( buffer )是两个紧密相关的概念,它们在处理输入和输出时起着重要的作用。
流( Stream )
流是一种抽象的概念,用于表示数据的流动。在 C++ 中,流是一个类对象,它封装了与输入/输出设备(如键盘、显示器、文件等)的交互。C++标准库提供了多种流类,如 std::cin (标准输入流,通常用于从键盘读取数据)、 std::cout (标准输出流,通常用于向显示器输出数据)以及 std::fstream (文件流,用于文件的读写)。
缓冲区( Buffer )
缓冲区是一个用于临时存储数据的内存区域。当使用流进行输入或输出时,数据通常不会直接发送到设备或从设备读取,而是首先存储在缓冲区中。缓冲区的使用可以提高输入/输出的效率,因为它允许程序以块的形式处理数据,而不是一个字符一个字符地处理。
对于输出流,程序首先将数据写入缓冲区,然后当缓冲区满或程序显式地刷新缓冲区时,数据才会被发送到输出设备。对于输入流,程序从缓冲区读取数据,当缓冲区为空时,流会从输入设备读取更多的数据填充缓冲区。
缓冲区的类型
C++中的流缓冲区主要有三种类型:
(1)全缓冲:当缓冲区满时,缓冲区的数据才会被发送。这种方式适用于大量数据的输入/输出。
(2)行缓冲:当遇到换行符时,缓冲区的数据才会被发送。这种方式通常用于终端设备,如键盘和显示器。
(3)不带缓冲:数据立即被发送,不经过缓冲区。这种方式通常用于错误报告和紧急情况。
iostream 文件
C++ 中的 iostream 文件中包含了一些用来实现管理流和缓冲区的类。iostream 中的 io 是 “input/output” 的缩写,而 stream 表示流,即数据流动的通道。
在 iostream 库中,主要包含了以下几个组件:
(1)缓冲区( streambuf 类): streambuf 类为流提供了一个缓冲区,这个缓冲区用于暂存输入/输出的数据,从而允许更高效的I/O操作。streambuf 是一个抽象基类,不能直接实例化。它的实现(如 filebuf 、 stringbuf 等)会作为其他流类(如 ifstream 、 ofstream 、 istringstream 、 ostringstream 等)的成员被使用。
(2)输入流( istream 类):用于从输入设备(如键盘)读取数据。
(3)输出流( ostream 类):用于向输出设备(如显示器)写入数据。
(4)输入输出流 ( iostream 类):从 istream 和 ostream 继承了输入和输出的方法(多重继承),既可以读取数据也可以写入数据。
(5)流对象:如 std::cin(标准输入流,通常用于从键盘读取数据)、std::cout(标准输出流,通常用于向显示器输出数据)、std::cerr(用于输出错误消息)和 std::clog(用于输出日志消息)。
(6)操纵器( manipulators):这些是用来控制流的状态或格式的函数,例如 std::endl、std::flush、std::setprecision 等。
(7)流提取运算符( >> ):用于从输入流中读取数据。
(8)流插入运算符( << ):用于向输出流中写入数据。
重定向
可以使用 C 标准库函数 freopen 函数来重定向标准输入流 std::cin 或标准输出流 std::cout 到文件或其他流。当重定向一个流时,实际上是改变了流与底层设备(如文件或控制台)的关联。例如,可以将 std::cin 重定向到一个文件,这样当从 std::cin 读取时,实际上是从文件中读取数据。如下为样例代码:
#include <iostream>
#include <fstream> using namespace std;int main() {// 重定向 std::cin 到一个输入文件:在这个文件中输入 1 ,并保存freopen("input.txt", "r", stdin);// 重定向 std::cout 到一个输出文件 freopen("output.txt", "w", stdout);int val;cout << "get a number from input.txt : "; // cout 写入到 output.txt cin >> val; // 实际上从 input.txt 读取 cout << val << endl; // cout 写入到 output.txt // 关闭重定向 //freopen(NULL, "r", stdin); // 重置 std::cin 到标准输入 //freopen(NULL, "w", stdout); // 重置 std::cout 到标准输出 return 0;
}
执行完这段代码后,output.txt 被存入字符串:“get a number from input.txt : 1” 。
在上面代码中,freopen 函数将 std::cin 重定向到名为 input.txt 的文件用于读取,将 std::cout 重定向到名为 output.txt 的文件用于写入。因此,当从 std::cin 读取时,实际上是在读取 input.txt 文件的内容,而当向 std::cout 写入时,数据会被写入到 output.txt 文件中。
注意,重定向流可能会影响程序的其他部分,因为它改变了流的默认行为。因此,在重定向流之后,务必小心处理输入和输出,以避免意外的行为或错误。
另外,如果想要在执行完一些重定向操作之后恢复流的原始状态,可以使用 freopen 函数将流重新关联到其原始设备(比如将第一个参数设置为 NULL 即可将输入与输出定向为标准输入与输出)。
2 输出
输出流( output stream )是 I/O 流库中的一个关键概念,它允许程序将数据发送到特定的目的地,如控制台、文件或其他类型的设备。C++ 标准库中的 ostream 类是输出流的基础。
2.1 std::cout 的基本使用
std::cout 是 C++ 中最常用的输出流对象,它通常与控制台(或终端)相关联,用于向用户显示信息。可以使用插入运算符 << 向 std::cout 发送数据,该运算符将数据发送到输出流中。
。如下为样例代码:
#include <iostream>
#include <string> using namespace std;int main() {int val1 = 1;double val2 = 1.21;char val3 = 'a';string val4 = "hello";std::cout << "int val1 = " << val1 << std::endl;std::cout << "double val2 = " << val2 << std::endl;std::cout << "char val3 = " << val3 << std::endl;std::cout << "string val4 = " << val4 << std::endl;return 0;
}
上面代码的输出为:
int val1 = 1
double val2 = 1.21
char val3 = a
string val4 = hello
除了 std::cout ,C++ 标准库还提供了其他一些输出流对象,例如:
std::cerr:用于输出错误消息。与 std::cout 不同的是,std::cerr 通常不会被缓冲,因此它用于需要立即显示的错误或诊断信息。
std::clog:用于输出日志消息。与 std::cerr 类似,但它通常会被缓冲。
std::wcout:与 std::cout 类似,但用于输出宽字符(wchar_t 类型)。
std::wcerr 和 std::wclog:与 std::cerr 和 std::clog 类似,但用于输出宽字符。
此外,还可以创建自定义的输出流,通过继承 std::ostream 类并重载插入运算符来实现。这允许控制数据如何被发送到特定的目的地,例如写入到特定的文件或进行特定的格式化处理。
在处理输出流时,还可以使用操纵器( manipulators )来更改流的状态或格式。例如,std::endl 操纵器不仅插入一个新行,还刷新输出缓冲区,确保所有数据都被发送到其目标。 std::flush 操纵器也可以用来刷新输出缓冲区。
2.2 std::cout 的格式化
std::cout 可以使用各种格式化标志和操纵器(manipulators)来控制输出的格式。以下是一些常见的格式化选项:
(1)整数输出
(1.1)十进制
int val = 12;
std::cout << val << std::endl;// 输出 12
(1.2)十六进制
int val = 12;
std::cout << std::hex << val << std::endl;// 输出 c
(1.3)八进制
int val = 12;
std::cout << std::oct << val << std::endl;// 输出 14
(1.4)二进制
std::cout 默认不直接支持二进制数据的输出。如果想要输出一个整数的二进制表示,则要手动将整数转换为二进制字符串,然后再使用 std::cout 输出这个字符串。
#include <iostream>
#include <bitset> void printBinary(int val) {// std::bitset 可以将整数转换为二进制字符串 std::bitset<32> binaryVal(val); // 4 个字节,共 32 位 // 输出二进制字符串 std::cout << binaryVal << std::endl;
}int main() {int val = 12;printBinary(val); // 输出 num 的二进制表示 return 0;
}
上面代码输出为:
00000000000000000000000000001100
(2)浮点数输出
(2.1)固定点表示法
默认情况下,std::cout 使用科学记数法来输出非常大或非常小的浮点数。使用 std::fixed 使浮点数总是以固定的小数位数显示。
double pi = 3.141592653589793;// 不使用 std::fixed,默认输出可能使用科学记数法
std::cout << "default output: " << pi << std::endl;// 使用 std::fixed 以小数位数显示
std::cout << std::fixed << "fixed output: " << pi << std::endl;
(2.2)固定点表示法
默认情况下,std::cout 使用科学记数法来输出非常大或非常小的浮点数。使用 std::fixed 使浮点数总是以固定的小数位数显示。
double pi = 3.141592653589793;
std::cout << std::scientific << pi << std::endl;// 输出 3.141593e+00
(2.2)设置精度
设置精度使用接口 std::setprecision ,注意该接口需要引用头文件: #include
double pi = 3.141592653589793;
std::cout << std::setprecision(3) << pi << std::endl;// 输出 3.14
(3)字符串输出
std::cout << "Hello, World!" << std::endl;// 输出 Hello, World!std::string str = "Hello, World!";
std::cout << str << std::endl;// 输出 Hello, World!
(4)布尔值输出
布尔值默认以整数形式显示( true为 1 , false 为 0 )。可以通过 std::boolalpha 来改变这一点,使 true 和 false 以文字形式显示。
bool flag = true;
std::cout << flag << std::endl; // 输出 1std::cout << std::boolalpha << flag << std::endl;// 输出 true
(5)设置填充和宽度
使用 std::setw 操纵器可以设置下一个输出字段的宽度。如果输出数据小于这个宽度,std::cout 会在数据前面或后面填充空格,直到达到指定的宽度。此外还可以使用 std::setfill 操纵器来设置填充字符。
int val = 123;
std::cout << std::setw(5) << std::setfill('0') << val << std::endl; // 输出 00123
(6)设置左对齐和右对齐
使用std::left或std::right来控制输出的对齐方式。
#include <iostream>
#include <iomanip>int main() {std::cout << std::left << std::setw(10) << "Hello" << std::endl; // 左对齐 std::cout << std::right << std::setw(10) << "Hello" << std::endl; // 右对齐return 0;
}
上面代码输出为:
HelloHello
2.3 多线程中应用 std::cout
C++ 中,std::cout 并不是线程安全的。这意味着如果从多个线程同时写入 std::cout,可能会遇到数据竞争(data race)的问题,这会导致未定义的行为(程序可能会崩溃或者无响应)。
可以使用互斥锁(如 std::mutex )来保护对 std::cout 的访问。每个线程在写入 std::cout 之前必须获取锁,并在写入完成后释放锁。这样可以确保每次只有一个线程可以访问 std::cout。如下为样例代码:
#include <iostream>
#include <thread>
#include <mutex> std::mutex g_coutMutex; // 全局互斥锁 void safePrint(const std::string& message) {std::lock_guard<std::mutex> lock(g_coutMutex); // std::lock_guard是一个方便的RAII包装器,它会在构造时锁定互斥锁,并在析构时解锁。这使得代码更加简洁,并减少了出错的可能性。std::cout << message << std::endl;
}int main() {std::thread t1(safePrint, "Hello from thread 1");std::thread t2(safePrint, "Hello from thread 2");t1.join();t2.join();return 0;
}
2.4 printf
printf 是 C 语言标准库中的一个函数,用于格式化输出到标准输出流(通常是终端或控制台窗口)。它接受一个格式字符串和与之对应的值作为参数,然后根据格式字符串中的说明符将值打印出来。 printf 函数是线程安全的,所以在 C++ 的多线程开发中,比 std::cout 用的更方便一些。
** printf 常用的格式说明符及其含义:**
%d 或 %i:带符号十进制整数。
%u:无符号十进制整数。
%f:浮点数(默认保留小数点后六位)。
%c:字符。
%s:字符串。
%p:指针地址。
%x 或 %X:无符号十六进制整数(小写或大写)。
%o:无符号八进制整数。
%%:输出一个 % 字符。
除了转换说明符,格式字符串还可以包含以下可选的标志、宽度、精度和长度修饰符:
标志:
-:左对齐输出。
+:在正数前面显示符号。
(空格):在正数前面显示空格。
#:对于 f、e、E、g、G,输出小数点;对于 o,输出前导零;对于 x 或 X,输出 0x 或 0X 前缀。
0:用零填充空白处。
精度:
对于整数(d、i、o、u、x、X),指定最小数字个数。
对于浮点数(e、E、f、g、G),指定小数点后的数字个数。
对于字符串(s),指定最大字符数。
长度修饰符:
h:指定短整型(short)或单字符(char)。
l:指定长整型(long)。
ll:指定长长整型(long long)。
L:指定宽字符或宽字符串。
j:指定 intmax_t 类型。
z:指定 size_t 类型。
t:指定 ptrdiff_t 类型。
3 输入
C++ 的输入流(Input Stream)通常指的是从某个数据源(如键盘、文件等)读取数据的流。C++标准库中的 头文件提供了基本的输入流功能,主要通过 std::istream 类及其派生类 std::cin 来实现。
std::cin是预定义的对象,代表从标准输入(通常是键盘)接收数据的输入流。可以使用 >> 运算符从std::cin读取数据,这些数据会被存储在相应的变量中。
如下为样例代码(使用 std::cin 从键盘读取数据):
#include <iostream> int main() { int val; std::cout << "input an integer : "; std::cin >> val; // 从标准输入读取整数并存储在变量 val 中 std::cout << "the input integer is: " << val << std::endl; return 0;
}
4 文件操作
C++ 的文件操作主要涉及文件的打开、关闭、读取和写入。C++标准库中的 头文件提供了用于文件操作的类,其中 std::ifstream 用于读取文件, std::ofstream 用于写入文件,而 std::fstream 则既可以读取也可以写入文件。
打开文件
在读取或写入文件之前,需要使用相应的文件流对象打开一个文件。可以通过提供文件名来构造一个文件流对象,该对象会在构造时尝试打开文件。如下为样例代码:
#include <fstream>
#include <iostream> int main() {// 创建一个用于写入的文件流对象 std::ofstream outfile("test.txt");// 检查文件是否成功打开 if (!outfile) {std::cerr << "failed to open the file" << std::endl;return 1;}// 写入一些数据到文件 outfile << "hello" << std::endl;// 关闭文件 outfile.close();return 0;
}
读取文件
使用 std::ifstream 可以读取文件的内容。可以使用流提取运算符 >> 或 getline 函数来读取数据。如下为样例代码:
#include <fstream>
#include <iostream>
#include <string> int main() {// 创建一个用于读取的文件流对象 std::ifstream infile("test.txt");// 检查文件是否成功打开 if (!infile) {std::cerr << "failed to open the file" << std::endl;return 1;}// 读取文件内容 std::string line;while (std::getline(infile, line)) {std::cout << line << std::endl;}// 关闭文件 infile.close();return 0;
}
快速读取大文件
如果需要快速读取一个大文件,则要避免逐行读取或者逐字符读取带来的额外开销。一种快速读取文件的方法是使用文件流的 read 成员函数,它可以一次读取多个字符,这样可以减少系统调用的次数,从而提高读取效率。如下为样例代码:
#include <fstream>
#include <iostream>
#include <vector> int main() {// 打开文件 std::ifstream file("large_file.bin", std::ios::binary);// 检查文件是否成功打开 if (!file){std::cerr << "failed to open the file" << std::endl;return 1;}// 获取文件大小 file.seekg(0, std::ios::end);std::streamsize fileSize = file.tellg();file.seekg(0, std::ios::beg);// 分配足够的内存来存储文件内容 std::vector<char> buffer(fileSize);// 读取文件内容到buffer if (!file.read(buffer.data(), fileSize)) {std::cerr << "读取文件失败" << std::endl;return 1;}// 在这里处理文件内容,例如可以将其输出到标准输出 std::cout.write(buffer.data(), fileSize);// 关闭文件 file.close();return 0;
}
读写文件
下面是一个同时包含读取和写入操作的示例:
#include <fstream>
#include <iostream>
#include <string> int main() {// 写入文件 std::ofstream outfile("test.txt");if (!outfile){std::cerr << "failed to open the file" << std::endl;return 1;}outfile << "first line" << std::endl; //写入第一行outfile << "second line" << std::endl; //写入第二行outfile.close();// 读取文件 std::ifstream infile("test.txt");if (!infile) {std::cerr << "failed to open the file" << std::endl;return 1;}std::string line;while (std::getline(infile, line)){std::cout << line << std::endl;}infile.close();return 0;
}
文件流的状态
可以使用文件流对象的 is_open() 成员函数来检查文件是否已成功打开。此外,还可以使用 fail() , eof() , 和 bad() 等成员函数来检查流的状态。
文件流的其他操作
clear(): 重置流的状态标志。
seekg() 和 seekp(): 移动文件的读写指针。
tellg() 和 tellp(): 返回文件的读写指针当前位置。
flush(): 清空输出缓冲区,确保所有数据都被写入文件。
相关文章:
突破编程_C++_基础教程(输入、输出与文件)
1 流和缓冲区 C中,流( stream )和缓冲区( buffer )是两个紧密相关的概念,它们在处理输入和输出时起着重要的作用。 流( Stream ) 流是一种抽象的概念,用于表示数据的流动…...
UE的 HUD 类中的必备方法和属性
在屏幕上绘制的方法 1. DrawText() DrawText() 方法允许开发者在屏幕上渲染文本。参数包括文本内容、位置、颜色、字体、缩放等。 void DrawText(const FString& Text, const FLinearColor& TextColor, float ScreenX, float ScreenY, UFont* Font, float Scale 1.…...

单片机的认识
单片机的定义 先简单理解为: 在一片集成电路芯片上集成了微处理器(CPU )存储器(ROM和RAM)、I/O 接口电路,构成单芯片微型计算机,即为单片机。 把组成微型计算机的控制器、运算器、存储器、输…...
转发:udig安装 用来为geoserver上shp地图配置显示样式 颜色
下载udig,解压缩 这东东是基于eclipse的,需要Java JRE 把 JDK 1.8 里面的jre目录拷贝到 udig目录下面 udig下载、安装及汉化,简单生成geoserver图层样式sld-CSDN博客...

Linux--常用命令(详解)
详细目录 一、终端命令格式二、显示文件列表命令-ls2.1作用2.2格式2.3 ls常用选项2.3.1 ls -a2.3.2 ls -l(等价于 ll)2.3.2 ls -h 三、相对路径与绝对路径3.1绝对路径3.2相对路径 四、目录操作命令 -cd4.1作用4.2格式4.3案例4.3.1 cd -: 返回上一次所在目录4.3.2 cd…...
SouthLeetCode-打卡24年02月第1周
SouthLeetCode-打卡24年02月第1周 // Date : 2024/02/01 ~ 2024/02/04 034.合并两个有序链表 (1) 题目描述 034#LeetCode.21.#北岸计划2024/02/01 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给定的两个链表的所有节点组成的。 (2) 题解代码 cla…...
vscode的cmake工具小三角符号旁边没有目标的解决方法
vscode里面写了个项目,找了半天没办法用cmake调试,最后发现是cmake里面的set(CMAKE_BUILD_TYPE Release)导致的,都是release模式了当然不能调试了;改成Debug就行了 参考:https://stackoverflow.com/questions/7549672…...

Servlet JSP-Eclipse安装配置Maven插件
Maven 是一款比较常用的 Java 开发拓展包,它相当于一个全自动 jar 包管理器,会导入用户开发时需要使用的相应 jar 包。使用 Maven 开发 Java 程序,可以极大提升开发者的开发效率。下面我就跟大家介绍一下如何在 Eclipse 里安装和配置 Maven 插…...
os模块
os 模块是 Python 中用于与操作系统进行交互的标准库之一。它提供了许多函数来执行文件和目录操作,管理进程以及与操作系统交互的其他功能。 下面是一些 os 模块中常用的函数和功能: 文件和目录操作: os.getcwd(): 返回当前工作目录的路径。…...

【C语言进阶】深度剖析数据在内存中的存储--上
1. C语言中的数据类型的简单介绍 注:C99标准里面,定义了bool类型变量。这时,只要引入头文件stdbool.h ,就能在C语言里面正常使用bool类型。 1.1 在C语言中各类型所占内存空间的大小如下 char类型的数据类型大小为1字节即8比特位。…...
【doghead】VS2022 win11 安装配置WSL2 以编译linux端的cmake项目并运行2
【bifrost】VS2022 win11 安装配置WSL2 以编译linux端的cmake项目并运行1 完成了WSL2的安装。13900K 的电脑安装了ubuntu22.04构建中出现了一些问题,fix了。发现libuv 似乎不识别,认为是libuv.so ,无法让worker识别到uv 从而没构建。干脆单独构建好了,官方的脚本如此:而且…...

【教程】C++语言基础学习笔记(七)——Array数组
写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【C语言基础学习】系列文章 第一章 《项目与程序结构》 第二章 《数据类型》 第三章 《运算符》 第四章 《流程控制》 第五章…...

BUGKU-WEB GET
题目描述 没有提示,就一个get,启动场景看看: 解题思路 显然是PHP语言解读分析代码吧写出你的payload 相关工具 略 解题步骤 进入场景分析代码 $what$_GET[what]; echo $what; if($whatflag) echo flag{****};前两句:使用get…...
蓝桥杯每日一题----唯一分解定理
唯一分解定理 1.内容 任何一个大于1的整数n都可以分解成若干个质数的连乘积,如果不计各个质数的顺序,那么这种分解是惟一的,即若n>1,则有 n ∏ p i j n\prod{p^j_i} n∏pij 这里的 p i p_i pi是质数。可以进行简单证明…...

openssl3.2 - osslsigncode工程的学习
文章目录 openssl3.2 - osslsigncode工程的学习概述笔记工程库地址工程的编译osslsigncodeM工程文件列表osslsigncodeM工程搭建细节原始工程实现的改动自己封装的包含openssl和curl的实现osslsigncodeM工程命令行的用法备注 - VS2019调试环境备注 - 如果要单步openssl的API学学…...

HTML 超文本标记语言
超文本标记语言 HTML 在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。 页面制作的标准语言:HTML。 超文本标记语言 HTML (HyperText Markup Language) 是一种制作万维网页面的标准语言,它消除了不同计算机之间信息交流的障碍,…...
sklearn:机器学习 分类特征编码category_encoders
文章目录 category_encoders简介OrdinalEncoder 序列编码OneHotEncoder 独热编码TargetEncoder 目标编码Binary Encoder 二进制编码BaseNEncoder 贝叶斯编码LeaveOneOutEncoder 留一法HashingEncoder 哈希编码CatBoostEncoder catboost目标编码CountEncoder 频率编码WOEEncoder…...
C++错误[错误] call of overloaded ‘min(int, int)‘ is ambiguous
错误代码: #include<iostream> using namespace std;template <class T> T min(T x,T y){if(x<y){return x;}else return y; }int main(){int n12,n210;double d11.5,d25.6;cout<<min(n1,n2)<<endl;cout<<min(d1,d2)<<endl…...
2024全栈元年-thinkphp-数据操作
thinkphp 数据相关操作 1.单数据查询 1、单数据查询 ,Db::table(‘tp_stu’) 必须加前缀 2、如果只是查询符合条件的使用where find,如果没有符合条件的返回null 3、使用 findOrFail 没有数据会抛出异常 4、使用 findOrEmpty 没有数据会返回【】 5、得到最近一个原生SQL …...

HTML世界之第二重天
目录 一、HTML 格式化 1.HTML 文本格式化标签 2.HTML "计算机输出" 标签 3.HTML 引文, 引用, 及标签定义 二、HTML 链接 1.HTML 链接 2.HTML 超链接 3.HTML 链接语法 4.文本链接 5.图像链接 6.锚点链接 7.下载链接 8.Target 属性 9.Id 属性 三、HTML …...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...

【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...