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

Docker生存手册:安装到服务一本通

文章目录

  • 一. Docker 容器介绍
    • 1.1 什么是Docker容器?
    • 1.2 为什么需要Docker容器?
    • 1.3 Docker架构
    • 1.4 Docker 相关概念
    • 1.5 Docker特点
  • 二. Docker 安装
    • 2.1 查看Linux内核版本
    • 2.2 卸载老版本docker,避免产生影响
    • 2.3 升级yum 和配置源
    • 2.4 安装Docker
    • 2.5 启动Docker
    • 2.6 验证Docker
    • 2.7 设置Docker开机自启
    • 2.8 配置镜像加速器
    • 2.9 验证镜像加速是否生效
    • 2.10 卸载Docker
  • 三. Docker 命令
    • 3.1 镜像命令
    • 3.2 容器命令
    • 3.3 数据卷命令
    • 3.4 其他命令
    • 3.5 参考
  • 四、Docker安装常用服务指南
    • 4.1 ◆ Docker安装Nginx
      • 4.1.1 普通安装方式
      • 4.1.2 挂载配置方案
        • 方案一:Volume数据卷挂载
        • 方案二:目录挂载(生产推荐)
    • 4.2 ◆ Docker安装MySQL
      • 4.2.1 基础安装步骤
      • 4.2.2 数据持久化方案
        • 数据卷挂载模式
        • 目录挂载模式(推荐)
    • 4.3 ◆ Docker安装Nacos集群
      • 4.3.1 单节点部署
      • 4.3.2 集群部署方案
    • 4.4 ◆ Docker安装Redis
      • 4.4.1 基础安装
      • 4.4.2 持久化配置
        • 配置文件挂载
    • 4.5 ◆ Docker安装ElasticSearch
      • 4.5.1 ElasticSearch部署
      • 4.5.2 Kibana可视化
    • 4.6 服务验证清单


一. Docker 容器介绍

1.1 什么是Docker容器?

Docker 是一种开源的容器化平台,允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。通过 Docker,应用程序可以在任何环境中快速部署和运行,确保开发、测试和生产环境的一致性。

1.2 为什么需要Docker容器?

项目部署的困扰:

  • 环境一致性:开发、测试、生产环境应当保持一致,但由于各种原因,往往会出现环境差异,导致部署出现问题。

  • 版本管理:不同开发人员在开发过程中,可能会使用不同的开发工具、编程语言、框架,导致版本管理混乱。

  • 依赖管理:不同项目依赖不同的库,如果没有统一的依赖管理,部署会出现问题。
    Docker如何解决这些问题?

  • Docker 容器化:Docker 容器化解决了环境一致性问题,将开发环境、测试环境、生产环境打包成一个容器,确保开发、测试、生产环境的一致性。

  • Docker 镜像:Docker 镜像解决了版本管理问题,将开发环境、测试环境、生产环境的依赖打包成镜像,确保开发人员使用统一的开发工具、编程语言、框架。

  • Docker 仓库:Docker 仓库解决了依赖管理问题,将镜像上传到仓库,其他开发人员可以下载使用。

1.3 Docker架构

  • 服务端(server): Docker守护进程,负责处理Docker指令,管理镜像、容器等
  • 客户端(client): 通过命令或RestAP向Docker服务端发送指令。可以在本地或远程向服务端发送指令
  • 远程仓库(registry): 远程仓库是Docker用来保存镜像的地方,可以理解为代码仓库。
    在这里插入图片描述

1.4 Docker 相关概念

  • 镜像(Image): Docker镜像是一个只读的模板,包含了运行容器所需的一切。
  • 容器(Container): 容器是一个运行中的镜像实例,可以启动、停止、删除、暂停等。
  • 仓库(Repository): Docker仓库是一个集中存放镜像文件的地方,每个镜像都有唯一的ID,并可以被推送到多个仓库。
  • 标签(Tag): 标签是镜像的版本,可以用来区分同一个镜像的不同版本。
  • Dockerfile: Dockerfile是用来构建Docker镜像的文本文件,包含了一条条的指令来构建镜像。
  • 卷(Volume): 卷是一个可供一个或多个容器使用的目录,它可以绕过联合文件系统,直接存取底层文件系统。

1.5 Docker特点

  • 轻量级:Docker 容器的大小仅几十MB,相比虚拟机镜像大小只有几百MB。
  • 便携:Docker 可以在任何 Linux 机器上运行,并不需要安装Docker软件,只需要安装Docker引擎。
  • 隔离:Docker 使用容器技术,容器之间互相隔离,互不影响,更安全。文件隔离、系统隔离、资源隔离、网络隔离、日志隔离等。每个容器都完全独立运行在一个沙盒中,所有数据、资源都是隔离的,比如,CPU、内存等等,网络上会为每个容器虚拟一个ip地址,docker为每个容器都提供自己的日志,互不影响。

