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

【第九节】python中xml解析和json编解码

目录

一、Python XML 解析

1.1 什么是XML

1.2 Python 对 XML 的解析方法

1.3 SAX解析xml

1.4 xml.dom解析xml

1.6 ElementTree解析XML

二、Python编解码json

2.1 什么是json

2.2 使用json 库

2.3 使用第三方库Demjson


一、Python XML 解析

1.1 什么是XML

        XML,全称为可扩展标记语言(eXtensible Markup Language),是一种用于描述数据的标记语言。XML的设计宗旨是传输和存储数据,强调数据的内容和结构,而非数据的显示方式。

以下是XML的一些关键特点:

1). **自描述性**:XML使用标签来定义数据的结构和意义,这些标签可以由用户根据需要自行定义,因此具有很高的灵活性和扩展性。

2). **平台无关性**:XML的文本格式使其独立于具体的硬件和软件平台,可以在不同的系统之间轻松交换数据。

3). **结构化数据**:XML文档通常遵循一定的层次结构,这使得数据更加有序和易于管理。

4). **元标记语言**:XML是一种元标记语言,这意味着它可以用来创建其他特定领域的标记语言。例如,SVG(可缩放矢量图形)和MathML(数学标记语言)都是基于XML的。

5). **可扩展性**:由于XML的标签是自定义的,因此可以根据需要添加新的标签,而不会影响现有的数据和应用程序。

6). **验证机制**:XML可以通过文档类型定义(DTD)或XML Schema来定义数据的结构和约束,从而确保数据的完整性和有效性。

        XML在许多领域都有广泛的应用,包括Web服务、配置文件、数据存储和交换等。它的灵活性和强大的数据描述能力使其成为一种重要的数据处理工具。

1.2 Python 对 XML 的解析方法

        在Python中,解析XML文件主要有三种方法:SAX(Simple API for XML)、DOM(Document Object Model)以及ElementTree。每种方法都有其独特的特点和适用场景。

1. **SAX(Simple API for XML)**:
   - SAX是一种基于事件驱动的解析方式。
   - 在解析XML时,SAX会逐行读取文件,并在识别出特定元素时触发相应的事件。
   - 这种方法不需要将整个XML文档加载到内存中,因此适用于处理大型XML文件。
   - 由于SAX是只读的,它不支持对XML文档的修改。

2. **DOM(Document Object Model)**:
   - DOM解析器会将整个XML文档加载到内存中,并构建一个树状结构的对象模型。
   - 这使得用户可以随机访问树中的任何节点,进行查询、修改、删除或添加操作。
   - 然而,DOM方法在处理大型XML文件时可能会消耗大量内存。

3. **ElementTree**:
   - ElementTree提供了一种轻量级、高效且易于使用的方式来解析和处理XML。
   - 它将XML数据表示为一个树状结构,类似于DOM,但更加简洁和高效。
   - ElementTree支持对XML文档的读取和写入操作,适用于中等大小的XML文件。

        选择哪种解析方法取决于具体需求,例如文件大小、内存限制、是否需要修改XML内容等因素。对于大型文件,SAX可能是更合适的选择;而对于需要频繁修改的中小型文件,ElementTree或DOM可能更为适宜。

1.3 SAX解析xml

        Python中使用SAX解析XML文档时,涉及到两个核心组件:解析器和事件处理器。

        SAX解析器负责逐行读取XML文档,并在识别出特定元素时向事件处理器发送相应的事件,例如元素的开始和结束。

        事件处理器则负责响应这些事件,对传递过来的XML数据进行处理。

SAX解析方式特别适用于以下场景:
1). 处理大型XML文件;
2). 仅需获取文件的部分内容或特定信息;
3). 需要构建自定义对象模型的情况。

        在Python中,使用SAX解析XML需要先导入`xml.sax`模块中的`parse`函数,以及`xml.sax.handler`模块中的`ContentHandler`类。

`ContentHandler`类包含多个方法,用于处理不同类型的XML事件:

