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

突破编程_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中&#xff0c;流&#xff08; stream &#xff09;和缓冲区&#xff08; buffer &#xff09;是两个紧密相关的概念&#xff0c;它们在处理输入和输出时起着重要的作用。 流&#xff08; Stream &#xff09; 流是一种抽象的概念&#xff0c;用于表示数据的流动…...

UE的 HUD 类中的必备方法和属性

在屏幕上绘制的方法 1. DrawText() DrawText() 方法允许开发者在屏幕上渲染文本。参数包括文本内容、位置、颜色、字体、缩放等。 void DrawText(const FString& Text, const FLinearColor& TextColor, float ScreenX, float ScreenY, UFont* Font, float Scale 1.…...

单片机的认识

单片机的定义 先简单理解为&#xff1a; 在一片集成电路芯片上集成了微处理器&#xff08;CPU &#xff09;存储器&#xff08;ROM和RAM&#xff09;、I/O 接口电路&#xff0c;构成单芯片微型计算机&#xff0c;即为单片机。 把组成微型计算机的控制器、运算器、存储器、输…...

转发:udig安装 用来为geoserver上shp地图配置显示样式 颜色

下载udig&#xff0c;解压缩 这东东是基于eclipse的&#xff0c;需要Java JRE 把 JDK 1.8 里面的jre目录拷贝到 udig目录下面 udig下载、安装及汉化&#xff0c;简单生成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 -&#xff1a; 返回上一次所在目录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里面写了个项目&#xff0c;找了半天没办法用cmake调试&#xff0c;最后发现是cmake里面的set(CMAKE_BUILD_TYPE Release)导致的&#xff0c;都是release模式了当然不能调试了&#xff1b;改成Debug就行了 参考&#xff1a;https://stackoverflow.com/questions/7549672…...

Servlet JSP-Eclipse安装配置Maven插件

Maven 是一款比较常用的 Java 开发拓展包&#xff0c;它相当于一个全自动 jar 包管理器&#xff0c;会导入用户开发时需要使用的相应 jar 包。使用 Maven 开发 Java 程序&#xff0c;可以极大提升开发者的开发效率。下面我就跟大家介绍一下如何在 Eclipse 里安装和配置 Maven 插…...

os模块

os 模块是 Python 中用于与操作系统进行交互的标准库之一。它提供了许多函数来执行文件和目录操作&#xff0c;管理进程以及与操作系统交互的其他功能。 下面是一些 os 模块中常用的函数和功能&#xff1a; 文件和目录操作&#xff1a; os.getcwd(): 返回当前工作目录的路径。…...

【C语言进阶】深度剖析数据在内存中的存储--上

1. C语言中的数据类型的简单介绍 注&#xff1a;C99标准里面&#xff0c;定义了bool类型变量。这时&#xff0c;只要引入头文件stdbool.h &#xff0c;就能在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数组

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

BUGKU-WEB GET

题目描述 没有提示&#xff0c;就一个get&#xff0c;启动场景看看&#xff1a; 解题思路 显然是PHP语言解读分析代码吧写出你的payload 相关工具 略 解题步骤 进入场景分析代码 $what$_GET[what]; echo $what; if($whatflag) echo flag{****};前两句&#xff1a;使用get…...

蓝桥杯每日一题----唯一分解定理

唯一分解定理 1.内容 任何一个大于1的整数n都可以分解成若干个质数的连乘积&#xff0c;如果不计各个质数的顺序&#xff0c;那么这种分解是惟一的&#xff0c;即若n>1&#xff0c;则有 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)。 页面制作的标准语言&#xff1a;HTML。 超文本标记语言 HTML (HyperText Markup Language) 是一种制作万维网页面的标准语言&#xff0c;它消除了不同计算机之间信息交流的障碍&#xff0c…...

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

错误代码&#xff1a; #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 …...

社区经营的好处与优势:为何越来越多的人选择社区店?

社区店&#xff0c;这个曾经被视为小型、局限的商业模式&#xff0c;如今正逐渐崭露头角&#xff0c;成为众多创业者和消费者的首选。 特别是在鲜奶吧这样的细分市场中&#xff0c;社区店更是展现出了其独特的魅力和优势。作为一名拥有五年鲜奶吧经营经验的创业者&#xff0c;…...

C语言系列1——详解C语言:变量、常量与数据类型

目录 写在开始1. 变量与常量的概念1.1. 变量1.2. 常量1.3. 变量与常量的比较1.4. 选择变量还是常量 2. C语言中的基本数据类型2.1. 整型&#xff08;Integer Types&#xff09;2.2. 浮点型&#xff08;Floating-Point Types&#xff09;2.3. 字符型&#xff08;Character Type&…...

WordPress修改所有用户名并发送邮件通知的插件Easy Username Updater

前面跟大家介绍了『如何修改WordPress后台管理员用户名&#xff1f;推荐2种简单方法』一文&#xff0c;但是对于有很多用户的站长来说&#xff0c;操作有点复杂&#xff0c;而且无法发邮件通知对方&#xff0c;所以今天boke112百科向大家推荐一款可以直接在WordPress后台修改所…...

C语言中的数据类型-强转

强制类型转换 概念&#xff1a;将某种类型的数据转化我们需要的数据类型&#xff0c;注意强制类型转化是临时强转&#xff0c;不会改变本身的数据类型。 强转又分为显式强转和隐式转化 显示强转是按照我们的要求进行转化 格式&#xff1a;(需要转化数据类型)变量名 #inclu…...

大数据可视化BI分析工具Apache Superset结合内网穿透实现远程访问

文章目录 前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问3. 设置固定连接公网地址 前言 Superset是一款由中国知名科技公司开源的“现代化的…...

C# 线程与线程池的使用方法、注意事项

在C#中&#xff0c;线程和线程池是两种用于实现多线程编程的方式。线程用于执行并发任务&#xff0c;而线程池提供了一种更有效率的方式来管理和复用线程资源。 C# 线程&#xff08;System.Threading.Thread&#xff09; 创建和启动线程&#xff1a; Thread thread new Thre…...

2024年华为OD机试真题-按身高和体重排队-Python-OD统一考试(C卷)

题目描述: :某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持原有的编号顺序关系。请输出排列后的学生编号。 输入描述:两个序列,每个序列由n个正整数组成(0 < n …...

openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O

文章目录 openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O218.1 查看I/O状况218.2 性能参数分析 openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O 获取openGauss节点的CPU、内存、I/O和网络资源使用情况&#xf…...

去除vue自带的边距

使用vue时发现总有去不掉的外边距&#xff0c;在index.vue里面怎样设置样式都不管用 查阅资料后发现要在vue项目自带的index.html文件内添加下面的样式代码才行 <style>*{margin: 0;padding: 0;}body,html{margin: 0;padding: 0;} </style>...

ElasticSearch级查询Query DSL上

目录 ES高级查询Query DSL match_all 返回源数据_source 返回指定条数size 分页查询from&size 指定字段排序sort 术语级别查询 Term query术语查询 Terms Query多术语查询 exists query ids query range query范围查询 prefix query前缀查询 wildcard query通…...

120.乐理基础-五线谱-五线谱的多声部与指法问题

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;119.乐理基础-五线谱-五线谱的标记-CSDN博客 五线谱多声部与简谱的多声部一样&#xff1a;简谱的多声部 五线谱多声部例子&#xff1a;钢琴谱 另一个例子&#xff1a;在纵向上有多个音符 然后放大之后&#xff0c…...

YOLOv5独家改进:上采样算子 | 超轻量高效动态上采样DySample,效果秒杀CAFFE,助力小目标检测

💡💡💡本文独家改进:一种超轻量高效动态上采样DySample, 具有更少的参数、FLOPs,效果秒杀CAFFE和YOLOv5网络中的nn.Upsample 💡💡💡在多个数据集下验证能够涨点,尤其在小目标检测领域涨点显著。 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/cate…...

洛谷 P1102 A-B 数对 (Java)

洛谷 P1102 A-B 数对 (Java) 传送门&#xff1a;P1102 A-B 数对 题目&#xff1a; A-B 数对 题目背景 出题是一件痛苦的事情&#xff01; 相同的题目看多了也会有审美疲劳&#xff0c;于是我舍弃了大家所熟悉的 AB Problem&#xff0c;改用 A-B 了哈哈&#xff01; 题目描…...

情人节到了,写一份爱心程序(python)

前言 情人节到了&#xff0c;写一份爱心代码给喜欢的人呀 公式 首先我们介绍下爱心的公式的参数方程&#xff1a; x 16 s i n 3 ( t ) x 16sin^3(t) x16sin3(t) y 13 c o s ( t ) − 5 c o s ( 2 t ) − 2 c o s ( 3 t ) − c o s ( 4 t ) y 13cos(t) - 5cos(2t) - 2co…...

Java图形化界面编程—— 基本组件和对话框 笔记

2.5 AWT中常用组件 2.5.1 基本组件 组件名功能ButtonButtonCanvas用于绘图的画布Checkbox复选框组件&#xff08;也可当做单选框组件使用&#xff09;CheckboxGroup选项组&#xff0c;用于将多个Checkbox 组件组合成一组&#xff0c; 一组 Checkbox 组件将只有一个可以 被选中…...

使用Docker,拉取Nginx镜像,创建并运行Nginx容器

查看DockerHub&#xff0c;拉取Nginx镜像&#xff0c;创建并运行Nginx容器。 在DockerHub中搜索Ningx镜像&#xff0c;查看镜像名称 拉取Nginx镜像 [rootservice ~]# systemctl start docker [rootservice ~]# mkdir -p /etc/docker [rootservice ~]# tee /etc/docker/daemo…...

InstantBox:开箱即用的临时 Linux 环境

在云计算和虚拟化技术日益成熟的今天&#xff0c;我们有时需要一个快速、简单、临时的 Linux 环境来进行各种任务。这就是 InstantBox 的用武之地。 什么是 InstantBox&#xff1f; InstantBox 是一个开源项目&#xff0c;它可以快速启动临时的 Linux 系统&#xff0c;并提供…...

【面试】国家公务员考试复试,面试内容准备方向(非技术面试考察点)

【面试】国家公务员考试复试&#xff0c;面试内容准备方向&#xff08;非技术面试考察点&#xff09; 说明&#xff1a; csdn无法发部分考试相关例题&#xff08;提示涉z&#xff09;&#xff0c;所以本文主要还是针对评分标准和仪表等相关因素。 文章目录 1、面试试卷与评分1.…...

点餐|外卖订餐小程序|基于微信小程序的外卖订餐系统设计与实现(源码+数据库+文档)

点餐|外卖订餐小程序目录 目录 基于微信小程序的外卖订餐系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户微信端功能模块 2、管理员服务端功能模块 3、商家务端功能模块 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设…...

使用Cargo创建、编译与运行Rust项目

在 Rust 开发中&#xff0c;Cargo 是一个非常重要的工具&#xff0c;它负责项目的构建、管理和依赖管理。以下是如何使用 Cargo 创建、编译和运行 Rust 项目的详细步骤。 1. 创建新项目 首先确保你已经在计算机上安装了 Rust 和 Cargo。然后&#xff0c;在命令行中输入以下命…...

Js中toFixed(2)精度问题的原因及解决办法

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。例如将数据Num保留2位小数&#xff0c;则表示为&#xff1a;toFixed(Num)&#xff1b;但是其四舍五入的规则与数学中的规则不同&#xff0c;使用的是银行家舍入规则&#xff0c;银行家舍入&#xff1a;所谓银行家舍入…...

【医学大模型 知识增强】SMedBERT:结构化语义知识 + 医学大模型 = 显著提升大模型医学文本挖掘性能

SMedBERT&#xff1a;结构化语义知识 医学大模型 显著提升医学文本挖掘任务性能 名词解释结构化语义知识预训练语言模型医学文本挖掘任务 提出背景具体步骤提及-邻居混合注意力机制实体嵌入增强实体描述增强三元组句子增强 提及-邻居上下文建模域内词汇权重学习领域自监督任务…...

Python爬虫:安全与会话管理

源码分享 ​​https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tabBB08J2​​ 在进行网站数据抓取时&#xff0c;会话管理是保持与目标网站通信连续性的一种机制。这对于模拟登录、保持用户状态、维护cookie等场景至关重要。同时&#xff0c;安全性也是我们不可忽视的一个方面…...

[Python进阶] 识别验证码

11.3 识别验证码 我们再开发某些项目的时候&#xff0c;如果遇到要登录某些网页&#xff0c;那么会经常遇到输入验证码的情况&#xff0c;而每次人工输入验证码的话&#xff0c;比较浪费时间。于是&#xff0c;可以通过调用某些接口进行识别。 11.3.1 调用百度文字识别接口 …...

华为问界M9:全方位自动驾驶技术解决方案

华为问界M9的自动驾驶技术采用了多种方法来提高驾驶的便利性和安全性。以下是一些关键技术&#xff1a; 智能感知系统&#xff1a;问界M9配备了先进的传感器&#xff0c;包括高清摄像头、毫米波雷达、超声波雷达等&#xff0c;这些传感器可以实时监测车辆周围的环境&#xff0…...

Java 与 JavaScript 的区别与联系

Java 和 JavaScript 两种编程语言在软件开发中扮演着重要的角色。尽管它们都以“Java”命名&#xff0c;但实际上它们是完全不同的语言&#xff0c;各有其独特的特点和用途。本文将深入探讨 Java 和 JavaScript 的区别与联系&#xff0c;帮助大家更好地理解它们在编程世界中的作…...

React18原理: 时间分片技术选择

渲染1w个节点的不同方式 1 &#xff09;案例1&#xff1a;一次渲染1w个节点 <div idroot><div><script type"text/javascript">function randomHexColor() {return "#" ("0000" (Math.random() * 0x1000000 << 0).toS…...

【QT+QGIS跨平台编译】之三十三:【SpatiaLite+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、SpatiaLite介绍二、文件下载三、文件分析四、pro文件五、编译实践一、SpatiaLite介绍 SpatiaLite是一个开源的空间数据库库,它是在SQLite关系数据库管理系统上扩展而来的。SpatiaLite提供了对地理空间数据的存储、查询和分析功能,使得开发人员可以在应用程序中…...

【JavaEE】_CSS选择器

目录 1. 基本语法格式 2. 引入方式 2.1 内部样式 2.2 内联样式 2.3 外部样式 3. 基础选择器 3.1 标签选择器 3.2 类选择器 3.3 ID选择器 4. 复合选择器 4.1 后代选择器 4.2 子选择器 4.3 并集选择器 4.4 伪类选择器 1. 基本语法格式 选择器若干属性声明 2. 引入…...

Flaurm实现中文搜索

目录 摘要需求本文涉及环境情况如下解决方案最终效果文章其他链接&#xff1a; 摘要 Flarum本身对中文支持并不理想&#xff0c;但随着版本更新&#xff0c;逐渐加强了对中文的优化。然而在1.8.5版本&#xff0c;却还是不支持中文搜索网站文章内容。作者在检索了全网教程&#…...