二. Docker 安装

2.1 查看Linux内核版本

uname -r

要求3.0版本以上

2.2 卸载老版本docker,避免产生影响

如果服务器安装过docker,没有卸载再次安装会导致安装失败,首先要卸载老版本(咱们没安装过docker,可以不需要这个操作,不过可以试一下。)

yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine \docker-ce

2.3 升级yum 和配置源

yum工具可以安装软件,安装docker时需要更多工具,操作系统自带不够,所以要升级。

yum install -y yum-utils

配置本地镜像源

yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

更新镜像源

yum makecache fast

2.4 安装Docker

yum install -y docker-ce

docker-ce是社区版,docker-ee是企业版,这里安装的是社区版。社区版是免费的,企业版收费。

2.5 启动Docker

systemctl start docker

2.6 验证Docker

docker version

2.7 设置Docker开机自启

systemctl enable docker

2.8 配置镜像加速器

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://hub-mirror.c.163.com"]
}
EOF
systemctl restart docker

或者阿里云加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://wm7fopru.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

或者修改/etc/docker/daemon.json文件

{"registry-mirrors": ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"]
}

然后重启Docker

systemctl daemon-reload
systemctl restart docker

2.9 验证镜像加速是否生效

docker info

其中Registry Mirrors就是镜像加速器的地址。

2.10 卸载Docker

yum remove docker-ce

三. Docker 命令

3.1 镜像命令

  • 镜像名称一般分两部分组成[tag]。
  • 在没有指定tag时,默认是latest,代表最新版本的镜像
docker images:查看本地镜像列表
docker pull:拉取镜像
docker rmi:删除镜像
docker tag:给镜像打标签
docker save:保存镜像
docker load:加载镜像
docker build:构建镜像

在这里插入图片描述
案例:拉取nginx镜像

docker pull nginx

如果不指定镜像名称,则默认拉取latest版本的镜像(最新版本)。

案例:删除镜像

docker rmi nginx

如果有版本号,则删除指定版本的镜像。 如果镜像正在运行,则无法删除。

案例:给镜像打标签

docker tag nginx:latest my-nginx:v1.0

案例:保存镜像

docker save -o nginx.tar nginx:latest

案例:加载镜像

docker load -i nginx.tar

案例:构建镜像

docker build -t my-nginx:v1.0 .
  • docker build命令的-t参数指定镜像的名称和标签,.表示当前目录。
  • docker build命令的.表示Dockerfile文件所在目录。
  • docker build命令的-t参数可以指定多个镜像名称和标签,多个镜像之间用空格隔开。

3.2 容器命令

  • 容器名称一般分两部分组成[id]。
  • 在没有指定name时,默认是随机生成的。
docker run:运行容器
docker ps:查看容器列表
docker start:启动容器
docker stop:停止容器
docker restart:重启容器
docker rm:删除容器
docker logs:查看容器日志
docker exec:进入容器

在这里插入图片描述
案例:运行nginx容器

docker run -d -p 80:80 --name my-nginx nginx

docker run 命令参数说明:

  • docker run命令的-d参数表示后台运行容器。
  • docker run命令的-p参数表示将容器的80端口映射到主机的80端口。如:如:-p 81:80表示将容器的80端口映射到主机的81端口。
  • docker run命令的--name参数表示给容器指定名称。如果不指定名称,则默认随机生成名称。
  • docker run命令的nginx参数表示启动的镜像名称。必须指定镜像名称,否则会报错。
  • docker run命令的-v参数表示将主机的目录挂载到容器的目录。如:-v /data/my-data:/usr/share/nginx/html表示将主机的/data/my-data目录挂载到容器的/usr/share/nginx/html目录。
  • docker run命令的-e参数表示设置环境变量。
  • docker run命令的-it参数表示进入交互模式。
  • docker run命令的--network参数表示指定容器的网络模式。如--network=host表示容器使用宿主机的网络。
  • docker run命令的--restart参数表示设置容器的重启策略。如--restart=always表示容器总是重启。

案例:查看容器列表

docker ps

docker ps 命令参数说明

  • docker ps命令 默认只显示运行中的容器。
  • docker ps命令的-a参数表示显示所有容器,包括停止的容器。
  • docker ps命令的-q参数表示只显示容器的ID。
  • docker ps命令的-f参数表示根据条件过滤容器。

案例:启动容器

