【docker系列】docker命令篇

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.常用命令
      • 1.启动停止
      • 2.系统命令
      • 3.容器数据卷
      • 4.docker stats
    • 二.镜像命令
      • 1.查看镜像
      • 2.查询镜像
      • 3.拉取镜像
      • 4.删除镜像
      • 5.删除 none 镜像
      • 6.打 tag
      • 7.提交镜像
      • 8.将镜像保存为本地文件
      • 9.镜像加速
      • 10.查看镜像指令
    • 三.容器命令
      • 1.查询
      • 2.启动命令参数
      • 3.启动命令
      • 4.重启容器
      • 5.查看 top 信息
      • 6.进入容器
      • 7.拷贝数据
      • 8.停止容器
      • 9.删除容器
      • 10.退出容器
      • 11.操作全部容器
      • 12.启动后挂载
      • 13.删除容器日志
      • 14.配置 host
    • 四.日志查询
      • 1.容器 id
      • 2.容器名称
      • 3.带关键字
      • 4.输出到文件
      • 5.滚动查看日志
      • 6.时间范围
    • 五.项目实战
      • 1.push to harbor
      • 2.构建镜像
      • 3.启动文件
      • 4.Dockerfile

一.常用命令

1.启动停止

#启动docker
systemctl start docker

#加入自动启动
systemctl enable docker

#重启docker
systemctl restart docker

#查看docker状态
systemctl status docker

#docker版本
docker version

#卸载docker
yum remove docker-ce

2.系统命令

#查看版本信息
docker version

#查看具体信息
docker info

##查看docker容器帮助
docker --help

3.容器数据卷

#查看挂载列表信息
docker volume ls

#查看挂载信息
docker volume inspect [volume]

#挂载操作
docker run -it -v /home/muse/test:/home  centos /bin/bash

#匿名挂载
docker run -d -P --name nginx1 -v :/ect/nginx  nginx

#具名挂载
docker  run  -d -P  --name nginx2 -v nginx2:/etc/nginx  nginx

4.docker stats

#检测容器占用的内存和cpu,以及Io情况
docker stats

image-20230323164253102

二.镜像命令

1.查看镜像

#查看镜像
docker images

#含中间映像层
docker images -a

#只显示镜像ID
docker images -q

#含中间映像层
docker images -qa

#显示镜像摘要信息(DIGEST列)
docker images --digests

#显示镜像完整信息
docker images --no-trunc

#显示指定镜像的历史创建;参数:-H 镜像大小和日期,
#默认为true;--no-trunc  显示完整的提交记录;-q  仅列出提交记录ID
docker history -H redis
#获取镜像的详细信息,镜像ID 号可以不用打全。
docker  inspect   镜像ID号

2.查询镜像

#搜素镜像
docker search  rabbitmq

# --filter=stars=600:只显示 starts>=600 的镜像
docker search --filter=stars=600 mysql

# --no-trunc 显示镜像完整 DESCRIPTION 描述
docker search --no-trunc mysql

# --automated :只列出 AUTOMATED=OK 的镜像
docker search  --automated mysql

3.拉取镜像

#下载Redis官方最新镜像,相当于:docker pull redis:latest
docker pull redis

#下载仓库所有Redis镜像
docker pull -a redis

#下载私人仓库镜像
docker pull bitnami/redis

#下载指定版本镜像
docker  pull rabbitmq:3.8.11

4.删除镜像

#单个镜像删除,相当于:docker rmi redis:latest
docker rmi redis

#强制删除镜像
docker rmi -f   imgageID
docker rmi -f   imgageID1  imgageID2  imgageID3
docker rmi  -f  $(docker images -aq)

#多个镜像删除,不同镜像间以空格间隔
docker rmi -f redis tomcat nginx

#删除无用的镜像
docker rmi $(docker images | grep "none" | awk '{print $3}')

5.删除 none 镜像

