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

从C语言向C++过渡

文章目录

  • 前言
  • 1.命名空间
    • 1.域的概念
    • 2.命名空间的使用
  • 2.C++输入&输出
  • 3.缺省参数
    • 1.概念
    • 2.分类
    • 3.注意事项
  • 4.函数重载
  • 5.引用
    • 1.概念
    • 2.使用注意事项
    • 3.引用使用场景
    • 4.指针和引用的区别
  • 6.内联函数
  • 7.auto关键字
  • 8.nullptr

前言

C++被成为带类的C,本文由C语言向C++过度,将会初步介绍C++中为补充C语言语法的不足所产生的特有的功能。为以后深入学习C++打基础。


1.命名空间

1.域的概念

我们知道在C语言中有两个熟知的作用域分别全局域和局部域。C++中引入了一个特别的符号,作用域限定符::。

在这里插入图片描述
我们知道当一个变量被重复定义时,优先使用局部变量。我们看到一个a打印出来就是20,第二个a使用了作用域限定符::,左边为空表示会在全局查找,所以第二个打印结果是10。如果此时去掉全局的int a=10,程序就会报错。

C++引入了一个关键字namespace命名空间。这个关键字有什么用呢?我们来看一段代码。

在这里插入图片描述


在上述代码中我们的链表节点和队列节点命名是一样的,在运行的时候就会报错类型重定义,在C语言中如果出现了这样的情况只能改名字。但是C++中引入命名空间,namespace就是给命名空间命名的。
在这里插入图片描述

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间只会改变命名空间中成员的作用域,而不影响生命周期。


2.命名空间的使用

  • 1.使用::单个展开
    在这里插入图片描述
命名空间 :: 命名空间中的成员

单个展开比较麻烦,相当于是用一次展开一次。


  • 2.部分展开

上述中单个展开用一次展开一次比较麻烦,可以针对命名空间比较常用的成员全部展开。

在这里插入图片描述

using 命名空间 :: 空间成员
  • 3.全部展开

关于全局展开,一旦展开后命名空间后该空间中的所有成员的限制都会失效,就相当于该命名空间不存在了。
在这里插入图片描述

using namespace 命令空间   //该命令空间就全部展开了

一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中,但空间内部成员的生命周期是不受影响的。在实际开发中一般都是部分展开或者每次单个展开,但是在平时学习中嫌麻烦可以全部展开,就比如经常对std这个命名空间全部展开。

补充一点命名空间是可以嵌套使用的
在这里插入图片描述


2.C++输入&输出

使用cin和cout进行输入输出,和C语言中的printf和scanf一样,cin和cout是C++提供的输入输出库函数。使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件 以及按命名空间使用方法使用std。官方将cin和cout都封装在std这个命名空间中 cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< iostream >头文件中。

<<是流插入运算符,>>是流提取运算符。 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。实际上cout和cin分别是ostream和istream类型的对象,>>和<<也涉及运算符重载等知识,后续将会介绍,这里我们先学会简单的使用即可。


注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应
头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h


3.缺省参数

1.概念

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。

在这里插入图片描述

通过上图我们可以看出当我们没有传参时,f使用的是给定的缺省参数


2.分类

  • 1.全缺省参数

全缺省参数就是给每个函数的形参设定缺省值

在这里插入图片描述


  • 2.半缺省参数

半缺省就是函数部分形参设定了缺省值

在这里插入图片描述
图中只有c给了缺省值,这就是半缺省


3.注意事项

我们在给函数形参缺省值的时候只能从右往左连续给,全缺省函数传参时只能从从左往右依次传参,不能跳跃。

在这里插入图片描述


在这里插入图片描述



缺省参数不能在函数声明和定义中同时出现,函数声明的写缺省值即可。缺省值必须是常量或者全局变量.

在这里插入图片描述


4.函数重载

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这
些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型
不同的问题。

  • 1.参数类型不同
    在这里插入图片描述

  • 2.、参数个数不同
    *在这里插入图片描述

  • 3参数类型顺序不同

在这里插入图片描述


仅仅是返回值不同是不构成函数重载的。


