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

Python学习笔记(第二部分)

接续 Python.md 文件的第二部分

字典

字典的基本操作

  • 字典是一系列 键—值 对,每一个键都与一个值关联,值可以是数字,字符串,甚至是列表或字典,可以把任何python对象都作为字典中的值

    alien = {'color':'green','points':5}
    

    键和值之间用 :分隔,而不同的键值对之间用 ,分隔 ,字典中可以包含任意数量的键值对

  • 访问字典中的值

    alien = {'color':'green'}
    print(alien['color'])   #  green
    
    alien = {'color':'green','points':5}new_points = alien['points']
    print("You just earned " + str(new_points) + "points!")
    
  • 添加 键—值 对

    alien = {'color':'green','points':5}alien['x_position'] = 0  # 添加新的键值对  x_position:0
    alien['y_position'] = 25 # 添加新的键值对  y_position:25
    print(alien)  # {'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}
    
  • python 不关心键值对的添加顺序,只关心键和值之间的练习,因此同一个字典中的键值对之间不存在先后顺序之说

  • 创建一个空字典,并添加键值对

    alien = {}
    alien['color'] = 'green'
    alien['points'] = 5
    
  • 修改字典中的值

    alien = {'color':'green','points':5}
    alien['color'] = 'blue'
    print(alien['color'])alien = {'x_position':0, 'y_position':25, 'speed':'medium'}
    if alien['speed'] == 'slow':x_increment = 1
    elif alien['speed'] == 'medium':x_increment = 2
    else:x_increment = 3
    alien['x_position'] = alien['x_position'] + x_increment
    print("New x_position: " + str(alien['x_position']))  # New x_position: 2
    
  • 使用 del 语句删除键值对

    alien = {'color':'green','points':5}
    del alien['points']
    print(alien) # {'color': 'green'}
    
  • 由类似对象组成的字典

    favorite_languages = {'jen':'python','sara':'C','wdwa':'java','alice':'python',  # 最后一个键值对后边的逗号可以有也可以没有
    }
    

字典的遍历

  • 遍历字典的键和值

    favorite_nums = {'Bob': 5,'Alan':32,'kasy':56,
    }for name,num in favorite_nums.items():print(name + "'s favorite num is " + str(num))Bob's favorite num is 5
    Alan's favorite num is 32
    kasy's favorite num is 56
    
  • 遍历字典的所有键

    favorite_languages = {'jen':'python','sara':'C','wdwa':'java','alice':'python',  
    }for name in favorite_languages.keys():   #  因为遍历字典会默认比哪里其所有的键,因此,使用for name in favorite_languages: 也可以print(name.title())
    
  • 按顺序遍历字典中的所有键(对键进行排序)

    favorite_languages = {'jen': 'python','bon': 'C','kasy': 'pyhton','sda': 'C++',
    }for name in sorted(favorite_languages.keys()):print(name.title() + ", thank you for taking the poll.")
    
  • 遍历字典的所有值

    favorite_languages = {'jen': 'python','bon': 'C','kasy': 'java','sda': 'C++',
    }for language in favorite_languages.values():print(language.title())
    
  • 为了避免出现重复的值,可以用 集合,集合中的每个元素都是独一无二的

    favorite_languages = {'jen': 'Python','bon': 'C','kasy': 'Python','sda': 'C++',
    }for language in set(favorite_languages.values()):  # 通过对包含重复元素的列表带调用set(),可以让python找出其中独一无二的元素print(language.title())
    

嵌套

字典列表

  • 创建一个所有元素均为字典的列表
    alien_0 = {'color': 'green', 'points': 5}alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}aliens = [alien_0, alien_1, alien_2]for alien in aliens:print(alien)
    # 创建一个用于存储外星人的空列表aliens = []# 创建30个绿色的外星人for alien_number in range(30):new_alien = {'color': 'green','points':5, 'speed':'slow'}aliens.append(new_alien)# 显示前五个外星人for alien in aliens[:5]:print(alien)# 显示创建了多少个外星人print("Total number: " + str(len(aliens)))``````Python# 创建一个用于存储外星人的空列表aliens = []# 创建30个绿色的外星人for alien_number in range(30):new_alien = {'color': 'green','points':5, 'speed':'slow'}aliens.append(new_alien)for alien in aliens[:3]:if alien['color'] == 'green':alien['color'] = 'red'alien['points'] = 10alien['speed'] = 'medium'# 显示前五个外星人for alien in aliens[:5]:print(alien)

列表字典

  • 包含列表元素的字典

    # 存储点的pizza的信息
    pizza = {'crust':'thick','toppings':['mushrooms','extra cheese'],
    }#  概述信息
    print("You ordeered  a" + pizza['crust'] + "-crust pizza"+" with the following topppings: ")
    for topping in pizza['toppings']:print('\t ' + topping)
    

    每当需要在字典中将一个键关联到多个值时,就可以在字典中嵌入一个列表

    favorite_languages = {'jen': ['python','ruby'],'sarah':['c'],'edward':['ruby','go'],'phil':['pyhotn','hashkell'],
    }for name,languages in favorite_languages.items():print("\n" + name.title() + "'s favorite languages are:")for language in languages:print("\t" + language.title())
    