docker start my-nginx

案例:停止容器

docker stop my-nginx

案例:重启容器

docker restart my-nginx

案例:删除容器

docker rm my-nginx

docker rm命令的参数说明:

  • docker rm命令的-f参数表示强制删除容器。

案例:查看容器日志

docker logs my-nginx

案例:进入容器

docker exec -it my-nginx /bin/bash
  • docker exec命令的-it参数表示进入交互模式。
  • docker exec命令的my-nginx参数表示容器名称。
  • docker exec命令的/bin/bash参数表示进入容器的bash命令行。

3.3 数据卷命令

数据卷可以让容器之间共享数据,容器之间的数据修改会立即同步到所有容器。

  • docker volume create:创建数据卷
  • docker volume ls:查看数据卷列表
  • docker volume inspect:查看数据卷详情
  • docker volume rm:删除数据卷
  • docker run:使用数据卷

案例:创建数据卷

docker volume create my-data

案例:查看数据卷列表

docker volume ls

案例:查看数据卷详情

docker volume inspect my-data

案例:删除数据卷

docker volume rm my-data

案例:使用数据卷

docker run -d -p 80:80 --name my-nginx -v my-data:/usr/share/nginx/html nginx
  • docker run命令的-v参数表示将主机的my-data目录挂载到容器的/usr/share/nginx/html目录。
  • 这样,主机的my-data目录中的内容会同步到容器的/usr/share/nginx/html目录,容器的/usr/share/nginx/html目录中的内容会同步到主机的my-data目录。

3.4 其他命令

  • 复制内容到主机
docker cp my-nginx:/usr/share/nginx/html/ /data/my-data/
  • 导入/导出镜像
docker save -o my-nginx.tar my-nginx:v1.0
docker load -i my-nginx.tar
  • 导入/导出容器
docker export -o my-nginx.tar my-nginx
docker import my-nginx.tar my-nginx:v1.0

3.5 参考

Docker命令大全
Docker官方文档
Docker中文文档
Docker入门教程
Docker从入门到实践

四、Docker安装常用服务指南

4.1 ◆ Docker安装Nginx

4.1.1 普通安装方式

操作流程:

  1. 拉取镜像
docker pull nginx
# 或加载本地镜像
docker load -i nginx.tar
  1. 运行容器
docker run -d -p 80:80 --name nginx-test nginx

参数说明:

  • -d:后台运行
  • -p 80:80:端口映射(主机:容器)
  • --name:容器命名

4.1.2 挂载配置方案

方案一:Volume数据卷挂载
# 创建数据卷
docker volume create nginx-{html,conf}-volume# 启动容器
docker run -d -p 80:80 --name nginx-test \-v nginx-html-volume:/usr/share/nginx/html \-v nginx-conf-volume:/etc/nginx \nginx
方案二:目录挂载(生产推荐)
# 创建本地目录
mkdir -p /opt/mount/nginx/{html,conf.d}# 复制默认配置
docker cp nginx-test:/usr/share/nginx/html /opt/mount/nginx/
docker cp nginx-test:/etc/nginx/conf.d /opt/mount/nginx/# 重新挂载启动
docker run -d -p 80:80 --name nginx-prod \-v /opt/mount/nginx/html:/usr/share/nginx/html \-v /opt/mount/nginx/conf.d:/etc/nginx/conf.d \nginx

注意事项:

  • 访问验证:curl http://localhost
  • 配置文件修改后需重启容器生效
  • 生产环境建议绑定80+443端口

4.2 ◆ Docker安装MySQL

4.2.1 基础安装步骤

  1. 拉取镜像
docker pull mysql:8.0
  1. 启动容器
docker run -d -p 3306:3306 --name mysql-test \-e MYSQL_ROOT_PASSWORD=123456 \mysql:8.0

4.2.2 数据持久化方案

数据卷挂载模式
docker volume create mysql-{data,conf}-volumedocker run -d -p 3306:3306 --name mysql-prod \-v mysql-data-volume:/var/lib/mysql \-v mysql-conf-volume:/etc/mysql/conf.d \-e MYSQL_ROOT_PASSWORD=123456 \mysql:8.0
目录挂载模式(推荐)
mkdir -p /opt/mount/mysql/{data,conf.d}docker run -d -p 3306:3306 --name mysql-prod \-v /opt/mount/mysql/data:/var/lib/mysql \-v /opt/mount/mysql/conf.d:/etc/mysql/conf.d \-e MYSQL_ROOT_PASSWORD=123456 \mysql:8.0

关键配置说明:

# my.cnf 配置文件示例
[mysqld]
character-set-server=utf8mb4
default_authentication_plugin=mysql_native_password