删除 none 的镜像,要先删除镜像中的容器。要删除镜像中的容器,必须先停止容器。

#查看镜像
docker images

#直接删除带none的镜像,直接报错了。提示先停止容器
docker rmi $(docker images | grep "none" | awk '{print $3}')

#停止容器
docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')

#删除容器
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')

#删除镜像
docker rmi $(docker images | grep "none" | awk '{print $3}')

6.打 tag

#给镜像打标签
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag centos centos:v1

7.提交镜像

#基于当前redis容器创建一个新的镜像;
#参数:
-a 提交的镜像作者;
-c 使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停

docker commit -a="DeepInThought" -m="my redis" [redis容器ID]  myredis:v1.1

8.将镜像保存为本地文件

#将镜像保存为本地文件
docker   save   -o  存储文件名   存储的镜像

9.镜像加速

http://hub-mirror.c.163.com
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

10.查看镜像指令

docker history langchain-chainlit-chat-app

三.容器命令

1.查询

#查询容器列表
docker ps 参数

#查看生成的容器   启动+不启动
docker ps -a

#查看容器名称
docker ps --format "{{.Names}}"

#显示最近创建容器
docker ps -l

#显示最近创建的3个容器
docker ps -n 3

#不截断输出
docker ps --no-trunc

2.启动命令参数

通过 run 命令创建一个新的容器

  • --name="", 指定容器名字,后续可以通过名字进行容器管理,links 特性需要使用名字
  • -v, --volume=[], 给容器挂载存储卷,挂载到容器的某个目录
  • -h, --hostname="", 指定容器的主机名
  • --dns=[], 指定容器的 dns 服务器
  • -d, --detach=false, 指定容器运行于前台还是后台,默认为 false
  • -p, --publish=[], 指定容器暴露的端口
  • -P, --publish-all=false, 指定容器暴露的端口
  • -i, --interactive=false, 打开 STDIN,用于控制台交互
  • -t, --tty=false, 分配 tty 设备,该可以支持终端登录,默认为 false
  • -u, --user="", 指定容器的用户
  • -a, --attach=[], 登录容器(必须是以 docker run -d 启动的容器)
  • -w, --workdir="", 指定容器的工作目录
  • -c, --cpu-shares=0, 设置容器 CPU 权重,在 CPU 共享场景使用
  • -e, --env=[], 指定环境变量,容器中可以使用该环境变量
  • -m, --memory="", 指定容器的内存上限
  • --volumes-from=[], 给容器挂载其他容器上的卷,挂载到容器的某个目录
  • --cap-add=[], 添加权限
  • --cap-drop=[], 删除权限
  • --cidfile="", 运行容器后,在指定文件中写入容器 PID 值,一种典型的监控系统用法
  • --cpuset="", 设置容器可以使用哪些 CPU,此参数可以用来容器独占 CPU
  • --device=[], 添加主机设备给容器,相当于设备直通
  • --dns-search=[], 指定容器的 dns 搜索域名,写入到容器的/etc/resolv.conf 文件
  • --entrypoint="", 覆盖 image 的入口点
  • --env-file=[], 指定环境变量文件,文件格式为每行一个环境变量
  • --expose=[], 指定容器暴露的端口,即修改镜像的暴露端口
  • --link=[], 指定容器间的关联,使用其他容器的 IP、env 等信息
  • --lxc-conf=[], 指定容器的配置文件,只有在指定–exec-driver=lxc 时使用
  • --net="" , 容器网络设置
  • --privileged=false, 指定容器是否为特权容器,特权容器拥有所有的 capabilities
  • --restart="":指定容器停止后的重启策略
  • --rm=false, 指定容器停止后自动删除容器(不支持以 docker run -d 启动的容器)
  • --sig-proxy=true, 设置由代理接受并处理信号,但是 SIGCHLD、SIGSTOP 和 SIGKILL 不能被代理

3.启动命令