存储字典的字典

  • 在字典中存储字典,可以存储更复杂的信息

    users = {'endis': {'first': 'albert','last': 'ensid','location':'princeton'},'John':{'first':'marie','last':'curie','location':'Beijing'}
    }for username , user_info in users.items():print("UserName: " + username)fullName = user_info['first'] + " " + user_info['last']location = user_info['location']print('\t FullName: ' + fullName)print("\tLocation: " + location)
    

    尽量保证字典内每个字典的结构都相同,这样循环遍历起来更容易

输入

  • input的工作原理:

    name = input("please input your name:")   # input里的参数是提示输入的内容
    print("Hello, " + name + "!")
    
  • 如果提示内容太长,可以存在一个变量里:

    prompt = "If you tell us who you are, \  \n I will tell you how to do!"
    name = input(prompt)
    print("Hello, " + name + "!")
    
    prompt = "If you tell us who you are"
    prompt += "\nTell me your name: "
    name = input(prompt)
    print("Hello, " + name + "!")
    
  • 使用 int() 来获取数值型输入

    age = int(input("Please tell me your age: "))
    print(age >= 18)
    

输出

print(a + b, a, b)
print(chr(65), chr(97)) # 使用 chr 函数可以得到 对应的ASCII字符
print(ord('北'))  # 使用 ord 函数可以得到字符对应的ASCII值
print(ord('京'))
完整格式
print(*objects, sep=' ', end='\n', file=sys.stdout)

参数的具体含义如下:

objects --表示输出的对象。输出多个对象时,需要用 , (逗号)分隔。

sep – 用来间隔多个对象,以sep指定的内容作为分隔符

end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符。

file – 要写入的文件对象。

其他用法
  • 使用连接符连接两个字符串(只能是字符串和字符串之间连接,整数和字符串不能做连接)

    print('a'+'b')
    
  • 如果想要同时输出字符串和整数,用逗号分隔即可

    print('a',2)
    

While循环

  • 让用户选择何时退出

    prompt = "Tel me something, and I will repeat it back to you \n"
    prompt += "(Enter 'quit' to end the program.) : "
    message = ""
    while message != 'quit':message = input(prompt)if message != 'quit':print(message)
    
  • 使用标志:定义一个变量,判断整个程序是否处于活动状态,这个变量称为标志

    prompt = "Tel me something, and I will repeat it back to you \n"
    prompt += "(Enter 'quit' to end the program.) : "
    active = True  # active 就是程序状态的标志
    while active:message = input(prompt)if message == 'quit':active = Falseelse:print(message)
    
  • 使用break退出循环

    prompt = "Tel me something, and I will repeat it back to you \n"
    prompt += "(Enter 'quit' to end the program.) : "while True:message = input(prompt)if message == 'quit':breakelse:print(message)
    

    任何python的循环都可以使用break语句跳出循环。如:可以使用break语句跳出遍历列表或字典的for循环

  • 在循环中使用continue

    # 实现打印 1-10内的奇数current_num = 0
    while current_num < 10:current_num += 1if current_num % 2 == 0:continueelse:print(current_num)
    
  • 使用 while 循环来处理列表和字典

    # 在列表之间移动元素
    unconfirmed_users = ['alice', 'brain', 'wow']
    confirmed_users = []while unconfirmed_users:current_user = unconfirmed_users.pop()print("Verifying user: " + current_user.title())confirmed_users.append(current_user)
    print("\nThe following users are confirmed: ")
    for user in confirmed_users:print(user.title())
    
  • 删除包含特定值的所有列表元素

    pets = ['cat','dog','goldfish','cat','dog','rabbit','cat']
    print(pets)while 'cat' in pets:pets.remove('cat')print(pets)
    
  • 使用用户输入来填充字典

    responses = {}active = True
    while active:name = input("please input your name: ")response = input("Please input your advice: ")responses[name] = responserepeat = input("Would you like to let another person respond?(yes/no): ")if repeat == 'NO' or repeat == "no" or repeat == 'No':active = Falseprint("Polling results: ")
    for name, response in responses.items():print(name + ": " + response + "\n")
    

