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

在Mac上搭建MongoDB环境

最近工作中需要装MongoDB环境,搭建过程中遇到了一些问题,在这里记录一下安装MongoDB环境的方法以及问题的解决方法。有两种安装MongoDB的方法:brew安装和手动安装。

目录

使用Homebrew安装MongoDB

手动安装MongoDB(不使用Homebrew)

两种安装方式对应的卸载方法

执行mongo命令提示command not found


使用Homebrew安装MongoDB

  1. 安装Homebrew(如果你还没有安装): 打开终端(Terminal)并运行以下命令来安装Homebrew:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    安装完成后,运行以下命令以确保Homebrew安装正确:

    brew doctor
  2. 通过Homebrew安装MongoDB: MongoDB官方已经不支持通过Homebrew直接安装,但你可以使用第三方tap来安装。在终端运行以下命令:

    brew tap mongodb/brew brew install mongodb-community
  3. 启动MongoDB服务: 你可以使用brew服务来启动MongoDB:

    brew services start mongodb/brew/mongodb-community

    这将配置MongoDB作为后台服务启动。执行这条命令遇到了报错:

    Error: uninitialized constant Homebrew::Service::System
    /usr/local/Homebrew/Library/Homebrew/macos_version.rb:150:in `const_missing'
    /usr/local/Homebrew/Library/Taps/homebrew/homebrew-services/cmd/services.rb:61:in `services'
    /usr/local/Homebrew/Library/Homebrew/brew.rb:94:in `<main>'

    这个错误信息表明在尝试使用Homebrew的services命令时遇到了问题。Homebrew::Service::System是一个未初始化的常量,这通常意味着Homebrew的某部分没有正确加载或者Homebrew本身可能存在损坏。

    为了解决这个问题,可以尝试以下几个步骤:(1)更新Homebrew: 运行以下命令以确保Homebrew和所有的tap都是最新的:

    brew update 
    brew upgrade

    (2)检查Homebrew的健康状况: 运行以下命令来检查Homebrew的状态,并修复任何报告的问题:

    brew doctor 

    (3)重新启动你的计算机: 有时候,简单地重新启动计算机可以解决临时的系统问题。              以上三步都没有解决我的问题。       (4)重新安装Homebrew服务: 如果更新和修复之后问题仍然存在,尝试卸载Homebrew服务然后重新安装:

    brew untap homebrew/services 
    brew tap homebrew/services

    这一步解决了我的问题。(5)检查Homebrew的版本: 确保你的Homebrew版本是最新的。运行以下命令查看当前版本:

    brew --version

    如果不是最新的,再次运行brew update。(6)重新安装Homebrew: 如果以上步骤都不能解决问题,你可能需要重新安装Homebrew。首先,备份你当前的Homebrew安装(包括已安装的包),然后根据Homebrew的文档进行重新安装。如果在尝试这些步骤之后问题依然存在,你可能需要查看Homebrew的GitHub仓库中的Issues页面看看是否有其他人遇到了类似的问题,或者创建一个新的Issue求助。                                     启动mongodb服务成功:

  4. 验证MongoDB是否正在运行: 在终端运行以下命令来连接MongoDB服务器:

    mongo

    如果MongoDB已经启动,你将看到MongoDB shell的提示符。这一步我又遇到了问题:

    qa@QAdeMacBook-Pro ~ % mongo
    zsh: command not found: mongo

    这意味着 mongo shell 并不在你的系统 PATH 环境变量中。这通常发生在以下几种情况:(1)MongoDB shell没有安装:在某些情况下,MongoDB服务器和MongoDB shell是分开安装的。确保你已经安装了包含mongo shell的MongoDB包。(2)PATH环境变量未正确设置:当你安装MongoDB时,mongo shell的可执行文件应该位于MongoDB的bin目录中。你需要确保这个目录被添加到了你的PATH环境变量中。解决这个问题的步骤如下:(1)确认mongo shell是否安装: 你可以通过brew list命令检查是否安装了mongo shell:

    brew list | grep mongo

    如果这个命令返回了与mongodb-community相关的结果,那么mongo shell应该已经安装了。(2)添加MongoDB的bin目录到PATH: 找到MongoDB的安装目录,并将其bin目录添加到你的PATH环境变量中。通常,如果你是通过Homebrew安装的MongoDB,它的bin目录可能位于/usr/local/opt/mongodb-community/bin。你可以通过以下命令将其添加到你的.zshrc文件中:

    echo 'export PATH="/usr/local/opt/mongodb-community/bin:$PATH"' >> ~/.zshrc

    然后,运行source ~/.zshrc来重新加载你的配置,或者重新打开一个终端窗口。(3)验证PATH环境变量: 使用echo $PATH命令来确认PATH环境变量是否包含了MongoDB的bin目录。(4)再次尝试运行mongo shell: 在终端中输入mongo并回车,看看是否能够启动MongoDB shell。如果你按照上述步骤操作后仍然无法运行mongo命令,可能需要重新安装MongoDB shell或者进一步检查你的系统配置。我按照要求设置了环境变量,还是会有这个报错。如果要停止使用brew services启动的MongoDB服务,你可以执行以下命令:

    brew services stop mongodb

    如果你的MongoDB是通过mongodb-community包安装的,你可能需要执行:

    brew services stop mongodb-community

    如果你想查看所有通过brew services管理的服务的状态,可以使用:

    brew services list

    这将列出所有服务及其当前状态(如已启动、已停止等)。这样,你就可以轻松管理你的MongoDB服务以及任何其他使用Homebrew安装的后台服务。

手动安装MongoDB(不使用Homebrew)

  1. 下载MongoDB: 访问MongoDB官方网站下载页(https://www.mongodb.com/try/download/community),选择适合的版本下载。

  2. 解压MongoDB压缩包: 下载完成后,解压MongoDB压缩包到一个你选择的目录。

  3. 配置环境变量: 将MongoDB目录的bin文件夹添加到你的PATH环境变量中。你可以在~/.bash_profile~/.zshrc或你的shell配置文件中添加以下行:

    export PATH=<MongoDB安装目录>/bin:$PATH

    替换<MongoDB安装目录>为你的实际安装路径。/Users/qa/Downloads/mongodb-macos-x86_64-7.0.4/bin,export PATH="/Users/qa/Downloads/mongodb-macos-x86_64-7.0.4/bin:$PATH"

  4. 创建数据和日志目录: 默认情况下,MongoDB将数据存储在/data/db目录中,但你需要手动创建这个目录:

    sudo mkdir -p /data/db 
    sudo chown `id -un` /data/db

    你也可以选择其他目录来存储数据,但需要在启动MongoDB时指定。执行sudo mkdir -p /data/db 报错mkdir: /data: Read-only file system。

    在macOS上,特别是从Catalina (10.15) 版本开始,系统引入了只读的系统卷,这意味着你不能直接在根目录(/)下创建或修改文件夹,因此你会遇到 "Read-only file system" 的错误。

    为了解决这个问题,你可以在用户的主目录或其他非系统保护区域创建数据目录。例如,你可以在你的主目录下创建一个db目录:(1)打开终端。(2)运行以下命令来创建一个名为mongodb-data的目录(你可以根据自己的需要命名这个目录):

    mkdir -p ~/mongodb-data

    (3)然后你需要告诉MongoDB使用这个新的数据目录。当你启动mongod服务时,使用--dbpath选项指定数据目录的路径:

    mongod --dbpath ~/mongodb-data

    这样,MongoDB就会使用你在主目录下创建的mongodb-data文件夹来存储数据,而不是默认的/data/db目录。

    请注意,如果你是通过Homebrew安装的MongoDB,并且希望使用brew services来管理MongoDB服务,你可能需要修改Homebrew服务的配置文件来指定新的数据目录路径。这通常涉及到编辑MongoDB的plist文件(位于/usr/local/Cellar/mongodb-community/{version}/homebrew.mxcl.mongodb-community.plist,其中{version}需要替换为实际安装的版本号),并在其中添加--dbpath选项。

  5. 启动MongoDB: 在终端运行以下命令来启动MongoDB:

    mongod

    如果你更改了数据存储目录,使用--dbpath选项指定路径:

    mongod --dbpath <你的数据目录路径>
  6. 连接MongoDB: 打开另一个终端窗口,运行以下命令连接MongoDB:

    mongo

当我启动mongodb服务时,遇到了错误:

{"t":{"$date":"2023-12-29T15:46:46.054+08:00"},"s":"E",  "c":"CONTROL",  "id":20568,   "ctx":"initandlisten","msg":"Error setting up listener","attr":{"error":{"code":9001,"codeName":"SocketException","errmsg":"setup bind :: caused by :: Address already in use"}}}
{"t":{"$date":"2023-12-29T15:46:46.054+08:00"},"s":"I",  "c":"REPL",     "id":4784900, "ctx":"initandlisten","msg":"Stepping down the ReplicationCoordinator for shutdown","attr":{"waitTimeMillis":15000}}
{"t":{"$date":"2023-12-29T15:46:46.054+08:00"},"s":"I",  "c":"REPL",     "id":4794602, "ctx":"initandlisten","msg":"Attempting to enter quiesce mode"}
{"t":{"$date":"2023-12-29T15:46:46.054+08:00"},"s":"I",  "c":"-",        "id":6371601, "ctx":"initandlisten","msg":"Shutting down the FLE Crud thread pool"}
{"t":{"$date":"2023-12-29T15:46:46.054+08:00"},"s":"I",  "c":"COMMAND",  "id":4784901, "ctx":"initandlisten","msg":"Shutting down the MirrorMaestro"}

Error setting up listener

这表明MongoDB服务在尝试绑定到某个网络地址(如localhost)和端口(默认是27017)时遇到了问题。错误的具体内容是:

Address already in use

这意味着MongoDB服务尝试绑定的端口已经被其他进程占用了。在大多数情况下,这是因为另一个MongoDB实例已经在运行,或者有其他服务正在使用该端口。

要解决这个问题,你可以采取以下步骤:

  1. 查找占用端口的进程:你可以使用lsofnetstat命令来查找哪个进程正在使用27017端口。例如:

    lsof -i :27017

    或者

    netstat -anp | grep 27017

    这将列出所有使用27017端口的进程信息。

  2. 结束占用端口的进程:如果确定是MongoDB的另一个实例占用了端口,并且你确定要关闭它,你可以使用kill命令来结束该进程。例如:

    kill <PID>

    其中<PID>是占用端口的进程ID。

  3. 重新启动MongoDB服务:在结束占用端口的进程之后,你可以尝试再次启动MongoDB服务:

    mongod --dbpath ~/mongodb-data

以上就是在Mac上搭建MongoDB环境的基本步骤。如果有任何问题,可以参考MongoDB的官方文档或者在安装过程中查看终端中的错误信息。

两种安装方式对应的卸载方法

如果你在电脑上既使用Homebrew安装了MongoDB,又手动安装了MongoDB,并为它们配置了不同的环境变量,可能会遇到以下问题:

  1. 端口冲突:MongoDB默认使用27017端口。如果两个MongoDB实例都尝试使用同一个端口,那么后启动的实例将无法绑定到该端口上,因为它已经被第一个实例占用了。

  2. 配置混淆:如果你为两个MongoDB实例设置了不同的环境变量,可能会导致运行时的配置混淆。例如,当你尝试启动或与MongoDB交互时,你可能不确定正在使用哪个版本的MongoDB实例。

  3. 路径冲突:如果两个MongoDB实例配置的数据目录或日志目录相同,可能会导致数据覆盖或损坏。

  4. 版本冲突:如果两个MongoDB实例的版本不同,可能会导致客户端工具、驱动程序或应用程序与MongoDB实例的兼容性问题。

  5. 管理复杂性:维护两个MongoDB实例意味着你需要记住两套配置、两个不同的命令集以及两个服务的启动和停止方式,这增加了管理的复杂性。

为了避免这些问题,建议你选择一种安装方式,并且坚持使用它:

  • 如果选择Homebrew:你可以通过brew services管理MongoDB服务,并且依赖Homebrew来处理版本更新和路径配置。

  • 如果选择手动安装:你需要自己管理MongoDB的启动、停止、配置和更新。

卸载用Homebrew安装的MongoDB,可以运行:

brew services stop mongodb 
brew uninstall mongodb

如果你想删除手动安装的MongoDB,你需要停止服务(如果它正在运行),然后删除MongoDB的文件夹和配置文件。

在做出决定之前,请确保备份所有重要的数据,以免在卸载过程中丢失。

执行mongo命令提示command not found

首先想到的原因是没有配置环境变量会有这个问题,

即使你已经配置过环境变量,这可能是由以下原因引起的:

  1. 环境变量未生效:你可能在配置文件中正确设置了环境变量,但是更改可能还没有生效。你可以通过关闭并重新打开你的终端窗口来刷新环境变量,或者在当前终端中运行source ~/.bash_profile(或对应的配置文件,比如~/.zshrc~/.bashrc等,取决于你使用的shell)来使更改立即生效。

  2. 错误的环境变量路径:你可能在环境变量中设置了错误的路径。检查你的.bash_profile.bashrc.zshrc或其他shell配置文件中的PATH环境变量,确保它包含了MongoDB的可执行文件目录。对于Homebrew安装的MongoDB,它通常位于/usr/local/bin目录中。

  3. 配置文件未加载:如果你使用的是非常规的shell或者有特殊的配置,可能你的环境变量配置文件(如.bash_profile.bashrc.zshrc等)没有被加载。确保你在正确的文件中添加了环境变量,并且这个文件在你的shell启动时会被读取。

  4. 多个MongoDB版本:由于你提到电脑上同时用brew安装了MongoDB,也手动安装了MongoDB,可能存在多个版本的MongoDB。确保你的PATH环境变量指向的是你想要使用的MongoDB版本的路径。

  5. 权限问题:可能是由于权限问题导致的。确认mongo命令的可执行文件是否具有适当的执行权限。

  6. Shell不识别更改:如果你使用的是zsh而不是bash,你需要在.zshrc而不是.bash_profile中设置环境变量。

你可以通过执行以下命令来确认mongo命令的位置:

which mongo

或者查找系统中所有mongo命令的位置:

find / -name mongo 2>/dev/null

如果以上命令返回了mongo命令的路径,确保这个路径被包含在你的PATH环境变量中。如果命令没有返回任何路径,那么可能你的MongoDB没有安装正确,或者mongo命令的路径没有被加入到PATH中。

一旦你找到了正确的mongo命令路径,你可以通过以下命令将它添加到你的PATH环境变量中(假设mongo命令位于/path/to/mongo/bin):

export PATH="/path/to/mongo/bin:$PATH"

然后将这行添加到你的shell配置文件中(.bash_profile.bashrc.zshrc等),保存文件,并重新加载配置或重启你的终端。

相关文章:

在Mac上搭建MongoDB环境

最近工作中需要装MongoDB环境&#xff0c;搭建过程中遇到了一些问题&#xff0c;在这里记录一下安装MongoDB环境的方法以及问题的解决方法。有两种安装MongoDB的方法&#xff1a;brew安装和手动安装。 目录 使用Homebrew安装MongoDB 手动安装MongoDB&#xff08;不使用Homebr…...

第三十九天| 62.不同路径、63. 不同路径 II

Leetcode 62.不同路径 题目链接&#xff1a;62 不同路径 题干&#xff1a;一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “…...

提高代码质量的 10 条编码原则

提高代码质量的 10 条编码原则 本文转自 公众号 ByteByteGo&#xff0c;如有侵权&#xff0c;请联系&#xff0c;立即删除 今天来聊聊提高代码质量的 10 条编码原则。 软件开发需要良好的系统设计和编码标准。我们在下图中列出了 10 条良好的编码原则。 01 遵循代码规范 我们…...

SHERlocked93 的 2017 年终总结

回家的路上有点无聊&#xff0c;简短回顾一下2017年的得失收获 开始两个月3月到5月用C#完结了一个烂尾的wpf小项目&#xff0c;对自己前半年的.net生涯也算是一个句号&#xff08;虽然不知道最后有没有采用&#xff09;&#xff0c;后面由于项目组转变技术栈&#xff0c;选择了…...

【FreeRTOS基础入门】任务通知

文章目录 前言一、任务通知介绍1.1 任务通知怎么通信1.2 任务通知与其他通信方式的区别1.3 优势及限制任务通知的优势任务通知的限制 1.4 内部原理 二、任务通知的使用2.1 发出与接收通知简化版2.1 发出与接收通知专业版 总结 前言 FreeRTOS 提供了丰富而灵活的任务通知机制&a…...

python opencv比较图片相似度

目录 一:均值哈希算法 二:三直方图算法 三:单通道直方图 一:均值哈希算法 均值哈希算法是一种快速比较图像相似度的方法。它首先将图像转化为灰度图像,然后计算图像的均值,接着将每个像素的...

校园兼职|大学生校园兼职小程序|基于微信小程序的大学生校园兼职系统设计与实现(源码+数据库+文档)

大学生校园兼职小程序目录 目录 基于微信小程序的大学生校园兼职系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户​微信端功能模块​ 2、管理员服务端功能模块 &#xff08;1&#xff09; 兼职管理 &#xff08;2&#xff09;论坛管理 &#xff08;3&…...

linux系统离线安装docker服务教程

1、下载、上传docker-20.10.0.tgz压缩包至服务器&#xff0c;其中&#xff0c;docker下载地址https://download.docker.com/linux/static/stable/x86_64/ 2、新建安装docker脚本docker-install.sh #!/usr/bin/env bash tar -xvf docker-20.10.0.tgzcp docker/* /usr/bin/cat …...

【青龙】快速搭建青龙面板,部署属于你自己的应用!

青龙面板是一个支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台。 废话不多说&#xff0c;直接开始。 这里使用一台 雨云 的云服务器作为演示。雨云注册地址&#xff1a;https://www.rainyun.com/ 优惠码&#xff1a;lz932 使用优惠码注册后绑定微信可获得8折…...

shell脚本实现Mysql分库分表备份

一.数据库的分库分表&#xff1f; 12张图把分库分表讲的明明白白&#xff01;阿里面试&#xff1a;我们为什么要分库分表https://mp.weixin.qq.com/s?__bizMzU0OTE4MzYzMw&mid2247547792&idx2&sn91a10823ceab0cb9db26e22783343deb&chksmfbb1b26eccc63b784879…...

【算法 - 动态规划】从零开始学动态规划!(总纲)

动态规划 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是一种优化问题求解方法&#xff0c;通常用于解决具有 重叠子问题 和 最优子结构 性质的问题。它的基本思想是将原问题分解成更小的子问题&#xff0c;通过求解和保存这些子问题的解&#xff0c;避…...

从 Elasticsearch 到 Apache Doris,统一日志检索与报表分析,360 企业安全浏览器的数据架构升级实践

导读&#xff1a;随着 360 企业安全浏览器用户规模的不断扩张&#xff0c;浏览器短时间内会产生大量的日志数据。为了提供更好的日志数据服务&#xff0c;360 企业安全浏览器设计了统一运维管理平台&#xff0c;并引入 Apache Doris 替代了 Elasticsearch&#xff0c;实现日志检…...

【力扣 - 二叉树的直径】

题目描述 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 提示&#xff1a; 树中节点数目在范围 [1, 10000] 内…...

大数据,对于生活的改变

谷歌通过对于疾病的查询量可以预测一个个h1n1病毒的大爆发&#xff0c; 大数据时代对于人的考验 用户的搜索记录就是一种信息&#xff0c;这种信息会满足其基础相关的词条与其有关的词条&#xff08;最为原始的搜索机制&#xff0c;国内的搜索引擎都是采用这种基础原理。&…...

py2neo和neo4j

py2neo 和 neo4j 是两个 Python 中与 Neo4j 图数据库交互的库&#xff0c;但它们有不同的设计和使用方式。 py2neo: 类型: py2neo 是一个面向对象的库&#xff0c;提供了一个对象模型&#xff0c;使得与 Neo4j 数据库的交互更加 Pythonic。API 风格: 使用 Node 和 Relationship…...

解决windows无法访问wsl下docker服务

笔者在初学使用wsl跑docker时,遇到了windows无法访问的问题,并且浏览了大部分的文章,发现并没有起效,在反复试错终于成功之后,总结为以下几点: 1.升级至wsl2 2.将.wslconfig文件(用户文件夹下)中的如下镜像服务关闭删除 networkingModemirrored 3.打开wsl防火墙相应的端口 …...

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(二)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型&#xff0c;由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”&#xff08;そら sora&#xff09;&#xff0c;即天空之意&#xff0c;以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…...

Python第十九章(模块)

系统的模块库一般处于外部库中的Lib里面 一。导入模块的方式&#xff1a; 1.方式一&#xff1a; 导入&#xff1a;import 模块名1&#xff0c;模块名2 调用&#xff1a;模块名 . 功能名() 2.方式二&#xff1a; 导入&#xff1a;from 模块名 import 功能1&#xff0c;功能…...

【Linux网络编程五】Tcp套接字编程(四个版本服务器编写)

【Linux网络编程五】Tcp套接字编程(四个版本服务器编写&#xff09; [Tcp套接字编程]一.服务器端进程&#xff1a;1.创建套接字2.绑定网络信息3.设置监听状态4.获取新连接5.根据新连接进行通信 二.客户端进程&#xff1a;1.创建套接字2.连接服务器套接字3.连接成功后进行通信 三…...

APP 有漏洞被测要下架,怎么处理?

事情的经过是这样的&#xff1a; 1&#xff1a;学员公司测试的 APP 发现有漏洞&#xff0c;被要求下架 2&#xff1a;他被公司要求去查询 APP 哪里有漏洞 3&#xff1a;他来寻求帮助&#xff0c;推荐几款安全测试扫描漏洞的问题。 事情的梳理&#xff1a; 1:我们看了他的 …...

2024年2月19日-2月25日(全面进行+收集免费虚幻商城资源)

试试周一到周五重点进行&#xff0c;周末抄写源码&#xff0c;周一晚上看书很快就在22&#xff1a;00睡着&#xff0c;早上可以看看视频教程&#xff0c;出租车上补觉。 执行如下&#xff1a; 周一&#xff1a; 8&#xff1a;01-9&#xff1a;20ue4 rpg&#xff08;184&#xf…...

Flutter学习4 - Dart数据类型

1、基本数据类型 num、int、double &#xff08;1&#xff09;常用数据类型 num类型&#xff0c;是数字类型的父类型&#xff0c;有两个子类 int 和 double 通过在函数名前加下划线&#xff0c;可以将函数变成私有函数&#xff0c;私有函数只能在当前文件中调用 //常用数据…...

leetcode hot100单词拆分

在本题中&#xff0c;我们是要把一个字符串&#xff0c;判断是否能用给的字符串数组中的单词进行拆分&#xff0c;如果可以则返回true&#xff0c;不能的话则返回false。这个题一开始看无法与背包问题联系在一起。但仔细考虑&#xff0c;就是用物品&#xff08;给的字符串数组中…...

大数据构建知识图谱:从技术到实战的完整指南

文章目录 大数据构建知识图谱&#xff1a;从技术到实战的完整指南一、概述二、知识图谱的基础理论定义与分类核心组成历史与发展 三、知识获取与预处理数据源选择数据清洗实体识别 四、知识表示方法知识表示模型RDFOWL属性图模型 本体构建关系提取与表示 五、知识图谱构建技术图…...

WebServer -- 定时器处理非活动连接(上)

目录 &#x1f34d;函数指针 &#x1f33c;基础知识 &#x1f419;整体概述 &#x1f382;基础API sigaction 结构体 sigaction() sigfillset() SIGALRM, SIGTERM 信号 alarm() socketpair() send() &#x1f4d5;信号通知流程 统一事件源 信号处理机制 &#x…...

微服务部署:金丝雀发布、蓝绿发布和滚动发布的对比

金丝雀发布、蓝绿发布和滚动发布的对比 金丝雀发布、蓝绿发布和滚动发布都是软件发布策略&#xff0c;它们都旨在降低发布风险并提高发布速度。但是&#xff0c;这三种策略在工作方式、优缺点等方面存在一些差异。 工作方式 金丝雀发布&#xff1a;将新版本软件逐步发布给用…...

轻松入门MySQL:优化复杂查询,使用临时表简化数据库查询流程(13)

在进销存管理系统中&#xff0c;复杂的数据查询是司空见惯的。这些查询往往需要处理大量的数据&#xff0c;并执行复杂的逻辑操作。然而&#xff0c;处理这些查询可能会变得非常耗时&#xff0c;并且难以维护。为了解决这个问题&#xff0c;我们可以利用临时表&#xff0c;这是…...

vmware的ubuntu虚拟机因空间满无法启动

正在虚拟机编译android源代码&#xff0c;没注意空间不足&#xff0c;结果回来发现了 Assuming drive cache: write through 的问题&#xff0c;经查是空间不足的原因 按照这个教程&#xff0c;清除出来部分空间&#xff0c;才能进去系统&#xff0c;并且对系统空间做下优化 …...

Unity数据持久化之PlayerPrefs

这里写目录标题 PlayerPrefs概述基本方法PlayerPrefs存储位置实践小项目反射知识补充数据管理类的创建反射存储数据----常用成员反射存储数据----List成员反射存储数据----Dictionary成员反射存储数据----自定义类成员反射读取数据----常用成员反射读取数据----List成员反射读取…...

uniapp微信公众号H5分享

如果项目文件node_modules中没有weixin-js-sdk文件&#xff0c;则直接使用本文章提供的&#xff1b; 如果不生效&#xff0c;则在template.h5.html中引入 <script src"https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> 首先引入weixin-js-…...