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

C++入门续集:

1. 缺省参数:

我们看我们的上图,我们可以看我们的函数Func,我们可以看到我们的函数里面的参数写的是int a = 0;这个写法是我们没有见过的,我们之前在C语言里面只见到过说是函数里面会设置参数,但是参数是没有值的,这个参数的值是需要我们主动给他传的,但是我们在这里的参数我们一开始就给他设置了一个值,这种全新的写法,这个就是我们的缺省参数,对于我们的这种函数,我们在调用他的时候,我们就可以传参数,也可以选择不传参数。

我们就看我们的这个图,我们在主函数里面,我们调用了两次我们的Func函数,我们的第一次调用,我们传了参数1进来,那么我们的函数里面的参数a就是1,打印出来就是1,但是第二次我们又调用了一次我们的函数Func,但是这次的话,我们没有传参数,我们直接调用了我们的这个函数,当我们的函数没有传值的时候,我们的参数a这时候就是0。

缺省值就是我们不想传参的时候,这时候我们就可以使用开始规定的那个值。

然后我们来看第二条:

我们说缺省参数还分为全缺省和半缺省,

上图就是我们的全缺省,我们的这个函数里面的参数,每一个参数有含有缺省值。

我们的全缺省就是我们的函数里面的参数都有缺省值,半缺省的话就是函数里面的参数,部分含有缺省值。对于半缺省函数的安排,我们规定是从右到左的连续缺省,不能是左边缺省,然后右边某处缺省,这就不行,不能跳跃式的缺省。

我们来看我们的这个图片,这个就是我们的半缺省,我们可以看到,我们的最右边的参数是有缺省值的,然后依次往左,我们的最左边没有缺省值。

然后我们来看我们的第三条:

既然我们上面说了,我们的缺省是从右往左的缺省的,所以,我们在调用我们的函数的时候,我们的传参一定是从左往右的进行依次传参,因为我们的最左边可能是没有缺省值的,但是右边可能就有了缺省值,

我们先看一下调用我们的Func1函数,这个函数里面的参数都含有缺省值,所以我们传几个参数都可以,他的缺省值都可以给他补。

然后我们再来看我们调用Func2函数,因为我们的这个函数,我们的第一个参数是没有缺省值的,所以我们的第一个参数我们一定是要主动给他传值的,

我们来看我们的这个代码,我们在初始化我们的栈的时候,当我们知道我们要申请多大的空间的时候,这时候我们可以传入一个值,然后我们对这个栈进行初始化,但是当我们不知道我们的栈的空间有多大的时候,这个时候我们可以不传值,这时候我们的缺省参数的作用就来了,我们可以给他设置缺省参数,如果我们不知道传多少的时候,我们不传,这时候我们就可以使用我们的缺省参数。

但是这个时候你就会发现,我们的代码编译是不能通过的,这时候我们就要讲一下,缺省参数的第四点:

我们的函数的声明和定义里面不能同时出现缺省参数。(我们把缺省参数给到函数的声明)。

2. 函数重载:

其实函数重载我们在前面的一个章节我们就学过了,我们在这里再强调一下,这个函数重载也比较重要;

函数重载的话,我们可以是我们的两个函数名是一样的,但是他们的参数不一样,

1. 可以是参数的个数不一样。

2. 可以是参数的类型不一样。

3. 可以是参数的顺序不一样。

但是当我们函数的名字一样,函数的参数也是一样的时候,我们的函数的返回值不一样,这个就不是函数重载,这个不能作为函数重载的条件。

因为有的时候,我们调用函数并不会接收返回值,一个函数有返回值,一个函数没有返回值,我们就不能判断。

那我们来看一下我们的这个代码,他们构成重载吗?

答案是:他们是构成重载的。从语法的角度来看,我们的下面的函数是含有参数的,上面的函数没有参数,这可以构成重载。

但是我们在这里调用的时候就出现问题了:

我们来看我们的调用,当我们调用我们的函数,我们给他传参1,这时候的话,我们就是调用我们的下面的函数,但是当我们不传参的时候,这时候就出现歧义了,这时候编译器就不知道你是调用上面的函数,还是调用下面的函数,因为下面的函数也是不需要参数的。这时候就出现问题了。

3. 引用:

1. 引用的概念和定义:

我们的指针和引用在大部分的功能上是重叠的。

引用其实就是取别名;

给我们已有的变量取一个别名;

取别名我们可以见到很多案例,比如林冲我们还可以叫他豹子头。

