MongoDB 数据类型
目录
BSON 类型
二进制数据(Binary Data)
ObjectId
ObjectId定义
文档中的ObjectId
ObjectId的单调性
字符串(String)
时间戳(Timestamps)
日期(Date)
BSON类型的排序
数值类型的比较
字符串比较
数组的比较
对象的比较
日期和时间戳
不存在字段
二进制数据
Mongodb是文档型数据库,文档表示一条数据记录。文档由键值对构成。
//一个文档示例
{"key_1": value_1,"key_2": value_2...
}
其中,键值对中的键,或叫做字段名称,是由字符类型来定义的。而值的类型,是BSON类型中的某一个类型。
BSON 类型
BSON是一个二进制序列格式,用来保存文档,实现在mongodb中的远程调用。Mongodb支持不同的BSON类型,现在可用的BSON类型,其数字代码,字符识别码列在下表中。
类型 | 数字代码 | 别名 | 中文名 |
Double | 1 | "double" | 浮点型 |
String | 2 | "string" | 字符串 |
Object | 3 | "object" | 对象 |
Array | 4 | "array" | 数组 |
Binary data | 5 | "binData" | 二进制数据 |
ObjectId | 7 | "objectId" | 对象id |
Boolean | 8 | "bool" | 布尔 |
Date | 9 | "date" | 日期 |
Null | 10 | "null" | 空值 |
Regular Expression | 11 | "regex" | 正则表达式 |
JavaScript | 13 | "javascript" | javascript脚本 |
32-bit Integer | 16 | "int" | 整型 |
Timestamp | 17 | "timestamp" | 时间戳 |
64-bit Integer | 18 | "long" | 长整型 |
Decimal128 | 19 | "decimal" | 小数 |
Min Key | -1 | "minKey" | 最小值 |
Max Key | 127 | "maxKey" | 最大值 |
在Mongodb中,可以使用数字代码和别名作为过滤条件查询文档。在聚合操作中,可以获取字段类型的别名。或者根据返回的字段类型实现不同的逻辑。
如查询字段类型是数组类型的数据
//使用字符串"array"和数字类型4查询字段类型是数组的数据
db.collection.find({<field_name>: {$type: "array"}})
db.collection.find({<field_name>: {$type: 4}})
二进制数据(Binary Data)
BSON的二进制数据由字节数组组成。每一个二进制数据也有一个标志解析二进制数据的子类型。下面表描述了子类型。
数字 | 子类型 |
0 | 通用二进制数据 |
1 | Function data |
2 | Binary(old) |
3 | UUID(old) |
4 | UUID |
5 | MD5加密 |
6 | 加密BSON数值 |
7 | 压缩时序数据 |
128 | 用户自定义 |
ObjectId
使用mongodb时 , 当集合中的文档没有_id字段时,会为文档自动生成一个ObjectId类型的_id。日常查询过程中,也能看到_id是ObjectId里带有一段字符串, 这个字符串代表什么意义,和其他类型的ID有什么相同或不同。本文研究mongodb官方文档,并通过实践来解释ObjectID这个数据类型。
ObjectId定义
ObjectId是一种小型的,几乎是唯一的,易于产生和排序的数据结构。长度是12个字节,由3部分组成
- 4个字节的时间戳,表明objectId的创建时间,以秒为单位的unix时间
- 5个字节的随机字符串,在运行机器上的进程中是唯一的
- 3个字节的增长计数器,初始值是一个随机数
其中时间戳和增长计数器与其他BSON类型不同,是按照高位优先排序。
如果使用数字类型来创建ObjectID, ObjectID中的时间戳,会被数字值来替代。
//使用数字类型定义3个ObjectID
db.inventory.insertMany([{part: 'AB307',_id: ObjectId(1)
},{part: 'AB307',_id: ObjectId(2)
},{part: 'AB307',_id: ObjectId(3)
}])// 产生的id中,数字类型替代了4个字节的时间戳
{"acknowledged" : true,"insertedId" : ObjectId("000000013e53cb5bc48f4e54")
}
{"acknowledged" : true,"insertedId" : ObjectId("000000023e53cb5bc48f4e55")
}
{"acknowledged" : true,"insertedId" : ObjectId("000000033e53cb5bc48f4e56")
}
上面代码的运行结果中可以看到,4个字节长度的00000001,00000002,00000003,替代了时间错。而后面3个字节长度的增长计数器,8f4e54,8f4e55,8f4e56在每一条新纪录插入时,都会增长。而中间3e53cb5bc4这个长度为5个字节的字符串,是由运行机器进程中随机产生的字符串。
时间戳+随机字符串+自增长字符串,保证了objectId的唯一性。
文档中的ObjectId
Mongodb的每一个文档都需要有唯一的_id字段作为主键。如果没有_id字段,mongodb自动添加一个ObjectId作为_id字段。这对于设置{upsert:true}的更新语句插入数据同样适用。
使用ObjectId作为_id字段的好处
- 在mongosh中,通过ObjectId.getTimestamp()方法,获取文档创建时间
//运行代码
ObjectId("655ef22e69185fac9ce3ce92").getTimestamp()
//获取创建时间
ISODate("2023-11-23T14:33:18.000+08:00")
- 按照_id排序,等价于按照文档创建时间排序
ObjectId的单调性
ObjectId虽然按照时间来产生,并带有随机数保证其唯一性。但objectId并不是单调的,受到两个因素影响
- 产生objectId仅仅以秒为单位,记录下来unix时间。当同一秒钟产生多个objectId时,并不能保证每一个objectid的排列顺序。
- 通过client产生的ObjectId, 其时间错可能与服务器时间不一致
字符串(String)
BSON类型的字符串是UTF-8格式的。各种语言连接mongodb时,通常都会使用UTF-8格式的字符串。这种格式保证了大部分语言的通用性。
时间戳(Timestamps)
BSON 的timestamps类型是一种内部使用的特殊格式。这种类型与常见的日期(Date)类型不同。timestamps类型是一个64位的数值
-
- 前面32位的unix时间,精确到秒
- 后32位的自增型操作数。表示在一秒内的操作数。
虽然BSON格式是小端序的,因此首先存储最低有效位,但在所有平台上,mongod实例总是在序数值之前比较time_t值,而不考虑端序。
在同一个mongodb运行实例中,timestamp值是唯一的。
在复制集中,oplog有一个时间类型的ts字段。这个字段使用timestamp类型表示操作时间。
当在文档中插入一个空的timestamp数值时,mongodb会将空的timestamp数字换成当前时间。但如果_id字段包含一个空的timestamp值时,mongodb不会替换空的timestamp.
db.test.insert({ts: new Timestamp(), _id: {ts: new Timestamp()}})
{"acknowledged" : true,"insertedId" : {"ts" : Timestamp(0, 0)}
}db.test.find()
{"_id" : {"ts" : Timestamp(0, 0) //_id字段中的时间戳未被替换},"ts" : Timestamp(1703731318, 1) //顶层字段的时间戳被替换成当前的操作时间
}
日期(Date)
日期类型是一个64位字符,表示了字1970年1月1日以来经过的毫秒数。日期时间是有符号的,负数表示1970年以前的时间。64位的字符,可以表示过去和现在共2.9亿年的时间。
var mydate1 = new Date()
var mydate2 = ISODate()
console.log(mydate1.toString())
console.log(mydate2.toString())
console.log(mydate1.getMonth())Thu Dec 28 2023 10:48:15 GMT+0800 (China Standard Time)
Thu Dec 28 2023 10:48:15 GMT+0800 (China Standard Time)
11
BSON类型的排序
在mongodb对BSON类型进行排序时,按照下面的类型进行排序。从小到大的顺序依次为
序号 | 类型 |
1 | MinKey |
2 | Null |
3 | Numbers(ints,longs,doubles,decimals) |
4 | String |
5 | Object |
6 | Array |
7 | BinData |
8 | ObjectId |
9 | Boolean |
10 | Date |
11 | Timestamp |
12 | RegularExpression |
13 | MaxKey |
这个排序怎样理解,不妨使用下面的测试用例来解释。插入13条各种类型的数据。当使用正序排列,即从小到大排列时,顺序从MinKey到MaxKey. 当使用倒序排列时,顺序相反。
db.test.insertMany([{value: MinKey()},{value: null},{value: 1},{value: "1"},{value: {a: 1}},{value: [1]},{value: new BinData(5,"1")},{value: ObjectId(1)},{value: true},{value: new Date()},{value: new Timestamp()},{value: /a/},{value: MaxKey()},])//正序排列
db.test.find().sort('value')
/* 1 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557ef"),"value" : MinKey()
},/* 2 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f0"),"value" : null
},/* 3 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f1"),"value" : 1
},/* 4 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f4"),"value" : [ 1 ]
},/* 5 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f2"),"value" : "1"
},/* 6 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f3"),"value" : {"a" : 1}
},/* 7 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f5"),"value" : MD5("")
},/* 8 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f6"),"value" : ObjectId("000000019ef5a82e298557ee")
},/* 9 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f7"),"value" : true
},/* 10 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f8"),"value" : ISODate("2023-12-28T11:04:43.958+08:00")
},/* 11 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f9"),"value" : Timestamp(1703732683, 1)
},/* 12 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557fa"),"value" : /a/
},/* 13 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557fb"),"value" : MaxKey()
}
//倒序排列
/* 1 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557fb"),"value" : MaxKey()
},/* 2 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557fa"),"value" : /a/
},/* 3 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f9"),"value" : Timestamp(1703732683, 1)
},/* 4 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f8"),"value" : ISODate("2023-12-28T11:04:43.958+08:00")
},/* 5 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f7"),"value" : true
},/* 6 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f6"),"value" : ObjectId("000000019ef5a82e298557ee")
},/* 7 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f5"),"value" : MD5("")
},/* 8 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f3"),"value" : {"a" : 1}
},/* 9 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f2"),"value" : "1"
},/* 10 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f1"),"value" : 1
},/* 11 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f4"),"value" : [ 1 ]
},/* 12 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557f0"),"value" : null
},/* 13 createdAt:12/28/2023, 11:04:43 AM*/
{"_id" : ObjectId("658ce5cb9ef5a82e298557ef"),"value" : MinKey()
}
数值类型的比较
mongodb比较数字类型时,int,long,double,decimal按照同一个类型进行比较。按照值大小进行排序。
字符串比较
默认字符串按照简单字节方法比较。即从第一个字符开始进行比较。当用户指定字符序时,mongodb比较字符串时,采用用户指定的字符序。
数组的比较
- 升序排列时,获取数组中最小的元素进行比较
- 降序排列时,比较数组中最大的元素
- 比较单元素数组与非数组数据时,mongodb会直接比较该数组中的元素和非数组元素值的大小。
- 空数组排列优先级别小于null或没有该字段的文档数据。
对象的比较
- 递归比较对象中的每一个键值对
- 字段类型相同时,比较字段名
- 字段名相同时,比较字段值
- 当前字段名,字段值都相同时,按照同样的方式比较下一个字段。字段较少的对象排列优先级小于字段多的对象。
日期和时间戳
日期排在时间错前
不存在字段
mongodb将不存在的字段看做空对象。即文档{ }与{a:null}的排列顺序相同
二进制数据
- 首先比较数据长度
- 数据长度相同时,比较子类型
- 数据长度和子类型相同时,按字节比较。
相关文章:
MongoDB 数据类型
目录 BSON 类型 二进制数据(Binary Data) ObjectId ObjectId定义 文档中的ObjectId ObjectId的单调性 字符串(String) 时间戳(Timestamps) 日期(Date) BSON类型的排序 数…...
Java 将 List 转换为 String常见方式
将 List 转换为 String的几种方式 使用 List的toString()方法将 List 转换为 String;结果前后会带有英文的中括号[],如:[1, 2, 3, 4, 5]使用Java8 stream流中的Collections.joining()方法,带有逗号分隔符或自定义分隔符将集合转成…...
Redis(认识NoSQL,认识redis,安装redis,redis桌面客户端,redis常见命令,redis的Java客户端)
文章目录 Redis快速入门1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启 1.4.Redis桌面客户端…...
idea 出现Cannot resolve symbol ‘springframework‘解决方法
Maven手动重新加载 1)File–>Invalidate Caches / Restart… 清理缓存,重启idea客户端 2)File–>Maven–>Reload project重新从maven中加载工程依赖的组件...
ubuntu22.04安装anacoda遇到的坑
这几天把用了3年的windows10换成了ubuntu22.04 各种环境都得配置,本文记录下遇到的坑。 1、anacoda在ubuntu上也可以用官方也提供了安装包,但是没有图形界面,需要以命令行的方式安装和运行配置 1.1 安装:官网下载后,…...
window的OPen方法,弹窗的特征
文章目录 一、介绍二、弹窗的特征 一、介绍 window.open() 方法是 JavaScript 中的一个内置方法,用于在浏览器中打开一个新的窗口或标签页。 语法: window.open(url, name, features, replace)二、弹窗的特征 open方法参数说明: 参数说明url要载入窗…...
DFS算法查找所有路径详解
DFS算法查找所有路径详解 算法介绍 深度优先搜索(Depth-First Search,DFS)是一种图遍历算法,它从起始节点开始,沿着一条路径尽可能深入,直到达到最深的节点,然后回溯到前一节点,继…...
单片机的存储、堆栈与程序执行方式
一、单片机存储区域 如图所示位STM32F103ZET6的参数: 单片机的ROM(内部FLASH):512KB,用来存放程序代码的空间。 单片机的RAM:64KB,一般都被分配为堆、栈、变量等的空间。 二、堆和栈的概念 …...
Web3开发成本和主要特性
多年来,技术不断进步,可帮助您的业务领先于竞争对手。如今,您可以看到许多更新和变化,使技术更加先进,对企业更加有用。到现在为止,web1.2和2.0比较流行,但是要知道web 3才是技术之父࿰…...
【数学建模美赛M奖速成系列】Matplotlib绘图技巧(一)
Matplotlib图像基础 写在前面1 基本绘图实例:sin、cos函数图2 plot()函数详解**kwargs参数: 3 matplotlib中绘图的默认配置4 设置图的横纵坐标的上下界5 设置横纵坐标上的记号6 调整图像的脊柱7 添加图例8 给一些特殊点加注释9 子图最后 写在前面 前面我…...
005、数据类型
1. 关于数据类型 Rust中,每个值都有其特定的数据类型,Rust会根据数据的类型来决定如何处理它们。 Rust是一门静态类型语言,它在编译程序的过程中就需要知道所有变量的具体类型。在大部分情况下,编译器可以根据我们如何绑定、使用变…...
软考网络工程师考试大纲(2018年最新版)
本书是全国计算机专业技术资格考试办公室组织编写的网络工程师考试大纲,本书除大纲内容外,还包括了人力资源和社会保障部、工业和信息化部的有关文件以及考试简介。 网络工程师考试大纲是针对本考试的计算机网络中级资格制定的。通过本考试的考生,可被用人单位择优聘任为工…...
【数据结构】栈【详解】
目录 栈的定义: 栈的声明与定义: 头文件的包含: 对栈的基本操作: 栈的初始化: 摧毁栈: 入栈: 编辑 出栈: 编辑 输出栈顶位置: 输出栈的当前大小: 判空操…...
CSS 纵向底部往上动画
<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ scale-up-ver-bottom: isAnimating }"><!-- 元素内容 --&g…...
常用的 MySQL 可视化客户端
数据库可视化客户端(GUI)让用户在和数据库进行交互时,能直观地查看、创建和修改对象,如:表、行和列。让数据库操作变得更方便了。 今天,我们来了解下目前市场上最常用的 MySQL 可视化客户端。 官方&#x…...
C#使用SyntaxTree获取.cs文件中的属性名和注释
有时候,我们可能需要获取.cs文件中的属性和对应的注释来生成一些代码,比如SQL查询什么的。 但使用正则匹配有时候会不准确。搜索了下,发现微软提供了代码解析的API。 具体如下两个方法: /// <summary> /// 获取所有属性和…...
基于价值认同的需求侧电能共享分布式交易策略(matlab完全复现)
目录 1 主要内容 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序完全复现《基于价值认同的需求侧电能共享分布式交易策略》,针对电能共享市场的交易机制进行研究,提出了基于价值认同的需求侧电能共享分布式交易策略,旨在降低电力市…...
门控循环单元(GRU)-多输入回归预测
目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分程序: 四、全部代码数据分享: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译…...
电池管理系统BMS中SOC算法通俗解析(二)
下面简单介绍下我们BMS保护板使用的SOC估算方法。我们算法的主要是针对电流积分法计算SOC的局限性进行改进: ●电池包第一次上电使用开路电压法估算SOC。第一次上电,根据电池包厂家给出的电压和剩余容量二维关系图大概估算出目前电池包的剩余容量即SOC。…...
YOLOv5改进 | 2023主干篇 | 华为最新VanillaNet主干替换Backbone实现大幅度长点
一、本文介绍 本文给大家来的改进机制是华为最新VanillaNet网络,其是今年最新推出的主干网络,VanillaNet是一种注重极简主义和效率的神经网络架构。它的设计简单,层数较少,避免了像深度架构和自注意力这样的复杂操作(需要注意的是…...
爬虫工作量由小到大的思维转变---<第三十三章 Scrapy Redis 23年8月5日后会遇到的bug)>
前言: 收到回复评论说,按照我之前文章写的: 爬虫工作量由小到大的思维转变---<第三十一章 Scrapy Redis 初启动/conn说明书)>-CSDN博客 在启动scrapy-redis后,往redis丢入url网址的时候遇到: TypeError: ExecutionEngine.crawl() got an unexpected …...
PostgreSQL | 概念 | 什么是OLTPOLAP?
什么是OLTP&OLAP? 大白话理解:业务系统都可以称作OLTP,基于业务系统产生的数据进行数据分析和决策的都可以称为OLAP。 OLTP OLTP( Online Transaction Processing)在线事务处理系统 用途: 用于支持日…...
2023年成都市中等职业学校学生技能大赛“网络搭建及应用”赛项竞赛样卷
2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 (总分1000分) 目录 2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 网络建设与调试项目(500分) 服务器搭建与运维项目(…...
Angular进阶之六:Progressive rendering
简介 Progressive Rendering 是一种提高 Web 应用性能的方法,允许页面在加载过程中逐步呈现,以提高用户体验。在本文中,我们将探讨如何在 Angular 中通过自定义指令实现 Progressive Rendering,特别是处理从服务器获取大量数据的…...
机器人中的数值优化之线性共轭梯度法
欢迎大家关注我的B站: 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 本文ppt来自深蓝学院《机器人中的数值优化》 目录 1.无约束优化方法对比 2.Hessian-vec product 3.线性共轭梯度方法的步长编辑 4.共轭梯度…...
嵌入式Linux C语言介绍
目录 一.前言 二.C语言的特点 一.前言 开发工具通常依赖于操作系统提供的各种功能和服务。许多开发工具都基于操作系统的API(应用程序接口)进行开发,这些API提供了文件处理、网络通信、图形界面等核心功能。没有操作系统的支持,…...
基于Java电影院票票务系统
基于Java电影院票票务系统 功能需求 1、用户登录与注册:用户可以通过系统注册账号并登录系统,方便进行购票和管理个人信息。 2、个人信息管理:用户可以查看和修改个人信息,包括姓名、联系方式等。 3、影片信息查询:…...
HarmonyOS应用开发实战—开箱即用的登录页面3【ArkTS】
文章目录 一.HarmonyOS应用开发实战—开箱即用的登录页面2【ArkTS】【鸿蒙专栏-31】1.1 项目背景1.2 ArkTS详解二.HarmonyOS应用开发实战—开箱即用的登录页面3【ArkTS】2.1 ArkTS页面源码2.2 代码解析2.3 心得一.HarmonyOS应用开发实战—开箱即用的登录页面2【ArkTS】【鸿蒙专…...
Unity坦克大战开发全流程——1)需求分析
实践项目:需求分析 该游戏共有三个主要部分:UI、数据储存、核心游戏逻辑,下面我们将从开始场景、游戏场景、结束场景三个角度切入进行分析。...
python练习2【题解///考点列出///错题改正】
一、单选题 【文件】 *1.【单选题】 ——文件:读取方法 下列哪个选项可以从文件中读取任意字节的内容?(C )A A.read() B.readline() C.readlines() D.以上全部 A\B\C三种方法都是可以读取文件中任意的字节内容的࿰…...
7.2 uvm_resource_db in UVM
uvm_resource_db是一个类型参数化 type-parameterized的类,它是资源数据库顶部的一个方便层(convenience layer)。这个便利层简化了对低级数据库的访问,并且没有添加新功能。因此,uvm_resource_db不是从uvm_resource类派生的。以下uvm_resour…...
洛谷——P3879 [TJOI2010] 阅读理解(STL:hash+set,c++)
文章目录 一、题目[TJOI2010] 阅读理解题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 二、题解基本思路:代码 一、题目 [TJOI2010] 阅读理解 题目描述 英语老师留了 N N N 篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典&am…...
Windows/Linux环境登入mysql、mysqldump命令等多方式解决方案之简易记录
Windows/Linux环境登入mysql、mysqldump命令等多方式解决方案之简易记录 之前发布过Window方式,这次结合以上主题,完善下Linux相关登入方式过程,纯属做个记录,有需要的朋友可以做个学习参考。 一、Windows环境提示“‘mysql’ 不是内部或外部命令,也不是可运行的程序或批…...
【基础】【Python网络爬虫】【13.免费代理与付费代理】(附大量案例代码)(建议收藏)
Python网络爬虫基础 一、免费代理1. 什么是代理IP2. 代理IP的类型3. 代理IP的作用4. 免费代理的潜在风险5. 免费代理网站 二、付费代理1. 找付费代理服务站点2. 生成获取代理的api接口3. python获取代理请求接口示例数据返回示例 4. 解决请求速率5. 品易代理使用注意事项代理添…...
【 YOLOv5】目标检测 YOLOv5 开源代码项目调试与讲解实战(3)-训练yolov5模型(本地)
训练yolov5模型(本地) 训练文件 train.py训练如下图 一些参数的设置weights:对于weight参数,可以往Default参数中填入的参数有 cfg:(缩写)cfg参数可以选择的网络模型 data对于data hyp 超参数epochs 训练多…...
fastApi 项目部署
方式一,Uvicorn部署 Run a Server Manually - Uvicorn - FastAPI 1,linux服务器安装 python>3.8 2,安装 uvicorn : pip install "uvicorn[standard]" 3,上传项目到服务器 main.py from typing imp…...
python操作mysql数据库
说明:这里仅仅为了演示python操作MySQL数据库,真实环境中,最好把CURD分别封装为对应的方法。并将这些方法在类中封装,体现python面向对象的特征。python链接MySQL数据库 建表 create database mydb; use mydb; create table EMP…...
Redis6.0 Client-Side缓存是什么
前言 Redis在其6.0版本中加入了Client-side caching的支持,开启该功能后,Redis可以将指定的key-value缓存在客户端侧,这样当客户端发起请求时,如果客户端侧存在缓存,则无需请求Redis Server端。 Why Client-side Cac…...
Leetcode—1572.矩阵对角线元素的和【简单】
2023每日刷题(七十三) Leetcode—1572.矩阵对角线元素的和 实现代码 class Solution { public:int diagonalSum(vector<vector<int>>& mat) {int n mat.size();if(n 1) {return mat[0][0];}int sum 0;int i 0, j n - 1;while(i &…...
基于SpringBoot的二手手机商城系统的设计与实现
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的二手手机商城系统的设计…...
OpenFeign相关面试题及答案
1、什么是OpenFeign,它如何简化远程服务调用? OpenFeign是一个声明式的Web服务客户端,它使得编写HTTP客户端变得更加容易。它属于Spring Cloud Netflix项目的一部分,可以与Spring Boot应用轻松集成。通过使用OpenFeign࿰…...
c盘扩容时,d盘无法删除卷问题
C盘扩容时,磁盘管理中D盘右键无法删除卷的原因 首先,D盘下文件夹为空,但是显示可用空间不是100%,经过排查,发现是虚拟内存设置在了D盘导致无法删除卷,这里只需要将虚拟内存放到其他盘,如E盘即可…...
NumPy 中级教程——广播(Broadcasting)
Python NumPy 中级教程:广播(Broadcasting) 在 NumPy 中,广播是一种强大的机制,它允许不同形状的数组在进行操作时,自动进行形状的调整,使得它们能够完成一致的运算。广播使得对数组的操作更加…...
python-39-flask+nginx+Gunicorn的组合应用
flask nginx Gunicorn 王炸 1 flasknginxgunicornsupervisor 1.1 myapp.py from flask import Flask app Flask(__name__)app.route("/") def test_link():return "the link is very good"if __name__"__main__":app.run()默认是5000端口…...
C#-CSC编译环境搭建
一.Microsoft .NET Framework 确保系统中安装Microsoft .NET Framework相关版本下载 .NET Framework 4.7 | 免费官方下载 (microsoft.com)https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/net47 二.编译环境搭建 已经集成编译工具csc.exe,归档至gitcode,实现us…...
【JVM】一文掌握JVM垃圾回收机制
作为Java程序员,除了业务逻辑以外,随着更深入的了解,都无法避免的会接触到JVM以及垃圾回收相关知识。JVM调优是一个听起来很可怕,实际上很简单的事。 感到可怕,是因为垃圾回收相关机制都在JVM的C++层实现,我们在Java开发中看不见摸不着;而实际很简单,是因为它说到底,也…...
【AIGC风格prompt】风格类绘画风格的提示词技巧
风格类绘画风格的提示词展示 主题:首先需要确定绘画的主题,例如动物、自然景观、人物等。 描述:根据主题提供详细的描述,包括颜色、情感、场景等。 绘画细节:描述绘画中的细节,例如表情、纹理、光影等。 场…...
vue exceljs json数据转excel
json数据转excel 有时候我们会遇到这样一个需求,就是将数据转成excel下载,这一般都是由后端来处理,使用插件poi轻松搞定。如果只有少量数据,那么能不能避免调用后端接口,前端直接处理呢? 答案是ÿ…...
Navicat for MySQL 创建函数——报错1418
解决方法 1查看是否开启了创建函数的功能 输入下面语句查看是否开启了创建函数的功能 show variables like %func%; 下面为创建函数功能为开启的查询结果 如果不是上面的结果可以用下面的语句修改为开启 set GLOBAL log_bin_trust_function_creatorstrue; //或 set GLOBAL …...
java球队信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 java Web球队信息管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5…...