##新建并启动容器,参数:-i  以交互模式运行容器;-t  为容器重新分配一个伪输入终端;--name  为容器指定一个名称
docker run -it -p 9876:9876 09bbc30a03b6

#后台启动容器,参数:-d  已守护方式启动容器
docker run -d mycentos

#启动h2o
docker run -d -p 9876:9876 h2oai/h2o-open-source-k8s

#通过镜像名字启动容器
docker run --name nginx -p 80:80 -d nginx
docker run --name h2o-k8s -p 54321:54321 -d qyj1992/h2o-k8s

#通过镜像名字启动容器
docker run -d -p 80:80 nginx

#运行容器
docker run  参数  image名字

#启动nginx,并挂在配置文件目录到宿主机
docker run -d --name deepexi-belle-damo-nginx --privileged=true --dns 114.114.114.114 -p 80:80  \
-v /etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
 --restart=always deploy.deepexi.com/datasense-test/deepexi-belle-damo-nginx:v1.0.0

4.重启容器

#启动容器
docker start  容器id

#重启容器
docker restart 容器id

5.查看 top 信息

#查看top信息
docker  top   容器id

#查看元数据信息  比如软连接信息
docker inspect  容器id

6.进入容器

#进入容器
docker exec -it a6574b8410a8  bash

#windows进入docker容器
docker exec -it 38de0a4e449b   /bin/bash

#进入容器
docker attach  容器id

7.拷贝数据

#从宿主机拷贝到容器
docker cp /home  容器id:/home
docker cp /home/train.csv aigateway:/home/fastai/zzy/test0

#从容器拷贝到宿主机
docker  cp 容器name:/home   /home

#拷贝容器数据到宿主机,容器可以未启动成功
docker  cp c0392d2705b2:.chainlit/config.toml   /kwan/chainlit/langchain-chainlit-docker-deployment-template/.chainlit

#./ 代表当前目录
docker cp  chatbot:/app/app.py ./

8.停止容器

#停止容器
docker  stop  容器id

#强制停止容器
docker  kill  容器id

9.删除容器

#删除容器
docker rm  参数   容器id

#删除多个容器
docker rm -f $(docker ps -a -q)

# -l 移除容器间的网络连接,连接名为 db
docker rm -l db

#-v 删除容器,并删除容器挂载的数据卷
docker rm -v redis

#强制删除容器
docker rm -f xxxxxx

10.退出容器

#退出容器
exit

11.操作全部容器

#docker中     所有的容器命令
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

#docker中    关闭所有的容器命令
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)

#docker中 删除所有的容器命令
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

#docker中    删除所有的镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)

12.启动后挂载

当你使用 docker run 命令启动一个容器后,如果需要挂载更多的目录,可以使用 docker container update 命令来更新容器的配置。

例如,假设你已经启动了一个名为 my_container 的容器,现在你想要将目录 /app 挂载到这个容器中。可以使用以下命令来更新容器的配置:

docker container update -v /home/app/chatbot/config.toml:/app/.chainlit/config.toml chatbot

在这个命令中,--mount 参数用于指定要挂载的目录,source=/app 表示要挂载的目录为本地的 /app 目录,target=/app 表示要挂载到容器中的目录为 /app

注意,如果你更新了容器的配置,容器需要重新启动才能应用新的配置。可以使用 docker container restart 命令来重新启动容器。例如,以下命令可以重新启动名为 my_container 的容器:

docker container restart my_container

重新启动容器后,新挂载的目录就可以在容器中使用了。

#将容器中的文件移动到宿主机
docker  cp f5c2c45967f0:/app/.chainlit/config.toml  /home/app/chatbot

13.删除容器日志

磁盘容量不足,删除容器日志

