【初识 Docker | 中级篇】 Docker 中使用 docker-compose 安装 Nacos

news2024/11/19 4:33:50

文章目录

  • 前言
  • 一、安装 docker
    • 1、安装docker
    • 2、安装docker-compose
  • 二、Nacos 单机安装
    • 1.创建配置文件
      • 1.1.创建目录
      • 1.2.创建nacos-logback.xml
      • 1.3.创建application.properties
      • 1.4.创建docker-compose.yml
    • 2.nacos数据库表结构
    • 3.启动Nacos容器
  • 总结


前言

可以按照以下步骤在 Docker 中安装 Nacos

  1. 拉取 nacos 镜像:docker pull nacos/nacos-server
  2. 运行 nacos 容器:docker run --name nacos -e MODE=standalone -p 8848:8848 -d nacos/nacos-server
  3. 访问 nacos 控制台:打开浏览器,在地址栏中输入 http://localhost:8848/nacos,访问 nacos 控制台。

提示:以下是本篇文章正文内容,下面案例可供参考

一、安装 docker

1、安装docker

参考前文【初识 Docker | 基础篇】 Docker 安装

2、安装docker-compose

需要从github上下载docker-compose二进制文件安装

curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

出现问题:curl: (35) Encountered end of file 👉 解决:开放443端口即可

二、Nacos 单机安装

1.创建配置文件

1.1.创建目录

在root目录下创建docker目录
mkdir docker
在docker目录下创建nacos目录
cd /docker
mkdir nacos
在redis目录下创建相关目录
cd nacos
mkdir data
mkdir nacos-conf
mkdir plugins
mkdir standalone-logs

1.2.创建nacos-logback.xml

进入/docker/nacos/nacos-conf 目录下,vim nacos-logback.xml创建log文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
    <contextName>logback</contextName>
    <property name="log.path" value="/home/nacos/logs/logback.log" />
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- <filter class="com.example.logback.filter.MyFilter" /> -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
              <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>
 
    <appender name="file"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
        </rollingPolicy>
 
        <encoder>
            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
            </pattern>
        </encoder>
    </appender>
 
    <root level="debug">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </root>
 
    <logger name="com.example.logback" level="warn" />
 
</configuration>

1.3.创建application.properties

进入/docker/nacos/nacos-conf 目录下,vim application.properties创建配置文件,内容如下:

server.servlet.contextPath=/nacos
server.port=8848
#spring.datasource.platform=mysql
# 数据库数量
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:13306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root

注:修改数据库连接及账户密码

1.4.创建docker-compose.yml

version: '3'
services:
    #nacos容器 - Mysql container
    nacos:
        restart: always
        image: nacos/nacos-server
        # 容器名称
        container_name: demo-nacos
        # 资源限制
        #deploy:
          #mode: relicates
          # 副本数
          #replicas: 2
          #resources:
            # 设置容器的资源限制
            #limits:
              # 使用50%的cpu
              #cpus: "0.50"
              #memory: 512M
            # 设置为容器预留的系统资源
            #reservations:
              #cpus: "0.25"
              #memory: 256M
        # 端口映射
        ports:
          - 8848:8848
          - 9848:9848
          - 9849:9849
        # 容器权限
        privileged: true
        # 参数设置
        environment:
          NACIS_AUTH_ENABLE: "true"
          NACOS_AUTH_TOKEN_EXPIRE_SECONDS: 18000
          JVM_XMS: 128m
          JVM_XMX: 128m
          JVM_MS: 64m
          JVM_MMS: 64m
          MODE: standalone
          NACOS_REPLICAS: 1
          PREFER_HOST_MODE: hostname
          SPRING_DATASOURCE_PLATFORM: mysql
          MYSQL_SERVICE_HOST: 127.0.0.1 #修改为自己的数据库连接
          MYSQL_SERVICE_DB_NAME: nacos_config
          MYSQL_SERVICE_PORT: 13306
          MYSQL_SERVICE_USER: root
          MYSQL_SERVICE_PASSWORD: root
        volumes:
          - /docker/nacos/standalone-logs/:/home/nacos/logs
          - /docker/nacos/plugins/:/home/nacos/plugins
          - /docker/nacos/data:/home/nacos/data
          - /docker/nacos/nacos-conf:/home/nacos/conf
    # 数据卷解决宿主机目录直接覆盖掉容器的行为
volumes:
  nacos-conf:
    driver: local
    driver_opts:
      type: 'none'
      device: '${PWD}/conf'
      o: 'bind' 

2.nacos数据库表结构

⏭在nacos_config库中执行下面的sql

