当前位置: 首页 > news >正文

MongoDB介绍及使用教程

文章目录

    • 一、MongoDB介绍
    • 1. 什么是MongoDB
    • 2. 为什么要用MongoDB
    • 3. MongoDB的应用场景
    • 4. MongoDB基本概念
    • 二、MongoDB使用教程
    • 1.下载安装(Windows)
    • 2.MongoDB Conpass简单使用(选学)
    • 3.使用navicat连接MongoDB
    • 4.JAVA项目中使用MongoDB
    • (1)开启用户名密码验证
    • (2)整合SpringBoot项目

一、MongoDB介绍

1. 什么是MongoDB

MongoDB是一个文档数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB目前在数据库总排名第5,在NoSQL数据库排名首位,是当前最流行的数据库之一。
注意:这里所指文档并非我们一般理解的 PDF,WORD 文档,而是来自于“JSON Document”,以 JSON 为数据模型。

官方介绍详见:MongoDB官网

2. 为什么要用MongoDB

(1)数据结构非常松散,数据格式是BSON(Binary JSON) ,其结构是面向对象的而不是二维表,因此可以存储比较复杂的数据类型。
①数据模型与对象模型接近,开发代码量低 ②这样的数据模型有利于提供高读写的能力,增强吞吐量。
③数据模型因为是面向对象的,所以可以表示丰富的、有层级的数据结构,比如能把“评论”直接怼到“文章“的文档中,而不必创建三张表来描述这样的关系
(2)支持对数据建立索引,及时查询能力强。原则上 Oracle 和MySQL 能做的事情,MongoDB 都能做(包括 ACID 事务)。
(3)易伸缩,提供了分片能力,能对数据集进行分片,数据的存储压力分摊给多台服务器
(4)自动故障转移,MongoDB自身提供了副本集,能检测主节点是否存活,当失活时能自动提升从节点为主节点,达到故障转移。
(5)数据恢复功能,MongoDB提供了Journaling日志的概念,类似mysql的bin-log日志,插入的时候先往日志里写入记录,再完成实际的数据操作,如果出现宕机可以读取Journaling日志进行修复。
(6)支持多种语言,包括RUBY,PYTHON,JAVA,C++,PHP等

3. MongoDB的应用场景

(1)MongoDB可以解决传统数据库不好解决的三高问题 High performance - 对数据库高并发读写的需求 Huge
Storage - 对海量数据的高效率存储和访问的需求 High Scalability && High Availability-
对数据库的高可扩展性和高可用性的需求 (2)MongoDB应用场景特点 数据量大; 读写操作频繁; 不需要复杂的事务和join操作;
数据价值较低,对事务要求不高 (3)常见实际应用场景 ①游戏场景
使用MongoDB存储游戏用户信息、装备、积分等,直接以内嵌文档的形式存储,方便查询、更新。 ②物流场景
使用MongoDB存储订单信息、订单状态、物流信息,订单状态在运送过程中飞速迭代、以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更查出来。
③社交场景 使用MongoDB存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。 ④物联网场景
使用MongoDB存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。 ⑤视频直播 使用MongoDB存储用户信息、点赞互动信息。
⑥大数据应用 使用云数据库MongoDB作为大数据的云存储系统,随时进行数据提取分析,掌握行业动态。

4. MongoDB基本概念

(1)与关系型数据库(RDBMS)类比:

MongoDB概念RDBMS概念
数据库数据库
集合
文档
字段
索引索引
id主键
视图视图
聚合操作表连接

(2)基本概念介绍

数据库(database):最外层的概念,可以理解为逻辑上的名称空间,一个数据库包含多个不同名称的集合。
集合(collection):相当于SQL中的表,一个集合可以存放多个不同的文档。
文档(document):一个文档相当于数据表中的一行,由多个不同的字段组成。
字段(field):文档中的一个属性,等同于列(column)。 索引(index):独立的检索式数据结构,与SQL概念一致。
id:每个文档中都拥有一个唯一的id字段,相当于SQL中的主键(primary key)。
视图(view):可以看作一种虚拟的(非真实存在的)集合,与SQL中的视图类似。从MongoDB3.4版本开始提供了视图功能,其通过聚合管道技术实现。
聚合操作(lookup):MongoDB用于实现“类似”表连接(tablejoin)的聚合操作符。

