使用FastAPI和React以及MongoDB构建全栈Web应用04 MongoDB快速入门
一、NoSQL 概述
1.1 了解关系数据库的局限性
Before diving into NoSQL, it’s essential to understand the challenges posed by traditional Relational Database Management Systems (RDBMS). While RDBMS have been the cornerstone of data management for decades, they face limitations when dealing with massive datasets, complex data structures, and high-performance demands.
- Scalability Issues: RDBMS often struggle with horizontal scaling, making it challenging to handle increasing data volumes and user loads.
- Data Structure Rigidity: The rigid schema of RDBMS can hinder flexibility, especially when dealing with rapidly evolving data structures.
- Complex Queries: Complex queries on large datasets can be computationally expensive and slow in RDBMS.
在深入研究 NoSQL 之前,了解传统关系数据库管理系统 (RDBMS) 带来的挑战至关重要。虽然 RDBMS 几十年来一直是数据管理的基石,但在处理海量数据集、复杂数据结构和高性能需求时,它们面临着限制。
- 可扩展性问题: RDBMS 经常难以进行水平扩展,这使得处理不断增长的数据量和用户负载变得具有挑战性。
- 数据结构刚性: RDBMS 的僵化架构会阻碍灵活性,尤其是在处理快速发展的数据结构时。
- 复杂查询:在 RDBMS 中,对大型数据集的复杂查询可能计算成本高昂且速度缓慢。
1.2 什么是NoSQL?
NoSQL, which stands for “Not Only SQL,” is a broad category of database management systems that offer alternatives to traditional relational databases. These databases are designed to handle large volumes of unstructured or semi-structureddata with high performance and scalability.
NoSQL 代表“不仅仅是 SQL”,是一大类数据库管理系统,可替代传统的关系数据库。这些数据库旨在以高性能和可扩展性处理大量非结构化或半结构化数据。
Key Characteristics of NoSQL Databases:
- Flexible Data Models: NoSQL databases support various data models, including document, key-value, wide-column, and graph, allowing for more adaptable data structures.
- Scalability: They excel at horizontal scaling, enabling you to distribute data across multiple servers to handle increasing loads.
- High Performance: NoSQL databases are often optimized for fast read and write operations, making them suitable for real-time applications.
- Distributed Systems: Many NoSQL databases are designed for distributed environments, providing fault tolerance and high availability.
NoSQL 数据库的主要特点:
- 灵活的数据模型:NoSQL 数据库支持各种数据模型,包括文档、键值、宽列和图形,允许使用更具适应性的数据结构。
- 可扩展性: 它们擅长水平扩展,使您能够在多个服务器之间分配数据以处理不断增加的负载。
- 高性能: NoSQL 数据库通常针对快速读写操作进行了优化,使其适用于实时应用程序。
- 分布式系统: 许多 NoSQL 数据库都是为分布式环境设计的,提供容错和高可用性。
1.3 NoSQL 数据库类型
Document Databases:
- Store data in flexible JSON-like documents.
- Examples: MongoDB, Couchbase
- Ideal for: Content management systems, user profiles, and application data.
文档数据库:
- 将数据存储在灵活的类似 JSON 的文档中。
- 示例:MongoDB、Couchbase
- 适用于:内容管理系统、用户配置文件和应用程序数据。
Key-Value Stores:
- Store data as simple key-value pairs.
- Examples: Redis, Amazon DynamoDB
- Ideal for: Session management, caching, and high-performance counters.
键值存储:
- 将数据存储为简单的键值对。
- 示例:Redis、Amazon DynamoDB
- 适用于:会话管理、缓存和高性能计数器。
Wide-Column Stores:
- Store data in columns, allowing for flexible schema and efficient data retrieval.
- Examples: Cassandra, HBase
- Ideal for: Time-series data, analytics, and large-scale data processing.
宽列存储:
- 将数据存储在列中,从而实现灵活的架构和高效的数据检索。
- 示例:Cassandra、HBase
- 适用于:时间序列数据、分析和大规模数据处理。
Graph Databases:
- Store data as nodes and relationships between them.
- Examples: Neo4j, Amazon Neptune
- Ideal for: Social networks, recommendation systems, and fraud detection.
图形数据库:
- 将数据存储为节点以及它们之间的关系。
- 示例:Neo4j、Amazon Neptune
- 适用于: 社交网络、推荐系统和欺诈检测。
1.4 MongoDB数据库
MongoDB, a document-oriented NoSQL database, is widely used in web applications. Its flexibility, scalability, and rich feature set make it a popular choice for developers.
MongoDB 是一种面向文档的 NoSQL 数据库,广泛用于 Web 应用程序。它的灵活性、可扩展性和丰富的功能集使其成为开发人员的热门选择。
Basic MongoDB Concepts:
- Database: A container for collections.
- Collection: A group of documents.
- Document: A JSON-like structure representing a record.
基本 MongoDB 概念:
- 数据库: 集合的容器。
- 集合: 一组文档。
- 文档:表示记录的类似 JSON 的结构。
1.5 MongoDB 使用步骤
To build a web application using FastAPI, React, and MongoDB, you’ll typically follow these steps:
要使用 FastAPI、React 和 MongoDB 构建 Web 应用程序,您通常需要遵循以下步骤:
Set up the MongoDB environment: Install MongoDB and create a database.
设置 MongoDB 环境:安装 MongoDB 并创建数据库。
Create a FastAPI backend:
- Install required libraries: fastapi, pymongo, uvicorn
- Establish a connection to the MongoDB database:
创建一个 FastAPI 后端:
- 安装所需的库:fastapi、pymongo、uvicorn
- 建立与 MongoDB 数据库的连接:
Create a React frontend:
- Use a library like axios to make requests to the FastAPI backend.
- Display data retrieved from the backend.
- Allow users to create and update data.
创建一个 React 前端:
- 使用像 axios 这样的库向 FastAPI 后端发出请求。
- 显示从后端检索到的数据。
- 允许用户创建和更新数据。
1.6 使用 NoSQL 的优势
Advantages of Using NoSQL
- Scalability: Handle massive datasets and high traffic efficiently.
- Flexibility: Adapt to changing data structures without major schema modifications.
- Performance: Achieve fast read and write operations.
- Cost-effectiveness: Often lower hardware and maintenance costs compared to RDBMS.
使用 NoSQL 的优势
- 可扩展性:高效处理海量数据集和高流量。
- 灵活性:适应不断变化的数据结构,无需进行重大架构修改。
- 性能:实现快速读写作。
- 成本效益:与 RDBMS 相比,通常更低的硬件和维护成本。
1.7 何时使用 NoSQL
When to Use NoSQL
- Large volumes of unstructured or semi-structured data.
- High write throughput and low latency requirements.
- Complex data structures that evolve over time.
- Horizontal scalability needs.
何时使用 NoSQL
- 大量非结构化或半结构化数据。
- 高写入吞吐量和低延迟要求。
- 随时间演变的复杂数据结构。
- 水平可扩展性需求。
NoSQL databases offer a powerful and flexible alternative to traditional relational databases. By understanding the different types of NoSQL databases and their use cases, you can make informed decisions about when and how to leverage them in your web applications. MongoDB, with its document-oriented model, is a popular choice for many developers due to its ease of use and scalability.
NoSQL 数据库为传统关系数据库提供了强大而灵活的替代方案。通过了解不同类型的 NoSQL 数据库及其使用案例,您可以就何时以及如何在 Web 应用程序中利用它们做出明智的决策。MongoDB 具有面向文档的模型,由于其易用性和可扩展性,是许多开发人员的热门选择。
For our web application, we’ll focus on MongoDB as our NoSQL database. It’s a popular choice due to its flexibility, scalability, and ease of use. Let’s consider a simple blog application as an example.
对于我们的 Web 应用程序,我们将重点关注 MongoDB 作为我们的 NoSQL 数据库。由于其灵活性、可扩展性和易用性,它是一个受欢迎的选择。让我们以一个简单的博客应用程序为例。
1.8 博客列表实战
Before we start coding, let’s define our data structure. In MongoDB, we use collections to store similar documents. For our blog, we might have collections for:
- posts: Stores blog posts with title, content, author, creation date, etc.
- users: Stores user information like username, email, password, etc.
- comments: Stores comments for each post with comment text, author, and timestamp.
在开始编码之前,我们先定义一下数据结构。在 MongoDB 中,我们使用集合来存储类似的文档。对于我们的博客,我们可能有以下集合:
- posts:存储包含标题、内容、作者、创建日期等的博客文章。
- users:存储用户名、电子邮件、密码等用户信息。
- comments:存储每个帖子的评论以及评论文本、作者和时间戳。
后端代码:
from bson import ObjectId
from fastapi import FastAPI, HTTPException
from pymongo import MongoClient
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModelapp = FastAPI()
# MongoDB 连接对象
client = MongoClient("mongodb://zhangdapeng:zhangdapeng520@localhost:27017/")
# 数据库
db = client["blog_db"]
# 博客集合
posts = db["posts"]
# 用户集合
users = db["users"]
# 评论集合
comments = db["comments"]# 配置跨域
app.add_middleware(CORSMiddleware,allow_origins=["*"],allow_credentials=True,allow_methods=["*"],allow_headers=["*"],
)class Post(BaseModel):"""博客模型"""# 标题title: str# 内容content: str# 作者author: str# 创建时间created_at: strclass User(BaseModel):"""用户模型"""# 用户名username: str# 邮箱email: str# 密码password: strclass Comment(BaseModel):"""评论模型"""# 博客IDpost_id: str# 作者author: str# 评论文本text: str# 评论时间created_at: str@app.post("/posts", summary="创建博客", description="创建一个新的博客")
async def create_post(post: Post):result = posts.insert_one(post.dict())return {"post_id": str(result.inserted_id)}@app.get("/posts", summary="获取所有博客", description="获取所有博客")
async def get_posts():all_posts = list(posts.find())data = []for post in all_posts:post["_id"] = str(post["_id"])data.append(post)return dataif __name__ == '__main__':import uvicornuvicorn.run(app, host="0.0.0.0", port=8080)
测试JSON:
{"title": "测试博客","content": "今天学习了fastapi+React前后端分离开发","author": "源滚滚编程","created_at": "2025-05-10 12:33:33"
}
前端渲染:
import {useEffect, useState} from "react";
import axios from "axios";function App() {// 博客列表数据const [posts, setPosts] = useState([]);// 会在页面加载时执行useEffect(() => {axios.get('http://localhost:8080/posts').then(res => {console.log("fastapi传过来的数据", res.data)setPosts(res.data);}).catch(err => {console.log(err);});}, [])return (<><div><h1>博客列表</h1><div>{posts.map((blog) => (<div key={blog._id} className="blog-card"><h2>{blog.title}</h2><p>{blog.content}</p><p>作者: {blog.author}</p><p>创建时间: {blog.created_at}</p></div>))}</div></div></>)
}export default App
Key Advantages of Using MongoDB in this Scenario
- Flexible data structure: Easily adapt to changes in post or user information.
- Scalability: Handle increasing numbers of posts, users, and comments efficiently.
- Performance: MongoDB is optimized for fast read and write operations.
- Rich query language: MongoDB’s query language allows for complex data retrieval.
在此场景中使用 MongoDB 的主要优势
- 灵活的数据结构: 轻松适应帖子或用户信息的变化。
- 可扩展性:有效处理越来越多的帖子、用户和评论。
- 性能:MongoDB 针对快速读写作进行了优化。
- 丰富的查询语言:MongoDB 的查询语言允许复杂的数据检索。
Additional Considerations
- Indexing: Create appropriate indexes to improve query performance.
- Data validation: Use Pydantic or built-in MongoDB validation for data integrity.
- Security: Implement proper authentication and authorization mechanisms.
- Error handling: Handle potential errors gracefully.
其他注意事项
- 索引:创建适当的索引以提高查询性能。
- 数据验证:使用 Pydantic 或内置 MongoDB 验证来实现数据完整性。
- 安全性:实施适当的身份验证和授权机制。
- 错误处理:妥善处理潜在错误。
二、理解MongoDB
2.1 什么是 MongoDB
MongoDB is a popular NoSQL database that uses a document-oriented data model. Unlike traditional relational databases, which store data in tables, MongoDB stores data in flexible, JSON-like documents. This provides significant advantages in terms of scalability, performance, and ease of development.
MongoDB 是一种流行的 NoSQL 数据库,它使用面向文档的数据模型。与将数据存储在表中的传统关系数据库不同,MongoDB 将数据存储在灵活的类似 JSON 的文档中。这在可伸缩性、性能和易开发性方面提供了显著的优势。
Core Concepts
- Document: A fundamental unit of data storage in MongoDB. It’s a key-value pair structure similar to JSON.
- Collection: A group of documents. Think of it as a table in a relational database.
- Database: A container for collections.
核心概念
- 文档:MongoDB 中数据存储的基本单元。它是一个类似于 JSON 的键值对结构。
- 集合:一组文档。将其视为关系数据库中的表。
- 数据库:集合的容器。
2.2 MongoDB 的灵活性
One of the key strengths of MongoDB is its flexible schema. This means you don’t need to define a rigid structure for your documents upfront. You can add or remove fields as needed, making it ideal
相关文章:
使用FastAPI和React以及MongoDB构建全栈Web应用04 MongoDB快速入门
一、NoSQL 概述 1.1 了解关系数据库的局限性 Before diving into NoSQL, it’s essential to understand the challenges posed by traditional Relational Database Management Systems (RDBMS). While RDBMS have been the cornerstone of data management for decades, th…...
C++:this指针
class date { public:void f(int i){} } 以上是我们定义的一个简单的类,这个类里面含有一个简单的成员函数,成员函数看似只有一个参数,实际上是两个参数,除了参数i以外,还有一个指向调用该函数的对象的指针——this指…...
如何在postman使用时间戳
1. 使用 Pre-request Script 动态转换 在发送请求前,将日期字符串转为时间戳并存储为环境变量/全局变量。 示例代码 // 将日期字符串(如 "2023-10-01")转为时间戳(毫秒) const dateString "2…...
OCP开闭原则
OCP,software entities(modules,classes,functions,etc.)should be openfor extension, but closed for modification. 软件实体(模块、类和方法等)应该对扩展开发,对修改关闭。 OCP特点 提高可扩展性:新功能通过添…...
计算机网络:什么是Mesh组网以及都有哪些设备支持Mesh组网?
Mesh组网技术详解与实现工具推荐 Mesh组网是一种通过多个节点路由器协同工作,形成覆盖全屋的无线网络的技术。它通过动态路径调整、无缝漫游和自愈能力,解决传统单一路由器覆盖不足的问题,尤其适合大户型、多层住宅或复杂户型环境。以下是Mesh组网的核心原理、实现方式及推…...
STM32f103 标准库 零基础学习之点灯
前提:你已经下好了标准外设库,如果没有可以去找找教程 ST官网上可以下载 目录 前提:你已经下好了标准外设库,如果没有可以去找找教程 ST官网上可以下载 点灯逻辑 1. 定义 GPIO 初始化结构体 2. 开启GPIOA的时钟…...
uniapp使用ui.request 请求流式输出
正文: 在现代Web开发中,实时数据流和长时间运行的请求变得越来越常见,尤其是在处理大量数据或进行实时通信时。在这种情况下,uniapp 提供的 ui.request 请求方法可以帮助我们轻松实现流式输出请求。本文将介绍如何使用 uni.reques…...
MATLAB安装常见问题及解决方案详解(含代码示例)
MATLAB作为科学计算和工程分析的核心工具,其安装过程可能因操作系统版本、硬件配置或网络环境等因素而出现各种问题。本文基于MATLAB官方文档和社区经验,系统总结了安装过程中常见的问题,并提供详细的解决方案和代码示例,帮助用户…...
【Java ee初阶】网络编程 UDP socket
网络编程 socket api 是传输层提供的api。 UDP 无连接,不可靠传输,面向数据报,全双工。 TCP 有链接,可靠传输,面向字节流,全双工。 UDP socket api 数据报 DatagrammSocket 代表了操作系统中的socket文…...
BeanPostProcessor和AOP
BeanPostProcessor Spring中有一个接口Oredr的getOrder()方法,这个方法返回值是一个int类型,Spring容器会根据这个方法的返回值 对容器的多个Processor对象从小到大排序,创建Bean时候依次执行他们的方法,也就是说getOrder()方法的…...
django的权限角色管理(RBAC)
在 Django 中,User、Group 和 Permission 是权限系统的核心组件。下面通过代码示例演示它们的 CRUD(创建、读取、更新、删除) 操作: 一、User 模型 CRUD from django.contrib.auth.models import User# 创建用户 user User.obje…...
vue vite 无法热更新问题
一、在vue页面引入组件CustomEmployeesDialog,修改组件CustomEmployeesDialog无法热更新 引入方式: import CustomEmployeesDialog from ../dialog/customEmployeesDialog.vue 目录结构: 最后发现是引入import时,路径大小写与目…...
IBM BAW(原BPM升级版)使用教程第八讲
续前篇! 一、流程开发功能模块使用逻辑和顺序 前面我们已经对 流程、用户界面、公开的自动化服务、服务、事件、团队、数据、性能、文件各个模块进行了详细讲解,现在统一进行全面统一讲解。 在 IBM Business Automation Workflow (BAW) 中,…...
202534 | KafKa简介+应用场景+集群搭建+快速入门
Apache Kafka 简介 一、什么是 Kafka? Apache Kafka 是一个高吞吐量、分布式、可扩展的流处理平台,用于构建实时数据管道和流应用程序。它最初由 LinkedIn 开发,并于 2011 年开源,目前由 Apache 软件基金会进行维护。 Kafka 具备…...
[思维模式-25]:《本质思考力》-6- 马克思主义哲学的五对基本哲学范畴,以及在计算机领域的体现
一、马克思主义哲学的五对基本哲学范畴, 马克思主义哲学的五对基本哲学范畴是内容与形式、现象与本质、原因与结果、必然性与偶然性、可能性与现实性,以下为具体分析: 内容与形式:组成元素 VS 组成结构 内容指构成事物内在要素的…...
6. 存储池配置与CephFS创建 ceph version 14.2.22
6. 存储池配置与CephFS创建 6.1 CRUSH规则管理6.2 纠删码配置6.3 为SSD和HDD创建专用CRUSH规则6.4 创建CephFS存储池6.5 验证存储池配置记录OSD盘符 所有节点都执行 7. 客户端挂载CephFS7.1 Ubuntu客户端配置7.2 使用内核驱动挂载7.3 设置开机自动挂载 说明:配置Cep…...
RocketMQ Kafka区别
架构 ZooKeeper:管理 Broker 注册、分区 Leader 选举及消费者组状态。Broker:存储 Partition数据,每个 Partition 为独立日志文件。Producer/Consumer:通过 ZooKeeper获取路由信息,实现消息分发与消费。 NameServer&am…...
linux和linux 、linux和windows实现文件复制笔记
前提:两设备得在同一局域网下,且启用了ssh 一、linux和linux实现文件复制 从 Ubuntu B 复制文件夹到 Ubuntu A 在 Ubuntu A 上打开终端,执行: scp -r userBubuntuB_IP:/home/userB/folder_to_copy /home/userA/destination/ 二、linux和…...
Flink 运维监控与指标采集实战
一、引言:实时任务为什么必须监控? 在实时任务中,任务失败、数据延迟、资源瓶颈往往并非由明显的代码异常引发,而是隐蔽地潜藏在: Kafka 积压无告警 Flink Checkpoint 卡顿却无人知晓 反压、TaskManager 内存 OOM 未实时感知 为了保障业务 SLA、高可用与可观测性,构建完…...
linux 开发小技巧之git增加指令别名
众所周知,git的指令执行时都得敲好几个字符才能补充上来,比如常用的git status,是不是要将全部的字符一个个地在键盘敲上来,有没有更懒惰点办法,可以将经常用到的git命令通过其他的别名的方式填充,比如刚刚…...
【八股消消乐】项目中如何优化JVM内存分配?
😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本专栏《八股消消乐》旨在记录个人所背的八股文,包括Java/Go开发、Vue开发、系统架构、大模型开发、机器学习、深度学习、力扣算法等相关知识点,期待与你…...
操作系统实验习题解析 上篇
孤村落日残霞,轻烟老树寒鸦,一点飞鸿影下。 青山绿水,白草红叶黄花。 ————《天净沙秋》 白朴 【元】 目录 实验一: 代码: 解析: 运行结果: 实验二: 代码解析 1. 类设计 …...
Yocto中`${B}`变量的作用
在Yocto项目中,${B}是一个关键路径变量,用于指定构建目录(Build Directory),其作用是存放编译过程中生成的中间文件(如Makefile、目标文件、日志等),从而将构建产物与源码目录分离,保持源码环境的独立性^1。 具体解析: 定义与默认路径 默认情况下,${B}的路径为${TM…...
JDBC执行sql过程
1. 加载数据库驱动 JDBC 通过 驱动(Driver) 实现与不同数据库的通信。驱动需提前加载到 JVM: 手动加载(JDBC 4.0 前): Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 驱…...
python如何提取Chrome中的保存的网站登录用户名密码?
很多浏览器都贴心地提供了保存用户密码功能,用户一旦开启,就不需要每次都输入用户名、密码,非常方便。作为python脚本,能否拿到用户提前保存在浏览器中的用户名密码,用以自动登录呢?必须有,小爬…...
【数据结构入门训练DAY-30】数的划分
文章目录 前言一、题目二、解题思路结语 前言 本次训练内容 训练DFS。训练解题思维。 一、题目 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n7,k3,下面三种分法被认为是相同的。 {1&a…...
CD37.【C++ Dev】string类的模拟实现(上)
目录 1.string基本知识的回顾 2.简单的模拟实现 准备操作 代码实现 成员变量 构造函数 C风格构造的函数 无参构造函数 C风格构造的函数与无参构造函数合二为一 析构函数 c_str() size() operator[ ] 可读可写 只可读 iterator(指针版) begin()和end() 编辑…...
Java代理
一、代理的基本定义 1.什么是Java代理模式:给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用。 2.类是构建对象的模板 下面是最简单的代理实现(这只是一个演示会报错) package 代理;public class xiaoming {public static…...
源码示例:使用SpringBoot+Vue+ElementUI+UniAPP技术组合开发一套小微企业ERP系统
目录 一、系统架构设计 1、技术分层 2、开发环境 二、快速开发实践 1、后端搭建(Spring Boot) 2、前端管理端(VueElementUI) 3、移动端开发(UniAPP) 三、关键集成方案 1、统一接口处理 2、跨平台…...
.Net Mqtt协议-MQTTNet(一)简介
一、MQTTNet 简介 MQTTnet 是一个高性能的MQTT类库,支持.NET Core和.NET Framework。 二、MQTTNet 原理 MQTTnet 是一个用于.NET的高性能MQTT类库,实现了MQTT协议的各个层级,包括连接、会话、发布/订阅、QoS(服务质量࿰…...
路由策略和策略路由的区别以及配置案例
区别 路由策略:路由策略是通过ACL等方式控制路由发布,让对方学到适当路由条目,比如有20条路由,只想让某个路由器学到10条,可以通过路由策略进行过滤。 策略路由:策略路由是通过定义策略和应用,…...
【Debian】关于LubanCat-RK3588s开发板安装Debian的一些事
琐碎的事问题不少,甚至一度让我以为核心坏了 按照指引烧录完Debian11-gnome镜像后启动,此时输出的分辨率不一定匹配显示器,进而导致黑屏,此时需要使用MobaXterm的串口终端以运行一些指令,下载链接用xrandr指令查看显示…...
vmware环境ORACLE RAC环境数据库节点1无法启动问题分析处理
近期在一个客户数据库巡检时发现ORACLE RAC环境数据库一节点故障,只有二节点在运行。 RAC环境正常安装完成后,后期典型的节点无法启动问题就是私网异常、共享存储异常等,检查机器日志可以快速定位问题;本次问题就是因为心跳网络问…...
前端性能优化全攻略:从基础体验到首屏加载的深度实践
在移动互联网时代,用户体验已成为产品竞争力的核心要素。本文将从基础交互优化和首屏加载专项两个维度,系统梳理前端性能优化的关键策略。(对应图片1的整体框架设计) 一、基础性能优化四维模型 1. 首次打开加速方案 • 资源压缩…...
选对第三方软件测试公司,项目验收成功率提升90%
在当今数字化浪潮中,软件质量已成为企业竞争力的核心要素。然而,软件开发团队往往因资源有限或视角局限,难以全面发现潜在问题。这时,第三方软件测试公司凭借其独立性和专业性,成为企业确保软件质量的关键伙伴。尤其在…...
golang常用库之-protojson 库(json.Marshal 和 protojson.Marshal 序列化对比)
文章目录 golang常用库之-protojson 库(json.Marshal 和 protojson.Marshal 序列化对比)什么是protojson 库什么情况需要用 protojson? json.Marshal 和 protojson.Marshal 序列化对比简单示例json.Marshal 的潜在问题 (对于 Protobuf 结构体…...
嵌入式学习笔记 - 运算放大器的共模抑制比
一 定义 共模抑制比(Common Mode Rejection Ratio, CMRR)是衡量差分放大器(或差分电路)抑制共模信号能力的关键指标。它在电子工程中尤为重要,特别是在需要处理微弱信号或对抗环境噪声的场景中。 核心概念 共…...
Taccel:一个高性能的GPU加速视触觉机器人模拟平台
触觉感知对于实现人类水平的机器人操作能力至关重要。而视觉触觉传感器(VBTS)作为一种有前景的解决方案,通过相机捕捉弹性凝胶垫的形变模式来感知接触的方式,为视触觉机器人提供了高空间分辨率和成本效益。然而,这些传…...
高效Python开发:uv包管理器全面解析
目录 uv简介亮点与 pip、pip-tools、pipx、poetry、pyenv、virtualenv 对比 安装uv快速开始uv安装pythonuv运行脚本运行无依赖的脚本运行有依赖的脚本创建带元数据的 Python 脚本使用 shebang 创建可执行文件使用其他package indexes锁定依赖提高可复现性指定不同的 Python 版本…...
PyTorch 线性回归模型构建与神经网络基础要点解析
笔记 1 PyTorch构建线性回归模型 1.1 创建数据集 import torch from torch.utils.data import TensorDataset # 创建x和y张量数据集对象 from torch.utils.data import DataLoader # 创建数据集加载器 import torch.nn as nn # 损失函数和回归函数 from torch.optim impo…...
PyTorch API 2 - 混合精度、微分、cpu、cuda、可视化
文章目录 自动混合精度包 - torch.amp自动类型转换参数说明 梯度缩放自动转换操作符参考操作符适用性CUDA 操作特定行为可自动转换为 float16 的 CUDA 运算可自动转换为 float32 的 CUDA 运算提升至最宽输入类型的 CUDA 操作优先使用 binary_cross_entropy_with_logits 而非 bi…...
window 显示驱动开发-AGP 类型伸缩空间段
AGP 类型的伸缩空间段类似于线性光圈空间段。 但是,内核模式显示微型端口驱动程序(KMD)不会通过 AGP 类型的伸缩空间段公开 dxgkDdiBuildPagingBuffer 回调函数的DXGK_OPERATION_MAP_APERTURE_SEGMENT和DXGK_OPERATION_UNMAP_APERTURE_SEGMEN…...
异地多活单元化架构下的微服务体系
治理服务间的跨IDC调用,而数据库层面还是要跨IDC 服务注册中心拆开、 金融要求,距离太远,异地备库,如果延迟没读到数据就可能有资损,IDC3平时不能用,IDC1挂了还是有数据同步问题,IDC3日常维护…...
LinkedList源码解析
添加元素方法 add方法详解 /*E:创建LinkedList对象时泛型中设置好的数据类型e: 传递的参数boolean: 添加成功即为true,添加失败即为false */public boolean add(E e) {// 在链表最后一个结点后面插入新结点(根据待插入元素封装的结点) linkLast(e);/…...
Android 13 使能user版本进recovery
在 debug 版本上,可以在关机状态下,同时按 电源键 和 音量加键 进 recovery 。 user 版本上不行。 参考 使用 build 变体 debug 版本和 user 版本的差别之一就是 ro.debuggable 属性不同。 顺着这个思路追踪,找到 bootable/recovery/reco…...
Docker 使用总结及完整示例介绍
以下是一份详细的 Docker 使用总结及完整示例介绍,涵盖基础概念、常用命令和实际应用场景: 一、Docker 核心概念 镜像 (Image) 只读模板,用于创建容器。例如:ubuntu:22.04, nginx:alpine 容器 (Container) 镜像的运行实例&#x…...
[Linux]多线程(二)原生线程库---pthread库的使用
[Linux]多线程(二)原生线程库—pthread库的使用 水墨不写bug 文章目录 一、pthread原生线程库的使用1. pthread_create全面的看待线程返回值2. pthread_join3. pthread_exit对比理解线程退出?1、return退出2、调用C库函数exit()退出3、调用pt…...
1.短信登录
1.0 问题记录 1.0.1 redis 重复 token 问题 每次用户登录时,后端会创建一个新的 token 并存入 Redis,但之前登录的 token 还没有过期。这可能会导致以下问题: 1. Redis 中存在大量未过期但实际已不使用的 token2. 同一用户可能有多个有效 …...
Vue v-model 深度解析:实现原理与高级用法
一、v-model 的本质 v-model 是 Vue 中最常用的指令之一,它本质上是一个语法糖,用于在表单元素和自定义组件上实现双向数据绑定。在 Vue 2.x 和 Vue 3.x 中,v-model 的实现机制有所不同,但核心思想都是简化数据绑定的过程。 1.1…...
Java动态代理超详细解析:三步+内存图(堆栈分析)
0.本文适合谁? 1.刚学Java动态代理,被Proxy、InvocationHandler绕晕的同学 2.想彻底搞懂代理对象在内存中如何工作的开发者 3.需要面试突击动态代理知识的求职 1.动态代理的本质(三步走) 动态代理的核心可以拆解为三个关键…...