C++面向对象的特性
面向对象
面向对象(Object-Oriented, 简称OO)是一种编程范式或编程风格,它使用“对象”来设计软件。面向对象的思想将现实世界中的事物(称为“对象”)映射到软件系统中,使得软件的设计更加符合人类的思维方式,提高了软件的可重用性、可维护性和可扩展性。
面向对象编程(Object-Oriented Programming, 简称OOP)是这种思想的具体实现方式。
三大特性
面向对象三大特性:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。
封装
作用:封装是面向对象编程的核心思想之一。它通过将对象的属性和方法结合在一个单独的单元中,并对对象内部的细节进行隐藏,只对外提供有限的接口(方法)来与对象进行交互。这样做的好处是提高了数据的安全性,防止外部代码直接访问或修改对象的内部状态,同时也降低了系统的耦合度,使得各个部分更加独立和易于维护。
继承
作用:继承是面向对象编程中实现代码复用的一种机制。它允许我们定义一个类(子类)来继承另一个类(父类)的属性和方法。子类可以继承父类的所有非私有属性和方法,并且可以添加新的属性和 ...
C++关键字和关键库函数细论
sizeof 与 strlen
sizeof和strlen在C语言中各有其独特的用途和限制。sizeof主要用于获取对象或类型所占的内存字节数,而strlen则用于计算字符串的长度(不包括终止的空字符)。
1234567char str[] = "Hello, World!"; char *ptr = str; printf("%zu\n", sizeof(str)); // 输出整个数组所占的字节数,包括终止符'\0',可能是13(取决于编译器和平台) printf("%zu\n", sizeof(ptr)); // 输出指针变量ptr所占的字节数,通常是4或8(取决于平台) printf("%zu\n", strlen(str)); // 输出字符串的长度,不包括终止符'\0',输出12 printf("%zu\n", strlen(ptr)); // 同样输出12,因为ptr指向str
static关键字
在C++中,stati ...
C++特性和新特性
C++特性和新特性
C++11
C++11是C++编程语言的一个重要标准版本,是C++98标准发布后13年来的第一次重大修正,它引入了许多新特性和改进,极大地增强了C++语言的表达能力和开发效率。
C++11是C++编程语言的一个重要标准版本,由国际标准化组织(ISO)和国际电工委员会(IEC)旗下的C++标准委员会(ISO/IEC JTC1/SC22/WG21)于2011年8月12日公布,并于2011年9月正式出版,其标准文件号为ISO/IEC 14882:2011。C++11是C++98标准发布后13年来的第一次重大修正,它引入了许多新特性和改进,极大地增强了C++语言的表达能力和开发效率。以下是对C++11的一些主要特性和改进的归纳:
核心语言的新机能
自动类型推导(auto):
C++11引入了auto关键字,用于自动推导变量的类型,使得代码更加简洁,特别是在处理复杂类型或模板类型时。
1234567891011121314151617#include <iostream> #include <vector> int main() { ...
markdown建议上手之-图表绘制
流程图绘制相关
mermaid简述
特性:Mermaid制图是一种基于文本的图表绘制方法,它使用类似于Markdown的语法来描述图表,并可以将其转换为SVG或其他图形格式进行展示。特点是简单易学功能强大,能够满足大部分简易制图要求,(要是太难了为什么不直接贴图呢)
其他:
Mermaid支持通过CSS样式来自定义图表的外观和布局。(不建议,太复杂不如贴图)
Mermaid图表可以导出为PNG、SVG等常见的图像格式。(不会,遇到了在学)
Mermaid支持插件和编辑器的集成,使得用户可以更加高效地使用和管理Mermaid图表。
在Markdown编辑器中,可以直接使用Mermaid语法来创建和渲染图表。(Typora可以)。
支持流程图、序列图、甘特图。
注意:
在markdown编辑中,要写在代码框里,所以要先在最开始打出```mermaid 唤醒这个对应代码(Typora里)。
简单的流程图:
123456graph TB A[开始] --> B[处理] B --> C{判断} C -- 是 --> D[结束] C -- 否 ...
计算机网络概述总结
计算网络体系概述
相关问题
计算机网络为什么要分层?
计算机网络是怎么分层的?
三种计算机网络模型的关系是什么?每一层分别包含哪些协议?
计算机网络中,数据如何在各层中传播?数据在网络各层中的存在形式是怎么样的?
OSI七层模型
OSI(Open Systems Interconnection)是开放系统互连参考模型的缩写,它是一个定义得非常好的协议规范集,它为各种系统定义了一个层次结构和一套用于协调与控制各层活动的规则,模型有七层结构。OSI模型的七层结构及其简要描述:
层次
名称
简要描述
1
物理层 (Physical Layer)
定义了物理设备标准,如网络接口、传输介质等,负责传输原始比特流。
2
数据链路层 (Data Link Layer)
在物理层提供的服务基础上,建立相邻节点之间的数据链路,进行差错控制和流量控制。
3
网络层 (Network Layer)
负责为分组交换网上的不同主机提供通信服务,实现路由选择和分组转发。
4
传输层 (Transport Layer)
提供端到端的通信服务,负责数据的分段、重组和差错控制,确保数据的可 ...
gdb调试工具详解
gdb调试详解
是 GNU 调试器(GNU Debugger)的缩写,它是一个功能强大的 Unix-like 系统下的源代码调试器。使用 gdb,程序员可以查看程序在运行时的状态,设置断点,单步执行代码,检查变量的值,以及执行其他调试任务。(在命令行终端中进行)
gdb启动流程
编译相关:编译链接的时候-g表示可以调试,如果要使用gdb调试记得加上
1gcc -g test.cpp -o test
启动gdb,示例如下:
12gdb test gbd -q test //表示不打印gbd版本信息,界面比较干净
gdb下查看源码:list
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152(gdb) list 9 #define MAX_SIZE10 11 int main()12 {13 int i,fd,size1 ,size2 ,len;14 char *buf = "helo!I'm ...
C++编译和内存管理
C++编译和内存管理
内存管理
ELF文件(可执行可链接文件):
是Linux等类Unix操作系统中用于表示可执行文件、共享库、目标文件和核心转储文件的标准二进制文件格式。每个 ELFELF 文件都由一个 ELF header 和紧跟其后的文件数据部分组成。
C++内存分区:
C++内存分区在程序执行时,为了更有效地管理内存资源,通常将内存划分为不同的区域。
程序存储区
全局/静态存储
栈区
堆区
常量存储区
操作系统管理,运行期间不变
执行时已分配好,运行期间不变
编译器管理,分配和释放的效率很高
程序员管理,要自己要求和释放
存放常量,运行期间不变
以下是C++内存分区的详细解释:
程序存储区(程序代码区)
功能:存放函数体的二进制代码,由操作系统进行管理。
特点:这部分内存主要存储了程序的指令和数据结构,它们在程序开始执行时就已经加载到内存中,并在程序运行期间保持不变
全局/静态存储区
功能:存放全局变量和静态变量(包括全局静态变量和局部静态变量)。
特点:
在程序开始执行时,这部分内存就已经分配好了,并且它们的存储单元是固定的。
变量的生命周期与程序 ...
Per_FedAVG源码分析总领
data_dataset.py
这段代码定义了两个自定义的PyTorch数据集类:MNISTDataset 和 CIFARDataset。这两个类都继承自PyTorch提供的Dataset类,这使得它们能够与PyTorch的数据加载器一起使用。
MNISTDataset是为MNIST数据集设计的,该数据集包含28x28像素的灰度手写数字图像。CIFARDataset是为CIFAR数据集设计的,该数据集包含32x32像素的彩色图像,分为10个不同的类别(飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车)。
这两个数据集的构造函数和方法都相同,唯一的区别是数据集的名称(这并不影响其功能)。构造函数接受数据子集和目标,或者单独的数据和目标张量。它还接受可选的transform和target_transform函数,这些函数可以在迭代数据集时用于对数据和目标应用变换。
__getitem__方法为给定的索引返回一个数据样本及其相应的目标。如果提供了变换函数,它将应用于数据样本。如果提供了target_transform函数,它将应用于目标。
__len__方法返回数据集中的样本数量。
data_ ...
shell脚本编写基础
shell脚本编辑
具体了解推荐:Linux实操篇——shell入门
shell:
概念:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
性质:一个命令行解释器,解释由用户输入的命令并把它们送到内核去执行。
作用:用户与内核进行交互的接口,负责接收用户输入的命令并送入内核执行
shell脚本:
概念:用于编写自动化任务、批处理脚本和系统管理脚本的脚本语言
性质:利用Shell的功能所写的程序,写入到一个纯文本文件中。
作用:自动化执行一系列命令,减少手动操作的工作量,提高工作效率。
shell命令:
Shell常见命令涵盖了文件目录操作、系统状态查看、网络配置与诊断、文件压缩与解压缩等多个方面。
文件目录类
ls 列出目录内容
1234ls -l :显示详细的文件信息ls -a :显示隐藏文件ls -lS :以人类可读格式显示文件大小ls -lh :按文件大小排序
cd 切换目录
12345cd :切换到当前用户的home目录cd /path/bbb :切换到指定目录。cd .. :返回上一级目录。popd :返回到前一个工作目录
pwd 显示当前目录路 ...
Per_FedAVG源码分析
Per_FeAVG源码分析——根目录下:
KarhouTam的Per_FedAVG.源码链接:请使用到的点个star
utils.py
函数:get_args()
功能:用于加载参数:使用ArgumentParser()输入了联邦参数,模型参数,其他参数三类参数
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253import torchimport randomimport numpy as npfrom typing import Iterator, Tuple, Unionfrom argparse import ArgumentParserdef get_args(): parser = ArgumentParser() ##‘--alpha’表示参数名称,type代表参数类型,default代表默认值设置,help则是对alpha的描述性解释。 parser.add_argument("--alpha&quo ...


