第12章 Docker 中 MySQL 的安装与配置
第12章 Docker 中 MySQL 的安装与配置
文章目录
- 第12章 Docker 中 MySQL 的安装与配置
- 前言
- 目标
- 环境
- 支持的不同版本 Tag 和相应的Dockerfile链接
- 安装
- 查找可安装对镜像
- 下载镜像
- 启动一个mysql服务器实例
- 启动一个带数据卷对mysql服务器容器实例
- 打开访问端口
- 从另一个Docker容器中的应用程序连接到MySQL
- 从MySQL命令行客户端连接到MySQL
- ...通过docker stack deploy或docker-compose
- 容器shell访问和查看MySQL日志
- 配置
- 使用自定义MySQL配置文件
- 没有cnf文件的配置
- 环境变量
- `MYSQL_ROOT_PASSWORD`
- `MYSQL_DATABASE`
- `MYSQL_USER`, `MYSQL_PASSWORD`
- `MYSQL_ALLOW_EMPTY_PASSWORD`
- `MYSQL_RANDOM_ROOT_PASSWORD`
- `MYSQL_ONETIME_PASSWORD`
- Docker Secrets
- 初始化一个新实例
- 注意事项(Caveats)
- 存储数据的位置
- 在MySQL 初始化完成之前没有连接
- 针对现有数据库的用法
- 创建数据库存储
- License
- 测试安装和配置
- 使用MyCat客户端测试
- 小结
- docker修改mysql配置
- 宿主机修改配置
- 容器直接编辑
- 设置mysql的字符集,gbk或utf-8,根据需要
- set character set
- default-character-set=utf8
- set character collation
- default-collation=gbk_chinese_ci
- Remove leading # to set options mainly useful for reporting servers.
- The server defaults are faster for transactions and fast SELECTs.
- Adjust sizes as needed, experiment to find the optimal values.
- join_buffer_size = 128M
- sort_buffer_size = 2M
- read_rnd_buffer_size = 2M
前言
- 为什么要使用 MySQL?
请访问官方网址了解www.mysql.com.
- 什么是 MySQL?
MySQL是世界上最流行的开源数据库。凭借其久经考验的性能,可靠性和易用性,MySQL已成为基于Web的应用程序的领先数据库选择,涵盖从个人项目和网站,电子商务和信息服务到高知名度的整个范围。网站属性包括Facebook,Twitter,YouTube,Yahoo!还有很多。
有关MySQL Server和其他MySQL产品的更多信息和相关下载,请访问www.mysql.com.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R3rBDtwe-1599611781370)(assets/logo.png)]
- 什么是 Docker?
具体请参考我的第08章内容。
- 为什么要在 Docker 中安装 MySQL?
为了开发环境一致性、可移植性、易于管理和维护性。
目标
- 完成 MySQL 在 Docker 中的安装与配置。
- 安装在 Docker 中的 MySQL 能正常对外提供服务。
- 在外部开发环境中能正常访问和使用 MySQL 服务。
环境
- **VMware:**VMware Workstation 14 Pro
- **Linux:**CentOS7.4
- **Docker:**18.06.0-ce, build 0ffa825
- **MySQL: **5.7.23
- **JDK:**jdk1.8.0_172
支持的不同版本 Tag 和相应的Dockerfile链接
8.0.12
,8.0
,8
,latest
(8.0/Dockerfile)5.7.23
,5.7
,5
(5.7/Dockerfile)5.6.41
,5.6
(5.6/Dockerfile)5.5.61
,5.5
(5.5/Dockerfile)
安装
MySQL是一种广泛使用的开源关系数据库管理系统(RDBMS)。
如何使用镜像安装?
查找可安装对镜像
$ sudo docker search mysql
下载镜像
$ sudo docker pull mysql:5.7.23
启动一个mysql服务器实例
$ sudo docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag$ sudo docker run --name mysql -p 3306:3306 -d konylrs/mysql:5.7.23
… some-mysql是要分配给容器的名称,my-secret-pw是为MySQL root用户设置的密码,tag是指定所需MySQL版本的标记。请参阅上面的列表以获取相关标签。
启动一个带数据卷对mysql服务器容器实例
$ sudo docker volume create --name mysql-datadir
$ sudo docker run -d --name mysql -p 3306:3306 -v /var/lib/docker/volumes/mysql-datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql123 -d mysql:5.7.23
命令的-v /my/own/datadir:/var/lib/mysql
部分将/my/own/datadir
目录从底层主机系统挂载到容器内的/var/lib/mysql
,默认情况下MySQL将写它的数据文件。
请注意,启用了SELinux的主机系统上的用户可能会遇到此问题。当前的解决方法是将相关的SELinux策略类型分配给新数据目录,以便允许容器访问它:
$ sudo chcon -Rt svirt_sandbox_file_t /var/lib/docker/volumes/mysql-datadir
打开访问端口
$ sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
## 重启防火墙
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-port
从另一个Docker容器中的应用程序连接到MySQL
此镜像公开标准MySQL端口(3306),因此容器链接使MySQL实例可用于其他应用程序容器。像这样启动你的应用程序容器,以便将它链接到MySQL容器:
$ docker run --name some-app --link some-mysql:mysql -d application-that-uses-mysql
从MySQL命令行客户端连接到MySQL
以下命令启动另一个mysql容器实例并对原始mysql容器运行mysql命令行客户端,允许您对数据库实例执行SQL语句:
$ sudo docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
… some-mysql是原始mysql容器的名称。
此镜像还可以用作非Docker或远程MySQL实例的客户端:
$ docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p
有关MySQL命令行客户端的更多信息可以在MySQL documentation 中找到
…通过docker stack deploy或docker-compose
mysql的stack.yml示例:
# Use root/example as user/password credentials
version: '3.1'services:db:image: mysqlcommand: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: exampleadminer:image: adminerrestart: alwaysports:- 8080:8080
运行docker stack deploy -c stack.yml mysql(或docker-compose -f stack.yml up)
,等待它完全初始化,然后访问http://swarm-ip:8080
,http://localhost:8080
,或http://host-ip:8080
(视情况而定)。
容器shell访问和查看MySQL日志
docker exec
命令允许您在Docker容器内运行命令。以下命令行将在mysql容器中为您提供一个bash shell:
$ sudo docker exec -it some-mysql bash
MySQL Server日志可通过Docker的容器日志获得:
$ sudo docker logs some-mysql
配置
使用自定义MySQL配置文件
MySQL的默认配置可以在/etc/mysql/my.cnf
中找到,它可以包含其他目录,例如/etc/mysql/conf.d
或/etc/mysql/mysql.conf.d
。请检查mysql镜像本身中的相关文件和目录以获取更多详细信息。
如果/my/custom/config-file.cnf
是自定义配置文件的路径和名称,则可以像这样启动mysql容器(请注意,此命令中仅使用自定义配置文件的目录路径):
$ sudo docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
这将启动一个新容器some-mysql
,其中MySQL实例使用/etc/mysql/my.cnf和/etc/mysql/conf.d/config-file.cnf
中的组合启动设置,后者的设置优先。
请注意,启用了SELinux的主机系统上的用户可能会遇到此问题。当前的解决方法是将相关的SELinux策略类型分配给新的配置文件,以便允许容器装入它:
$ sudo chcon -Rt svirt_sandbox_file_t /my/custom
没有cnf文件的配置
许多配置选项可以作为标志传递给mysqld。这将使您可以灵活地自定义容器,而无需cnf文件。例如,如果要更改所有表的默认编码和排序规则以使用UTF-8(utf8mb4),只需运行以下命令:
$ sudo docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
如果您想查看可用选项的完整列表,请运行:
$ docker run -it --rm mysql:tag --verbose --help
环境变量
启动mysql镜像时,可以通过在docker run命令行上传递一个或多个环境变量来调整MySQL实例的配置。请注意,如果使用已包含数据库的数据目录启动容器,则以下任何变量都不会产生任何影响:任何预先存在的数据库在容器启动时始终保持不变。
另请参阅https://dev.mysql.com/doc/refman/5.7/en/environment-variables.html以获取MySQL本身所遵循的环境变量的文档(尤其是MYSQL_HOST
等变量,已知这些变量在与此一起使用时会导致镜像问题)。
MYSQL_ROOT_PASSWORD
此变量是必需的,并指定将为MySQL root超级用户帐户设置的密码。在上面的例子中,它被设置为my-secret-pw
。
MYSQL_DATABASE
此变量是可选的,允许您指定要在镜像启动时创建的数据库的名称。如果提供了用户/密码(见下文),则该用户将被授予此数据库的超级用户访问权限(corresponding to对应于 GRANT ALL
) 。
MYSQL_USER
, MYSQL_PASSWORD
这些变量是可选的,可以结合使用来创建新用户并设置该用户的密码。此用户将被授予MYSQL_DATABASE
变量指定的数据库的超级用户权限(参见上文)。这两个变量都是创建用户所必需的。
请注意,不需要使用此机制来创建超级用户,默认情况下会使用MYSQL_ROOT_PASSWORD
变量指定的密码创建该用户。
MYSQL_ALLOW_EMPTY_PASSWORD
这是一个可选变量。设置为yes
以允许使用root用户的空密码启动容器。注意:建议不要将此变量设置为yes
,除非您确实知道自己在做什么,因为这会使您的MySQL实例完全不受保护,从而允许任何人获得完整的超级用户访问权限。
MYSQL_RANDOM_ROOT_PASSWORD
这是一个可选变量。设置为yes
以为root
用户生成随机初始密码(使用pwgen
)。生成的root
密码将打印到stdout(GENERATED ROOT PASSWORD:.....
)。
MYSQL_ONETIME_PASSWORD
初始化完成后,将root(不是MYSQL_USER
中指定的用户!)用户设置为已过期,在首次登录时强制更改密码。注意:此功能仅在MySQL 5.6+上受支持。在MySQL 5.5上使用此选项将在初始化期间抛出适当的错误。
Docker Secrets
作为通过环境变量传递敏感信息的替代方法,_FILE
可以附加到先前列出的环境变量,从而使初始化脚本从容器中存在的文件加载这些变量的值。特别是,这可以用于从存储在/run/secrets/<secret_name>
文件中的Docker机密加载密码。例如:
$ sudo docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:tag
目前,仅支持MYSQL_ROOT_PASSWORD
,MYSQL_ROOT_HOST
,MYSQL_DATABASE
,MYSQL_USER
和MYSQL_PASSWORD
。
初始化一个新实例
首次启动容器时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行扩展名为.sh
,.sql
和.sql.gz
的文件,这些文件位于/docker-entrypoint-initdb.d
中。文件将按字母顺序执行。您可以通过将SQL转储装入该目录 mounting a SQL dump into that directory 并使用提供的数据提供 custom images 来轻松填充您的mysql服务。默认情况下,SQL文件将导入到MYSQL_DATABASE
变量指定的数据库中。
注意事项(Caveats)
存储数据的位置
重要说明:有几种方法可以存储在Docker容器中运行的应用程序使用的数据。我们鼓励mysql镜像的用户熟悉可用的选项,包括:
-
让Docker通过使用自己的内部卷管理将数据库文件写入主机系统上的磁盘来管理数据库数据的存储by writing the database files to disk on the host system using its own internal volume management 。这是默认设置,对用户来说简单且相当透明。缺点是文件可能很难找到直接在主机系统上运行的工具和应用程序,即外部容器。
-
在主机系统(容器外部)上创建数据目录,并将其安装到容器内可见的目录中 mount this to a directory visible from inside the container 。这会将数据库文件放在主机系统上的已知位置,并使主机系统上的工具和应用程序可以轻松访问这些文件。缺点是用户需要确保目录存在,例如目录权限和主机系统上的其他安全机制已正确设置。
Docker文档是理解不同存储选项和变体的一个很好的起点,并且有多个博客和论坛帖子在这个领域讨论并提供建议。我们将在上面针对后一个选项简单地显示基本过程:
- 在主机系统上的适当卷上创建数据目录,例如
/my/own/datadir
。 - 像这样启动你的mysql容器:
$ sudo docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
命令的-v /my/own/datadir:/var/lib/mysql
部分将/my/own/datadir
目录从底层主机系统挂载到容器内的/var/lib/mysql
,默认情况下MySQL将写它的数据文件。
请注意,启用了SELinux的主机系统上的用户可能会遇到此问题。当前的解决方法是将相关的SELinux策略类型分配给新数据目录,以便允许容器访问它:
$ sudo chcon -Rt svirt_sandbox_file_t /my/own/datadir
在MySQL 初始化完成之前没有连接
如果容器启动时没有初始化数据库,则将创建默认数据库。虽然这是预期的行为,但这意味着在初始化完成之前它不会接受传入的连接。当使用自动化工具(例如docker-compose)同时启动多个容器时,这可能会导致问题。
如果您尝试连接到MySQL的应用程序无法处理MySQL停机或等待MySQL正常启动,那么在服务启动之前放置连接重试循环可能是必要的。有关官方镜像中此类实现的示例,请参阅 WordPress or Bonita。
针对现有数据库的用法
如果使用已包含数据库的数据目录(特别是mysql子目录)启动mysql容器实例,则应从运行命令行中省略$ MYSQL_ROOT_PASSWORD
变量。在任何情况下都会被忽略,并且不会以任何方式更改预先存在的数据库。
创建数据库存储
大多数普通工具都可以使用,尽管在某些情况下它们的使用可能有点复杂,以确保它们可以访问mysqld服务器。确保这一点的一种简单方法是使用docker exec
并从同一容器运行该工具,类似于以下内容:
$ sudo docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
License
View license information for the software contained in this image.
与所有Docker映像一样,这些映像也可能包含其他许可证(例如来自基本分发版的Bash等,以及所包含的主要软件的任何直接或间接依赖关系)。
Some additional license information which was able to be auto-detected might be found in the repo-info
repository’s mysql/
directory.
对于任何预先构建的图像使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。
测试安装和配置
使用MyCat客户端测试
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-flLUcA0q-1599611781374)(assets/1534060461039.png)]
测试连接成功,可以开始使用数据库了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DWicixrK-1599611781377)(assets/1534060533977.png)]
注意:在外部连接对时候,防火墙中打开数据库3306端口。
小结
安装和配置来自 MySQL 官方在 docker hub 上提供对镜像安装和配置的说明。
docker修改mysql配置
MySQL根据配置文件会限制Server接受的数据包大小。有时候插入、更新或查询时数据包的大小,会受 max_allowed_packet 参数限制,导致操作失败。
查看 max_allowed_packet 参数:
在客户端执行:
show VARIABLES like '%max_allowed_packet%';
得到结果如下:
宿主机修改配置
进入容器
docker exec -it 1383f2e49cb7 /bin/bash
退出容器
Ctrl+P+Q
查看配置
more /etc/mysql/mysql.conf.d/mysqld.cnf
(* 如果你执行到这步提示没有该文件,别着急,往下看)
编辑配置
第一种方式:将配置从容器中copy到宿主机(之前文章讲到过,可以去看下,如果没有该文件,那这一步省略,稍后直接将我写好的配置放到容器中就好)
docker cp mysql-service:/etc/mysql/mysql.conf.d/mysqld.cnf /opt/mysql/mysqld.cnf
mysqld.cnf脚本如下:
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA#
# The MySQL Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character_set_server=utf8
init_connect='SET NAMES utf8'
max_allowed_packet = 20M[mysql]
default-character-set = utf8[mysql.server]
default-character-set = utf8[mysqld_safe]
default-character-set = utf8[client]
default-character-set = utf8#兼容表情
character_set_server=utf8mb4
init_connect='SET NAMES utf8mb4'
#处理查询错误
max_allowed_packet = 40M[mysql]
default-character-set = utf8mb4[mysql.server]
default-character-set = utf8mb4[mysqld_safe]
default-character-set = utf8mb4[client]
default-character-set = utf8mb4
(* 请注意做好备份)
## 将修改后的配置copy到容器
docker cp /opt/mysql/mysqld.cnf mysql-service:/etc/mysql/mysql.conf.d/
容器直接编辑
在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是当你敲apt-get install vim命令时,提示:
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package vim
这时候需要敲:
apt-get update
这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
等更新完毕以后再敲命令:
apt-get install vim
vim /etc/mysql/mysql.conf.d/mysqld.cnf
接下来重启容器就可以了(可以参考之前的文章)
docker restart mysql-service
(* 1383f2e49cb7是容器的CONTAINER ID,可以通过docker ps看到 )
windows 配置
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.[mysqld]# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....# 绑定IPv4和3306端口
bind-address = 0.0.0.0
port = 3306# 设置mysql的安装目录
basedir=E:/mysql# 设置mysql数据库的数据的存放目录
datadir=E:/mysql/data# 允许最大连接数
max_connections=200default-storage-engine=INNODB
# default-storage-engine=MyISAM# 设置mysql的字符集,gbk或utf-8,根据需要
# set character set
# default-character-set=utf8# set character collation
# default-collation=gbk_chinese_ci# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2Msql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESwait_timeout=2886400
interactive_timeout =2886400
max_allowed_packet=40M
设置mysql的字符集,gbk或utf-8,根据需要
set character set
default-character-set=utf8
set character collation
default-collation=gbk_chinese_ci
Remove leading # to set options mainly useful for reporting servers.
The server defaults are faster for transactions and fast SELECTs.
Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
wait_timeout=2886400
interactive_timeout =2886400
max_allowed_packet=40M
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Maven的配置以及Maven与eclipse的整合详解(图文并茂)
1.下载maven,解压文件结构如图:2.在maven目录下,进入conf–>settings.xml文件,打开文件。其中需要配置本地仓库用于存放在maven远程仓库下载的jar包,本地库位置。因为下载jar包要访问外网,在Mirrors标签中添加阿里云镜像,下载更快。3.我的电脑右键属性,选择高级系统…...
2024/3/15 11:05:28 - 第13章 Docker 中 Redis 的安装与配置
第13章 Docker 中 Redis 的安装与配置 文章目录第13章 Docker 中 Redis 的安装与配置前言目标环境安装Supported tags and respective `Dockerfile` links查找镜像下载镜像启动redis实例从持久存储开始从应用程序连接到它......或通过redis-cli另外,如果你想使用自己的redis.c…...
2024/5/2 11:19:32 - 第14章 Docker 中 Zookeeper 的安装与配置
第14章 Docker 中 zookeeper 的安装与配置 文章目录第14章 Docker 中 zookeeper 的安装与配置前言目标环境概述设计目标(Design Goals)数据模型和分层命名空间(Data model and the hierarchical namespace)节点和短暂节点(Nodes and ephemeral nodes)有条件的更新和监控(…...
2024/5/1 4:07:07 - 第15章 Docker 中 ActiveMQ 的安装与配置
第15章 Docker 中 ActiveMQ 的安装与配置 文章目录第15章 Docker 中 ActiveMQ 的安装与配置前言目标环境介绍特性(Features)版本硬件要求中央处理器(CPU)内存(Memory)存储(Storage)安装(Installation)快速开始(Quick Start)配置(Configuration)访问普通用户(Reg…...
2024/4/23 11:13:47 - 第16章 Docker 中 RabbiteMQ 的安装与配置及使用
第16章 Docker 中 RabbiteMQ 的安装与配置及使用 文章目录第16章 Docker 中 RabbiteMQ 的安装与配置及使用前言目标环境介绍快速参考(Quick reference)什么是RabbitMQ?如何使用此镜像运行守护进程(Running the daemon)内存限制(Memory Limits)Erlang CookieManagement P…...
2024/4/29 9:42:30 - Qt学习笔记
学习资源:Qt版本:5.9.2视频资源:https://www.bilibili.com/video/BV1XW411x7NU?from=search&seid=3132319167432312960学习内容:至本博客完成,学至核心控件与浮动窗口。学习代码示例:#include<QApplication> #include<QWidget> #include<QPushButton…...
2024/4/21 3:44:54 - 第17章 Docker 中 MongoDB 的安装与配置及使用
第17章 Docker 中 MongoDB 的安装与配置及使用2018-10-14文章目录第17章 Docker 中 MongoDB 的安装与配置及使用前言目标环境介绍快速参考(Quick reference)什么是MongoDB?如何使用此镜像启动mongo服务器实例从另一个Docker容器连接到MongoDB...通过docker stack deploy或do…...
2024/3/24 8:30:39 - maven 多模块打包记
背景 九月初,炎夏褪去,秋微凉。最近,不知从哪一天开始,早上 5 点钟起床时,天还没亮;晚上不到 7 点,天已黑;四季的车轮,就在人无所察觉时轰隆而过! 言归正传,今天介绍一下 maven 多模块打包过程中蹚过的点,昨天整整耗费一整天的时间,玩了一个 mvn -X clean install…...
2024/4/18 22:33:24 - 外包公司派遣到网易,上班地点网易大厦,转正后工资8k-10k,13薪,包三餐,值得去吗?
请肆无忌惮地点赞吧,微信搜索【沉默王二】关注这个在九朝古都洛阳苟且偷生的程序员。 本文 GitHub github.com/itwanger 已收录,里面还有我精心为你准备的一线大厂面试题。题目很长,但映入眼帘的,只有两个字——不是“网易”,是“外包”了。 很想来谈谈这个话题,因为我已…...
2024/4/19 1:52:05 - 【Flutter 实战】各种各样形状的组件
老孟导读:Flutter中很多组件都有一个叫做shape的属性,类型是ShapeBorder,比如Button类、Card等组件,shape表示控件的形状,系统已经为我们提供了很多形状,对于没有此属性的组件,可以使用 Clip 类组件进行裁减。BeveledRectangleBorder 斜角矩形边框,用法如下: RaisedBu…...
2024/4/13 9:42:24 - Spring Boot + Activiti 在浏览器显示工作流图
本篇承接上一篇: Spring Boot + Activiti 工作流框架搭建 Activiti 版本是:7.1.0.M6 总概 在Activiti 7 版本中,导出流程图的功能独立成一个独立的依赖包, 默认的导出格式是SVG的图片。所以,导出流程图的功能开发主要是3步:导入图片导出的依赖包 定义导出图片需要的Bean…...
2024/3/15 12:06:45 - Java多线程 多个人转账发生死锁
文章目录多个人转账发生死锁 多个人转账发生死锁 人数多的时候, 依然会发生死锁, 遵循墨菲定律. 虽然人多的时候发生死锁的几率不高, 但是危害大. 此节的代码中, 需要用到上一节的代码, 链接如下. https://javaweixin6.blog.csdn.net/article/details/108475207 此节的代码如下…...
2024/4/19 4:05:06 - 这些 ECMAScript 模块知识,都是我需要知道的
作者:Valentino Gagliardi 译者:前端小智 来源:valentinog点赞再看,微信搜索 【大迁世界】 关注这个没有大厂背景,但有着一股向上积极心态人。本文 GitHub https://github.com/qq449245884/xiaozhi 上已经收录,文章的已分类,也整理了很多我的文档,和教程资料。ES 模块是…...
2024/4/22 12:52:26 - 为什么 char 数组比 String 更适合存储密码?
推荐阅读:5 个刁钻的 String 面试题! 另一个基于 String 的棘手 Java 问题,相信我只有很少的 Java 程序员可以正确回答这个问题。 这是一个真正艰难的核心 Java 面试问题,并且需要对 String 的扎实知识才能回答这个问题。 这是最近在 Java 面试中向我的一位朋友询问的问题。…...
2024/4/18 20:32:02 - 解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“
如果常规检查都做过可以仔细看下https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Global_Return_Code.html这个里面的报错原因如果都不是那么极有可能是(看样子你的H5页面日活人数还蛮多[呲牙])获取腾讯微信平台access_token超过每日默认上限2000次导致无…...
2024/4/30 0:25:12 - 生活随记 - 食堂偶遇的两个小伙伴
去楼下中餐馆吃饭,那了餐具打好饭,餐厅生意挺好,没有单独的空餐桌了,看到一个圆桌上有2个空位,我就坐下了,同桌的是2个小伙子(暂时称呼为a和b),穿找外卖套装,估计是中午休息时间赶着吃点饭。有一个小伙子a吃饭间隙打开手机,鼠标点点,似乎在忙着什么。小伙b看到了,…...
2024/4/19 0:57:34 - 【Spring】IOC容器注解汇总,你想要的都在这儿了!!
写在前面之前,我们在【Spring】专题中更新了不少关于Spring注解相关的文章,有些小伙伴反馈说,看历史文章的话比较零散,经常会忘记自己看到哪一篇了。当打开一篇新文章时,总感觉自己似乎是看到过了,又感觉自己没有看到过。那怎么办呢?为了小伙伴们查看方便,我在这里将Sp…...
2024/4/18 20:27:54 - windows系统中创建虚拟环境
文章目录1. 前言2. 说明3. 虚拟磁盘创建3.1 创建windows(VHD)虚拟磁盘3.2 虚拟磁盘加密4、温馨一刻 1. 前言 最近时不时就换电脑搞事情,反复的配环境,引用我老师说JJK的话“你这太让人恼火了”,哈哈。虽然机智的我知道后面存在换主机为一个确定事件,所以一开始就把各种需求…...
2024/3/15 12:06:38 - 学习笔记 - 关于postgres软解析
周末在家趁孩子睡午觉,学习一会postgres,这个号称可以取代oracle数据库的开源数据库,一直以来关注着。oracle工作学习中让人印象深刻和比较难以琢磨领悟的就是软解析和硬解析。那么postgres里面这块是怎么样的呢?和oracle又有哪些区别呢?其中最大的区别就是oracle里面有sg…...
2024/4/19 9:50:21 - 思科路由器
路由器设备IOS备份:备份步骤:1. 确保tftp服务器和路由器在同一个LAN中2. 思科拓扑:3. 路由器备份配置命令:R1#show flash: System flash directory: File Length Name/status3 50938004 c2800nm-advipservicesk9-mz.124-15.T1.bin2 28282 sigdef-category.xml1 …...
2024/4/17 2:17:56
最新文章
- 编程一定要学好汉语,英语是次要的
首先,我很感谢今日头条编辑的盛情邀请,以这个问题发表看法。 我从事小学生编程已经整整二十多年了,发现小朋友学不会编程的最主要的原因有以下几个方面: 一、拼音没有学好 很多小孩子学编程时,键盘都不会打…...
2024/5/2 12:33:47 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - dp小兰走迷宫
昨天学习了bfs的基本概念,今天来做一道经典习题练练手吧! bfs常用的两类题型 1.从A出发是否存在到达B的路径(dfs也可) 2.从A出发到B的最短路径(数小:<20才能用dfs) 遗留的那个问题的答案- 题目:走迷宫 #incl…...
2024/5/2 10:47:23 - 最新AI智能系统ChatGPT网站源码V6.3版本,GPTs、AI绘画、AI换脸、垫图混图+(SparkAi系统搭建部署教程文档)
一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持GPT…...
2024/5/1 9:27:34 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/5/2 11:19:01 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/5/1 13:20:04 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/1 21:18:12 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/2 9:47:31 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/2 9:47:31 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/5/2 6:03:07 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/2 9:47:30 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/1 11:24:00 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/2 5:31:39 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/1 20:22:59 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/5/2 9:47:28 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/5/2 9:47:27 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/5/2 0:07:22 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/2 8:37:00 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/2 9:47:26 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/2 9:47:25 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/1 14:33:22 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/1 11:51:23 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/2 7:30:11 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/1 20:56:20 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57