二、MongoDB使用教程

1.下载安装(Windows)

进入下载地址,选择windows版本的进行下载即可。我这里下载的是6.0.4版本。
下载完成直接下一步下一步安装即可,最好不要修改安装位置,会默认装上可视化工具MongoDB Conpass。
控制台输入services.msc,查看MongoDB的服务,正常启动则安装成功。

在这里插入图片描述

2.MongoDB Conpass简单使用(选学)

(1)连接数据库
默认端口27017
在这里插入图片描述
(2)新建数据库Database和集合Collection
这里的集合相当于传统数据库的表名
在这里插入图片描述
(3)添加数据
我这里随便找了个json的数据,补充在_id后面,注意不要漏了逗号,否则会提示格式不对
在这里插入图片描述
(4)导出数据
在这里插入图片描述
可以导出json或者csv格式的数据,output那里需要指定一个文件进行导出
在这里插入图片描述
(5)添加索引
选择索引时会提示有哪些字段可以选
在这里插入图片描述
索引类型可以选择升序asc,降序desc,地理空间索引2dsphere,全文索引text
在这里插入图片描述
(6)其他功能
在这里插入图片描述

[Aggregation]选项卡即是聚合函数信息区,用于实现“类似”表连接操作;
[Schema]选项卡即是模式信息区,点击分析按钮可以看到当前集合(表)的执行信息,如表数据导入时间,表的具体字段、长度等信息;
[Explain Plan]选项卡即是执行计划信息区,可评估查询性能; [Validation]
选项卡可以用于验证数据,可以添加规则验证数据质量

注:增删改查语法参照下面navicat

3.使用navicat连接MongoDB

(1)连接数据库
新建连接时选择数据库类型为MongoDB即可,默认端口27017
在这里插入图片描述

在这里插入图片描述
(2)增删改查
右键新建查询进入命令行页面
在这里插入图片描述

Ⅰ、新增
1)语法:
db. 集合名 .insert( 文档 ) : 往集合中插入一个文档
db. 集合名 .find(): 查询集合中所有文档
db.users.insertMany:批量插入

2)示例:
①插入一个用户对象

db.user.insert({name: "刘备",age:"24"
})

当没有设置id时,mangoDB会自动生成一个id。
往集合中新增文档,当集合不存在时会自动先创建集合,再往集合中添加文档。
在这里插入图片描述

②插入一个用户对象(设置id,设置数据类型)

db.user.insert({id: NumberLong(1), name: "赵日地", age: NumberInt(18)})

③批量插入

db.users.insertMany([{_id: 1,name: "sue",age: 19,type: 1,status: "P",favorites: { artist: "Picasso", food: "pizza" },finished: [ 17, 3 ],badges: [ "blue", "black" ],points: [{ points: 85, bonus: 20 },{ points: 85, bonus: 10 }]},{_id: 2,name: "bob",age: 42,type: 1,status: "A",favorites: { artist: "Miro", food: "meringue" },finished: [ 11, 25 ],badges: [ "green" ],points: [{ points: 85, bonus: 20 },{ points: 64, bonus: 12 }]},{_id: 3,name: "ahn",age: 22,type: 2,status: "A",favorites: { artist: "Cassatt", food: "cake" },finished: [ 6 ],badges: [ "blue", "red" ],points: [{ points: 81, bonus: 8 },{ points: 55, bonus: 20 }]},{_id: 4,name: "xi",age: 34,type: 2,status: "D",favorites: { artist: "Chagall", food: "chocolate" },finished: [ 5, 11 ],badges: [ "red", "black" ],points: [{ points: 53, bonus: 15 },{ points: 51, bonus: 15 }]},{_id: 5,name: "xyz",age: 23,type: 2,status: "D",favorites: { artist: "Noguchi", food: "nougat" },finished: [ 14, 6 ],badges: [ "orange" ],points: [{ points: 71, bonus: 20 }]},{_id: 6,name: "abc",age: 43,type: 1,status: "A",favorites: { food: "pizza", artist: "Picasso" },finished: [ 18, 12 ],badges: [ "black", "blue" ],points: [{ points: 78, bonus: 8 },{ points: 57, bonus: 7 }]}]
)