- `characters(content)`方法:在遇到字符数据时被调用,`content`参数包含这些字符串。
- `startDocument()`方法:在文档开始时被调用。
- `endDocument()`方法:在文档结束时被调用。
- `startElement(name, attrs)`方法:在遇到XML开始标签时被调用,`name`是标签名,`attrs`是属性值的字典。
- `endElement(name)`方法:在遇到XML结束标签时被调用。

此外,`xml.sax`模块还提供了以下方法:

- `make_parser()`方法:创建并返回一个新的解析器对象。
- `parse(xmlfile, contenthandler[, errorhandler])`方法:创建一个SAX解析器并解析指定的XML文件。
- `parseString(xmlstring, contenthandler[, errorhandler])`方法:创建一个XML解析器并解析指定的XML字符串。

        这些方法和类构成了Python中使用SAX解析XML的基础框架,开发者可以根据具体需求重写`ContentHandler`类中的方法,以实现对XML数据的定制化处理。

我们实验使用到的 XML 实例文件 movies.xml 内容如下:

<collection shelf="New Arrivals">
<movie title="Enemy Behind"><type>War, Thriller</type><format>DVD</format><year>2003</year><rating>PG</rating><stars>10</stars><description>Talk about a US-Japan war</description>
</movie>
<movie title="Transformers"><type>Anime, Science Fiction</type><format>DVD</format><year>1989</year><rating>R</rating><stars>8</stars><description>A schientific fiction</description>
</movie><movie title="Trigun"><type>Anime, Action</type><format>DVD</format><episodes>4</episodes><rating>PG</rating><stars>10</stars><description>Vash the Stampede!</description>
</movie>
<movie title="Ishtar"><type>Comedy</type><format>VHS</format><rating>PG</rating><stars>2</stars><description>Viewable boredom</description>
</movie>
</collection>

解析上面xml的python代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-import xml.saxclass MovieHandler( xml.sax.ContentHandler ):def __init__(self):self.CurrentData = ""self.type = ""self.format = ""self.year = ""self.rating = ""self.stars = ""self.description = ""# 元素开始事件处理def startElement(self, tag, attributes):self.CurrentData = tagif tag == "movie":print "*****Movie*****"title = attributes["title"]print "Title:", title# 元素结束事件处理def endElement(self, tag):if self.CurrentData == "type":print "Type:", self.typeelif self.CurrentData == "format":print "Format:", self.formatelif self.CurrentData == "year":print "Year:", self.yearelif self.CurrentData == "rating":print "Rating:", self.ratingelif self.CurrentData == "stars":print "Stars:", self.starselif self.CurrentData == "description":print "Description:", self.descriptionself.CurrentData = ""# 内容事件处理def characters(self, content):if self.CurrentData == "type":self.type = contentelif self.CurrentData == "format":self.format = contentelif self.CurrentData == "year":self.year = contentelif self.CurrentData == "rating":self.rating = contentelif self.CurrentData == "stars":self.stars = contentelif self.CurrentData == "description":self.description = contentif ( __name__ == "__main__"):# 创建一个 XMLReaderparser = xml.sax.make_parser()# turn off namepsacesparser.setFeature(xml.sax.handler.feature_namespaces, 0)# 重写 ContextHandlerHandler = MovieHandler()parser.setContentHandler( Handler )parser.parse("movies.xml")

代码执行结果如下:

*****Movie*****
Title: Enemy Behind
Type: War, Thriller
Format: DVD
Year: 2003
Rating: PG
Stars: 10
Description: Talk about a US-Japan war
*****Movie*****
Title: Transformers
Type: Anime, Science Fiction
Format: DVD
Year: 1989
Rating: R
Stars: 8
Description: A schientific fiction
*****Movie*****
Title: Trigun
Type: Anime, Action
Format: DVD
Rating: PG
Stars: 10
Description: Vash the Stampede!
*****Movie*****
Title: Ishtar
Type: Comedy
Format: VHS
Rating: PG
Stars: 2
Description: Viewable boredom

1.4 xml.dom解析xml

        文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。

        一个 DOM 的解析器在解析一个 XML 文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后你可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入xml文件。