函数

  • 定义函数–> 原则:每个函数都应只负责一项具体的工作

    def greet_user(username):print("Hello, " + str(username).title())
    greet_user("John")
    
  • 函数应该包含注释,其注释应该紧跟在函数定义后边,并使用文档字符串的形式注释

  • 多个函数之间用两个空行分开

  • 实参–位置实参(实参的顺序必须和形参的顺序完全相同)

    def describe_pet(animal_type, pet_name):print("I have a " + animal_type + ".")print("My " + animal_type + "'s name is " + pet_name.title() + '.' )describe_pet('dog', 'John')
    
  • 实参–关键字实参(传递给函数的名称-值对)

    def describe_pet(animal_type, pet_name):print("I have a " + animal_type + ".")print("My " + animal_type + "'s name is " + pet_name.title() + '.' )describe_pet(animal_type = 'dog', pet_name =  'John')
    describe_pet(pet_name =  'John', animal_type = 'dog')   # 两种方式输出一样
    

    此时不用考虑参数的顺序,但是必须准确的指定函数定义中形参的名字

  • 默认值(可以在编写函数时,给每个参数一个默认值,)

    def describe_pet(pet_name, animal_type='dog'):  # 注意参数的顺序发生了改变,pet_name位置处传入的参数时位置参数print("I have a " + animal_type + ".")print("My " + animal_type + "'s name is " + pet_name.title() + '.' )
    describe_pet("john")
    

    使用默认值时,把给定了默认值的参数放在后边,把那些没有给默认值的形参放在前边:

    def describe_pet(animal_type='dog',pet_name):   # 会报错 SyntaxError: non-default argument follows default argumentprint("I have a " + animal_type + ".")print("My " + animal_type + "'s name is " + pet_name.title() + '.' )
    describe_pet("john")
    
  • 等效的函数调用

    def describe_pet(pet_name, animal_type='dog'):print("I have a " + animal_type + ".")print("My " + animal_type + "'s name is " + pet_name.title() + '.' )# 一只名为wille的小狗
    describe_pet('wille')
    describe_pet(pet_name = 'wille')# 一只名为harry的仓鼠
    describe_pet('harry','hamster')
    describe_pet(pet_name = 'harry', animal_type = 'hamster')
    describe_pet(animal_type = 'hamster', pet_name = 'harry')
    describe_pet(pet_name = 'harry', 'hamster') # 不能这样写,要么全部写成位置参数,要么全部写成关键词参数
    
  • 返回值(使用return语句)

    def get_fullname(first_name, last_name):fullname = first_name.title() + " " + last_name.title()return fullname
    musician = get_fullname("john",'Alan')
    print(musician)
    
  • 让实参变成可选的

    def get_fullname(first_name, last_name, middle_name=''):  # 中间名是可选的,应该在最后列出该形参,并将其值设置为空字符串if middle_name:   fullname = first_name + ' ' + middle_name + ' ' + last_name  # 这样没有中间名字时,也能合理的显示else:fullname = first_name + ' '  + last_namereturn fullname.title()musician = get_fullname('jimi','hendrix')
    print(musician)
    musician = get_fullname('jimi','hendrix','Lee')
    print(musician)
    
  • 返回字典

    def build_person(first_name,last_name,age=''):person = {'first_name':first_name, 'last_name':last_name}if age:person['age'] = agereturn personmusician = build_person('jimi', 'hendrix',age=27)
    print(musician)
    
  • 综合训练

    def get_fullname(first_name, last_name):fullname = first_name + " " + last_namereturn fullname.title()while True:print("\nTell me your name(input 'q' to edn program.): ")f_name = input("\tfirst name:")if f_name == 'q' or f_name == 'Q':breakl_name = input("\tlast name: ")if l_name == 'q' or l_name == 'Q':breakfull_name = get_fullname(f_name,l_name)print("Hello, " + full_name)
    
  • 传递列表

    def greet_users(names):for name in names:print("hello, " + name.title() + '.')
    usernames = ['John','ALan','Alice']
    greet_users(usernames)
    
  • 在函数中修改传递的列表

    def print_models(unprinted_designs, completed_designs):while unprinted_designs:current_design = unprinted_designs.pop()print("Printing model: " + current_design + " ...")completed_designs.append(current_design)def show_completed_models(completed_designs):print("\nThe following modesl have benn printed:")for design in completed_designs:print(design)unprint_designs = ['iphone case', 'robot pendant', 'dodecahdrom']
    completed_models = []
    print_models(unprint_designs,completed_models)
    show_completed_models(completed_models)
    
  • 静止函数修改列表–>向函数传递列表的副本而不是原件

    function_name(list_name[:]) # 使用切片表示法[:]创建列表的副本
    
    def print_models(unprinted_designs, completed_designs):while unprinted_designs:current_design = unprinted_designs.pop()print("Printing model: " + current_design + " ...")completed_designs.append(current_design)def show_completed_models(completed_designs):print("\nThe following modesl have benn printed:")for design in completed_designs:print(design)unprint_designs = ['iphone case', 'robot pendant', 'dodecahdrom']
    completed_models = []
    print_models(unprint_designs[:],completed_models)  # 使用切片表示法创建副本,原来的列表能够继续存在
    show_completed_models(completed_models)
    print("======")
    show_completed_models(unprint_designs)
    
  • 传递任意数量的实参(使用 * 创建空元组)

    def make_pizza(*toppings):  # 创建了一个名为toppings的空元组print(toppings)
