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

(十一) Docker compose 部署 Mysql 和 其它容器

文章目录

  • 1、前言
    • 1.1、部署 MySQL 容器的 3 种类型
    • 1.2、M2芯片类型问题
  • 2、具体实现
    • 2.1、单独部署 mysql 供宿主机访问
      • 2.1.1、文件夹结构
      • 2.1.2、docker-compose.yml 内容
      • 2.1.3、运行
    • 2.2、单独部署 mysql 容器供其它容器访问(以 apollo 为例)
      • 2.2.1、文件夹结构
      • 2.2.2、docker-compose.yml 内容
      • 2.2.3、运行
      • 2.2.4、 客户端配置
    • 2.3、使用一个 compose 文件,同时部署 mysql 和其它容器(以 apollo 为例)
      • 2.3.1、文件夹结构
      • 2.3.2、compose 文件内容
      • 2.3.3、运行
      • 2.3.4、 客户端配置
  • 3、附录
    • 3.1、调试可能用到的命令
    • 3.2、apollo 配置参考

1、前言

1.1、部署 MySQL 容器的 3 种类型

在容器中部署 Mysql 会有三种网络分布类型:

  • 单独部署 mysql 容器,宿主机通过端口映射访问 容器 mysql

  • 使用两个 compose 文件,分别部署 mysql 容器和其它容器(比如 apollo 的 config-service、admin-service、portal)

  • 使用一个 compose 文件,同时部署 mysql 和其它容器(比如 apollo 的 config-service、admin-service、portal),其它容器通过mysql容器名:容器端口访问 mysql,此时相当于一次部署了 4 个容器

1.2、M2芯片类型问题

容器来自镜像,而镜像和芯片架构有关。
部署完容器之后,又会涉及一些工具软件(比如 workbench)的适配问题。

一般而言,使用 compose 直接使用 镜像名:latest 即可,但是使用 Mysql,为了寻求 M2芯片&mysql镜像&workbench 适配,我们需要增加一些特殊配置。

  • 指定架构类型
    platform: linux/amd64 #x86_64 系统(大多数桌面和服务器)
    platform: linux/arm64 #ARM64 系统(例如 Apple M1/M2
    platform: linux/arm/v7 #32 位 ARM 系统(例如旧版 Raspberry Pi)

  • 指定 镜像版本

image: mysql:8.0.30

2、具体实现

2.1、单独部署 mysql 供宿主机访问

2.1.1、文件夹结构

sql 可以放置 xxx.sql 脚本,不过建议容器启动后,再手动执行。
data 为宿主机挂载容器的数据目录。
在这里插入图片描述

2.1.2、docker-compose.yml 内容

# 如果需要自定义共享网络 
# docker network create bestcxx-network
# 自定义工程名称,默认文件夹名,影响注册网络名,AAA_网络名,或者 docker-compose -p diy_project_name up 启动时定义
# 外部连接时,需要 &allowPublicKeyRetrieval=true 以支持明文连接数据库
version: '3.8'services:mysql-db-withdata:#platform:  linux/arm64 #非 arm 架构芯片可以注释本行image: mysql:8.0.30 #M2 版本 8.0.30,目前最新 workbench 最高到 8  #非 arm 架构芯片可以写 image: mysql:latestcontainer_name: mysql-db-withdatarestart: alwaysports:- "13306:3306"environment:MYSQL_ROOT_PASSWORD: rootadminMYSQL_DATABASE: apollodbMYSQL_USER: userapolloMYSQL_PASSWORD: userapollovolumes:#- ./sql:/docker-entrypoint-initdb.d # 自动加载运行 /sql 目录下的脚本 xxx.sql- ./data:/var/lib/mysql # 在宿主机持久化数据networks:bestcxx-network:
networks:bestcxx-network:

2.1.3、运行

在 Mysql 文件夹目录下执行

# docker-compose stop
docker-compose up -d

2.2、单独部署 mysql 容器供其它容器访问(以 apollo 为例)

最终容器运行形态展示
在这里插入图片描述

这里需要为两个容器创建一个共同的容器网络。
默认情况下,每启动一个容器,会自动创建一个 文件夹_网络名 的容器网络,当多个 compose 文件启动容器时,可以在命令行加入配置,使得不同的 compose 启动的多个容器使用共同的容器名、内部定义相同的网络名——最终共享同一个容器网络。

  • 创建一个容器网络,网络名为 bestcxx-network