为什么C++支持函数重载,而C语言不支持函数重载呢?
在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接。在链接阶段,我们可以知道,会进行符号汇总函数地址也会被链接在一起。不同编译器在链接时对函数地址修饰规则都不一样,一般来说Linux中C语言的函数地址就是函数名,C++的函数地址是函数名和函数形参的组和。

在这里插入图片描述

我们可以看出gcc的函数修饰后名字不变,而g++的函数修饰后变成【_Z+函数长度+函数名+类型首字母】。通过这里就理解了C语言没办法支持重载,因为同名函数没办法区分。而C++是通过函数修饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。如果两个函数函数名和参数是一样的,返回值不同是不构成重载的,因为调用时编译器没办法区分。


5.引用

1.概念

引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空
间,它和它引用的变量共用同一块内存空间。引用的符号和取地址的符号是一样的都是&。

在这里插入图片描述


类型& 引用变量名(对象名) = 引用实体;引用类型必须和引用实体是同种类型的.
我们看到a和b地址是一样的打印a和b也是相等的,引用就相当于给别人起绰号。多个名字指向的都是同一个人。引用就是给变量起别名。


2.使用注意事项

1.引用在定义时必须初始化
2. 一个变量可以有多个引用
3. 引用一旦引用一个实体,再不能引用其他实体
4.引用也可以嵌套使用,可以给引用使用引用

在这里插入图片描述


在这里插入图片描述


还要补充一点,引用变量的权限不能超过引用实体。

在这里插入图片描述


在这里插入图片描述


再来看一个例子
在这里插入图片描述

b引用没问题,c引用有问题这是为啥呢?a是int类型引用类型是double,两个不同类型的变量再转化的时候其实会产生一个临时变量,这个临时变量是double类型原来赋值,这个临时变量是具有常性的,只能被读,所以c引用时放大了权限,所以就有问题。

对于引用变量来说权限不能被放大只能被缩小


3.引用使用场景

  • 1.作为函数参数

我们在用C语言写交换换函数时是用变量地址传参,因为形参是实参的一份临时拷贝,只有传地址才能改变实参的值。C++中的引用作为参数就不用传地址了。

在这里插入图片描述


需要改变实参的时候就可以考虑使用引用作为形参。

  • 2.做返回值

关于做返回值,这里要提一点函数栈帧的知识了。

在这里插入图片描述
这里大概简单的了解了函数返回值


我们来看这样的一段代码

在这里插入图片描述

为啥会出现这样的现象呢?我们使用引用作为Add的返回值类型,所以返回的就是n,我们之前说过函数调用完成会销毁栈帧,n应该被销毁了才对,为啥还能返回7呢?首先这里的的销毁不是说这片空间消失不见了,只是说这块空间原来被系统分配给了Add函数使用,现在被系统收回使用权,块空间不再给Add函数使用了,因为这块空间目前还未被使用所以说这块空间可能没有被写入数据,所以返回的依然是7。当我们使用cout打印的时候原来函数栈帧空间可能被系统写入新的数据,这样第二次打印的时候就出现了随机值。访问这样的空间是非法的,所以在使用引用作为返回值的时候如果函数返回时,出了函数作用域,如果返回对象还在(还没还给系统),则可以使用引用返回,如果已经还给系统了,则必须使用传值返回。

在这里插入图片描述
比如这种,就可以用引用作为返回值。同时也会减少不必要的性能消耗,因为没有进行临时拷贝


以值作为参数或者返回值类型,在传参和返回期间,函数不会直接传递实参或者将变量本身直接返回,而是传递实参或者返回变量的一份临时的拷贝,因此用值作为参数或者返回值类型,效率是非常低下的,尤其是当参数或者返回值类型非常大时,效率就更低。


4.指针和引用的区别

在语法概念上引用就是一个别名,没有独立空间,和其引用实体共用同一块空间。底层实现上实际是有空间的,因为引用是按照指针方式来实现的。
1. 引用概念上定义一个变量的别名,指针存储一个变量地址。
2. 引用在定义时必须初始化,指针没有要求
3.引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何 一个同类型实体
4. 没有NULL引用,但有NULL指针
5. 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32 位平台下占4个字节)
6. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小
7.访问实体方式不同,指针需要显式解引用,引用编译器自己处理
8.有多级指针,但是没有多级引用.引用比指针使用起来相对更安全


6.内联函数

