Docker之容器常见操作
docker 命令介绍
docker --help
管理命令:
container 管理容器image 管理镜像network 管理网络
命令:
attach 介入到一个正在运行的容器build 根据 Dockerfile 构建一个镜像commit 根据容器的更改创建一个新的镜像cp 在本地文件系统与容器中复制 文件/文件夹create 创建一个新容器 diff 检查容器文件系统上的文件或目录的更改exec 在容器中执行一条命令images 列出镜像kill 杀死一个或多个正在运行的容器 logs 取得容器的日志pause 暂停一个或多个容器的所有进程ps 列出所有容器pull 拉取一个镜像或仓库到 registrypush 推送一个镜像或仓库到 registrysave 将一个或多个 Docker 镜像保存到一个 tar 归档文件中rename 重命名一个容器restart 重新启动一个或多个容器rm 删除一个或多个容器rmi 删除一个或多个镜像run 在一个新的容器中执行一条命令search 在 Docker Hub 中搜索镜像start 启动一个或多个已经停止运行的容器stats 显示一个容器的实时资源占用stop 停止一个或多个正在运行的容器tag 为镜像创建一个新的标签top 显示一个容器内的所有进程 inspect 查看容器的详细信息unpause 恢复一个或多个容器内所有被暂停的进程
更详细的功能参数配置
--api-enable-cors=false
开放远程API调用的 CORS 头信息。这个接口开关对想进行二次开
发的上层应用提供了支持.-b, --bridge=""
挂载已经存在的网桥设备到 Docker 容器里。注意,使用 none
可以停用容器里的网络.--bip=""
使用 CIDR 地址来设定网络桥的 IP。注意,此参数和 -b 不能一起使用.-D, --debug=false
开启Debug模式。例如:docker -d -D-d, --daemon=false
开启Daemon模式.--dns=[]
强制容器使用DNS服务器.例如: docker -d --dns 8.8.8.8--dns-search=[]
强制容器使用指定的DNS搜索域名.例如: docker -d --dns-search
example.com-e, --exec-driver="native"
强制容器使用指定的运行时驱动.例如:docker -d -e lxc-G, --group="docker"
在后台运行模式下,赋予指定的Group到相应的unix socket上。
注意,当此参数 --group 赋予空字符串时,将去除组信息。-g, --graph="/var/lib/docker"
配置Docker运行时根目录-H, --host=[]
在后台模式下指定socket绑定,可以绑定一个或多个tcp://host:port, unix:///path/to/socket, fd://* 或fd://socketfd。例如:$ docker -H tcp://0.0.0.0:2375 ps
或者 $ export DOCKER_HOST="tcp://0.0.0.0:2375" $ docker ps--icc=true
启用内联容器的通信.--ip="0.0.0.0"
容器绑定IP时使用的默认IP地址.--ip-forward=true
启动容器的 net.ipv4.ip_forward.--iptables=true
启动Docker容器自定义的iptable规则.--mtu=0
设置容器网络的MTU值,如果没有这个参数,选用默认 route MTU,
如果没有默认route,就设置成常量值 1500.-p, --pidfile="/var/run/docker.pid"
后台进程PID文件路径.-r, --restart=true
重启之前运行中的容器.-s, --storage-driver=""
强制容器运行时使用指定的存储驱动,例如,指定使用devicemapper,
可以这样:docker -d -s devicemapper--selinux-enabled=false
启用selinux支持--storage-opt=[]
配置存储驱动的参数--tls=false
启动TLS认证开关--tlscacert="/Users/dxiao/.docker/ca.pem"
通过CA认证过的的certificate文件路径--tlscert="/Users/dxiao/.docker/cert.pem"
TLS的certificate文件路径--tlskey="/Users/dxiao/.docker/key.pem"
TLS的key文件路径--tlsverify=false
使用TLS并做后台进程与客户端通讯的验证-v, --version=false
显示版本信息
*注意:其中带有[] 的启动参数可以指定多次,例如
docker run -a stdin -a stdout -a stderr -i -t ubuntu /bin/bash
docker 命令详解
docker run启动容器
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped ) 的容器重新启动。
因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。
新建并启动
例如,下面的命令输出一个 “Hello World”,之后终止容器。
$ docker run ubuntu:14.04 /bin/echo 'Hello world'
Hello world
这跟在本地直接执行 /bin/echo ‘hello world’ 几乎感觉不出任何区别。
下面的命令则启动一个 bash 终端,允许用户进行交互。
$ docker run -t -i --net host --privileged=true --name="mytest" ubuntu:14.04 /bin/bash
root@af8bae53bdd3:/#
- -t 选项让Docker分配一个伪终端(pseudo-tty) 并绑定到容器的标准输入上, -i则让容器的标准输入保持打开
- privileged=true,使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。
当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
启动已终止容器
可以利用 docker container start 命令,直接将一个已经终止的容器启动运行。
守护状态运行
更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。
$ docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
cb30b87566d0550ec5f1232d148c5ffed6546c347889e58a6405579f2af73f2a
使用 -d 参数启动后会返回一个唯一的 id。此时输出结果可以用docker logs [container ID or NAMES] 查看。如果不使用 -d 参数。输出的结果 (STDOUT) 会打印到宿主机上面
实现容器互联
link可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信,并且接收容器可以获取源容器的一些数据,如源容器的环境变量。
## 新建容器tomcat01
docker run -d -P --name tomcat01 tomcat##创建容器tomcat03,让tomcat03作为接收容器(主动去链接的容器),上面的tomcat01(别名t1)作为源容器(被链接的容器),两个容器进行链接:
docker run -d -P --name tomcat03 --link tomcat01:t1 tomcat
实例
$ sudo docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 e54ca5efa2e9 4 weeks ago 276.5 MB
... ... # 创建一个 cpu 优先级为 100,内存限制 512MB,主机名为 test1,名为 docker_test1 后台运行 bash 的容器
$ sudo docker run -t -i -c 100 -m 512MB -h test1 -d --net host --privileged --name="docker_test1" ubuntu /bin/bash
a424ca613c9f2247cd3ede95adfbaf8d28400cbcb1d5f9b69a7b56f97b2b52e5
docker container ls 命令查看容器信息
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb30b87566d0 ubuntu "/bin/sh -c 'while t…" 2 minutes ago Up 2 minutes goofy_mcclintock
通过 docker container logs获取容器的输出日志
$ docker container logs goofy_mcclintock
hello world
hello world
hello world
......
注: 容器是否会长久运行,是和 docker run 指定的命令有关,和 -d 参数无关。
docker build 打包镜像
语法格式:
docker build [OPTIONS] PATH | URL | -
OPTIONS说明:
--build-arg=[] :设置镜像创建时的变量;--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。--network: 默认 default。在构建期间设置RUN指令的网络模式-f :指定要使用的Dockerfile路径;--no-cache :创建镜像的过程不使用缓存;--pull :尝试去更新镜像的新版本;--quiet, -q :安静模式,成功后只输出镜像 ID;--rm :设置镜像成功后删除中间容器;--cpu-shares :设置 cpu 使用权重;--cpu-period :限制 CPU CFS周期;--cpu-quota :限制 CPU CFS配额;--cpuset-cpus :指定使用的CPU id;--cpuset-mems :指定使用的内存 id;--disable-content-trust :忽略校验,默认开启;--force-rm :设置镜像过程中删除中间容器;--isolation :使用容器隔离技术;--label=[] :设置镜像使用的元数据;-m :设置内存最大值;--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;--shm-size :设置/dev/shm的大小,默认值是64M;--ulimit :Ulimit配置。
实例
#使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。
`docker build -t runoob/ubuntu:v1 . `#使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。
`docker build github.com/creack/docker-firefox`#也可以通过 -f Dockerfile 文件的位置:
`$ docker build --network host -t mytest:v1.0 -f Dockerfile .`#在 Docker 守护进程执行 Dockerfile 中的指令前,首先会对 Dockerfile 进行语法检查,有语法错误时会返回:
$ docker build -t test/myapp .
Sending build context to Docker daemon 2.048 kB
Error response from daemon: Unknown instruction: RUNCMD
更多命令请参阅:http://www.docker.org.cn/dockerppt/106.html
docker stop终止容器
语法格式:
docker container stop [选项] CONTAINER [CONTAINER...]
此外,当 Docker 容器中指定的应用终结时,容器也自动终止。
例如只启动了一个终端的容器,用户通过 exit 命令或 Ctrl+d 来退出终端时,所创建的容器立刻终止。终止状态的容器可以用 docker container ls -a 命令看到。
#停止单个容器
docker container stop <container_name>#停用全部运行中的容器:
docker stop $(docker ps -q)#批量停止容器:
docker container stop $(docker container ls -a -q)
通过 docker container start 命令来启动处于终止状态的容器;
通过 docker container restart 命令会将一个运行态的容器先终止再重新启动。
docker exec进入容器
在使用 -d 参数时,容器启动后会进入后台。
使用 docker exec 命令 或 docker attach 命令进入容器进行操作,推荐使用 docker exec 命令,原因会在下面说明。
exec 命令
-i -t 参数
docker exec 后边可以跟多个参数,这里主要说明 -i -t 参数。
只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执
行结果仍然可以返回。
当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。
$ docker run --name webserver -d -p 80:80 nginx
1eec473ab0a32ad938e06644d4b15046a708bbf5a8e22f0f9e4ebf4918b8df15$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1eec473ab0a3 nginx "nginx -g 'daemon of…" 22 seconds ago Up 22 seconds 0.0.0.0:80->80/tcp webserver$ docker exec -it webserver bash
root@1eec473ab0a3:/# echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
root@1eec473ab0a3:/# exit
#修改了容器的文件,我们可以通过 docker diff 命令看到具体的改动。
如果从这个 stdin 中 exit,不会导致容器的停止。
更多参数说明请使用 docker exec --help 查看。
attach 命令
docker attach 是 Docker 自带的命令。下面示例如何使用该命令。
$ docker attach webserver
注意: 如果从这个 stdin 中 exit,会导致容器的停止。
docker logs查看容器日志
通过docker logs命令可以查看容器的日志。
语法格式:
$ docker logs [OPTIONS] CONTAINEROptions:--details 显示更多的信息-f, --follow 跟踪实时日志--since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)--tail string 从日志末尾显示多少行日志, 默认是all-t, --timestamps 显示时间戳--until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
例子:
#查看指定时间后的日志,只显示最后100行:
$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID#查看最近30分钟的日志:
$ docker logs --since 30m CONTAINER_ID#查看某时间之后的日志:
$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID#查看某时间段日志:
$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
docker commit将容器保存为镜像
当我们运行一个容器的时候(如果不使用卷的话) ,我们做的任何文件修改都会被记录于容器存储层里。而 Docker 提供了一个 docker commit 命令,可以将容器的存储层保存下来成为镜像。换句话说,就是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像。以后我们运行这个新镜像的时候,就会拥有原有容器最后的文件变化。
慎用 docker commit
- 会有大量的无关内容被添加进来,如果不小心清理,将会导致镜像极为臃肿。
- 除了制作镜像的人知道执行过什么命令、怎么生成的镜像,别人根本无从得知
- 任何修改的结果仅仅是在当前层进行标记、添加、修改,而不会改动上一层,每一次修改都会让镜像更加臃肿一次,所删除的上一层的东西并不会丢失
语法格式:
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
我们可以用下面的命令将容器保存为镜像:
$ docker commit --author "QiangSH" --message "修改了默认网页" webserver nginx:v2
sha256:749af9532d166d2cd5f88025a79e0e39658375761eef0200925cb82093b4514f$ docker image ls -a
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v2 749af9532d16 48 seconds ago 109MB
nginx latest c82521676580 4 weeks ago 109MB
其中 --author 是指定修改的作者,而 --message 则是记录本次修改的内容。这点和 git
版本控制相似,不过这里这些信息可以省略留空。
docker rm删除
语法格式:
docker container rm [选项] CONTAINER [CONTAINER...]
#删除一个处于终止状态的容器:
$ docker container rm awesome_payne
awesome_payne#删除全部容器:
docker rm $(docker ps -aq)#批量删除容器:
docker container rm $(docker container ls -a -q)#一条命令实现停用并删除容器:
docker stop $(docker ps -q) & docker rm $(docker ps -aq)#删除虚悬镜像
docker image prune -f # 有tag的也会被删
docker rmi $(docker images -q -f "dangling=true")
如果要删除一个运行中的容器,可以添加 -f 参数。Docker 会发送SIGKILL 信号给容器。
清理所有处于终止状态的容器用 docker container ls -a 命令可以查看所有已经创建的包括终止状态的容器,如果数量太多要一个个删除可能会很麻烦,用下面的命令可以清理掉所有处于终止状态的容器。
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
545f8f6d19286efae28307d06ed1acc034d07f109e907c01892471a6f89e772d
cb30b87566d0550ec5f1232d148c5ffed6546c347889e58a6405579f2af73f2a
......
docker history 查看指定镜像的创建历史
语法格式:
docker history [OPTIONS] IMAGE
OPTIONS说明:
- -H :以可读的格式打印镜像大小和日期,默认为true;
- –no-trunc :显示完整的提交记录;
- -q :仅列出提交记录ID。
例子:
#查看镜像内容
docker history --format {{.CreatedBy}} --no-trunc=true <容器ID或容器名> |sed "s/\/bin\/sh\ -c\ \#(nop)\ //g"|sed "s/\/bin\/sh\ -c/RUN/g" | tac
保存镜像到文件
docker save 命令用于将一个或多个 Docker 镜像保存到一个 tar 归档文件中,以便在其他环境中分发或备份。
语法格式:
docker save [OPTIONS] IMAGE [IMAGE...]
- IMAGE: 要保存的一个或多个镜像名称或 ID。
OPTIONS 说明:
- -o, --output: 指定输出文件的路径。
保存单个镜像到文件
docker save -o myimage.tar myimage:latest
这将 myimage:latest 镜像保存为 myimage.tar 文件。
保存多个镜像到同一个文件
docker save -o multiple_images.tar myimage:latest anotherimage:latest
这将 myimage:latest 和 anotherimage:latest 镜像保存到 multiple_images.tar 文件中。
加载保存的镜像
要将保存的镜像加载到另一个 Docker 环境中,可以使用 docker load 命令:
docker load -i myimage.tar
注意事项
- 保存镜像时,会包含镜像的所有层,因此生成的 tar 文件可能会很大。
- 如果保存多个镜像到同一个文件中,使用 docker load 命令时会加载所有包含的镜像。
- 为了减少文件大小,可以在保存前使用 docker image prune 命令清理未使用的镜像和层。
docker save 命令是一个方便的工具,用于将 Docker 镜像保存为 tar 文件,以便于备份、分发和迁移。通过结合 docker load 命令,可以轻松地在不同环境中恢复和使用保存的镜像。
导出和导入容器
docker export导出容器
如果要导出本地某个容器,可以使用 docker export 命令。
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16168d4b66b1 ubuntu "/bin/bash" 18 minutes ago Up 18 minutes happy_bardeen$ docker export 16168d4b66b1 > ubuntu.tar
这样将导出容器快照到本地文件。
docker impor导入容器
可以使用 docker import 从容器快照文件中再导入为镜像,例如
$ cat ubuntu.tar | docker import - test/ubuntu:v1.0
sha256:91b174fec9ed55d7ebc3d2556499713705f40713458e8594efa114f261d7369a$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
test/ubuntu v1.0 91b174fec9ed 10 seconds ago 69.8MB
ubuntu latest 735f80812f90 3 weeks ago 83.5MB
此外,也可以通过指定 URL 或者某个目录来导入,例如
$ docker import http://example.com/exampleimage.tgz example/imagerepo
注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态) ,而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。
数据共享与持久化
请参考:https://docs.docker.com/storage/bind-mounts/
译文:https://blog.csdn.net/kikajack/article/details/79474286
私有仓库镜像管理
创建好私有仓库之后,就可以使用docker tag来标记一个镜像,然后推送它到仓库。例如私有仓库地址为 127.0.0.1:5000。
先在本机查看已有的镜像。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu latest ba5877dc9bec 6 weeks ago 192.7 MB
docker tag 标记镜像
使用docker tag将 ubuntu:latest 这个镜像标记为 127.0.0.1:5000/ubuntu:latest。
语法格式:
docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
实例
$ docker tag ubuntu:latest 127.0.0.1:5000/ubuntu:latest
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu latest ba5877dc9bec 6 weeks ago 192.7 MB
127.0.0.1:5000/ubuntu:latest latest ba5877dc9bec 6 weeks ago 192.7 MB
docker push上传标记镜像
$ docker push 127.0.0.1:5000/ubuntu:latest
The push refers to repository [127.0.0.1:5000/ubuntu]
373a30c24545: Pushed
a9148f5200b0: Pushed
cdd3de0940ab: Pushedfc56279bbb33: Pushed
b38367233d37: Pushed
2aebd096e0e2: Pushed
latest: digest: sha256:fe4277621f10b5026266932ddf760f5a756d2facd505a94d2da12f4f52f71f5a size: 1568
用curl查看仓库中的镜像。
$ curl 127.0.0.1:5000/v2/_catalog
{"repositories":["ubuntu"]}
这里可以看到 {“repositories”:[“ubuntu”]},表明镜像已经被成功上传了。
先删除已有镜像,再尝试从私有仓库中下载这个镜像
$ docker image rm 127.0.0.1:5000/ubuntu:latest$ docker pull 127.0.0.1:5000/ubuntu:latest
Pulling repository 127.0.0.1:5000/ubuntu:latest
ba5877dc9bec: Download complete
511136ea3c5a: Download complete
9bad880da3d2: Download complete
25f11f5fb0cb: Download complete
ebc34468f71d: Download complete
2318d26665ef: Download complete$ docker image ls
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
127.0.0.1:5000/ubuntu:latest latest ba5877dc9bec 6 weeks ago 192.7 MB
docker 删除tag
REPOSITORY TAG IMAGE ID CREATED SIZE
hub.doge.com/ubuntu latest 9c2500c524c6 About a minute ago 199.9 MB
hub.doge.net/ubuntu latest 9c2500c524c6 About a minute ago 199.9 MB
比如这类的镜像id是一样的,我只想留其中的某一个,删除hub.doge.com/ubuntu
docker rmi -f hub.doge.com/ubuntu:latest
注意事项
如果你不想使用 127.0.0.1:5000 作为仓库地址,比如想让本网段的其他主机也能把镜像推送到私有仓库。你就得把例如 192.168.199.100:5000 这样的内网地址作为私有仓库地址,这时你会发现无法成功推送镜像。
这是因为 Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制
相关文章:
Docker之容器常见操作
docker 命令介绍 docker --help 管理命令: container 管理容器image 管理镜像network 管理网络命令: attach 介入到一个正在运行的容器build 根据 Dockerfile 构建一个镜像commit 根据容器的更改创建一个新的镜像cp 在本地文…...
猜数游戏(Fortran)
背景 学了两个月Fortran还没来一次正式练习 于是—— 代码 program gessnum! implicit none 不取消IN规则。integer::num,areal::Ncall random_seed()call random_number(N)aint(N*10)print*,"请输入您猜的数字:"read(*,*)numdo i1,3if (numa)thenpri…...
代码随想录 -- 贪心 -- 单调递增的数字
738. 单调递增的数字 - 力扣(LeetCode) 思路: 首先将正数n转化为字符串类型;定义一个flag:标记flag以及之后的位数都是9;从后向前遍历字符串n,如果当前的位数小于他上一位,将上一位…...
【小洛的VLOG】Web 服务器高并发压力测试(Reactor模型测试)
目录 引言 工具介绍 环境介绍 测试结果 个人主页:东洛的克莱斯韦克-CSDN博客 引言 大部分的网络通信都是支持TCP/IP协议栈,为了保证通信的可靠性,客户端和服务端之间需要建立链接。服务端能并发处理多少个链接,平均每秒钟能处理…...
Window:下载与安装triton==2.0.0
triton2.0.0谷仓下载 创建python3.10的工作环境: conda create -n anti-dreambooth python3.10然后在下载目录下执行代码: pip install triton-2.0.0-cp310-cp310-win_amd64.whl...
零,报错日志 2002-Can‘t connect to server on‘106.54.209.77‘(1006x)
零,报错日志 2002-Can’t connect to server on’106.54.209.77’(1006x) 今天差点被这个报错给折磨疯掉 尝试一:对腾讯云服务器进行更改 尝试二:针对配置文件处理 step1 //确保注释 /etc/mysql/mysql.conf.d/mysqld.cnf 下# bind-addres…...
R语言笔记(一)
文章目录 一、R objects二、Types of data三、Operators1、Operators2、Comparison operators3、Logical operators 四、Check types of data objects五、Convertion between data objects六、R workspace 一、R objects Two basic types of things/objects: data and functio…...
MusePose模型部署指南
一、模型介绍 MusePose是一个基于扩散和姿势引导的虚拟人视频生成框架。 主要贡献可以概括如下: 发布的模型能够根据给定的姿势序列,生成参考图中人物的舞蹈视频,生成的结果质量超越了同一主题中几乎所有当前开源的模型。发布该 pose alig…...
又一次升级:字节在用大模型在做推荐啦!
原文链接 字节前几天2024年9年19日公开发布的论文《HLLM:通过分层大型语言模型增强基于物品和用户模型的序列推荐效果》。 文字、图片、音频、视频这四大类信息载体,在生产端都已被AI生成赋能助力,再往前一步,一定需要一个更强势…...
无线领夹麦克风怎么挑选,麦克风行业常见踩坑点,避雷不专业产品
随着短视频和直播行业的迅速发展,近年来无线领夹麦克风热度持续高涨,作为一款小巧实用的音频设备,它受到很多视频创作者以及直播达人的喜爱。但如今无线领夹麦克风品类繁杂,大家选购时容易迷失方向,要知道并不是所有…...
OJ-1017中文分词模拟器
示例0 输入: ilovechina i,ilove,lo,love,ch,china,lovechina 输出: ilove,china 示例1 输入: ilovechina i,love,china,ch,na,ve,lo,this,is,the,word 输出: i,love,china 说明: 示例2 输入: iat i,love,…...
Unity 关于UGUI动静分离面试题详解
前言 近期有同学面试,被问到这样一道面试题: ”说说UGUI的动静分离是怎么一回事?” 关于这个优化有一些误区,容易让开发者陷入一个极端。我们先分析关于UGUI 合批优化的问题,最后给这个面试题一个参考回答。 对惹,…...
HarmonyNext保存Base64文件到Download下
本文介绍如何保存Base64的文件到Download下 参考文档地址: 保存用户文件-Harmony Next 用到的是DOWNLOAD模式保存文件 用户在使用save接口时,可以将pickerMode配置为DOWNLOAD模式,该模式下会拉起授权接口,用户确认后会在公共路径…...
069_基于springboot的OA管理系统
目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…...
hive数据库,表操作
1.创建; create database if not exists myhive; use myhive; 2.查看: 查看数据库详细信息:desc database myhive; 默认数据库的存放路径是 HDFS 的: /user/hive/warehouse 内 补充:创建数据库并指定 hdfs 存储位置:create database myhive2 location /myhive2 3.…...
openpnp - 在顶部相机/底部相机高级校正完成后,需要设置裁剪所有无效像素
文章目录 openpnp - 在顶部相机/底部相机高级校正完成后,需要设置裁剪所有无效像素概述笔记设置后的顶部相机效果设置后的底部相机效果 备注END openpnp - 在顶部相机/底部相机高级校正完成后,需要设置裁剪所有无效像素 概述 用自己编译的基于openpnp-…...
Vue+TypeScript+SpringBoot的WebSocket基础教学
成品图: 对WebSocket的理解(在使用之前建议先了解Tcp,三次握手,四次挥手 ): 首先页面与WebSocket建立连接、向WebSocket发送信息、后端WebSocket向所有连接上WebSoket的客户端发送当前信息。 推荐浏览网站…...
大话网络协议:HTTPS协议和HTTP协议有何不同?为什么HTTPS更安全
大家现在访问网络,浏览网页,注意一下的话,网址前面基本上都是一个 https:// 的前缀,这里就是说明这个网址所采用的协议是 https 协议。那么具体应该怎么理解 https 呢? 本文我们就力争能清楚地解释明白这个我们目前应该最广的协议。 理解HTTP协议 要解释 https 协议,当…...
13图书归还-云图书管理系统(Vue3+Spring Boot+element plus)
目录 1 接口地址2 后台代码RecordControllerBookController 3 view/books/BookRecordsVue中前端框架搭建4 api/record.js文件写查询用户借阅记录的接口代码5 api/book.js中写归还图书、查询当前借阅图书接口代码6 BookRecordsVue中导入接口函数,并调用7 运行效果 1 …...
中航资本:“女人的茅台”重挫!超7700亿元英伟达概念业绩爆发
今天早盘首要指数强势震动,申万一级工作指数跌多涨少,通讯指数涨逾1%居首。概念方面,存储器、动保、重组等概念板块涨幅居前。存储概念大涨首要仍是AI方向又有好消息,市值逾越7700亿元的英伟达概念龙头SK海力士发布效果超预期财报…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
