Docker运维高级容器技术知识点总结
1、虚拟机部署和容器化部署的区别是什么?
1、技术基础:
<1>.虚拟化技术在物理硬件上创建虚拟机,每台虚拟机运行自己完整的操作系统、从而实现资源隔离。
<2>.容器化技术:将应用程序打包在容器内,在进程空间上实现隔离。
2、资源效率和开销:
<1>.虚拟机比较占资源、导致资源使用率高。
<2>.容器共享宿主机操作内核、仅隔离程序进程。
3、隔离和安全性:
<1>.虚拟化:提供强大隔离性、提供高安全性,但资源占用率大。
<2>.容器化:虽然实现了隔离,但共享宿主内核,但是隔离性稍差。
2、什么是docker?什么是镜像、容器、仓库?
docker是一种开源平台,允许开发者将程序部署在容器中。可以部署在任何环境中,确保一致性和可移植性。
镜像是容器的模板,用来创建容器的。一个镜像可以创建出多个容器。
容器是用来运行各种应用程序、服务的。
仓库是用来存储镜像文件的地方。仓库分为公有仓库和私有仓库,存放了大量的镜像供用户下载
3、什么是docker容器?
docker容器是运行中的实例。
4、如何从dockerfile构建镜像?
使用docker build命令进行构建镜像。
docker build -t myimage:latest // -t用于指定镜像标签
5、如何运行一个docker?
使用docker run命令运行docker
docker run -d --name mycontainer myimage:latest
// 运行一个基于myimage:latest镜像的容器
6、如何查看正在运行的docker容器?
可以使用docker ps 命令进行查看。
如果要查看所有的容器,包括已经停止的docker ,可以使用
docker ps -a // 查看所有容器(包括已经停止的docker容器)
7、如何停止和删除一个容器?
使用docker stop 和 docker rm命令进行查看。
例如停止并删除mycontainer容器。
docker stop mycontainer // 停止使用mycontainer容器
docker rm mycontainer // 删除mycontainer容器。
8、Docker安装失败了如何进行排查?
1、检查系统是否满足Docker的安装要求。
2、在/var/log目录下进行查看日志
3、检查防火墙或云服务的安全组设置,确保Docker需要的端口没有被阻塞。
4、确保操作系统和所有软件包都是最新的,有时旧的软件包可能会导致安装问题。
5、尝试清理环境后重新安装
9、镜像管理
在dockers中镜像是容器的模板,当用户需要从Docker镜像中查找所需要的镜像。
1、查找镜像
docker search keyword(keyword表示要查找镜像所包含的关键词)
eg:要查找出包含mysql的关键词 // docker search mysql
2、下载镜像
查找到合适的镜像后,可以将其下载到本地计算机中,以便创建容器。
docker pull name:tag // name为镜像名称、tag参数指定镜像标签
eg:docker pull mysql // 将mysql镜像下载到本地计算机中
3、列出本地镜像
docker image ls // 列出本地镜像
docker images
4、删除镜像
对于当前系统中已经不需要的镜像,为了节省存储空间 。可以将其删除。
可以同时删除多个镜像,多个镜像名称使用空格进行隔开即可。
docker rmi image //image为镜像名称
docker rmi -f mysql //强行删除mysql镜像
5、查看镜像
对于下载到本地的镜像文件,可以使用docker inspect进行查看详细信息。
root@ubuntu-virtual-machine:/home/ubuntu# docker inspect mysql
6、构建镜像
构建docker镜像有两种方法:
1、docker commit命令进行构建
2、docker build 命令和Dockerfile文件进行构建,但是过程十分繁琐。因此一般我们使用docker commit进行构镜像。
3、使用docker commit进行构建镜像。
eg:在docker中进行创建数据库mysql并进行映射到主机的3306端口
1、在docker中创建数据库
docker run --name mysqltest -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
// --name 进行对容器进行命名
// -e 对创建的MySQL进行密码设置为123456 、账号为root
// -p 对docker创建的MySQL进行端口映射
// -d 后台运行容器
2、进入创建好的容器mysqltest中
docker exec -it mysqltest /bin/bash
// -i表示交互式,-t 表示分配一个虚拟终端。/bin/bash为要执行的命令。
3、进入交互式页面
mysql -uroot -p
password:123456 // 进入数据库
7、镜像标签管理
镜像标签可以区分不同的版本,镜像和标签之间可以使用冒号进行隔开。
docker提供了docker tag命令来设置镜像的标签。
docker tag httpd local/httpd // 将名称为httpd的镜像标识为local仓库的httpd
10、容器管理
容器是docker提供网络服务的主体,为了提供mysql,apache,nginx等网络服务,用户必须创建对应的容器。
在docker中常使用docker create 创建容器,但是创建的新容器处于停止状态。
另一种是通过docker run 创建新容器,但是容器会启动。
1、创建容器
docker create [option] image
用户可通过option为容器指定相应的选项。用来设置新的容器。
--add-host=[] //指定主机到IP地址之间的关系,格式为host:ip
--dns=[] //为容器指定域名服务器
-h //为容器指定主机名
-i //打开容器的标准输入
--name //指定容器名称
-u //创建用户
eg1:创建一个名为yunwei的容器
docker create yunwei
eg:创建一个名为yunwei的容器,创建之后立即启动该容器,并进入交互模式
root@ubuntu-virtual-machine:/home/ubuntu# docker run -it --name yunwei ubuntu /bin/bash
root@0dd80eac1c83:/# pwd
/
root@0dd80eac1c83:/# exit
root@ubuntu-virtual-machine:/home/ubuntu# docker run -d -it ubuntu /bin/bash
// 创建一个后台型容器
ec313748b83eeda0f07681480a27003616260b2f74566541ca8c3079f513b608
2、查看容器
docker ps //查看当前正在运行的容器
docker ps -a //查看当前系统中所有的容器,包括运行中的个处于停止状态的容器
有些容器的状态为Exited 表示已经停止运行
有些容器的状态为up 表示处于运行状态
有些容器的状态为Created 表示处于创建过,但是没有启用
查找某些特定的容器
docker ps -a -f name=crank // -f指定筛选条件
root@ubuntu-virtual-machine:/etc/docker# docker ps -a -f name=mysql
field=value //field表示name,image,以及status等字段docker ps -a --before=ubuntu //ubuntu容器之前所建的所有容器
docker ps -a --since=ubuntu //Ubuntu容器之后所建的所有容器
3、启动容器
通常使用docker start命令来进行启动容器。
使用docker restart命令来进行重启容器
使用docker stop 命令来进行停止容器
使用docker kill命令来强制终止容器
使用docker rm 命令来删除容器,加上-f参数就是强制删除容器。
11、网络管理
1、docker的网络原理
在docker安装完成后,宿主机中会创建一个虚拟网桥,通常情况下为docker 0。
网桥工作在OSI七层模型中的数据链路层,在docker中各个容器是通过一个名为docker 0的网桥进行转发流量实现互联的。
一般使用brctl show命令来查看虚拟网桥docker0的信息
root@ubuntu-virtual-machine:/home/ubuntu# brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.024277a58ad4 no vethdb861c4
2、docker的网络模式
网络模式可以在创建容器时使用 --network选项来指定。
docker网络模式一共分为4种,分别是host,container,none,bridge。
host模式:容器不会获得一个独立的Network命名空间,而是和宿主机共用一个Network命名空间。容器将不会虚拟出 自己的网卡、配置自己的IP等,而是使用宿主机的IP和端口。
container模式(容器模式):新创建的容器和已经存在的容器共享一个Network命名空间,和指定容器共用一个IP地址,端口范围 等。
none模式(无模式):docker拥有自己的Network命名空间,但是不为docker配置任何网络,需要我们自己手动添加网络配置。
bridge模式(桥接模式):bridge模式是docker默认的网络模式,此模式会为每一个容器分配一个Network命名空间,并将主机上的 docker容器连接到一个虚拟网桥上。
docker容器的网络互联:
// 创建第一个容器
root@ubuntu-virtual-machine:/home/ubuntu# docker run -d -it centos /bin/bash
394b4650ba5bfeacc9c86217f681b79ef79dcf663f65d3021b2312be1949b628
// 创建第二个容器
root@ubuntu-virtual-machine:/home/ubuntu# docker run -d -it centos /bin/bash
720e4167f96280673f5193f025cb75eaf303b972d7dca4ecc552ef0d5b11abf2
// 查看容器运行状态
root@ubuntu-virtual-machine:/home/ubuntu# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c521fb7136cc centos "/bin/bash" 6 seconds ago Up 5 seconds blissful_leakey
720e4167f962 centos "/bin/bash" 16 seconds ago Up 15 seconds youthful_diffie// 获取容器的IP地址
root@ubuntu-virtual-machine:/home/ubuntu# docker exec c521fb7136cc ip a show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.4/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
root@ubuntu-virtual-machine:/home/ubuntu# docker exec 720e4167f962 ip a show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
// ip地址分别为:172.17.0.4/16;172.17.0.3/16// 使用icmp协议ping命令查看是否可以通信
root@ubuntu-virtual-machine:/home/ubuntu# docker exec c521fb7136cc ping 172.17.0.4
PING 172.17.0.4 (172.17.0.4) 56(84) bytes of data.
64 bytes from 172.17.0.4: icmp_seq=1 ttl=64 time=0.023 ms
64 bytes from 172.17.0.4: icmp_seq=2 ttl=64 time=0.021 ms
64 bytes from 172.17.0.4: icmp_seq=3 ttl=64 time=0.022 msroot@ubuntu-virtual-machine:/home/ubuntu# docker exec 720e4167f962 ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3) 56(84) bytes of data.
64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=0.016 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.022 ms
64 bytes from 172.17.0.3: icmp_seq=3 ttl=64 time=0.021 ms// 由此可见两容器之间都可以进行通信
// 容器与外部网络的互联通信
root@ubuntu-virtual-machine:/home/ubuntu# docker exec 720e4167f962 ping www.baidu.com
PING www.a.shifen.com (183.2.172.185) 56(84) bytes of data.
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=1 ttl=127 time=36.2 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=2 ttl=127 time=35.8 ms
12、Docker仓库
1、什么是Docker Hub?
Docker Hub是Docker提供的一项服务,帮助用户查找和共享容器镜像
2、Docker Hub的特点?
1、使用pull和push进行上传和拉取镜像。
docker pull从Docker Hub中进行拉取镜像到本地机器、创建容器进行使用。
docker push是将本地镜像上传到docker hub仓库,当对本地镜像进行修改之后想要分享给他人使用,可以使用
2、Docker官方镜像:提取并使用Docker提供的高质量容器镜像。
3、使用Docker Hub
答:1、使用Docker Hub和Docker Desktop进行镜像管理
2、使用docker login命令进行管理
13、Docker的数据管理
1、什么是数据卷?
数据卷是为一个或多个容器专门指定的目录。
特点:
1、可以在容器间共享和重用。
2、数据卷的数据改变可以直接修改
3、数据的改变不会包括在容器中
4、数据卷是持续的,直到没有容器使用。
2、如何创建数据卷?
docker提供volume进行管理数据卷
使用docker进行创建数据卷
docker volume create -d local volume_demo
// 创建一个volume_demo的数据卷
// 存在目录位于/var/lib/docker/volume路径下
使用docker inspect 命令可进行查看详细信息
3、数据卷的分类
在运行容器时可以通过指定-v 或 --mount参数来使用该Volume,并且可以依据数据卷类型不同挂在不同类型的数据卷。
在docker中数据卷分为三类:
volume普通数据卷,Bind绑定数据卷,tmpfs临时数据卷
volume普通数据卷:映射到特定位置:/var/lib/docker/volumes
Bind绑定数据卷:映射到主机的任意位置
tmpfs临时数据卷:只存在于内存中
查看运行的容器和数据卷信息
root@ubuntu-virtual-machine:/home/ubuntu# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef9d2eed6a28 mysql "docker-entrypoint.s…" 36 minutes ago Up 36 minutes 3306/tcp, 33060/tcp mysqltest
1d65b1b42524 httpd "httpd-foreground" 3 hours ago Up 3 hours 0.0.0.0:80->80/tcp, :::80->80/tcp reverent_fermatroot@ubuntu-virtual-machine:/home/ubuntu# ls -al /var/lib/docker/volumes/
数据迁移
数据卷可以有效的进行数据备份,恢复,和迁移。
14、Docker日志
1、docker logs
作用:docker logs主要是用来进行查看日志
docker logs [options] container
// 可以通过子命令来查看具体某个容器的日志
docker logs container (此时看到的容器日志是静态的)
// 如果想要看到动态的容器日志,加上-f参数即可
docker logs -f container
docker logs命令选项
Options:
--details 显示提供给日志的其他详细信息
-f, --follow 跟踪日志输出
--since string 显示给定的时间戳 (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
-n, --tail string 从日志末尾显示n行的日志
-t, --timestamps 显示时间戳
--until string 显示给定的时间戳 (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
2、logging driver
docker允许我们从运行的容器中提取日志、这个机制就被称为logging driver
docker默认的logging driver文件格式为json-file
快速查看nginx的日志文件路径:
root@node:/home/ubuntu# docker inspect nginx_server | grep -i logpath
"LogPath": "/var/lib/docker/containers/1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008/1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008-json.log"root@node:/home/ubuntu# cd /var/lib/docker/containers/1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008/
root@node:/var/lib/docker/containers/1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008# ls
1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008-json.log checkpoints config.v2.json hostconfig.json hostname hosts mounts resolv.conf resolv.conf.hash
root@node:/var/lib/docker/containers/1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008# cat 1bcf7355d531834fd7d3b9cbf2408a897cb6756d205f0c12b46679e7a8677008-json.log
3、安装ELK日志监控系统
ELK是可以进行搜集、过滤、传输、存储以及实现多系统的组件日志进行集中管理,并且可以帮助运维人员进行线上业务的实时监控,以及业务异常的标准定位。
ELK优点:1、安全性、密钥库和访问控制。
2、可以进行管理日志和指标等
3、仪表盘和可视化界面
4、可以确定在哪里找到其他资源
1、采用docker方式进行部署
docker pull sebp/elk:640 // 下拉sebp/elk、640版本的镜像2、启动ELK服务
docker run -it --name=elk -p 5601:5601 -p 9200:9200 -p 5044:5044 -d sebp/elk:6403、浏览器访问ELK页面
http://192.168.159.131:56014、浏览器访问
http://192.168.159.131:9200 (查看API接口是否可用)
相关文章:
Docker运维高级容器技术知识点总结
1、虚拟机部署和容器化部署的区别是什么? 1、技术基础: <1>.虚拟化技术在物理硬件上创建虚拟机,每台虚拟机运行自己完整的操作系统、从而实现资源隔离。 <2>.容器化技术:将应用程序打包在容器内,在进程空间…...
Docker的安装和使用
容器技术 容器与虚拟机的区别 虚拟机 (VM) VM包含完整的操作系统,并在虚拟化层之上运行多个操作系统实例。 VM需要更多的系统资源(CPU、内存、存储)来管理这些操作系统实例。 容器 (Container) 容器共享主机操作系统的内核,具…...
Java语法总结
Java的数据类型分为基本数据类型和引用数据类型。 1.基本数据类型:四类八种 byte 和short 比较特殊,不必考虑int类型,只关注是否超出了表示范围。 数据超出了int的范围,改正:在后边添加L ,定义变量报错…...
Linux文件系统的安全保障---Overlayroot!
overlayroot 是一种使用 OverlayFS 实现的功能,可将根文件系统挂载为只读,并通过一个临时的写层实现对文件系统的修改。这种方法非常适合嵌入式设备或需要保持系统文件完整性和安全性的场景。下文以 RK3568 平台为例,介绍制作 overlayroot 的…...
net-http-transport 引发的句柄数(协程)泄漏问题
Reference 关于 Golang 中 http.Response.Body 未读取导致连接复用问题的一点研究https://manishrjain.com/must-close-golang-http-responsehttps://www.reddit.com/r/golang/comments/13fphyz/til_go_response_body_must_be_closed_even_if_you/?rdt35002https://medium.co…...
Elasticsearch:在 HNSW 中提前终止以实现更快的近似 KNN 搜索
作者:来自 Elastic Tommaso Teofili 了解如何使用智能提前终止策略让 HNSW 加快 KNN 搜索速度。 在高维空间中高效地找到最近邻的挑战是向量搜索中最重要的挑战之一,特别是当数据集规模增长时。正如我们之前的博客文章中所讨论的,当数据集规模…...
嵌入式c语言的内存管理
目录 一、内存布局概述 二、栈(Stack) 2.1. 定义与用途 2.2. 内存分配与释放 2.3. 增长方向与大小限制 三、堆(Heap) 3.1. 定义与用途 3.2. 内存分配与释放 3.3. 增长方向与潜在问题 四、全局/静态存储区 4.1. 定义与用…...
uniapp-vue3 实现, 一款带有丝滑动画效果的单选框组件,支持微信小程序、H5等多端
采用 uniapp-vue3 实现, 是一款带有丝滑动画效果的单选框组件,提供点状、条状的动画过渡效果,支持多项自定义配置,适配 web、H5、微信小程序(其他平台小程序未测试过,可自行尝试) 可到插件市场下载尝试&…...
【Linux】shell脚本编程
目录 概念: shell脚本的本质: shell脚本编程: shell变量: 变量的定义格式: 变量的分类 自定义变量: 环境变量: 命令变量与命令行参数: 预定义变量: shell中的…...
ingress-nginx-controller安装
ingress-nginx-controller安装 ingress-nginx-controller是配置ingress发布的基础。以下主要采用Helm安装。地址: GitHub - kubernetes/ingress-nginx: Ingress NGINX Controller for Kubernetes 1 Helm安装 安装不难,需要找到合适的压缩包就行。我自…...
机器学习基础-机器学习的常用学习方法
目录 半监督学习的概念 规则学习的概念 基本概念 机器学习里的规则 逻辑规则 规则集 充分性与必要性 冲突消解 命题逻辑 → 命题规则 序贯覆盖 单条规则学习 剪枝优化 强化学习的概念 1. 强化学习对应了四元组 2. 强化学习的目标 强化学习常用马尔可夫决策过程…...
如何在Windows 11 WSL2 Ubuntu 环境下安装和配置perf性能分析工具?
在Windows 11 WSL2 Ubuntu 环境下完整安装和配置perf性能分析工具 一、背景二、准备工作三、获取并编译Linux内核源码四、安装和配置perf五、测试perf六、总结 一、背景 由于WSL2使用的是微软定制的内核,并非标准的Ubuntu内核,因此直接使用apt安装linux…...
人工智能知识分享第十天-机器学习_聚类算法
聚类算法 1 聚类算法简介 1.1 聚类算法介绍 一种典型的无监督学习算法,主要用于将相似的样本自动归到一个类别中。 目的是将数据集中的对象分成多个簇(Cluster),使得同一簇内的对象相似度较高,而不同簇之间的对象相…...
使用wav2vec 2.0进行音位分类任务的研究总结
使用wav2vec 2.0进行音位分类任务的研究总结 原文名称: Using wav2vec 2.0 for phonetic classification tasks: methodological aspects 研究背景 自监督学习在语音中的应用 自监督学习在自动语音识别任务中表现出色,例如说话人识别和验证。变换器模型…...
【Leetcode 热题 100】33. 搜索旋转排序数组
问题背景 整数数组 n u m s nums nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前, n u m s nums nums 在预先未知的某个下标 k ( 0 ≤ k < n u m s . l e n g t h ) k(0 \le k \lt nums.length) k(0≤k<nums.length) 上进行了 旋转&…...
【VScode】设置代理,通过代理连接服务器
文章目录 VScode编辑器设置代理1.图形化界面1.1 进入proxy设置界面1.2 配置代理服务器 2.配置文件(推荐)2.1 打开setting.json 文件2.2 配置代理 VScode编辑器设置代理 根据情况安装nmap 1.图形化界面 1.1 进入proxy设置界面 或者使用快捷键ctrl , 。…...
每日一题-两个链表的第一个公共结点
文章目录 两个链表的第一个公共结点问题描述示例说明示例 1示例 2 方法及实现方法描述代码实现 复杂度分析示例运行过程示例 1示例 2 总结备注 两个链表的第一个公共结点 问题描述 给定两个无环的单向链表,找到它们的第一个公共节点。如果没有公共节点,…...
Linux存储管理之核心秘密(The Core Secret of Linux Storage Management)
Linux存储管理之核心秘密 如果你来自Windows环境,那么Linux处理和管理存储设备的方式对你而言可能显得格外不同。我们知道,Linux的文件系统并不采用Windows那样的物理驱动器表示方式(如C:、D:或E:),而是构建了一个以&…...
js单例模式
保证一个类只有一个实例,并提供一个访问它的全局访问点 实现 静态方法实现 class SingleTon{//全局的访问点static getInstance(){// 保证一个类只有一个实例if(!this.instance){this.instancenew SingleTon()}return this.instance}}let aSingleTon.getInstance()let bSing…...
搭建一个本地轻量级且好用的学习TypeScript语言的环境
需求说明 虽然 TypeScript 的在线 Playground 很方便 https://www.tslang.com.cn/play/,但毕竟是在浏览器中使用,没有本地的 IDE 那么顺手。所以我想搭建一个本地类似 Playground 的环境,这样在学习 TypeScript 的过程中,可以更方…...
大模型(LLM)面试全解:主流架构、训练目标、涌现能力全面解析
系列文章目录 大模型(LLMs)基础面 01-大模型(LLM)面试全解:主流架构、训练目标、涌现能力全面解析 大模型(LLMs)进阶面 文章目录 系列文章目录大模型(LLMs)基础面一、目…...
入门嵌入式(七)——PWM
PWM 脉冲宽度调制PWM(Pulse-Width Modulation) 一组方波 周期 1ms 频率 1s / 周期 占空比 高电平/周期 数字信号:0/1高低电平 串口 IIC PWM都属于数字信号 模拟信号:电压值, 会受到电磁影响 ADC 模数转换 用于读取…...
Flutter 实现 列表滑动过程控件停靠效果 学习
实现一个 Flutter 应用程序,使用 Sliver 系列组件来创建具有滚动效果的复杂布局。使用 NestedScrollView 和 SliverPersistentHeader 来实现固定和动态的头部效果,以及一个可滚动的列表。 前置知识点学习 SingleTickerProviderStateMixin SingleTicker…...
STM32+WIFI获取网络时间+8位数码管显示+0.96OLED显
资料下载地址:STM32WIFI获取网络时间8位数码管显示0.96OLED 1、项目介绍 主控芯片STM32C8T6 接线:串口1:PA9 PA10 OELD :PB6 PB7 数码管使用:MAX7219 8位数码管 Max7219_pinCLK PAout(5) Max7219_pinC…...
Kivy App开发之UX控件Slider滑块
在app中可能会调节如音量,亮度等,可以使用Slider来实现,该控件调用方便,兼容性好,滑动平稳。在一些参数设置中,也可以用来调整数值。 支持水平和垂直方向,可以设置默认值,最小及最大值。 使用方法,需用引入Slider类,通过Slider类生成一个滑块并设置相关的样式后,再…...
STM32学习(十)
I2C模块内部结构 I2C(Inter-Integrated Circuit)模块是一种由Philips公司开发的二线式串行总线协议,用于短距离通信,允许多个设备共享相同的总线。 硬件连接简单:I2C通信仅需要两条总线,即SCL&…...
何为“正则表达式”!
详细解释: ^:在JSON的正则表达式中,^表示匹配输入字符串的开始位置。这意味着正则表达式将从字符串的开头开始进行匹配,确保整个字符串符合后续的模式要求。例如,对于字符串"3.14",正则表达式会…...
创建Java项目,并添加MyBatis包和驱动包
一 : Mybatis和jsp使用上,只有Dao层有区别 Mybatis 使用方法: 测试类的7步骤 1.读取核心配置文件 2.构建sql会话工厂 3.开启sql会话 4.获取mapper接口 5.调用相对应的增删改查方法 6.打印 7.关闭回话 /*** 用户列表* throws IOException*/Testpublic void roleList() throws IO…...
目标检测文献阅读-DETR:使用Transformer进行端到端目标检测
目录 摘要 Abstract 1 引言 2 DETR结构 2.1 Backbone 2.2 Encoder 2.3 Decoder 2.4 FFN 3 目标检测集合预测损失 3.1 二分图匹配损失 3.2 损失函数 总结 摘要 本周阅读的论文题目是《End-to-End Object Detection with Transformers》(使用Transformer进行端到端目…...
C#里对已经存在的文件进行压缩生成ZIP文件
先要对目录下所有文件获取到: private List<string> GetXDFiles(string dirPath){//获取目录中的所有文件string suffix = "*.txt"; // 要查找的文件后缀var files = Directory.GetFiles(dirPath, suffix, SearchOption.TopDirectoryOnly).ToList();return fi…...
单片机软件定时器V4.0
单片机软件定时器V4.0 用于单片机定时执行任务等,比如LED GPIO等定时控制,内置前后台工作模式 头文件有使用例子 #ifndef __SORFTIME_APP_H #define __SORFTIME_APP_H#ifdef __cplusplus extern "C" { #endif#include <stdint.h>// #…...
【嵌入式硬件】嵌入式显示屏接口
数字显示串行接口(Digital Display Serial Interface) SPI 不过多赘述。 I2C-bus interface 不过多赘述 MIPI DSI MIPI (Mobile Industry Processor Interface) Alliance, DSI (Display Serial Interface) 一般用于移动设备,下面是接口…...
vuedraggable 选项介绍
vuedraggable 是基于 SortableJS 的 Vue 组件,提供了丰富的选项来定制拖拽行为。以下是 vuedraggable 常用的选项和它们的详细说明: 常用选项介绍 group 配置拖拽分组。多个列表可以共享同一个分组,允许它们之间的项目互相拖拽。 group: { na…...
OpenAI CEO 奥特曼发长文《反思》
OpenAI CEO 奥特曼发长文《反思》 --- 引言:从 ChatGPT 到 AGI 的探索 ChatGPT 诞生仅一个多月,如今我们已经过渡到可以进行复杂推理的下一代模型。新年让人们陷入反思,我想分享一些个人想法,谈谈它迄今为止的发展,…...
Appium(一)--- 环境搭建
一、Android自动化环境搭建 1、JDK 必须1.8及以上(1) 安装:默认安装(2) 环境变量配置新建JAVA_HOME:安装路径新建CLASSPath%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar在path中增加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(3) 验证…...
如何查看服务器上的MySQL/Redis等系统服务状态和列表
如果呢你知道系统服务名称,要看状态很简单: systemctl status server-name 比如 systemctl status nginxsystemctl status redis # 等 这是一个nginx的示例: 那问题是 当你不知道服务名称时该怎么办。举个例子,比如mysql在启动…...
多模态论文笔记——U-ViT
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍U-ViT的模型架构和实验细节,虽然没有后续的DiT在AIGC领域火爆,但为后来的研究奠定了基础,但其开创性的探索值得学习…...
08-1_队列的理论讲解
08-1_队列的理论讲解 队列概念理解 队列就是一个传送带,就是一个流水线 工人放入的数据, 放在传送带上,送给消费者, 消费者第一次拿到的数据,就是工人第一次放上的数据(类比队列,先进先出) freertos队列应用思考 队列对于消费者(取数据): (1)当队列没有数据, 消费者需要进入…...
HTML基础入门——简单网页页面
目录 一,网上转账电子账单 编辑 1,所利用到的标签 2,代码编写 3,运行结果 二,李白诗词 1,所用到的标签 2,照片的编辑 3,代码编写 4,运行结果 一,网…...
Proteus-8086调试汇编格式的一点心得
这阵子开始做汇编的微机实验(微机原理与接口技术题解及实验指导,吴宁版本13章),中间出了挺多问题,解决后记录下。 先上电路图 用子电路来仿真发现仿真的时候子电路这块根本没有高低电平输出,只好把子电路拿…...
Python入门教程 —— 多任务
1.线程 1.1.线程安全问题 线程访问全局变量 import threading g_num = 0 def test(n):global g_numfor x in range(n):g_num += xg_num -= xprint(g_num)if __name__ == __main__:t1 = threading.Thread(target=test, args=(10,))t2 = threading.Thread(target=test, args=(…...
【笔记】算法记录
1、求一个数的素因子(试除法) // 获取一个数的所有素因子 set<int> getPrimeFactors(int num) {set<int> primeFactors;for (int i 2; i * i < num; i) {while (num % i 0) {primeFactors.insert(i);num / i;}}if (num > 1) {prime…...
2024年1月4日蜻蜓hr人才招聘系统v1.1.7更新-正式版发布-客户端源代码开源发布供学习-本产品完成上线正式版-修复多个bug-优雅草果果|小无
2024年1月4日蜻蜓hr人才招聘系统v1.1.7更新-正式版发布-客户端源代码开源发布供学习-本产品完成上线正式版-修复多个bug-优雅草果果|小无 前端代码开源库 关于开源说明:企业服务-招聘信息管理系统-前端uniapp-系统前端开放源代码仅供学习-优雅草科技-目前优雅草科…...
【网络】计算机网络的分类 局域网 (LAN) 广域网 (WAN) 城域网 (MAN)个域网(PAN)
局域网是通过路由器接入广域网的 分布范围 局域网Local Area Network:小范围覆盖,速度高,延迟低(办公室,家庭,校园,网络) 广域网Wide Area Network 大范围覆盖,速度相对低,延迟高…...
DeepSeek:性能强劲的开源模型
deepseek 全新系列模型 DeepSeek-V3 首个版本上线并同步开源。登录官网 chat.deepseek.com 即可与最新版 V3 模型对话。 性能对齐海外领军闭源模型 DeepSeek-V3 为自研 MoE 模型,671B 参数,激活 37B,在 14.8T token 上进行了预训练。 论…...
MySql 通过 LOAD DATA INFILE 导入大量数据
背景:要在本地Mysql导入几十万-百万条数据非常耗时,从网上找到通过load data infile 方式可以快速导入大量数据,就动手尝试了。结果就是不太适合复杂的格式数据导入,比如字段多,数据格式多等,但对于简单的表…...
Linux系统中解决端口占用问题
在日常的 Linux 系统管理和开发过程中,端口占用是一个常见且令人头疼的问题。无论是部署新服务、调试应用程序,还是进行系统维护,遇到端口被占用都可能导致服务无法正常启动或运行。本文将详细介绍在 Linux 系统中如何识别和解决端口占用问题…...
两种方式实现Kepware与PLC之间的心跳检测
两种方式实现Kepware与PLC之间的心跳检测 实现Kepware与PLC之间的心跳检测1.OPCUA 外挂程序2.Kepware Advanced Tag 实现Kepware与PLC之间的心跳检测 1.OPCUA 外挂程序 这是通过上位程序来触发心跳的一种机制,在C#中,可以利用OPC UAOPCAutodll的方式…...
使用DockerCompose部署服务
由于格式或图片解析问题,为了更好的阅读体验,可前往 阅读原文 以前我们总是用命令管理每个容器的启动、停止等等,若有多个容器时可能还存在启动优先级的问题,那就要等到指定的容器启动后再去启动另一个容器,对于整体的…...
第P5周-Pytorch实现运动鞋品牌识别
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 具体实现 (一)环境 语言环境:Python 3.10 编 译 器: PyCharm 框 架: Pytorch (二)具体步骤 时间…...