以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。c++之所以出现内联函数,是因为C语言中的宏的不太好用。宏有以下的缺点:1.不方便调试宏。(因为预编译阶段进行了替换) 2.导致代码可读性差,可维护性差,容易误用。 3.没有类型安全的检查 。但是对于一些功能比较简单且单一的函数来说,使用宏实现不用建立函数栈帧,可以提高性能,这是它最大的优点。因此为了避免使用宏但是又不影响程序性能,就产生了内联函数。

1. inline是一种以空间换时间的做法,如果编译器将函数当成内联函数处理,在编译阶段,会用函数体替换函数调用,缺陷:可能会使目标文件变大,优势:少了调用开销,提高程序运行效率。
2. inline对于编译器而言只是一个建议,不同编译器关于inline实现机制可能不同,一般建议:将函数规模较小(即函数不是很长,具体没有准确的说法,取决于编译器内部实现)、不是递归、且频繁调用的函数采用inline修饰,否则编译器会忽略inline特性。
3. inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开,就没有函数地址了,链接就会找不到。

内联函数是一种以空间换时间的方法,会使得程序体积变大。内涵函数只是向编译器发送的一个请求,如果函数代码量过大编译器可以忽略掉这个请求。

除此之外C++常用:const enum来替换宏,尽量少使用宏。


7.auto关键字

在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量.C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得.auto用来推导变量类型。


在这里插入图片描述

使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto 的实际类型。因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编 译期会将auto替换为变量实际的类型。


auto使用细则:1. auto与指针和引用结合起来使用用auto声明指针类型时,用auto和auto*没有任何区别,但用auto声明引用类型时则必须加&.

在这里插入图片描述


2.当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译
器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量

在这里插入图片描述


3.auto不能作为函数的参数,auto不能直接用来声明数组

在这里插入图片描述


补充知识 :auto遍历数组和auto给数组赋值

在这里插入图片描述


8.nullptr

在良好的C/C++编程习惯中,声明一个变量时最好给该变量一个合适的初始值,否则可能会出现不可预料的错误,比如未初始化的指针。一个指针没有合法的指向一般都是赋值为空。NULL实际是一个宏,在传统的C头文件(stddef.h)中,可以看到如下代码:

在这里插入图片描述


可以看到,NULL可能被定义为字面常量0,或者被定义为无类型指针(void * )的常量。不论采取何种定义,在使用空值的指针时,都不可避免的会遇到一些麻烦。

在这里插入图片描述

程序本意是想通过f(NULL)调用指针版本的f(int * )函数,但是由于NULL被定义成0,因此与程序的初衷相悖。因此C++中引入了一个关键字nullptr,在使用nullptr表示指针空值时,不需要包含头文件.在C++11中,sizeof(nullptr) 与 sizeof((void*)0)所占的字节数相同。为了提高代码的健壮性,在表示指针空值时建议最好使用nullptr。


以上内容如有问题,欢迎指正!

相关文章:

从C语言向C++过渡

文章目录前言1.命名空间1.域的概念2.命名空间的使用2.C输入&输出3.缺省参数1.概念2.分类3.注意事项4.函数重载5.引用1.概念2.使用注意事项3.引用使用场景4.指针和引用的区别6.内联函数7.auto关键字8.nullptr前言 C被成为带类的C,本文由C语言向C过度&#xff0c;将会初步介…...

Matter 研讨会回顾(第三期)|乐鑫 Matter 免开发方案与证书服务介绍

1 月 17 日&#xff0c;乐鑫举办了以“乐鑫 Matter 免开发方案与证书服务介绍”为主题的第三期 Matter 线上研讨会&#xff0c;介绍乐鑫开箱即用的 ESP-ZeroCode 模组及其免开发 Matter 方案&#xff0c;以及证书生成和预配置相关服务。欢迎观看研讨会的视频回放了解详情。&…...

函数栈帧的创建和销毁——“C”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰来为大家介绍一个知识点——函数栈帧的创建和销毁。其实这个知识点&#xff0c;我们很早之前就要讲&#xff0c;但是因为我的一系列原因&#xff0c;才一直拖到了现在&#xff0c;那么&#xff0c;话不多说&#xff0c;让我们一起…...

