【小沐学数据库】MongoDB下载、安装和入门(Python)

news2024/12/24 2:36:24

文章目录

  • 1、简介
  • 2、下载和安装
    • 2.1 平台支持
    • 2.2 MongoDB Community Server
    • 2.3 MongoDB Shell
    • 2.4 MongoDB Compass
    • 2.5 pymongo库
  • 3、概念
    • 3.1 数据库
    • 3.2 文档(Document)
    • 3.3 集合(Collection)
    • 3.4 元数据
    • 3.5 数据类型
  • 4、Python代码测试
    • 4.1 连接数据库
    • 4.2 指定数据库和集合
    • 4.3 插入数据
    • 4.4 删除数据
    • 4.5 修改数据
    • 4.6 查询数据
  • 结语

1、简介

MongoDB是一个文档数据库,旨在简化应用程序 开发和扩展。

官网地址:
https://www.mongodb.com/

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

在这里插入图片描述

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

MongoDB 数据库主要用于海量存储,常被用在数据采集项目中。数据存储不需要固定模式,不需要多余操作就可以横向扩展,低成本,没有复杂的关系,安装简单,支持各种编程语言等。

2、下载和安装

2.1 平台支持

MongoDB 6.0 Community Edition 支持以下 64 位版本的 Windowsx86_64。
MongoDB仅支持这些平台的64位版本。

  • Windows Server 2019
  • Windows 10 / Windows Server 2016

2.2 MongoDB Community Server

MongoDB有两个服务器版本: 社区版和商业版。
其中社区版又分为如下几种:

  • 在 Linux 上安装
    安装 MongoDB 社区版和所需的依赖项 Linux。
    • Install MongoDB Community Edition on Red Hat or CentOS
    • Install MongoDB Community Edition on Ubuntu
    • Install MongoDB Community Edition on Debian
    • Install MongoDB Community Edition on SUSE
    • Install MongoDB Community Edition on Amazon Linux
  • 在 macOS 上安装
    从MongoDB在macOS系统上安装MongoDB社区版 档案。
    • Install MongoDB Community Edition on macOS
  • 在Windows上安装
    在Windows系统上安装MongoDB社区版,并 (可选)将MongoDB作为Windows服务启动。
    • Install MongoDB Community Edition on Windows
  • 使用 Docker 安装
    安装 MongoDB Community Docker 容器。
    • Install MongoDB Community with Docker

这里以Windows为例说明。
直接运行安装程序mongodb-windows-x86_64-6.0.6-signed.msi,最开始界面如下:
在这里插入图片描述
4.0之后,可以再MongoDB安装期间将MongoDB配置为服务。把MongoDB配置为Windows服务。勾选Install MongoD as a Service(默认勾选),如果不勾选就只安装二进制文件,不作为服务。 然后选择 Run Service as Network Service user(以网络服务用户的身份运行)(默认)

在这里插入图片描述
点击next后把 Install MongoDB Compass勾选给去掉。一般建议单独下载安装。最后安装完成如下:
在这里插入图片描述
按 Ctrl + Shfit + Esc,打开任务管理器,切换到服务选项卡,下拉找到 MongoDB 服务。在这里可以观察到 MongoDB 的状态,默认是自动启动,即开机自启。
在这里插入图片描述

或者打开浏览器访问 :

http://localhost:27017

在这里插入图片描述
显示如上信息,说明MongoDB服务启动成功。

# 开始MongoDB服务
net start mongodb
# 关闭MongoDB服务
net stop mongodb

您可以配置mongod和mongos实例位于 使用配置文件启动。配置文件包含 等效于mongod和mongos命令行选项。

mongod --config <configuration file>
mongod --config /etc/mongod.conf
mongos --config /etc/mongos.conf
mongod -f /etc/mongod.conf
mongos -f /etc/mongos.conf

以下是一个示例配置文件:

systemLog:
   destination: file
   path: "/var/log/mongodb/mongod.log"
   logAppend: true
storage:
   journal:
      enabled: true
processManagement:
   fork: true