Ⅱ、删除
1)语法
删除 1 个,若有多个则删除第一个: db. 集合名 .deleteOne( … )
删除所有: db. 集合名 .deleteMany( … )

2)示例
①删除第一个 status=A的文档

db.users.deleteOne({ status: "A" })

②删除所有带有 name=abc 的文档

db.users.deleteMany({ name : "abc" })

③删除当前数据库中所有文档

db.users.deleteMany({})

Ⅲ、更新

1)语法:
更新1个:db.集合名.updateOne( … )
更新所有:db.集合名.updateMany( … )

2)示例:
①把一个带有 name=xyz 的文档,修改其 age 值为 30

db.users.updateOne({name: "xyz"}, {$set: {age: 30}})

②修改所有 name=xyz的文档,修改其name=“zyx” , age=20

db.users.updateMany({name: "xyz"} ,{$set: {name: "zyx", age: 20}})

Ⅳ、普通查询
1)语法
db. 集合名 .find(query , projection)

2)示例
①查询所有文档
db.users.find()

Ⅴ、高级查询
1)等值
语法 -> find({ 字段 : 值 })

2)比较查询
语法 -> find({ 字段 : { 比较操作符 : 值, …}})
如:db.users.find({age:{$gt:20}})

比较操作符:
(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
(!=) 不等 - $ne
集合运算 - KaTeX parse error: Expected '}', got 'EOF' at end of input: in 如:`{name: {in: [“xiaoyao”,“bunny”]}} 判断存在 - $exists 如:{name: {$exists:true}}`

3)逻辑查询
语法 -> find({逻辑操作符: [条件1, 条件2, …]})

逻辑操作符:
(&&) 与 - $and
(||) 或 - $or
(!) 非 - $not
包含但不包含: $nor
存在: exists基于类型查询:exists 基于类型查询:exists基于类型查询:type
如:db.users.find({$and:[{age:{$gt:20}},{status:"A"}]})

4)模糊查询
MongoDB的模糊查询使用的是正则表达式的语法 如:{name: {$regex: /^.*keyword.*$/}}

4.JAVA项目中使用MongoDB

(1)开启用户名密码验证

Ⅰ.mongodb6.0后无默认shell工具(之前的版本是mongo.exe),需要下载,下载后将mongosh.exe、mongosh_crypt_v1.dll放入bin目录下 。下载地址
Ⅱ.打开mongosh.exe,按enter即可进入。
在这里插入图片描述
Ⅲ.执行下面命令
切换数据库:

use admin

创建用户,这里root是角色名

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

如果需要在admin数据库以外的数据库新建数据库test,可以给角色赋读写权限

db.grantRolesToUser("admin",[{ role: "readWrite", db: "test" }])

查看角色是否创建成功:

show users

下一次创建角色需要登录赋权

db.auth("admin","123456");

Ⅳ.修改配置文件
默认安装目录:C:\Program Files\MongoDB\Server\6.0\bin\mongod.cfg
找到#security: 处,添加

security: authorization: enabled

Ⅴ.重新启动,再试试不需要用户密码登录连接mongo,失败。再试试下面的连接是否成功。

在这里插入图片描述

Ⅵ.连接成功后可以在查看中显示隐藏的项目,否则admin的数据库是默认隐藏的。
在这里插入图片描述

(2)整合SpringBoot项目

添加maven包

<!--spring boot data mongodb--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId><version>3.0.2</version></dependency>

application.yml配置

spring:data:mongodb:uri: mongodb://admin:123456@localhost:27017/admin

新建User类

package com.example.user.domain;import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.data.annotation.Id;import java.util.Date;@Data
@AllArgsConstructor
public class User {@Idprivate String userId;private String name;private Integer age;private Date createTime = new Date();}

UserRepository.java:
注意这里泛型的User对应的Collections(表),String代表主键类型。通过Web应用新增时会自动创建表。

package com.example.user.dal;import com.example.user.domain.User;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;@Repository
public interface UserRepository extends MongoRepository<User, String> {}

UserController.java:

package com.example.user.controller;import com.example.user.dal.UserRepository;
import com.example.user.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;import java.util.List;@Controller
public class UserController {@RequestMapping(value = "/test")@ResponseBodypublic String test() {return "test111";}@Autowiredprivate final UserRepository userRepository;public UserController(UserRepository userRepository) {this.userRepository = userRepository;}@PostMapping("/addUser")@ResponseBodypublic String addNewUser(@RequestBody User user) {userRepository.save(user);return "添加成功!";}@GetMapping("/getUserList")@ResponseBodypublic String getUserList() {List<User> userList = userRepository.findAll();userList.forEach(user -> System.out.println(user.toString()));return "";}}

测试流程如下:
http://localhost:8030/addUser
在这里插入图片描述
在这里插入图片描述

相关文章:

MongoDB介绍及使用教程

文章目录一、MongoDB介绍1. 什么是MongoDB2. 为什么要用MongoDB3. MongoDB的应用场景4. MongoDB基本概念二、MongoDB使用教程1.下载安装&#xff08;Windows&#xff09;2.MongoDB Conpass简单使用&#xff08;选学&#xff09;3.使用navicat连接MongoDB4.JAVA项目中使用MongoD…...

51单片机开发环境搭建 - VS Code 从编写到烧录

我安装并测试成功的环境&#xff1a; 操作系统&#xff1a;Windows 10 (22H2)单片机&#xff1a;STC89C52RCPython version: 3.7.6 在这之前&#xff0c;给51单片机写程序是用 Keil 5&#xff08;编写编译&#xff09;、STC-ISP&#xff08;烧录&#xff09;&#xff0c;由于…...

python datetime、字符串和时间戳之间的相互转换12小时制和24小时制时间相互转化

文章目录1.字符串转datetime格式2.datetime转字符串3.时间戳转datetime格式4.datetime格式转时间戳5.应用&#xff1a;将12小时制的字符串转换为时间戳1.字符串转datetime格式 把字符串转换为datetime的格式 项目字符串的样子‘%m/%d/%Y %H:%M:%S’2/3/2023 15:30:20‘%m-%d-…...

百度百科词条怎么做?百度百科词条创建攻略分享

只要是想要将自己宣传出去的企业或是个人&#xff0c;都建议创建属于自己的百度百科词条&#xff0c;因为百度百科词条流量大、权重高、排名靠前&#xff0c;创建百度百科词条可以提高企业或是个人的知名度和口碑。 百度百科词条怎么做&#xff1f;每天都有用户在百度上搜索这…...

基于Hive的河北新冠确诊人数分析系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…...

k8s二进制部署

目录 一、环境准备 常见的k8s部署方式 关闭防火墙 关闭selinux 关闭swap 根据规划设置主机名 在master添加hosts 将桥接的IPv4流量传递到iptables的链 时间同步 二、部署etcd集群 1、master节点部署 #查看证书的信息 上传etcd-cert.sh 和etcd.sh 到/opt/k8s/ 目录…...

Windows出现0xc00d36e5错误怎么办?

当我们使用Windows Media Player来播放视频文件时&#xff0c;可能会出现无法播放&#xff0c;并显示0xc00d36e5错误代码。该错误可能是因为Windows Media Player不支持视频格式、注册表项损坏、系统配置问题、第三方应用程序冲突等。下面将开始介绍0xc00d36e5错误的解决方法&a…...

Idea搭建Spring5.3.x源码阅读环境

1. 概述 Spring是一个轻量级Java开源框架&#xff0c;在Java项目开发过程中已经离不开Spring全家桶了&#xff0c;包括Spring、SpringBoot、SpringCloud等&#xff0c;学习好Spring基础源码也有助于更好在项目中使用Spring相关组件&#xff0c;在学习源码前需要搭建好源码学习…...

2.20jdbc

一.数据库编程的必备条件编程语言:java c c Python数据库 Oracle,MySQL,SQL Server数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包:MySQL提供了Java的驱动包mysqlconnector-java,需要就Java操作MySQL需要该驱动包二.Java的数据库编程JDBC&#xff0c;即…...

【代码随想录训练营】【Day19休息】【Day20】第六章|二叉树|654.最大二叉树|617.合并二叉树|700.二叉搜索树中的搜索|98.验证二叉搜索树

最大二叉树 题目详细&#xff1a;LeetCode.654 这道题在题目几乎就说明了解题的思路了&#xff1a; 创建一个根节点&#xff0c;其值为 nums 中的最大值&#xff1b;递归地在最大值左边的子数组上构建左子树&#xff1b;递归地在最大值右边的子数组上构建右子树&#xff1b;…...