那我们在这里怎样给我们的变量取别名呢?

类型 + & + 引用别名 = 引用对象;

在这里我们就是给a取了一个别名b。

当然我们也可以给我们的别名再取一个别名,

我们给我们的b取别名为d。

我们在这里继续看,我们给d++以后,a,b,c都要++,他们几个本质上都是一个东西。

然后我们还把他们的地址打印出来,他们的地址都是一样的。

2. 引用的特性:

我们在实战里面看一下我们是怎么使用我们的引用的:

我们来看这个图片,在我们的C语言中,我们进行数据的交换的时候,我们通常是把我们的这个两个数据取地址,然后传过去,在我们的Swap函数里面交换我们的数据。

但是我们今天学习了引用,这时候我们就不需要指针来做了,

我们来看我们的这个,首先是函数重载,我们有设置了一个Swap函数,我们看我们的上面的Swap函数,我们的这个Swap函数的参数使用了引用,rx是a的别名,ry是b的别名,“黑旋风吃了饭,那么李逵也不就吃了饭吗”,所以他的别名就是另一个名字的他,我们让他们进行交换。

我们可以通过指针的解引用来进行交换,也可以使用引用来进行交换。

好,我们继续来看例子:

我们来看我们的栈,我们先看我们的这个图片,我们把我们的栈传过去,然后我们的函数的形参,是我们的实参的一份临时的拷贝,他就会给我们的形参开辟一块内存空间,但是这样的形参显然是不能影响我们的实参的,这时候我们就想着把我们的实参的地址传过去,然后我们的函数使用指针来进行接收,然后解引用来影响我们的实参,但是这里我们学习了引用,我们这里就可以使用引用来解决,

我们来看我们的代码,我们的函数使用了引用,这时候我们的rs就是我们的st1的别名,就是我们的st1的另一个名字,他们两个这时候就是同一个东西,这时候我们对rs进行修改,我们的st1也就变了。

好的,我们继续来看我们的例子:

我们来看这个链表,我们在学习指针的时候,因为我们要修改我们的一级指针,这时候我们就要把我们的这个一级指针进行取地址,然后传到我们的函数里面,然后我们的函数使用二级指针来进行接收,然后我们再解引用我们的这个二级指针,然后得到这个就是我们的要修改的一级指针,这时候我们对这个指针进行修改,这时候就可以了。

然后我们今天学习了引用,我们尝试用一下引用来解决我们的这个问题:

我们来看这个图,我们把我们的plist直接传过去,然后我们的函数使用引用来进行接收,这时候我们的phead就是我们的plist的别名,这时候我们直接修改phead,就能影响我们的plist。

我们这里就避开了二级指针,使用引用来解决。

我们继续来看我们引用的特性:

1. 首先我们的引用的定义:我们的引用在定义的时候必须要进行初始化。

就是我们在开始的时候我们就的确定好他是谁的别名,

我们来看我们的引用,我们看我们的代码,我们的引用在进行定义的时候,我们就要进行初始化,我们就得确定,他是谁的别名。

2. 然后就是我们的第二条,我们的一个变量,我们可以有多个别名,这个我们已经说过。

3. 然后我们的第三条,我们的引用一但引用了一个实体,他就不能再引用其他的实体了。

我们看我们的代码,我们的b是a的别名,然后我们把c的值赋给b,这时候,a和b和c的值是一样的,但是他们还是不一样的,我们的引用的指向是不能改的,“就好比,我们的黑旋风代表的是李逵,那么这个黑旋风就不能代表其他人了”。

3. 引用的使用:

我们来看引用的使用:

我们来看这个代码,我们的引用就可以用到返回值的上面,我们的这个栈,我们的返回值是int&,我们的这个函数返回的是我们的函数的顶部top数据,但是为什么我们的返回值不是int类型的数据,而是int&呢?因为我们返回这个,就相当于是,我们返回的是我们的top数据的别名,那我们就可以修改我们的top数据。

我们再来看下面的图,

我们看我们的这个代码,我们的返回值是int类型的数据,然后我们的主函数对我们的这个函数的返回值 + 10,这时候编译器就会报错,

我们来看这个传值返回和传引用返回,我们的传值返回是不能被通过的,我们会把我们数据进行一份临时拷贝,然后把这分数据进行返回,但是我们的这份临时对象具有常性,这时候他就不是左值,他就是右值。