net:
   bindIp: 127.0.0.1
   port: 27017
setParameter:
   enableLocalhostAuthBypass: false
...

YAML 不支持缩进制表符:请改用空格。

2.3 MongoDB Shell

打开MongoDB 的安装目录,默认是 C:/Program Files/MongoDB/Server/6.0
MongoDB 目录如下:
在这里插入图片描述
其中,bin 是 MongoDB 提供的可执行程序的目录,data 是数据存储的目录,log 是日志存储的目录。后两者在过去都需要开发者手动创建。现在安装程序会自动创建。

现在查看bin 目录:
在这里插入图片描述
其中,mongod.exe 用来启动 MongoDB 服务,mongos.exe 用来管理分片集群。

在 MongDB 6 以前,这个目录下会有很多可执行程序,比如最常用的 mongo.exe,它用来连接到 MongoDB 服务,是一个 shell 环境的客户端工具。但是现在需要单独进行安装。

MongoDB Shell是连接(和使用)MongoDB的最快方式。使用这个可扩展的现代命令行界面轻松查询数据、配置设置和执行其他操作 - 充满了语法突出显示、智能自动完成、上下文帮助和错误消息。

注意:MongoDB Shell是一个开源(Apache 2.0),独立于MongoDB服务器开发的独立产品。

https://www.mongodb.com/try/download/shell

在这里插入图片描述

mongosh-1.10.1-win32-x64.zip

解压之后,打开bin文件夹如下:
在这里插入图片描述
将上面两个文件复制到MongoDB 服务器安装文件夹的bin里面:
在这里插入图片描述
如果使用 Shell 命令的形式打开 MongoDB,最好先配置环境变量。
将上面的MongoDB服务器的bin文件夹路径添加到 Path 变量里面。
在这里插入图片描述

在这里插入图片描述

之后就可以在任意路径下使用 mongosh、mongod 等命令了。

  • 连接mongodb服务器
    打开命令行工具,执行 mongosh.exe ,默认会连接 mongodb://localhost:27017 的 MongoDB 服务:
mongosh
# or
mongosh --port 27017

在这里插入图片描述

  • 查看mongodb所有的数据库:
show databases
# or
show dbs

在这里插入图片描述

2.4 MongoDB Compass

使用Compass(MongoDB的GUI)轻松探索和操作数据库。Compass 直观而灵活,提供详细的模式可视化、实时性能指标、复杂的查询功能等等。

请注意,MongoDB Compass有三个版本:具有所有功能的完整版本,没有写入或删除功能的只读版本,以及唯一网络连接与MongoDB实例的隔离版本。

https://www.mongodb.com/try/download/compass

在这里插入图片描述

2.5 pymongo库

python -m pip install pymongo
# or
python -m pip install pymongo==3.11
# or
python -m pip install --upgrade pymongo

3、概念

Mongo中的一些概念:

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

3.1 数据库

一个mongodb中可以建立多个数据库。
MongoDB的默认数据库为"db",该数据库存储在data目录中。
MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

  • 命令:show dbs
    命令可以显示所有数据的列表。
    在这里插入图片描述
  • 命令:db
    命令可以显示当前数据库对象或集合。
    在这里插入图片描述
  • 命令:use
    可以连接到一个指定的数据库。如果数据库不存在,则创建数据库,否则切换到指定数据库。
    在这里插入图片描述

数据库名可以是满足以下条件的任意UTF-8字符串:

不能是空字符串("")。
不得含有' '(空格)、.、$、/、\\0 (空字符)。
应全部小写。
最多64字节。

特殊作用的数据库:

admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
  • 添加用户名和密码
    设置超级管理员账号和密码:
use admin

db.createUser({
  user: 'admin',    // 用户名(自定义)
  pwd: '123456',  // 密码(自定义)
  roles:[{
    role: 'root',   // 使用超级用户角色
    db: 'admin'     // 指定数据库
  }]
})

在这里插入图片描述
找到MongoDB安装目录下的bin目录中的mongod.cfg文件,开启权限验证功能:

security:
  authorization: enabled

重启MongoDB服务。连接数据库,并登录超级管理员账号。
除了设置超级管理员账号以外,还可以为每个数据库单独设置账号:

# 为自定义的数据库myMongoDB创建了一个用户hello,它具有对这个数据库的读写权限。
use myMongoDB  // 跳转到需要添加用户的数据库

db.createUser({
  user: 'hello',          // 用户名
  pwd: '123456',      // 密码
  roles:[{
    role: 'readWrite',  // 读写权限角色
    db: 'myMongoDB'     // 数据库名
  }]
})
角色描述角色标识
数据库用户角色read、readWrite
数据库管理角色dbAdmin、dbOwner、userAdmin
集群管理角色clusterAdmin、clusterManager、clusterMonitor、hostManager
备份恢复角色backup、restore
所有数据库角色readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase
超级用户角色root
  • 命令:db.help()
    Display help for database methods.
db.help()

在这里插入图片描述

  • 命令:db.collection.help()
    Display help on collection methods. The can be the name of an existing collection or a non-existing collection.
    在这里插入图片描述

  • 命令:help
    Display help.
    在这里插入图片描述

  • 命令:show collections
    Display a list of all collections for current database.
    在这里插入图片描述

  • 命令:show dbs
    Display a list of all databases on the server.
    在这里插入图片描述

  • 命令:show tables
    Display a list of collections in the current database. See show collections.

  • 命令:show users
    Display a list of users for current database.
    在这里插入图片描述

3.2 文档(Document)