docker network create bestcxx-network
  • compose 使用指定工程名,实际出册网络为 工程名_compose设置的网络名
# 默认会以文件夹作为工程名 docker-compose up -d
docker-compose -p diy_project_name up # 以 diy_project_name 作为工程名
  • compose 设定使用外部已有网络

如下,使用名为 bestcxx-network 的外部网络

networks:bestcxx-network:external: true
  • 查看容器网络列表
docker network ls
  • 删除容器网络
docker network rm  mysql_bestcxx-network

2.2.1、文件夹结构

  • mysql
    sql 可以放置 xxx.sql 脚本,不过建议容器启动后,再手动执行。
    data 为宿主机挂载容器的数据目录。
    在这里插入图片描述
  • apollo
    在这里插入图片描述

2.2.2、docker-compose.yml 内容

  • mysql
# 如果需要自定义共享网络 
# docker network create bestcxx-network
# 自定义工程名称,默认文件夹名,影响注册网络名,AAA_网络名,或者 docker-compose -p diy_project_name up 启动时定义
# 外部连接时,需要 &allowPublicKeyRetrieval=true 以支持明文连接数据库
version: '3.8'services:mysql-db-withdata:#platform:  linux/arm64 #非 arm 架构芯片可以注释本行image: mysql:8.0.30 #M2 版本 8.0.30,目前最新 workbench 最高到 8  #非 arm 架构芯片可以写 image: mysql:latestcontainer_name: mysql-db-withdatarestart: alwaysports:- "13306:3306"environment:MYSQL_ROOT_PASSWORD: rootadminMYSQL_DATABASE: apollodbMYSQL_USER: userapolloMYSQL_PASSWORD: userapollovolumes:#- ./sql:/docker-entrypoint-initdb.d # 自动加载运行 /sql 目录下的脚本 xxx.sql- ./data:/var/lib/mysql # 在宿主机持久化数据networks:bestcxx-network:
networks:bestcxx-network:external: true
  • apollo

version: '3.6'
services:config-service:image: apolloconfig/apollo-configservicecontainer_name: apollo-config-servicehostname: config-serviceenvironment:#- SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8- SPRING_DATASOURCE_URL=jdbc:mysql://mysql-db-withdata:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8&allowPublicKeyRetrieval=true- SPRING_DATASOURCE_USERNAME=userapollo- SPRING_DATASOURCE_PASSWORD=userapollo- JAVA_OPTS=-Deureka.instance.homePageUrl=http://127.0.0.1:8080ports:- 8080:8080 # 宿主机端口 : 容器端口networks:bestcxx-network:admin-service:image: apolloconfig/apollo-adminservicecontainer_name: apollo-admin-servicehostname: admin-serviceenvironment:#- SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8- SPRING_DATASOURCE_URL=jdbc:mysql://mysql-db-withdata:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8&allowPublicKeyRetrieval=true- SPRING_DATASOURCE_USERNAME=userapollo- SPRING_DATASOURCE_PASSWORD=userapollo- CONFIGSERVICE_URL=http://config-service:8080- JAVA_OPTS=-Deureka.instance.homePageUrl=http://admin-service:8090ports:- 8090:8090depends_on:- config-servicenetworks:bestcxx-network:portal:image: apolloconfig/apollo-portalcontainer_name: apollo-portalhostname: portalenvironment:#- SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8- SPRING_DATASOURCE_URL=jdbc:mysql://mysql-db-withdata:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8&allowPublicKeyRetrieval=true- SPRING_DATASOURCE_USERNAME=userapollo- SPRING_DATASOURCE_PASSWORD=userapollo- APOLLO_PORTAL_ENVS=dev- DEV_META=http://config-service:8080- JAVA_OPTS=-Deureka.instance.homePageUrl=http://portal:8070ports:- 8070:8070depends_on:- config-service- admin-servicenetworks:bestcxx-network:networks:bestcxx-network:external: true

2.2.3、运行

  • 创建网络
docker network create bestcxx-network

在这里插入图片描述

  • 以指定工程名方式启动 mysql
    在 Mysql 文件夹下执行
docker-compose -p diy_project_name up

然后进行操作(建议使用 workbench)