但是我们的返回值是引用的时候,我们的返回值就是我们的栈顶的数据的别名,这时候我们就可以直接把他修改掉。

但是有的时候我们返回引用别名有时候是不太好的:

我们来看我们的这个函数,我们的这个代码,我们的返回值是引用别名,然后我们给他+10,在这里的话,我们其实返回int类型的数据是可以的,但是我们这里是不能返回我们的数据的别名的,因为你看我们的这个函数,我们返回了我们的ret变量的别名,但是,当我们出这个函数的时候,我们的这个函数的函数栈帧就已经被销毁了,这时候你拿到的是我们已经销毁的函数里面的变量。

然后你再给这个变量+10,你的这个数据已经销毁了,这时候你却想给他+10,这不就出问题了。

我们上面的函数,我们返回了我们的栈的顶部的数据的别名,这是可以的,因为我们的栈是动态开辟的数据,出了函数以后不影响的。

4. const引用:

可以引⽤⼀个const对象,但是必须⽤const引⽤。

const引⽤也可以引⽤普通对象,因为对象的访 问权限在引⽤过程中可以缩⼩,但是不能放⼤。

• 不需要注意的是类似 int& rb = a*3; double d = 12.34; int& rd = d; 这样⼀些场 景下a*3的和结果保存在⼀个临时对象中, int& rd = d 也是类似,在类型转换中会产⽣临时对 象存储中间值,也就是时,rb和rd引⽤的都是临时对象,⽽C++规定临时对象具有常性,所以这⾥ 就触发了权限放⼤,必须要⽤常引⽤才可以。

• 所谓临时对象就是编译器需要⼀个空间暂存表达式的求值结果时临时创建的⼀个未命名的对象, C++中把这个未命名对象叫做临时对象。

我们来看我们的const引用:

我们来看我们的代码,首先我们的变量a被const修饰着,然后这时候我们取一个别名给变量a,这时候我们的代码编译是不能通过的,

因为我们的变量a是被const修饰的,这时候我们的变量a是不能被修改的,然后我们的这里的别名ra,这时候是可以修改的,ra是a的别名,这两就是同一个东西,我们现在ra可以修改,但是实际上我们的变量a是不被允许修改的,所以这时候这就是一个权限的放大。

那我们这里还是想要给我们的变量取别名的话有没有办法呢?

我们的变量是被const修饰的,那么我们给他取的别名在这里就应该也是被const修饰的,让他的·别名也是不能被修改的形式,这时候就没有权力放大的行为产生。

我们再来看:

我们刚才说变量a被const修饰的时候我们就不能给他取别名取正常的别名,不然就是权限的放大了,但是我们的这里,我们的变量b是正常的变量(是可以被修改的),然后我们在这里给他取别名,然后我们的别名是被const修饰的别名,这时候可以吗?

这时候我们的编译器是可以通过的,这时候是允许的,这是权限的缩小,原来的变量b可以被修改,然后我们取别名不能被修改,这是可以的。

我们的访问权限可以缩小,但是不能放大。

你变成我的别名,可以个和我一样大,也可以比我小,但是不能比我大。

我们继续来看:

我们看我们的func函数,我们的函数的参数是int&,给参数取别名传过来,我们在主函数里面进行调用的时候,首先我们把变量a传过去,这时候你是传不过去的,因为我们的变量a是被const修饰的,但是这时候我们把他传到我们的函数里,但是函数的参数是int&,这时候就是权限的放大了,(如果里面的参数是const修饰的,这时候我们可以传进去),然后我们再传变量b,这时候我们可以传进去,这时候就刚刚好取别名,没有权限的变化。最后我们还把30传进去,30是一个常量,这是不能被修改的,但是我们的参数是int&,参数好像还能被修改。

所以这时候我们传参数就变成const传参,

我们就干脆把参数改成const,正常的变量过来的话我们就缩小权限,然后const修饰的变量过来的话也没啥事。

在这里要明白:

我们取了一个b的别名,然后缩小了别名的权限,这时候影响的是别名的权限,对变量b还是没有影响的,我们的b还是可以正常的++的,但是别名被影响;

我们继续来看:

我们的这个方式是可以的,我们可以把double类型的数据给转化到int类型的数据。

但是我们看这里,这里就不行了,我们的int可以,但是取别名就不行了,我们先来看这里:

我们要把我们的double类型的数据转为int类型,这时候我们当然不是直接把我们的数据放过去然后取数据,我们会有一个中间的临时变量。