python中用xml.dom.minidom来解析xml文件,实例如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-from xml.dom.minidom import parse
import xml.dom.minidom# 使用minidom解析器打开 XML 文档
DOMTree = xml.dom.minidom.parse("movies.xml")
collection = DOMTree.documentElement
if collection.hasAttribute("shelf"):print "Root element : %s" % collection.getAttribute("shelf")# 在集合中获取所有电影
movies = collection.getElementsByTagName("movie")# 打印每部电影的详细信息
for movie in movies:print "*****Movie*****"if movie.hasAttribute("title"):print "Title: %s" % movie.getAttribute("title")type = movie.getElementsByTagName('type')[0]print "Type: %s" % type.childNodes[0].dataformat = movie.getElementsByTagName('format')[0]print "Format: %s" % format.childNodes[0].datarating = movie.getElementsByTagName('rating')[0]print "Rating: %s" % rating.childNodes[0].datadescription = movie.getElementsByTagName('description')[0]print "Description: %s" % description.childNodes[0].data

执行结果如下:

Root element : New Arrivals
*****Movie*****
Title: Enemy Behind
Type: War, Thriller
Format: DVD
Rating: PG
Description: Talk about a US-Japan war
*****Movie*****
Title: Transformers
Type: Anime, Science Fiction
Format: DVD
Rating: R
Description: A schientific fiction
*****Movie*****
Title: Trigun
Type: Anime, Action
Format: DVD
Rating: PG
Description: Vash the Stampede!
*****Movie*****
Title: Ishtar
Type: Comedy
Format: VHS
Rating: PG
Description: Viewable boredom

1.6 ElementTree解析XML

import xml.etree.ElementTree as ET# 解析XML文件
tree = ET.parse('movies.xml')
root = tree.getroot()# 遍历所有的movie元素
for movie in root.findall('movie'):# 获取movie的属性title = movie.get('title')# 获取子元素的文本内容movie_type = movie.find('type').textformat = movie.find('format').textyear = movie.find('year').text if movie.find('year') is not None else 'N/A'rating = movie.find('rating').textstars = movie.find('stars').textdescription = movie.find('description').text# 打印信息print(f"Title: {title}")print(f"Type: {movie_type}")print(f"Format: {format}")print(f"Year: {year}")print(f"Rating: {rating}")print(f"Stars: {stars}")print(f"Description: {description}")print("-" * 40)

二、Python编解码json

2.1 什么是json

        JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON 是基于 JavaScript 编程语言的一个子集,但它是独立于语言的文本格式,因此可以在多种编程语言中使用。

### JSON 的结构

JSON 数据格式主要由两种结构组成:

1). **键值对集合**:这通常表现为对象(object),在 JSON 中用花括号 `{}` 表示。每个键值对由一个键和一个值组成,键和值之间用冒号 `:` 分隔,每个键值对之间用逗号 `,` 分隔。例如:
   ```json
   {
     "name": "John",
     "age": 30,
     "city": "New York"
   }
   ```

2). **值的有序列表**:这通常表现为数组(array),在 JSON 中用方括号 `[]` 表示。数组中的每个值之间用逗号 `,` 分隔。例如:
   ```json
   [
     "apple",
     "banana",
     "cherry"
   ]
   ```

JSON 支持以下数据类型:
- 字符串(string)
- 数字(number)
- 对象(object)
- 数组(array)
- 布尔值(boolean)
- null

### JSON 的应用

        JSON 由于其简洁性和通用性,在现代软件开发中得到了广泛的应用,主要包括以下几个方面:

1). **数据交换**:JSON 常用于不同系统之间的数据交换,特别是在 Web 开发中,前端和后端之间通过 JSON 格式传递数据。

2). **配置文件**:JSON 格式简洁易读,常被用作配置文件的格式,如应用程序的设置文件。

3). **API 响应**:RESTful API 通常使用 JSON 格式返回数据,使得客户端能够轻松解析和处理。

4). **日志记录**:JSON 格式的日志易于解析和查询,因此在日志记录系统中也得到了广泛应用。

5). **存储数据**:虽然 JSON 不是数据库格式,但在某些情况下,它被用于存储结构化数据,尤其是在需要快速读写的场景中。