#给用户 userapollo 授权-可以全部授权CREATEUSER'userapollo'@'%' IDENTIFIED BY'userapollo';GRANTALL PRIVILEGES ON ApolloConfigDB.*TO'userapollo'@'%';GRANTALL PRIVILEGES ON ApolloPortalDB.*TO'userapollo'@'%';FLUSH PRIVILEGES;#创建数据库:
CREATE DATABASE ApolloConfigDB;
CREATE DATABASE ApolloPortalDB;#执行 apollo 官方建表&初始化 sql
https://github.com/apolloconfig/apollo/tree/master/scripts/sql# 执行开发环境适配 sql
UPDATE `ApolloConfigDB`.`ServerConfig` SET `Value` = 'http://config-service:8080/eureka/' WHERE (`Id` = '1');
UPDATE `ApolloPortalDB`.`ServerConfig` SET `Value` = '{\"dev\":\"http://config-service:8080\"}' WHERE (`Id` = '8');
  • 以指定工程名方式启动 apollo
    在 Apollo 文件夹下执行
docker-compose -p diy_project_name up

2.2.4、 客户端配置

{"apollo": {"AppId": "helloabp","Env": "dev","Cluster": "default","MetaServer": "http://localhost:8080","Namespaces": ["hello.web.json"]},"ClientId": "bestcxxLocal"
}

2.3、使用一个 compose 文件,同时部署 mysql 和其它容器(以 apollo 为例)

  • 最终形态
    在这里插入图片描述
  • 容器网络
    在这里插入图片描述

2.3.1、文件夹结构

sql 可以放置 xxx.sql 脚本,不过建议容器启动后,再手动执行。
data 为宿主机挂载容器的数据目录。
在这里插入图片描述

2.3.2、compose 文件内容

  • ApolloMysql
version: '3.6'services:mysql-db-withdata:#platform:  linux/arm64 #非 arm 架构芯片可以注释本行image: mysql:8.0.30 #M2 版本 8.0.30,目前最新 workbench 最高到 8  #非 arm 架构芯片可以写 image: mysql:latestcontainer_name: mysql-db-withdatarestart: alwaysports:- "13306:3306"environment:MYSQL_ROOT_PASSWORD: rootadminMYSQL_DATABASE: apollodbMYSQL_USER: userapolloMYSQL_PASSWORD: userapollovolumes:- ./sql:/docker-entrypoint-initdb.d # 自动加载运行 /sql 目录下的脚本 xxx.sql- ./data:/var/lib/mysql # 在宿主机持久化数据networks:apollo-network:config-service:image: apolloconfig/apollo-configservicecontainer_name: apollo-config-servicehostname: config-serviceenvironment:- SPRING_DATASOURCE_URL=jdbc:mysql://mysql-db-withdata:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8&allowPublicKeyRetrieval=true- SPRING_DATASOURCE_USERNAME=userapollo- SPRING_DATASOURCE_PASSWORD=userapollo- JAVA_OPTS=-Deureka.instance.homePageUrl=http://127.0.0.1:8080 #配置为 http://config-service:8080 可避免 http://127.0.0.1:8070/system_info.html check 报错,但是需要额外 /etc/hosts 配置ports:- 8080:8080 # 宿主机端口 : 容器端口networks:apollo-network:admin-service:image: apolloconfig/apollo-adminservicecontainer_name: apollo-admin-servicehostname: admin-serviceenvironment:- SPRING_DATASOURCE_URL=jdbc:mysql://mysql-db-withdata:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8&allowPublicKeyRetrieval=true- SPRING_DATASOURCE_USERNAME=userapollo- SPRING_DATASOURCE_PASSWORD=userapollo- CONFIGSERVICE_URL=http://config-service:8080- JAVA_OPTS=-Deureka.instance.homePageUrl=http://admin-service:8090ports:- 8090:8090depends_on:- config-servicenetworks:apollo-network:portal:image: apolloconfig/apollo-portalcontainer_name: apollo-portalhostname: portalenvironment:- SPRING_DATASOURCE_URL=jdbc:mysql://mysql-db-withdata:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8&allowPublicKeyRetrieval=true- SPRING_DATASOURCE_USERNAME=userapollo- SPRING_DATASOURCE_PASSWORD=userapollo- APOLLO_PORTAL_ENVS=dev- DEV_META=http://config-service:8080- JAVA_OPTS=-Deureka.instance.homePageUrl=http://portal:8070ports:- 8070:8070depends_on:- config-service- admin-servicenetworks:apollo-network:networks:apollo-network:driver: bridge