那我们再看:

我们的这个引用,引用的是d吗?不是的,我们引用的是我们的临时变量,但是我们的临时变量具有常性,他是不能被修改的,所以我们在进行引用的时候,我们要加上const来修饰。

所以我们这里并不能被引用的原因是权限放大了;

所谓临时对象就是编译器需要⼀个空间暂存表达式的求值结果时临时创建的⼀个未命名的对象, C++中把这个未命名对象叫做临时对象

临时引用:

我们的临时对象具有常性,是不能被修改的。

就比如你看我们的这个,我们的计算结束后就会产生临时变量,这时候我们的临时变量是具有常性的,不可被修改,所以我们这里进行引用,显然就是放大了权限。

所以我们这里加上const就可以了。

在这里再说一个东西:

权限的放大和缩小,只涉及指针和引用,对于普通的变量,是没有权限这一说法的;

我们看我们的最后面的指针的,我们取a的地址,然后赋给int* ptr,这时候也会报错,ptr得到了a的地址,这时候岂不是可以修改a,但是a又是不能被修改的,这时候就是权限的放大了,会报错。

5. 指针和引用的关系:

C++中指针和引⽤就像两个性格迥异的亲兄弟,指针是哥哥,引⽤是弟弟,在实践中他们相辅相成,功 能有重叠性,但是各有⾃⼰的特点,互相不可替代。

• 语法概念上引⽤是⼀个变量的取别名不开空间,指针是存储⼀个变量地址,要开空间。

(在语法的层面上,我们的引用是给变量取别名,似乎是不会开辟空间的,但是实际上还是会开辟空间)。

• 引⽤在定义时必须初始化,指针建议初始化,但是语法上不是必须的。

• 引⽤在初始化时引⽤⼀个对象后,就不能再引⽤其他对象;⽽指针可以在不断地改变指向对象。

• 引⽤可以直接访问指向对象,指针需要解引⽤才是访问指向对象。

• sizeof中含义不同,引⽤结果为引⽤类型的⼤⼩,但指针始终是地址空间所占字节个数(32位平台下 占4个字节,64位下是8byte)

• 指针很容易出现空指针和野指针的问题,引⽤很少出现,引⽤使⽤起来相对更安全⼀些。

4. inline:

使用内联在理想情况下可以避免建立函数栈帧。

我们之前的时候,可能需要调用一个函数很多次,这时候我们就需要建立很多的函数栈帧,这时候我们就考虑到使用宏函数来解决,宏函数在预处理的时候可以直接替换,没有栈帧的开销,但是我们的宏函数比较容易出错,调制起来也不是很方便,

这时候我们就使用内联来解决,当我们的一个函数需要调用很多次的话,这时候我们为了避免建立太多的函数栈帧,这时候我们就使用内联函数。

有了内联就不需要函数栈帧。

内联函数就是宏函数的改进,在调用他的地方进行展开。

相关文章:

C++入门续集:

1. 缺省参数: 我们看我们的上图,我们可以看我们的函数Func,我们可以看到我们的函数里面的参数写的是int a 0;这个写法是我们没有见过的,我们之前在C语言里面只见到过说是函数里面会设置参数,但是参数是没有…...

线代[9]|线性代数主要内容及其发展简史(任广千《线性代数的几何意义》的附录1)

文章目录 向量行列式矩阵线性方程组二次型 向量 向量又称为矢量,最初应用与物理学。很多物理量如力、速度、位移以及电场强度、磁感应强度等等都是向量。大约公元前350年前,古希腊著名学者亚里士多德就知道了力可以表示成向量,两个力的组合作…...

C++ Primer 动态内存与智能指针

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

AI在原型设计中的革命性应用:效率与创新的双重突破

引言 在数字化转型加速的今天,产品开发周期被压缩至前所未有的程度。原型设计作为产品开发的核心环节,其效率和质量直接影响最终产品的市场竞争力。传统原型设计流程依赖人工绘制、反复修改和用户测试,耗时且成本高昂。而人工智能&#xff0…...

网络学习(四)HTTPS中,SSL的单向认证与双向认证

目录 一、什么是SSL?1.1 SSL 的主要功能1.2 SSL 的工作原理1.3 SSL 的核心组件1.4 SSL 的应用场景1.5 SSL 与 TLS 的区别 二、SSL 单向认证、双向认证2.1 SSL 单向认证2.2 SSL 双向认证2.3 总结:SSL 单向认证和双向认证的区别 一、什么是SSL?…...