华为云计算之容灾技术

容灾是物理上的容错技术&#xff0c;不是逻辑上的容错同步远程复制&#xff1a;主备距离≤200km&#xff0c;只有在主备设备上都写成功&#xff0c;才会告诉主机写成功&#xff0c;不会丢失数据异步远程复制&#xff1a;主备距离&#xff1e;200km&#xff0c;只要主设备上写成…...

React系列之Redux

1 Redux概述 Redux 是 JavaScript 状态容器&#xff0c;提供可预测化的状态管理。Redux中文文档 Redux 和react没有必然关系&#xff0c;redux可以应用于各种框架&#xff0c;包括jquery&#xff0c;甚至js都可以使用redux&#xff0c;只不过redux和react更加搭配。redux也推…...

最简单得方法解决TCP分包粘包问题

如何用最简单的方法解决TCP传输中的分包粘包问题&#xff1f; 首先需要说明一点&#xff0c;分包粘包等等一系列的问题并不是协议本身存在的问题&#xff0c;而是程序员在写代码的时候&#xff0c;没有搞清楚数据的边界导致的。 看个简单的例子&#xff0c;TCP客户端不断的向服…...

免费使用通配符域名证书

文章目录前言一、手动安装acme.sh操作1、安装acme.sh2、使用dns api自动续签二、宝塔自动操作【推荐】总结前言 之前个人站点一般都是使用阿里云免费单域名证书&#xff0c;虽然好用但是只有一年有效&#xff0c;到期只能手动重新申请&#xff0c;并且每次弄个子域名出来就要重…...

0基础成功转行Python自动化测试工程师,年薪30W+,经验总结都在这(建议收藏)

两年前的决定我觉得还是非常正确的&#xff0c;就是自学了python&#xff0c;然后学习了自动化测试、性能测试、框架、持续集成&#xff0c;同时也把前面的软件测试基础知识全部补全了。目前的收入还比较满意&#xff0c;月入2W&#xff08;仅代表个人收入&#xff09;,13薪&am…...

MyBaits

MyBaitsMyBaits的jar包介绍MyBaits的入门案例创建实体java日志处理框架常用的日志处理框架Log4j的日志级别Mybatis配置的完善Mybatis的日志管理使用别名alias方式一方式二SqlSession对象下的常用API查询操作Mapper动态代理Mapper 动态代理规范查询所有用户根据用户ID查询用户Ma…...

kubeadm的部署、Dashboard UI以及连接私有仓库

目录 一、kubeadm 部署 K8S 集群架构 1、环境准备 2、所有节点安装docker 3、所有节点安装kubeadm&#xff0c;kubelet和kubectl 3、部署K8S集群 二、dashboard 部署 1、 安装dashboard 2、使用火狐或者360浏览器访问 三 、安装Harbor私有仓库 四、 内核参数优化方案 …...

刷题记录:牛客NC20325[SDOI2009]HH的项链

传送门:牛客 题目描述: HH有一串由各种漂亮的贝壳组成的项链。 HH相信不同的贝壳会带来好运&#xff0c;所以每次散步完后&#xff0c;他都会随意取出一 段贝壳&#xff0c;思考它们所表达的含义。 HH不断地收集新的贝壳&#xff0c;因此他的项链变得越来越长。 有一天&#…...

【REACT-路由v6】

REACT-路由v61. App.js2. 搭建路由2.1 普通写法2.2 使用useRoutes构建路由2.3 重定向封装2.4 嵌套路由中的组件Outlet3. 导航跳转3.2 声明式导航&#xff08;NavLink标签&#xff09;3.2 编程式导航跳转&#xff08;useNavigate&#xff09;3.2.1 获取参数3.2.1.1 useSearchPar…...

【离散数学】3. 代数系统

1.数理逻辑 2. 集合论 3. 代数系统 4. 图论 代数系统&#xff1a;把一些形式上很不相同的代数系统&#xff0c;用统一的方法描述、研究、推理&#xff0c;从而得到反映出他们共性的一些结论&#xff0c;在将结论运用到具体的代数系统中 系统&#xff1a;运算研究对象 运算&…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...