make_pizza('pepper')   # ('pepper',)make_pizza('pepper','green pepp','dogds')  # ('pepper', 'green pepp', 'dogds')   
使用这种方法,无论传入多少个实参,都是按照元组对待,可以使用遍历的方法:
    def make_pizza(*toppings):  # 创建了一个名为toppings的空元组print("The toppings are following: ")for topping in toppings:print(topping)make_pizza('pepper','green pepp','dogds')
  • 结合使用位置实参和任意数量实参

    如果同时有位置实参和任意数量参数,必须把任意数量实参的形参放在最后,Python会先匹配位置实参和关键字实参,再将剩下的实参都放在最后一个形参中

    def make_pizza(size,*toppings):print("Making a "+ str(size) + "-size pizza.")print("The toppings are following: ")for topping in toppings:print("\t-"+ topping)
    make_pizza(12,'pieer')
    make_pizza(16,'asds','sada','pospdo')
    
  • 使用任意数量的关键字实参(使用 ** 创建空字典)

    def build_person(first,last, **user_info):  # 告诉Python创建一个名为  user_info的空字典person = {}person['first_name']= firstperson['last_name'] = lastfor key,value in user_info.items():person[key] = valuereturn personuser_profile = build_person('alberit','ensten',location='princeton',   # 注意写法,这里的 键 不用加引号field='Computer Science')
    print(user_profile) # {'first_name': 'alberit', 'last_name': 'ensten', 'location': 'princeton', 'field': 'Computer Science'}
    
  • 将函数存储在模块中

    模块是一个单独存放函数的文件,可以隐藏程序代码的细节,模块的扩展名为.py。使用import语句将模块导入主程序中

    # pizza.py
    def make_pizza(size,*toppings):print("Making a "+ str(size) + "-size pizza.")print("The toppings are following: ")for topping in toppings:print("\t-"+ topping)
    
    import pizza   # 导入后,可以使用pizza.py中的所有函数pizza.make_pizza(12,'pieer')  # 使用 模块名.函数名()的方法调用模块中的任意一个函数
    pizza.make_pizza(16,'asds','sada','pospdo')
    

    python导入模块时,是将模块中的代码整个的复制到当前的程序中

  • 导入特定的函数,使用逗号分隔函数名

    from moudle_name import function_name
    from moudle_name import function1_name,function2_name,function3_name
    
    from pizza import make_pizza
    make_pizza(12,'pieer')  # 使用导入特定函数的方法,就不用再使用句点的方式,因为显示的导入了make_pizza函数,所以可以直接使用其名称
    make_pizza(16,'asds','sada','pospdo')
    
  • 使用 as 给函数起别名

    from pizza import make_pizza as mpmp(12,'pieer')
    mp(16,'asds','sada','pospdo')
    
  • 使用 as 给模块起别名

    import pizza as pp.make_pizza(12,'pieer')  
    p.make_pizza(16,'asds','sada','pospdo')
    
  • 使用 * 导入模块中的所有函数(尽量少用,因为可能不同的模块中有名字相同的函数)

    from pizza import *
    make_pizza(12,'pieer')  # 由于导入了所有函数,也不用再使用句点的方式,可以直接使用其名称
    make_pizza(16,'asds','sada','pospdo')
    

    python在遇到多个名字相同的变量或函数时,会覆盖,而不是分别导入不同的函数

相关文章:

Python学习笔记(第二部分)

接续 Python.md 文件的第二部分 字典 字典的基本操作 字典是一系列 键—值 对&#xff0c;每一个键都与一个值关联&#xff0c;值可以是数字&#xff0c;字符串&#xff0c;甚至是列表或字典&#xff0c;可以把任何python对象都作为字典中的值 alien {color:green,points:5}键…...

ZYNQB笔记(十六):AXI DMA 环路测试

版本&#xff1a;Vivado2020.2&#xff08;Vitis&#xff09; 任务&#xff1a;使用 PL 端的 AXI DMA IP 核实现对 DDR3 中数据的读取与写入&#xff0c;实现数据环回&#xff0c;具体流程为&#xff1a; PS 端产生测试数据并写入到 DDR3 中&#xff0c;然后 PL 端的 AXI DMA I…...

Java学习手册:Spring 数据访问

一、Spring JDBC JdbcTemplate &#xff1a;Spring JDBC 提供了 JdbcTemplate 类&#xff0c;它简化了数据库操作&#xff0c;提供了丰富的 API 来执行数据库访问任务。JdbcTemplate 可以自动处理数据库连接的获取、释放&#xff0c;SQL 语句的执行&#xff0c;结果集的处理等…...

