C++:入门详解(关于C与C++基本差别)
目录
一.C++的第一个程序
二.命名空间(namespace)
1.命名空间的定义与使用:
(1)命名空间里可以定义变量,函数,结构体等多种类型
(2)命名空间调用(::)与展开
(3)命名空间的嵌套
(4)具体使用场景
三.缺省参数
1.基本定义:
2.几个注意:
四.函数重载
1.定义与使用:
五.引用
1.定义:
2.引用的特性:
3.引用的使用(区别传值返回和传引用返回):
4.const引用:
六.inline内联
一.C++的第一个程序
C++作为C语言的升级版,除了可以无缝兼容C语言的各种语法结构和各种框架外,在很大程度上对C语言的许多代码进行了优化升级,在保持原有代码逻辑结构相同的情况下,C++的简便性和应用性相比C语言不可同日而语,以下我要阐述的就是在学完C语言然后进入C++后需要掌握的一些基础知识:首先来看第一个C++程序
#include<iostream>//C++需要包含的头文件 using namespace std;//展开对应的命名空间 int main() {cout << "hello world" << endl;//区别于C语言的输出方式 //cout<<输出内容,后面的endl是换行(endline),但和C语言里面的\n不用,endl是一个函数。return 0; }
基础结构大概就是这样,下面就是对每一部分的具体介绍:
二.命名空间(namespace)
1.命名空间的定义与使用:
书面上的定义简而言之是:namespace的本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量
(1)命名空间里可以定义变量,函数,结构体等多种类型
#include<iostream> namespace space { //定义变量int rand = 10;char time = 20; //定义函数int add(int a, int b){return a + b;} //定义结构体struct student{char name[20];char sex[6];int age;}; } int main() {return 0; }
(2)命名空间调用(::)与展开
在调用的时候,只要用空间名::函数名这样的格式来调用
#include<iostream> int main() {std::cout << "hello world" << std::endl;return 0; }
也可以只展开一个命名空间中的某个变量或函数,这样的话访问这个变量或函数就更简便
#include<iostream> using namespace std; namespace b {int test(int x, int y){return x + y;} } using b::test; int main() {int m = test(1, 5);cout << m;return 0; }
(3)命名空间的嵌套
#include<iostream> using namespace std; namespace a {int test(int x, int y){return x + y;}namespace b{int test(int x, int y){return x * y;}}} int main() {int m = a::test(2, 3);int n = a::b::test(2, 3);cout << m << " " << n;return 0; }
(4)具体使用场景
#include <stdio.h> #include <stdlib.h> int rand = 10; int main() {// 编译报错:error C2365: “rand”: 重定义;以前的定义是“函数” printf("%d\n", rand);return 0; }
这样写c语言会报错:报错的原因就是我们自己定的变量rand和C语言自带的库函数冲突了,这时候编译器就无法识别,这其实是C语言的不足之处。而c++中的命名空间就完美的解决这个问题
三.缺省参数
1.基本定义:
在函数定义时为参数指定的默认值,当调用函数时如果没有传递该参数,则使用默认值。这样可以提高函数的灵活性和可重用性
举例例如一个计算面积的函数,参数有长和宽,其中宽可以设为默认值1,这样调用时只传长就可以得到正方形的面积,这样的例子比较直观#include<iostream> using namespace std; int test(int x = 2, int y = 6) {return x + y; } //如果调用这个函数但是不传递参数,那么返回结果就是8,同样如果掺入参数1和2,那么返回结果就是3
2.几个注意:
(1)缺省参数必须从右往左给,比如上面的程序,我们只给x缺省参数但不给y缺省参数这样其实是不合法的
(2)函数实参一定是从左往右给函数的
(3)函数声明和定义分离时,不能在声明和定义中同时给缺省值
#include<iostream> using namespace std;int test(int x = 1, int y = 2); int main() {int a = test();cout << a;return 0; } int test(int x = 1, int y = 2) {return x + y; } //比如这样同时个给缺省值的函数是不合法的,一般只在声明中给缺省值
四.函数重载
1.定义与使用:
即重名函数可以通过识别传入的参数类型来自动选择相对应的函数,例如:
#include<iostream> using namespace std;int test(int x , int y ) {return x + y; } double test(double x, double y) {return x + y; } int main() {double x = 1.5, y = 2.8;int a = test(1,2);double b = test(x, y);cout << a <<" "<< b ;return 0; }
五.引用
1.定义:
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间,但实际上在C++的底层逻辑里引用依旧是以指针的形式存在,但我们在实际使用中并不需要考虑那么多,就当引用是C++给我们带来的一种更加方便写代码的方法就行了,以下是引用使用的基本规则:
类型& 引用别名=引用对象
#include<iostream> using namespace std; int main() {int a = 30;//一个变量可以取多个别名int& b = a;//给a变量取别名int& c = a;//c也是a的别名int& d = b;//给b变量取别名,相当于d也是a的别名cout << &a << endl << &b << endl << &c << endl << &d << endl;//从地址中也可以看出来a,b,c,d占用同一块内存空间return 0;}
当然,引用相对指针是非常方便好理解的,我举个例子:
#include<iostream> using namespace std; //传址调用,指针 void swap(int* a, int* b) {int tmp = *a;*a = *b;*b = tmp; } //引用 void swap(int& a, int& b)//函数重载 {int tmp = a;a = b;b = tmp; } int main() {int a = 10;int b = 20;swap(a, b);swap(a, b);return 0; }
2.引用的特性:
(1)引用必须在定义时初始化。比如int& a=0;这句代码其实是不合法的
(在 C++ 中,引用必须在定义时初始化,这意味着当声明一个引用变量时,必须立即将其绑定到一个已存在的对象(变量、常量或表达式的结果),与普通变量不同,普通变量可以在后续赋值时初始化)
(2)一个变量可以有多个引用
(3)引用一旦引用一个实体,再不能引用其他实体
举个栗子:
#include<iostream> using namespace std;int main() {int a = 10;int& b = a;int c = 20;b = c;cout << &a <<" "<< &b <<" "<< &c << endl;cout << a <<" "<< b <<" "<< c << endl;return 0; } //这里进行了b=c的操作,只是把c的值赋值给了b,但并没有改变b的引用实体,因此a和b地址是相同的
3.引用的使用(区别传值返回和传引用返回):
引用在实践中主要是于引用传参和引用做返回值中减少拷贝提高效率和改变引用对象时同时改变被 引用对象
引用传参介绍过了,然后我们看一下引用做返回值(即传引用返回)与传值返回区别
int STTop(ST& rs)//注意这里是传值返回(因为返回类型是int二百元引用类型的int&) {assert(rs.top > 0);return rs.a[rs.top]; } int main() {ST st1;STInit(st1);STPush(st1, 1);//入栈STPush(st1, 2);STTop(st1)+=10;return 0; }
截取了一部分之前栈的操作,发现对于STTop(st1)+=10;这个操作无法达到目的,
我们本意想的是让栈顶的数据加上10,但是实际上栈顶的数据并没有改变
这是因为这串代码返回的是一个值,相当于我们把原来的数拷贝出了他的值然后返回了,
因此就算把这份拷贝的值加上10也无法改变原来的栈顶数据
以上发生的情况就是由传值引用引发的,传值引用简而言之就是为了保护源数据不被修改的场景二存在,通过返回对栈顶元素的值的拷贝,从而使实际上的栈顶元素不受改变
但如果代码这样改,就可以轻易改变栈顶元素的值:
(即传引用返回)
int& STTop(ST& rs) {assert(rs.top > 0);return rs.a[rs.top]; } int main() {ST st1;STInit(st1);STPush(st1, 1);STPush(st1, 2);STTop(st1)+=10;return 0; }
4.const引用:
const引用简而言之就是对引用范围的缩小:即 const对象必须用const引用,普通对象也可以用const引用,但普通引用引用不了const对象
#include<iostream> using namespace std; int main() {const int a = 10;//只可读//int& b = a;//发生错误,b可读可写,权限变大//应加上const const int& b = a;int c = 20;const int& d = c;//权限缩小,可以c++;//d++不可以;c可以改变,d不可以return 0; }
这些就涉及到权限的问题,普通对象是一个变量,可以被改变的,所以他的权限更低。而const对象不能被改变所以他的权限更高。普通引用引用const对象权限就放大了,所以编译器会报错,反过来const引用可以引用普通对象,因为权限是可以缩小的,总结来说:访问权限可以缩小,但是不能放大(访问权限只针对引用和指针)
六.inline内联
在 C++ 中,内联函数(Inline Functions)是一种优化机制,旨在通过在编译时将函数体直接替换到调用位置,减少函数调用的开销(如栈帧压入/弹出、参数传递等)
#include<iostream> using namespace std; inline int add(int x,int y) {return x + y; } int main() {cout << add(1, 5) << endl;return 0; }
对于短小的函数,inline操作会使函数在编译时展开,可以提高效率。但是如果这个函数过长就不适合使用内联了,过长的函数内联反而会降低时间,因此,内联函数也并不是万能的
还有一点非常值得注意,就是内联函数的定义和声明必须在同一个文件
欧克了,C++的入门知识大概就是这些了,相比C语言,还是由很多需要管制与在意的地方,那就先这样吧
全文终
相关文章:
C++:入门详解(关于C与C++基本差别)
目录 一.C的第一个程序 二.命名空间(namespace) 1.命名空间的定义与使用: (1)命名空间里可以定义变量,函数,结构体等多种类型 (2)命名空间调用(…...
CI/CD—GitLab钩子触发Jenkins自动构建项目
GitLab钩子简介: 项目钩子 项目钩子是针对单个项目的钩子,会在项目级别的特定事件发生时触发。这些事件包括代码推送、合并请求创建、问题创建等。项目钩子由项目管理员或具有相应权限的用户进行配置,仅对特定项目生效。 使用场景:…...
RPA 职业前景:个人职场发展的 “新机遇”
1. RPA职业定义与范畴 1.1 RPA核心概念 机器人流程自动化(RPA)是一种通过软件机器人模拟人类操作,自动执行重复性、规则性任务的技术。RPA的核心在于其能够高效、准确地处理大量数据和流程,减少人工干预,从而提高工作…...
【CSS3】金丹篇
目录 标准流概念元素类型及排列规则块级元素行内元素行内块元素 标准流的特点打破标准流 浮动基本使用清除浮动额外标签法单伪元素法双伪元素法(推荐)overflow 法 Flex 布局Flex 组成主轴对齐方式侧轴对齐方式修改主轴方向弹性盒子伸缩比弹性盒子换行行对…...
Git(一)
一、介绍 二、Git代码托管服务 三、Git常用命令 全局设置: 获取Git仓库: 工作区、暂存区、版本库概念: Git工作区文件的状态: 本地仓库操作: 远程仓库操作: 分支操作: 标签操作: 四…...
Python大数据可视化:基于spark的短视频推荐系统的设计与实现_django+spider
开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 热门视频界面 用户界面 用户反馈界面 论坛交流界面 系统…...
面试题之react useMemo和uesCallback
在面试中,关于 React 中的 useMemo 和 useCallback 的区别 是一个常见的问题。 useMemo 和 useCallback 的区别 1. 功能定义 useMemo: 用于缓存计算结果,避免在每次组件渲染时重新计算复杂的值。它接受一个计算函数和一个依赖数组࿰…...
K8S学习之基础十九:k8s的四层代理Service
K8S四层代理Service 四层负载均衡Service 在k8s中,访问pod可以通过ip端口的方式,但是pod是由生命 周期的,pod在重启的时候ip地址往往会发生变化,访问pod就需要新的ip地址,这样就会很麻烦,每次pod地址改变就…...
C++:string容器(下篇)
1.string浅拷贝的问题 // 为了和标准库区分,此处使用String class String { public :/*String():_str(new char[1]){*_str \0;}*///String(const char* str "\0") // 错误示范//String(const char* str nullptr) // 错误示范String(const char* str …...
sudo systemctl restart docker 重启docker失败
一般会使用如下命令,进行docker重启。 sudo systemctl daemon-reload sudo systemctl restart docker 重启失败时,会提示:Job for docker.service failed because the control process exited with error code. See "systemctl status…...
Linux基本操作指令3
1、wget: 这是一个用于从网络上下载文件的命令行工具。它支持 HTTP、HTTPS 和 FTP 协议。 wget http://download.qt.io/archive/qt/5.12/5.12.9/qt-opensource-linux-x64-5.12.9.run 2、下载完成后,你可以通过以下命令使文件可执行并运行安装程序: ch…...
React:类组件(上)
kerwin老师我来了 类组件的创建 class组件,js里的类命名首字符大写,类里面包括构造函数,方法 组件类要继承React.Component才有效 必须包含render方法 import React from react class App extends React.Component{render() {return <…...
sqli-lab靶场学习(七)——Less23-25(关键字被过滤、二次注入)
前言 之前的每一关,我们都是在末尾加上注释符,屏蔽后面的语句,这样我们只要闭合了区间之后,差不多就是为所欲为的状态。但如果注释符不生效的情况下,又该如何呢? Less23(注释符被过滤ÿ…...
虚函数和虚表的原理是什么?
虚函数是一个使用virtual关键字声明的成员函数,在基类中声明虚函数,在子类中可以使用override重写该函数。虚函数根据指针或引用指向的实际对象调用,实现运行时的多态。 虚函数表(虚表)是一个用于存储虚函数地址的数组…...
RReadWriteLock读写锁应用场景
背景 操作涉及一批数据,如订单,可能存在多个场景下操作,先使用读锁,从redis缓存中获取操作中数据 比如 关闭账单, 发起调账, 线下结算, 合并支付 先判断当前操作的数据,是否在…...
【面试】MySQL
MySQL 1、数据库三范式2、什么是关系型数据库,什么是非关系型数据库3、什么是数据库存储引擎4、MySQL5.x和8.0有什么区别5、char 和 varchar 的区别6、in 和 exists 的区别7、MySQL 时间类型数据存储建议8、drop、delete 与 truncate 区别9、一条 Sql 的执行顺序10、…...
Trae AI 开发工具使用手册
这篇手册将介绍 Trae 的基本功能、安装步骤以及使用方法,帮助开发者快速上手这款工具。 Trae AI 开发工具使用手册 Trae 是字节跳动于 2025 年推出的一款 AI 原生集成开发环境(IDE),旨在通过智能代码生成、上下文理解和自动化任务…...
表格columns拼接两个后端返回的字段(以umi框架为例)
在用组件对前端项目进行开发时,我们会遇到以下情况:项目原型中有取值范围这个表字段,需要存放最小取值到最大取值。 而后端返回给我们的数据是返回了一个最小值和一个最大值, 在columns中我们需要对这两个字段进行拼接࿰…...
常见的算法题python
字符串倒序 def func1(str):return str[::-1] def func2(str):new_str ""for i in str:new_str inew_strreturn new_str if __name____main__:str"linda"print(func2(str))合并两个有序的列表 def func3(list1,list2):for i in list1:list2.append(i)li…...
linux学习(十)(磁盘和文件系统(索引节点,文件系统,添加磁盘,交换,LVM公司,挂载))
Linux 磁盘文件系统 Linux 使用各种文件系统来允许我们从计算机系统的硬件(例如磁盘)存储和检索数据。文件系统定义了如何在这些存储设备上组织、存储和检索数据。流行的 Linux 文件系统示例包括 EXT4、FAT32、NTFS 和 Btrfs。 每个文件系统都有自己的…...
k8s v1.28.15部署(kubeadm方式)
k8s部署(kubeadm方式) 部署环境及版本 系统版本:CentOS Linux release 7.9.2009 k8s版本:v1.28.15 docker版本:26.1.4 containerd版本:1.6.33 calico版本:v3.25.0准备 主机ip主机名角色配置1…...
Python开发Scikit-learn面试题及参考答案
目录 如何用 SimpleImputer 处理数据集中的缺失值? 使用 StandardScaler 对数据进行标准化的原理是什么?与 MinMaxScaler 有何区别? 如何用 OneHotEncoder 对类别型特征进行编码? 解释特征选择中 SelectKBest 与 VarianceThreshold 的应用场景。 如何通过 PolynomialFe…...
Java在小米SU7 Ultra汽车中的技术赋能
目录 一、智能驾驶“大脑”与实时数据 场景一:海量数据的分布式计算 场景二:实时决策的毫秒级响应 场景三:弹性扩展与容错机制 技术隐喻: 二、车载信息系统(IVI)的交互 场景一:Android Automo…...
蓝队第三次
1.了解什么是盲注 盲注(Blind SQL Injection)是SQL注入的一种形式,攻击者无法直接通过页面回显或错误信息获取数据,而是通过观察页面的布尔状态(真/假)或时间延迟来间接推断数据库信息。例如,通…...
Element Plus中的树组件的具体用法(持续更新!)
const defaultProps {//子树为节点对象的childrenchildren: children,//节点标签为节点对象的name属性label: name, } 属性 以下是树组件中的常用属性以及作用: data:展示的数据(数据源) show-checkbox:节点是否可…...
nodejs使用WebSocket实现聊天效果
在nodejs中使用WebSocket实现聊天效果(简易实现) 安装 npm i ws 实现 创建 server.js /*** 创建一个 WebSocket 服务器,监听指定端口,并处理客户端连接和消息。** param {Object} WebSocket - 引入的 WebSocket 模块,…...
通领科技冲刺北交所
高质量增长奔赴产业新征程 日前,通领科技已正式启动在北交所的 IPO 进程,期望借助资本市场的力量,加速技术升级,推动全球化战略布局。这一举措不仅展现了中国汽车零部件企业的强大实力,也预示着行业转型升级的新突破。…...
利用LLMs准确预测旋转机械(如轴承)的剩余使用寿命(RUL)
研究背景 研究问题:如何准确预测旋转机械(如轴承)的剩余使用寿命(RUL),这对于设备可靠性和减少工业系统中的意外故障至关重要。研究难点:该问题的研究难点包括:训练和测试阶段数据分布不一致、长期RUL预测的泛化能力有限。相关工作:现有工作主要包括基于模型的方法、数…...
comctl32!ListView_OnSetItem函数分析LISTSUBITEM结构中的image表示图标位置
第一部分: BOOL ListView_SetSubItem(LV* plv, const LV_ITEM* plvi) { LISTSUBITEM lsi; BOOL fChanged FALSE; int i; int idpa; HDPA hdpa; if (plvi->mask & ~(LVIF_DI_SETITEM | LVIF_TEXT | LVIF_IMAGE | LVIF_STATE)) { …...
Django工程获取请求参数的几种方式
在 Django 中获取请求参数的完整方法如下: 一、GET 请求参数获取 def view_func(request):# 获取单个参数(推荐方式)name request.GET.get(name, default) # 带默认值age request.GET.get(age, 0)# 获取多个同名参数(如复选框…...
使用Qt调用HslCommunication(C++调用C#库)
使用C/CLI 来调用C#的dll 任务分解: 1、实现C#封装一个调用hsl的dll; 2、实现C控制台调用C#的dll库; 3、把调用C#的dll用C再封装为一个dll; 4、最后再用Qt调用c的dll; 填坑: 1、开发时VS需要安装CLI项目库…...
C++中的构造函数
目录 一、什么是构造函数: 二、构造函数的特性和使用: 1、构造函数的特性: 2、构造函数的重载: 三、默认生成的构造函数: 一、什么是构造函数: 在C中,当创建一个对象之后,就会自…...
MySQL知识点(第一部分)
MySQL 基础: 1、SQL语句的分类: DDL:用于控制数据库的操作DML:用于控制表结构的字段,增、删、修DQL:用于查询语句DCL:用于管理数据库,用户,数据库的访问 权限。 2、M…...
Lua怎么学?Lua编程实战:从基础语法到高级特性
朋友们,大家好,我是袁庭新。我的《Lua编程实战:从基础语法到高级特性》教程上线了!这是一套从零掌握Lua编程,涵盖基础到高级,以实战驱动,快速上手Lua开发的精品教程! 我为什么要研发…...
Qt常用控件之 纵向列表QListWidget
纵向列表QListWidget QListWidget 是一个纵向列表控件。 QListWidget属性 属性说明currentRow当前被选中的是第几行。count一共有多少行。sortingEnabled是否允许排序。isWrapping是否允许换行。itemAlignment元素的对齐方式。selectRectVisible被选中的元素矩形是否可见。s…...
Manus无需邀请码即可使用的平替方案-OpenManus实测
文章目录 Manus 简介核心定位技术架构核心特点应用场景性能表现用户体验发展计划OpenManus技术架构与设计理念核心功能特性应用场景案例与闭源Manus的差异对比安装使用与实战演示执行过程记录简单案例-快速写一个helloworld的java程序复杂案例-分析特斯拉汽车近三年财务数据并生…...
git如何解除远程仓库 改变远程仓库地址
这三个命令通常一起使用来更改项目的远程仓库地址: 查看当前远程仓库配置:git remote -v移除旧的远程仓库配置:git remote remove origin添加新的远程仓库配置:git remote add origin 新的远程仓库地址 要解除当前项目的远程仓库…...
VSCode 配置优化指南:打造高效的 uni-app、Vue2/3、JS/TS 开发环境
VSCode 配置优化指南,适用于 uni-app、Vue2、Vue3、JavaScript、TypeScript 开发,包括插件推荐、设置优化、代码片段、调试配置等,确保你的开发体验更加流畅高效。 1. 安装 VSCode 如果你还未安装 VSCode,可前往 VSCode 官网 下载最新版并安装。 2. 安装推荐插件 (1) Vue…...
云计算:虚拟化、容器化与云存储技术详解
在上一篇中,我们深入探讨了网络安全的核心技术,包括加密、认证和防火墙,并通过实际案例和细节帮助读者全面理解这些技术的应用和重要性。今天,我们将转向一个近年来迅速发展的领域——云计算。云计算通过提供按需访问的计算资源,彻底改变了IT基础设施的构建和管理方式。本…...
oracle 数据导出方案
工作中有遇到需要将oracle 数据库表全部导出,还需要去除表数据中的换行符。 方案 shell 设计 封装函数 1 function con_oracle() 用于连接oracle 2 function send_file() 用于发送文件 3 主程序 使用循环将所有表导出并发送到数据服务器 主程序 程序代码 #!…...
电商项目-秒杀系统(四)秒杀异步下单防止重复秒杀
一、 防止恶意刷单解决 在生产场景下,可能会有一些人会恶意访问当前网站,来进行恶意的刷单。这样会造成当前系统出现一些业务上的业务混乱,出现脏数据,或者造成后端访问压力大等问题。 一般要解决这个问题的话,前端可…...
Express 中 get 参数获取
1. 使用 req.query 获取 URL 查询字符串参数 在 GET 请求中,参数通常以查询字符串的形式附加在 URL 后面,格式为 ?参数名1值1&参数名2值2 。Express 里可通过 req.query 对象获取这些参数。 const express require("express"); const …...
《Python实战进阶》No17: 数据库连接与 ORM(SQLAlchemy 实战)
No17: 数据库连接与 ORM(SQLAlchemy 实战) 摘要 本文深入探讨SQLAlchemy在复杂场景下的高级应用,涵盖四大核心主题: 会话生命周期管理:通过事件钩子实现事务监控与审计追踪混合继承映射:结合单表/连接表继…...
运行OpenManus项目(使用Conda)
部署本项目需要具备一定的基础:Linux基础、需要安装好Anaconda/Miniforge(Python可以不装好,直接新建虚拟环境的时候装好即可),如果不装Anaconda或者Miniforge,只装过Python,需要确保Python是3.…...
Linux一键美化命令行,一键安装zsh终端插件
zsh应该是很多人第一个用的Linux终端美化软件 但是其安装略微复杂,让人有些困扰 所以我花了两天写了一键安装脚本,实测运行后直接安装好 适用于Ubuntu、Debian、Red Hat、macOS等系统 直接安装好zsh 以及常用插件 autojump 跳转插件 zsh-syntax-highlig…...
OpenManus介绍及本地部署体验
1.OpenManus介绍 OpenManus,由 MetaGPT 团队精心打造的开源项目,于2025年3月发布。它致力于模仿并改进 Manus 这一封闭式商业 AI Agent 的核心功能,为用户提供无需邀请码、可本地化部署的智能体解决方案。换句话说,OpenManus 就像…...
2025-03-09 学习记录--C/C++-PTA 习题10-7 十进制转换二进制
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 裁判测试程序样例: #include <stdio.h>void dectobin( int n );int main() {int n;scanf(…...
计算机网络----主要内容简介
这里写目录标题 章节概览每章的大体结构结构功能与服务的关系 一些概念概念一概念二传统的网络层的工作方式(路由IP)现代的网络层的工作方式(SDN) 章节概览 其中,网络层分为了两章 下面的红色部分是部分选修 每章的大…...
基于python大数据的招聘数据可视化与推荐系统
博主介绍:资深开发工程师,从事互联网行业多年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有…...
VBA高级应用30例Excel中ListObject对象:提取表内单元格的格式元素
《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以…...