深度学习python基础(第四节) 元组、字符串、集合和字典
本节主要介绍元组,字符串,集合,字典的基本语法定义,以及相关的操作.
元组的定义和操作
元组一旦定义完成就不可修改.
"""
# 定义元组字面量
(元素,元素,....,元素) # 元素可以不同的数据类型# 定义元组变量
变量名称 = (元素,元素,....,元素)# 定义空元组
变量名称 = ()方式1
变量名称 = tuple()方式2"""# 定义元组
t1 = (1,"love",True)
t2 = ()
t3 = tuple()print(f"t1的类型是:{type(t1)},内容为:{t1}")
print(f"t2的类型是:{type(t2)},内容为:{t2}")
print(f"t3的类型是:{type(t3)},内容为:{t3}")#t1的类型是:<class 'tuple'>,内容为:(1, 'love', True)
#t2的类型是:<class 'tuple'>,内容为:()
#t3的类型是:<class 'tuple'>,内容为:()
定义单个元素的元组
# 定义单个元素的元组(一定要在单个元素后面加一个逗号,否者类型是字符串)
t4 = ("love")
print(f"t4的类型是:{type(t4)},内容为:{t4}")
t4 = ("love",)
print(f"t4的类型是:{type(t4)},内容为:{t4}")
#t4的类型是:<class 'str'>,内容为:love
#t4的类型是:<class 'tuple'>,内容为:('love',)
元组的嵌套
# 元组的嵌套
t5 = ((1,2,3),(4,5,6))
print(f"t5的类型是:{type(t5)},内容为:{t5}")
#t5的类型是:<class 'tuple'>,内容为:((1, 2, 3), (4, 5, 6))
下标索引取出元组中的内容
# 下标取元组内容
t5[1][2] # 6
元组的相关操作
index查找方法
t6 = ("xiaoming","xiaohong","xiaogang","xiaoqiang")
index = t6.index("xiaoqiang")
print(index) # 3
count统计方法
t7 = (1,2,3,4,5,6,1,2,3,3,3,3)
num = t7.count(3)
print(num) # 5
len函数统计元组中的元素数量
t7 = (1,2,3,4,5,6,1,2,3,3,3,3)
num = len(t7)
print(num) # 12
元组的遍历
index = 0
while index < len(t7):print(t7[index],end = '\t')index += 1
print()for x in t7:print(x , end = '\t')
#1 2 3 4 5 6 1 2 3 3 3 3
#1 2 3 4 5 6 1 2 3 3 3 3
元组只是可读的,不可以修改
t8 = (1,2,["You","love","you"]) # 可以修改元组里嵌套的列表,列表里面的元素是可以修改的
t8[2][0]= "I"
print(t8) # (1, 2, ['I', 'love', 'you'])
字符串
my_str = "we are friend!"
print(my_str[7])
print(my_str[-7])
字符串是一个无法修改的数据容器
"""
查找特定字符串下标索引值
语法:字符串.index(字符串)
"""
my_str = "we are friend!"
print(my_str.index("are")) # 3
字符串的替换
"""
字符串的替换
语法:字符串.replace(字符串1,字符串2)
注意:不是修改字符串本身而是得到了一个新的字符串
"""
my_str = "we are friend!"
my_str2 = my_str.replace("are","are not")
print(my_str2)
print(my_str)
字符串的分割
"""
字符串的分割
语法:字符串.split(分隔符字符串)
功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中
注意:字符串本身不变,而是得到了一个列表对象
"""my_str = "we are friend!"
result = my_str.split(" ")
print(f"{result}类型为:{type(result)}")
字符串的规整操作
"""
字符串的规整操作(去前后空格)
语法:字符串.strip()字符串的规整操作(去前后指定字符串)
语法:字符串.strip(字符串)"""my_str = " we are friend! "
result = my_str.strip()
print(result) # we are friend!
my_str = "1212we are friend!2121"
result = my_str.strip("12") # we are friend!
print(result)
字符串的count方法
"""
字符串的count方法
统计字符串中的某字符串出现的次数"""
my_str = "we are friend!"
num = my_str.count("e")
print(num) # 3
统计字符串长度
"""
统计字符串的长度
"""
my_str = "we are friend!"
num = len(my_str)
print(num) # 14
案例:分隔字符串
"""
给定一个字符串"itheima itcast boxuegu"
1.统计字符串内有多少个"it"字符
2.将字符串内的空格,全部替换为字符:"|"
3.并按照"|"进行字符串分割,得到列表
"""str1 = "itheima itcast boxuegu"
num = str1.count("it")
print(f"字符串{str1}中有:{num}个it字符")
str2 = str1.replace(" ","|")
print(f"字符串{str1},被替换空格后,结果:{str2}")
result = str2.split("|")
print(f"字符串{str2},按照|分隔后,得到:{result}")#字符串itheima itcast boxuegu中有:2个it字符
#字符串itheima itcast boxuegu,被替换空格后,结果:itheima|itcast|boxuegu
#字符串itheima|itcast|boxuegu,按照|分隔后,得到:['itheima', 'itcast', 'boxuegu']
数据容器的切片操作
序列是指:内容连续、有序,可使用下标索引的一类数据容器
列表,元组,字符串,均可视为序列
"""
切片的语法格式:
语法:序列[起始下标:结束下标:步长] 左闭又开
此操作不会影响序列本身,而是会得到一个新的序列
"""
# 对list进行切片,从1开始,4结束,步长1
my_list = [0,1,2,3,4,5,6]
result1 = my_list[1:4]
print(f"结果1:{result1}")
# 对tuple进行切片,从头开始,到最后结束,步长为1
my_tuple = (0,1,2,3,4,5,6)
result2 = my_tuple[:]
print(f"结果2:{result2}")
# 对str进行切片,从头开始,到最后结束,步长为2
my_str = "01234567"
result3 = my_str[::2]
print(f"结果3:{result3}")
# 对str进行切片,从头开始,到最后结束,不长-1
my_str = "01234567"
result4 = my_str[::-1]
print(f"结果4:{result4}")
# 对列表进行切片,从3开始,到1结束,步长-1
my_list = [0,1,2,3,4,5,6]
result5 = my_list[3:1:-1]
print(f"结果5:{result5}")
# 对元组进行切片,从头开始,到尾结束,步长-2
my_tuple = (0,1,2,3,4,5,6)
result6 = my_tuple[::-2]
print(f"结果6:{result6}")"""
结果1:[1, 2, 3]
结果2:(0, 1, 2, 3, 4, 5, 6)
结果3:0246
结果4:76543210
结果5:[3, 2]
结果6:(6, 4, 2, 0)"""
字符串的逆置
my_str = "I love you!"
print(my_str[::-1]) # 字符串逆置
集合
去重处理.
"""
基本语法:
# 定义集合字面量
{元素,元素,...,元素} # 大括号
# 定义集合变量
变量名称 = {元素,元素,.....,元素}
# 定义空集合
变量名称 = set()
"""# 定义集合
my_set = {1,2,3,4,5,1,2,3,4,5}
my_set_empty = set()
print(f"my_set的内容是:{my_set},类型是:{type(my_set)}") # 不允许重复,无序的
print(f"my_set_empty的内容是:{my_set_empty},类型是:{type(my_set_empty)}")
因为集合是无序的所以不支持下标索引访问.
但是集合和列表一样,是允许修改的.
集合中元素的数据类型可以不同,但集合中不能嵌套列表、元组、集合、字典
添加元素
"""
添加新元素
语法:集合.add(元素)
"""my_set = {"小明","小红"}
my_set.add("小强")
print(my_set) # {'小红', '小明', '小强'}
移除元素
"""
移除元素
语法:集合.remove(元素)
"""
my_set = {'小红', '小明', '小强'}
my_set.remove("小强")
print(my_set) # {'小红', '小明'}
删除并返回元素
"""
从集合中随机取出元素,删除并返回
语法:元素.pop()
"""
my_set = {'小红', '小明', '小强'}
element = my_set.pop()
print(my_set)
print(element)
清空集合
"""
清空集合
语法:集合.clear()
"""
my_set = {'小红', '小明', '小强'}
my_set.clear()
print(my_set)
取两个集合的差集
"""
取两个集合的差集
语法:集合1.difference(集合2) ->集合1 - 集合2
得到一个新的集合,原来的集合不变
"""set1 = {1,2,3}
set2 = {1,5,6}
set3 = set1.difference(set2)
print(set1) # {1, 2, 3}
print(set2) # {1, 5, 6}
print(set3) # {2, 3}
消两个集合的差集
"""
消两个集合的差集
语法:集合1.difference_updata(集合2)
功能: 在集合1内删除集合2有的
结果:集合1被修改,集合2bubian
"""
set1 = {1,2,3}
set2 = {1,5,6}
set1.difference_update(set2)
print(set1) # {2, 3}
print(set2) # {1, 5, 6}
将两个集合合并
"""
将两个集合合并
语法:集合1.union(集合2)
功能:将集合1和集合2合并成一个集合
结果:得到一个新的集合原来的集合不变
"""
set1 = {1,2,3}
set2 = {1,5,6}
set3 = set1.union(set2)
print(set1) # {1, 2, 3}
print(set2) # {1, 5, 6}
print(set3) # {1, 2, 3, 5, 6}
统计集合元素数量
"""
统计集合元素数量
语法:集合.count()
"""
set1 = {1,2,3}
print(f"set1中元素的个数为:{len(set1)}")
集合的遍历
"""
集合的遍历
集合不支持下标索引所以不能用while循环来遍历集合
"""
set1 = {1,2,3,4,5}
for x in set1:print(x,end = '\t')
字典
字典的定义,同样使用{},不过存储的元素是一个个的键值对.
"""
# 定义字典字面量
{key:value,key:value,..,key:value}# 定义字典变量
my_dict = {key:value,key:value,..,key:value}# 定义空字典
my_dict ={}
my_dict = dict()
"""
# 定义字典
my_dict = {"小红":100,"小强":99,"小明":98}# 定义空字典
my_dict_empty1 = {} # set(),{}被字典占用了
my_dict_empty2 = dict()
print(f"my_dict中的内容为:{my_dict},数据类型为:{type(my_dict)}")
print(f"my_dict_empty1中的内容为:{my_dict_empty1},数据类型为:{type(my_dict_empty1)}")
print(f"my_dict_empty2中的内容为:{my_dict_empty2},数据类型为:{type(my_dict_empty2)}")
# my_dict中的内容为:{'小红': 100, '小强': 99, '小明': 98},数据类型为:<class 'dict'>
# my_dict_empty1中的内容为:{},数据类型为:<class 'dict'>
# my_dict_empty2中的内容为:{},数据类型为:<class 'dict'>
字典的字是不可以重复的
新的会把老的覆盖掉.
字典数据的获取
"""
字典数据的获取
字典同集合一样,不可以使用下标索引
但字典可以通过key值来取得对应的value值
"""
my_dict = {"小红":100,"小强":99,"小明":98}
print(my_dict["小红"])
print(my_dict["小强"])
print(my_dict["小明"])
字典的嵌套
# 定义一个嵌套的字典 key不可以为字典
stu_score = {"小红":{"语文":98,"数学":100,"英语":90},"小明":{"语文":80,"数学":90,"英语":98},"小王":{"语文":70,"数学":100,"英语":70}}
print(stu_score)
# 从嵌套的字典中获取信息
score_yuwen = stu_score["小红"]["语文"]
print(f"小红的语文成绩为:{score_yuwen}")
字典的常用操作
"""
新增元素(不存在)
语法:字典[key] = value,结果字典被修改,新增了元素更新元素(存在)
语法:字典[key] = value,结果字典被修改,修改了元素删除元素
语法:字典.pop(key) 结果:获得指定key的value,同时字典被修改,指定key的数据被删除清空元素
clear方法"""
# 新增元素
my_dict = {"小红":100,"小强":99,"小明":98}
my_dict["小王"] = 80
print(my_dict)# 更新元素
my_dict["小王"] = 90
print(my_dict)# 删除元素
score =my_dict.pop("小王")
print(my_dict,score)my_dict.clear()
print(my_dict)
"""
获取字典中全部key的操作
语法:字典.keys(),结果:得到字典中的全部key
"""
my_dict = {"小红":100,"小强":99,"小明":98}
print(my_dict.keys(),type(my_dict.keys())) # dict_keys(['小红', '小强', '小明'])
字典的遍历
for key in my_dict.keys():print(my_dict[key],end = "\t")
print()
for key in my_dict:print(my_dict[key],end = "\t")
统计字典内元素的个数
# len()
num = len(my_dict)
print(f"字典中的元素个数为:{num}个")
案例:升职加薪
"""
有如下员工信息,请使用字典完成数据的记录
并通过for循环对所有级别为1级的员工,级别上升1级,薪水增加1000元
m_dict = {"王力鸿":{"部门":"科技部","工资":3000,"级别":1},"周杰轮":{"部门":"市场部","工资":5000,"级别":2},"林俊节":{"部门":"市场部","工资":7000,"级别":3},"张学右":{"部门":"科技部","工资":4000,"级别":1},"刘德话":{"部门":"市场部","工资":6000,"级别":2}}"""
m_dict = {"王力鸿":{"部门":"科技部","工资":3000,"级别":1},"周杰轮":{"部门":"市场部","工资":5000,"级别":2},"林俊节":{"部门":"市场部","工资":7000,"级别":3},"张学右":{"部门":"科技部","工资":4000,"级别":1},"刘德话":{"部门":"市场部","工资":6000,"级别":2}}
print(m_dict)
for key1 in m_dict:if m_dict[key1]["级别"] == 1:m_dict[key1]["级别"] = 2m_dict[key1]["工资"] += 1000
print(m_dict)
数据容器的对比总结
"""
是否支持下标索引
支持:列表、元组、字符串 -序列类型
不支持:集合、字典 -非序列类型是否支持重复元素
支持:列表,元组,字符串 - 序列类型
不支持:集合,字典 -非序列类型是否可以修改
支持:列表,集合,字典
不支持:字符串,元组""""""
列表:一批数据,可修改,可重复的存储场景
元组:一批数据,不可修改,可重复的存储场景
字符串:一串字符串的存储场景
集合:一批数据,去重存储场景
字典:一批数据,可用key去检索对应的value值存储场景"""
数据容器的通用操作
my_list = [1,2,3,4,5]
my_tuple = (1,2,3,4,5)
my_str = "abcdefg"
my_set = {1,2,3,4,5}
my_dict = {"key1":1,"key2":2,"key3":3,"key4":4,"key5":5}# len元素个数
print(f"列表中元素个数为:{len(my_list)}")
print(f"元组中元素个数为:{len(my_tuple)}")
print(f"字符串中元素个数为:{len(my_str)}")
print(f"集合中元素个数为:{len(my_set)}")
print(f"字典中元素个数为:{len(my_dict)}")print()# max最大元素
print(f"列表中最大元素为:{max(my_list)}")
print(f"元组中最大元素为:{max(my_tuple)}")
print(f"字符串中最大元素为:{max(my_str)}")
print(f"集合中最大元素为:{max(my_set)}")
print(f"字典中最大元素为:{max(my_dict)}")
print()
# min最小元素
print(f"列表中最小元素为:{min(my_list)}")
print(f"元组中最小元素为:{min(my_tuple)}")
print(f"字符串中最小元素为:{min(my_str)}")
print(f"集合中最小元素为:{min(my_set)}")
print(f"字典中最小元素为:{min(my_dict)}")
print()
# 类型转换转换成列表
print(f"列表转列表的结果是:{list(my_list)}")
print(f"列表转列表的结果是:{list(my_tuple)}")
print(f"列表转列表的结果是:{list(my_str)}")
print(f"列表转列表的结果是:{list(my_set)}")
print(f"列表转列表的结果是:{list(my_dict)}") # 字典转列表只有key
print()# 类型转元组
print(f"列表转元组的结果是:{tuple(my_list)}")
print(f"列表转元组的结果是:{tuple(my_tuple)}")
print(f"列表转元组的结果是:{tuple(my_str)}")
print(f"列表转元组的结果是:{tuple(my_set)}")
print(f"列表转元组的结果是:{tuple(my_dict)}") # 字典转列表只有key
print()# 类型转字符串
print(f"列表转字符串的结果是:{str(my_list)}")
print(f"列表转字符串的结果是:{str(my_tuple)}")
print(f"列表转字符串的结果是:{str(my_str)}")
print(f"列表转字符串的结果是:{str(my_set)}")
print(f"列表转字符串的结果是:{str(my_dict)}") # 字典转列表只有key
print()# 类型转集合
print(f"列表转集合的结果是:{set(my_list)}")
print(f"列表转集合的结果是:{set(my_tuple)}")
print(f"列表转集合的结果是:{set(my_str)}")
print(f"列表转集合的结果是:{set(my_set)}")
print(f"列表转集合的结果是:{set(my_dict)}") # 字典转列表只有key
print()
通用排序功能
"""
通用排序功能
sorted(容器,[reverse=True])
排序结果存到列表当中
"""
my_list = [3,2,1,5,4]
my_tuple = (5,2,3,1,4)
my_str = "abgdefc"
my_set = {5,2,3,4,1}
my_dict = {"key5":1,"key2":2,"key3":3,"key4":4,"key1":5}
# 正序
print(sorted(my_list))
print(sorted(my_tuple))
print(sorted(my_str))
print(sorted(my_set))
print(sorted(my_dict))
print()
# 逆序
print(sorted(my_list,reverse = True))
print(sorted(my_tuple,reverse = True))
print(sorted(my_str,reverse = True))
print(sorted(my_set,reverse = True))
print(sorted(my_dict,reverse = True))
相关文章:
深度学习python基础(第四节) 元组、字符串、集合和字典
本节主要介绍元组,字符串,集合,字典的基本语法定义,以及相关的操作. 元组的定义和操作 元组一旦定义完成就不可修改. """ # 定义元组字面量 (元素,元素,....,元素) # 元素可以不同的数据类型# 定义元组变量 变量名称 (元素,…...
QT串口通信,实现单个温湿度传感器数据的采集
1、硬件设备 RS485中继器(一进二出),usb转485模块、电源等等 => 累计115元左右。 2、核心代码 #include "MainWindow.h" #include "ui_MainWindow.h"MainWindow::...
绘制决策树尝试3
目录 代码解读AI 随机状态 种子 定义决策树回归模型 tree的decision regressor fit 还可用来预测 export 效果图 我的X只有一个特征 为何这么多分支 ??? 这是CART回归 CART回归 为什么说代码是CART回归? 不是所有的决…...
【逻辑学导论第15版】A. 推理
识别下列语段中的前提与结论。有些前提确实支持结论,有些并不支持。请注意,前提可能直接或间接地支持结论,而简单的语段也可能包含不止一个论证。 例题: 1.管理得当的民兵组织对于一个自由国家的安全是必需的,因而人民…...
qt-C++笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别
qt-C笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别 code review! 参考笔记 1.qt-C笔记之重写QGraphicsItem的paint方法(自定义QGraphicsItem) 文章目录 qt-C笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphic…...
[Java]泛型(二)泛型方法
1.定义 在 Java 中,泛型方法是指在方法声明中使用泛型类型参数的一种方法。它使得方法能够处理不同类型的对象,而不需要为每种类型写多个方法,从而提高代码的重用性。 泛型方法与泛型类不同,泛型方法的类型参数仅仅存在于方法的…...
ProfibusDP主机与从机交互
ProfibusDP 主机SD2索要数据下发:68 08 F7 68 01 02 03 21 05 06 07 08 1C 1668:SD2 08:LE F7:LEr 68:SD2 01:目的地址 02:源地址 03:FC_CYCLIC_DATA_EXCHANGE功能码 21:数据地址 05,06,07,08&a…...
jQuery小游戏(二)
jQuery小游戏(二) 今天是新年的第二天,本人在这里祝大家,新年快乐,万事胜意💕 紧接jQuery小游戏(一)的内容,我们开始继续往下咯😜 游戏中使用到的方法 key…...
【MQ】如何保证消息队列的高可用?
RocketMQ NameServer集群部署 Broker做了集群部署 主从模式 类型:同步复制、异步复制 主节点返回消息给客户端的时候是否需要同步从节点 Dledger:要求至少消息复制到半数以上的节点之后,才给客户端返回写入成功 slave定时从master同步数据…...
简易计算器(c++ 实现)
前言 本文将用 c 实现一个终端计算器: 能进行加减乘除、取余乘方运算读取命令行输入,输出计算结果当输入表达式存在语法错误时,报告错误,但程序应能继续运行当输出 ‘q’ 时,退出计算器 【简单演示】 【源码位置】…...
AI大模型开发原理篇-4:神经概率语言模型NPLM
神经概率语言模型(NPLM)概述 神经概率语言模型(Neural Probabilistic Language Model, NPLM) 是一种基于神经网络的语言建模方法,它将传统的语言模型和神经网络结合在一起,能够更好地捕捉语言中的复杂规律…...
SpringBoot 基础特性
SpringBoot 基础特性 SpringApplication 相关特性 自定义 banner 在主配置文件写 banner.txt 的地址 #也可以不写默认路径就是 banner.txt #从类路径下找 banner #类路径就是 编译的target 目录 还有导入的第三方类路径。 spring.banner.locationclasspath:banner.txt#控制…...
网站快速收录:提高页面加载速度的重要性
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/32.html 网站快速收录中,提高页面加载速度具有极其重要的意义。以下从多个方面详细阐述其重要性: 一、提升用户体验 减少用户等待时间:页面加载速度直接…...
如何使用formlinker,重构微软表单创建的数字生产力法则?
仅需三步:上传文件-下载文件-导入文件到微软表单 凌晨两点的格式炼狱:被浪费的300万小时人类创造力 剑桥大学的实验室曾捕捉到一组震撼数据:全球教育工作者每年花在调整试题格式上的时间,足够建造3座迪拜哈利法塔。当北京某高校的…...
从零搭建一个Vue3 + Typescript的脚手架——day3
3.项目拓展配置 (1).配置Pinia Pinia简介 Pinia 是 Vue.js 3 的状态管理库,它是一个轻量级、灵活、易于使用的状态管理库。Pinia 是 Vue.js 3 的官方状态管理库,它可以帮助开发者更好地管理应用的状态。Pinia 是一个开源项目,它有丰富的文档…...
Three.js实战项目02:vue3+three.js实现汽车展厅项目
文章目录 实战项目02项目预览项目创建初始化项目模型加载与展厅灯光加载汽车模型设置灯光材质设置完整项目下载实战项目02 项目预览 完整项目效果: 项目创建 创建项目: pnpm create vue安装包: pnpm add three@0.153.0 pnpm add gsap初始化项目 修改App.js代码&#x…...
Linux——网络(tcp)
文章目录 目录 文章目录 前言 一、TCP逻辑 1. 面向连接 三次握手(建立连接) 四次挥手(关闭连接) 2. 可靠性 3. 流量控制 4. 拥塞控制 5. 基于字节流 6. 全双工通信 7. 状态机 8. TCP头部结构 9. TCP的应用场景 二、编写tcp代码函数…...
Ubuntu Server 安装 XFCE4桌面
Ubuntu Server没有桌面环境,一些软件有桌面环境使用起来才更加方便,所以我尝试安装桌面环境。常用的桌面环境有:GNOME、KDE Plasma、XFCE4等。这里我选择安装XFCE4桌面环境,主要因为它是一个极轻量级的桌面环境,适合内…...
分享|通过Self-Instruct框架将语言模型与自生成指令对齐
结论 在大型 “指令调整” 语言模型依赖的人类编写指令数据存在数量、多样性和创造性局限, 从而阻碍模型通用性的背景下, Self - Instruct 框架, 通过 自动生成 并 筛选指令数据 微调预训练语言模型, 有效提升了其指令遵循能…...
指针空值——nullptr(C++11)——提升指针安全性的利器
C11引入的nullptr是对指针空值的正式支持,它提供了比传统NULL指针更加安全和明确的指针空值表示方式。在C语言中,指针操作是非常基础且常见的,而如何安全地处理指针空值,一直是开发者关注的重要问题。本文将详细讲解nullptr的引入…...
C++游戏开发
C 是游戏开发中广泛使用的编程语言,因其高性能、灵活性和对硬件的直接控制能力而备受青睐。以下是 C 游戏开发的一些关键点: 1. 游戏引擎 Unreal Engine:使用 C 作为主要编程语言,适合开发高质量 3D 游戏。Unity:虽然…...
【Docker】ubuntu中 Docker的使用
之前记录了 docker的安装 【环境配置】ubuntu中 Docker的安装; 本篇博客记录Dockerfile的示例,docker 的使用,包括镜像的构建、容器的启动、docker compose的使用等。 当安装好后,可查看docker的基本信息 docker info ## 查…...
Linux C openssl aes-128-cbc demo
openssl 各版本下载 https://openssl-library.org/source/old/index.html#include <stdio.h> #include <string.h> #include <openssl/aes.h> #include <openssl/rand.h> #include <openssl/evp.h>#define AES_KEY_BITS 128 #define GCM_IV_SIZ…...
【卫星通信】链路预算方法
本文介绍卫星通信中的链路预算方法,应该也适用于地面通信场景。 更多内容请关注gzh【通信Online】 文章目录 下行链路预算卫星侧参数信道参数用户侧参数 上行链路预算链路预算计算示例 下行链路预算 卫星侧参数 令卫星侧天线数为 M t M_t Mt,每根天线…...
【Elasticsearch】 索引模板 ignore_missing_component_templates
解释 ignore_missing_component_templates 配置 在Elasticsearch中,ignore_missing_component_templates 是一个配置选项,用于处理索引模板中引用的组件模板可能不存在的情况。当您创建一个索引模板时,可以指定一个或多个组件模板࿰…...
Github 2025-01-30 Go开源项目日报 Top10
根据Github Trendings的统计,今日(2025-01-30统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Ollama: 本地大型语言模型设置与运行 创建周期:248 天开发语言:Go协议类型:MIT LicenseStar数量:42421 个Fork数量:2724 次关注人…...
Linux 下注册分析(4)
系列文章目录 Linux 设备树 Linux 下注册分析(1) Linux 下注册分析(2) Linux 下注册分析(3) Linux 下注册分析(4) 文章目录 系列文章目录1、device_create简介device_createdevice_c…...
PhotoShop中JSX编辑器安装
1.使用ExtendScript Tookit CC编辑 1.安装 打开CEP Resource链接: CEP-Resources/ExtendScript-Toolkit at master Adobe-CEP/CEP-Resources (github.com) 将文件clone到本地或者下载到本地 点击AdobeExtendScriptToolKit_4_Ls22.exe安装,根据弹出的…...
目前市场主流的AI PC对于大模型本地部署的支持情况分析-Deepseek
以下是目前市场主流AI PC对**大模型本地部署支持情况**的综合分析,结合硬件能力、软件生态及厂商动态进行总结: --- ### **一、硬件配置与算力支持** 1. **核心处理器架构** - **异构计算方案(CPUGPUNPU)**:主流…...
51单片机开发:独立键盘实验
实验目的:按下键盘1时,点亮LED灯1。 键盘原理图如下图所示,可见,由于接GND,当键盘按下时,P3相应的端口为低电平。 键盘按下时会出现抖动,时间通常为5-10ms,代码中通过延时函数delay…...
微服务网关鉴权之sa-token
目录 前言 项目描述 使用技术 项目结构 要点 实现 前期准备 依赖准备 统一依赖版本 模块依赖 配置文件准备 登录准备 网关配置token解析拦截器 网关集成sa-token 配置sa-token接口鉴权 配置satoken权限、角色获取 通用模块配置用户拦截器 api模块配置feign…...
STM32 TIM输入捕获 测量频率
输入捕获简介: IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器…...
python | OpenCV小记(一):cv2.imread(f) 读取图像操作(待更新)
python | OpenCV小记(一):cv2.imread(f)读取图像操作 1. 为什么 [:, :, 0] 提取的是第一个通道(B 通道)?OpenCV 的通道存储格式索引操作 [:, :, 0] 的解释常见误解 1. 为什么 [:, :,…...
解析静态链接
文章目录 静态链接空间与地址分配相似段合并虚拟地址分配符号地址确定符号解析与重定位链接器优化重复代码消除函数链接级别静态库静态链接优缺点静态链接 一组目标文件经过链接器链接后形成的文件即可执行文件,如果没有动态库的加入,那么这个可执行文件被加载后无需再进行重…...
Ollama 运行从 ModelScope 下载的 GGUF 格式的模型
本文系统环境 Windows 10 Ollama 0.5.7 Ollama 是什么? Ollama 可以让你快速集成和部署本地 AI 模型。它支持各种不同的 AI 模型,并允许用户通过简单的 API 进行调用 Ollama 的安装 Ollama 官网 有其下载及安装方法,非常简便 但如果希…...
【2025年最新版】Java JDK安装、环境配置教程 (图文非常详细)
文章目录 【2025年最新版】Java JDK安装、环境配置教程 (图文非常详细)1. JDK介绍2. 下载 JDK3. 安装 JDK4. 配置环境变量5. 验证安装6. 创建并测试简单的 Java 程序6.1 创建 Java 程序:6.2 编译和运行程序:6.3 在显示或更改文件的…...
探索性测试与自动化测试的结合
随着软件开发周期的不断缩短和质量要求的不断提高,测试行业正在经历一场深刻的变革。自动化测试因其高效性和可重复性成为测试团队必不可少的工具,而探索性测试(Exploratory Testing, ET)则因其灵活性和创意性在面对复杂、动态变化…...
我是如何写作的?
以前是如何写作的 从小学三年级开始学写作文,看的作文书,老师布置作文题目,内容我都是自己写的。那时会积累一些好词,听到什么好词就记住了。并没有去观察什么,也没有好好花心思在写作上。总觉得我写的作文与真正好的…...
智慧园区管理系统为企业提供高效运作与风险控制的智能化解决方案
内容概要 快鲸智慧园区管理系统,作为一款备受欢迎的智能化管理解决方案,致力于为企业提供高效的运作效率与风险控制优化。具体来说,这套系统非常适用于工业园、产业园、物流园、写字楼及公寓等多种园区和商办场所。它通过数字化与智能化的手…...
INCOSE需求编写指南-附录 B: 首字母缩略词和缩写
附录 Appendix B: 首字母缩略词和缩写ACRONYMS AND ABBREVIATIONS AD 难易程度的进阶 Advancement Degree of Difficulty AI 人工智能 Artificial Intelligence CM 配置管理 Configuration Management ConOps 运作理念 Concept of Operations COTS 商业现货 Comme…...
VS2008 - debug版 - 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。
文章目录 VS2008 - debug版 - 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。概述笔记VS2008安装环境VS2008测试程序设置默认报错的情况措施1措施2备注 - exe清单文件的问题是否使用静态库?_BIND_TO_CURRENT_VCLIBS_VERSION的出处…...
Docker容器数据恢复
Docker容器数据恢复 1 创建mongo数据库时未挂载数据到宿主机2 查找数据卷位置3 将容器在宿主机上的数据复制到指定目录下4 修改docker-compose并挂载数据(注意端口)5 重新运行新容器 以mongodb8.0.3为例。 1 创建mongo数据库时未挂载数据到宿主机 versi…...
翼星求生服务器搭建【Icarus Dedicated Server For Linux】
一、前言 本次搭建的服务器为Steam平台一款名为Icarus的沙盒、生存、建造游戏,由于官方只提供了Windows版本服务器导致很多热爱Linux的小伙伴无法释怀,众所周知Linux才是专业服务器的唯一准则。虽然Github上已经有大佬制作了容器版本但是容终究不够完美,毕竟容器无法与原生L…...
如何在data.table中处理缺失值
📊💻【R语言进阶】轻松搞定缺失值,让数据清洗更高效! 👋 大家好呀!今天我要和大家分享一个超实用的R语言技巧——如何在data.table中处理缺失值,并且提供了一个自定义函数calculate_missing_va…...
react中如何获取dom元素
实现代码 const inputRef useRef(null) inputRef.current.focus()...
引入@Inject的依赖包
maven引入Inject的依赖包 在 Maven 项目中引入 Inject 注解所需的依赖包同样取决于你打算使用的依赖注入框架。以下是一些常见框架及其 Maven 依赖配置的示例: 1. Google Guice 如果你打算使用 Google Guice,你需要在 pom.xml 文件中添加 Guice 的依赖…...
Deep Seek R1本地化部署
目录 说明 一、下载ollama 二、在ollama官网下载模型 三、使用 后记 说明 操作系统:win10 使用工具:ollama 一、下载ollama 从官网下载ollama: ollama默认安装在C盘,具体位置为C:\Users\用户名\AppData\Local\Programs\O…...
RDMA 工作原理 | 支持 RDMA 的网络协议
注:本文为 “RDMA” 相关文章合辑。 英文引文机翻未校。 图片清晰度受引文所限。 Introduction to Remote Direct Memory Access (RDMA) Written by: Dotan Barak on March 31, 2014.on February 13, 2015. What is RDMA? 什么是 RDMA? Direct me…...
再见了流氓软件~~
聊一聊 最近一直在测试软件,需要装各种软件和工具配合测试,导致现在电脑都快装满了,需要把不用的软件卸载。电脑自带的卸载只能一个一个卸载,不但麻烦还卸载不干净。 相信很多人也有这方面的需要,电脑装了很多软件&a…...
165. 比较版本号
两个注意的点: 分割字符串的时候,要用split("\\.")而不能用split("."),因为前者表示“对.使用斜杠转义,\\表示一个斜杠”,而后者表示匹配任意单个字符,例如version2 "1.2.3&quo…...