文档是一组键值(key-value)对(即 BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
一个简单的文档例子如下:

在这里插入图片描述
MongoDB中的记录是一个文档,它是一个数据结构组成 字段和值对。MongoDB文档类似于JSON。 对象。字段的值可能包括其他文档、数组、 和文档数组。

RDBMSMongoDB
数据库数据库
表格集合
文档
字段
表联合嵌入文档
主键主键 (MongoDB 提供了 key 为 _id )
  • 创建一个新数据库和集合
use myNewDatabase
db.myCollection.insertOne( { x: 1 } );

在这里插入图片描述

  • 添加一个Document

db.collection.insertOne()

use sample_mflix
db.movies.insertOne(
  {
    title: "The Favourite",
    genres: [ "Drama", "History" ],
    runtime: 121,
    rated: "R",
    year: 2018,
    directors: [ "Yorgos Lanthimos" ],
    cast: [ "Olivia Colman", "Emma Stone", "Rachel Weisz" ],
    type: "movie"
  }
)
#插入一条数据:
db.stu.insert({name:'zhangsan','age':20});
#插入一条数据,指定主键:
db.stu.insert({_id:3,'name':'lisi','age':28});
#增加多条数据:
db.stu.insert(
[{name:'wangyi','age':18},{'name':'sunwu','age':25}])
  • 添加多个Documents

db.collection.insertMany()

use sample_mflix
db.movies.insertMany([
   {
      title: "Jurassic World: Fallen Kingdom",
      genres: [ "Action", "Sci-Fi" ],
      runtime: 130,
      rated: "PG-13",
      year: 2018,
      directors: [ "J. A. Bayona" ],
      cast: [ "Chris Pratt", "Bryce Dallas Howard", "Rafe Spall" ],
      type: "movie"
    },
    {
      title: "Tag",
      genres: [ "Comedy", "Action" ],
      runtime: 105,
      rated: "R",
      year: 2018,
      directors: [ "Jeff Tomsic" ],
      cast: [ "Annabelle Wallis", "Jeremy Renner", "Jon Hamm" ],
      type: "movie"
    }
])
  • 读取一个Collection所有的Documents

db.collection.find()

use sample_mflix

db.movies.find()
  • 指定相等条件读取Documents
use sample_mflix

db.movies.find( { "title": "Titanic" } )
  • 指定操作符条件读取Documents
use sample_mflix

db.movies.find( { rated: { $in: [ "PG", "PG-13" ] } } )
  • 指定与或逻辑条件读取Documents
use sample_mflix

db.movies.find( { countries: "Mexico", "imdb.rating": { $gte: 7 } } )
  • 更新Documents

db.collection.updateOne().
db.collection.updateMany().
db.collection.replaceOne().

use sample_mflix

db.movies.updateOne( { title: "Twilight" },
{
  $set: {
    plot: "A teenage girl risks everything–including her life–when she falls in love with a vampire."
  },
  $currentDate: { lastUpdated: true }
})
  • 删除Documents

db.collection.deleteMany()
db.collection.deleteOne()

use sample_mflix

db.movies.deleteMany({})
db.movies.deleteMany( { title: "Titanic" } )
db.movies.deleteOne( { cast: "Brad Pitt" } )

3.3 集合(Collection)

集合就是 MongoDB 文档组,类似于 RDBMS 中的表格。

集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。

当第一个文档插入时,集合就会被创建。

MongoDB将文档存储在集合。集合类似于关系数据库中的表。

3.4 元数据

数据库的信息是存储在集合中。它们使用了系统的命名空间:

dbname.system.*

在MongoDB数据库中名字空间 .system.* 是包含多种系统信息的特殊集合(Collection)。

3.5 数据类型

下表为MongoDB中常用的几种数据类型。

数据类型描述
String字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean布尔值。用于存储布尔值(真/假)。
Double双精度浮点值。用于存储浮点值。
Min/Max keys将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Array用于将数组或列表或多个值存储为一个键。
Timestamp时间戳。记录文档修改或添加的具体时间。
Object用于内嵌文档。
Null用于创建空值。
Symbol符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID对象 ID。用于创建文档的 ID。
Binary Data二进制数据。用于存储二进制数据。
Code代码类型。用于在文档中存储 JavaScript 代码。
Regular expression正则表达式类型。用于存储正则表达式。

4、Python代码测试

4.1 连接数据库

mongodb://localhost
mongodb://localhost:port
mongodb://sysop:moon@localhost

import pymongo
# myclient = pymongo.MongoClient()
# myclient = pymongo.MongoClient("mongodb://localhost:27017")
# myclient = pymongo.MongoClient('mongodb://admin:123456@localhost:27017/?authSource=admin')
myclient = pymongo.MongoClient('localhost',27017)
print(myclient.list_database_names())
import pymongo
myclient = pymongo.MongoClient('localhost', 27017)
db = mongo_client.admin
db.authenticate('用户名', '密码')

4.2 指定数据库和集合

#获取数据库
db = client.test_database
# or
db = client["test-database"]

#指定集合
collection = db.test_collection
# or
collection = db["test-collection"]

4.3 插入数据

#增加一条
stu1={'id':'001','name':'zhangsan','age':10}
result = collection.insert_one(stu1)

#增加多条
stu2={'id':'002','name':'lisi','age':15}
stu3={'id':'003','name':'wangwu','age':20}
result = collection.insert_many([stu2,stu3])

import datetime
post = {
    "author": "Mike",
    "text": "My first blog post!",
    "tags": ["mongodb", "python", "pymongo"],
    "date": datetime.datetime.now(tz=datetime.timezone.utc),
}
posts = db.posts
post_id = posts.insert_one(post).inserted_id
db.list_collection_names()

import pprint
pprint.pprint(posts.find_one())
pprint.pprint(posts.find_one({"author": "Mike"}))
pprint.pprint(posts.find_one({"author": "Eliot"}))
pprint.pprint(posts.find_one({"_id": post_id}))

在这里插入图片描述

# Bulk Inserts
new_posts = [
    {
        "author": "Mike",
        "text": "Another post!",
        "tags": ["bulk", "insert"],
        "date": datetime.datetime(2009, 11, 12, 11, 14),
    },
    {
        "author": "Eliot",
        "title": "MongoDB is fun",
        "text": "and pretty easy too!",
        "date": datetime.datetime(2009, 11, 10, 10, 45),
    },
]
result = posts.insert_many(new_posts)
result.inserted_ids

# Querying for More Than One Document
for post in posts.find():
    pprint.pprint(post)

# Counting
posts.count_documents({})
posts.count_documents({"author": "Mike"})

# Range Queries
d = datetime.datetime(2009, 11, 12, 12)
for post in posts.find({"date": {"$lt": d}}).sort("author"):
    pprint.pprint(post)
from pymongo import MongoClient

# Replace the uri string with your MongoDB deployment's connection string.
uri = "mongodb://localhost:27017"

client = MongoClient(uri)

# database and collection code goes here
db = client.sample_guides
coll = db.comets

coll.drop()

# insert code goes here
docs = [
	{"name": "Halley's Comet", "officialName": "1P/Halley", "orbitalPeriod": 75, "radius": 3.4175, "mass": 2.2e14},
	{"name": "Wild2", "officialName": "81P/Wild", "orbitalPeriod": 6.41, "radius": 1.5534, "mass": 2.3e13},
	{"name": "Comet Hyakutake", "officialName": "C/1996 B2", "orbitalPeriod": 17000, "radius": 0.77671, "mass": 8.8e12},
    ]

result = coll.insert_many(docs)

# display the results of your operation
print(result.inserted_ids)

# Close the connection to MongoDB when you're done.
client.close()

4.4 删除数据

#可以直接使用remove方法删除指定的数据
result = collection.remove({'name': 'zhangsan'})

#使用delete_one()删除一条数据
result = collection.delete_one({"name":"zhangsan"})

#delete_many()删除多条数据
result = collection.delete_many({"age":{'$lt':20}})
from pymongo import MongoClient

# Replace the uri string with your MongoDB deployment's connection string.
uri = "mongodb://localhost:27017"

client = MongoClient(uri)

# database and collection code goes here
db = client.sample_guides
coll = db.comets

# delete code goes here
doc = {
    "orbitalPeriod": {
        "$gt": 5,
        "$lt": 85
    }
}
result = coll.delete_many(doc)

# amount deleted code goes here
print("Number of documents deleted: ", result.deleted_count)

# Close the connection to MongoDB when you're done.
client.close()

4.5 修改数据

#update_one,第 2 个参数需要使用$类型操作符作为字典的键名
#姓名为zhangsan的记录,age修改为22
condition = {'name': 'zhangsan'}
res = collection.find_one(condition)
res['age'] = 22
result = collection.update_one(condition, {'$set': res})
print(result) #返回结果是UpdateResult类型
print(result.matched_count,result.modified_count) #获得匹配的数据条数1、影响的数据条数1

#update_many,所有年龄为15的name修改为xixi
condition = {'age': 15}
res = collection.find_one(condition)
res['age'] = 30
result = collection.update_many(condition, {'$set':{'name':'xixi'}})
print(result) #返回结果是UpdateResult类型
print(result.matched_count,result.modified_count) #获得匹配的数据条数3、影响的数据条数3
from pymongo import MongoClient
# Replace the uri string with your MongoDB deployment's connection string.
uri = "mongodb://localhost:27017"
client = MongoClient(uri)
# database and collection code goes here
db = client.sample_guides
coll = db.comets
# update code goes here
doc = {"$mul": {"radius": 1.60934}}
result = coll.update_many({}, doc)
# display the results of your operation
print("Number of documents updated: ", result.modified_count)
# Close the connection to MongoDB when you're done.
client.close()

4.6 查询数据

rets = collection.find({"age":20})for ret in rets:
    print(ret)
 # 查询结果有多少条数据
 count = collection.find().count()
 # 查询结果按年龄升序排序
results = collection.find().sort('age', pymongo.ASCENDING)
print([result['age'] for result in results])

ret =collection.find_one({'name': 'zhangsan'})
from pymongo import MongoClient

# Replace the uri string with your MongoDB deployment's connection string.
uri = "mongodb://localhost:27017"
client = MongoClient(uri)

# database and collection code goes here
db = client.sample_guides
coll = db.planets

# find code goes here
cursor = coll.find({"hasRings": True})
# iterate code goes here
for doc in cursor:
    print(doc)

# find code goes here
cursor = coll.find({"surfaceTemperatureC.mean": {"$lt": 15}})
for doc in cursor:
    print(doc)

# Close the connection to MongoDB when you're done.
client.close()

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/677849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kafka基础

文章目录 1、什么是消息队列&#xff1f;2、基础架构3、Kafka为什么快4、零拷贝5、Rebalance机制6、kafka如何避免重复消费7、避免消息丢失8、Kafka怎么实现消息的顺序消费9、什么是ISR10、Kafka文件存储机制 1、什么是消息队列&#xff1f; kafka是一个消息队列的中间件&…

ProGuard混淆及R8优化

前言&#xff1a;使用java编写的源代码编译后生成了对于的class文件&#xff0c;市面上很多软件都可以对class文件进行反编译&#xff0c;况且Android开发的应用程序是用Java代码写的&#xff0c;为了很好的保护Java源代码&#xff0c;我们需要对编译好后的class文件进行混淆。…

切底掌握Android中的Kotlin DSL

前言 在这篇文章中&#xff0c;我们将学习如何在您的 Android 项目中编写 Kotlin DSL。 这个文章会很长&#xff0c;所以花点时间&#xff0c;让我们一起来写你的 DSL。我们将讨论以下主题&#xff0c; 什么是简单英语中的 DSL&#xff1f;您使用任何 DSL 吗&#xff1f;为什…

微服务的文件配置

1 基于本地文件配置的痛点 ①修改本地配置文件 需要重启服务 ②viper能监听本地配置文件变动 修改内存中变量的值 貌似可以满足需求 痛点如果实例过多 手动改极有可能出错 很多服务都依赖一个配置 运维可以写脚本批量修改 出问题运维不想背锅 ③ 多语言开发的实例 使用…

ThreadX在mdk(AC5)中的移植

1.ThreadX简介 Threadx是由 Express Logic 公司开发的一款实时操作系统&#xff08;RTOS&#xff09;&#xff0c;2019年被微软收购&#xff0c;成为了微软的一款Azure RTOS。在2020年&#xff0c;ThreadX也加入了开源大军&#xff0c;将ThreadX内核及其各大组件开源免费。 Th…

电赛汇总(一):微控制器以其外围电路模块设计

电赛汇总(一)&#xff1a;微控制器以其外围电路模块设计 这一章节主要详细记录各种常用的微控制器的引脚功能、外围的电路模块等&#xff0c;以便随时查看翻阅。这部分内容出自黄智伟等学者著的《全国大学生电子设计竞赛教程–常用电路模块制作》一书中&#xff0c;感兴趣的朋…

PS2022版本修复打开闪退问题

前言 windows 11 系统最近换了一台电脑&#xff0c;重新装了一批摄影剪辑软件&#xff0c;在使用过程中发现 PS2022 版本一但导入图片就卡死闪退。起初我以为是版本不兼容问题&#xff0c;但是问了一下对应的朋友他们并未出现这种情况。后面我就从百度中开始捞答案&#xff0c…

适用于平坦草原的近地层以上风廓线推算方法

目录 引言1 数据观测和处理1.1 观测实验和仪器1.2 数据处理 引言 本文研究平坦草原近地层之上的风廓线特征&#xff0c;尤其是不同稳定度情况下风随高度的变化&#xff1b;得到适用于本地的粗糙度、边界层高度和地转风的估测方法。 在上述研究的基础上&#xff0c;本文用上述…

如何快速的阅读一本书

B站&#xff1a;【读书方法】读不进&#xff1f;记不住&#xff1f;5分钟教你如何快速高效读书 | 读书会犯的5大错误&#xff01; 1 看着书皮&#xff0c;思考一下自己为什么读这本书&#xff0c;是为了解决什么问题。 2 要看目录&#xff0c;根据目录看一下这本书能不能解决…

0002Java程序设计-SSM协同过滤算法的新闻推荐系统

摘 要 “互联网”的战略实施后&#xff0c;很多行业的信息化水平都有了很大的提升。但是目前很多行业的管理仍是通过人工管理的方式进行&#xff0c;需要在各个岗位投入大量的人力进行很多重复性工作&#xff0c;使得对人力物力造成诸多浪费&#xff0c;工作效率不高等情况&am…

FPGA时序约束--实战篇(读懂Vivado时序报告)

目录 一、新建工程 二、时序报告分析 1、打开时序报告界面 2、时序报告界面介绍 3、时序路径分析 三、总结 FPGA开发过程中&#xff0c;vivado和quartus等开发软件都会提供时序报告&#xff0c;以方便开发者判断自己的工程时序是否满足时序要求。 本文将详细介绍如何读懂…

VLAN基础知识3_VLAN间三层通信(VLANIF接口)

目录 1.VLAN间三层通信简介 2.VLAN间三层通信方式 3.VLANIF接口介绍 4.基于VLANIF接口VLAN间三层通信原理 5.VLAN间三层通信实验 5.1 常用配置命令 5.2 配置步骤 5.3 实验效果 1.VLAN间三层通信简介 VLAN间三层通信是指在VLAN网络中&#xff0c;不同VLAN之间进行IP通信…

python也可以使用克里金插值算法吗?

挪威大陆架的声学压缩慢度测量的空间变化 在处理地质和岩石物理数据时&#xff0c;我们通常希望了解这些数据在我们的地区是如何变化的。我们可以做到这一点的方法之一是对我们的实际测量值进行网格化&#xff0c;并推断这些值。 进行这种外推的一种特殊方法是克里金法&#xf…

三阶魔方有多少种状态

魔方有 3 种不同的方块&#xff0c;分别为角块&#xff08;8 个&#xff0c;每个角块有三种颜色&#xff09;&#xff0c;棱块&#xff08;12 个&#xff0c;每个棱块有两种颜色&#xff09;与中心块&#xff08;6 个&#xff0c;每个中心块有一种颜色&#xff09;。 魔方总共…

每天学一点知识有用吗

在探索如何学习的路上&#xff0c;我注意到了基于微习惯的学习方式&#xff0c;比如每天在用十分钟的时间练习下普通话&#xff0c;或者每天写500字的总结。 我简单回顾一下&#xff1a; 这种方法虽然颇受欢迎&#xff0c;但是它限制了你可以尝试的活动种类&#xff0c;有时候…

深度学习(24)——YOLO系列(4)

深度学习&#xff08;24&#xff09;——YOLO系列&#xff08;4&#xff09; 文章目录 深度学习&#xff08;24&#xff09;——YOLO系列&#xff08;4&#xff09;1. dataset准备&#xff08;1&#xff09;数据详解&#xff08;2&#xff09;dataset&#xff08;3&#xff09;…

广告数仓:全流程调度

系列文章目录 广告数仓&#xff1a;采集通道创建 广告数仓&#xff1a;数仓搭建 广告数仓&#xff1a;数仓搭建(二) 广告数仓&#xff1a;全流程调度 文章目录 系列文章目录前言一、ClickHouse安装1.修改环境2.安装依赖3.单机安装4.修改配置文件5.启动clickhouse6.创建需要的数…

012-从零搭建微服务-接口文档(二)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源码地址&#xff08;前端&#xff09;&#xff1a;https://gitee.com/csps…

统一拦截--过滤器Filter

1.过滤器Filter 1. 概述 概念: Filter过滤器&#xff0c;是JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来&#xff0c;从而实现一些特殊的功能。过滤器一般完成一些通用的操作&#xff0c;比如:登录校验、统一编码处理、敏感字符处理等…

Tcp协议的十大特性详解+示例

前言 之前我们简单了解了一下Tcp是什么及它的套接字如何使用:基于UDP和TCP套接字实现简单的回显客户端服务器程序_Crystal_bit的博客-CSDN博客 因为要给大家介绍Tcp的十大特性&#xff0c;所以这里给出Tcp报头结构&#xff1a; 目录 1. 确认应答 2. 超时重传 3. 连接管理 3…