第二章 日志分析-apache日志分析(玄机系列)

简介 账号密码 root apacherizhi ssh rootIP 1、提交当天访问次数最多的IP&#xff0c;即黑客IP&#xff1a; 2、黑客使用的浏览器指纹是什么&#xff0c;提交指纹的md5&#xff1a; 3、查看包含index.php页面被访问的次数&#xff0c;提交次数&#xff1a; 4、查看黑客IP访问了…...

类比分析AI Agent 技术

引言&#xff1a;AI Agent 的本质与范式转变 在人工智能领域&#xff0c;AI Agent&#xff08;智能体&#xff09;代表了一种从传统软件系统到自主性实体的深刻范式转变。不同于仅仅执行预设指令或算法的程序&#xff0c;现代 AI Agent 被设计为能够&#xff1a; 感知 (Perce…...

【业务领域】PCIE协议理解

PCIE协议理解 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 PCIE学习理解。 文章目录 PCIE协议理解[TOC](文章目录) 前言零、PCIE掌握点&#xff1f;一、PCIE是什么&#xff1f;二、PCIE协议总结物理层切速 链路层事务层6.2 TLP的路…...

设计模式简述(十四)组合模式

组合模式 描述基本使用所有节点方法一致使用 叶子无实现子节点使用 添加向上查询使用&#xff08;没变化&#xff09; 描述 组合模式用于描述部分与整体的关系&#xff0c;将个体对象与组合对象的行为统一&#xff0c;便于维护整个数据集。 基本使用 所有节点方法一致 定义…...

【Tool】vscode

vscode问题集锦 1 全局搜索失效 ctrl shift f 快捷键失效&#xff1a; 原因&#xff1a;可能与输入法快捷键冲突&#xff0c;重定义输入法快捷键即可 其他 看心情和经历补充&#xff5e;...

文件操作--文件包含漏洞

本文主要内容 脚本 ASP、PHP、JSP、ASPX、Python、Javaweb --# 各种包含函数 检测 白盒 代码审计 黑盒 漏扫工具、公开漏洞、手工看参数值及功能点 类型 本地包含 有限制、无限制 远程包含 无限制、有限制…...

数字智慧方案6156丨智慧医联体信息化解决方案(50页PPT)(文末有下载方式)

资料解读&#xff1a;智慧医联体信息化解决方案 详细资料请看本解读文章的最后内容。 在医疗改革不断深化的大背景下&#xff0c;医联体信息化建设成为推动医疗服务高质量发展的关键力量。《智慧医联体信息化解决方案》这份资料&#xff0c;全面且深入地阐述了医联体信息化建…...

华为eNSP:多区域集成IS-IS

一、什么是多区域集成IS-IS&#xff1f; 多区域集成IS-IS是一种基于中间系统到中间系统&#xff08;IS-IS&#xff09;协议优化的网络架构设计&#xff0c;通过多区域协同、路径优化和扩展性增强实现高效路由管理&#xff0c;其核心特征如下&#xff1a; 1、分布式架构与多区…...

RAG技术完全指南(一):检索增强生成原理与LLM对比分析

RAG技术完全指南&#xff08;一&#xff09;&#xff1a;检索增强生成原理与LLM对比分析 文章目录 RAG技术完全指南&#xff08;一&#xff09;&#xff1a;检索增强生成原理与LLM对比分析1. RAG 简介2. 核心思想3. 工作流程3.1 数据预处理&#xff08;索引构建&#xff09;3.2…...

(持续更新)Ubuntu搭建LNMP(Linux + Nginx + MySQL + PHP)环境

LNMP&#xff08;Linux Nginx MySQL PHP&#xff09;环境是在Linux操作系统上构建的一个高性能Web服务器环境。M也可以指代其他数据库&#xff0c;P也可以指代Python 1. 准备Linux系统 确保你已经在一台服务器或虚拟机上安装了Linux操作系统。推荐使用Ubuntu、CentOS或Debi…...

机器人手臂控制器:EMC电磁兼容解决(一)

一、机器人手臂控制器行业标准剖析 GB/T 39004—2020《工业机器人电磁兼容设计规范》 GB/T 37283-2019 服务机器人 电磁兼容 通用标准 抗扰度要求和限值 GB/T 39785-2021 服务机器人 机械安全评估与测试方法 GB/T 40014-2021 双臂工业机器人 性能及其试验方法 GB/T 40013-…...

Qt进阶开发:QSS常用的语法介绍和使用

文章目录 一、什么是QSS?二、QSS的基本语法三、QSS 的使用方式3.1 在代码中设置 QSS3.2 加载外部 QSS 文件四、QSS中选择器的介绍和使用4.1 Type Selector(类型选择器)4.2 ID Selector(ID 选择器)4.2.1 仅使用 ID(常见写法)4.2. 2 类型 + ID(更精确匹配)4.3 Class Sel…...

qemu学习笔记:QOM

