练习题:20
目录
Python题目
题目
题目分析
1. 类与变量、属性设计分析
2. Value 属性的实现分析
3. 转换函数分析
4. 整体代码结构与编程规范考虑
代码实现
代码解释
1. 类定义部分
2. 对象创建与功能测试部分
运行思路
1. 类定义阶段
2. 对象创建阶段
3. 获取 Value 属性值阶段(print("初始Value属性值:", num_obj.Value) 语句)
4. 设置 Value 属性值阶段(num_obj.Value = 15 语句)
5. 调用 toBin 函数阶段(print("转换为二进制字符串:", num_obj.toBin()) 语句)
6. 调用 toHex 函数阶段(print("转换为十六进制字符串:", num_obj.toHex()) 语句)
结束语
Python题目
题目
设计一个整数类MyInteger,它有一个整数变量,并有一个Value属性,可以通过为Value存取该变量的值,还有一个转二进制字符串的成员函数toBin及转十六进制字符串的成员函数toHex。
题目分析
1. 类与变量、属性设计分析
-
类的作用与抽象概念:
在 Python 中,定义MyInteger
类旨在对整数这一数据类型进行更具功能性的封装与抽象。通过创建这个类的对象,可以将整数以一种更符合特定需求的方式进行管理和操作,使其不仅仅是一个简单的数值,而是具备了额外的属性和行为。 -
整数变量与
Value
属性:
类中需要有一个整数变量来实际存储整数值,它是这个类所代表整数的核心数据。而Value
属性的作用是提供一种对外的接口,方便对这个内部的整数变量进行值的获取和设置操作。从外部来看,通过访问Value
属性,就能如同操作普通变量一样获取或修改类中所封装的整数值,这样的设计增强了数据的封装性和访问控制,使得类的内部实现细节(即实际存储整数值的那个整数变量)可以相对独立,同时对外提供统一、规范的访问方式。
2. Value
属性的实现分析
- 属性访问与修改逻辑:
对于Value
属性,在 Python 中可以通过使用@property
装饰器和对应的@Value.setter
装饰器来实现其既能获取值又能设置值的功能。- 获取值(
@property
装饰器部分):在定义获取值的方法时,只需简单地返回内部存储整数变量的值即可。例如,如果内部整数变量名为_num
,那么获取Value
属性值的方法可以写成类似@property
装饰的def Value(self): return self._num
的形式,这样当在外部通过对象访问Value
属性(如obj.Value
,obj
为MyInteger
类的对象)时,就能够获取到内部存储的整数值。 - 设置值(
@Value.setter
装饰器部分):定义设置值的方法时,接收一个参数作为要设置的新值,并将这个新值赋给内部的整数变量。例如,@Value.setter
装饰的def Value(self, new_value): self._num = new_value
,这样当在外部通过对象对Value
属性进行赋值操作(如obj.Value = 5
)时,就能将新的整数值传递到类内部,更新存储的整数值。
- 获取值(
3. 转换函数分析
-
toBin
函数功能与实现思路:toBin
函数的目标是将类中存储的整数转换为二进制字符串形式。在 Python 中,可以利用内置的函数来实现这个功能,比如bin()
函数,它接受一个整数作为参数,并返回对应的二进制表示形式的字符串(以0b
开头),不过通常我们希望去掉开头的0b
标识,使其更符合常规的二进制字符串表示习惯。所以在toBin
函数内部,可以先调用bin()
函数获取二进制字符串,然后通过字符串切片等操作(如[2:]
)去掉开头的0b
,将处理后的二进制字符串作为函数的返回值,这样调用toBin
函数时就能得到一个干净的、代表该整数的二进制字符串表示。 -
toHex
函数功能与实现思路:toHex
函数用于把整数转换为十六进制字符串形式。类似地,Python 提供了hex()
内置函数来实现这个转换,它会返回以0x
开头的十六进制表示形式的字符串。同样为了得到更符合常规使用习惯的十六进制字符串,在toHex
函数内部,可以在调用hex()
函数后,通过合适的字符串处理方法(如切片操作去掉0x
开头部分)对返回的字符串进行调整,最终返回处理后的十六进制字符串,使得调用toHex
函数能够获取到代表该整数的十六进制字符串表示。
4. 整体代码结构与编程规范考虑
-
代码布局与缩进规则:
整个代码按照 Python 的类定义语法规范编写,MyInteger
类的定义放在一个代码块中,Value
属性的获取和设置方法以及toBin
、toHex
函数作为类的方法依次定义在类内部,并且严格遵循 Python 的代码缩进规则(通常采用 4 个空格缩进表示代码块的层次关系),以此保证代码结构清晰,符合 Python 编程的语法和风格要求。 -
命名规范与可读性:
在为类名、函数名以及内部变量名命名时,尽量选择有意义且符合 Python 命名规范的名称。例如,类名采用大驼峰命名法(像MyInteger
),函数名采用小写字母加下划线的方式(如toBin
、toHex
等),对于内部的整数变量,可以采用下划线开头的命名方式(如_num
)来表示它是类的内部实现细节,这样的命名有助于提高代码的可读性和可维护性,方便自己以及其他阅读代码的人快速理解代码的意图和各个部分的功能。
代码实现
class MyInteger:def __init__(self, num):"""构造函数,用于初始化MyInteger类对象,接收一个整数参数并赋值给内部变量:param num: 整数,用于初始化对象内部存储的数值"""self._num = num@propertydef Value(self):"""Value属性的获取方法,用于获取内部存储的整数值:return: 返回内部的整数值"""return self._num@Value.setterdef Value(self, new_value):"""Value属性的设置方法,用于设置内部存储的整数值:param new_value: 要设置的新整数值"""self._num = new_valuedef toBin(self):"""将内部存储的整数转换为二进制字符串的成员函数:return: 去掉前缀'0b'后的二进制字符串表示"""return bin(self._num)[2:]def toHex(self):"""将内部存储的整数转换为十六进制字符串的成员函数:return: 去掉前缀'0x'后的十六进制字符串表示"""return hex(self._num)[2:].lower()# 创建MyInteger类的对象并进行相关操作测试
num_obj = MyInteger(10)
print("初始Value属性值:", num_obj.Value)
num_obj.Value = 15
print("修改后Value属性值:", num_obj.Value)
print("转换为二进制字符串:", num_obj.toBin())
print("转换为十六进制字符串:", num_obj.toHex())
代码解释
1. 类定义部分
class MyInteger:def __init__(self, num):"""构造函数,用于初始化MyInteger类对象,接收一个整数参数并赋值给内部变量:param num: 整数,用于初始化对象内部存储的数值"""self._num = num@propertydef Value(self):"""Value属性的获取方法,用于获取内部存储的整数值:return: 返回内部的整数值"""return self._num@Value.setterdef Value(self, new_value):"""Value属性的设置方法,用于设置内部存储的整数值:param new_value: 要设置的新整数值"""self._num = new_valuedef toBin(self):"""将内部存储的整数转换为二进制字符串的成员函数:return: 去掉前缀'0b'后的二进制字符串表示"""return bin(self._num)[2:]def toHex(self):"""将内部存储的整数转换为十六进制字符串的成员函数:return: 去掉前缀'0x'后的十六进制字符串表示"""return hex(self._num)[2:].lower()
-
构造函数
__init__
:- 它接收一个参数
num
,这个参数就是要存储在对象内部的整数值。在函数内部,通过self._num = num
将传入的参数值赋给对象的私有属性(以单下划线开头表示是类内部使用的属性,虽然 Python 并没有真正的私有属性限制,但这是一种约定俗成的表示方式)self._num
,完成对象的初始化,使得每个MyInteger
类的对象都有自己对应的初始整数值。
- 它接收一个参数
-
Value
属性相关方法:- 获取方法(使用
@property
装饰器):定义了@property
装饰的def Value(self)
方法,其内部只有简单的return self._num
语句,这意味着当在外部通过对象访问Value
属性(例如obj.Value
,obj
为MyInteger
类的对象)时,Python 解释器会自动调用这个方法,返回对象内部存储的整数值,实现了获取值的功能。 - 设置方法(使用
@Value.setter
装饰器):@Value.setter
装饰的def Value(self, new_value)
方法用于设置Value
属性的值。它接收一个参数new_value
,代表要设置的新整数值,通过self._num = new_value
语句将这个新值赋给对象内部的self._num
属性,这样当在外部通过对象对Value
属性进行赋值操作(如obj.Value = 5
)时,就能更新对象内部存储的整数值,实现了属性值的修改功能。
- 获取方法(使用
-
toBin
函数:- 这个函数的目的是将对象内部存储的整数转换为二进制字符串形式。在函数内部,先调用
bin(self._num)
语句,利用 Python 内置的bin()
函数将self._num
(即对象内部存储的整数)转换为二进制表示形式的字符串(该字符串默认以0b
开头),然后通过字符串切片操作[2:]
去掉开头的0b
标识,最后返回处理后的二进制字符串,使得调用该函数能够获取到符合常规习惯的二进制字符串表示。
- 这个函数的目的是将对象内部存储的整数转换为二进制字符串形式。在函数内部,先调用
-
toHex
函数:- 用于把对象内部存储的整数转换为十六进制字符串形式。函数内部先执行
hex(self._num)
语句,调用 Python 内置的hex()
函数将整数转换为十六进制表示形式的字符串(该字符串以0x
开头),接着通过[2:]
切片操作去掉开头的0x
部分,再调用lower()
方法将字符串中的字母转换为小写形式(使十六进制字符串更规范统一),最后返回处理后的十六进制字符串,这样调用toHex
函数就能得到合适的十六进制字符串表示。
- 用于把对象内部存储的整数转换为十六进制字符串形式。函数内部先执行
2. 对象创建与功能测试部分
# 创建MyInteger类的对象并进行相关操作测试
num_obj = MyInteger(10)
print("初始Value属性值:", num_obj.Value)
num_obj.Value = 15
print("修改后Value属性值:", num_obj.Value)
print("转换为二进制字符串:", num_obj.toBin())
print("转换为十六进制字符串:", num_obj.toHex())
-
对象创建:
首先使用num_obj = MyInteger(10)
语句创建一个MyInteger
类的对象num_obj
,在创建过程中,Python 解释器会自动调用MyInteger
类的构造函数__init__
,将实参10
传递给num
参数,进而通过self._num = num
语句将10
赋给对象内部的self._num
属性,完成对象的初始化,使得num_obj
对象初始存储的整数值为10
。 -
属性值获取与修改测试:
- 通过
print("初始Value属性值:", num_obj.Value)
语句,调用num_obj
对象的Value
属性的获取方法(通过@property
装饰器定义的方法),获取并打印出对象内部存储的初始整数值10
。 - 接着执行
num_obj.Value = 15
语句,调用num_obj
对象的Value
属性的设置方法(通过@Value.setter
装饰器定义的方法),将对象内部存储的整数值更新为15
。然后通过print("修改后Value属性值:", num_obj.Value)
语句再次获取并打印Value
属性值,验证值已经被成功修改为15
。
- 通过
-
转换函数测试:
- 通过
print("转换为二进制字符串:", num_obj.toBin())
语句,调用num_obj
对象的toBin
函数,将对象内部存储的整数(此时为15
)转换为二进制字符串并打印出来,输出结果为对应的二进制字符串表示(例如1111
)。 - 最后通过
print("转换为十六进制字符串:", num_obj.toHex())
语句,调用num_obj
对象的toHex
函数,将整数转换为十六进制字符串并打印,输出结果为对应的十六进制字符串表示(例如f
),以此完成对MyInteger
类各个功能的测试验证。
- 通过
运行思路
1. 类定义阶段
当 Python 解释器开始执行包含 MyInteger
类定义的代码时:
class MyInteger:def __init__(self, num):"""构造函数,用于初始化MyInteger类对象,接收一个整数参数并赋值给内部变量:param num: 整数,用于初始化对象内部存储的数值"""self._num = num@propertydef Value(self):"""Value属性的获取方法,用于获取内部存储的整数值:return: 返回内部的整数值"""return self._num@Value.setterdef Value(self, new_value):"""Value属性的设置方法,用于设置内部存储的整数值:param new_value: 要设置的新整数值"""self._num = new_valuedef toBin(self):"""将内部存储的整数转换为二进制字符串的成员函数:return: 去掉前缀'0b'后的二进制字符串表示"""return bin(self._num)[2:]def toHex(self):"""将内部存储的整数转换为十六进制字符串的成员函数:return: 去掉前缀'0x'后的十六进制字符串表示"""return hex(self._num)[2:].lower()
- 首先遇到
class MyInteger:
语句,Python 解释器会识别这是在定义一个名为MyInteger
的类,并为这个类分配相应的内存空间,用于存储类的相关信息,比如后续要定义的方法、属性等内容。 - 接着定义构造函数
__init__
,解释器会记录这个特殊方法是用于创建MyInteger
类对象时进行初始化操作的。在函数内部,执行self._num = num
语句时,它明白这是将传入的参数值赋给对象的特定属性(这里self
代表即将创建的对象实例自身,_num
是类内部用来存储整数值的变量),不过此时只是定义好了构造函数的逻辑,还没有实际对象创建,所以这部分代码处于等待被调用执行的状态。 - 然后定义
Value
属性相关的获取和设置方法:- 对于
@property
装饰的Value
获取方法,解释器会识别这是定义了一个属性的获取行为,当通过对象访问该属性时会执行此方法返回对应的值,这里就是返回self._num
的值,此时只是记录下这个逻辑,等待后续对象实例化后的调用。 - 对于
@Value.setter
装饰的设置方法,解释器知道这是用于处理对Value
属性进行赋值操作的逻辑,它接收一个参数new_value
并将其赋给self._num
,同样也是先记录下此逻辑,暂未实际执行。
- 对于
- 再定义
toBin
和toHex
函数时,解释器会记录这两个方法属于MyInteger
类,分别用于将对象内部存储的整数转换为二进制和十六进制字符串形式,其内部的代码逻辑(如调用内置函数及字符串处理操作等)也只是先记录下来,等待对象调用这些函数时再执行。
2. 对象创建阶段
num_obj = MyInteger(10)
- 执行到这行代码时,Python 解释器会着手创建
MyInteger
类的一个对象实例。 - 首先,会为这个新的对象实例分配内存空间,用来存储对象的属性值(也就是
_num
这个变量的值)以及其他和对象相关的元数据。 - 之后,自动调用
MyInteger
类中定义的__init__
构造函数,将实参10
传递给构造函数中的num
参数。 - 在构造函数内部,通过
self._num = num
语句,把传入的整数10
赋给新创建对象的self._num
属性,从而完成对象num_obj
的初始化工作,使得num_obj
对象在内存中保存了初始整数值为10
。
3. 获取 Value
属性值阶段(print("初始Value属性值:", num_obj.Value)
语句)
- 执行这行代码时,Python 解释器看到
num_obj.Value
的访问形式,会根据对象num_obj
找到它所属的MyInteger
类,然后识别出这是在访问Value
属性。 - 由于
Value
属性通过@property
装饰器进行了定义,解释器会自动调用对应的Value
获取方法(即def Value(self): return self._num
这个方法)。 - 在该方法内部,通过
return self._num
语句返回num_obj
对象的self._num
属性值,此时该值为10
,这个10
就会作为表达式num_obj.Value
的结果传递给print
函数,最终在控制台输出初始Value属性值: 10
。
4. 设置 Value
属性值阶段(num_obj.Value = 15
语句)
- 执行这行代码时,Python 解释器看到对
num_obj
对象的Value
属性进行赋值的操作,会根据对象找到所属的MyInteger
类,并识别出这是要调用Value
属性的设置方法(通过@Value.setter
装饰器定义的方法)。 - 然后将赋值语句右边的值
15
作为参数传递给Value
设置方法中的new_value
参数。 - 在
Value
设置方法内部,通过self._num = new_value
语句,把传入的15
赋给num_obj
对象的self._num
属性,从而更新了对象内部存储的整数值,完成了属性值的修改操作。
5. 调用 toBin
函数阶段(print("转换为二进制字符串:", num_obj.toBin())
语句)
- 执行到这行代码时,Python 解释器会根据对象
num_obj
找到MyInteger
类中定义的toBin
函数,并开始执行其内部的代码逻辑。 - 首先,在
toBin
函数内部执行bin(self._num)
语句,此时self._num
为对象num_obj
中存储的整数值15
(经过前面属性值修改后的值),bin()
函数会将15
转换为二进制表示形式的字符串,默认得到的字符串是0b1111
。 - 接着执行
[2:]
字符串切片操作,去掉字符串开头的0b
标识,得到1111
,然后将这个处理后的二进制字符串作为函数的返回值返回。 - 最后这个返回的二进制字符串
1111
会作为表达式num_obj.toBin()
的结果传递给print
函数,在控制台输出转换为二进制字符串: 1111
。
6. 调用 toHex
函数阶段(print("转换为十六进制字符串:", num_obj.toHex())
语句)
- 执行这行代码时,Python 解释器依据对象
num_obj
找到MyInteger
类中的toHex
函数,并开始执行其内部代码逻辑。 - 首先在
toHex
函数内部执行hex(self._num)
语句,self._num
此时为15
,hex()
函数会将15
转换为十六进制表示形式的字符串,得到0xf
。 - 然后执行
[2:]
切片操作去掉开头的0x
部分,得到f
,再调用lower()
方法将字符串中的字母转换为小写形式(虽然这里本身就是小写,但如果是其他十六进制数包含大写字母会统一转换为小写),最终得到处理后的十六进制字符串f
。 - 这个
f
作为num_obj.toHex()
函数的返回值传递给print
函数,在控制台输出转换为十六进制字符串: f
。
结束语
希望通过以上对代码运行思路细致入微的剖析,能让你对 Python 中类的属性定义、方法实现以及对象相关操作有更为透彻深入的理解呀。在 Python 编程的学习过程中,明晰代码背后的运行逻辑有助于我们更扎实地掌握各类编程技巧,更灵活地运用它们去解决实际项目里遇到的问题呢。要是后续你在 Python 编程方面还有别的疑问或者想要探讨的有趣话题,欢迎随时跟我交流哦,祝愿你在编程之路上不断取得进步,收获满满的知识与成就,期待下次再一起聊聊编程那些事儿啦!
相关文章:
练习题:20
目录 Python题目 题目 题目分析 1. 类与变量、属性设计分析 2. Value 属性的实现分析 3. 转换函数分析 4. 整体代码结构与编程规范考虑 代码实现 代码解释 1. 类定义部分 2. 对象创建与功能测试部分 运行思路 1. 类定义阶段 2. 对象创建阶段 3. 获取 Value 属性…...
【时时三省】(C语言基础)动态内存函数malloc
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 malloc 开辟内存块 使用格式 void *malloc(size_t sie); 示例 10*sizeof(int)就是开辟空间的大小 如果p是void指针的话 p不能解引用 m…...
大数据学习之Redis 缓存数据库二,Scala分布式语言一
一.Redis 缓存数据库二 26.Redis数据安全_AOF持久化机制 27.Redis数据安全_企业中该如何选择持久化机制 28.Redis集群_主从复制概念 29.Redis集群_主从复制搭建 30.Redis集群_主从复制原理剖析 31.Redis集群_哨兵监控概述 32.Redis集群_配置哨兵监控 33.Redis集群_哨兵监控原理…...
第23天:信息收集-APP应用产权渠道服务资产通讯抓包静态提取动态调试测试范围
#知识点 1、信息收集-APP应用-公开信息-知识产权&开发者定位 2、信息收集-APP应用-资产信息-抓包&静态提取&动态调试 一、APP渗透测试的范围->应涵盖APP所有功能和组件,包括但不限于以下几个方面: 1、前端安全:包括界面交互、…...
每日一练 | DHCP 客户端续约过程
01 真题题目 在 DHCP 运行过程中,如果客户端 IP 地址在租约过去 87.5%还没有完成续约的话,客户端将发送什么报文进行再次续约? A. DHCPdiscover 广播报文 B. DHCP release 单播报文 C. DHCPrequest 广播报文 D. DHCPrequest 单播报文 02 真题…...
存储块的获取与释放
目录 获取存储块 释放存储块 设计实现 获取存储块 有空闲存储块,直接取出空闲块; 无空闲存储块,任务进入等待队列。 释放存储块 无任务等待,插入到空闲链表; 有任务等待,释放等待队列头部的任务。 设计实现…...
定位方式:css
使用相对路径 div ul #div下的所有ul,空格表示相对路径(这个实际中用的多一些) 绝对路径-一般不用绝对路径 html>head>div,“>”表示根路径 使用class名称定位 使用.表示 使用id定位 使用#表示 使用属性定位 [属性名…...
主从复制架构介绍和主从复制配置案例
每一个数据库的业务都对应着一个前端的业务, 主从复制架构的必要性? 第一点是两个服务器如果有一台服务器出现故障,那么另一台服务器可以正常工作,以保障前端业务可以被正常访问,第二点是两个服务器可以共同去处理数据ÿ…...
零跑汽车一路狂飙
新能源汽车市场潮起潮落,只有潮水退去,才能看清谁在裸泳。十年前,一批新能源汽车新势力带着创新的理念和先进的技术,如雨后春笋般涌入中国汽车市场,掀起一场新旧势力的角逐。 经历市场的激烈洗礼与投资泡沫的挤压&…...
固态硬盘SSD
目录 1、固态硬盘结构 2、访问和读取策略 3、固态硬盘 VS SSD固态硬盘 (1)速度 (2)性能 (3)使用寿命 4、磨损均衡技术 (1)动态磨损均衡 (2)静态磨损…...
MTEB文本向量化评估基准:Massive Text Embedding Benchmark
Massive Text Embedding Benchmark 文本向量化评估基准 Bitext mining is the task of finding parallel sentences in two languages. 双语文本挖掘是识别两种语言中语义等价句子对的任务。 Classification is the task of assigning a label to a text. 文本分类是为文本分配…...
【Compose multiplatform教程09】【组件】Image组件
查看全部组件 Image 功能说明:能够加载并显示图片,支持本地资源和网络资源,可对图片的大小、缩放方式、裁剪等属性进行设置,使图片以合适的方式展示在界面中,增强界面的视觉效果。示例场景:在应用的启动页…...
android jetpack compose Model对象更新变量 UI不更新、不刷新问题
以前是搞老本行Android原生开发的,因为工作原因,一直在用vue小程序;因为一些工作需要,又需要用到Android原生开发,建了个项目,打开源码一看,天塌了!!!我以前的…...
Java抽象工厂+单例模式
在前端时间开发过程中,有这样一个业务场景:A;B两家厂商设备进行设备信息的同步功能。 根据实际场景,做了抽象工厂+单例模式实现调用工厂时,生成不同的具体业务引用对象,实现方法的调用。 概念: 抽象工厂模式通过接口或抽象类来创建一系列相关或依赖对象。它定义了一组工…...
React 第十九节 useLayoutEffect 用途使用技巧注意事项详解
1、概述 useLayoutEffect 是useEffect 的一个衍生版本,只是他们的执行时机不同 useLayoutEffect 用于在DOM更新执行完成之后,浏览器渲染绘制之前执行,这会阻塞浏览器的渲染; useEffect 的执行时机是在组件首次渲染和更新渲染之后…...
以太网协议实现——FPGA学习笔记23
一、简介 FPGA千兆网口数据传输MDIO接口——FPGA学习笔记3_yt8531sh原理图-CSDN博客 1、以太网帧类型 2、以太网帧格式 3、以太网MAC帧格式 二、以太网报文 目的IP :ff ff ff ff ff ff(广播IP地址) 类型:ARP (0806) 源MAC地址:74 7d 24 92 fb df 单播 …...
docker 实践与应用举例
docker 实践与应用举例 Docker是一个开源的容器化平台,它允许开发人员将应用程序及其依赖项打包为一个轻量级、可移植的容器,并在不同的环境中运行。Docker的基本概念包括以下几点: 1. 容器:Docker通过使用Linux容器技术&#x…...
双指针——有效三角形的个数
一.题目描述 611. 有效三角形的个数 - 力扣(LeetCode) 二.题目解析 题目其实很简单就是让我们在数组中找到可能构成三角形的所有可能。构成三角形的前提是:任意两边之和大于第三边。所以我们要满足让下面三条同时成立才可以构成三角形&am…...
【ES6复习笔记】函数参数的默认值(6)
在ES6中,函数参数默认值是一个非常有用的特性,它允许你在定义函数时为参数指定一个默认值。如果在调用函数时没有提供相应的参数值,那么函数将使用默认值。 1. 形参初始值 具有默认值的参数,一般位置要靠后。这是一个潜规则&…...
tryhackme-Cyber Security 101-Linux Shells(linux命令框)
目的:了解脚本和不同类型的 Linux shell。 任务1:Introduction to Linux Shells(Linux Shell 简介) 作为操作系统的常规用户,我们都广泛使用图形用户界面 (GUI) 来执行大多数操作。只需点击几…...
【Go】-限流器的四种实现方法
目录 关于限流和限流器 固定窗口限流器 滑动窗口限流器 漏桶限流器 令牌桶限流器 总结 关于限流和限流器 限流(Rate Limiting)是一种控制资源使用率的机制,通常用于防止系统过载和滥用。 限流器(Rate Limiter)是…...
精准识别花生豆:基于EfficientNetB0的深度学习检测与分类项目
精准检测花生豆:基于EfficientNet的深度学习分类项目 在现代农业生产中,作物的质量检测和分类是确保产品质量的重要环节。针对花生豆的检测与分类需求,我们开发了一套基于深度学习的解决方案,利用EfficientNetB0模型实现高效、准…...
【信息系统项目管理师】第11章:项目成本管理过程详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 一、规划成本管理1、输入2、工具与技术3、输出二、估算成本1、输入2、工具与技术3、输出三、制定预算1、输入2、工具与技术3、输出四、控制成本1、输入2、工具与技术3、输出一、规划成本管理 定义:规划成本管…...
微信流量主挑战:用户破16!新增文档转换(新纪元3)
朋友们,报告好消息!我的小程序用户数量已经涨到16个了!没错,真没拉朋友圈亲戚好友来撑场子,全靠实力(和一点点运气)吸引了16位陌生小伙伴光临!这波进步,连我自己都感动了…...
DFS【东北大学oj数据结构11-2】C++
题面 深度优先搜索(DFS)是一种基于尽可能多地访问相邻顶点策略的图搜索算法。如果顶点 v 有未搜索的顶点则递归搜索直至 v 的最后一条边。在搜索了 v 的所有边之后,搜索继续返回到找到 v 时经过的边。 搜索从原来的起点开始,直到…...
运维项目部署的环境准备
这里用的安装工具是yum,yum作为一个安装工具,用起来比较方便 用yum安装以下软件,组成项目的可运行环境 yum 先更新 yum update -y 安装一个外置仓库 yum install epel-release 安装redis yum install redis 安装nginx yum install nginx 安装vim yum install vim…...
URDF文件中inertial数据的描述坐标系说明
这件事的来源是这样的:结构手动把连杆坐标系下描述的惯性张量数据写入了urdf中,给我到以后发现有问题,给我搞懵了,以为我错了这么多年,于是有了本次的深度调研,先上结论,感兴趣的可以参考后文。…...
OpenCV-Python实战(5)——图形绘制基础
一、直线 cv2.line(img*,pt1*,pt2*,color*,thickness*,lineTypeLINE_8) img:绘图的背景(画布)。 pt1、pt2:始/终点坐标,格式为元组()。 color:直线颜色,BGR格式。 t…...
科技云报到:人工智能时代“三大件”:生成式AI、数据、云服务
科技云报到原创。 就像自行车、手表和缝纫机是工业时代的“三大件”。生成式AI、数据、云服务正在成为智能时代的“新三大件”。加之全球人工智能新基建加速建设,成为了人类社会数字化迁徙的助推剂,让新三大件之间的耦合越来越紧密。从物理世界到数字世…...
HarmonyOS NEXT 实战之元服务:静态案例效果(二)
背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图代码案例如下: Index里面实现 import { authent…...
Qt学习记录
Qt学习记录 Qt6读取GBK文件 在Qt5中,有QTextCodec模块,支持各种编码设置。 // Qt5 QCoreApplication a(argc, argv); auto desk QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); QFile file(QDir(desk).filePath("test.tx…...
用于汽车碰撞仿真的 Ansys LS-DYNA
使用 Ansys LS-DYNA 进行汽车碰撞仿真汽车碰撞仿真 简介 汽车碰撞仿真是汽车设计和安全工程的一个关键方面。这些仿真使工程师能够预测车辆在碰撞过程中的行为,从而有助于改进安全功能、增强车辆结构并符合监管标准。Ansys LS-DYNA 是一款广泛用于此类仿真的强大工具…...
Android--java实现手机亮度控制
文章目录 1、开发需求2、运行环境3、主要文件4、布局文件信息5、手机界面控制代码6、debug 1、开发需求 需求:开发一个Android apk实现手机亮度控制 2、运行环境 Android studio最新版本 3、主要文件 app\src\main\AndroidManifest.xml app\src\main\res\layou…...
300多种复古手工裁剪拼贴艺术时尚字母、数字、符号海报封面Vlog视频MOV+PNG素材
300复古时尚大小写字母、数字、符号拼贴海报封面平面设计Vlog视频标题动画 Overlay - Cut-Out Letters Animations Pack - Animated Letters, Numbers, and Symbols 使用 Cut-Out Letters Animations Pack 提升您的内容!包含 300多个高品质动画资源,包括…...
免押租赁系统的优势与应用解析
内容概要 免押租赁系统,听上去是不是很未来?其实,它的基本概念就是在租赁过程中,消费者无需交付押金,直接使用所租物品。这样一来,不仅降低了租赁的门槛,也让许多想尝试的用户能够更轻松地参与…...
feign 针对某一个特定接口设置超时时间
一、对feign所有接口设置超时配置 如果是当前feign所有接口的超时配置,需要在 FeignClient 的 configuration 属性中设置。 详情见: https://blog.csdn.net/sinat_32502451/article/details/136884349 二、针对某一个特定接口设置超时时间 调用 feig…...
Chrome被360导航篡改了怎么改回来?
一、Chrome被360导航篡改了怎么改回来? 查看是否被360主页锁定,地址栏输入chrome://version,看命令行end后面(蓝色部分),是否有https://hao.360.com/?srclm&lsn31c42a959f 修改步骤 第一步:…...
GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily
“LeetTalk Daily”,每日科技前沿,由LeetTools AI精心筛选,为您带来最新鲜、最具洞察力的科技新闻。 GitLab作为一个广受欢迎的开源代码托管平台,近期宣布将停止服务中国大陆、澳门和香港地区的用户提供服务。根据官方通知&#x…...
Linux系统和makefile详解
### Linux系统详解 Linux是一个开源且功能强大的操作系统内核,自1991年由林纳斯托瓦兹首次发布以来,它已经成为全球最流行的操作系统之一。Linux的核心特性包括开源、多用户多任务、高稳定性与安全性,以及良好的跨平台能力。 1. **开源**&a…...
基于导频方法的MIMO信道估计详解
多输入多输出(MIMO)技术作为现代无线通信系统的核心,通过利用多天线阵列在发射端和接收端同时传输和接收多个数据流,显著提高了系统的频谱效率和数据传输速率。然而,MIMO系统的性能在很大程度上依赖于对信道状态的准确…...
#!/bin/bash^M 坏的解释器:没有哪个文件或者目录
#!/bin/bash^M 坏的解释器:没有哪个文件或者目录 问题背景问题分析问题解决dos2unixsedvim编辑器(推荐)在Windows上转换文件格式 最后 问题背景 工作中,在Windows上编写的shell脚本上传到Linux服务器,在执行的时候提示…...
aj-report本地前后端分离部署运行
github项目地址 aj-report-mine 在源代码v1.4版本基础上,本地进行前后端分离部署开发 这里我是进行了整合,把自己在拉取源代码到成功运行过程中的一些东西直接整合,根据下面的步骤即可成功运行 资源获取 夸克网盘(16-github-aj-report-re…...
1435A 信号发生器
1435A 信号发生器 1435系列信号发生器基于创新的技术实现了性能、经济性和体积重量的平衡设计。具有优良的频谱纯度,单边带相位噪声1GHz载波10kHz频偏达到-136dBc/Hz,10GHz载波10kHz频偏达到-116dBc/Hz;具有高功率输出和大动态范围ÿ…...
计算机组成原理的学习笔记(9)-- CPU·其一 CPU的基本概念/流水线技术/数据通路
学习笔记 前言 本文主要是对于b站尚硅谷的计算机组成原理的学习笔记,仅用于学习交流。 CPU(中央处理器) 1. 组成 定义:计算机的核心部件,负责执行指令和处理数据。 组成部分: 核心:多个处…...
【Python】 -- python3 读取 aws athena 表数据
目录 1、环境准备 2、安装环境 3、举例查询某张表数据和执行 add partition 操作 3.1、编辑文件 athena_jdbc.py 3.2、查找 JVM 的动态链接库路径 3.3、保存文件,执行以下命令 1、环境准备 oracle jdk 11centos 8依赖:pandas、pyathenajdbc 和 sq…...
子网掩码计算route命令
子网掩码 - 站长工具 1.子网掩码 子网掩码就是用来遮掩IP地址并划分网段的工具,根据遮掩的位数不同来划分不同的网段。 2.网关 网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层上以实现网络互连,是最复杂的网络互连设备,仅用…...
店铺营业状态设置
admineShopController RestController("admineShopController") RequestMapping("/admin/shop") Api(tags "店铺相关接口") Slf4j public class ShopController {//设置一个常量 因为经常使用public static final String KEY "SHOP-ST…...
JavaWeb 开发基础入门
在当今互联网时代,JavaWeb 开发是构建各类网络应用的核心技术之一。无论是大型企业级应用,还是小型的个人网站,JavaWeb 都展现出强大的生命力。今天,就让我们一起踏入 JavaWeb 开发的基础入门之旅。 一、认识 JavaWeb JavaWeb 是…...
Unity Dots理论学习-2.ECS有关的模块(1)
Unity的实体组件系统(ECS)是支撑DOTS模块和技术的面向数据架构。ECS为Unity中的内存数据和runtime进程调度提供了高度的控制和确定性。 ECS for Unity 2022 LTS 配备了两个兼容的物理引擎,一个高级的Netcode package,以及一个用来…...
CentOS下安装RabbitMQ
提示:“奔跑吧邓邓子” 的高效运维专栏聚焦于各类运维场景中的实际操作与问题解决。内容涵盖服务器硬件(如 IBM System 3650 M5)、云服务平台(如腾讯云、华为云)、服务器软件(如 Nginx、Apache、GitLab、Redis、Elasticsearch、Kubernetes、Docker 等)、开发工具(如 Gi…...