6). **移动应用**:移动应用开发中,JSON 常用于从服务器获取数据,并在应用中进行展示和处理。

7). **物联网(IoT)**:在物联网设备中,JSON 常用于设备与服务器之间的数据传输。

JSON 的广泛应用得益于其简单、灵活和易于处理的特性,使得它成为现代软件开发中不可或缺的一部分。

2.2 使用json 库

        在Python中,处理JSON对象非常简单,因为Python标准库提供了`json`模块,用于编码(序列化)和解码(反序列化)JSON数据。以下是如何使用`json`模块进行JSON编码和解码的示例:

### 编码(序列化)JSON对象

        要将Python对象编码为JSON字符串,可以使用`json.dumps()`方法。以下是一个示例:

import json# 定义一个Python对象
data = {"name": "John Doe","age": 30,"city": "New York","is_student": False,"courses": ["Math", "Science", "History"]
}# 将Python对象编码为JSON字符串
json_string = json.dumps(data, indent=4)
print(json_string)

        在这个示例中,我们定义了一个Python字典`data`,然后使用`json.dumps()`方法将其编码为JSON字符串。`indent=4`参数用于美化输出,使JSON字符串更易读。

  python 原始类型向 json 类型的转化对照表:

### 解码(反序列化)JSON对象

        要将JSON字符串解码为Python对象,可以使用`json.loads()`方法。以下是一个示例:

import json# 定义一个JSON字符串
json_string = '''
{"name": "John Doe","age": 30,"city": "New York","is_student": false,"courses": ["Math", "Science", "History"]
}'''# 将JSON字符串解码为Python对象
data = json.loads(json_string)
print(data)
print(type(data))  # 输出: <class 'dict'>

        在这个示例中,我们定义了一个JSON字符串`json_string`,然后使用`json.loads()`方法将其解码为Python字典。

json 类型转换到 python 的类型对照表:

### 处理文件中的JSON数据

        如果需要从文件中读取JSON数据或将JSON数据写入文件,可以使用`json.load()`和`json.dump()`方法。以下是一个示例:

import json# 写入JSON数据到文件
data = {"name": "John Doe","age": 30,"city": "New York","is_student": False,"courses": ["Math", "Science", "History"]
}with open('data.json', 'w') as file:json.dump(data, file, indent=4)# 从文件中读取JSON数据
with open('data.json', 'r') as file:data = json.load(file)print(data)

        在这个示例中,我们首先使用`json.dump()`方法将Python对象`data`写入名为`data.json`的文件中。然后,使用`json.load()`方法从文件中读取JSON数据并将其解码为Python对象。

        通过这些方法,你可以轻松地在Python中处理JSON数据。

2.3 使用第三方库Demjson

        `demjson` 是一个第三方 Python 模块,提供了对 JSON 数据的编码和解码功能,并且包含了 JSONLint 的格式化及校验功能。以下是如何使用 `demjson` 模块进行 JSON 编码和解码的详细步骤和示例。

### 安装 `demjson`

        首先,你需要安装 `demjson` 模块。你可以从源码安装,也可以使用 `pip` 安装。以下是从源码安装的步骤:

$ tar -xvzf demjson-2.2.3.tar.gz
$ cd demjson-2.2.3
$ python setup.py install

或者使用 `pip` 安装:

$ pip install demjson

### 编码 JSON 数据

`demjson` 的 `encode` 函数用于将 Python 对象编码成 JSON 字符串。

#### 语法

demjson.encode(self, obj, nest_level=0)

#### 示例

以下是一个将 Python 列表编码为 JSON 字符串的示例:

#!/usr/bin/python
import demjsondata = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]json_string = demjson.encode(data)
print(json_string)

输出结果为:

[{"a":1,"b":2,"c":3,"d":4,"e":5}]

### 解码 JSON 数据

`demjson` 的 `decode` 函数用于将 JSON 字符串解码为 Python 对象。

#### 语法

demjson.decode(self, txt)

#### 示例

以下是一个将 JSON 字符串解码为 Python 字典的示例:

#!/usr/bin/python
import demjsonjson_string = '{"a":1,"b":2,"c":3,"d":4,"e":5}';data = demjson.decode(json_string)
print(data)

