docker学习与使用

一、docker概述

1.docker是什么

  • 是一个开源的应用容器引擎,基于go语言开发并遵循apache2.0协议开源

  • 是在Linux容器里运行应用的开源工具

  • 是一种轻量级的 “虚拟机”

  • Docker的容器技术,可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器
    在这里插入图片描述

2.docker的优点

  1. 达到应用组件级别的“一次封装,到处运行”的目的。
  2. 这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作
  3. 跨平台一致性
  4. 资源隔离
  5. 轻量级资源占用,和传统虚拟机相比,docker容器共享虚拟机内核

3.docker的架构

  • 镜像(image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停

  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

4.容器概念的两个重要技术

Docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资

源限制 ,通过**写时复制技术(copy-on-write)**实现高效文件操作 (类似于虚拟机的磁盘,比如分

配500g并不是实际占用物理磁盘500g,只有当需要修改时才复制一份数据)

二、docker安装

1.centos装docker

先删除旧版本docker

yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine

  • yum install -y yum-utils device-mapper-persistent-data lvm2
    

yum-utils:提供了 yum-config-manager 工具。

device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。

device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

  • yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

设置阿里云镜像,官方源比较慢

  • yum install -y docker-ce docker-ce-cli containerd.io
    

docker-ce 社区版

docker-ce-cli 客服端命令行工具

containerd.io 一个容器运行时接口的实现,管理容器的启动,创建,删除,停止等操作

docker-compose-plugin 和K8s一样是容器编排工具,不过前者适合开发测试小规模环境,K8s适合大规模

  • systemctl start docker.service
    systemctl enable docker.service 
    

开启服务和打开服务自启动

docker version

在这里插入图片描述

2. 内网装docker+docker-compose

  1. 下载docker源码
https://download.docker.com/

按需下载

  1. 将下载好的的包上传到对应服务器

解压

tar -zxvf docker-26.1.4.tgz

解压完之后的文件夹是docker

  1. 移动到可执行文件目录下
mv docker/* /usr/bin/
  1. 配置docker.service
vim /usr/lib/systemd/system/docker.service

将下面的内容填进去

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s[Install]
WantedBy=multi-user.target
  1. 启动docker服务并开启自启动
systemctl daemon-reload
systemctl start docker.service
docker info
systemctl enable docker

如果习惯用容器编排,附带docker-compose下载地址

curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 -o /usr/bin/docker-compose

github连不上用这个地址 curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-uname -s-uname -m > /usr/bin/docker-compose

给他可执行的权限

sudo chmod +x /usr/bin/docker-compose

检查是否成功安装

docker-compose --version
### 3. 配置加速器
  1. 配置阿里云镜像加速

    1. 登录我们的阿里云控制台,然后找到容器镜像服务**

    2. 找到镜像加速器---->镜像加速地址

    3. 选择对应的加速地址

  2. 配置别的加速器地址

网上直接搜,加速器地址存活周期不一定

搜到之后

vim /etc/docker/daemon.json

复制进去即可

4. 删除docker

  1. 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
  1. 删除资源
rm -rf /var/lib/docker

三、常用基础命令

1.查看镜像

docker images 

2.查看容器

docker ps -a  # -a参数是显示所有容器包括隐藏的

3.下载镜像

docker pull
docker pull nginx:1.22-alpine
docker search 查找镜像

latest 最新版本

stable 稳定版本

nginx:1.20.2 指定版本

默认是latest 最新版本 ,若要指定版本 可在pull 后要下载的加上版本号

例子:

docker pull mysql:8.4.3

4.运行镜像(没下载会自动下载)

docker run
例子:
# 指定配置文件目录,root密码
docker run -d --name mysql8.4.3 -v /usr/local/mysql-docker/conf/:/etc/mysql/conf.d -v /usr/local/mysql-docker/data/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin@123 -p 3307:3306 mysql:8.4.3

-d 容器以守护进程的方式运行

–name 指定容器的名称 方便docker start stop ,不用容器ID了太难记

-v 数据卷挂载

-e root的mysql密码

-p 端口内外部映射

mysql:8.4.3 运行的名字和版本 如果镜像仓库没有自动下载

5.删除镜像

docker rmi image名字

6.删除容器

docker rm 容器名字或者id

7.容器管理

docker create 创建容器 --name
docker start 启动容器
docker stop 停止容器
docker restart 重启容器
docker kill 强制停止容器
docker rm 删除容器
批量删除所有容器 docker rm -f `docker ps -a -q`

8.查看容器状态

docker status

在这里插入图片描述

单独查看某一进程的信息

docker top mysql8.4.3

9.根据容器生成镜像

git原理差不多,比如有的nginx的配置文件结构不好,你以后生成的容器是修改过后的conf文件,添加之后,把这个容器生成一个镜像,后边的都是容器了

docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

10.IP绑定端口

显示用户只能通过宿主机的某个网卡连接这个端口
docker run -d --name "nginx_bind_ip" -p 172.16.1.81:12306:80 nginx:1.20.2-alpine

11.查看容器信息

docker inspect 容器名字或者id
加| jq  .[].HostConfig.Binds
能看到挂载的目录端口还有容器网络啥的

12.查看容器日志

docker logs -n 容器名

13. 容器主机直接拷贝文件

docker cp
例子:
docker exec -it 6eda31ad7987 /bin/bash,先进入到容器内部docker cp 6eda31ad7987:/home/test.java /home

14. sl大法(复制镜像可建立远程docker仓库)

docker image save -o XXXX#docker save
docker image load -i #docker load

四、docker装各种服务

1. docker装mysql(8.4.3)

  1. 拉去镜像
docker pull mysql:8.4.3
  1. 运行起来
docker run -d --name mysql8.4.3 -v /usr/local/mysql-docker/conf/:/etc/mysql/conf.d -v /usr/local/mysql-docker/data/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin@123 -p 3307:3306 mysql:8.4.3

-d 容器以守护进程的方式运行

–name 指定容器的名称 方便docker start stop ,不用容器ID了太难记

-v 数据卷挂载

-e root的mysql密码

-p 端口内外部映射

mysql:8.4.3 运行的名字和版本 如果镜像仓库没有自动下载

  1. 进入容器
docker exec -it mysql8.4.3 bash
  1. 登录mysql
mysql -uroot -p
  1. 编写配置文件
cd /usr/local/mysql-docker/conf
vim my.cnf

编辑内容如下

[mysqld]port=3306datadir=/var/lib/mysqlmax_allowed_packet=1024Mmax_connections=1000# 默认字符集character-set-server=utf8mb4collation-server=utf8mb4_general_ci# binlog日志server-id=2018log-bin=mysql-bin# 保存15天binlog_expire_logs_seconds=1296000# 选择 binlog 文件的最大大小,达到该大小时会自动切换到新的日志文件max-binlog-size=100M# 记录 binlog 文件时排除某些查询binlog-ignore-db=information_schemabinlog-ignore-db=performance_schemabinlog-ignore-db=mysql

2.docker装nginx

  1. 拉去镜像
docker pull nginx:1.26.2
  1. 创建挂载目录
创建挂载目录
mkdir -p /usr/local/nginx-docker/conf
mkdir -p /usr/local/nginx-docker/conf/conf.d
mkdir -p /usr/local/nginx-docker/log
mkdir -p /usr/local/nginx-docker/html
  1. 生成容器迁移配置文件
#生成容器
docker run --name nginx --restart=always  -p 80:80 -d nginx:1.26.2
#将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx-docker/conf/nginx.con
#将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /usr/local/nginx-docker/conf/conf.d
#将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /usr/local/nginx-docker/
创建Nginx容器并运行
#直接执行docker rm nginx或者以容器id方式关闭容器
#找到nginx对应的容器id
docker ps -a
#关闭该容器
docker stop nginx
#删除该容器
docker rm nginx
#删除正在运行的nginx容器
docker rm -f nginx
  1. docker 创建nginx容器
docker run \
-p 80:80 \
--name nginx \
-v /usr/local/nginx-docker/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx-docker/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/nginx-docker/log:/var/log/nginx \
-v /usr/local/nginx-docker/html:/usr/share/nginx/html \
--restart=always \
-d nginx:1.26.2

docker run
-p 80:80
-p 443:443
–name nginx
-v /usr/local/nginx-docker/conf/nginx.conf:/etc/nginx/nginx.conf
-v /usr/local/nginx-docker/conf/conf.d:/etc/nginx/conf.d
-v /usr/local/nginx-docker/log:/var/log/nginx
-v /usr/local/nginx-docker/html:/usr/share/nginx/html
-d nginx:1.26.2

有多少端口就在这里面加就行

命令描述
–name nginx启动容器的名字
-d后台运行
-p 80:80映射端口
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf挂载nginx.conf配置文件
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d挂载nginx配置文件
-v /home/nginx/log:/var/log/nginx挂载nginx日志文件
-v /home/nginx/html:/usr/share/nginx/html挂载nginx内容
nginx:latest本地运行的版本
\shell 命令换行

https://download.docker.com/ 下载docker

3.内网docker装oracle

一、内网装dorcker
  1. 下载docker源码
https://download.docker.com/

按需下载

  1. 将下载好的的包上传到对应服务器

解压

tar -zxvf docker-26.1.4.tgz

解压完之后的文件夹是docker

  1. 移动到可执行文件目录下
mv docker/* /usr/bin/
  1. 配置docker.service
vim /usr/lib/systemd/system/docker.service

将下面的内容填进去

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s[Install]
WantedBy=multi-user.target
  1. 启动docker服务并开启自启动
systemctl daemon-reload
systemctl start docker.service
docker info
systemctl enable docker

如果习惯用容器编排,附带docker-compose下载地址

https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64

给他可执行的权限

sudo chmod +x /usr/bin/docker-compose

检查是否成功安装

docker-compose --version
二、安装docker-oracle
  1. 上传docker-oracle镜像包

  2. 导入镜像包

docker load -i 镜像包
  1. 执行docker images 检查是否存在镜像 oracle:oracle11g

存在则导入成功

  1. 创建并启动容器
docker run -itd \--name oracle11g \-p 1521:1521 \-p 5500:5500 \--mount source=oracle_vol,target=/opt/oracle/app/oradata \-e ORACLE_HOME=/opt/oracle/app/product/11.2.0/dbhome_1 \-e ORACLE_SID=ORCL \-e PATH=$ORACLEHOME/bin:PATH \--restart always \yycx/oracle11 挂载的数据有点大 run的时候可能会比较慢,如果只是为了测试搭建,可以不挂载数据持久化

-p 宿主机映射端口:docker端口

–name 容器的名字

–restart=alway 开机自启动

–mount source=oracle_vol,target=/opt/oracle/app/oradata \ 挂载磁盘实现数据持久化

-e ORACLE_SID=ORCL \ 实例名字用来连接的

#新建docker卷-----docker volume create oracle11g

#查看docker卷-------docker volume ls

#卷路径-------find / -name oracle11g

这个卷的路径就是数据持久化存放的位置

  1. 进入容器进行配置
docker exec -it oracle11g bash
  1. 创建软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
#可以全局使用sqlplus
  1. 登录Oracle的一些初始化操作
su - oracle  切换oraclesqlplus /nolog  启动sqlplus但不立即登录数据库connect /as sysdba  以sysdba去登录oraclealter user system identified by nomax;  修改system的密码是nomax
alter user sys identified by nomax;  修改sys 的密码是nomax 
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;  配置密码不过期
alter system set processes=1000 scope=spfile;  修改最大连接数是1000

sqlplus /nolog 启动sqlplus但不立即登录数据库

connect /as sysdba 以sysdba去登录

alter user system identified by nomax; 设置system的密码是nomax
alter user sys identified by nomax; 设置sys的密码是nomax

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; 配置密码不过期

  1. 创建用户并指定表空间,授权
SQL> create user nomax IDENTIFIED BY nomax default tablespace nomax;User created.SQL> grant connect,resource,dba to nomax;Grant succeeded.创建一个nomax的用户,分配表空间nomax,密码是nomax,授予他connect,resource,dba的权限

题外话:

conn /as sysdba;
shutdown immediate; --关闭数据库
startup; --启动数据库
show user;

修改密码的时候会出现:database not open

  1. 提示数据库没有打开
输入:alter datebase open

还有出现:datebase not mountd

  1. 提示数据库没有被挂载
输入:alter database mount;
输入:alter database open;

这个没被挂载是因为宿主机和docker 挂载磁盘出现的问题,有可能是权限dockers的oracle没有权限存放到映射的宿主机目录,也有可能是操作问题,本来我是直接-v映射的,但是一直出现这个问题,后来索性用了挂载volume卷,解决了。

4. docker装tomcat

  1. 拉镜像tomcat
docker pull tomcat:7.0
  1. 创建宿主机映射目录
mkdir -p /usr/local/docker-tomcat/webapps/
mkdir -p /usr/local/docker-tomcat/conf/
mkdir -p /usr/local/docker-tomcat/logs/
  1. run起来并配置数据持久化映射
docker run -di --name=tomcat -p 8080:8080 -p1521:1521 -v /usr/local/docker-tomcat/webapps/:/usr/local/tomcat/webapps/ -v /usr/local/docker-tomcat/conf/:/usr/local/docker-tomcat/conf/ -v /usr/local/docker-tomcat/logs/:/usr/local/docker-tomcat/logs/ tomcat:7.0

记得把tomcat连接的服务器的映射端口打开

  1. cp容器自带的文件到挂载磁盘
docker cp tomcat:/usr/local/tomcat/conf/* /usr/local/docker-tomcat/conf/
  1. 进入容器内
docker exec -it tomcat bashcd bin
启动tomcat

tomcat默认最小安装webapps下啥也没有

在tomcat目录下有一个webapps.dist目录,这个目录下有我们所需要的文件,也就是webapps目录所需要的文件,我们将这个文件中的内容全部拷贝到webapps下。

cp -r webapps.dist/* webapps

五、容器编排技术

1.单机编排

docker镜像可以通过Dockerfile一键创建.
目前问题:⚠ docker容器的管理(启动,关闭,重启),需要手动执行,如何管理多个容器.

单机容器编排工具
docker compose

  1. 下载安装
yum install -y docker-compose

或者

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

官方文档下载 并放到bin下

给可执行权限

sudo chmod +x /usr/local/bin/docker-compose
  1. 验证
docker-compose --version
  1. 书写格式

在这里插入图片描述

compose.yaml
compose.yml
docker-compose.yaml
docker-compose.yml
默认支持的compose文件名.
services:mysql8.4.3:image: "mysql:8.4.3"environment:- MYSQL_ROOT_PASSWORD=admin@123volumes:- "./data:/var/lib/mysql"- "./conf:/etc/mysql/conf.d"  container_name: mysql8.4.3      ports:                       - "3307:3306"restart: always
  1. 常用基本命令
    1. 启动服务
docker-compose up -d

-d 是在后台运行不占用终端

​ 2.查看服务状态

docker-compose ps

​ 3.停止服务

docker-compose down

​ 4.删除服务

docker-compose stop 服务名字
docker-compose rm 服务名字

默认不会删除挂载的数据卷

docker-compose rm -v 服务名

加-v参数可一块删除挂载的数据卷

​ 5.查看日志

docker-compose logs [service_name]

​ 6.重建服务

 修改完yml文件后执行docker-compose up -d [service_name]

六、Dockerfile 学习

什么是Dockerfile

Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令。

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像。

和commit生成的会变大,然后也没有dockerfile透明清除,但是commit根据已有的容器生成临时用比较方便

Dockerfile制定镜像

  1. 下面以定制一个 nginx 镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件)

在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容:

FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
  1. FROM 和 RUN 指令的作用

FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。

RUN:用于执行后面跟着的命令行命令。有以下俩种格式:

注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:

FROM centos
RUN yum -y install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz

以上执行会创建 3 层镜像。可简化为以下格式:

FROM centos
RUN yum -y install wget \&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \&& tar -xvf redis.tar.gz

&&符号连接

  1. 开始构建镜像

在 Dockerfile 文件的存放目录下,执行构建动作。

以下示例,通过目录下的 Dockerfile 构建一个 nginx:v3(镜像名称:镜像标签)。

:最后的 . 代表本次执行的上下文路径,下一节会介绍。

$ docker build -t nginx:v3 .

指令详解表:

Dockerfile 指令****说明
FROM指定基础镜像,用于后续的指令构建。
MAINTAINER指定Dockerfile的作者/维护者。(已弃用,推荐使用LABEL指令)
LABEL添加镜像的元数据,使用键值对的形式。
RUN在构建过程中在镜像中执行命令。
CMD指定容器创建时的默认命令。(可以被覆盖)
ENTRYPOINT设置容器创建时的主要命令。(不可被覆盖)
EXPOSE声明容器运行时监听的特定网络端口。
ENV在容器内部设置环境变量。
ADD将文件、目录或远程URL复制到镜像中。
COPY将文件或目录复制到镜像中。
VOLUME为容器创建挂载点或声明卷。
WORKDIR设置后续指令的工作目录。
USER指定后续指令的用户上下文。
ARG定义在构建过程中传递给构建器的变量,可使用 “docker build” 命令设置。
ONBUILD当该镜像被用作另一个构建过程的基础时,添加触发器。
STOPSIGNAL设置发送给容器以退出的系统调用信号。

七、Docker命令大全

容器生命周期管理

语法详细解释
run起来run命令
开始暂停重启容器docker start/stop/restart 命令
docker kill 容器/id 强制杀死docker kill 命令
docker rm 容器 删除容器Docker rm 命令
暂停docker pause/unpause 命令
创建容器但不会运行Docker create 命令
进入容器内部Docker exec 命令
docker rename 当前容器名称或ID 新容器名称Docker rename 命令

网络命令

  • docker network ls: 列出所有网络。

  • docker network create <network>: 创建一个新的网络。

  • docker network rm <network>: 删除指定的网络。

  • docker network connect <network> <container>: 连接容器到网络。

  • docker network disconnect <network> <container>: 断开容器与网络的连接。

卷命令

  • docker volume ls: 列出所有卷。
  • docker volume create <volume>: 创建一个新的卷。
  • docker volume rm <volume>: 删除指定的卷。
  • docker volume inspect <volume>: 显示卷的详细信息。
    https://www.runoob.com/docker/docker-rm-command.html) |
    | 暂停 | docker pause/unpause 命令 |
    | 创建容器但不会运行 | Docker create 命令 |
    | 进入容器内部 | Docker exec 命令 |
    | docker rename 当前容器名称或ID 新容器名称 | Docker rename 命令 |

网络命令

  • docker network ls: 列出所有网络。

  • docker network create <network>: 创建一个新的网络。

  • docker network rm <network>: 删除指定的网络。

  • docker network connect <network> <container>: 连接容器到网络。

  • docker network disconnect <network> <container>: 断开容器与网络的连接。

卷命令

  • docker volume ls: 列出所有卷。
  • docker volume create <volume>: 创建一个新的卷。
  • docker volume rm <volume>: 删除指定的卷。
  • docker volume inspect <volume>: 显示卷的详细信息。

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

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

相关文章

2025-03-04 学习记录--C/C++-C语言 判断是否是素数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; C语言 判断是否是素数 一、代码 ⭐️ #include <stdio.h> #include <stdbool.h> // 使用 bool 类型// 判断是否是…

如何将飞书多维表格与DeepSeek R1结合使用:效率提升的完美搭档

将飞书的多维表格与DeepSeek R1结合使用&#xff0c;就像为你的数据管理和分析之旅装上一台涡轮增压器。两者的合作&#xff0c;不仅仅在速度上让人耳目一新&#xff0c;更是将智能化分析带入了日常的工作场景。以下是它们如何相辅相成并改变我们工作方式的一些分享。 --- 在…

离散傅里叶变换(Discrete Fourier Transform, DFT)及其在图像处理中的应用

离散傅里叶变换&#xff08;DFT&#xff09;及其在图像处理中的应用 什么是离散傅里叶变换&#xff1f; 离散傅里叶变换&#xff08;Discrete Fourier Transform, DFT&#xff09;是一种强大的数学工具&#xff0c;用于将离散信号从时域&#xff08;或空间域&#xff09;转换…

在 macOS 上使用 CLion 进行 Google Test 单元测试

介绍 Google Test&#xff08;GTest&#xff09;是 Google 开源的 C 单元测试框架&#xff0c;它提供了简单易用的断言、测试夹具&#xff08;Fixtures&#xff09;和测试运行机制&#xff0c;使 C 开发者能够编写高效的单元测试。 本博客将介绍如何在 macOS 上使用 CLion 配…

Oracle SQL优化实战要点解析(11)——索引、相关子查询及NL操作(1)

11.1. 充分利用索引有序特性,避免发生大表上的FTS,以及对中间大数据集的排序。 11.1.1. 适用场景 从一个或多个大表(例如:亿行级或TB级数据量)中过滤出全列大数据集(例如:数百万或千万行数据),对该大数据集按其中某列进行排序,最终,只取最前面的少部分数据(例如:…

软考架构师笔记-计算机网络

1.9 计算机网络 OSI/RM 七层模型 物理层 二进制传输(中继器、集线器) (typedef) 数据链路层 传送以帧为单位的信息(网桥、交换机、网卡) 网络层 分组传输和路由选择(三层交换机、路由器)ARP/RARP/IGMP/ICMP/IP 传输层 端到端的连接(TCP/UDP)在前向纠错系统中&#xff0c;当接…

STM32MP157A单片机移植Linux系统使用python链接云服务器

思维导图 需求分析 stm32mp157a单片机上移植Linux操作系统&#xff0c;包括LCD驱动、触摸驱动、Ethernet/WiFi支持&#xff0c;设备树信息包括ADC、GPIO、LCD&#xff0c;使用QT上位机在PC端显示&#xff0c;通过TCP与stm32交互&#xff0c;将ad数据传输到PC端和云服务器&…

【MySQL】Can‘t connect to server in ‘localhost‘

【问题】连接MySQL数据库时报错&#xff1a; 【原因】没有启动MySQL服务 【解决方法】&#x1f447;&#x1f447;&#x1f447; 1.以管理员身份运行PowerShell 2.执行命令&#xff1a;net start MySQL 提示 “MySQL服务已经启动成功” 就说明成功了&#xff0c;这时再连…

OceanBase-obcp-v3考试资料梳理

集群架构 基本概念 集群: 集群由一个或多个Region组成,Region 由一个或多个Zone组成,Zone由一个或多个OBServer组成,每个OBServer里有若干个partition的Replica。 Region: 对应物理上的一个城市或地域,当OB集群由多个Region组成时, 数据库的数据和服务能力就具备地域…

Vue 系列之:组件通讯

子组件调用父组件方法 1、直接在子组件中通过 this.$parent.event 来调用父组件的方法 父组件&#xff1a; <template><p><child></child></p> </template> <script>import child from ./child;export default {components: {chi…

ComfyUI简介

一、ComfyUI 是什么&#xff1f; ComfyUI 是一款基于节点的图形用户界面&#xff08;GUI&#xff09;&#xff0c;专为 Stable Diffusion 设计。它通过模块化节点连接的方式构建复杂的图像生成工作流&#xff0c;用户可自由组合加载模型、输入提示词、调整采样器等操作模块&am…

我的两个医学数据分析技术思路

我的两个医学数据分析技术思路 从临床上获得的或者公共数据库数据这种属于观察性研究&#xff0c;是对临床诊疗过程中自然产生的数据进行分析而获得疾病发生发展的规律等研究成果。再细分&#xff0c;可以分为独立危险因素鉴定和预测模型构建两种。 独立危险因素鉴定是一直以…

【YOLOv12改进trick】StarBlock引入YOLOv12,创新涨点优化,含创新点Python代码,方便发论文

🍋改进模块🍋:StarBlock 🍋解决问题🍋:采用StarBlock将输入数据映射到一个极高维的非线性特征空间,生成丰富的特征表示,使得模型在处理复杂数据时更加有效。 🍋改进优势🍋:简单粗暴的星型乘法涨点却很明显 🍋适用场景🍋:目标检测、语义分割、自然语言处理…

pyside6学习专栏(九):在PySide6中使用PySide6.QtCharts绘制6种不同的图表的示例代码

PySide6的QtCharts类支持绘制各种型状的图表&#xff0c;如面积区域图、饼状图、折线图、直方图、线条曲线图、离散点图等&#xff0c;下面的代码是采用示例数据绘制这6种图表的示例代码,并可实现动画显示效果&#xff0c;实际使用时参照代码中示例数据的格式将实际数据替换即可…

《今日AI-人工智能-编程日报》

1. 字节跳动发布AI编程工具Trae国内版 发布背景&#xff1a;字节跳动于2025年3月3日正式推出国内版AI编程工具Trae&#xff0c;这是国内首个AI原生集成开发环境&#xff08;AI IDE&#xff09;&#xff0c;旨在提升开发者的编程效率与智能化体验。 核心功能&#xff1a; 搭载d…

doris: MySQL

Doris JDBC Catalog 支持通过标准 JDBC 接口连接 MySQL 数据库。本文档介绍如何配置 MySQL 数据库连接。 使用须知​ 要连接到 MySQL 数据库&#xff0c;您需要 MySQL 5.7, 8.0 或更高版本 MySQL 数据库的 JDBC 驱动程序&#xff0c;您可以从 Maven 仓库下载最新或指定版本的…

【LangChain】存储与管理对话历史

0. 代码演示 from langchain_community.chat_message_histories import SQLChatMessageHistorydef get_session_history(session_id):# 通过 session_id 区分对话历史&#xff0c;并存储在 sqlite 数据库中return SQLChatMessageHistory(session_id, "sqlite:///memory.d…

从0开始的操作系统手搓教程21:进程子系统的一个核心功能——简单的进程切换

目录 具体说说我们的简单RR调度 处理时钟中断处理函数 调度器 schedule switch_to 我们下面&#xff0c;就要开始真正的进程切换了。在那之前&#xff0c;笔者想要说的是——我们实现的进程切换简单的无法再简单了——也就是实现一个超级简单的轮询调度器。 每一个进程按照…

mysql新手常见问题解决方法总结

1. 安装与配置问题 1.1 无法安装MySQL Server MySQL Server安装失败是新手常见的问题之一&#xff0c;以下是具体原因及解决方案&#xff1a; 系统要求不满足&#xff1a;MySQL对操作系统有最低版本要求&#xff0c;如Windows 7 SP1及以上、macOS 10.13及以上。若系统版本过…

数字组合(信息学奥赛一本通-1291)

【题目描述】 有n个正整数&#xff0c;找出其中和为t(t也是正整数)的可能的组合方式。如&#xff1a;n5,5个数分别为1,2,3,4,5&#xff0c;t5&#xff1b;那么可能的组合有514和523和55三种组合方式。 【输入】 输入的第一行是两个正整数n和t&#xff0c;用空格隔开&#xff0c…