2.4 QOM介绍 说明&#xff1a;小白学习qemu的一些学习笔记。主要是学习《QEMU&KVM源码解析与应用》这本书。 参考&#xff1a; 《QEMU&KVM源码解析与应用》作者&#xff1a;李强 Qemu - 百问网嵌入式Linux wiki QOM 定义&#xff1a;QEMU Object Model&#xff0c;是 Q…...

Spring AI开发跃迁指南(第二章:急速上手3——Advisor核心原理、源码讲解及使用实例)

1.Advisor简介 Spring AI 中的 Advisor 是一种核心机制&#xff0c;用于拦截和增强 AI 应用程序中的请求与响应流。其设计灵感来源于 Spring AOP&#xff08;面向切面编程&#xff09;中的切面&#xff08;Aspect&#xff09;概念&#xff0c;但专门针对 AI 交互场景进行了优化…...

51c嵌入式~单片机~合集9

我自己的原文哦~ https://blog.51cto.com/whaosoft/13884964 一、单片机中hex、bin文件的区别 单片机程序编译之后&#xff0c;除了生成hex文件之外还生成了bin文件&#xff0c;实际它们都是单片机的下载文件&#xff0c;下文介绍它们的区别。 Hex Hex文件包含地址信息。…...

linux学习——数据库API创建

一.API操作 1.int sqlite3_open(char *filename,sqlite3 **db) 功能&#xff1a;打开sqlite数据库 参数&#xff1a; filename:数据库文件路径 db:指向sqlite句柄的指针 &#xff08;splite3* db;&#xff09; 返回值…...

21.2Linux中的LCD驱动实验(驱动)_csdn

1、修改设备树 1.1、LCD 屏幕使用的 IO 配置 编译&#xff1a; make uImage LOADADDR0XC2000040 -j8 //编译内核复制给内核的镜像路径&#xff1a;1.2、LDTC 接口节点修改 1.3、输出接口的编写 2、在 panel-simple.c 文件里面添加屏幕参数 显示波浪线是因为alientek_desc 保存参…...

Dubbo(89)如何设计一个支持多语言的Dubbo服务?

设计一个支持多语言的Dubbo服务需要考虑以下几个方面&#xff1a; 服务接口设计&#xff1a;确保服务接口的定义可以被不同语言实现。序列化协议&#xff1a;选择一个支持多语言的序列化协议&#xff0c;例如Protobuf、Thrift、gRPC等。服务注册与发现&#xff1a;确保服务注册…...

油气地震资料数据中“照明”的含义

油气地震资料数据中“照明”的含义 在地震勘探中&#xff0c;“照明”&#xff08;Illumination&#xff09;是一个比喻性术语&#xff0c;用于描述地下地质构造被地震波能量覆盖的程度。其核心含义包括&#xff1a; 能量覆盖&#xff1a;指地震波&#xff08;如人工激发的地…...

[FPGA Video IP] Frame Buffer Read and Write

Xilinx Video Frame Buffer Read and Write IP (PG278) 详细介绍 概述 Xilinx LogiCORE™ IP Video Frame Buffer Read&#xff08;帧缓冲读取&#xff09;和 Video Frame Buffer Write&#xff08;帧缓冲写入&#xff09;核&#xff08;PG278&#xff09;是一对专为视频处理…...

新能源行业供应链规划及集成计划报告(95页PPT)(文末有下载方式)

资料解读&#xff1a;《数字化供应链规划及集成计划现状评估报告》 详细资料请看本解读文章的最后内容。 该报告围绕新能源行业 XX 企业供应链展开&#xff0c;全面评估其现状&#xff0c;剖析存在的问题&#xff0c;并提出改进方向和关键举措&#xff0c;旨在提升供应链竞争力…...

curl详解

curl 是一个常用的命令行工具&#xff0c;用于发送 HTTP 请求&#xff0c;支持包括 GET、POST、PUT、DELETE 等在内的多种 HTTP 方法。它非常适合用来测试 API、下载文件、与后端服务进行交互等。接下来&#xff0c;我会详细讲解 curl 的基本用法以及常见的应用场景。 &#x…...

博客打卡-人类基因序列功能问题动态规划

题目如下&#xff1a; 众所周知&#xff0c;人类基因可以被认为是由4个核苷酸组成的序列&#xff0c;它们简单的由四个字母A、C、G和T表示。生物学家一直对识别人类基因和确定其功能感兴趣&#xff0c;因为这些可以用于诊断人类疾病和设计新药物。 生物学家确定新基因序列功能…...

Runnable组件动态添加默认调用参数

01. bind 函数用途与使用技巧 在使用 LangChain 开发时&#xff0c;某些场景我们希望在一个 Runnable 队列中调用另一个 Runnable 并传递常量参数&#xff0c;这些参数既非前序 Runnable 的输出&#xff0c;也不是用户输入&#xff0c;而是组件自身的部分参数。此时可以使用 R…...