输出结果为:

{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

### 总结

        `demjson` 模块提供了简单易用的方法来处理 JSON 数据。通过 `encode` 和 `decode` 函数,你可以轻松地在 Python 对象和 JSON 字符串之间进行转换。如果你需要更高级的 JSON 处理功能,`demjson` 可能是一个不错的选择。

相关文章:

【第九节】python中xml解析和json编解码

目录 一、Python XML 解析 1.1 什么是XML 1.2 Python 对 XML 的解析方法 1.3 SAX解析xml 1.4 xml.dom解析xml 1.6 ElementTree解析XML 二、Python编解码json 2.1 什么是json 2.2 使用json 库 2.3 使用第三方库Demjson 一、Python XML 解析 1.1 什么是XML XML&#x…...

yolo v8部署到云服务器问题记录

环境安装 1、运行项目报错&#xff1a;no python application found, check your startup logs for errors 在云服务器pytorch版本安装错了&#xff0c;安装了GPU版本&#xff0c;需要安装CPU版本 # CPU only 使用下面这段代码避免出现第二个错误 pip install torch2.3.1 to…...

端口被占用,杀死进程的步骤

一、 查看所有进程占用的端口 在开始-运行-cmd,输入&#xff1a;netstat –ano可以查看所有进程 二、查看占用指定端口的程序 查看被那个端口占用&#xff0c;可以用该命令&#xff1a; 三、使用命令杀死进程 杀死进程&#xff0c;使用命令&#xff1a;...

接口入门(企业常见使用,一分钟搞定版)

目录 1、接口的定义 定义位置 接口内容 2、接口的使用 正常实现接口 接口当做函数参数 匿名实现接口 3、OPPO便签接口具体分析 总结一下&#xff1a; 1、接口的定义 定义位置 可以写在类中&#xff0c;但注意现在接口名字是 类名.接口名 可以单独写在一个文件 接口内…...

深入解析:Cookie 与 Session 的区别及应用场景

引言 在Web开发中&#xff0c;Cookie 和 Session 是两种常用的用户状态管理机制。虽然它们的目标都是在无状态的HTTP协议中维护用户的状态&#xff0c;但它们的工作原理和适用场景却有所不同。在本文中&#xff0c;我们将深入探讨 Cookie 和 Session 的区别&#xff0c;并通过…...

LLM金融文本分类文档说明

Python注意事项&#xff1a; 1&#xff0c;创建虚拟环境&#xff1a; conda create --prefixD:\software\Anaconda3\envs\finance_analysis python3.10.4 conda create -p D:/software/anaconda3/envs/finance_analysis python3.10.4 注释&#xff1a; D:\software\anaconda3\e…...

EI检索,2天录用,3天见刊!截稿在即,这本水刊你还不投吗?

点击关注&#xff1a;关注GZH【欧亚科睿学术】&#xff0c;GET完整版2023JCR分区列表&#xff01; &#x1f389; &#x1f389; &#x1f389; &#x1f389; 恭喜&#xff01;这本毕业水刊仅2天录用&#xff01;3天见刊&#xff01; 重要时间节点如下 2024-08-03 Sub…...

sql获取过去的小时数

TIMESTAMPDIFF(HOUR, create_time, NOW()) AS pastHours 是一条 SQL 语句的一部分&#xff0c;它使用 TIMESTAMPDIFF 函数来计算两个时间点之间的差异&#xff0c;并将结果标记为 pastHours。 让我们详细解析一下这条语句&#xff1a; TIMESTAMPDIFF 函数: 这个函数用于计算两…...

【Android Studio】彻底卸载

文章目录 卸载程序控制面板卸载安全软件卸载 重启计算机删除文件重启计算机 我们在Android开发时涉及重装时&#xff0c;如果卸载不干净&#xff0c;再次安装是不会正常运行项目的&#xff0c;接下来就让我教你如何删除干净吧。 卸载程序 控制面板卸载 control控制面板一>…...

美术版权可以当做商标使用吗

美术版权与商标的区别及不可混用性分析 在知识产权领域&#xff0c;美术版权和商标权是两个重要的概念&#xff0c;它们各自承载着不同的法律意义和保护范围。 美术版权概述 美术版权&#xff0c;又称著作权&#xff0c;是指著作权人对其创作的美术作品所享有的权利。这些作品…...

控制某些请求不记录日志

说明&#xff1a;由于统一拦截日志请求&#xff0c;导致所有匹配的请求都会打印日志&#xff0c;这里需要控制有些请求执行不打印日志&#xff0c;比如定时每隔几秒执行某些请求。 具体实现如下&#xff1a; 一、自定义注解&#xff0c;如下&#xff1a; /** * Description: …...

Java线程池原理剖析和应用指南

目录 Java线程池详解一、Java线程池简介池化思想池化思想的优点 二、线程池的实现原理分析实现线程池需要考虑哪些问题&#xff1f;线程池的简单使用示例线程池原理的简单图示 三、Executor详解Executor简介Executor框架的继承结构总结ExecutorExecutorService 四、ThreadPoolE…...

ST-LINK烧录MCU

打开ST-LINK软件&#xff1a; 主板断电状态下接入烧录器&#xff0c;烧录器USB连接电脑&#xff1a; 主板上电&#xff0c;点击连接按钮&#xff1a; 点击加载文件&#xff1a; 点击写入按钮&#xff0c;烧录成功后拔掉烧录器&#xff0c;主板重新上电...

Go - 10. * 值类型和指针类型的差异

目录 一.引言 二.接收者类型 三.代码示例 1.指针接收者 2.值接收者 3.运行结果对比 4.代码修改 5.刨根问底 四.总结 一.引言 go 语言中 func (c *Title) 和 func (c Title) 两个方法的传参差一个 * 号&#xff0c;二者的区别是一个是指针类型&#xff0c;一个是值类型…...

waf绕过:网络安全狗绕过

引言&#xff1a; 所有的绕过原理都大致一致&#xff0c;但是并不是所有的绕过都能起到作用&#xff0c;渗透测试主要还是一个猜加试的过程&#xff0c;本文仅供参考 网络攻击或扫描绕过 1.get绕过&#xff08;未开启cc防护&#xff09; 网络安全狗的默认防护为&#xff0c;拒…...

Django中的模型小总结:

from django.db import models from django.urls import reverse# 自定义Manager方法 class HighRatingManager(models.Manager):def get_queryset(self):return super().get_queryset().filter(rating1)# CHOICES选项 class Rating(models.IntegerChoices):VERYGOOD 1, Very …...

深入理解 RDMA 的软硬件交互机制

作者&#xff1a;羽京 一、前言 随着数据中心的飞速发展&#xff0c;高性能网络不断挑战着带宽与时延的极限&#xff0c;网卡带宽从过去的 10 Gb/s 、25 Gb/s 到如今的 100 Gb/s、200 Gb/s 再到下一代的 400Gb/s 网卡&#xff0c;其发展速度已经远大于 CPU 发展的速度。 为了…...

轻优图片编辑压缩官网 轻优图片编辑压缩

轻优图片编辑压缩是一个无需安装&#xff0c;可以直接在线压缩图片大小的网站。轻优图片编辑压缩网站可以快速把图片压缩到指定大小。 轻优图片编辑压缩官网网址&#xff1a;www.qingyoubianji.com 浏览器打开 www.qingyoubianji.com 网站&#xff0c;你会看到一个简洁的界面…...

封装el-table 基于element封装可配置JSON表格组件

基于element封装可配置JSON表格组件 话不多说直接贴代码&#xff0c;复制运行即可查看效果 子组件全部代码 <template><div class"custom-table"><el-table:data"tableData"borderstyle"width: 100%"size"mini"max-h…...

Springboot 开发之 Quartz 任务调度框架简介

引言 Quartz Scheduler是一个功能丰富的开源作业调度库&#xff0c;它允许开发人员以灵活的方式创建和管理定时任务。以下是对Quartz Scheduler的详细解析&#xff1a; 官网地址&#xff1a;https://www.quartz-scheduler.org/w3cschool 官方文档&#xff1a;https://www.w3c…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...