4.3 ◆ Docker安装Nacos集群

4.3.1 单节点部署

docker run -d \--name nacos-standalone \-p 8848:8848 -p 9848:9848 -p 9849:9849 \-e MODE=standalone \-e JVM_XMS=512m -e JVM_XMX=512m \nacos/nacos-server:v2.3.0

4.3.2 集群部署方案

  1. 准备3台服务器(node1/node2/node3)
  2. 每台执行:
mkdir -p /opt/nacos/{logs,conf,data}docker run -d \--name nacos-cluster \--network=host \-v /opt/nacos/logs:/home/nacos/logs \-v /opt/nacos/conf:/home/nacos/conf \-v /opt/nacos/data:/home/nacos/data \-e MODE=cluster \-e NACOS_SERVERS="node1:8848,node2:8848,node3:8848" \-e JVM_XMS=2g -e JVM_XMX=2g \nacos/nacos-server:v2.3.0

MySQL集成配置:

-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.1.100 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=nacos \
-e MYSQL_SERVICE_PASSWORD=Nacos@1234

4.4 ◆ Docker安装Redis

4.4.1 基础安装

docker run -d \--name redis-test \-p 6379:6379 \redis:7.0

4.4.2 持久化配置

配置文件挂载
mkdir -p /opt/mount/redis/{conf,data}# redis.conf 核心配置
echo '
bind 0.0.0.0
protected-mode no
requirepass 123456
appendonly yes
' > /opt/mount/redis/conf/redis.confdocker run -d \--name redis-prod \-p 6379:6379 \-v /opt/mount/redis/conf:/usr/local/etc/redis \-v /opt/mount/redis/data:/data \redis:7.0 redis-server /usr/local/etc/redis/redis.conf

性能调优参数:

maxmemory 2gb
maxmemory-policy allkeys-lru

4.5 ◆ Docker安装ElasticSearch

4.5.1 ElasticSearch部署

# 创建专用网络
docker network create es-net# 单节点运行
docker run -d \--name es-node \--network es-net \-p 9200:9200 -p 9300:9300 \-e "discovery.type=single-node" \-e "ES_JAVA_OPTS=-Xms4g -Xmx4g" \-v es-data:/usr/share/elasticsearch/data \elasticsearch:8.6.0

4.5.2 Kibana可视化

docker run -d \--name kibana \--network es-net \-p 5601:5601 \-e ELASTICSEARCH_HOSTS=http://es-node:9200 \kibana:8.6.0

安全配置建议:

# elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

4.6 服务验证清单

服务验证方式预期结果
Nginxcurl -I http://localhostHTTP/1.1 200 OK
MySQLmysql -h 127.0.0.1 -P 3306 -u root -p成功登录
Redisredis-cli -h 127.0.0.1 -a 123456 pingPONG
ElasticSearchcurl http://localhost:9200JSON格式节点信息
Kibana浏览器访问 http://IP:5601Kibana欢迎界面

相关文章:

Docker生存手册:安装到服务一本通

文章目录 一. Docker 容器介绍1.1 什么是Docker容器&#xff1f;1.2 为什么需要Docker容器&#xff1f;1.3 Docker架构1.4 Docker 相关概念1.5 Docker特点 二. Docker 安装2.1 查看Linux内核版本2.2 卸载老版本docker&#xff0c;避免产生影响2.3 升级yum 和配置源2.4 安装Dock…...

JAVA中关于图形化界面的学习(GUI)动作监听,鼠标监听,键盘监听

动作监听&#xff1a; 先创建一个图形化界面&#xff0c;接着创建一个按钮对象&#xff0c;设置按钮的大小。 添加一个addActionListener()&#xff1b; addActionListener() 方法定义在 java.awt.event.ActionListener 接口相关的上下文中&#xff0c;许多支持用户交互产生…...

wepy微信小程序自定义底部弹出框功能,显示与隐藏效果(淡入淡出,滑入滑出)

视图html部分 <view class"salePz"><view class"btnSelPz" tap"pzModelClick">去选择</view><!-- modal --><view class"modal modal-bottom-dialog" hidden"{{hideFlag}}"><view class&q…...

Api架构设计--- HTTP + RESTful

Api架构设计--- HTTP RESTful 什么是RESTfulRESTful 设计原则RESTful 接口类型RESTful 状态码RESTful Uri设计原则Api传参&#xff1a;QueryString 和 UriPath RESTful和HTTP的区别注意事项 什么是RESTful RESTful&#xff08;Representational State Transfer&#xff09;是一…...

设计模式-适配器模式