2.3.3、运行

  • 以指定工程名方式启动 mysql
    在 ApolloMysql 文件夹下执行
docker-compose up -d

此时数据库启动,其余三个服务启动失败

  • 然后进行操作(建议使用 workbench)
#给用户 userapollo 授权-可以全部授权
CREATEUSER'userapollo'@'%' IDENTIFIED BY'userapollo';GRANTALL PRIVILEGES ON ApolloConfigDB.*TO'userapollo'@'%';GRANTALL PRIVILEGES ON ApolloPortalDB.*TO'userapollo'@'%';FLUSH PRIVILEGES;#创建数据库:
CREATE DATABASE ApolloConfigDB;
CREATE DATABASE ApolloPortalDB;#执行 apollo 官方建表&初始化 sql
https://github.com/apolloconfig/apollo/tree/master/scripts/sql# 执行开发环境适配 sql
UPDATE `ApolloConfigDB`.`ServerConfig` SET `Value` = 'http://config-service:8080/eureka/' WHERE (`Id` = '1');
UPDATE `ApolloPortalDB`.`ServerConfig` SET `Value` = '{\"dev\":\"http://config-service:8080\"}' WHERE (`Id` = '8');
  • 然后依次启动 config-service、admin-service、portal
    portal 可能还会少量报错,这是因为初始化配置需要发布下

2.3.4、 客户端配置

{"apollo": {"AppId": "helloabp","Env": "dev","Cluster": "default","MetaServer": "http://localhost:8080","Namespaces": ["hello.web.json"]},"ClientId": "bestcxxLocal"
}

3、附录

3.1、调试可能用到的命令

docker-compose stop 
docker-compose up -d 

3.2、apollo 配置参考

{"MyApollo": {"Name": "bestcxx"}
}

相关文章:

(十一) Docker compose 部署 Mysql 和 其它容器

文章目录 1、前言1.1、部署 MySQL 容器的 3 种类型1.2、M2芯片类型问题 2、具体实现2.1、单独部署 mysql 供宿主机访问2.1.1、文件夹结构2.1.2、docker-compose.yml 内容2.1.3、运行 2.2、单独部署 mysql 容器供其它容器访问(以 apollo 为例)2.2.1、文件…...

提高项目透明度:有效的跟踪软件

国内外主流的10款项目进度跟踪软件对比:PingCode、Worktile、Teambition、Tower、Asana、Trello、Jira、ClickUp、Notion、Liquid Planner。 在项目管理中,确保进度跟踪的准确性与效率是每位项目经理面临的主要挑战之一。选用合适的项目进度跟踪软件不仅…...

大模型生成人物关系思维导图的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...

精通 mysqldumpslow:深度分析 MySQL 慢查询日志

引言 在数据库管理与优化的领域中,慢查询日志是识别性能瓶颈的金矿。mysqldumpslow 工具是挖掘这座金矿的利器,它帮助我们分析 MySQL 慢查询日志并提取关键信息。本文将详细介绍 mysqldumpslow 的核心选项,并通过实例展示如何使用这些选项来…...

C# Winform之propertyGrid控件分组后排序功能

在 WinForms 的 PropertyGrid 控件中,你可以通过多种方式对属性进行排序,包括按类别(Category)排序以及按属性名称排序。默认情况下,PropertyGrid 控件会根据 [Category] 和 [DisplayName] 属性装饰器对属性进行分组和…...

Java基础(十九):集合框架

目录 一、Java集合框架体系二、Collection接口及方法1、添加2、判断3、删除4、其它 三、Iterator(迭代器)接口1、Iterator接口2、迭代器的执行原理3、foreach循环 四、Collection子接口1:List1、List接口特点2、List接口方法3、List接口主要实现类:Array…...

execute_script与JS

JavaScript简称JS,有的测试场景需要JS脚本辅助完成Selenium无法做到的测试工作。webdriver提供了execute_script()方法调用JS代码。execute_script()可以在当前窗口/框架中执行JS脚本,并返回结果。可以使用它操作DOM元素、获取元素属性、执行异步操作等。…...

访问 Postman OAuth 2.0 授权的最佳实践