腾讯云对象存储+企业网盘 打通数据链“最后一公里

对云厂商和企业用户来说&#xff0c;随着数据规模的快速增长&#xff0c;企业除了对存储功能和性能的要求不断增加&#xff0c;也越来越注重数据分发的效率。在传统数据分发的过程中&#xff0c;数据管理员往往需要先在存储桶下载对应的客户方案/交付资料&#xff0c;再使用微信…...

在浏览器输入url到发起http请求,这过程发生了什么

当用户输入url&#xff0c;操作系统会将输入事件传递到浏览器中&#xff0c;在这过程中&#xff0c;浏览器可能会做一些预处理&#xff0c;比如 Chrome 会根据历史统计来预估所输入字符对应的网站&#xff0c;例如输入goog&#xff0c;根据之前的历史发现 90% 的概率会访问「ww…...

PyTorch学习笔记:nn.ReLU——ReLU激活函数

PyTorch学习笔记&#xff1a;nn.ReLU——ReLU激活函数 torch.nn.ReLU(inplaceFalse)功能&#xff1a;逐元素应用ReLU函数对数据进行激活 函数方程&#xff1a; ReLU(x)(x)max⁡(0,x)ReLU(x)(x)^\max(0,x) ReLU(x)(x)max(0,x) 输入&#xff1a; inplace&#xff1a;是否改变输…...

同步线程

↵ 由于这节内容资料比较少&#xff0c;所以以下内容总结自Qt官方文献&#xff0c;在文章最后会给出相应链接。 线程的目的是允许并行运行&#xff0c;但有时线程必须停止等待其他线程。例如&#xff0c;如果两个线程尝试访问同一个变量&#xff0c;这样的话结果是未定义的。强…...

服务端返回内容跨域CORS之后,也在chrome/edge浏览器里显示出响应信息

由于浏览器的同源策略&#xff0c;服务端返回的内容跨域&#xff0c;且没有允许跨域CORS的请求头之后&#xff0c;浏览器无法显示出服务端返回的信息&#xff0c;不方便问题排查。比如&#xff1a;Access to XMLHttpRequest at http://localhost:6001/service-app/query/common…...

DHCP中继及配置

为什么需要DHCP Relay&#xff1f;产生背景解决方案DHCP Relay工作原理DHCP Relay配置实现产生背景 随着网络规模的扩大&#xff0c;网络中就会出现用户处于不同网段的情况。 这个时候客户A和客户B要请求IP地址时&#xff0c;首先会发送DHCP Discover广播包&#xff0c;这个广…...

中国社科院与美国杜兰大学金融管理硕士,让我们相遇在春暖花开时

在芸芸众生中&#xff0c;能拥有志同道合的朋友是一件多么幸运的事。人们常说&#xff1a;你是谁&#xff0c;就会遇见谁。走过半生才知道&#xff0c;看似命中注定的遇见谁、发生的事&#xff0c;其实都取决于自己。只有自己足够优秀&#xff0c;才能遇到更优秀的别人。在这个…...

MySQL---单表查询、多表查询

一、单表查询 素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 v…...

3年自动化测试这水平?我还不如去招应届生

公司前段缺人&#xff0c;也面了不少测试&#xff0c;结果竟然没有一个合适的。一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是3年工作经验&#xff0c;但面试…...

5 个自定义 React Hooks 将改变你的代码

昨天完成我的每日文章&#xff08;是的&#xff0c;我每天都会发布一篇关于前端开发的新文章&#xff0c;所以如果你想要每天的代码丸&#xff0c;请务必关注 &#x1f609;&#xff09;&#xff0c;我去编码了一点......我开始为我正在构建的副项目编写一些自定义挂钩&#xf…...

Java学习笔记-03(API阶段)

前言 目前我们看到的是Java基础部分的一个新的部分API,这是个啥,又能做啥呢? 其实可以概括成一句话:帮助我们站在巨人的肩膀上,实现更加高效的开发,那么我们来一探究竟吧~ API API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;是一些预…...

Django自定义模板标签的使用详解

目录 1.创建子应用&#xff1a;python manage.py startapp test01 2.进行相关的配置 3.在新建的test01文件下创建urls.py(此处名称可变但注意上图) 4.在test01文件下创建名称为templatetags的文件夹 5.templatetags文件下继续创建几个py文件如下图​编辑 6.views视图函数…...