适配器模式是一种结构型设计模式&#xff0c;用于将一个类的接口转换为客户端期望的另一个接口&#xff0c;使得原本不兼容的类可以协同工作。它的核心思想是通过中间层&#xff08;适配器&#xff09;解决接口不匹配的问题&#xff0c;类似于电源插头转换器。 核心思想 适配…...

MacBook部署达梦V8手记

背景 使用Java SpringBootDM开发Web应用&#xff0c;框架有License&#xff0c;OSX加载dll失败&#xff0c;安装了Windows 11&#xff0c;只有一个C盘&#xff0c;达梦安装后因为C盘权限问题&#xff0c;创建数据库失败&#xff0c;遂采用Docker容器方式部署。 下载介质 官网在…...

MySQL程序

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:数据库 JavaEE专栏:JavaEE 软件测试专栏:软件测试 关注博主带你了解更多知识 1. mysqld (MySQL服务器) mysqld也被称为MySQL服务器&#xff0c;是⼀个多线程程序&#xff0c;对数据⽬录进⾏访问管理(包含数据库…...

APB-清华联合腾讯等机构推出的分布式长上下文推理框架

APB (Accelerating Distributed Long-Context Inference by Passing Compressed Context Blocks acrossGPUs)是清华大学等机构联合提出的分布式长上下文推理框架。通过稀疏注意力机制和序列并行推理方式&#xff0c;有效解决了大模型处理长文本时的效率瓶颈。APB采用更小的Anch…...

python爬虫笔记(一)

文章目录 html基础标签和下划线无序列表和有序列表表格加边框 html的属性a标签&#xff08;网站&#xff09;target属性换行线和水平分割线 图片设置宽高width&#xff0c;height html区块——块元素与行内元素块元素与行内元素块元素举例行内元素举例 表单from标签type属性pla…...

Pycharm接入DeepSeek,提升自动化脚本的写作效率

一.效果展示&#xff1a; 二.实施步骤&#xff1a; 1.DeepSeek官网创建API key&#xff1a; 创建成功后&#xff0c;会生成一个API key&#xff1a; 2. PyCharm工具&#xff0c;打开文件->设置->插件&#xff0c;搜索“Continue”&#xff0c;点击安装 3.安装完成后&…...

spring boot 过滤器简单demo

1. 过滤器&#xff08;Filter&#xff09;的概念 过滤器是 Java Web 应用中的一种组件&#xff0c;它可以在请求到达目标资源&#xff08;如 Controller&#xff09;之前或响应返回客户端之后&#xff0c;对请求和响应进行统一处理。它的核心作用是对 HTTP 请求和响应进行拦截…...

3.8 Spring Boot监控:Actuator+Prometheus+Grafana可视化

在Spring Boot应用中&#xff0c;通过整合Actuator、Prometheus和Grafana可以构建完整的监控体系&#xff0c;实现指标采集、存储和可视化。以下是具体实现步骤&#xff1a; 一、Spring Boot Actuator 配置 作用&#xff1a;暴露应用健康指标、性能数据等监控端点。 1. 添加依…...

C++中的单例模式及具体应用示例

AI 摘要 本文深入探讨了C中的单例模式及其在机器人自主导航中的应用&#xff0c;特别是如何通过单例模式来管理地图数据。文章详细介绍了单例模式的基本结构、优缺点以及在多线程环境中的应用&#xff0c;强调了其在保证数据一致性和资源管理中的重要性。 接着&#xff0c;文章…...

网络编程——套接字、创建服务器、创建客户端

一、套接字 1.1什么是套接字 套接字文件&#xff0c;原本就是一个和管道文件类似&#xff0c;用来实现进程间通信的一个文件 既然有了管道文件&#xff0c;当时为什么还要开发套接字文件&#xff0c;去实现进程的通信 因为管道文件是半双工模式的 套接字文件是全双工模式的…...

【设计模式】3W 学习法深入剖析创建型模式:原理、实战与开源框架应用(含 Java 代码)

3W 学习法总结创建型模式&#xff08;附 Java 代码实战及开源框架应用&#xff09; 创建型模式主要关注 对象的创建&#xff0c;旨在提高代码的可复用性、可扩展性和灵活性。本文采用 3W 学习法&#xff08;What、Why、How&#xff09;&#xff0c;深入分析 五大创建型模式&am…...

软考系统架构师考试目录(2023新版)

论文 2023下半年 开发&#xff1a;论面向对象设计的应用与实现大数据&#xff1a;论多数据源集成的应用与实现测试&#xff1a;论软件可靠性评价的设计与实现运维&#xff1a;论边云协同的设计与实现 2024上半年 大数据&#xff1a;Lambda架构&#xff0c;分层批处理层、加…...