系统架构设计师:设计模式概述

面向对象技术为软件技术带来新的发展。人们运用面向对象的思想分析系统、为系统建模并设计系统&#xff0c;最后使用面向对象的程序语言来实现系统。 但是面向对象的设计并不是一件很简单的事情&#xff0c;尤其是要设计出架构良好的软件系统更不容易。 为了提高系统的复用性…...

天山流域流量数据集(1991-2019)

时间分辨率日空间分辨率/共享方式开放获取数据大小131.67 MB数据时间范围 1901-01-01 — 2019-12-31 元数据更新时间2025-03-24 数据集摘要 由于天山地区数据稀缺和水文条件复杂&#xff0c;中亚水塔的自然径流数据集在各种全球径流数据集&#xff08;如GMIS、GRDC&#xff09…...

Linux 环境下 Mysql 5.7 数据定期备份

目录 一、创建数据备份脚本二、查看备份日志三、数据库数据恢复 备份策略&#xff1a; 系统环境 openEuler 22.03 (LTS-SP4) 单机备份 每天凌晨2点&#xff0c;指定数据库表全量备份&#xff0c;只保留近7次备份数据 每次的脚本执行&#xff0c;将会记录执行结果到日志&#xf…...

多模态大语言模型arxiv论文略读(五十二)

M3D: Advancing 3D Medical Image Analysis with Multi-Modal Large Language Models ➡️ 论文标题&#xff1a;M3D: Advancing 3D Medical Image Analysis with Multi-Modal Large Language Models ➡️ 论文作者&#xff1a;Fan Bai, Yuxin Du, Tiejun Huang, Max Q. -H. M…...

REST API、FastAPI与Flask API的对比分析

以下是关于REST API、FastAPI与Flask API的对比分析&#xff0c;涵盖架构设计、性能表现、开发效率等核心维度&#xff1a; 一、核心定位与架构差异 REST API 本质&#xff1a;一种基于HTTP协议的架构风格&#xff0c;强调资源化操作&#xff08;通过URI定位资源&#xff09;、…...

【论文阅读26】贝叶斯-滑坡预测-不确定性

&#x1f4d6; 这篇论文主要说了什么&#xff1f; &#x1f4cc; 背景&#xff1a; 滑坡预测里&#xff0c;预测失稳时间&#xff08;Slope Failure Time, SFT&#xff09; 很关键&#xff0c;但它受两方面不确定性影响&#xff1a; 观测不确定性&#xff08;监测数据本身的…...

【笔记】深度学习模型训练的 GPU 内存优化之旅④:内存交换与重计算的联合优化篇

开设此专题&#xff0c;目的一是梳理文献&#xff0c;目的二是分享知识。因为笔者读研期间的研究方向是单卡上的显存优化&#xff0c;所以最初思考的专题名称是“显存突围&#xff1a;深度学习模型训练的 GPU 内存优化之旅”&#xff0c;英文缩写是 “MLSys_GPU_Memory_Opt”。…...

边缘计算革命:大模型轻量化部署全栈实战指南

当ResNet-152模型能在树莓派4B上实现每秒27帧实时推理时&#xff0c;边缘智能时代真正到来。本文解析从模型压缩到硬件加速的完整技术栈&#xff0c;实测Transformer类模型在移动端的部署时延可压缩至16ms&#xff0c;揭示ARM芯片实现INT4量化的工程秘诀与十种典型场景优化方案…...

LangChain4j +DeepSeek大模型应用开发——7 项目实战 创建硅谷小鹿

这部分我们实现硅谷小鹿的基本聊天功能&#xff0c;包含聊天记忆、聊天记忆持久化、提示词 1. 创建硅谷小鹿 创建XiaoLuAgent package com.ai.langchain4j.assistant;import dev.langchain4j.service.*; import dev.langchain4j.service.spring.AiService;import static dev…...

python自动化测试

Python自动化测试指南 Python是自动化测试领域的首选语言之一,凭借其简洁的语法、丰富的库和强大的生态系统,能够高效地实现各种测试需求。本文将详细介绍Python在自动化测试中的应用,涵盖Web测试、API测试、单元测试、GUI测试等多个方面。 1. 自动化测试基础 测试金字塔…...

49、【OS】【Nuttx】【OSTest】参数解析:测试项

背景 接之前 blog 48、【OS】【Nuttx】【OSTest】内存监控&#xff1a;分配释放推演 解析完内存监控&#xff0c;继续看下一个测试项 getopt_test 测试项 getopt_test 如下 getopt&#xff0c;getopt_long&#xff0c;getopt_long_only getopt() 用来解析命令行短选项&am…...

String StringBuilder StringBuffer