洗地机怎么选?洗地机品牌排行榜

洗地机的出现不仅能高效的清洁地面还能节省我们做家务的时间&#xff0c;对于上班族、有宠物的家庭以及宝妈来说简直不要太方便;目前市面上的洗地机有分有线款和无线款&#xff0c;无线款会比有线款操作更加方便;洗地机怎么选&#xff0c;其实洗地机的清洁能力主要是看吸力大小…...

CSS的元素显示模式

&#x1f60a;博主页面&#xff1a;鱿年年 &#x1f449;博主推荐专栏&#xff1a;《WEB前端》&#x1f448; ​&#x1f493;博主格言&#xff1a;追风赶月莫停留&#xff0c;平芜尽处是春山❤️ 目录 前言 一、什么是元素显示模式 1.1块元素 1.2行内元素 1.3行内块元素…...

【MySQL Shell】8.9.1 在 InnoDB ClusterSet 中隔离集群

在发生紧急故障切换后&#xff0c;如果 ClusterSet 的各个部分之间存在事务集不同的风险&#xff0c;则必须保护集群不受写入流量或所有流量的影响。 如果发生网络分区&#xff0c;则有可能出现脑裂的情况&#xff0c;即实例失去同步&#xff0c;无法正确通信以定义同步状态。…...

Ubuntu20.04+cuda11.2+cudnn8.1+Anaconda3安装tensorflow-GPU环境,亲测可用

(1)安装nvidia显卡驱动注意Ubuntu20.04和Ubuntu16.04版本的安装方法不同,安装驱动前一定要更新软件列表和安装必要软件、依赖&#xff08;必须&#xff09;sudo apt-get update #更新软件列表sudo apt-get install gsudo apt-get install gccsudo apt-get install make查看GP…...

剑指Offer 第27天 JZ75 字符流中第一个不重复的字符

字符流中第一个不重复的字符_牛客题霸_牛客网 描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如&#xff0c;当从字符流中只读出前两个字符 "go" 时&#xff0c;第一个只出现一次的字符是 "g" 。当从该字符流中读出前六个字符 “google&…...

科研试剂供应1476737-97-9,Bis-PEG2-endo-BCN可发生点击反应

●外观以及性质&#xff1a;Bis-PEG2-endo-BCN一般为白色固体&#xff0c;BCN其为点击试剂&#xff0c;点击化学&#xff08;Click chemistry&#xff09;&#xff0c;又译为“链接化学”、“动态组合化学” &#xff08;Dynamic Combinatorial Chemistry&#xff09;、“速配接…...

Zabbix 构建监控告警平台(一)--部署安装

监控对象监控收集信息方式Zabbix 部署 1.监控对象 源代码: *.html *.jsp *.php *.py 数据库&#xff1a; MySQL,MariaDB,Oracle,SQL Server,DB2 应用软件&#xff1a;Nginx,Apache,PHP,Tomcat agent 集群&#xff1a; LVS,Keepalived,HAproxy…...

【nodejs】nodejs入门核心知识(命令行使用、内置模块、node 模块化开发)

&#x1f4bb; nodejs入门核心知识(命令行使用、内置模块、node 模块化开发) &#x1f3e0;专栏&#xff1a;JavaScript &#x1f440;个人主页&#xff1a;繁星学编程&#x1f341; &#x1f9d1;个人简介&#xff1a;一个不断提高自我的平凡人&#x1f680; &#x1f50a;分享…...

5. Spring 事务

文章目录1. Spring 事务简介2. Spring 事务角色3. Spring 事务属性3.1 事务配置3.2 案例&#xff1a;转账业务追加日志3.3 事务传播行为1. Spring 事务简介 Spring 事务作用&#xff1a;在数据层或业务层保障一系列的数据库操作同成功、同失败。 数据层有事务我们可以理解&am…...

【堆】数据结构堆的实现(万字详解)

前言&#xff1a; 在上一期中我们讲到了树以及二叉树的基本的概念&#xff0c;有了之前的认识&#xff0c;今天我们将来具体实现一种二叉树的存储结构“堆”&#xff01;&#xff01;&#xff01; 目录1.二叉树顺序结构介绍2.堆的概念及结构3.调整算法3.1向上调整算法3.1.1算法…...