OAuth 2.0 代表了 web 安全协议的发展,便于在多个平台上进行授权服务,同时避免暴露用户凭据。它提供了一种安全的方式,让用户可以授权应用程序访问服务。 在 Postman 中开始使用 OAuth 2.0 Postman 是一个流行的API客户端,支持 …...

《BASeg: Boundary aware semantic segmentation for autonomous driving》论文解读

期刊:Neural Networks | Journal | ScienceDirect.com by Elsevier 年份:2023 代码:https://github.com/Lature-Yang/BASeg 摘要 语义分割是自动驾驶领域街道理解任务的重要组成部分。现有的各种方法要么专注于通过聚合全局或多尺度上下文…...

高效利用iCloud指南

高效利用iCloud的指南主要包括以下几个方面: 一、注册与登录 创建Apple ID: 如果尚未拥有Apple ID,可以在苹果官网或iOS设备的设置中创建。Apple ID是访问iCloud服务的前提。登录iCloud: 在苹果设备上,进入“设置”应…...

【MySQL】常见的MySQL日志都有什么用?

MySQL日志的内容非常重要,面试中经常会被问到。同时,掌握日志相关的知识也有利于我们理解MySQL 底层原理,必要时帮助我们排查解决问题。 MySQL中常见的日志类型主要有下面几类(针对的是InnoDB 存储引擎): 错误日志(error log):对 MySQL 的启…...

IDEA社区版使用Maven archetype 创建Spring boot 项目