文章目录 StringStringBuilderStringBuffer StringStringBuilderStringBuffer可变性不可变可变可变线程安全安全&#xff08;天然不可变&#xff09;不安全安全&#xff08;同步方法&#xff09;性能低&#xff08;频繁操作生成新对象&#xff09;高中&#xff08;同步开销&…...

[FPGA 官方 IP] Binary Counter

Xilinx Binary Counter IP (PG121) 详细介绍 概述 Xilinx Binary Counter IP&#xff08;二进制计数器 IP&#xff09;是 AMD Xilinx 提供的 LogiCORE™ IP 核&#xff0c;用于在 FPGA 中实现高性能、面积高效的二进制计数器。该 IP 核支持上行计数器、下行计数器以及上/下计…...

【大模型实战篇】华为信创环境采用vllm部署QwQ-32B模型

1. 背景 本文分享在华为昇腾机器上部署QwQ-32B模型的实践。 首先华为自己是提供了一套在信创机器&#xff08;NPU&#xff09;上部署模型的方案【1】&#xff0c;但是部署之后&#xff0c;测试发现会有输出截断的现象。QwQ-32B本身是支持128k的最大上下文长度&#xff0c;定位…...

优雅关闭服务:深入理解 SIGINT / SIGTERM 信号处理机制

目录 为什么需要优雅关闭&#xff1f; 什么是 SIGINT 和 SIGTERM&#xff1f; 如何实现优雅关闭&#xff08;以 C 为例&#xff09; 示例代码&#xff08;gRPC 服务 Boost 信号监听&#xff09;&#xff1a; 优雅关闭时的清理内容通常包括&#xff1a; 与 SIGKILL 的区别…...

2025五一杯数学建模竞赛选题建议+初步分析

完整内容请看文章最下面的推广群 2025五一杯数学建模竞赛选题建议初步分析 提示&#xff1a;C君认为的难度和开放度评级如下&#xff1a; 难度&#xff1a;B题 > A题 > C题,开放度&#xff1a;B题 > C题 > A题。综合来看&#xff1a;A题目标明确&#xff0c;数据…...

自动剪辑批量混剪视频过原创软件工具视频帧级处理技术实践批量截图解析

一、引言&#xff1a;视频素材精细化处理的技术需求 在视频内容生产与分析场景中&#xff0c;高效的帧级处理是素材解构的核心环节。本文结合实战经验&#xff0c;解析基于智能帧截取算法、参数化配置系统、多线程并行处理的批量帧处理技术方案&#xff0c;构建可复用的工程化…...

GD32F407单片机开发入门(二十五)HC-SR04超声波模块测距实战含源码

文章目录 一.概要二.HC-SR04主要参数1.模块引脚定义2.模块电气参数3.模块通讯时序4.模块原理图 三.GD32单片机超声波模块测距实验四.工程源代码下载五.小结 一.概要 HC-SR04超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR04超声波模块主…...

C++11新特性_Lambda 表达式

Lambda 表达式是 C11 引入的一项重要特性&#xff0c;它允许你在代码中创建匿名函数对象。Lambda 表达式为编写简洁、灵活的代码提供了便利&#xff0c;尤其适用于函数式编程和需要传递简短回调函数的场景。下面从基本语法、捕获列表、使用场景等方面详细介绍 Lambda 表达式。 …...

vue中$set原理

Vue 中的 $set 方法&#xff08;Vue.set&#xff09;主要用于 向响应式对象中添加一个新的属性&#xff0c;并确保这个新属性是响应式的&#xff0c;能够触发视图更新。 &#x1f4cc; 背景问题&#xff1a;为什么需要 $set&#xff1f; 在 Vue 2 中&#xff0c;直接给对象新增…...

【C++重载操作符与转换】输入和输出操作符

目录 一、输入输出操作符概述 二、输入输出操作符重载的原理 2.1 为什么需要重载&#xff1f; 2.2 重载的限制 2.3 重载的方式 三、输入输出操作符重载的实现 3.1 输出操作符 << 的重载 3.2 输入操作符 >> 的重载 四、输入输出操作符重载的注意事项 4.1 …...

Vue 生命周期全解析:理解组件从创建到销毁的全过程

Vue 生命周期全解析&#xff1a;理解组件从创建到销毁的全过程 Vue.js 是一个流行的前端框架&#xff0c;它通过“组件化开发”提升了代码组织效率。要真正掌握 Vue&#xff0c;生命周期&#xff08;Lifecycle&#xff09; 是一个必须深入理解的核心概念。生命周期不仅决定了组…...

MySQL零基础入门:Ubuntu环境安装与操作精解

知识点1【数据库】 数据的存储方式&#xff0c;我们之前学的&#xff0c;从变量&#xff0c;数组&#xff0c;链表&#xff0c;最后到文件&#xff0c;文件之上&#xff0c;便是数据库&#xff0c;而我们要介绍的MySQL就是数据库的关系数据库中的其中一种。 1、数据库 本质&…...