MongoDB语法及MongoTemplate用法
文章目录
- 概念
- 操作数据库语法
- 数据库及文档操作
- 文档操作
- 整合springboot的MongoTemplate用法
- springboot配置
- 插入
- 删除
- 更新
- 查询
概念
1.MongoDB 是一个文档数据库,数据以 BSON 方式存储(类似于json)
2.文档(Document):类似于mysql的一行数据
3.集合(Collection):类似于mysql的一张表
4.数据库(Database):一个数据库中可以有多个集合
5.主键,MongoDB自动将“_id”字段设置为主键,id会自动生成
6.不支持表连接(join)
7.MongoDB的文档不能有重复的键
8.文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
9.以下划线""开头的键是保留的(不是严格要求的)。
10.常用数据类型(不止这些):
String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean 布尔值。用于存储布尔值(真/假)。
Double 双精度浮点值。用于存储浮点值。
Object 用于内嵌文档。
Null 用于创建空值。
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
操作数据库语法
数据库及文档操作
# 展示当前使用数据库
db
# 整个mongo状态
db.stats();
# 指定使用数据库,随后如果想这个库中插入入数据则会创建
use test
# 随便指定一个集合名称并插入一条数据便会创建集合并插入
db.a.insert({name: "zs"
})// 新建一个test库,库中新建一个a集合,集合中插入一条数据
文档操作
# 新增一个
db.collection.insertOne({name: "John",age: 30
})
# 新增多个
db.collection.insertMany([{name: "Alice", age: 25},{name: "Bob", age: 28}
])# 删一个
db.collection.deleteOne({name: "John"})
# 删多个
db.collection.deleteMany({age: {$lt: 30}})# 修改一个
db.collection.updateOne({name: "John"}, // 查询条件{$set: {age: 31}}, // 更新操作{upsert: true} // 如果文档不存在,则插入新文档
)
# 修改多个
db.collection.updateMany({name: "John"}, // 查询条件{$set: {age: 31}}, // 更新操作{upsert: true} // 如果文档不存在,则插入新文档
)# 查
// 查所有
db.a.find()
// 条件查询// && 查询name=123并且age=18的文档
db.a.find({name : "fs", age : 18})
// != username不为joe的文档
db.a.find({"username" : {"$ne" : "joe"}})
// or ticket_no为725或winner为true
db.users.find({"$or" : [{"ticket_no" : 725}, {"winner" : true}]}) //指定返回字段
// name为fs,但只返回name和age字段
db.a.find({name : "fs"}, {"name" : 1, "age" : 1})
// name为fs,但不返回name和age字段
db.a.find({name : "fs"}, {name : 0, age : 0})// in / not in
//ticket_no值为725, 542, 390
db.a.find({"ticket_no" : {"$in" : [725, 542, 390]}})
//ticket_no值不为725, 542, 390
db.a.find({"ticket_no" : {"$nin" : [725, 542, 390]}}) // id_num除以 5 的余数等于 1 的文档
db.users.find({"id_num" : {"$mod" : [5, 1]}}) select * from users where (id_num mod 5) = 1// not age 不等于27
db.users.find({"$not": {"age" : 27}})// username = null 且 文档中存在username字段
db.users.find({"username" : {"$in" : [null], "$exists" : true}})// object
//嵌套查询 name对象的first为Joe,name对象的last为Schmoe
db.people.find({ "name.first": "Joe", "name.": "Schmoe" })// array
// 对数组的查询, 字段fruit中,既包含"apple",又包含"banana"的纪录
db.food.find({fruit : {$all : ["apple", "banana"]}})
// 对数组的查询, 查询数组元素个数是3的记录,$size前面无法和其他的操作符复合使用
db.food.find({"fruit" : {"$size" : 3}})
//文档的 comments 数组中必须包含至少一个子文档,该子文档满足:author 为 "joe"。score 大于等于 5。
db.blog.find({"comments": {"$elemMatch": {"author": "joe","score": { "$gte": 5 }}}
})//按x升序排,-1则降序,获取排序后的第 11 条记录(基于 0 索引,即跳过前 10 条记录后获取第 1 条记录)。
db.foo.find().sort({"x" : 1}).limit(1).skip(10);//分组
db.sales.aggregate([{$group: {_id: "$category",count: { $sum: 1 }, // 商品数量totalPrice: { $sum: "$price" }, // 总价格avgPrice: { $avg: "$price" }, // 平均价格maxPrice: { $max: "$price" } // 最高价格}}
])
// 分组返回结果
[{ "_id": "electronics", "count": 3, "totalPrice": 450, "avgPrice": 150, "maxPrice": 200 },{ "_id": "clothing", "count": 2, "totalPrice": 130, "avgPrice": 65, "maxPrice": 80 }
]
整合springboot的MongoTemplate用法
springboot配置
引入maven依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>
// yml配置
spring:data:mongodb:host: 127.0.0.1port: 27017database: test# 默认没有,有的可以加上#username: admin# 默认没有,有的可以加上#password: 123456
插入
private void insert() {mongoTemplate.insert(new UserInfo());mongoTemplate.insert(new UserInfo(), "userInfo");mongoTemplate.save(new UserInfo());}
删除
private void remove() {mongoTemplate.remove(new UserInfo());DeleteResult deleteResult = mongoTemplate.remove(new UserInfo(), "userInfo");// 是否执行成功deleteResult.wasAcknowledged();// 删除数量deleteResult.getDeletedCount();}
更新
private void update() {// 原子操作Update update = new Update();update.inc("number", 1);// 批量更新mongoTemplate.updateMulti(new Query(), update, UserInfo.class);// 更新第一条mongoTemplate.updateFirst(new Query(), update, UserInfo.class);// 更新数据, 如果不存在就插入UpdateResult updateResult = mongoTemplate.upsert(new Query(), update, UserInfo.class);// 是否执行成功updateResult.wasAcknowledged();// 匹配到的数量updateResult.getMatchedCount();// 更新数量updateResult.getModifiedCount();// 插入新数据的idBsonValue upsertedId = updateResult.getUpsertedId();}
查询
// 精确查询 { "username" : "admin" } 初始化 criteria 实例的两种方法Criteria criteria = Criteria.where("username").is("admin");Criteria cri = new Criteria("username").is("admin");// 不等于查询 { "username" : { $ne : "admin" } }Criteria ne = Criteria.where("username").ne("admin");// 模糊查询 { "username" : /admin/ }Criteria regex = Criteria.where("username").regex("^.*" + "admin" + ".*$");// and 查询 { "username" : "admin", "phoneNumber" : "10086" }Criteria and = criteria.and("phoneNumber").is("10086");and = new Criteria().andOperator(Criteria.where("username").is("admin"),Criteria.where("phoneNumber").is("10086"));// or 查询 $or:[ { "username" : "admin" }, { "username" : "anonymous" } ]Criteria or = criteria.orOperator(Criteria.where("username").is("admin"),Criteria.where("username").is("anonymous"));// in 查询 { "username" : { $in: ["admin", "anonymous"] } }Criteria in = Criteria.where("username").in(Lists.newArrayList("admin", "anonymous"));// nin 查询 { "username" : { $nin: ["admin", "anonymous"] } }Criteria nin = Criteria.where("username").nin(Lists.newArrayList("admin", "anonymous"));// lt/lte 比较查询// 小于等于 { "crtDateTime": { $lte: ISODate("2001-01-01T00:00:00.000+08:00") } }Criteria lte = Criteria.where("crtDateTime").lte(LocalDateTime.now());// { "age": { $lte: 18 } }lte = Criteria.where("age").lte(18);// 小于 { "crtDateTime": {$lt: ISODate("2001-01-01T00:00:00.000+08:00") } }Criteria lt = Criteria.where("crtDateTime").lt(LocalDateTime.now());// { "age": { $lt: 18 } }lt = Criteria.where("age").lt(18);// gt/gte 比较查询// 大于等于 { "crtDateTime": {$gte: ISODate("2001-01-01T00:00:00.000+08:00") } }Criteria gte = Criteria.where("crtDateTime").gte(LocalDateTime.now());// { "age": { $gte: 18 } }gte = Criteria.where("age").gte(18);// 大于 { "crtDateTime": {$gt: ISODate("2001-01-01T00:00:00.000+08:00") } }Criteria gt = Criteria.where("crtDateTime").gt(LocalDateTime.now());// { "age": { $gt: 18 } }gt = Criteria.where("age").gt(18);// 查询内嵌文档 { "usernameList" : { $elemMatch: { "username" : "admin" } } }Criteria elemMatch = Criteria.where("usernameList").elemMatch(Criteria.where("username").is("admin"));// api 中无具体接口的, 使用 document 拼接语句查询 { $expr : { $ne : [ "$A", "$B" ] } }Criteria andDocumentStructureMatches = criteria.andDocumentStructureMatches(() ->new Document().append("$expr", new Document("$ne", List.of("$A", "$B"))));private void query() {// 组装查询条件(参数 Criteria 的详细用法见 criteriaUsageSample())Query query = new Query(Criteria.where("username").is("admin"));// 查询唯一一条满足条件的数据(如果满足条件的数据多于1条,会报错)UserInfo one = mongoTemplate.findOne(query, UserInfo.class);// 查询满足条件的数据列表List<UserInfo> list = mongoTemplate.find(query, UserInfo.class);// 查询所有记录List<UserInfo> all = mongoTemplate.findAll(UserInfo.class);// 根据 filed 去重查询List<UserInfo> distinctList = mongoTemplate.findDistinct(query, "username", UserInfo.class, UserInfo.class);// 查询总数long count = mongoTemplate.count(query, UserInfo.class);}
参考:https://juejin.cn/post/7162094909045309470
相关文章:
MongoDB语法及MongoTemplate用法
文章目录 概念操作数据库语法数据库及文档操作文档操作 整合springboot的MongoTemplate用法springboot配置插入删除更新查询 概念 1.MongoDB 是一个文档数据库,数据以 BSON 方式存储(类似于json) 2.文档(Document)&am…...
【git reset】本地下载特定历史提交哈希值的github文件【未联网服务器】进行git reset操作
本地电脑下载git文件,并进行git reset操作 问题描述:解决方法:方法1:直接下载特定版本的github压缩包。方法二: 在本地windows电脑上安装git工具进行git reset版本回退,之后上传相应版本的压缩包到服务器上…...
【开源安全保护】如何安装JumpServer堡垒机
【开源安全保护】如何安装JumpServer堡垒机 什么是堡垒机 大家好,我是星哥,今天我以前来认识堡垒机 堡垒机(Bastion Host),也称为跳板机(Jump Server),是指在计算机网络中&#x…...
log4j漏洞复现--vulhub靶场
声明:学习过程参考了同站的B1g0rang大佬的文章 Web网络安全-----Log4j高危漏洞原理及修复(B1g0rang) CVE-2021-44228 RCE漏洞 Log4j 即 log for java(java的日志) ,是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输…...
K8s面试系列:K8s常用 API 资源总结速记
写在前面 博文内容为 K8s 中常用的API 资源简单总结适合对K8s 有基本认知,温习,面试准备的小伙伴内容涉及:API 资源组成 ,SSA 和 CSA 资源操作方式,以及下面资源类别简单描述 工作负载:Deployments,StatefulSets,HorizontalPodAutoscaler (HPA)…服务: Service,Ingress,E…...
汽车免拆案例 | 2007款宝马650i车发动机偶尔无法起动
故障现象 一辆2007款宝马650i车,搭载N62B48B发动机,累计行驶里程约为26万km。车主反映,发动机偶尔无法起动,故障频率较低,十几天出现1 次,且故障出现时起动机不工作。 故障诊断 接车后试车,…...
前端(三)html标签(2)
html标签(2) 文章目录 html标签(2)一、列表标签二、表格三、form表单 一、列表标签 html中的列表分为无序列表、有序列表和自定义列表。 <!--无序列表的使用--> <!--pycharm中可以用ul>li*3tab的快捷键快速生成无序列表--> <ul><li>秒杀</li&g…...
D91【python 接口自动化学习】- pytest基础用法
day91 pytest的setup,setdown详解(三) 学习日期:20241207 学习目标:pytest基础用法 -- pytest的setup,setdown详解(三) 学习笔记: setup、teardown详解(三…...
云桌面:云计算桌面
目录 云桌面的定义和核心概念 技术架构详解 主流架构详解 管理成本分析 安全性措施 应用场景详解 云桌面的定义和核心概念 云桌面是一种通过云计算技术提供的虚拟桌面服务,它允许用户通过网络访问远程服务器上的虚拟机,这些虚拟机为用户提供了一个…...
Word处理表格的一些宏
目录 1、表格首行居中2、表格内容靠左上下居中(排除首行) 1、表格首行居中 说明: 遇到错误将进行捕获,然后继续处理下一个表格 宏: Sub 表格首行居中()Dim tbl As tableOn Error Resume Next 错误时继续执行下一个…...
Linux网络编程---本地套接字
1.概述 本地套接字 1:作用:本地的进程间通信 2.有关系的进程间通信 3.没有关系的进程间的通信 本地套结字实现流程和网络套结字实现相似,一般采用tcp 二.通信流程 本地套结字通信的流程:1.服务器端:1.1 int fd socket(AF_UNIX/AF_LOCAL,…...
C#自动验证发票真假的程序
C#自动验证发票真假的程序 using Microsoft.Azure.CognitiveServices.Vision.ComputerVision; using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models; using System; using System.IO; using System.Threading.Tasks;namespace InvoiceValidation {class Pr…...
后端技术进阶知识总结
前端开发、后端开发、AI算法与应用等技术进阶知识总结 前言1.前端开发2.后端开发3.AI算法3.1 Studio级别的AI工具使用 前言 本文不记录基础性问题和详细解决方案。只记录key idea。 1.前端开发 2.后端开发 依赖注入(Dependency Injection,简称DI&…...
opencv复习
目录 1.core 1.图像变换 1.1 affine仿射变换 1.2 透视变换 2.四元数(旋转) 2.1 轴角转四元数 2.2 旋转矩阵转四元数 2.3 欧拉角转旋转矩阵 2.4 四元数转旋转矩阵 2.5 四元数用eigen用的比较多 2. imgproc. Image Processing 2.1 bilateralF…...
【Unity高级】在编辑器中如何让物体围绕一个点旋转固定角度
本文介绍如何在编辑器里让物体围绕一个点旋转固定角度,比如上图里的Cube是围绕白色圆盘的中心旋转45度的。 目标: 创建一个在 Unity 编辑器中使用的旋转工具,使开发者能够在编辑模式下快速旋转一个物体。 实现思路: 编辑模式下…...
通过IP远程连接MySQL服务时不允许连接到这个MySQL服务器
当你在连接Mysql时报这个错误时 is not allowed to connect to this MySQL server,意思是 MySQL 服务器不允许来自 IP 地址的连接。这通常是由于 MySQL 服务器的访问控制列表(ACL)限制了特定主机的连接。 要解决这个问题,你需要授…...
试题转excel;pdf转excel;试卷转Excel,word试题转excel
一、问题描述 一名教师朋友,偶尔会需要整理一些高质量的题目到excel中 以往都是手动复制搬运,几百道题几乎需要一个下午的时间 关键这些事,枯燥无聊费眼睛,实在是看起来就很蠢的工作 就想着做一个工具,可以自动处理…...
wordpress网站使用Linux宝塔面板和SQL命令行导入导出超过50M限制的数据库
wordpress网站使用Linux宝塔面板添加mysql数据库,使用phpMyAdmin工具导入sql数据库文件,会有最大限制50M。即使把sql数据库文件压缩为gzip或zip压缩包,压缩包也超过50M,该怎么办?怎样导入超过50M数据库呢? …...
VCP-CLIP A visual context prompting modelfor zero-shot anomaly segmentation
GitHub - xiaozhen228/VCP-CLIP: (ECCV 2024) VCP-CLIP: A visual context prompting model for zero-shot anomaly segmentation 需要构建正样本,异常样本,以及对应的Mask...
【原生js案例】webApp实现鼠标移入移出相册放大缩小动画
图片相册这种动画效果也很常见,在我们的网站上。鼠标滑入放大图片,滑出就恢复原来的大小。现在我们使用运动定时器来实现这种滑动效果。 感兴趣的可以关注下我的系列课程【webApp之h5端实战】,里面有大量的css3动画效果制作原生知识分析&…...
杂谈随笔-关于unity开发游戏
最近有在做unity的游戏开发,都是自学,甚至没有完整的课程体系…… 在犹豫要不要出系列教程,帮助新手快速入门的同时算是巩固一下基础知识。 那这篇文章先谈谈我对于引擎开发游戏的一些小观点,算是做了这么十几个星期的微不足道的…...
base64转file文件对象
1.base64转file文件对象 //将base64转换为文件 dataURLtoFile(dataurl, filename) { var arr dataurl.split(,),mime arr[0].match(/:(.*?);/)[1],bstr atob(arr[1]),n bstr.length,u8arr new Uint8Array(n);while (n--) {u8arr[n] bstr.charCodeAt(n);}return new Fil…...
【jvm】为什么要有GC
目录 1. 自动内存管理2. 提升程序稳定性3. 优化性能4. 跨平台能力5. 分代回收策略 1. 自动内存管理 1.JVM中的GC机制负责自动管理内存,这意味着开发人员不需要手动分配和释放内存。2.这一特性大大简化了Java程序的内存管理,降低了内存泄漏和内存溢出等问…...
开发指南085-大号版elementUI
ElementUI有些地方显示实在太小,不方便操作,需要放大: 1、el-dialog的标题栏那个关闭符号 使用如下方法放大 ::v-deep .el-dialog__headerbtn { font-size: 40px; font-weight: 700; top: 0px; } 2、el-table-column 设置sor…...
#渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit(5)进阶模式-MITM中间人代理与劫持(下)
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
使用WebStorm开发Vue3项目
记录一下使用WebStorm开发Vu3项目时的配置 现在WebStorm可以个人免费使用啦!?? 基本配置 打包工具:Vite 前端框架:ElementPlus 开发语言:Vue3、TypeScript、Sass 代码检查:ESLint、Prettier IDE:WebSt…...
Mac 录制电脑系统内的声音的具体方法?
1.第一步:下载BlackHole 软件 方式1:BlackHole官方下载地址 方式2: 百度云下载 提取码: n5dp 2.第二步:安装BlackHole 双击下载好的BlackHole安装包,安装默认提示安装。 3.第三步:在应用程序中找到音频…...
计算机网络
1.网络协议是什么? 在计算机网络要做到有条不紊地交换数据,就必须遵守一些约定好的规则,比如交换数据地格式,是否需要发送一个应答信息。这些规则被称为网络协议。 分层结构 应用层:为计算机用户提供服务表示层&…...
爬取某市KFC餐厅信息(POST请求+PYMYSQL)
# 简介 本教程将指导您如何使用Python爬取石家庄市的KFC门店信息,并将这些信息存储到MySQL数据库中。我们将使用requests库来发送网络请求,pymysql库来操作MySQL数据库。 环境准备 在开始之前,请确保您已经安装了以下Python库:…...
109.【C语言】数据结构之二叉树层序遍历
目录 1.知识回顾 2.代码实现 准备工作 LevelOrder函数 代码框架 关键代码 3.执行结果 1.知识回顾 层序遍历参见106.【C语言】数据结构之二叉树的三种递归遍历方式文章 截取的部分内容 定义:按层的方式遍历(,设n为树的深度,h1-->h2-->h3-->...-->hn) 以下面…...
Java转C之内存管理
从 Java 转向 C 语言开发,内存管理和指针是两个核心且关键的概念。这些概念在 Java 中被抽象和自动化处理,而在 C 语言中则需要开发者手动管理和操作。 目录 内存管理概述指针基础 指针的定义与初始化地址运算符 & 和解引用运算符 *指针运算 动态内…...
共享内存和信号量
一、共享内存原理 1、基础前提 共享内存是为了进程之间通信服务的。进程间的通信的核心是要让两个不同的进程看到同一份资源。之前的匿名管道通过父子进程继承的关系,让父子进程看到同一份资源,进而进行通信;命名管道则是通过唯一的路径让两…...
SED命令
基本用法: sed命令具体应用: 1.删除第2-5行 nl regular_express.txt | sed 2d结果: 2.在第二行之后新增两行,分别为"drink tea…" 和"drink beer?" nl regular_express.txt | sed 2 a\ drink tea...\…...
洛谷 P6368 [COCI2006-2007#6] MAGIJA C语言
题目:https://www.luogu.com.cn/problem/P6368 题目背景 知名魔术师 AlDimi Kartimi 需要你帮助他来设计他扑克牌的背面图案。 题目描述 众所周知,扑克牌的背面是一个矩形,通过做两边的中垂线可以将矩形分成相等的四部分。 AlDimi Karti…...
TDesign:Picker 选择器
Picker 选择器 API文档地址 单列选择器用法 /// view onTap:(){TDPicker.showMultiPicker(context,data: [controller.coinList],title: ,rightTextStyle: TextStyle(color: AppColors.ColorMain),onConfirm: (selected) {controller.onTapCoin(selected);Navigator.of(contex…...
LLMs之Agent之Lares:Lares的简介、安装和使用方法、案例应用之详细攻略
LLMs之Agent之Lares:Lares的简介、安装和使用方法、案例应用之详细攻略 导读:这篇博文介绍了 Lares,一个由简单的 AI 代理驱动的智能家居助手模拟器,它展现出令人惊讶的解决问题能力。 >> 背景痛点:每天都有新的…...
实验3-实时数据流处理-Flink
1.前期准备 (1)Flink基础环境安装 参考文章: 利用docker-compose来搭建flink集群-CSDN博客 显示为这样就成功了 (2)把docker,docker-compose,kafka集群安装配置好 参考文章: …...
axios笔记
一、axios是什么 前端最流行的ajax请求库 二、json-server json-server可以帮助我们搭建http服务 为什么要搭建http服务? :是因为我们用axios的时候,需要向服务端发送请求 我们需要服务端这样一个角色,来与axios结合做实践 1.…...
python拆分Excel文件
按Sheet拆分Excel 或 按照某一列的不同值拆分Excel。文档样式如下: 结果:红色是按照Sheet名拆出的,蓝色和橙色是某个Sheet按照某列的不同值拆分的。 代码: # -*- coding: utf-8 -*- """ 拆分excel文件——按照…...
使用IntelliJ IDEA开发Gradle插件并发布到本地
博主所用软件版本为: IntelliJ IDEA 2024.1.4 (Community Edition) Android Studio Ladybug Feature Drop | 2024.2.2 Beta 1 1、制作gradle插件(IntelliJ IDEA 2024.1.4) 新建groovy工程,File–>New–>Project… 右键点…...
C# 通过smtp发送邮件(配置好了参数可以直接用)
可以直接用 using System; using System.Net; using System.Net.Mail;class EmailSender {// 发送邮件的函数,接收SMTP配置作为参数public static void SendEmail(string smtpServer, int smtpPort, string senderEmail, string senderPassword, string subject, s…...
【数据结构】栈和队列
目录 1.栈 1.1.栈的概念及结构 1.2.栈的实现 2.队列 2.1.队列的概念及结构 2.2.队列的实现 3.运用栈理解一道题 4.使用两个队列实现一个栈 1.栈 1.1.栈的概念及结构 首先,我们来了解一种新的数据结构——栈。栈是一种特殊的线性表,其只允许在固…...
使用 Spring Doc 为 Spring REST API 生成 OpenAPI 3.0 文档
Spring Boot 3 整合 springdoc-openapi 概述 springdoc-openapi 是一个用于自动生成 OpenAPI 3.0 文档的库,它支持与 Spring Boot 无缝集成。通过这个库,你可以轻松地生成和展示 RESTful API 的文档,并且可以使用 Swagger UI 或 ReDoc 进行…...
网络数据库安全和数据安全概述
1、数据安全的三要素 完整性,机密性,可用性 2、安全技术和措施 数据完整性技术、数据备份和恢复技术、数据加密技术、访问控制技术、用户管理和身份验证技术 3、数据库安全 数据库安全是指数据库的任何部分都不允许受到侵害,或未经授权的…...
STM32F10X与GD32工程创建区别
1.宏定义区别 GD32虽然与STM32F10X的管脚兼容,但是用keil创建工程时,GD32在选择芯片型号的时候就已经自己定义了宏。STM32F10x需要手动定义宏。在以下界面定义用到的单片机。 2.时钟区别。GD32最大时钟为120Mhz,所用的hal库里面的系统初始化会初始化时钟…...
cmakelist使用总结
支持能编译成在不同系统上运行程序的方法 我们代码就一份,但有时需要编译成arm32,有时需要编译成x86_64,或更多 1、首先先将代码定义一个名称: #将所有的源文件列为一个集合,集合名字叫做SRC_LISTS set(SRC_LISTS main.cpp A.cpp…...
【论文阅读】国际开源发展经验及其对我国开源创新体系建设的启示
作者:包云岗老师 包云岗老师是计算机体系结构方向的大牛,推动了体系结构方面的开源事业! 欢迎对本栏目感兴趣的人学习"一生一芯"~ 学习体会: 承接前文,唐志敏老师讲到已有的软硬件生态系统和开发成本制约了对新结构的探…...
React 初学者指南:从零开始构建第一个 React 应用
React 是一个用于构建用户界面的 JavaScript 库,它能够让我们高效地构建复杂的 UI。对于 React 初学者来说,最重要的就是理解它的基本概念以及如何开始使用它。本文将引导你从零开始构建你的第一个 React 应用 1.1. 安装 React 环境 首先,…...
力扣93题:复原 IP 地址
力扣93题:复原 IP 地址(C语言实现详解) 题目描述 给定一个只包含数字的字符串 s,复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址需满足以下条件: IP 地址由四个整数(每个整数位于 0 到 255 之间…...
字符编码发展历史
文章目录 发展历史- ASCII- ISO-8859- Unicode- UTF系列- UTF-8- UTF-16- UTF-32 - 中文编码- GB2312- GBK- GB18030 - 其他编码 归纳总结 发展历史 计算机的基础是二进制数字(0和1)。虽然人类日常使用的是各种字符(如字母、数字、符号等&am…...