1.新建new project 2.选择Maven Archetype 3.命名name 4.选择存储地址 5.选择jdk版本 6.Archetype使用webapp 7.create创建项目 创建好长这样。 检查一下自己的Maven是否是自己的。 没问题的话就开始增添java包。 [有的人连resources包也没有,那就需要自己添…...

C/C++ list模拟

模拟准备 避免和库冲突&#xff0c;自己定义一个命名空间 namespace yx {template<class T>struct ListNode{ListNode<T>* _next;ListNode<T>* _prev;T _data;};template<class T>class list{typedef ListNode<T> Node;public:private:Node* _…...

android studio开发

Kotlin 编程简介 | Android Basics Compose - First Android app | Android Developers (google.cn) 这是官网的教程&#xff0c;实现试一下。 之后进入课程 您的第一个 Kotlin 程序 (google.cn) 程序可以被视为一系列指示计算机或设备执行某项操作的指令&#xff0c;...

PostgreSQl 物化视图

物化视图&#xff08;Materialized View&#xff09;是 PostgreSQL 提供的一个扩展功能&#xff0c;它是介于视图和表之间的一种对象。 物化视图和视图的最大区别是它不仅存储定义中的查询语句&#xff0c;而且可以像表一样存储数据。物化视图和表的最大区别是它不支持 INSERT…...

Win10工具:批量word转png图片

首先声明这个小工具是小编本人开发的&#xff0c;无任何广告&#xff0c;会员收费机制等&#xff0c;永久使用。允许公司或个人使用&#xff0c;不允许倒卖&#xff0c;否则发现后会追究法律责任&#xff0c;毕竟开发不易。工具是用python开发的。 功能非常单一&#xff0c;就…...

期货量化交易客户端开源教学第八节——TCP通信服务类

private FReciveStr: AnsiString; {接收到的数据} IsConErr: Boolean; {网络连接是否失败} FSocket_LB: Integer; {TCP连接类别,0为交易,1为行情,2为查询} FRetryCount: Integer; {网络连接重试次数} FLoginErrEvent: TLoginErrEvent; {…...

bi项目笔记

1.bi是什么 bi项目就是商业智能系统&#xff0c;也就是数据可视画、报表可视化系统&#xff0c;如下图的就是bi项目了 2.技术栈...

金蝶云苍穹-插件开发(四)GPT开发相关插件

我只对GPT开发的相关插件进行讲解&#xff0c;因为我的是插件开发教程&#xff0c;关于GPT的一些提示词的写法&#xff0c;GPT任务的配置&#xff0c;请去金蝶云苍穹的文档和社区内学习。 GPT自定义操作 GPT自定义操作的代码的类要实现 IGPTAction 这个接口&#xff0c;这个接…...

【机器学习】精准农业新纪元:机器学习引领的作物管理革命

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 精准农业的背景与现状&#x1f341;精准农业的概念与发展历程&#x1f342;国内外精准农业实践案…...

IHP作业队列系统:提升后台任务处理效率的终极指南

IHP作业队列系统&#xff1a;提升后台任务处理效率的终极指南 【免费下载链接】ihp &#x1f525; The fastest way to build type safe web apps. IHP is a new batteries-included web framework optimized for longterm productivity and programmer happiness 项目地址: …...

开发者利器:OpenClaw+千问3.5-9B自动生成单元测试

开发者利器&#xff1a;OpenClaw千问3.5-9B自动生成单元测试 1. 为什么需要AI生成单元测试 作为一名长期奋战在一线的开发者&#xff0c;我深知单元测试的重要性——它不仅是代码质量的守护者&#xff0c;更是重构时的安全网。但现实情况是&#xff0c;在紧张的开发周期中&am…...

【Python数据分析筑基】第九讲:时间序列分析入门——用Pandas解锁时间维度的数据洞察(万字长文+实战)

【Python数据分析筑基】第九讲&#xff1a;时间序列分析入门——用Pandas解锁时间维度的数据洞察&#xff08;万字长文实战&#xff09; 摘要&#xff1a;本文是《Python数据分析根据方向打牢Python基础10讲》系列的第九篇。在前八讲分别夯实了通用Python、NumPy、Pandas基础、…...

嵌入式Linux牛棚养殖监护系统开发实战

1. 项目概述作为一名在嵌入式系统开发领域摸爬滚打多年的工程师&#xff0c;我最近完成了一个很有意思的实战项目——基于嵌入式Linux的牛棚养殖监护系统。这个项目完美结合了嵌入式开发、传感器技术和Qt界面设计&#xff0c;实现了对养殖环境的智能化管理。不同于市面上那些简…...

OpenClaw资源监控技巧:Qwen2.5-VL-7B任务执行时的系统负载观察

OpenClaw资源监控技巧&#xff1a;Qwen2.5-VL-7B任务执行时的系统负载观察 1. 为什么需要监控OpenClaw的资源使用&#xff1f; 上周我在本地部署了Qwen2.5-VL-7B模型&#xff0c;准备用OpenClaw实现一个自动化图文处理工作流。刚开始运行时一切顺利&#xff0c;但连续执行几个…...

终极指南:pangu.js如何智能识别并保护文件路径的排版规则

终极指南&#xff1a;pangu.js如何智能识别并保护文件路径的排版规则 【免费下载链接】pangu.js Opinionated paranoid text spacing in JavaScript 项目地址: https://gitcode.com/gh_mirrors/pa/pangu.js 如果你经常在技术文档、代码注释或博客文章中看到中英文混排时…...

JAVA自动装箱自动拆箱

自动装箱与自动拆箱深层次讲解自动装箱&#xff08;Autoboxing&#xff09;和自动拆箱&#xff08;Unboxing&#xff09;是Java语言中的特性&#xff0c;用于简化基本数据类型&#xff08;如int、double&#xff09;与其对应包装类&#xff08;如Integer、Double&#xff09;之…...

Arduino_QTouch库深度解析:AVR电容触摸驱动原理与工业实践

1. Arduino_QTouch 库深度解析&#xff1a;面向嵌入式工程师的 Qtouch 电容式触摸传感器驱动实践指南Atmel&#xff08;现为 Microchip&#xff09;Qtouch 技术是工业级电容式触摸感应方案的标杆之一&#xff0c;其核心优势在于高抗噪性、低功耗、强环境适应性及无需覆盖层的裸…...

MHY_Scanner:米哈游游戏毫秒级扫码登录的终极解决方案

MHY_Scanner&#xff1a;米哈游游戏毫秒级扫码登录的终极解决方案 【免费下载链接】MHY_Scanner MHY扫码登录器&#xff0c;支持从直播流抢码。 项目地址: https://gitcode.com/gh_mirrors/mh/MHY_Scanner 在游戏直播抢码的激烈竞争中&#xff0c;传统手动扫码登录面临着…...

NCM音乐格式转换完全指南:从加密困境到自由播放的解决方案

NCM音乐格式转换完全指南&#xff1a;从加密困境到自由播放的解决方案 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 一、问题解析&#xff1a;NCM格式的技术困境与用户痛点 当你下载了喜爱的音乐却发现只能在特定应用中播放&…...