这个命令的作用是清空 Docker 容器中的日志文件。具体来说,该命令执行以下操作:

  1. 使用 find 命令查找容器日志文件所在的目录,即/var/lib/docker/containers/目录下所有以-json.log 结尾的文件,并将它们的路径保存到变量 logs 中。

  2. 使用 for 循环遍历 logs 变量中的所有日志文件路径,对每个文件执行以下操作:

    a. 输出日志文件路径。

    b. 使用 cat 命令将日志文件清空(即内容清空,文件保留)。

该命令的作用是清空 Docker 容器中的日志文件,可以用于释放磁盘空间或清除过期日志,但需要注意的是,清空日志文件可能会导致数据丢失或无法追踪问题,因此需要谨慎使用。

#!/bin/bash
echo "=== start clean docker containers logs ==="

logs=$(find /var/lib/docker/containers/ -name *-json.log)

for log in $logs
        do
              echo "clean logs : $log"
              cat /dev/null > $log
        done
echo "=== end clean docker containers logs ==="

14.配置 host

在 docker run 运行容器的时候,添加参数--add-host [域名]:[IP]

#添加域名映射
docker run -d -p 8100:8100 --add-host demo-db:192.168.1.21 --name demo demo:v0724.01

如果要配置多个域名,那添加多个参数就 ok 了。如下面例子中的 host 和 host2

#添加多个域名映射
docker run -d -p 8100:8100 --add-host demo-db:192.168.1.21 --add-host2 demo-db:192.168.1.22 --name demo demo:v0724.01

四.日志查询

1.容器 id

#查看末尾3000行
docker logs --tail 3000  38de0a4e449b

#滚动最后100行
docker logs -f --tail 100  38de0a4e449b

2.容器名称

#查看末尾3000行
docker logs -f  --tail 500  ${CONTAINER_NAME}

3.带关键字

#滚动最后100行
docker logs -f --tail 100  38de0a4e449b  | grep 'ads_day_city_brand_sku_size_rep'

#最后3000带查询
docker logs --tail 30000  38de0a4e449b | grep 'java.lang.StringIndexOutOfBoundsException'

#查询执行失败的原因
docker logs --tail 100000  38de0a4e449b  | grep -A 100 'jobWasExecuted:' | grep '2022/04/02'

#查询错误的原因
docker logs --tail 40000  38de0a4e449b  | grep 'Exception' | grep '数据处理异常,错误信息='

#查询关键字
docker logs --tail 40000  38de0a4e449b  | grep '数据处理异常,错误信息='

4.输出到文件

#输出到文件,>>是追加到文件结尾
docker logs --tail 1000  38de0a4e449b   >> logs_error.txt

5.滚动查看日志

docker logs -f -t -n=5 {容器id}

6.时间范围

docker logs -f --since "2023-02-22" b93a3a7a64f5

五.项目实战

1.push to harbor

创建 push_to_kwan_harbor.sh 文件,文件内容如下:

#!/usr/bin/env bash

PROFILE=$1

if [ "$PROFILE" = "dev" ] || [ "$PROFILE" = "test" ] || [ "$PROFILE" = "uat" ] || [ "$PROFILE" = "prd" ]; then
  echo "building profile $PROFILE"
else
  echo "param 1 can only be dev test uat prd"
  return
fi

mvn clean package -P $PROFILE
docker login deploy.kwan.com -u datasense -p 自己的密码
docker build -t kwan-dsc-belle-insight-$PROFILE .
docker tag kwan-dsc-belle-insight-$PROFILE:latest deploy.kwan.com/datasense-test/kwan-dsc-belle-insight-$PROFILE:latest
docker push deploy.kwan.com/datasense-test/kwan-dsc-belle-insight-$PROFILE:latest
docker rmi kwan-dsc-belle-insight-$PROFILE:latest deploy.kwan.com/datasense-test/kwan-dsc-belle-insight-$PROFILE:latest

2.构建镜像

sh push_to_kwan_harbor.sh test

3.启动文件

创建 run.sh 文件

#!/usr/bin/env bash

PROFILE=$1