/*
 * Copyright 1999-2018 Alibaba Group Holding Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info   */
/******************************************/
CREATE TABLE `config_info` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',
  `group_id` VARCHAR(255) DEFAULT NULL,
  `content` LONGTEXT NOT NULL COMMENT 'content',
  `md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` TEXT COMMENT 'source user',
  `src_ip` VARCHAR(50) DEFAULT NULL COMMENT 'source ip',
  `app_name` VARCHAR(128) DEFAULT NULL,
  `tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段',
  `c_desc` VARCHAR(256) DEFAULT NULL,
  `c_use` VARCHAR(64) DEFAULT NULL,
  `effect` VARCHAR(64) DEFAULT NULL,
  `type` VARCHAR(64) DEFAULT NULL,
  `c_schema` TEXT,
  `encrypted_data_key` TEXT NOT NULL COMMENT '秘钥',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',
  `group_id` VARCHAR(255) NOT NULL COMMENT 'group_id',
  `datum_id` VARCHAR(255) NOT NULL COMMENT 'datum_id',
  `content` LONGTEXT NOT NULL COMMENT '内容',
  `gmt_modified` DATETIME NOT NULL COMMENT '修改时间',
  `app_name` VARCHAR(128) DEFAULT NULL,
  `tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',
  `group_id` VARCHAR(128) NOT NULL COMMENT 'group_id',
  `app_name` VARCHAR(128) DEFAULT NULL COMMENT 'app_name',
  `content` LONGTEXT NOT NULL COMMENT 'content',
  `beta_ips` VARCHAR(1024) DEFAULT NULL COMMENT 'betaIps',
  `md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` TEXT COMMENT 'source user',
  `src_ip` VARCHAR(50) DEFAULT NULL COMMENT 'source ip',
  `tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段',
  `encrypted_data_key` TEXT NOT NULL COMMENT '秘钥',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',
  `group_id` VARCHAR(128) NOT NULL COMMENT 'group_id',
  `tenant_id` VARCHAR(128) DEFAULT '' COMMENT 'tenant_id',
  `tag_id` VARCHAR(128) NOT NULL COMMENT 'tag_id',
  `app_name` VARCHAR(128) DEFAULT NULL COMMENT 'app_name',
  `content` LONGTEXT NOT NULL COMMENT 'content',
  `md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` TEXT COMMENT 'source user',
  `src_ip` VARCHAR(50) DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (
  `id` BIGINT(20) NOT NULL COMMENT 'id',
  `tag_name` VARCHAR(128) NOT NULL COMMENT 'tag_name',
  `tag_type` VARCHAR(64) DEFAULT NULL COMMENT 'tag_type',
  `data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',
  `group_id` VARCHAR(128) NOT NULL COMMENT 'group_id',
  `tenant_id` VARCHAR(128) DEFAULT '' COMMENT 'tenant_id',
  `nid` BIGINT(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`),
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (
  `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` VARCHAR(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (
  `id` BIGINT(64) UNSIGNED NOT NULL,
  `nid` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `data_id` VARCHAR(255) NOT NULL,
  `group_id` VARCHAR(128) NOT NULL,
  `app_name` VARCHAR(128) DEFAULT NULL COMMENT 'app_name',
  `content` LONGTEXT NOT NULL,
  `md5` VARCHAR(32) DEFAULT NULL,
  `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `src_user` TEXT,
  `src_ip` VARCHAR(50) DEFAULT NULL,
  `op_type` CHAR(10) DEFAULT NULL,
  `tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段',
  `encrypted_data_key` TEXT NOT NULL COMMENT '秘钥',
  PRIMARY KEY (`nid`),
  KEY `idx_gmt_create` (`gmt_create`),
  KEY `idx_gmt_modified` (`gmt_modified`),
  KEY `idx_did` (`data_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (
  `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` VARCHAR(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  `max_aggr_size` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';


CREATE TABLE `tenant_info` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` VARCHAR(128) NOT NULL COMMENT 'kp',
  `tenant_id` VARCHAR(128) DEFAULT '' COMMENT 'tenant_id',
  `tenant_name` VARCHAR(128) DEFAULT '' COMMENT 'tenant_name',
  `tenant_desc` VARCHAR(256) DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` VARCHAR(32) DEFAULT NULL COMMENT 'create_source',
  `gmt_create` BIGINT(20) NOT NULL COMMENT '创建时间',
  `gmt_modified` BIGINT(20) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';

CREATE TABLE `users` (
	`username` VARCHAR(50) NOT NULL PRIMARY KEY,
	`password` VARCHAR(500) NOT NULL,
	`enabled` BOOLEAN NOT NULL
);

CREATE TABLE `roles` (
	`username` VARCHAR(50) NOT NULL,
	`role` VARCHAR(50) NOT NULL,
	UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);

CREATE TABLE `permissions` (
    `role` VARCHAR(50) NOT NULL,
    `resource` VARCHAR(255) NOT NULL,
    `action` VARCHAR(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);

INSERT INTO users (username, PASSWORD, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);

INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

3.启动Nacos容器

⏭执行命令 chmod 755 docker-compose.yml,给docker-compose.yml设置权限

✅执行命令docker-compose up -d,后台启动docker-compose

出现报错

-bash: /usr/local/bin/docker-compose: Permission denied

执行命令chmod +x /usr/local/bin/docker-compose

再次执行docker-compose up -d,成功启动Nacos

打开浏览器,在地址栏中输入 http://ip:8848/nacos,成功访问 nacos 控制台

在这里插入图片描述

总结

以上就是今天要讲的内容,本文仅仅简单介绍了在 Docker 中使用docker-compose安装 Nacos的步骤,以上方法亲测有效,希望能给大家一个参考。

⭕关注博主,不迷路 ⭕

创作不易,关注💖、点赞👍、收藏🎉就是对作者最大的鼓励👏,欢迎在下方评论留言🧐

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

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

相关文章

Text2Video-Zero:Text-to-Image扩散模型是Zero-Shot视频生成器

Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Generators Paper: https://arxiv.org/abs/2303.13439 Project: https://github.com/Picsart-AI-Research/Text2Video-Zero 原文链接&#xff1a;Text2Video-Zero:Text-to-Image扩散模型是Zero-Shot视频…

Splashtop 让按需远程支持流程更加流畅

Splashtop 一直采用9位 SOS 会话码的形式为用户提供按需支持&#xff1a; 1、技术员引导最终用户访问网站 sos.splashtop.com&#xff1b; 2、最终用户下载并运行小程序&#xff0c;然后发送9位会话码给技术员。 自2015年 Splashtop SOS 产品推出以来&#xff0c;我们一直采…

PLC数字量与模拟量信号输入/输出接线

西门子S7-1200 具有用于进行计算和测量、闭环回路控制和运动控制的集成技术&#xff0c;是一个功能非常强大的系统&#xff0c;可以实现多种类型的自动化任务。下面分享S7-1200系列数字量与模拟量信号输入/输出接线图给大家。 数字量信号模块输入输出接线 SM 1221 数字量输入…

分布式机器学习(Parameter Server)

分布式机器学习中&#xff0c;参数服务器(Parameter Server)用于管理和共享模型参数&#xff0c;其基本思想是将模型参数存储在一个或多个中央服务器上&#xff0c;并通过网络将这些参数共享给参与训练的各个计算节点。每个计算节点可以从参数服务器中获取当前模型参数&#xf…

高速电路设计系列分享-信号链精度分析(下)

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示&#xff1a;这里可以添加技术概要 在任何设计中&#xff0c;信号链精度分析都可能是一项非常重要的任务&#xff0c;必须充分了解。之前&#xff0c; 我们讨论了在整个信号链累积起来并且最终会影响到转换器的多…

嵌入式软件测试笔记7 | 嵌入式软件测试中基于风险的测试策略如何开展?

7 | 嵌入式软件测试中基于风险的测试策略如何开展&#xff1f; 1 风险评估1.1 分析风险1.2 如何估计故障几率&#xff1f;1.3 导致故障几率较高的因素1.4 估计可能的损失1.5 风险评估的来源1.6 风险的处理 2 主测试计划中的策略2.1 目标2.2 制定策略的步骤2.3 选择质量特性2.4 …

美国签证办理需要户口本吗?

在申请美国签证时&#xff0c;有关所需文件的问题常常令人困惑。关于是否需要提供户口本&#xff0c;知识人网可以向您解释一下相关情况。 首先&#xff0c;需要明确的是&#xff0c;美国签证申请并不要求申请人提供户口本。美国领事馆和大使馆在签证申请过程中通常要求申请人提…

零知识证明(Sigma和Flat-shamir)

概述 定义&#xff1a;大概的定义就是prover可以向verifier证明自己给定的信息是大概率正确的&#xff0c;但是不泄露任何附加信息&#xff0c;包含信息本身。 举例 这里以一个比较经典的例子&#xff0c;即向红绿色盲&#xff08;无法区分红色和绿色&#xff0c;看红色和绿色…

基于RFID技术的并列式挤奶厅方案

随着现代农业的不断发展&#xff0c;RFID技术已经广泛应用于畜牧业生产中。在奶牛养殖领域&#xff0c;RFID技术可以帮助养殖场管理人员实现奶牛的精准管理&#xff0c;提高生产效率。本文将介绍一种基于RFID技术的并列式挤奶厅方案&#xff0c;该方案可以实现对每头奶牛的精准…

网络安全(黑客)必备工具包

1. NMap 作为Network Mapper的缩写&#xff0c;NMap是一个开源的免费安全扫描工具&#xff0c;可用于安全审计和网络发现。它适用于Windows、Linux、HP-UX、Solaris、BSD变体(包括Mac OS)以及AmigaOS。Nmap可用于探测网络上哪些主机可访问&#xff0c;它们正在运行的操作系统类…

Keil MDK编程环境下的 STM32 IAP下载(学习笔记)

IAP的引入 不同的程序下载方式 ICP ICP(In Circuit Programing)。在电路编程&#xff0c;可通过 CPU 的 Debug Access Port 烧录代码&#xff0c;比如 ARM Cortex 的 Debug Interface 主要是 SWD(Serial Wire Debug) 或 JTAG(Joint Test Action Group)&#xff1b; ISP ISP(I…

合宙Air724UG Cat.1模块硬件设计指南--Wifi扫描

概述 Air724UG具有WiFi Scan功能&#xff0c;支持2.4G频段下的802.11b&#xff0c;802.11g&#xff0c;802.11n等WiFi技术协议&#xff0c;结合模块本身支持的蓝牙功能&#xff0c;二者共用一路天线。 Air724UG以主动的方式&#xff0c;在每个信道上发出Probe Request帧&#x…

Java集合框架中取出元素时的比较问题:“==“与equals()方法

今天随便刷力扣的时候看到了最小栈&#xff0c;发现力扣上没做过&#xff0c;题不难&#xff0c;于是做了一下 一开始的代码如下&#xff1a; class MinStack {Deque<Integer> stack;Deque<Integer> minStack;public MinStack() {stack new LinkedList<>()…

HHU商务数据挖掘期末考点复习

文章目录 第一章 概述第二章 商务智能过程2.1四个部分2.2数据仓库与数据库2.3在线分析处理与在线事务处理 第三章 关联分析3.1 频繁模式与关联规则3.2 相关性度量liftcosine 第四章 分类4.1决策树4.1.1 信息熵的概念4.1.2 计算目标变量的信息熵4.1.3 算条件熵4.1.4 信息增益4.1…

从专用模型到大模型

背景&#xff1a; 在开始文章正文之前&#xff0c;我们来讲讲为何突然大模型火了&#xff0c;大模型和专用模型到底有何差异。 大模型火之前专业模型其实已经能够很好的配合做很多很复杂的事情。如果只是从提高工作效率的角度来讲应该是发展模型的专业问题解决能力&#xff0…

SpringSecurity实现Remember-Me实践

【1】基于会话技术的实现 也就是基于Cookie的实现。 ① 登录页面 这里name"remember-me"表示“记住我”的复选框&#xff0c;默认key是remember-me。 <form action"/user/login" method"post"><input type"text" name&q…

Jmeter连接数据库并进行操作

一&#xff1a;加一个JDBC组件 二、填写连接信息&#xff1a; 三&#xff1a;添加JDBC请求 四、填写sql并运行

[centos] 新买的服务器环境搭建

由于去年买的云服务器快过期了,然后最近又新买了一个服务器,所以就写下了这篇文章, 虽然可以镜像搭建,但是本身原服务器就没有多少东西,所以我选择了手动搭建... 再且,也可以帮我再熟悉一下 centos 环境... 当然很多都是我之前OneNote的学习笔记,这里就直接复制和粘贴了(&#…

操作系统3——处理机调度与死锁

本系列博客重点在深圳大学操作系统课程的核心内容梳理&#xff0c;参考书目《计算机操作系统》&#xff08;有问题欢迎在评论区讨论指出&#xff0c;或直接私信联系我&#xff09;。 梗概 本篇博客主要介绍操作系统第三章处理机调度与死锁的相关知识。 目录 一、调度基本概念…

【FFmpeg实战】MP4封装格式分析

原文地址&#xff1a;https://www.cnblogs.com/moonwalk/p/16244932.html 解析工具&#xff1a; https://gpac.github.io/mp4box.js/test/filereader.html (mp4box) 1. 概述 mp4 容器格式相较于 flv、ts 容器格式来说&#xff0c;其定义较为复杂&#xff0c;本篇文章主要记录…