分类任务和回归任务的区别

分类任务和回归任务是机器学习中两种常见的监督学习任务,尽管它们都属于预测性的分析,但它们的目标和应用场景存在显著的差异。 分类任务 定义:分类任务是指将输入样本映射到一个有限且离散的类别集合中的过程。目标是对数据进行分类&#…...

android接入rocketmq

一 前言 RocketMQ 作为一个功能强大的消息队列系统,不仅支持基本的消息发布与订阅,还提供了顺序消息、延时消息、事务消息等高级功能,适应了复杂的分布式系统需求。其高可用性架构、多副本机制、完善的运维管理工具,以及安全控制…...

V4L2框架基础

一、V4L2视频设备驱动基础 1.V4L2是专门为Linux设备设计的整合视频框架(其主要核心在Linux内核,相当于Linux操作系统上层的视频源捕获驱动框架)。为上层访问系统底层的视频设备提供一个统一的标准接口。V4L2驱动框架能够支持多种类型&#x…...

【微知】如何通过mlxlink查看Mellanox网卡和光模块相关的信息?( mlxlink -d 01:00.0 -m)

背景 通过mlxlink可以查看Mellanox网卡的一些链路信息和硬件信息,也可以查看所插入的光模块的一些信息。 兄弟篇通过ethtool查看的方法:如何查看Mellanox网卡上的光模块的信息? 命令 mlxlink -d 01:00.0 -mman手册介绍: 如果…...

使用pytorch和opencv根据颜色相似性提取图像

需求:将下图中的花朵提取出来。 代码: import cv2 import torch import numpy as np import timedef get_similar_colors(image, color_list, threshold):# 将图像和颜色列表转换为torch张量device torch.device(cuda if torch.cuda.is_available() el…...

HTML label 标签使用

点击 <label> 标签通常会使与之关联的表单控件获得焦点或被激活。 通过正确使用 <label> 标签&#xff0c;可以使表单更加友好和易于使用&#xff0c;同时提高整体的可访问性。 基本用法 <label> 标签通过 for 属性与 id 为 username 的 <input> 元素…...

SQL注入的分类靶场实践

前言 SQL 注入&#xff08;SQL Injection&#xff09;是一种常见且危险的 Web 安全漏洞&#xff0c;攻击者通过在输入字段中插入恶意 SQL 代码&#xff0c;能够绕过应用程序的验证机制&#xff0c;直接操纵数据库。本文将介绍 SQL 注入的分类&#xff0c;并通过 Pikachu 靶场进…...

用matplotlib构建BI看板:Superset插件开发实战

目录 前言&#xff1a;当经典可视化库遇见BI航母 一、Superset插件架构精要 1.1 核心模块解析 1.2 插件通信机制 二、开发环境准备 2.1 依赖矩阵 三、开发自定义可视化插件 3.1 插件脚手架 3.2 渲染引擎适配 四、Superset深度集成 4.1 控制面板配置 4.2 动态参数传递…...

【Linux】之【Bug】VMware 虚拟机开机 一直卡在黑屏左上角下划线闪烁界面

解决 参考&#xff1a; 解决Ubuntu20.04 开机黑屏光标闪烁进不去系统 Centos根目录100%解决思路 当前界面 ctrlaltf3-f6 暂时进入终端界面 df -h 查看发现根目录 磁盘空间已满 执行命令 查看当前目录占用内存明细 sudo du -h -x --max-depth1清理无用的大内存文件 或者安装…...

【练习】【链表】力扣热题100 19. 删除链表的倒数第 N 个结点

题目 删除链表的倒数第 N 个结点 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&…...

SQL-labs13-16闯关记录

http://127.0.0.1/sqli-labs/less-13/ 基于POST单引号双注入变形 1&#xff0c;依然是一个登录框&#xff0c;POST型SQL注入 2&#xff0c;挂上burpsuite&#xff0c;然后抓取请求&#xff0c;构造请求判断漏洞类型和闭合条件 admin 发生了报错&#xff0c;根据提示闭合方式是(…...

【Linux】进程信号——信号保存和信号捕捉

文章目录 信号保存信号相关的概念信号是如何保存的呢&#xff1f;有关信号保存的系统调用sigprocmask信号的增删查改查看pending表验证接口 信号捕捉用户态与内核态信号捕捉流程 总结 信号保存 信号相关的概念 信号递达&#xff1a;指 操作系统 将一个信号&#xff08;Signal…...

