python---pickle库
pickle库
pickle
是 Python 标准库中的一个模块,它可以将 Python 对象(如列表、字典、类实例等)转换为字节流,这个过程称为“序列化”;反之,也可以将字节流转换回 Python 对象,这个过程称为“反序列化”。:
1. 导入 pickle
模块
在使用 pickle
模块之前,需要先导入它:
import pickle
2. 序列化(pickle.dump()
和 pickle.dumps()
)
2.1 pickle.dumps()
pickle.dumps()
函数用于将 Python 对象序列化为字节流,返回一个字节对象。
import pickledata = {'name': 'Alice', 'age': 25}
# 序列化对象
serialized_data = pickle.dumps(data)
print(type(serialized_data)) # <class 'bytes'>
print(serialized_data)
2.2 pickle.dump()
pickle.dump()
函数用于将 Python 对象序列化并直接写入文件对象。
import pickledata = [1, 2, 3, 4, 5]
# 打开一个文件以二进制写入模式
with open('data.pickle', 'wb') as file:# 将对象序列化并写入文件pickle.dump(data, file)
3. 反序列化(pickle.load()
和 pickle.loads()
)
3.1 pickle.loads()
pickle.loads()
函数用于将字节流反序列化为 Python 对象。
import pickledata = {'name': 'Bob', 'age': 30}
serialized_data = pickle.dumps(data)
# 反序列化字节流
deserialized_data = pickle.loads(serialized_data)
print(deserialized_data) # {'name': 'Bob', 'age': 30}
3.2 pickle.load()
pickle.load()
函数用于从文件对象中读取字节流并反序列化为 Python 对象。
import pickle# 打开一个文件以二进制读取模式
with open('data.pickle', 'rb') as file:# 从文件中读取并反序列化对象loaded_data = pickle.load(file)print(loaded_data) # [1, 2, 3, 4, 5]
4. 支持的对象类型
pickle
可以处理大多数 Python 内置对象类型,包括:
- 布尔值、整数、浮点数、复数等基本数据类型。
- 字符串、字节、字节数组。
- 列表、元组、集合、字典等容器类型。
- 函数(仅限于全局作用域内定义的函数)。
- 类(仅限于全局作用域内定义的类)和类实例。
5. 不支持的对象类型
- 生成器、迭代器、文件对象等。
- 部分内置对象(如
open()
返回的文件对象、sockets
对象等)。
6. 协议版本
pickle
支持多个协议版本,不同的协议版本在性能和兼容性上有所不同。可以通过 pickle.HIGHEST_PROTOCOL
获取当前 Python 版本支持的最高协议版本,也可以在 dump()
和 dumps()
函数中指定协议版本。
import pickledata = {'key': 'value'}
# 使用最高协议版本进行序列化
serialized_data = pickle.dumps(data, protocol=pickle.HIGHEST_PROTOCOL)
7. 安全性问题
pickle
反序列化操作存在安全风险,因为它可以执行任意代码。如果从不可信的源接收 pickle
数据,可能会导致代码注入攻击。因此,在反序列化数据时,要确保数据来源是可信的。
8. 与 json
模块的比较
- 数据格式:
pickle
序列化后的数据是二进制格式,而json
序列化后的数据是文本格式。 - 支持的对象类型:
pickle
可以处理更广泛的 Python 对象类型,而json
只能处理基本数据类型和部分容器类型。 - 安全性:
json
反序列化相对安全,因为它只能处理纯数据,而pickle
反序列化存在安全风险。
9. 示例:序列化和反序列化自定义类实例
import pickleclass Person:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"Person(name={self.name}, age={self.age})"# 创建一个 Person 类的实例
person = Person('Charlie', 35)# 序列化实例
serialized_person = pickle.dumps(person)# 反序列化实例
deserialized_person = pickle.loads(serialized_person)
print(deserialized_person) # Person(name=Charlie, age=35)
序列化
序列化是将对象的状态信息转换为可以存储或传输的形式(如字节序列、文本等)的过程。在不同的应用场景中,序列化发挥着重要的作用,以下从几个方面详细介绍序列化的作用:
1. 数据持久化
- 存储对象到磁盘:在许多应用程序中,需要将程序运行过程中的对象保存到磁盘上,以便在程序下次启动时能够恢复这些对象的状态。例如,一个游戏程序可能需要保存玩家的游戏进度,包括玩家的角色信息、关卡进度、道具列表等。通过序列化,可以将这些对象转换为字节流,然后存储到文件中。下次游戏启动时,再从文件中读取字节流并反序列化,恢复玩家的游戏进度。
import pickleclass Player:def __init__(self, name, level):self.name = nameself.level = level# 创建一个玩家对象
player = Player("Alice", 10)# 将玩家对象序列化并保存到文件
with open('player_data.pickle', 'wb') as file:pickle.dump(player, file)# 下次启动程序时,从文件中读取并反序列化对象
with open('player_data.pickle', 'rb') as file:loaded_player = pickle.load(file)print(f"Player name: {loaded_player.name}, Level: {loaded_player.level}")
- 数据库存储:在数据库中存储复杂的对象时,序列化也非常有用。有些数据库(如 NoSQL 数据库)可以直接存储二进制数据,通过将对象序列化后存储到数据库中,可以方便地保存和检索对象信息。
2. 数据传输
- 网络通信:在网络编程中,不同的计算机或进程之间需要进行数据交换。由于网络传输的数据必须是二进制形式,因此需要将对象序列化为字节流后才能在网络上传输。例如,在客户端 - 服务器架构中,客户端可能需要将用户的请求对象(如登录请求、查询请求等)序列化后发送给服务器,服务器接收到字节流后再进行反序列化,解析出请求信息并进行相应的处理。常见的网络协议如 HTTP、TCP 等都可以传输序列化后的数据。
import socket
import pickle# 服务器端
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8888))
server_socket.listen(1)print("Waiting for a connection...")
conn, addr = server_socket.accept()
print(f"Connected by {addr}")# 接收序列化的数据
data = conn.recv(1024)
# 反序列化数据
received_object = pickle.loads(data)
print(f"Received object: {received_object}")conn.close()# 客户端
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8888))# 要发送的对象
data_to_send = {'message': 'Hello, server!'}
# 序列化对象
serialized_data = pickle.dumps(data_to_send)
# 发送序列化的数据
client_socket.sendall(serialized_data)client_socket.close()
- 进程间通信(IPC):在多进程编程中,不同的进程之间需要进行数据交换。序列化可以将对象转换为可以在进程间传输的格式,从而实现进程间的通信。例如,在 Python 的
multiprocessing
模块中,进程之间可以通过管道(Pipe
)、队列(Queue
)等方式进行通信,这些通信机制内部会使用序列化和反序列化来处理对象的传输。
3. 数据共享与协作
- 分布式系统:在分布式系统中,不同的节点(计算机或服务器)之间需要共享数据和协同工作。序列化可以将对象在不同节点之间进行传输和共享,使得各个节点能够处理和操作相同的数据。例如,在一个分布式计算系统中,主节点可以将任务对象序列化后分发给各个工作节点,工作节点接收到任务对象后进行反序列化,然后执行相应的任务。
- 跨语言交互:在一些跨语言的应用场景中,不同的编程语言可能需要共享数据。通过选择一种通用的序列化格式(如 JSON、XML 等),可以实现不同语言之间的数据交互。例如,一个 Python 程序可以将数据序列化为 JSON 格式,然后将 JSON 数据发送给一个 Java 程序,Java 程序再将 JSON 数据反序列化后进行处理。
4. 缓存和优化
- 缓存机制:在一些应用程序中,为了提高性能,会使用缓存来存储经常使用的数据。通过将对象序列化后存储在缓存中,可以减少对象的创建和初始化时间。当需要使用这些数据时,直接从缓存中读取并反序列化,避免了重复计算和数据库查询。例如,在 Web 应用程序中,可以使用缓存(如 Redis)来存储用户的会话信息,将用户会话对象序列化后存储在 Redis 中,下次用户访问时直接从 Redis 中读取并反序列化,提高响应速度。
- 数据压缩:序列化过程中可以对数据进行压缩,减少数据的存储空间和传输带宽。例如,一些序列化库(如 Protocol Buffers)支持数据压缩功能,通过将对象序列化并压缩后存储或传输,可以节省大量的资源。
综上所述,序列化在数据持久化、传输、共享和缓存等方面都有着重要的作用,是现代软件开发中不可或缺的技术之一。
相关文章:
python---pickle库
pickle库 pickle 是 Python 标准库中的一个模块,它可以将 Python 对象(如列表、字典、类实例等)转换为字节流,这个过程称为“序列化”;反之,也可以将字节流转换回 Python 对象,这个过程称为“反…...
如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统。陆陆续续开发了几年,从一开始的偶有用户尝试,到如今线上环境和私有化部署均有了越来越多的稳定用户。 随时近来 AI 大模型的火热,越来越多的客户,问…...
论文阅读 GMM-JCSFE Model(EEG Microstate)
Motor Imagery Recognition Based on GMM-JCSFE Model 1.问题与困境 1.1 微状态 将连续的EEG信号分解为一系列短暂的、稳定的“微状态”,每个微状态代表了大脑在特定时间窗口内的特定功能。微状态模型的核心思想是,大脑的活动可以看作是由一系列离散的…...
[杂学笔记] TCP和UDP的区别,对http接口解释 , Cookie和Session的区别 ,http和https的区别 , 智能指针 ,断点续传
文章目录 1. TCP和UDP的区别2. 对http接口解释3. Cookie和Session的区别4. http和https的区别5. 智能指针6.断点续传 1. TCP和UDP的区别 tcp的特点: 面向连接,可靠性高,全双工,面向字节流udp特点:无连接,不…...
Etcd的安装与使用
1.Etcd介绍 Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统,用于配置共享和服 务发现等。它使用 Raft 一致性算法来保持集群数据的一致性,且客户端通过长连接 watch 功能,能够及时收到数据变化通知。 以下 是关于 …...
ROS实践(四)机器人建图及导航
一、概念 机器人导航是指机器人在环境中自主地从一个地点移动到另一个地点的过程。这个过程涉及到多个关键技术,包括定位、路径规划、避障等。机器人导航通常包括以下几个重要部分。 1. 定位 定位是机器人确定自己在环境中的位置的过程。常用的定位方法包括…...
Excel 中如何实现数据透视表?
Excel 中如何实现数据透视表? 数据透视表(PivotTable)是 Excel 中强大的数据分析工具,能够快速汇总、分析和展示大量数据。本文将详细介绍如何在 Excel 中创建和使用数据透视表。 1. 数据透视表的基本概念 数据透视表是一种交互…...
SQLiteStudio:一款免费开源跨平台的SQLite管理工具
目录 1.简介 2.下载与安装 3.实现分析 4.总结 1.简介 SQLiteStudio 是一款专门用于管理 SQLite 数据库的图形化工具,由波兰开发者开发并维护。由于 SQLite 以其轻量级、零配置、嵌入式等特性被广泛应用于各种小型项目、移动应用和桌面应用中,而 SQLi…...
实现Django和Transformers 构建智能客服大模型(模拟订单系统)
一、环境安装准备 #git拉取 bert-base-chinese 文件#创建 虚拟运行环境python -m venv myicrplatenv#刷新source myicrplatenv/bin/activate#python Django 集成nacospip install nacos-sdk-python#安装 Djangopip3 install Django5.1#安装 pymysql settings.py 里面需要 # 强制…...
【沐渥科技】氮气柜日常如何维护?
氮气柜的维护是确保其长期稳定运行、延长使用寿命和保持环境控制精度的关键。以下是沐渥氮气柜的日常维护和定期保养指南: 一、日常维护 柜体清洁 定期用软布擦拭柜体表面和内部,避免灰尘堆积。避免使用腐蚀性清洁剂,防止损伤密封条或传感器。…...
数据安全之策:备份文件的重要性与自动化实践
在信息化高速发展的今天,数据已成为企业运营和个人生活中不可或缺的重要资源。无论是企业的财务报表、客户资料,还是个人的家庭照片、学习笔记,数据的丢失或损坏都可能带来无法挽回的损失。因此,备份文件的重要性日益凸显…...
windows下玩转vllm:vllm简介;Windows下不能直接装vllm;会报错ModuleNotFoundError: No module named ‘vllm._C‘
文章目录 -1. Windows下不能直接装vllm前言ollama vs vllmOllamavLLMvllm简介核心特点PagedAttention内存优化高效推理应用场景安装与使用-1. Windows下不能直接装vllm 我其实很久之前就意识到这个事儿,后来太久没搞就又忘了。 昨天忙活了半宿,得来的确实一个无法解决的报错…...
目录《Vue 3 + TypeScript + DeepSeek 全栈开发实战》
在快速迭代的软件开发世界里,技术的融合与创新始终是推动行业前行的不竭动力。今天,我们站在了前端技术与大数据搜索技术交汇的十字路口,手中的工具不再仅仅是编码的利器,更是解锁未来应用无限可能的钥匙。正是基于这样的时代背景…...
for...of的用法与介绍
一、定义 for...of 是 ES6(ECMAScript 2015)引入的一种用于 遍历可迭代对象(Iterable)的循环语句 二、语法 for (const item of iterable) {// 代码块 }参数: iterable:一个可迭代对象(如数组…...
快速使用PPASR V3版不能语音识别框架
前言 本文章主要介绍如何快速使用PPASR语音识别框架训练和推理,本文将致力于最简单的方式去介绍使用,如果使用更进阶功能,还需要从源码去看文档。仅需三行代码即可实现训练和推理。 源码地址:https://github.com/yeyupiaoling/P…...
Aliyun CTF 2025 web ezoj
文章目录 ezoj ezoj 进来一看是算法题,先做了试试看,gpt写了一个高效代码通过了 通过后没看见啥,根据页面底部提示去/source看到源代码,没啥思路,直接看wp吧,跟算法题没啥关系,关键是去看源码 def audit_checker(even…...
推理模型对SQL理解能力的评测:DeepSeek r1、GPT-4o、Kimi k1.5和Claude 3.7 Sonnet
引言 随着大型语言模型(LLMs)在技术领域的应用日益广泛,评估这些模型在特定技术任务上的能力变得越来越重要。本研究聚焦于四款领先的推理模型——DeepSeek r1、GPT-4o、Kimi k1.5和Claude 3.7 Sonnet在SQL理解与分析方面的能力,…...
【H2O2 | 软件开发】事件循环机制
目录 前言 开篇语 准备工作 正文 概念 流程 事件队列类型 示例 结束语 前言 开篇语 本系列为短篇,每次讲述少量知识点,无需一次性灌输太多的新知识点。该主题文章主要是围绕前端、全栈开发相关面试常见问题撰写的,希望对诸位有所帮…...
LVTTL(Low Voltage Transistor-Transistor Logic)电平详解
一、LVTTL电平的定义与核心特性 LVTTL(低压晶体管-晶体管逻辑)是传统TTL(5V)的低电压版本,工作电压通常为3.3V,旨在降低功耗并适配现代低电压集成电路,同时保持与TTL的逻辑兼容性。其核心特点如…...
Manus:成为AI Agent领域的标杆
一、引言 官网:Manus 随着人工智能技术的飞速发展,AI Agent(智能体)作为人工智能领域的重要分支,正逐渐从概念走向现实,并在各行各业展现出巨大的应用潜力。在众多AI Agent产品中,Manus以其独…...
批量测试IP和域名联通性
最近需要测试IP和域名的联通性,因数量很多,单个ping占用时间较长。考虑使用Python和Bat解决。考虑到依托的环境,Bat可以在Windows直接运行。所以直接Bat处理。 方法1 echo off for /f %%i in (E:\封禁IP\ipall.txt) do (ping %%i -n 1 &…...
网络安全之tcpdump工具
引言 wireshark是一款非常不错的抓包软件,在图形化界面占绝对统治地位;尽管其在字符界面下有些许选项可供使用,但终究不太方便,下面我再介绍一款NB的终端抓包工具 tcpdump 1、混杂模式 linux的网卡有混杂模式一说,当开…...
TMS320F28P550SJ9学习笔记8:I2C通信的结构体寄存器配置的了解
继续学习IIC通信的寄存器配置方式:尝试使用寄存器方式配置了解I2C a 没条件完整测试IIC功能,具体的修改与测试留在下文,这里只贴出全部代码,就不提供工程了 文章提供测试代码讲解、完整工程下载、测试效果图 目录 IIC通信引脚&a…...
TypeScript类:面向对象编程的基石
一、从现实世界到代码世界 想象你要建造一栋房子,首先需要一张设计蓝图——它定义了房屋的结构(几个房间)、功能(卧室/厨房)和特性(材料/颜色)。在TypeScript中,class就是这个设计蓝…...
C语言学习笔记-进阶(10)自定义类型:结构体
1. 结构体类型的声明 前面我们在学习操作符的时候,已经学习了结构体的知识,这里稍微复习一下。 1.1 结构体回顾 结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.1.1 结构体的声明 struct tag {member-…...
Java 大视界 -- Java 大数据在智能家居能源管理与节能优化中的应用(120)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
upload-labs-master通关攻略(9~12)
Pass-9 建立1.php <?php phpinfo();?> 上传时抓包 修改代码 在1.php后面加点号空格点号 放行后得到 Pass-10 将1.php放入 上传时抓包 修改代码 将1.php改为1.pphphp 上传后得到 Pass-11 将1.php改为1.png 上传时抓包 修改代码 ../upload/2.php%00 放行后得到 Pass…...
python语言总结(持续更新)
本文主要是总结各函数,简单的函数不会给予示例,如果在平日遇到一些新类型将会添加 基础知识 输入与输出 print([要输出的内容])输出函数 input([提示内容]如果输入提示内容会在交互界面显示,用以提示用户)输入函数 注释 # 单行注释符&…...
UI自动化测试 —— web端元素获取元素等待实践!
前言 Web UI自动化测试是一种软件测试方法,通过模拟用户行为,自动执行Web界面的各种操作,并验证操作结果是否符合预期,从而提高测试效率和准确性。 目的: 确保Web应用程序的界面在不同环境(如不同浏览器、操作系统)下…...
【CXX】6.6 UniquePtr<T> — std::unique_ptr<T>
std::unique_ptr 的 Rust 绑定称为 UniquePtr。有关 Rust API 的文档,请参见链接。 限制: 目前仅支持 std::unique_ptr<T, std::default_delete>。未来可能会支持自定义删除器。 UniquePtr 不支持 T 为不透明的 Rust 类型。对于在语言边界传递不…...
【网络协议安全】任务10:三层交换机配置
CSDN 原创主页:不羁https://blog.csdn.net/2303_76492156?typeblog三层交换机是指在OSI(开放系统互连)模型中的第三层网络层提供路由功能的交换机。它不仅具备二层交换机的交换功能,还能实现路由功能,提供更为灵活的网…...
C语言每日一练——day_4
引言 针对初学者,每日练习几个题,快速上手C语言。第四天。(连续更新中) 采用在线OJ的形式 什么是在线OJ? 在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用…...
文件系统调用(上) ─── linux第17课
目录 linux 中man 2和man 3的区别 文件内容介绍 C语言文件接口 示例: 输出信息到显示器,你有哪些方法 总结: 系统文件I/O 文件类的系统调用接口介绍 示例 open 函数具体使用哪个,和具体应用场景相关, write read close lseek ,类比C文件相关接…...
在 Spring Boot 中实现基于 TraceId 的日志链路追踪
1 前言 1.1 什么是 TraceId? TraceId 是一个唯一的标识符,用于跟踪分布式系统中的请求。每个请求从客户端发起到服务端处理,再到可能的多个微服务调用,都会携带这个 TraceId,以便在整个请求链路中进行追踪和调试。 1.2 日志链路追踪的意义 日志链路追踪可以帮助开发者…...
STM32 HAL库 CAN过滤器配置
之前在STM32 f407 CAN收发 基于HAL库和Cubemx配置_stm32f407can收发程序-CSDN博客这篇博文里写了一下配置CAN收发的方法,当时由于并没有使用过滤器的现实需求,所以就也没仔细研究。现在工作中确实需要用到过滤器了,有些项目中控制器和发动机E…...
C++ 控制结构与函数全面解析
引言 在 C 编程中,控制结构和函数是构建程序逻辑的关键要素。控制结构能够决定程序的执行流程,而函数则可以将代码模块化,提高代码的复用性和可维护性。本文将深入介绍 C 中的控制结构和函数的相关知识。 一、控制结构 1. if - else 语句 …...
基于django+pytorch(Faster R-CNN)的钢材缺陷识别系统
一、训练数据来源以及数据标注 数据来源于阿里云天池实验室公开数据集中的铝型材缺陷检测数据集APDDD 数据标注通过labelme进行标注,图片所有标注以转化为矩形标注,存放成json格式。 二、模型训练方式及结果 缺陷识别模型基于Faster R-CNN ResNet5…...
C++多态
多态 多态分为:静态多态(函数重载,运算符重载)和动态多态(派生类、虚函数) 二者区别:静态多态是在地址编译时绑定,而动态多态是在地址运行时绑定 动态多态的特点: 1.有继承关系 2.子类重写父类虚函数(就是跟父类行为函数名称一样,但是是作为子类的行为) 动态多态的…...
【一句话经验】ubuntu vi/vim 模式自动设置为paste
从centos过来,发现ubutun有些地方不习惯,尤其是vi的粘贴,默认自动进去了代码模式,导致每次粘贴必须得set paste,否则会出现问题。 解决办法非常简单,按照下面命令执行即可: cd ~ echo "…...
MongoDB 触发器实现教程
在传统的关系型数据库(如 MySQL)中,触发器是一种强大的工具,它可以在特定的数据库操作(如插入、更新或删除)发生时自动执行一段代码。然而,MongoDB 并没有原生内置的触发器概念。不过࿰…...
ESP8266 NodeMCU 与 Atmega16 微控制器连接以发送电子邮件
NodeMCU ESP8266 AVR 微控制器 ATmega16 的接口 Atmega16 是一款低成本的 8 位微控制器,比以前版本的微控制器具有更多的 GPIO。它具有所有常用的通信协议,如 UART、USART、SPI 和 I2C。由于其广泛的社区支持和简单性,它在机器人、汽车和自动化行业有广泛的应用。 Atmega1…...
《算法笔记》8.1小节——搜索专题->深度优先搜索(DFS)问题 C: 【递归入门】组合+判断素数
题目描述 已知 n 个整数b1,b2,…,bn 以及一个整数 k(k<n)。 从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。 例如当 n4,k=3,4 个整数分别为 3,7,12…...
重生之我在学Vue--第8天 Vue 3 UI 框架(Element Plus)
重生之我在学Vue–第8天 Vue 3 UI 框架(Element Plus) 文章目录 重生之我在学Vue--第8天 Vue 3 UI 框架(Element Plus)前言一、Element Plus 基础:从安装到组件革命1.1 安装与两种引入模式全量引入(适合快速…...
从前端视角理解消息队列:核心问题与实战指南
消息队列(Message Queue)是现代分布式系统的核心组件之一,它在前后端协作、系统解耦、流量削峰等场景中发挥着重要作用。本文从前端开发者视角出发,解析消息队列的关键问题,并结合实际场景给出解决方案。 一、为什么要…...
Mysql配置文件My.cnf(my.ini)配置参数说明
一、my.cnf 配置文件路径:/etc/my.cnf,在调整了该文件内容后,需要重启mysql才可生效。 1、主要参数 basedir path # 使用给定目录作为根目录(安装目录)。 datadir path # 从给定目录读取数据库文件。 pid-file filename # 为mysq…...
Docker 安装成功后,安装 Dify 中文版本的步骤
Docker 安装成功后,安装 Dify 中文版本的步骤如下1: 克隆 Dify 代码仓库:在终端中执行以下命令,将 Dify 源代码克隆至本地环境。 bash git clone https://github.com/langgenius/dify.git进入 Dify 的 docker 目录: b…...
Spring(4)——响应相关
一、返回静态页面 1.1**RestController和Controller** 想返回如下页面: 如果我们依旧使用原来的**RestController** 可以看到的是仅仅返回了字符串。 此时将**RestController改为Controller** 可以看到这次返回的是html页面。 那么**RestController和Controller…...
LPDDR5x电源使用Si电容对PI和PSIJ影响分析
SoC可能包含许多高速接口,其中LPDDR5X目前因为高带宽、低功耗、大容量等性能优势开始逐渐在AI计算、5G通信、视频处理等领域开始使用。LPDDR5X目前的速率高达8.533 GT/s,以及多个为这些接口供电的IO电压轨,而这些IO轨的PDN需要提供低阻抗&…...
[网络爬虫] 动态网页抓取 — Selenium 介绍 环境配置
🌟想系统化学习爬虫技术?看看这个:[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客 0x01:Selenium 工具介绍 Selenium 是一个开源的便携式自动化测试工具。它最初是为网站自动化测试而开发的,类似于我们玩游戏用的按…...
MySQL数据库操作
目录 SQL语句 1、SQL的背景 2、SQL的概念 SQL的分类 SQL的书写规范 MySQL数据库 1、MySQL数据库的编码 (1)utf8和utf8mb4的区别 (2)MySQL的字符集 (3)MySQL默认编码为 latin1 ,如何更改…...