C++入门基础
前言
本篇博客讲解一下c++得入门基础
💓 个人主页:普通young man-CSDN博客
⏩ 文章专栏:C++_普通young man的博客-CSDN博客
⏩ 本人giee:普通小青年 (pu-tong-young-man) - Gitee.com
若有问题 评论区见📝
🎉欢迎大家点赞👍收藏⭐文章
目录
C++发展历史
起源与初期阶段(1979-1985)
标准化与C++98(1990s)
技术进步与C++11(2011年)
进一步的现代化(C++14至C++20)
当前与未来
c++版本
c++基础
命名空间
定义
::操作符被称为作用域解析操作符
命名空间的嵌套定义:
多文件在一个命名空间
命名空间的展开
C++的输入输出
输入输出流(I/O Stream)
缺省函数
定义
代码举例
重载函数
引用
引用的概念和意义
引用的特性
引用的使用
C++发展历史
C++是一种强大的多范式编程语言,它的历史可以追溯到1979年,由丹麦计算机科学家Bjarne Stroustrup在贝尔实验室开始研发。以下是C++发展的主要里程碑:
起源与初期阶段(1979-1985)
1979年:Bjarne Stroustrup开始基于C语言开发一种新的语言,最初称为“C with Classes”,目的是结合C语言的高效性和面向对象编程的特性。
1983年:语言正式更名为C++,名称由Rick Mascitti建议,灵感来源于C语言中的“++”运算符,象征着对C语言的增强。此时,C++已经成为一种独立的语言,不仅仅只是C语言的简单扩展。
1985年:首个正式版本的C++发布,包含了一些基本的面向对象特性,如类和继承。
标准化与C++98(1990s)
- 1998年:C++的第一个国际标准ISO/IEC 14882:1998发布,通常被称为C++98。这个标准引入了模板、命名空间、异常处理等特性,极大地增强了语言的功能。
技术进步与C++11(2011年)
- 2011年:C++11标准发布,这是一个重要的里程碑,引入了诸如智能指针、lambda表达式、自动类型推导、范围for循环和并发编程支持等现代特性,显著提高了C++的易用性和安全性。
进一步的现代化(C++14至C++20)
2014年:C++14标准发布,它对C++11进行了细化和补充,提供了更多的便利性和语言一致性。
2017年:C++17标准发布,引入了变量模板、文件系统库、并行算法等功能,继续推动C++向现代化方向发展。
2020年:C++20标准发布,它包含了概念(Concepts)、模块(Modules)、更大的类型安全性和更多实用工具,使C++更加现代化和易于使用。
当前与未来
C++20之后,C++23标准预计在2023年发布,继续增强语言特性和库,包括改进的概念支持、更好的错误处理机制、以及对模块系统的持续改进。
C++老登:Bjarne Stroustrup(本贾尼·斯特劳斯特卢普,这个翻译的名字不 同的地⽅可能有差异)在⻉尔实验室从事计算机科学和软件⼯程的研究⼯作
这老登长这样:
c++版本
c++的相关参考文档
cplusplus.com - C++资源网络
cppreference.com //官方文档
C++ 参考手册 - cppreference.com //官方文档汉化
c++基础
c++的第一个程序:
#include<iostream>//标准IO(输入/输出)流using namespace std;//标准命名空间int main() {cout << "Hello C Plus Plus" << endl;return 0;
}
ok现在我们已经掌握了c++的输出了
命名空间
在C/C++中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全 局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名 冲突或名字污染,namespace关键字的出现就是针对这种问题的。
举一个C语言的例子来对比
#include<stdio.h>
#include<stdlib.h>
int rand = 10;
int main() {printf("%d\n",rand);return 0;
}
为什么会报rand重定义的错误?
这个是#include<stdlib.h>中的,就是因为有名字重复,所以有时候你做项目的突然需要一个头文件的时候,突然报了个重定义错误,或许你会说我不定义全局变量就行了,但是这是避免不了的,你可以去看一下我的项目专栏
这种问题后来就被我们的c++老登给优化了,于是就出现了namespace(命名空间),那我用命名空间写一下:
#include<iostream>
#include<stdlib.h>
namespace YM{int rand = 10;
}int main() {printf("%d\n", YM::rand);}
可以看到我这里自己定义了一个命名空间,为什么这里就不会有影响了嘞?
定义
命名空间的声明语法非常简单,通常形式如下:
namespace 命名 {// 命名空间内的定义
}
除了函数局部域、全局域、命名空间域和类域之外,C++中还有文件作用域、命名空间作用域、类作用域等,它们共同构成了C++的命名系统。每个域不仅影响着编译器如何解析标识符,还可能影响到变量的生命周期和可见性,但需要注意的是,命名空间域和类域本身并不改变其内部变量的生命周期。
这里提到的域,我相信大家应该都懂,作用域不一样,所以就不会一样,YM::rand 就是访问YM这个命名空间域里面的rand
::
操作符被称为作用域解析操作符
全局作用域解析:当你在一个局部作用域(如函数体内)中想要明确引用全局作用域的某个标识符(如全局变量、函数等)时,你可以使用::
来指明你要访问的是全局作用域中的那个标识符,而不是当前局部作用域中可能存在的同名标识符。例如:
#include<iostream>using namespace std;
int x = 20;
int main() {int x = 10;cout << ::x << endl;return 0;
}
这里加了域操作符,但是前面啥也不加,就是访问的全局域
命名空间的嵌套定义:
#include<iostream>namespace YM {int x = 10;namespace xy {int x = 20;}}
namespace tmp {namespace x {int rand = 20;int sum(int x, int y) {return x + y;}}namespace y {int rand = 30;int sum(int x, int y) {return x * y;}}
}
using namespace std;
int main() {cout << YM::x << endl;cout << YM::xy::x << endl;cout << tmp::x::rand << endl;cout << tmp::y::rand << endl;cout << tmp::x::sum(3, 2) << endl;cout << tmp::y::sum(3, 2) << endl;return 0;
}
大家可以把这个代码拷贝过去自己感受一下
多文件在一个命名空间
我们可以看到这里我将栈和队列都放在一个命名空间里面
从这里你是不是有一种封装数据结构的感觉,这里就可以证明我们如果在公司里面将我们写的程序弄到一个namespace1空间中然后上传到一个namespace2里,然后我的同事用同样的方法也可以进行上传到namespace2,因为域之间互不干扰,这样就会非常爽!!!
命名空间的展开
这个是标准命名空间的展开
我们也可以自己定义
不展开
展开
你可以看出来它展开和不展开的区别:
可读性和清晰度:不展开命名空间意味着你需要显式地指定元素的来源,这可以增加代码的可读性和清晰度,尤其是在多个命名空间中使用相同名称的情况下。
避免命名冲突:展开命名空间可能导致与现有命名冲突,特别是与标准库中的命名冲突。例如,
std
命名空间包含了C++标准库的大部分功能,如果使用using namespace std;
,你可能会意外地覆盖其他命名空间中的同名元素。代码维护:不展开命名空间可以使代码更易于维护,因为你总是知道一个特定标识符的确切来源。
性能:虽然在现代编译器中性能差异可能微乎其微,但在理论上,使用作用域解析操作符可能会稍微增加编译时间,因为它需要更多的解析步骤。
C++的输入输出
输入输出流(I/O Stream)
概述:
<iostream>
是标准的输入输出流库,定义了标准的输入、输出对象,简化了数据的输入输出处理。
std::cin
:istream
类的对象,主要面向窄字符(类型为char
)的标准输入流,用于从标准输入设备(如键盘)读取数据。
std::cout
:ostream
类的对象,主要面向窄字符的标准输出流,用于向标准输出设备(如显示器)发送数据。
std::endl
:是一个控制字符,用于流插入输出时,相当于插入一个换行字符并刷新缓冲区,确保数据立即显示。运算符:
>>
和<<
分别是流提取和流插入运算符,在 C++ 中用于输入输出,不同于 C 语言中的位运算左移和右移。优势:C++ 的输入输出操作更加便捷,自动识别变量类型,无需手动指定格式,支持自定义类型对象的输入输出,体现了面向对象的特性。
面向对象特性:IO流涉及类和对象、运算符重载、继承等面向对象的概念,这些概念将在后续学习中深入探讨。
命名空间:
std
是 C++ 标准库所在的命名空间,cout
、cin
、endl
等都属于此命名空间。在日常练习中,常用using namespace std;
来简化调用,但在实际项目中,为了避免命名冲突,建议显式使用std::
前缀。兼容性注意:尽管未明确包含
<cstdio>
(提供printf
和scanf
),在某些编译器环境下(如 VS 系列),它们可能被隐式包含,但在其他编译器上可能需要显式包含才能避免错误。注意:
对cout的解释,这里里面的函数重载我待会解释
流插入运算符
<<
:当你使用cout
输出数据时,实际上是将数据通过流插入运算符<<
插入到cout
流中。例如,cout << 123;
就是将整数123
插入到cout
流中。类型转换:
cout
在背后做了大量的工作,将你提供的数据类型转换成文本格式。例如,如果你有一个整数123
,cout
会将其转换成字符串"123"
,然后再输出到屏幕上。函数重载:
cout
的这种能力是通过函数重载实现的。cout
实际上是一个ostream
类型的对象,ostream
类为各种数据类型重载了<<
运算符。这意味着<<
运算符根据左右两边的数据类型,会选择正确的重载版本来执行正确的转换和输出操作。缓冲与刷新:
cout
输出的数据会被暂时存储在一个缓冲区中,直到缓冲区满或者程序显式要求刷新(如使用endl
)。这有助于提高性能,因为一次性写入大量数据比频繁写入单个小数据块效率更高。
这边我就不和大家说那些没用的废话直接上代码,我在代码下面放个解析
#include<iostream>
using namespace std;int main() {//一int a = 10;cin >> a;cout << a << endl;//二int b, c, d;cin >> b >> c ;cout << b << endl << c << endl;cout << b << " " << c << ' ' << endl;}
解析
#include<iostream>
这行代码包含了标准输入输出库(iostream),使得程序可以使用输入输出相关的功能,如cin和cout。
1using namespace std;
这行代码告诉编译器使用std命名空间,这样我们就可以直接使用cout和cin等函数,而不需要每次都写std::cout或std::cin。
1 int a = 10;
声明了一个整型变量a,并初始化为10。
1 cin >> a;
从标准输入读取一个整数并将其存储在变量a中。这会覆盖之前给a的初始值10。
1 cout << a << endl;
输出变量a的值到标准输出(通常是屏幕),并在后面添加一个换行符。
1 int b, c, d;
声明了三个整型变量b、c和d。
1 cin >> b >> c ;
从标准输入读取两个整数,分别存储在变量b和c中。
1 cout << b << endl << c << endl;
输出变量b和c的值,每个值后都加上一个换行符,使得b和c的值在不同的行显示。
1 cout << b << " " << c << ' ' << endl;
输出变量b和c的值,中间用空格分隔,然后在最后添加一个换行符。
缺省函数
定义
- 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参 则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。(有些地⽅把 缺省参数也叫默认参数)
- 全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左 依次连续缺省,不能间隔跳跃给缺省值。
- 带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。
- 函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省 值。
代码举例
这里我们缺省了1这个参数(半缺省)
这边我还可以直接缺省两个参数(全缺省)
你不要觉得这个没有用,比如你在开空间扩容的时候,你就可以给一个默认值,就会方便很多,如果突然需要一个很大的空间,你直接传个值过去就覆盖掉默认值
重载函数
C++⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者 类型不同。这样C++函数调⽤就表现出了多态⾏为,使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同 名函数的。
这个在C语言就是没有的,你们会发现有了这个重载函数会非常爽,在C语言中,如果我们换了一个类型,我们就的重新命一个函数,不支持一个函数名支持多个种类型
在定义重载函数,一定保持参数顺序相同,不然就会报错,这也是老登规定的,没有为什么
返回值不同不能作为重载条件,因为调⽤时也⽆法区分
我们来看一个纯在歧义的重载函数,这种以后千万别写,我感觉有一点画蛇添足
不传参,会报错,因为第一个无参,第二个是缺省函数
当我给他传上参数他又满血复活了,哈哈哈
引用
引用的概念和意义
引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间, 它和它引⽤的变量共⽤同⼀块内存空间。⽐如:⽔壶传中李逵,宋江叫"铁⽜",江湖上⼈称"⿊旋 ⻛";林冲,外号豹⼦头
类型& 引用别名 = 引用对象
C++中为了避免引⼊太多的运算符,会复⽤C语⾔的⼀些符号,⽐如前⾯的>,这⾥引⽤也和取 地址使⽤了同⼀个符号&,⼤家注意使⽤⽅法⻆度区分就可以。(吐槽⼀下,这个问题其实挺坑的,个 ⼈觉得⽤更多符号反⽽更好,不容易混淆)
其实简单来说就是取了个别名
我们打印一下他们的地址看一下是不是一样
其实这里已经说明了他们底层是指针,大家可能觉得这样写会有点怪,哈哈,其实这个在函数传参的时候,会非常方便
引用的特性
- 引用在定义时必须初始化
- ⼀个变量可以有多个引用
- 引用一旦引用一个实体,再不能引用其他实体
这里有一个案例,很多同学喜欢把这个认为是在改变a
这里的c只有一个赋值作用,我们可以看出地址是不一样的,如果这里认为c是在改变a的话说明你C语言指针需要复习一下,哈哈哈,加油少年
引用的使用
- 引⽤在实践中主要是于引⽤传参和引⽤做返回值中减少拷⻉提⾼效率和改变引⽤对象时同时改变被 引⽤对象。
- 引⽤传参跟指针传参功能是类似的,引⽤传参相对更⽅便⼀些。
- 引⽤返回值的场景相对⽐较复杂,我们在这⾥简单讲了⼀下场景,还有⼀些内容后续类和对象章节 中会继续深⼊讲解。
- 引⽤和指针在实践中相辅相成,功能有重叠性,但是各有特点,互相不可替代。C++的引⽤跟其他 语⾔的引⽤(如Java)是有很⼤的区别的,除了⽤法,最⼤的点,C++引⽤定义后不能改变指向, Java的引⽤可以改变指向。
- ⼀些主要⽤C代码实现版本数据结构教材中,使⽤C++引⽤替代指针传参,⽬的是简化程序,避开 复杂的指针,但是很多同学没学过引⽤,导致⼀头雾⽔。
接下来我用代码解释这个引用的应用
看吧,我这个很形象了吧,用引用的话,我们就可以不用再传参数的时候写一个&地址符,这样也好理解一点,我估计有可能老登也觉得指针有一点太复杂了
这种千万不要觉得奇怪,他是一个LTNode*的指针传参,自然也要是LTNode*的别名来接收
这边还没有写完后面还有一些内容,明天补,哈哈哈
相关文章:

C++入门基础
前言 本篇博客讲解一下c得入门基础 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:C_普通young man的博客-CSDN博客 ⏩ 本人giee:普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见📝 🎉欢迎大家点赞&…...

Unicode 与 UTF-8 的区别与联系
文章目录 UnicodeUTF-8联系区别Unicode 转义序列字符编码与字符的对应规则例子 Unicode 定义:Unicode 是一个字符编码标准,旨在为世界上所有的字符分配一个唯一的编码。 编码范围:Unicode 的编码范围从 0x0000 到 0x10FFFF,能够表…...

PHP MySQL 简介
PHP MySQL 简介 PHP 和 MySQL 是现代网站开发中最流行的两种技术。PHP 是一种服务器端脚本语言,而 MySQL 是一种关系型数据库管理系统。这两种技术经常一起使用,以创建动态和交互式的网页。本文将简要介绍 PHP 和 MySQL 的基本概念、它们的工作原理以及…...

Spring容器加载Bean和JVM加载类
1、JVM加载类 类的加载是在首次需要访问类的信息或实例化类的对象时发生的过程。ClassLoader负责加载类的字节码,并在内存中创建对应的Class对象,从而使得Java程序能够操作和使用这些类。 在Java中,类的加载是按需进行的,也就是…...

《简历宝典》04 - 简历的“个人信息”模块,要写性别吗?要放照片吗?
平时帮助小伙伴们优化简历的时候,我看见他们有人会写性别,有人不会写。 目录 1 招聘团队的考虑 2 性别是无法改变的,能不写就不写 3 什么情况下,需要写性别呢? 4 简历中要加照片吗? 1 招聘团队的考虑 …...

TTS模型汇总
TTS是“Text-to-Speech”的缩写,中文意思是“文本到语音”。这是一种将文本信息转换成口语的技术,通常通过计算机程序实现。TTS技术可以应用于多种场景,包括但不限于: 辅助阅读:帮助视障人士或有阅读困难的用户通过听…...

js打印出堆栈
在JavaScript中,直接获取并打印完整的调用堆栈(stack trace)并不像在一些其他语言中那样直接。不过,有几种方法可以实现类似的功能,具体取决于你的需求和运行环境(如浏览器环境或Node.js环境)。…...

论文阅读:A Survey on Evaluation of Large Language Models
A Survey on Evaluation of Large Language Models 这篇论文是由Yupeng Chang等人撰写的关于大型语言模型(LLMs)评估的综述,题为《A Survey on Evaluation of Large Language Models》。 摘要 大型语言模型(LLMs)在…...

MyBatis的简介与使用
Mybatis JDBC操作数据库的缺点 存在大量的冗余代码。手工创建 Connection、Statement 等,效率低下。手工将结果集封装成实体对象。查询效率低,没有对数据访问进行优化。 Mybatis框架 简介 MyBatis 本是 apache 的一个开源项目 iBatis, 2010年这个项目由…...

MAX98357、MAX98357A、MAX98357B小巧、低成本、PCM D类IIS放大器,具有AB类性能中文说明规格书
前言: MAX98357A支持标准I2S数据,MAX98357B支持左对齐数字音频数据。两个版本均支持8通道TDM音频数据。 IIS数字功放MAX98357开发板/评估系统 MAX98357 WLP-9(1.347x1.437mm)封装的外观和丝印AKM MAX98357 TQFN-16-EP(3x3mm)封装的外观和丝印AKK 引脚说…...

shell(2)
shell(2) 简答题 1、编写一个shell脚本,从键盘读入一个成绩,并按优秀、良好、中等、及格、不及格输出成绩。 我的答案: #/bin/bash read -p "请输入学生成绩(0-100):" score if [ $sum -gt 100 ] ;thenecho "输…...

昇思25天学习打卡营第1天|初识MindSpore
昇思MindSpore介绍 昇思MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景统一部署三大目标。 其中,易开发表现为API友好、调试难度低;高效执行包括计算效率、数据预处理效率和分布式训练效率;全场景则指框架…...

C语言字节对齐技术在嵌入式、网络与操作系统中的应用与优化
第一部分:嵌入式系统中的字节对齐 嵌入式系统通常对性能和资源有着严格的要求。在这些系统中,字节对齐的正确使用可以显著提高数据访问速度,减少内存占用,并提高系统的整体效率。 一、嵌入式系统中的字节对齐挑战 嵌入式系统中…...

如何理解李彦宏说的”不要卷模型,要卷应用
文章目录 👿AI技术的发展与转变👿不要卷模型,要卷应用👿避免“超级应用陷阱”👿大模型技术与个性化应用的关系👿结语 在2024年7月4日于上海世博中心举办的世界人工智能大会上,百度创始人、董事长…...

三、Python日志系统之监控邮件发送
import smtplib from email.mime.text import MIMEText import time import os import datetime from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler# 邮件配置 SMTP_SERVER smtp.example.com SMTP_PORT 587 SMTP_USERNAME your_…...

16张支付牌照将到期,新规落地以来,支付牌照的首次续展。
7月9日,包括瑞银信、乐刷、畅捷支付在内的16家第三方支付机构的支付牌照将到期,这些公司面临续展的重大考验。 这是《非银行支付机构监督管理条例》实施以来,支付牌照的首次续期。 其中,最受瞩目的可能是瑞银信。在范一飞落马后&a…...

VS2022 python 中文注释报错如何解决?
1. 相同的代码,在VS2022 中报错; # 初始化字典 my_dict {apple: 3, banana: 5} # 遍历字典 for index, key in enumerate(my_dict): print(f"index {index}, key {key} , value {key}") 在PyCharm Community Edition 2024.1…...

GitLab介绍,以及add an SSH key
GitLab GitLab 是一个用于仓库管理系统的开源项目,现今并在国内外大中型互联网公司广泛使用。 git,gitlab,github区别 git 是一种基于命令的版本控制系统,全命令操作,没有可视化界面; gitlab 是一个基于git实现的在线代码仓库…...

计算机视觉——opencv快速入门(二) 图像的基本操作
前言 上一篇文章中我们介绍了如何配置opencv,而在这篇文章我们主要介绍的是如何使用opencv来是实现一些常见的图像操作。 图像的读取,显示与存储 读取图像文件 在opencv中我们利用imread函数来读取图像文件,函数语法如下: imagecv2.imre…...

ViewPager
作用 实现翻页的效果。 1、在activity_main.xml中创建ViewPager <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"…...

linux watchdog 子系统
目录 一、watchdog 子系统二、关键数据结构2.1 watchdog_device2.2 watchdog_ops2.3 watchdog_info 三、重要流程3.1 watchdog 初始化3.2 watchdog 设备注册3.3 watchdog 设备文件操作函数3.4 watchdog 喂狗用户空间 watchdog(busybox)内核空间喂狗疑问 …...

论文引用h指数
文章目录 1、描述2、关键字3、思路4、notes5、复杂度6、code 1、描述 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” &…...

四、Python日志系统之日志文件的备份和删除
import os import datetime import logging from watchdog.events import FileSystemEventHandler from watchdog.observers import Observer """实现代码中处理日志文件的备份和删除""" class UserLog:def __init__(self):self.logger logging…...

Android Camera Framework:从基础到高级
目录 基础知识1. Camera API 与 Camera2 API2. 权限 关键组件1. CameraManager2. CameraDevice3. CaptureRequest 和 CaptureSession 高级功能1. 实时滤镜2. 手动控制3. 高动态范围 (HDR) 和夜间模式 在现代移动应用开发中,相机功能已成为许多应用程序的核心组成部分…...

面向 Rust 新手的 Cargo 教程:轻松上手
面向 Rust 新手的 Cargo 教程:轻松上手 引言Cargo 简介定义与重要性与传统构建工具的对比 安装与配置 Cargo在不同操作系统上安装 Rust 和 CargoWindowsmacOSLinux 配置 Cargo 环境变量与路径第一个 Cargo 项目 主要功能概述结语 引言 在编程语言的浩瀚宇宙中&…...

MSPM0G3507——时钟配置(与32关系)
先将32端时钟配置分为1,2,3如图 1是PSC左边未经分频的时钟源(HZ) 2是经过PSC分频的时钟信号(HZ) 3是最终的输出信号(HZ) 3输出的是一个定时器周期的HZ,可以转换成时间 …...

Linux 创建新虚拟机的全过程图解
一、创建新虚拟机 1.选择自定义 2.直接下一步 3.选择稍后安装 4.设置虚拟机名和安装位置 5.配置处理器(处理器数量:4、每个处理器的内核:2) 6. 内存选择 7.网络类型 8. IO控制器类型-默认推荐 9.磁盘类型-默认推荐 10.选择虚拟磁…...

【已解决】腾讯云安装了redis,但是本地访问不到,连接不上
汇总了我踩过的所有问题。 查看配置文件redis.conf 1、把bind 127.0.0.1给注释掉(前面加个#就是)或者改成bind 0.0.0.0,因为刚下载时它是默认只让本地访问。(linux查找文档里的内容可以输入/后面加需要匹配的内容,然后…...

python批量去除图片文字水印
#!/usr/bin/env python # -*- coding:utf-8 -*- # 需要安装的库 # pip install paddlepaddle -i https://mirrors.aliyun.com/pypi/simple/ # pip install paddleocr -i https://mirrors.aliyun.com/pypi/simple/ # pip install cv2 -i https://mirrors.aliyun.com/pypi/simple…...

C++ Qt 自制开源科学计算器
C Qt 自制开源科学计算器 项目地址 软件下载地址 目录 0. 效果预览1. 数据库准备2. 按键&快捷键说明3. 颜色切换功能(初版)4. 未来开发展望5. 联系邮箱 0. 效果预览 普通计算模式效果如下: 科学计算模式效果如下: 更具体的功能演示视频见如下链接…...