任务9:交换机基础及配置

CSDN 原创主页&#xff1a;不羁https://blog.csdn.net/2303_76492156?typeblog 一、交换机基础 交换机的概念&#xff1a;交换机是一种网络设备&#xff0c;用于连接多台计算机或网络设备&#xff0c;实现数据包在局域网内的快速交换。交换机基于MAC地址来转发数据包&#x…...

【DFS/回溯算法】2016年蓝桥杯真题之路径之谜详解

目录&#xff1a; 1.题目描述&#xff1a; 输入格式 输出格式 2.题解&#xff1a; 3.详细c代码 1.题目描述&#xff1a; 小明冒充 X 星球的骑士&#xff0c;进入了一个奇怪的城堡。 城堡里边什么都没有&#xff0c;只有方形石头铺成的地面。 假设城堡地面是 nn 个方格。…...

深度学习R8周:RNN实现阿尔兹海默症(pytorch)

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 数据集包含2149名患者的广泛健康信息&#xff0c;每名患者的ID范围从4751到6900不等。该数据集包括人口统计详细信息、生活方式因素、病史、临床测量、认知和功…...

字节跳动发布 Trae AI IDE!支持 DeepSeek R1 V3,AI 编程新时代来了!

3 月 3 日&#xff0c;字节跳动重磅发布国内首款 AI 原生集成开发环境&#xff08;AI IDE&#xff09;——Trae 国内版&#xff01; Trae 不只是一个传统的 IDE&#xff0c;它深度融合 AI&#xff0c;搭载 doubao-1.5-pro 大模型&#xff0c;同时支持DeepSeek R1 & V3&…...

智能合约安全指南 [特殊字符]️

智能合约安全指南 &#x1f6e1;️ 1. 安全基础 1.1 常见漏洞类型 重入攻击整数溢出权限控制缺陷随机数漏洞前后运行攻击签名重放 1.2 安全开发原则 最小权限原则检查-生效-交互模式状态机安全失败保护机制 2. 重入攻击防护 2.1 基本防护模式 contract ReentrancyGuarde…...

DeepSeek 全套资料pdf合集免费下载(持续更新)

有很多朋友都关注DeepSeek相关使用的教程资料&#xff0c;本站也一直持续分享DeepSeek 学习相关的pdf资料&#xff0c;由于比较零散&#xff0c;这篇文章主要就是做一个汇总&#xff0c;并且持续更新&#xff0c;让大家可以及时获取下载最新的相关DeepSeek的资料。 持续更新地…...

IDEA 接入 Deepseek

在本篇文章中&#xff0c;我们将详细介绍如何在 JetBrains IDEA 中使用 Continue 插件接入 DeepSeek&#xff0c;让你的 AI 编程助手更智能&#xff0c;提高开发效率。 一、前置准备 在开始之前&#xff0c;请确保你已经具备以下条件&#xff1a; 安装了 JetBrains IDEA&…...

将md格式转jupyter并运行

将md格式转jupyter并运行 有时候我们需要将这种文档以学习的形式记笔记到jupyter中&#xff08;任务&#xff09; 但是内容太多了&#xff0c;一个一个粘贴又不方便&#xff0c;怎么办呢&#xff1f; 发现直接粘贴到md中是带格式的&#xff01;&#xff01;&#xff01; 那…...

SOUI基于Zint生成EAN码

EAN码广泛应用与欧洲的零售业。包括EAN-2、EAN-5、EAN-8和EAN-12码。分别编码 2、5、7 或 12 位数字。此外&#xff0c;可以使用 字符将 EAN-2 和 EAN-5 附加符号添加到 EAN-8 和 EAN-13 符号中&#xff0c;就像 UPC 符号一样。 EAN-8校验码计算&#xff1a; 从左往右奇数位的…...

StarRocks-fe工程在Cursor中不能识别为Java项目

SR简介 StarRocks 是一款高性能分析型数据库&#xff0c;支持实时、多维度、高并发的数据分析。本指南旨在解决在使用 VSCode 或 Cursor 开发 StarRocks 后端项目时遇到的模块识别问题。 问题描述 使用 Cursor 或 VSCode 打开 StarRocks 的后端工程 fe 时&#xff0c;spark-…...

AI是否能真正理解人类情感?从语音助手到情感机器人