Docker进阶 - 9. docker network 之自定义网络

1. 运行两个tomcat实例&#xff0c;并进入容器内部 docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8 docker exec -it tomcat81 bashdocker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-idk8 docker exec -it tomcat82 bash2. ping一下各自的ip…...

springcloud-工程创建(IDEA)

文章目录介绍springcloud 常用组件1.创建父工程2.删除父工程的src目录3.修改父工程的pom文件4 springcloud 版本依赖5.创建子模块6 子项目下创建启动类介绍 Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具&#xff0c;它为开发中的配置管理、服务发现、断路器、智…...

Blender——物体的随机分布

问题描述将正方体随机分布在平面上。问题解决点击编辑-->偏好设置。在【插件】中的【物体】类型中勾选【Object: Scatter Objects】。右下的活动工具与工作区设置中就会出现【物体散列】的模块&#xff0c;可以调节各参数。选中正方体&#xff0c;按着Shift&#xff0c;选中…...

一文教你玩转 Apache Doris 分区分桶新功能

数据分片&#xff08;Sharding&#xff09;是分布式数据库分而治之 (Divide And Conquer) 这一设计思想的体现。过去的单机数据库在大数据量下往往面临存储和 IO 的限制&#xff0c;而分布式数据库则通过数据划分的规则&#xff0c;将数据打散分布至不同的机器或节点上&#xf…...

Spring JdbcTemplate 和 事务

JdbcTemplate概述 JdbcTemplate是spring框架中提供的一个对象&#xff0c;是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如&#xff1a;操作关系型数据的JdbcTemplate和&#xff0c;操作nosql数据库的RedisTemplate&#xff0c;操作消息…...

b2b电子商务网站盈利模式/国家高新技术企业

计算机应用专业英文求职信导语&#xff1a;“人生在勤&#xff0c;不索何获”&#xff0c;我会努力工作&#xff0c;把工作做得更好&#xff0c;更出色来回报你的信任&#xff0c;愿与贵单位荣辱与共&#xff0c;与同事携手并进&#xff0c;在平凡的工作中来实现我人生的价值&a…...

电商网站页面/营销网站建设选择原则

最近在看 UNIX 网络编程并研究了一下 Redis 的实现&#xff0c;感觉 Redis 的源代码十分适合阅读和分析&#xff0c;其中 I/O 多路复用(mutiplexing)部分的实现非常干净和优雅&#xff0c;在这里想对这部分的内容进行简单的整理。几种 I/O 模型为什么 Redis 中要使用 I/O 多路复…...

温州网站制作策划/百度信息流广告推广

错误和异常的区别(Error vs Exception)参考文章&#xff1a; &#xff08;1&#xff09;错误和异常的区别(Error vs Exception) &#xff08;2&#xff09;https://www.cnblogs.com/with-wang/archive/2012/03/24/java_doc_3.html 备忘一下。...

武汉做网站华企加速器/网络广告的计费方式

文章目录引言1、Master选举中的几个重要角色2、选举何时会发生&#xff08;何时触发选举&#xff09;2.1 节点失效检测2.2 触发选举的两种情况3、选主流程3.1 连接线程实现&#xff1a;innerJoinCluster3.2 发现节点&#xff1a;DiscoveryNode3.3 选举临时Master节点&#xff1…...

商丘柘城做网站/北京培训学校

在Eclipse上创建Web项目&#xff0c;默认会产生一个WebRootWEB-INFlib目录&#xff0c;jar包复制到该目录后会自动加载到Web App Libraries库中&#xff0c;效果如下&#xff1a;而如果创建普通的Java项目&#xff0c;一般需要自己创建一个lib目录&#xff0c;再将jar包复制到该…...

网站开发的最后五个阶段/什么是优化师

Git中删除文件可不太一样哦&#xff0c;我们一起来学习一下在Git中如果你想要删除文件&#xff0c;比平时我们删除文件要麻烦那么一点点&#xff0c;毕竟Git有两个地方&#xff1a;工作区、版本库&#xff0c;平时我们删除文件的方式&#xff0c;只是把工作区的文件给删除了&am…...