if [ "$PROFILE" = "dev" ] || [ "$PROFILE" = "test" ] || [ "$PROFILE" = "uat" ] || [ "$PROFILE" = "prd" ]; then
  echo "building profile $PROFILE"
else
  echo "param 1 can only be dev test uat prd"
  return
fi

CONTAINER_NAME=kwan-dsc-belle-insight-$PROFILE
IMAGE_NAME=deploy.kwan.com/datasense-test/kwan-dsc-belle-insight-$PROFILE:latest

docker rm -f ${CONTAINER_NAME}
docker rmi ${IMAGE_NAME}
docker pull ${IMAGE_NAME}
docker run -d --name ${CONTAINER_NAME} --privileged=true --dns 114.114.114.114 -e PROFILE=${PROFILE} -w /home -p 8099:80 -v $PWD/logs:/home/logs -v /home/uploads:/home/uploads --restart=always ${IMAGE_NAME}
docker logs -f ${CONTAINER_NAME}

在服务器上执行,不存在,则生成,存在,则覆盖源文件:

cat <<EOF >run.sh
#!/usr/bin/env bash

PROFILE=\$1

if [ "\$PROFILE" = "dev" ] || [ "\$PROFILE" = "test" ] || [ "\$PROFILE" = "uat" ] || [ "\$PROFILE" = "prd" ]; then
  echo "building profile \$PROFILE"
else
  echo "param 1 can only be dev test uat prd"
  return
fi

CONTAINER_NAME=kwan-dsc-belle-insight-\$PROFILE
IMAGE_NAME=deploy.kwan.com/datasense-test/kwan-dsc-belle-insight-\$PROFILE:latest

docker rm -f \${CONTAINER_NAME}
docker rmi \${IMAGE_NAME}
docker pull \${IMAGE_NAME}
docker run -d \
--name \${CONTAINER_NAME} \
--privileged=true \
--dns 114.114.114.114 \
-e PROFILE=\${PROFILE} \
-w /home \
-p 8099:80 \
-v \$PWD/logs:/home/logs \
-v /home/uploads:/home/uploads \
--restart=always \
\${IMAGE_NAME}
docker logs -f \${CONTAINER_NAME}
EOF

执行脚本文件

sh run.sh test

4.Dockerfile

deploy.kwan.com 为私仓 harbor,这里我的 kwan 是不存在的。

1.直接执行

FROM deploy.kwan.com/dce/d2sf-skywalking-base:jdk8-alpine-8.5.0

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

WORKDIR /home
USER root

ENV PROFILE="dev"
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8