引言&#xff1a;AI与情感的交集 在过去的几十年里&#xff0c;人工智能&#xff08;AI&#xff09;的发展速度令人惊叹&#xff0c;从简单的语音识别到如今的深度学习和情感计算&#xff0c;AI已经深入到我们生活的方方面面。尤其是在语音助手和情感机器人领域&#xff0c;AI不…...

【Linux】【网络】UDP打洞-->不同子网下的客户端和服务器通信(成功版)

【Linux】【网络】UDP打洞–&#xff1e;不同子网下的客户端和服务器通信&#xff08;成功版&#xff09; 根据上个文章的分析 问题可能出现在代码逻辑上面 我这里重新查找资料怀疑&#xff1a; 1 NAT映射可能需要多次数据包的发送才能建立。 2 NAT映射保存时间太短&#xff…...

【微知】如何查看Mellanox网卡上的光模块的信息?(ethtool -m enp1s0f0 看型号、厂商、生产日期等)

背景 服务器上插入的光模块经常被忽略&#xff0c;往往这里是定位问题最根本的地方。如何通过命令查看&#xff1f; 命令 ethtool提供了-m参数&#xff0c;m是module-info的意思&#xff0c;他是从光模块的eeprom中读取数据。&#xff08;应该是用i2c协议读取的&#xff09;…...

图论基础算法: 二分图的判定(C++)

二分图的基本概念 什么是二分图? 二分图(Bipartite Graph)是指一个图的顶点集可以被分割为两个互不相交的子集 U U U 和 V V V, 并且图中的每一条边都连接 U U U 中的一个顶点和 V V V 中的一个顶点. 换句话说, 二分图中的顶点可以被分成两组, 组内的顶点之间没有边相连…...

AI赋能校园安全:科技助力预防与应对校园霸凌

校园本应是学生快乐学习、健康成长的地方&#xff0c;然而&#xff0c;校园霸凌却成为威胁学生身心健康的隐形“毒瘤”。近年来&#xff0c;随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;AI在校园安全领域的应用逐渐成为解决校园霸凌问题的新突破口。通过…...

PyTorch系列教程:评估和推理模式下模型预测

使用PyTorch时&#xff0c;将模型从训练阶段过渡到推理阶段是至关重要的一步。在推理过程中&#xff0c;该模型用于对以前从未见过的新数据进行预测。这种转换的一个重要方面是使用推理模式&#xff0c;它通过禁用仅在训练期间需要的操作来帮助优化模型的性能。 理解推理模式 …...

Linux注册进程终止处理函数

atexit() 是一个标准库函数&#xff0c;用于注册在进程正常终止时要调用的函数。通过 atexit()&#xff0c;你可以确保在程序结束时自动执行一些清理工作&#xff0c;比如释放资源、保存状态等。 函数原型如下&#xff1a; #include <stdlib.h> int atexit(void (*func…...

Lumerical INTERCONNECT 中的自相位调制 (SPM)

一、自相位调制的数学介绍 A.非线性薛定谔方程&#xff08;NLSE&#xff09;&#xff1a; NLSE 是光学中的一个关键方程。它告诉我们光脉冲在具有非线性和色散特性的介质中的行为方式。该方程如下所示&#xff1a; i ∂A/∂z β2/2 ∂A/∂t γ|A|A 0 其中&#xff1a; - …...

DICOM服务中的C-STORE、 C-FIND、C-MOVE、C-GET、Worklist

DICOM服务说明 DICOM&#xff08;Digital Imaging and Communications in Medicine&#xff09;是一种用于处理、存储、打印和传输医学影像的标准。DICOM定义了多种服务类&#xff0c;其中C-STORE、C-FIND、C-MOVE和C-GET是与影像数据查询和检索相关的四个主要服务类&#xff…...

Python的pdf2image库将PDF文件转换为PNG图片

您可以使用Python的pdf2image库将PDF文件转换为PNG图片。以下是一个完整的示例&#xff0c;包含安装步骤、代码示例和注意事项。 安装依赖库 首先&#xff0c;您需要安装pdf2image库&#xff1a; pip install pdf2imagepdf2image依赖于poppler库来解析PDF文件。 Windows系统…...

在Blender中给SP分纹理组

在Blender中怎么分SP的纹理组/纹理集 其实纹理组就是材质 把同一组的材质分给同一组的模型 导入到sp里面自然就是同一个纹理组 把模型导入SP之后 就自动分好了...

import模块到另一个文件夹报错:ModuleNotFoundError: No module named xxx