Apifox Helper 自动生成API接口文档

在我们开发过程中我们在编写请求地址和编写请求参数的时候特别花费时间耗费了我们很多时间&#xff0c;作为一个程序员&#xff0c;更应该把精力时间集中在开发上&#xff0c; Apifox Helper 是 Apifox 团队针对 IntelliJ IDEA 环境所推出的插件&#xff0c;可以在 IDEA 环境中…...

MySQL开发陷阱与最佳实践:第1章:MySQL开发基础概述-1.1 MySQL简介与应用场景

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 MySQL开发陷阱与最佳实践&#xff1a;第1章&#xff1a;MySQL开发基础概述-1.1 MySQL简介与应用场景1.1.1 MySQL的发展历程与市场地位1.1.2 MySQL的核心特性与技术优势1.1.2…...

电鱼智能EFISH-RK3576-SBC工控板已适配Android 14系统

EFISH-RK3576-SBC工控板此前已提供了Linux 6.1.57系统&#xff0c;为了满足更多客户的需求&#xff0c;电鱼智能近日又为其成功适配了Android 14系统——硬件性能卓越的核心板与Android 14的深度组合&#xff0c;将为用户带来更加流畅、开放、智能的使用体验。 一、高性能处理器…...

C++ 语法之函数和函数指针

在上一章中 C 语法之 指针的一些应用说明-CSDN博客 我们了解了指针变量&#xff0c;int *p;取变量a的地址这些。 那么函数同样也有个地址&#xff0c;直接输出函数名就可以得到地址&#xff0c;如下&#xff1a; #include<iostream> using namespace std; void fun() …...

LabVIEW生成EXE文件错误提示

在LabVIEW生成EXE时弹出 “The build is missing one or more source files or items the source files reference on disk”&#xff0c;表明项目中引用的某些文件&#xff08;如VI、子模块、依赖库或配置文件&#xff09;未被正确包含或路径丢失。以下是具体原因及解决方案&a…...

HTML,CSS,JavaScript

