C++——入门基础
文章目录
- 一、前言
- 二、C++的发展历史
- 2.1 C++的诞生
- 2.2 C++的重要性
- 三、C++的应用
- 3.1第一个C++程序
- 3.2 C版
- 3.2 C++版
- 3.3 C版与C++版的区分
- 3.2 namespace关键字
- 3.2.1 namespace的意义
- 3.2.2C++中域的分类
- 3.2.3 namespace的定义
- 3.2.4 namespace的实质
- 3.2.5 namespace的嵌套
- 3.3 作用域运算符 ::
- 3.4 命名空间的使用
- 3.5C++输入和输出
- 四、总结
一、前言
今天的你还在坚持学习吗?在之前这几个月中,我们学习了C语言,相信大家现在已经可以熟能生巧了吧?但是C语言呢却只是一门底层的基础编程语言,在效率和实现上始终还是比较麻烦。但是麻烦就是用来解决的,因此,一门新的语言——C++应运而生。今天就让我们来解开它的新面纱,进行初步的学习。
二、C++的发展历史
2.1 C++的诞生
C++是一种广泛应用的高级编程语言,最早由本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)在1979年于AT&T贝尔实验室研发。它的设计初衷是结合C语言的高效性和Simula语言的面向对象特性。
2.2 C++的重要性
TIOBE编程语言排行榜是一个反映编程语言热门程度的指标。它根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以Wikipedia、Amazon、YouTube和Baidu(百度)统计出排名数据。该排行榜每月更新一次,旨在展示当前业内程序开发语言的流行使用程度。
排行榜的意义
TIOBE指数可以用来检阅开发者的编程技能是否跟上趋势,或是否有必要作出战略改变,以及什么编程语言是应该及时掌握的。虽然该指数并不能说明一门编程语言的优劣或其代码量,但它对世界范围内开发语言的走势具有重要参考意义。
三、C++的应用
3.1第一个C++程序
不知道大家还记得我们在学习C语言的时候遇到的第一个C程序吗——打印一个hello world。那么我们使用C++又该如何实现呢?请看:
3.2 C版
//C版
#include <stdio.h>
int main()
{printf("hello world\n");return 0;
}
3.2 C++版
//C++版
#include <iostream>
using namespace std;
int main()
{cout << "hello world" << endl;return 0;
}
3.3 C版与C++版的区分
我们在使用C语言编写程序代码时,我们所定义的文件名是xxx.c,但是在使用C++编写程序代码的时候,我们定义的文件名却是xxx.cpp。这是因为当使用C语言和C++编写代码的时候,所用到的编译器也不是相同的,所以我们就对文件名的后缀进行区分。
那么大家请看下面这张图片,你又有没有发现什么问题呢?
相信大家的观察力也是十分的了得,已经看出些许不同了。以上图片的问题就在于——文件后缀名明明是xxx.cpp,但是为什么C语言版本的代码却又运行通过了呢?我们刚刚才说过C++其实是C版本的升级,在语法上,C++兼容C语言的大多数语法,所以C语言实现的hello world依旧可以运行。
3.2 namespace关键字
3.2.1 namespace的意义
在C语言中,我们对于变量的命名可以说是非常随意的,一般自己喜欢怎么命名就怎么命名。但是有时候这是会出问题的,如下图:
我们定义了一个全局变量abs,并且给它赋值为10,最后再在mian函数中进行打印。这一系列的操作下来,可谓是行云流水,大家也是丝毫没有感觉到问题的存在,因此问题就来了。
我们在定义abs这个变量的时候,并没有意识到abs其实是C语言math.h库中的一个函数——它的作用是取绝对值。函数名是不能用来定义成变量进行赋值的。因此像上图进行程序的编译的时候就会报错。
3.2.2C++中域的分类
C++中域可以分为:全局域、函数局部域、命名作用域、类域;而域所影响的是编译时语法查找的变量/函数/类类型出处的逻辑。那如果我们有了域隔离,是不是就不会出现命名冲突的情况了呢?
注意:局部域和全局域会影响生命周期,命名作用域和类域不影响生命周期。
3.2.3 namespace的定义
在C/C++中,会存在大量的变量、函数和类。这些变量、函数和类的名称都存在于全局作用域中,就会导致非常多的冲突。那么又该如何避免上述问题?这时候就要用到namesapce关键字。
namespce的作用是用来定义命名空间——其中可以定义变量、函数、类等。后面跟命名空间的名字并且后再接一对{}(大括号),{}中就是命名空间的成员。
3.2.4 namespace的实质
namespace的实质就是开辟一块新的域,这个域与全局域相独立。那么在不同的域中,就可以定义相同的相同的变量名了。
这时命名冲突的问题就解决了。而me:: abs的意思是:我们用namespace定义命名空间从而定义出了一个新的域——me,那我们为了输出abs我们就得到me这个域中取寻找,所以::符号就是去特定的域找寻你想输出的变量、函数、类等。
3.2.5 namespace的嵌套
我们说到namespace实质上是开辟了一个新的域,那如果在这块新的域中我们还想细分怎么办呢?又该如何细分呢?大家请看下面问题:
阿强和阿珍是一对非常要好的朋友,有一天它们被分配到了同一个小组做项目,阿强是项目A,阿珍是项目B,由于他们心意比较相通,他们的项目名想的都一样,为了避免冲突又该如何实现呢?
//C语言版
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
namespace Group
{namespace aqiang{int Add(int num1, int num2){return num1 + num2;}}namespace azhen{int Add(int num1, int num2){return (num1 + num2) * 10;}}
}
int main()
{printf("%d\n", Group::aqiang::Add(1, 2));printf("%d\n", Group::azhen::Add(1, 2));return 0;
}
//C++版
#include <iostream>
using namespace std;
namespace Group
{namespace aqiang{int Add(int num1, int num2){return num1 + num2;}}namespace azhen{int Add(int num1, int num2){return (num1 + num2) * 10;}}
}
int main()
{cout << (Group::aqiang::Add(1, 2)) << endl;cout << (Group::azhen::Add(1, 2)) << endl;return 0;
}
由此可以看出:namespace是支持嵌套定义的。
3.3 作用域运算符 ::
刚才我们在输出值的时候用到了一个运算符——::,那它的作用又到底是什么呢?::的名字叫做作用域运算符。它可以用于限定的作用域,比如访问全局变量、访问类的静态成员、在类外部定义类成员函数等。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int a = 20;
namespace me
{int a = 10;
}
int main()
{printf("%d\n", ::a);//::前什么都不加就是到全局去找printf("%d\n",me:: a);//::前加了域名就是到特定的域里面去找return 0;
}
3.4 命名空间的使用
在编译查找一个变量/函数/类的定义或者声明时,会先到局部域去查找,若局部域找不到则会到全局域去查找,但是不会去命名空间里面查找,但是如果我们想使用命名空间中的变量/函数/类的时候,可以使用如下三种方法:
1、指定命名空间访问:
//指定命名空间访问
#include <stdio.h>
#include <stdlib.h>
namespace me
{int a = 1;int b = 2;
}
int main()
{printf("%d\n", me::a);printf("%d\n", me::b);return 0;
}
2、展示命名空间中局部成员:
//展开命名空间中局部成员
#include <stdio.h>
#include <stdlib.h>
namespace me
{int a = 1;int b = 2;
}
using me::a;
using me::b;
int main()
{printf("%d\n", a);printf("%d\n", b);return 0;
}
3、展开命名空间中全部成员——冲突风险大
//展开命名空间中全部成员
#include <stdio.h>
#include <stdlib.h>
namespace me
{int a = 1;int b = 2;
}
using namespace me;
int main()
{printf("%d\n", a);printf("%d\n", b);return 0;
}
3.5C++输入和输出
因为C++兼容C,使用我们在写代码的时候都会将两者混合起来使用。但是现在,我们要讲解C++中的输入和输出。
1、iostream是标准的输入、输出流库,定义了标准的输入、输出对象。它是Input Output Stream的缩写。
2、std::cout是istream类的对象,它主要面向窄字符的标准输入流。
3、std::out是ostream类的对象,它主要面向窄字符的标准输出流。
4、std::endl是一个函数,在流插入输出时,充当一个换行符刷新缓冲区。
5、<< 是流插入运算符,实现向标准输出设备输出数据,>>是流提取运算符,实现向标准输入设备输入数据。
6、使用C++输入输出更加方便,不需要像C那样使printf/scanf这样的输入输出,并且C++的流能够更加好的支持自定义类型对象的输入输出。
7、cout/cin/endl等属于C++标准库,C++标准库放在一个叫做std(stdandard)的命名空间中,所以在使用的时候需要使用访问命名空间的方式。
//在没有使用std命名空间情况下
#include <iostream>
int main()
{int a = 6;double b = 6.6;char c = 'x';std::cout << a << std::endl << b << std::endl << c << std::endl;//统一一排输出std::cout << std::endl;std::cout << a << std::endl;//分开输出std::cout << b << std::endl;std::cout << c << std::endl;return 0;
}
//在使用了std命名空间情况下
#include <iostream>
using namespace std;
int main()
{int a = 6;double b = 6.6;char c = 'x';cout << a << endl << b << endl << c << endl;//统一一排输出cout << endl;cout << a << endl;//分开输出cout << b << endl;cout << c << endl;return 0;
}
四、总结
欧克,现在关于C++入门的相关知识就差不多讲解完毕了,由于这才是我们学习C++开始,所以分享的知识都比较基础和易懂,大家下来一定要好好消化,不然在接下来的C++学习过程中就会感到非常吃力了。大家可以和C语言相互比较学习,这样理解起来也会快很多。The best wishes for you!
学无止境,让我们不断探索新知识,开拓新视野。
相关文章:
C++——入门基础
文章目录 一、前言二、C的发展历史2.1 C的诞生2.2 C的重要性 三、C的应用3.1第一个C程序3.2 C版3.2 C版3.3 C版与C版的区分 3.2 namespace关键字3.2.1 namespace的意义3.2.2C中域的分类3.2.3 namespace的定义3.2.4 namespace的实质3.2.5 namespace的嵌套 3.3 作用域运算符 &…...
AT2401C与RFX2401C问题处理资料
1、AT2401C 可以 PIN 对 PIN 替代 RFX2401C 吗? 答:AT2401C 可以 PIN 对 PIN 替换 RFX2401C;同时 CB2401 也可以 PIN 对 PIN 替换 RFX2401C;我们主要推 AT2401C 这款芯片,如果客户产 品需要过认证或者应用于音频产品建…...
微信小程序连续多个特殊字符自动换行解决方法
效果图 .wxml <view class"container"><text>没转换{{text}}</text><view style"height: 60rpx;" /><text>转换后{{convert}}</text> </view>.js Page({data: {text:!!!&am…...
【Linux实践系列】:进程间通信:万字详解命名管道实现通信
🔥 本文专栏:Linux Linux实践项目 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 与其等待完美的风,不如学会在逆风中调整帆的角度——所有伟大航程都始于此刻出发的勇气 ★★★ 本文前置知…...
【TS入门笔记4---装饰器】
TS入门笔记4 TypeScript---装饰器一、装饰器基础1. 定义与作用:装饰器是一种特殊类型的声明,它可以被附加到类声明、方法、访问符、属性或参数上,用来修改类的行为。在 TypeScript 里,装饰器本质上是一个函数,它接收不…...
大学之大:韩国科学技术研究院2025.4.28
韩国科学技术研究院(KAIST)作为韩国理工科教育与科研的旗舰机构,其发展历程深刻反映了韩国从工业化到科技强国的转型轨迹。以下从历史沿革、学科优势、教学特色、科研创新、教育规模、资源投入及未来战略等维度展开全面分析: 一、…...
【QT】QT控制硬件
QT控制硬件 1.上位机程序开发2.具体例子控制led灯3. linux中的函数跟QT类里面的函数同名,发生冲突4.示例代码 1.上位机程序开发 QT做一个上位机程序,控制底层的硬件设备(下位机) 总结: 在构造函数里面去初始化,打开硬件驱动在析…...
Spring的BeanFactory和FactoryBean的区别
BeanFactory和FactoryBean在Spring框架中扮演着不同的角色,具有不同的功能和用途。 定义与角色 BeanFactory:BeanFactory是Spring IoC容器的核心接口,用于管理和维护Bean的定义、创建和生命周期。它是Spring IoC容器的基础&…...
【JavaScript】if语句
JS中的程序是从上到下一行一行执行的。 通过流程控制语句可以控制程序执行流程,使程序可以根据一定的条件来选择执行语句。 语句的分类: 1、条件判断语句 2、条件分支语句 3、循环语句 条件判断语句:使用条件判断语句可以在执行某个语句之前进…...
PostgreSQL oracle_fdw 扩展解析
PostgreSQL oracle_fdw 扩展解析 oracle_fdw 是 PostgreSQL 的一个外部数据包装器(Foreign Data Wrapper)扩展,允许 PostgreSQL 直接连接和操作 Oracle 数据库。以下是全面详细的使用指南: 一、安装与配置 1. 前置要求 Oracle 客户端库:必…...
从信息传输到智能互动,融云的全球智能通信云服务进化
4 月 24 日-25 日,GTC2025 全球流量大会在深圳福田会展中心举办,融云携全球智能通信云解决方案亮相。 在大会首日的开幕式峰会上,融云高级研发总监李宏博受邀分享《从信息传输到智能互动,融云的全球智能通信云服务进化》。 作为连…...
关于https请求丢字符串导致收到报文解密失败问题
加密方法:AES两次URLEncoder 问题现象:服务端收到的报文中少了类似%25这样的字符,导致解密失败 问题分析:用RequestBody接受 也有可能是springboot自动做了一次解码URLDecoder,自己只需要解码一次就好了...
Rust 学习笔记:修复所有权常见错误
Rust 学习笔记:修复所有权常见错误 Rust 学习笔记:修复所有权常见错误错误一:返回栈上的引用错误二:没有足够的权限错误三:别名和可变性错误四:从集合中拷贝一个元素(转移所有权)错误…...
Unity3D引擎框架及用户接口调用方式相关分析及汇总
分析目的 目前外网3D手游绝大部基于Unity3D引擎进行开发,Unity3D引擎属于商业引擎,引擎整理框架的运行机制较为神秘,本文介绍Unity引擎框架、对象组织方式、用户接口与引擎交互方式等原理,通过本文的分析和介绍可了解Unity3D框架中大致执行原理。 实现原理 Unity引擎作为…...
喷泉码在物联网场景下的案例分析
在物联网复杂场景下,无线传感器网络作为信息感知前端,面临能量受限、信道不稳定、多跳传输可靠性差等难题,严重制约物联网系统运行效能。传统基于反馈重传的通信机制在无线传感器网络中难以为继。其 ACK 确认操作频繁,大幅增加能耗,且在动态网络拓扑中,反馈易丢失,致使数…...
OpenCV 图形API(69)图像与通道拼接函数------将一个 GMat 类型的对象转换为另一个具有不同深度GMat对象函数convertTo()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将一个矩阵转换为另一种数据深度,并可选择进行缩放。 该方法将源像素值转换为目标数据深度。最终应用 saturate_cast<> 以避免…...
考研系列-计算机组成原理第七章、输入/输出系统
一、I/O接口 1.I/O接口概念 现在的I/O接口有些集成在南桥芯片上...
使用vue3 脚手架创建项目
1.创建项目 并 运行 1.1 创建项目 vue create abcd 1.2 运行 创建好项目后,命令行会提示你运行项目 npm run serve 2.介绍各个目录 node_modules : 项目依赖包,其中包括很多基础依赖,自己也可以根据需要安装其他依赖 assets文件夹&a…...
云服务器被黑客攻击应急响应与加固指南(上)
一、入侵检测与应急处理 1. 异常行为检测 # 查看异常登录记录 sudo lastb | awk {print $3} | sort | uniq -c | sort -nr sudo grep "Failed password" /var/log/auth.log | awk {print $11} | sort | uniq -c# 检查可疑进程 ps auxf | grep -E (curl|wget|bash|s…...
联合体union的特殊之处
一个联合体union的长度等于其内部长度最大的成员的长度。 union的所有成员共享同一块内存空间,可以利用这个特性读取数据的字节存储方式。 #include <stdio.h>int check_endian() {union {short s; // 2 字节(short)char c[2]…...
Spring系列五:手动实现Spring底层机制 第三部分
💗实现任务阶段5 🍚bean后置处理器实现 bean后置处理器实现 思路:先完成原生Spring 使用Bean后置处理器的案例, 然后实现自己的bean后置处理器 bean的生命周期~传送门 在idea中 shortcuts: shiftshift , 输入 InitializingBean, 搜索. 在zzw-spring…...
AGV、AMR机器人控制器x86/RK3588/NV各有什么优劣势?
以下是关于AGV/AMR机器人控制器解决方案中x86、RK(瑞芯微)、NV(英伟达)平台优劣势的综合分析: 一、核心性能对比 平台优势局限性适用场景x861. 多核高频CPU支持复杂算法运算,适合大规模路径规划及多机…...
[ACTF2020 新生赛]Include [ACTF2020 新生赛]Exec
[ACTF2020 新生赛]Include 因为前端过滤的太多了 所以直接使用 日志包含 搞 包含这个 /var/log/nginx/access.log [ACTF2020 新生赛]Include蚁剑连接 翻看 flag{1ce7a81e-0339-44ef-a398-a7784d3efe37} [ACTF2020 新生赛]Exec [ACTF2020 新生赛]Exec 127.0.0.1 |echo <?…...
23种设计模式 -- 工厂模式
Java 工厂模式示例代码 下面我将展示三种常见的工厂模式实现:简单工厂模式、工厂方法模式和抽象工厂模式。 1. 简单工厂模式 java // 产品接口 interface Shape {void draw(); }// 具体产品类 class Circle implements Shape {Overridepublic void draw() {System…...
【25软考网工】第四章(2)WLAN通信技术、WLAN频谱与信道
目录 一、WLAN通信技术 1. 扩展频谱通信 1)扩频通信种类 2)技术关系 2. 应用案例 1)例题:扩频通信概念判定 2)例题:跳频扩频技术描述 3)例题:扩频通信技术标准 3.知识小结 二、WLAN频谱与信道 1. WLAN网络分…...
MetaEditor - 自动交易和技术指标编辑器
功能特点 代码编辑功能:支持多种编程语言,如 MQL4 和 MQL5,方便交易者根据自己的需求编写自动交易策略和技术指标。它提供了代码高亮、自动缩进、语法检查等功能,有助于提高代码编写的效率和准确性。调试与测试工具:配…...
关于华为云OneAccess登录认证过程介绍
这里主要介绍的是OAuth2认证的一个流程,分享一下实际开发过程中的实现逻辑 1、后端先根据接口文档的细节内容,然后拼接好url并且以String的类型返回给前端 2、此时前端会访问本连接,然后就会跳转到第三方页面,用户进行登录后&am…...
Spring - 简单实现一个 Spring 应用
一、为什么需要学习Spring框架? 1.企业级开发标配 超过60%的Java项目都使用Spring生态(数据来源:JetBrains开发者报告)。 2.简化复杂问题 通过IoC和DI,告别new关键字满天飞的代码。 3.职业竞争力 几乎所有Java岗…...
数据展示功能界面设计与实现及终端控制界面思路(17)
文章目录 一、本章说明二、传感数据展示功能实现2.1 实现目标2.2 具体实现2.2.1 需要在.pro 文件添加2.2.2 mainwindow.h 头文件2.2.3 mainwindow.cpp 文件2.2.4 实现界面展示三、项目源码文件四、终端节点控制五、Qt打包EXE一、本章说明 注:本节为【基于STM的环境监测系统(…...
opendds编译开发(c#封装)
opendds是对DDS协议的开源实现,具体可以查阅官网。 我使用的是源码编译开发,博文只针对windows平台。 环境准备 环境安装 1.visual studio 2022,我是企业版,安装需要选择c 2.Per下载安装,下载链接:https://strawberryperl.com…...
电子监管码预检剔除装置提示盒尺寸过短
问题:电子监管码预检剔除装置提示盒尺寸过短 现象:自动线监控程序报警提示“盒尺寸过短”。 原因:分盒设备拨盒的力度和距离、盒子在传送带的角度或传送带速度有所变化都会导致自动线出现“盒尺寸过短” 解决方法:根据传送带的速…...
【C++11特性】Lambda表达式(匿名函数)
一、函数对象 在C中,我们把所有能当作函数使用的对象当作函数对象。 一般来说,如果我们列出一个对象,而它的后面又跟有由花括号包裹的参数列表,就像fun(arg1, arg2, …),这个对象就被称为函数对象。函数对象大致可分为…...
【北京】昌平区某附小v3700存储双控故障维修案例
2025年4月22日,接到一位通过网络找到我们的北京老师求助,反馈该学校一台V3700存储的磁盘分区无法正常读取了,老师在机房检查时发现存储后面2个控制器均亮警告灯。急需修复该设备读取里面资料用于周末运动会所需。于是在网上找到我们协助进行排…...
汤晓鸥:计算机视觉的开拓者与AI产业化的先行者
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 汤晓鸥:计算机视觉的开拓者与AI产业化的先行者 一、学术与创业之路 1. 从…...
MATLAB实现神经网络的OCR识别
使用说明: 运行要求: MATLAB R2020b 或更新版本已安装 Deep Learning Toolbox推荐使用GPU加速(训练时在代码开头添加 gpuDevice(1)) 代码特点: 使用MATLAB自带的MNIST手写数字数据集包含数据可视化、网络架构…...
车载软件架构 --- AUTOSAR的方法论
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...
Java 的创新与变革之路:从 JDK 7 到 JDK 23
Java 作为一种广泛应用的编程语言,其发展历程与 JDK(Java Development Kit)的演进紧密相连。自 JDK 7 起,Java 语言不断引入重大特性,持续重塑开发格局,推动性能、功能和开发体验的提升。本文将深入剖析 JD…...
LangChain、LlamaIndex、MCP、Spring AI、Ollama 和 DeepSeek 的定义、关系及典型架构设计
以下是 LangChain、LlamaIndex、MCP、Spring AI、Ollama 和 DeepSeek 的定义、关系及典型架构设计解析: 一、核心组件定义与功能 1. LangChain 定位:构建复杂 大语言模型(LLM)应用的通用框架。功能: 支持链式调用&am…...
Docker安装的mysql限制ip访问
1.问题背景 docker安装了mysql服务,服务器为Redhat9,我们希望通过防火墙规则直接限制访问的来源ip,只允许特定ip进行访问,其余ip需要被禁止。 2.排查过程 1.首先尝试了通过firewalld方式添加对应的防火墙规则, sud…...
怎么样才能在idea中写入spark程序
一、准备环境 1.安装Scala插件 专业版IDEA自带Scala插件,社区版需手动安装 确保插件版本与IDEA版本匹配 2.选择用哪个构建工具 sbt:适用于依赖管理简单、快速迭代的项目,需提前安装sbt工具24。 Maven:适合熟悉Java生态…...
MySQL的数据类型
目录 数据类型分类 数值类型 tinyint bit 编辑 小数(float) 小数(decimal) 字符串类型 char varchar 日期和时间类型 String类型 enum set find_ in_ set函数 我们今天来学习MySQL的数据分类。 数据类型分类 MySQL的字符型就是相当于字符串类型,所…...
Vue 中局部指令(directives)的用法详解
在 Vue.js 中,指令是一种特殊的属性,用于在 DOM 元素上绑定特殊行为。除了 Vue 内置的指令(如v-model、v-if),还可以自定义指令来封装可复用的功能。 什么是局部指令? 局部指令是在单个组件中定义和使用的…...
mac 基于Docker安装minio服务器
在 macOS 上基于 Docker 安装 MinIO 是一个高效且灵活的方案,尤其适合本地开发或测试环境。以下是详细的安装与配置步骤,结合了最佳实践和常见问题的解决方案: 一、安装 Docker Desktop 下载安装包 访问 Docker 官网,下载适用于 …...
Redis常用数据结构解析:从原理到实战应用
作为一名开发者,我深知Redis在缓存、队列等场景中的重要性。但要用好Redis,必须对其核心数据结构有透彻理解。本文将结合我的实践经验,详细讲解Redis五种最常用的数据结构及其典型应用场景,帮助你在开发中游刃有余。 一、String&…...
Druid监控sql导致的内存溢出
问题 druid监控sql在网页端显示,我的服务插入sql比较大,druid把执行过的sql保存在DruidDataSource类的成员变量JdbcDataSourceStat dataSourceStat; JdbcDataSourceStat类中的LinkedHashMap<String, JdbcSqlStat> sqlStatMap中&#…...
基于Python镜像创建docker镜像时pip install一直出现NewConnectionError的一种解决办法
用dockerfile创建docker镜像,在pip的时候一直是出现错误: 13.21 WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by NewConnectionError(<pip._vendor.urllib3.connection.HTTPSConn…...
【机器学习】朴素贝叶斯
目录 一、朴素贝叶斯的算法原理 1.1 定义 1.2 贝叶斯定理 1.3 条件独立性假设 二、朴素贝叶斯算法的几种常见类型 2.1 高斯朴素贝叶斯 (Gaussian Naive Bayes) 【训练阶段】 - 从数据中学习模型参数 【预测阶段】 - 对新样本 Xnew 进行分类 2. 2 多项式朴素贝叶斯 (…...
服务器硬件老化导致性能下降的排查与优化
随着企业数字化转型的深入,服务器作为IT基础设施的核心载体,其稳定性与性能直接影响业务连续性。然而,硬件老化导致的性能衰减问题普遍存在且易被忽视。本报告通过系统性分析服务器硬件老化现象,提出多维度排查方法与优化方案&…...
学习记录:DAY19
Docker 部署与项目需求分析 前言 人总是本能地恐惧未知,令生活陷入到经验主义的循环之中。但我们终将面对。今天的目标是把 Docker 部署学完,然后对项目进行需求分析。 日程 下午 4:30:Docker 部署项目部分学完了,做下笔记。晚…...
机器学习中的数据转换:关键步骤与最佳实践
机器学习中的数据转换:关键步骤与最佳实践 摘要 :在机器学习领域,数据是模型的核心,而数据的转换是构建高效、准确模型的关键步骤之一。本文深入探讨了机器学习中数据转换的重要性、常见的数据类型及其转换方法,以及在…...