1. 问题 打开项目文件夹my_code&#xff0c;将bb.py的函数或者类import到aa.py中&#xff0c;然后运行aa.py文件&#xff0c;可能会报错ModuleNotFoundError: No module named xxx。 ‪E:\Desktop\my_code ├── a │ ├── train.sh │ └── aa.py └── b└── b…...

[SystemVerilog]例化

SystemVerilog 的例化方式和Verilog 类似 如果信号输入输出name一致 abc abc_inst( .a(a)&#xff0c; .b(b), c(c) ); 使用SystemVerilog abc abc_inst( .a, .b, .c ); 或者 abc abc_inst( .* ); 在SystemVerilog中&#xff0c;可以简化例化方式。 可以使用…...

Java方法详解

Java方法详解 方法1.方法的概念(1).什么是方法(2).方法的定义(3).实参与形参的关系 2.方法重载(1).方法重载的概念 3.递归&#xff08;C语言详细讲过&#xff09; 方法 1.方法的概念 (1).什么是方法 方法类似于C语言中的函数&#xff0c;我们重在体会与理解&#xff0c;不必…...

springboot自动插入创建时间和更新时间到数据库

springboot自动插入创建时间和更新时间到数据库 1.添加TableField注解2.添加TimeMetaObjectHandler配置3.测试 1.添加TableField注解 /*** 创建时间*/TableField(fill FieldFill.INSERT) // 插入时生效private LocalDateTime createTime;/*** 修改时间*/TableField(fill Fiel…...

如何将JAR交由Systemctl管理?

AI越来越火了&#xff0c;我们想要不被淘汰就得主动拥抱。推荐一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站 废话不多说&#xff0c;进入正题。下面开始说如何使用 systemctl…...

VMware Workstation Pro安装openKylin 2.0全流程指南

原文链接&#xff1a;VMware Workstation Pro安装openKylin 2.0全流程指南 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在VMware Workstation Pro 上安装 openKylin 2.0 SP1 的文章。openKylin 2.0 作为国产开源桌面操作系统&#xff0c;目前已经发布了最新版本&…...

网络安全检查漏洞内容回复 网络安全的漏洞

网络安全的核心目标是保障业务系统的可持续性和数据的安全性&#xff0c;而这两点的主要威胁来自于蠕虫的暴发、黑客的攻击、拒绝服务攻击、木马。蠕虫、黑客攻击问题都和漏洞紧密联系在一起&#xff0c;一旦有重大安全漏洞出现&#xff0c;整个互联网就会面临一次重大挑战。虽…...

数据仓库的特点

数据仓库的主要特点可以概括为&#xff1a;面向主题、集成性、非易失性、时变性、高性能和可扩展性、支持复杂查询和分析、分层架构以及数据质量管理。 1. 面向主题&#xff08;Subject-Oriented&#xff09; 数据仓库是面向主题的&#xff0c;而不是面向事务的。这意味着数据…...

02_NLP文本预处理之文本张量表示法

文本张量表示法 概念 将文本使用张量进行表示,一般将词汇表示为向量,称为词向量,再由各个词向量按顺序组成矩阵形成文本表示 例如: ["人生", "该", "如何", "起头"]># 每个词对应矩阵中的一个向量 [[1.32, 4,32, 0,32, 5.2],[3…...

青蛙跳杯子(BFS)

#include <iostream> #include <queue> #include <string> #include <unordered_set> using namespace std;int main() {string a, b;cin >> a >> b; int n a.size(); // 字符串长度int d[] {1, -1, -2, 2, -3, 3}; // 跳跃距离queue&…...

【前端基础】1、HTML概述(HTML基本结构)

一、网页组成 HTML&#xff1a;网页的内容CSS&#xff1a;网页的样式JavaScript&#xff1a;网页的功能 二、HTML概述 HTML&#xff1a;全称为超文本标记语言&#xff0c;是一种标记语言。 超文本&#xff1a;文本、声音、图片、视频、表格、链接标记&#xff1a;由许许多多…...

Arm64架构的Linux服务器安装jdk8

一、下载 JDK8 打开浏览器&#xff0c;访问 oracle官网找到适用于自己服务器的 arm64 架构的 JDK8 安装包。 二、安装 JDK8 将下载好的 JDK 压缩包上传到服务器上 解压 JDK 压缩包&#xff1a; tar -zxvf jdk-8uXXX-linux-arm64.tar.gz选择安装目录&#xff0c;我将 JDK 安装…...