HTML:负责网页的结构(页面元素和内容)。 CSS:负责网页的表现(页面元素的外观、位置等页面样式&#xff0c;如:颜色、大小等)。 Javascript:负责网页的行为(交互效果)。 MDN前端开发文档(MDN Web Docs) HTML HTML(HyperText Markup Language):超文本标记语言超文本:超越了文本的…...

SpringCloud 学习笔记2(Nacos)

Nacos Nacos 下载 Nacos Server 下载 | Nacos 官网 下载、解压、打开文件&#xff1a; 更改 Nacos 的启动方式 Nacos 的启动模式默认是集群模式。在学习时需要把他改为单机模式。 把 cluster 改为 standalone&#xff0c;记得保存&#xff01; 启动startup.cmd Ubuntu 启动…...

Qt5.15.2实现Qt for WebAssembly与示例

目录 1.什么是Qt for WebAssembly&#xff1f; 1.1 什么是 WebAssembly&#xff1f; 1.2 WebAssembly 的优势 1.3 什么是 Qt for WebAssembly&#xff1f; 1.4 Qt for WebAssembly 的特点 1.5 编译过程 1.6 运行时环境 注意&#xff01;&#xff01;&#xff01;注意&am…...

荣耀手机怎么录制屏幕?屏幕录制后为视频加水印更有“安全感”

在数字时代&#xff0c;屏幕录制已经成为记录和分享信息的重要方式之一。无论是记录游戏的高光时刻&#xff0c;还是制作教学视频&#xff0c;亦或是保存重要的线上会议内容&#xff0c;屏幕录制都能轻松搞定。 荣耀手机作为一款功能强大的设备&#xff0c;自然也提供了便捷的…...

3DXML 与 SOLIDWORKS 格式转换:技术协同及迪威模型方案

一、引言 在产品设计的前沿领域&#xff0c;3DXML 与 SOLIDWORKS 作为主流格式&#xff0c;虽各有所长&#xff0c;但因格式差异&#xff0c;常成为数据流通与协作的阻碍。对于技术人员和学生党而言&#xff0c;掌握二者间的转换技术&#xff0c;不仅能提升设计效率&#xff0…...

CH347使用笔记:CH347结合STM32CubeIDE实现单片机下载与调试

目录 基于 STM32CubeIDE的 CH347 JTAG/SWD调试器使用说明1. CH347驱动安装与配置2. STM32CubeIDE调试器配置2.1 打开相关工程后&#xff0c;进行以下操作2.2 openocd.exe替换2.3 脚本添加2.4 更改调试器选择 3. 下载程序4. 使用过程中可能遇到的问题4.1 CH347未插入4.2 Openocd…...

JS—基本数据类型和引用数据类型:1分钟掌握两者的区别

个人博客&#xff1a;haichenyi.com。感谢关注 一. 目录 一–目录二–分类三–核心区别四–实际场景中的问题五–总结对比 二. 分类 前面说过这么判断数据类型&#xff0c;今天来说说基本数据类型和引用数据类型的区别。 基本数据类型引用数据类型StringObjectNumberFunct…...

使用 CryptoJS 实现 AES 解密:动态数据解密示例

在现代加密应用中,AES(高级加密标准)是一种广泛使用的对称加密算法。它的安全性高、效率好,适合用于各种加密任务。今天,我们将通过一个实际的示例,展示如何使用 CryptoJS 实现 AES 解密,解密动态数据。CryptoJS 是一个基于 JavaScript 的加密库,它支持 AES、DES 等多种…...

[设计模式与源码]1_Spring三级缓存中的单例模式

欢迎来到啾啾的博客&#x1f431;&#xff0c;一个致力于构建完善的Java程序员知识体系的博客&#x1f4da;&#xff0c;记录学习的点滴&#xff0c;分享工作的思考、实用的技巧&#xff0c;偶尔分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604…...

使用React和google gemini api 打造一个google gemini应用

实现一个简单的聊天应用&#xff0c;用户可以通过输入问题或点击“Surprise me”按钮获取随机问题&#xff0c;并从后端API获取回答。 import { useState } from "react"; function App() {const [ value, setValue] useState(""); // 存储用户输入的问题…...

为什么Django能有效防御CSRF攻击?

在当今这个互联网高度发达的时代&#xff0c;Web安全问题层出不穷&#xff0c;其中跨站请求伪造&#xff08;CSRF&#xff0c;Cross-Site Request Forgery&#xff09;就是一个比较常见的威胁。攻击者利用用户的身份信息&#xff0c;发送恶意请求&#xff0c;改变用户的属性或执…...

Oracle常见系统函数

一、字符类函数 1&#xff0c;ASCII(c)和CHR(i)字符串和ascii码互转换 SQL> select ascii(Z) ,ascii(H),ascii( A) from dual;ASCII(Z) ASCII(H) ASCII(A) ---------- ---------- ----------90 72 32SQL> select chr(90),chr(72),chr(65) from dual;C…...

【Visio使用教程】

Visio使用教程 1. Visio 的基本介绍1.1 Visio 是什么&#xff1f;核心特点&#xff1a; 1.2 主要功能与应用场景典型用途&#xff1a;行业应用&#xff1a; 1.3 版本与兼容性1.4 Visio下载1.5 安装 2. Visio 的界面与基础操作2.1 界面布局详解2.2 创建新文档与模板选择2.3 形状…...

蓝桥杯 修剪灌木

问题描述 爱丽丝要完成一项修剪灌木的工作。 有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晩会修剪一棵灌 木, 让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始, 每天向右修剪一棵灌木。当修剪了最右侧的灌木后, 她会调转方向, 下一天开 始向左修…...

HTML中滚动加载的实现

设置div的overflow属性&#xff0c;可以使得该div具有滚动效果&#xff0c;下面以div中包含的是table来举例。 当table的元素较多&#xff0c;以至于超出div的显示范围的话&#xff0c;观察下该div元素的以下3个属性&#xff1a; clientHeight是div的显示高度&#xff0c;scrol…...

bbbbb

import java.util.ArrayList; import java.util.List; public class KthPermutation { public static String getPermutation(int n, int k) { // 计算阶乘 int[] factorial new int[n]; factorial[0] 1; for (int i 1; i < n; i) …...

Linux文件

1.Open函数 高频使用的Linux系统调用&#xff1a;open write read close Linux自带的工具&#xff1a;man手册&#xff1a; man 1是普通的shell命令&#xff0c;比如ls man 2是系统调用函数&#xff0c;比如open&#xff0c;write说明 在Linux系统库的定义&#xff1a; int o…...

kafka指北

为自己总结一下kafka指北&#xff0c;会持续更新。创作不易&#xff0c;转载请注明出处。 目录 集群controller选举过程broker启动流程 主题创建副本分布ISRleader副本选举机制LEO 生产数据流程同步发送和异步发送 分区策略ack应答生产者发送消息的幂等性跨分区幂等性问题&…...

Linux安装部署Elasticsearch8 全过程记录

一、安装 Elasticsearch8 1、下载 访问 Elasticsearch 官方网站&#xff08;Download Elasticsearch | Elastic&#xff09;。 在下载页面找到 Elasticsearch 8 的 Linux 版本&#xff08;.tar.gz 格式&#xff09;下载链接&#xff0c;点击下载。 下载Elasticsearch8&…...

ESP32(3)UDP通信

对于 lwIP 的 Socket 的使用方式&#xff0c;它与文件操作非常相似。在文件操作中&#xff0c;我们首先打开文件&#xff0c;然后进行读/写操作&#xff0c;最后关闭文件。在TCP/IP网络通信中&#xff0c;也存在着相同的操作流程&#xff0c;但所使用的接口不再是文件描述符或 …...

汽车机械钥匙升级一键启动的优点

汽车机械钥匙升级一键启动的优点主要包括&#xff1a; 便捷性&#xff1a;一键启动功能的引入极大地提升了用车便捷性。车主无需翻找钥匙&#xff0c;只需在车辆感应范围内轻触启动键&#xff0c;即可轻松发动汽车。 安全性&#xff1a;移动管家专车专用一键启动系统配备了防…...

【matlab例程】三维下的TDOA定位和EKF轨迹滤波例程,TDOA的锚点数量可自定义(订阅专栏后可获得完整代码)

本文所述的MATLAB例程实现了TDOA定位和扩展卡尔曼滤波(EKF)来提高位置估计的准确性,并通过可视化结果进行分析。 文章目录 运行结果MATLAB代码程序讲解关键步骤和功能步骤解释注意事项总结运行结果 三维轨迹: 三维误差曲线: RMSE曲线: 命令行输出内容:...

个人blog系统 前后端分离 前端js后端go

系统设计&#xff1a; 1.使用语言&#xff1a;前端使用vue&#xff0c;并使用axios向后端发送数据。后端使用的是go的gin框架&#xff0c;并使用grom连接数据库实现数据存储读取。 2.设计结构&#xff1a; 最终展示&#xff1a;仅展示添加模块&#xff0c;其他模块基本相似 前…...

OSG简介

OSG OpenSceneGraph (简称 OSG) 是一个开源的高性能3D图形库。 作用 它为开发者提供了一个强大的API&#xff0c;处理和渲染复杂的3D图形。 特点 OSG基于OpenGL构建&#xff0c;提供了对现代图形技术的支持&#xff0c;如着色器、纹理映射、光照模型等高级特性。 跨平台支…...

社区版Uos20.9从源码编译QT5.15.2

主要是在这个文章上学的究极保姆式教你如何在Ubuntu上源码安装Qt5.15.2_ubuntu安装qt5.15.2-CSDN博客 但原文上在环境变量的配置上真用在 uso上好像不行&#xff0c;要加一些引号和$号。原文的测试编译代码也有些问题&#xff0c;include上少了类。略作修改&#xff0c;在UOS社…...

AI学习第二天--大模型压缩(量化、剪枝、蒸馏、低秩分解)

目录 1. 量化&#xff1a;压缩大象的“脂肪” 比喻 技术逻辑 2. 剪枝&#xff1a;修剪大象的“无效毛发” 比喻 技术逻辑 3. 知识蒸馏&#xff1a;让大象“师从巨象” 比喻 技术逻辑 4. 低秩分解&#xff1a;把大象“折叠成纸偶” 比喻 技术逻辑 5. 推理优化&#…...

C++ —— 线程同步(互斥锁)

C —— 线程同步&#xff08;互斥锁&#xff09; 线程同步互斥锁&#xff08;互斥量&#xff09;测试代码mutex互斥锁 线程同步 线程同步&#xff1a;多线程协同工作&#xff0c;协商如何使用共享资源。 C11线程同步包含三部分内容&#xff1a; 互斥锁&#xff08;互斥量&…...

相对路径跳转和绝对路径跳转有什么区别?

在 Vue 3 中使用路由跳转时&#xff0c;相对路径跳转和绝对路径跳转在使用方式、适用场景等方面存在明显区别&#xff0c;以下为你详细介绍&#xff1a; 定义 绝对路径跳转&#xff1a;指的是使用完整的路径来进行路由导航&#xff0c;路径以 / 开头&#xff0c;无论当前处于…...

Flume详解——介绍、部署与使用

1. Flume 简介 Apache Flume 是一个专门用于高效地 收集、聚合、传输 大量日志数据的 分布式、可靠 的系统。它特别擅长将数据从各种数据源&#xff08;如日志文件、消息队列等&#xff09;传输到 HDFS、HBase、Kafka 等大数据存储系统。 特点&#xff1a; 可扩展&#xff1…...