COPY ./kwan-dsc-belle-insight-provider/target/*.jar /home/app.jar

EXPOSE 80

ENTRYPOINT ["java", "-Duser.timezone=Asia/Shanghai -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -Xloggc:logs/gc.log", "-jar", "/home/app.jar", "--server.port=80", "--spring.profiles.active=${PROFILE}"]

2.转为脚本执行

FROM deploy.kwan.com/dce/d2sf-skywalking-base:jdk8-alpine-8.5.0

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

WORKDIR /home
USER root

ENV PROFILE="dev"
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV JAVA_OPTS=""
ENV PARAMS=""

COPY ./kwan-dsc-belle-insight-provider/target/*.jar /home/app.jar

EXPOSE 80

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
RUN echo 'java $JAVA_OPTS -jar ./app.jar --spring.profiles.active=$PROFILE $PARAMS' > entrypoint.sh

ENTRYPOINT ["sh", "entrypoint.sh"]

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ之消费者可靠性

文章目录 前言一、消费者确认机制二、失败重试机制三、失败处理策略四、业务幂等性唯一消息ID业务判断 五、兜底方案总结 前言 当RabbitMQ向消费者投递消息以后&#xff0c;需要知道消费者的处理状态如何。因为消息投递给消费者并不代表就一定被正确消费了&#xff0c;可能出现…

【Linux】bash 终端指令

进程 $ ps aux | grep pwd work 63317 0.0 0.0 51192 612 pts/9 S 14:22 0:00 grep /home/work/search/1000000.dyenv-user-diaoyan-baiseCliPlus-baisePlus-195522.diaoyan.yq/ala-ac/output_root端口 查看本机端口开放情况 netstat -tln | grep :31 tcp …

122.买卖股票的最佳时机II(不限次数)

题目 题解 labuladong的状态图解 class Solution:def maxProfit(self, prices: List[int]) -> int:N len(prices)# 定义状态&#xff1a;dp[i][j]表示在第i天持有或卖出时的最大利润&#xff0c;j1代表持有&#xff0c;j0代表卖出dp [[0 for j in range(2)] for i in ra…

软件测试面试必杀篇:【2023软件测试面试八股文宝典】

800道软件测试面试真题&#xff0c;高清打印版打包带走&#xff0c;横扫软件测试面试高频问题&#xff0c;涵盖测试理论、Linux、MySQL、Web测试、接口测试、App测试、Python、Selenium、性能测试、LordRunner、计算机网络、数据结构与算法、逻辑思维、人力资源等模块面试题&am…

P16 C++构造函数

目录 前言 01 什么是构造函数呢&#xff1f; 02 非构造函数初始化变量 03 构造函数初始化变量 04 带参数的构造函数。 最后的话 前言 我们继续学习 C 的面向对象编程&#xff0c;本章主要是讲其中的 构造函数。 01 什么是构造函数呢&#xff1f; 构造函数基本上是一种特…

pytorch导出rot90算子至onnx

如何导出rot90算子至onnx 1 背景描述2 等价替换2.1 rot90替换(NCHW)2.2 rot180替换(NCHW)2.3 rot270替换(NCHW) 3 rot导出ONNX 1 背景描述 在部署模型时&#xff0c;如果某些模型中或者前后处理中含有rot90算子&#xff0c;但又希望一起和模型导出onnx时&#xff0c;可能会遇到…

基于51单片机直流电机PWM控制设计

直流电机驱动 &#x1f3b6;基于51单片机的PWM控制直流电机设计( proteus仿真程序报告讲解视频&#xff09;&#x1f3b6;主要功能&#xff1a;&#x1f3b6;仿真&#x1f3b6;程序设计&#xff1a; &#x1f3b6;设计报告&#x1f3b6;资料清单&#xff1a;资料网盘下载链接&a…

hivesql 将json格式字符串转为数组

hivesql 将json格式字符串转为数组 完整过程SQL在文末 json 格式字符串 本案例 json 字符串参考格式&#xff0c;请勿使用本数据 {"data": [{"province": 11,"id_card": "110182198903224674","name": "闾丘饱乾"…

gitee仓库使用教程

下载安装git&#xff1b;在本地项目文件夹右击鼠标点击Git Bash Here;输入git init&#xff0c;这个目录变成git可以管理的仓库&#xff0c;会出现一个.git文件夹&#xff0c;如果没出现的话需要选择“显示隐藏文件”&#xff08;不会的同学自行百度一下&#xff09; 4.绑定本地…

MySQL数据库如何实现跨服务器访问数据

点击上方蓝字关注我 在使用MySQL数据库时&#xff0c;很多同学经常会问&#xff0c;我能跨服务器访问另一库的数据么&#xff1f;得到的答案很多时候是让人失望的。那么如果真的需要访问&#xff0c;又不想使用拷贝表及数据的方式&#xff0c;可以实现么&#xff0c;又该如何实…

3.数据结构

3.1 数据结构分类 常见的数据结构包括数组、链表、栈、队列、哈希表、树、堆、图&#xff0c;它们可以从“逻辑结构”和“物理结构”两个维度进行分类。 3.1.1逻辑结构&#xff1a;线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中&#xff0c;数据按照…

056-第三代软件开发-软件打包

第三代软件开发-软件打包 文章目录 第三代软件开发-软件打包项目介绍软件打包1 下载 linuxdepoyqt 工具2 安装 linuxdepoyqt3 qmake配置4 打包程序 总结 关键字&#xff1a; Qt、 Qml、 linuxdeployqt、 Ubuntu、 AppImage 项目介绍 欢迎来到我们的 QML & C 项目&…

常见树种(贵州省):021冬青、连香树、白辛树、香合欢、云贵鹅耳枥、肥牛树、杜英、格木、黄连木、圆果化香树、南天竹

摘要&#xff1a;本专栏树种介绍图片来源于PPBC中国植物图像库&#xff08;下附网址&#xff09;&#xff0c;本文整理仅做交流学习使用&#xff0c;同时便于查找&#xff0c;如有侵权请联系删除。 图片网址&#xff1a;PPBC中国植物图像库——最大的植物分类图片库 一、冬青 …

图解系列--Http

1.URI和URL 1.1.URL URL是统一资源定位符。URL正是使用 Web 浏览器等访问 Web 页面时需要输入的网页地址。比如&#xff0c;http://hackr.jp/就是 URL。 1.2.URI 统一资源标识符。 URI 用字符串标识某一互联网资源&#xff0c;而URL表示资源的地点&#xff08;互联网上所处的位…

Java 基础学习(一)Java环境搭建和基本数据类型

1 Java 开发环境搭建 1.1 Java 编程语言 1.1.1 什么是Java编程语言 语言是人类进行沟通交流的各种表达符号&#xff0c;方便人与人之间进行沟通与信息交换&#xff1b;而计算机编程语言则是人与计算机之间进行信息交流沟通的一种特殊语言&#xff0c;也有语法规则、字符、符…

【c++随笔14】虚函数表

【c随笔14】虚函数表 一、虚函数表&#xff08;Virtual Function Table&#xff09;1、定义2、查看虚函数表2.1、 问题&#xff1a;三种类型&#xff0c;包含一个int类型的class、一个int类型的变量、int类型的指针&#xff1a;这三个大小分别是多少呢&#xff1f;2.2、怎么发现…

Linux7安装mysql数据库以及navicat远程连接mysql

1.下载地址&#xff1a;MySQL :: Download MySQL Community Server 2.创建mysql目录将压缩包上传到该目录 mkdir /opt/mysql cd /opt/mysql3.解压压缩包 gzip mysql-8.1.0-1.el7.x86_64.rpm-bundle.tar tar -zxvf mysql-8.1.0-1.el7.x86_64.rpm-bundle.tar.gz 4.前置检查 ch…

STM32 F1 串口空闲中断 + DMA实现数据发送

DMA实现数据发送 文章目录 DMA实现数据发送前言一、DMA二、代码编写1.DMA2.USART3.main 前言 当你遇到通信数据量大的时候&#xff0c;可以使用 空闲中断 DMA 的方案来减轻 CPU 的压力。 或者 在进行stm32开发时&#xff0c;有时会遇到这种情况&#xff1a;需要在设备间进行数…

接口测试快速入门 以飞致云平台为例

飞致云电商API地址系统来自飞致云项目。接口API地址&#xff1a;https://gz.fit2cloud.com/swagger-ui.html 飞致云电商系统接口文档 V1.0&#xff1a;见 有道云笔记 该网站可以做接口测试练习。快速了解如何测试接口&#xff0c;如何做关联 系统基地址&#xff1a;https://g…

通用电气调查网络攻击和数据盗窃指控

通用电气正在调查有关威胁行为者在网络攻击中破坏了公司开发环境并泄露据称被盗数据的指控。 通用电气 (GE) 是一家美国跨国公司&#xff0c;业务涉及电力、可再生能源和航空航天行业。 本月早些时候&#xff0c;一个名为 IntelBroker 的威胁行为者试图在黑客论坛上以 500 美…