Linux下基于Dockerfile构建镜像应用(1)
目录
基于已有容器创建镜像
Dockerfile构建SSHD镜像
构建镜像
测试容器 可以登陆
Dockerfile构建httpd镜像
构建镜像
测试容器
Dockerfile构建nginx镜像
构建镜像
概述:
Docker 镜像是Docker容器技术中的核心,也是应用打包构建发布的标准格式。一个完整的镜像可以支撑多个容器的运行,在Docker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务。
如果想要把已经安装的服务容器进行迁移,就需要把环境以及部署的服务生成新的镜像。
程序打包方式:
- 打包成Tar包
- 打包成rpm包
- 打包成镜像
构建方式
1、基于已有的容器创建镜像
2、基于本地模板创建镜像
3、基于Dockerfile创建镜像
基于已有容器创建镜像
基于现有镜像创建主要使用 docker commit 命令,即把一个容器里面运行的程序以及该程序的运行环境打包起来生成新的镜像。
命令格式:
docker commit [选项] 容器ID/名称 仓库名称:[标签]
常用选项:
- -m 说明信息;
- -a 作者信息;
- -p 生成过程中停止容器的运行。
首先启动一个镜像,在容器里做相应的修改,然后将修改后的容器提交为新的镜像。需要记住该容器的ID号。
[root@localhost ~]# cat centos-7-x86_64.tar.gz |docker import - centos:7
sha256:790d0b6eb9de3d7ba8df7d91a54d236b381f4800ac751205a1fb6b77cc0c7efd
[root@localhost sshd]# docker run -it centos:7 /bin/bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
[root@d80919f3c00c /]# ls
bin dev fastboot lib lost+found mnt proc run srv tmp var
boot etc home lib64 media opt root sbin sys usr
[root@d80919f3c00c /]# touch lifenghai 创建测试文件
[root@d80919f3c00c /]# ls
bin dev fastboot lib lifenghai media opt root sbin sys usr
boot etc home lib64 lost+found mnt proc run srv tmp var
[root@d80919f3c00c /]# exit
exit
[root@localhost sshd]# docker commit -m "crushlinux test images" -a "crushlinux" d80919f3c00c centos7:ddd
该命令的意思是将容器ID为d80919f3c00c 的容器的更改保存为名为"centos7:new"的新镜像,并指定了提交消息为"crushlinux test images",作者为"crushlinux"。
sha256:595d590702ffc0ca7e23f11f552266c924261c5966f7634de96ba7dfe6a547c3
[root@localhost sshd]# docker images centos7:ddd
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7 ddd 595d590702ff 25 seconds ago 589 MB
[root@localhost sshd]# docker run -it centos7:ddd /bin/bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
[root@14ad9a706c54 /]# ls
bin dev fastboot lib lifenghai media opt root sbin sys usr
boot etc home lib64 lost+found mnt proc run srv tmp var
这是一个Docker命令,用于将一个容器的更改保存为新的镜像。具体解释如下:
docker commit
:Docker命令,用于提交容器的更改。-m "crushlinux test images"
:使用-m
参数指定提交的消息,这里是"crushlinux test images"。-a "crushlinux"
:使用-a
参数指定作者,这里是"crushlinux"。d281f905fb30
:容器的ID或名称,表示要提交更改的容器。centos7:new
:新镜像的名称和标签,这里是"centos7:new"。因此,该命令的意思是将容器ID为
d281f905fb30
的容器的更改保存为名为"centos7:new"的新镜像,并指定了提交消息为"crushlinux test images",作者为"crushlinux"。
Dockerfile构建SSHD镜像
关闭防火墙规则
iptables -F
setenforce 0
systemctl stop firewalld修改配置
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
search localdomain
创建备用目录
[root@localhost ~]# mkdir sshd
获取密钥
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:6j2zE3PzgNt4sQdpeR0BUSO4NCrtnissqN4xHJZVoLE root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| . ... .++o |
| + . + ... |
| E . . o o . |
| o . o . . |
| + oS. o . . |
| o . .= X . . |
| = ... X O |
| o +.o.O + o |
|oo . ...+B . |
+----[SHA256]-----+
拷贝文件
[root@localhost ~]# cp .ssh/id_rsa.pub sshd/
[root@localhost ~]# cd sshd/
[root@localhost ~]# ll
总用量 591996
-rw-------. 1 root root 1415 7月 31 19:02 anaconda-ks.cfg
-rw-r--r--. 1 root root 221692852 7月 17 2020 centos-7-x86_64.tar.gz
-rw-r--r--. 1 root root 238594048 7月 31 14:26 centos-exp
-rw-------. 1 root root 145905152 7月 31 14:36 nginx-images
drwxr-xr-x. 2 root root 47 8月 2 13:57 sshd
导入镜像
[root@localhost ~]# cat centos-7-x86_64.tar.gz |docker import - centos:7
sha256:790d0b6eb9de3d7ba8df7d91a54d236b381f4800ac751205a1fb6b77cc0c7efd
编写Dockerfile文件
[root@localhost sshd]# vim Dockerfile
#基于的基础镜像
FROM centos:7
#镜像作者信息
MAINTAINER Crushlinux <crushlinux@163.com>
#镜像执行的命令
RUN yum -y install openssh-server net-tools openssh-devel lsof telnet
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ADD id_rsa.pub /root/.ssh/authorized_keys
#定义时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#开启 22 端口
EXPOSE 22
#启动容器时执行指令
CMD ["/usr/sbin/sshd" , "-D"]
~
~
重启
[root@localhost sshd]# systemctl restart network
[root@localhost sshd]# systemctl restart docker
构建镜像
[root@localhost sshd]# docker build -t sshd:new .Sending build context to Docker daemon 3.584 kBStep 1/9 : FROM centos:7---> 790d0b6eb9deStep 2/9 : MAINTAINER Crushlinux <crushlinux@163.com>---> Using cache---> f5d4ad40d1dfStep 3/9 : RUN yum -y install openssh-server net-tools openssh-devel lsof telnet---> Running in bdb9cc0dfb6cLoaded plugins: fastestmirrorDetermining fastest mirrors* base: mirrors.bfsu.edu.cn* extras: mirrors.ustc.edu.cn* updates: mirrors.ustc.edu.cnNo package openssh-devel available.Resolving Dependencies--> Running transaction check---> Package lsof.x86_64 0:4.87-4.el7 will be updated---> Package lsof.x86_64 0:4.87-6.el7 will be an update---> Package net-tools.x86_64 0:2.0-0.25.20131004git.el7 will be installed---> Package openssh-server.x86_64 0:6.6.1p1-25.el7_2 will be updated---> Package openssh-server.x86_64 0:7.4p1-22.el7_9 will be an update--> Processing Dependency: openssh = 7.4p1-22.el7_9 for package: openssh-server-7.4p1-22.el7_9.x86_64--> Processing Dependency: libcrypto.so.10(OPENSSL_1.0.2)(64bit) for package: openssh-server-7.4p1-22.el7_9.x86_64---> Package telnet.x86_64 1:0.17-59.el7 will be updated---> Package telnet.x86_64 1:0.17-66.el7 will be an update--> Running transaction check---> Package openssh.x86_64 0:6.6.1p1-25.el7_2 will be updated--> Processing Dependency: openssh = 6.6.1p1-25.el7_2 for package: openssh-clients-6.6.1p1-25.el7_2.x86_64---> Package openssh.x86_64 0:7.4p1-22.el7_9 will be an update---> Package openssl-libs.x86_64 1:1.0.1e-51.el7_2.5 will be updated--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-51.el7_2.5 for package: 1:openssl-1.0.1e-51.el7_2.5.x86_64---> Package openssl-libs.x86_64 1:1.0.2k-26.el7_9 will be an update--> Running transaction check---> Package openssh-clients.x86_64 0:6.6.1p1-25.el7_2 will be updated---> Package openssh-clients.x86_64 0:7.4p1-22.el7_9 will be an update---> Package openssl.x86_64 1:1.0.1e-51.el7_2.5 will be updated---> Package openssl.x86_64 1:1.0.2k-26.el7_9 will be an update--> Finished Dependency ResolutionDependencies Resolved================================================================================Package Arch Version Repository Size================================================================================Installing:net-tools x86_64 2.0-0.25.20131004git.el7 base 306 kUpdating:lsof x86_64 4.87-6.el7 base 331 kopenssh-server x86_64 7.4p1-22.el7_9 updates 459 ktelnet x86_64 1:0.17-66.el7 updates 64 kUpdating for dependencies:openssh x86_64 7.4p1-22.el7_9 updates 510 kopenssh-clients x86_64 7.4p1-22.el7_9 updates 655 kopenssl x86_64 1:1.0.2k-26.el7_9 updates 494 kopenssl-libs x86_64 1:1.0.2k-26.el7_9 updates 1.2 MTransaction Summary================================================================================Install 1 PackageUpgrade 3 Packages (+4 Dependent packages)Total download size: 4.0 MDownloading packages:Delta RPMs disabled because /usr/bin/applydeltarpm not installed.warning: /var/cache/yum/x86_64/7/base/packages/lsof-4.87-6.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEYPublic key for lsof-4.87-6.el7.x86_64.rpm is not installedPublic key for openssh-server-7.4p1-22.el7_9.x86_64.rpm is not installedImporting GPG key 0xF4A80EB5:Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5Package : centos-release-7-2.1511.el7.centos.2.10.x86_64 (installed)From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7--------------------------------------------------------------------------------Total 622 kB/s | 4.0 MB 00:06 Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7Running transaction checkRunning transaction testTransaction test succeededRunning transactionUpdating : 1:openssl-libs-1.0.2k-26.el7_9.x86_64 1/15Updating : openssh-7.4p1-22.el7_9.x86_64 2/15Updating : openssh-server-7.4p1-22.el7_9.x86_64 3/15warning: /etc/ssh/sshd_config created as /etc/ssh/sshd_config.rpmnewUpdating : openssh-clients-7.4p1-22.el7_9.x86_64 4/15Updating : 1:openssl-1.0.2k-26.el7_9.x86_64 5/15Installing : net-tools-2.0-0.25.20131004git.el7.x86_64 6/15Updating : lsof-4.87-6.el7.x86_64 7/15Updating : 1:telnet-0.17-66.el7.x86_64 8/15Cleanup : openssh-clients-6.6.1p1-25.el7_2.x86_64 9/15Cleanup : openssh-server-6.6.1p1-25.el7_2.x86_64 10/15Cleanup : openssh-6.6.1p1-25.el7_2.x86_64 11/15Cleanup : 1:openssl-1.0.1e-51.el7_2.5.x86_64 12/15Cleanup : 1:openssl-libs-1.0.1e-51.el7_2.5.x86_64 13/15Cleanup : lsof-4.87-4.el7.x86_64 14/15Cleanup : 1:telnet-0.17-59.el7.x86_64 15/15Verifying : 1:telnet-0.17-66.el7.x86_64 1/15Verifying : openssh-server-7.4p1-22.el7_9.x86_64 2/15Verifying : 1:openssl-libs-1.0.2k-26.el7_9.x86_64 3/15Verifying : lsof-4.87-6.el7.x86_64 4/15Verifying : net-tools-2.0-0.25.20131004git.el7.x86_64 5/15Verifying : openssh-clients-7.4p1-22.el7_9.x86_64 6/15Verifying : openssh-7.4p1-22.el7_9.x86_64 7/15Verifying : 1:openssl-1.0.2k-26.el7_9.x86_64 8/15Verifying : 1:telnet-0.17-59.el7.x86_64 9/15Verifying : openssh-6.6.1p1-25.el7_2.x86_64 10/15Verifying : 1:openssl-1.0.1e-51.el7_2.5.x86_64 11/15Verifying : openssh-server-6.6.1p1-25.el7_2.x86_64 12/15Verifying : openssh-clients-6.6.1p1-25.el7_2.x86_64 13/15Verifying : lsof-4.87-4.el7.x86_64 14/15Verifying : 1:openssl-libs-1.0.1e-51.el7_2.5.x86_64 15/15Installed:net-tools.x86_64 0:2.0-0.25.20131004git.el7 Updated:lsof.x86_64 0:4.87-6.el7 openssh-server.x86_64 0:7.4p1-22.el7_9 telnet.x86_64 1:0.17-66.el7 Dependency Updated:openssh.x86_64 0:7.4p1-22.el7_9 openssh-clients.x86_64 0:7.4p1-22.el7_9 openssl.x86_64 1:1.0.2k-26.el7_9 openssl-libs.x86_64 1:1.0.2k-26.el7_9 Complete!---> 4d1711b1891cRemoving intermediate container bdb9cc0dfb6cStep 4/9 : RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config---> Running in c6bcc01f445e---> 20b01ccf2a71Removing intermediate container c6bcc01f445eStep 5/9 : RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key---> Running in 8d573e2d3e45Generating public/private rsa key pair.Your identification has been saved in /etc/ssh/ssh_host_rsa_key.Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.The key fingerprint is:SHA256:Q9t9zoZ4iE/eCmeKuyUqmUt1IRvPo34wrWN5wbo8ypE root@bdb9cc0dfb6cThe key's randomart image is:+---[RSA 2048]----+| || || o . . || * o o . || oo= S . . . || ooo+. o o = || Eo.*..+ * o + || o++B.o+ O o . || +==*+o. +.. |+----[SHA256]-----+Enter passphrase (empty for no passphrase): Enter same passphrase again: ---> 14dd7eb2256fRemoving intermediate container 8d573e2d3e45Step 6/9 : ADD id_rsa.pub /root/.ssh/authorized_keys---> 99984eb1e50eRemoving intermediate container 369022575e01Step 7/9 : RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime---> Running in b0056bbc027e---> 950f0c260a79Removing intermediate container b0056bbc027eStep 8/9 : EXPOSE 22---> Running in 190b29e65718---> c6a476cb31b4Removing intermediate container 190b29e65718Step 9/9 : CMD /usr/sbin/sshd -D---> Running in 0b76956add3a---> a600eb2f7badRemoving intermediate container 0b76956add3aSuccessfully built a600eb2f7bad
测试容器 可以登陆
[root@localhost sshd]# docker images sshd:new
REPOSITORY TAG IMAGE ID CREATED SIZE
sshd new a600eb2f7bad 3 minutes ago 821 MB
[root@localhost sshd]# docker run -d -p 2222:22 --name sshd-test --restart=always sshd:new
61a2bbb409288f6d1e0c95dfe8ef9b732b77bcd35129972700d181fefa08631e
[root@localhost sshd]# ssh localhost -p 2222
The authenticity of host '[localhost]:2222 ([::1]:2222)' can't be established.
RSA key fingerprint is SHA256:Q9t9zoZ4iE/eCmeKuyUqmUt1IRvPo34wrWN5wbo8ypE.
RSA key fingerprint is MD5:1e:97:2c:02:4d:35:1e:3f:68:a0:30:9c:cc:53:a2:cf.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:2222' (RSA) to the list of known hosts.
[root@61a2bbb40928 ~]#
[root@61a2bbb40928 ~]# exit
登出
Connection to localhost closed.
Dockerfile构建httpd镜像
创建工作目录
[root@localhost ~]# mkdir httpd
[root@localhost ~]# cd httpd/
编写Dockerfile文件
[root@localhost httpd]# vim Dockerfile
[root@localhost httpd]# cat Dockerfile
FROM centos:7
MAINTAINER hhh <hhh@163.com>
RUN yum -y install httpd
RUN echo "crushlinux" >/var/www/html/index.html
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
EXPOSE 80
CMD ["httpd","-DFOREGROUND"]
构建镜像
[root@localhost httpd]# docker build -t httpd:new .
Sending build context to Docker daemon 2.048 kB
Step 1/7 : FROM centos:7
---> 790d0b6eb9de
Step 2/7 : MAINTAINER hhh <hhh@163.com>
---> Using cache
---> 25eef094ceba
Step 3/7 : RUN yum -y install httpd
---> Running in 8324e3b4b5c7
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: mirrors.bfsu.edu.cn
* extras: mirrors.bfsu.edu.cn
* updates: mirrors.bfsu.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-40.el7.centos.1 will be updated
---> Package httpd.x86_64 0:2.4.6-99.el7.centos.1 will be an update
--> Processing Dependency: httpd-tools = 2.4.6-99.el7.centos.1 for package: httpd-2.4.6-99.el7.centos.1.
--> Running transaction check
---> Package httpd-tools.x86_64 0:2.4.6-40.el7.centos.1 will be updated
---> Package httpd-tools.x86_64 0:2.4.6-99.el7.centos.1 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
httpd x86_64 2.4.6-99.el7.centos.1 updates 2.7 M
Updating for dependencies:
httpd-tools x86_64 2.4.6-99.el7.centos.1 updates 94 k
Transaction Summary
================================================================================
Upgrade 1 Package (+1 Dependent package)
Total download size: 2.8 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
Public key for httpd-tools-2.4.6-99.el7.centos.1.x86_64.rpm is not installed
warning: /var/cache/yum/x86_64/7/updates/packages/httpd-tools-2.4.6-99.el7.centos.1.x86_64.rpm: Header V
--------------------------------------------------------------------------------
Total 1.6 MB/s | 2.8 MB 00:01
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
Package : centos-release-7-2.1511.el7.centos.2.10.x86_64 (installed)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : httpd-tools-2.4.6-99.el7.centos.1.x86_64 1/4
Updating : httpd-2.4.6-99.el7.centos.1.x86_64 2/4
Cleanup : httpd-2.4.6-40.el7.centos.1.x86_64 3/4
Cleanup : httpd-tools-2.4.6-40.el7.centos.1.x86_64 4/4
Verifying : httpd-2.4.6-99.el7.centos.1.x86_64 1/4
Verifying : httpd-tools-2.4.6-99.el7.centos.1.x86_64 2/4
Verifying : httpd-2.4.6-40.el7.centos.1.x86_64 3/4
Verifying : httpd-tools-2.4.6-40.el7.centos.1.x86_64 4/4
Updated:
httpd.x86_64 0:2.4.6-99.el7.centos.1
Dependency Updated:
httpd-tools.x86_64 0:2.4.6-99.el7.centos.1
Complete!
---> 2214fb4006c9
Removing intermediate container 8324e3b4b5c7
Step 4/7 : RUN echo "crushlinux" >/var/www/html/index.html
---> Running in badb364c7e55
---> a9b433c350e4
Removing intermediate container badb364c7e55
Step 5/7 : RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
---> Running in d0081e48aa43
---> ffaf678f3cfc
Removing intermediate container d0081e48aa43
Step 6/7 : EXPOSE 80
---> Running in 3bd620f29826
---> 89d665eda838
Removing intermediate container 3bd620f29826
Step 7/7 : CMD httpd -DFOREGROUND
---> Running in 2dea705ece43
---> 7f5e5dc62d40
Removing intermediate container 2dea705ece43
Successfully built 7f5e5dc62d40
查看
[root@localhost httpd]# docker images httpd
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd new 7f5e5dc62d40 2 minutes ago 819 MB
测试容器
[root@localhost httpd]# docker run -d -p 8080:80 --name httpd-test --restart=always httpd:new
90bc8641fbefdf722c5d5842931d776bcbef0a6766c66f3fbc92d966d5752460
Dockerfile构建nginx镜像
建立工作目录
[root@localhost ~]# mkdir nginx
[root@localhost ~]# cd nginx
编写Dockerfile文件
[root@localhost nginx]# vim run.sh
[root@localhost nginx]# cat run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
[root@localhost nginx]# cat Dockerfile
#基于的基础镜像
FROM centos:7
#镜像作者信息
MAINTAINER hhh <hhh@163.com>
#安装相关依赖包
RUN yum install -y wget proc-devel net-tools gcc zlib zlib-devel make openssl-devel
#下载并解压nginx源码包
RUN wget http://nginx.org/download/nginx-1.19.0.tar.gz && tar zxf nginx-1.19.0.tar.gz
#编译安装nginx
RUN cd nginx-1.19.0 && ./configure --prefix=/usr/local/nginx && make && make install
#开启 80 和 443 端口
EXPOSE 80
#修改 Nginx 配置文件,以非 daemon 方式启动
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
#定义时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#复制服务启动脚本并设置权限
ADD run.sh /run.sh
RUN chmod 775 /run.sh
#启动容器时执行脚本
CMD ["/run.sh"]
构建镜像
[root@localhost nginx]# docker build -t nginx:new
相关文章:

Linux下基于Dockerfile构建镜像应用(1)
目录 基于已有容器创建镜像 Dockerfile构建SSHD镜像 构建镜像 测试容器 可以登陆 Dockerfile构建httpd镜像 构建镜像 测试容器 Dockerfile构建nginx镜像 构建镜像 概述: Docker 镜像是Docker容器技术中的核心,也是应用打包构建发布的标准格式。…...
JS中常见的模块管理规范梳理
一、CommonJS规范 CommonJS规范是一种用于JavaScript模块化开发的规范,它定义了模块的导入、导出方式和加载机制,主要用在Node开发中。 1. 使用场景 服务器端开发:Node.js是使用CommonJS规范的,因此在服务器端开发中࿰…...
3维空间下按平面和圆柱面上排版设计
AR空间中将若干平面窗口排列在指定平面或圆柱体面上 平面排版思路 指定平面方向向量layout_centre ,平面上的一点作为排版版面的中心layout_position float3 layout_position = float3(0,0,-10); float3 layout_centre = float3(0,0,1...

【Spring框架】Spring AOP
目录 什么是AOP?AOP组成Spring AOP 实现步骤Spring AOP实现原理JDK Proxy VS CGLIB 什么是AOP? AOP(Aspect Oriented Programming):⾯向切⾯编程,它是⼀种思想,它是对某⼀类事情的集中处理。⽐如…...

寻找旋转排序数组中的最小值——力扣153
文章目录 题目描述解法 二分法 题目描述 解法 二分法 int findMin(vector<int>& nums){int l0, rnums.size()-1;while(l<r){int mid (lr)/2;if(nums[mid]<nums[r]) rmid;else lmid1;}return nums[l];}...

安卓逆向 - 基础入门教程
一、引言 1、我们在采集app数据时,有些字段是加密的,如某麦网x-mini-wua x-sgext x-sign x-umt x-utdid等参数,这时候我们需要去分析加密字段的生成。本篇将以采集的角度讲解入门安卓逆向需要掌握的技能、工具。 2、安卓(Androi…...

验证码安全志:AIGC+集成环境信息信息检测
目录 知己知彼,黑灰产破解验证码的过程 AIGC加持,防范黑灰产的破解 魔高一丈,黑灰产AIGC突破常规验证码 双重防护,保障验证码安全 黑灰产经常采用批量撞库方式登录用户账号,然后进行违法违规操作。 黑灰产将各种方…...

R-Meta分析教程
详情点击链接:R-Meta模型教程 一:Meta分析的选题与文献计量分析CiteSpace应用 1、Meta分析的选题与文献检索 1)什么是Meta分析? 2)Meta分析的选题策略 3)文献检索数据库 4)精确检索策略,如何检索全、检索准 5)文献的管理与…...

【3维视觉】3D空间常用算法(点到直线距离、面法线、二面角)
3D空间点到直线的距离 3D空间点到直线的距离 3D空间的曲率 三维空间有三个基本元素,点,线,面。那么曲率是如何定义的呢? 点的曲率? 线的曲率? 面的曲率? 法曲率 设曲面上的曲线在某一点处的切…...

Nodejs 第四章(Npm install 原理)
在执行npm install 的时候发生了什么? 首先安装的依赖都会存放在根目录的node_modules,默认采用扁平化的方式安装,并且排序规则.bin第一个然后系列,再然后按照首字母排序abcd等,并且使用的算法是广度优先遍历,在遍历依…...

[深度学习] GPU处理能力(TFLOPS/TOPS)
计算能力换算 理论峰值 = GPU芯片数量GPU Boost主频核心数量*单个时钟周期内能处理的浮点计算次数 只不过在GPU里单精度和双精度的浮点计算能力需要分开计算,以最新的Tesla P100为例: 双精度理论峰值 = FP64 Cores *…...
js:获取浏览器默认语言
实现代码 navigator.language zh-CN参考文章 [javascript] js如何获取浏览器的语言...

【U8+】用友U8重新注册加密锁,提示:写卡失败,请重新配置客户端控件。
【问题描述】 用友U8软件重新安装后,需要重新注册加密锁激活软件。 注册反馈提示:产品注册失败。 原因(1):写卡失败,请重新配置客户端控件。 【解决方法】 1、打开控制面板,网络和 Internet&a…...

uniapp小程序console.log在微信开发者工具中不打印问题
最近在开发一款uniapp小程序,发现console.log在微信开发者工具中不打印,但在H5页面就能够有打印输出,于是在网上寻找原因… 主要是由于vue.config.js文件中有设置发布时删除console的配置,如下: 官网参考地址&#x…...

从零基础开始开发自己的第一个微信小程序
文章目录 内容介绍小程序开发步骤注册微信小程序账号下载开发工具搭建开发环境创建工程编写代码手机上查看效果 工程里的文件作用介绍总结 内容介绍 通过本篇blog,你可以熟悉从零开始,搭建小程序开发环境,并运行起自己的第一个小程序。 小程…...

无涯教程-Lua - Arrays(数组)
数组是对象的有序排列,可以是包含行集合的一维数组,也可以是包含多行和多列的多维数组。 在Lua中,数组是使用带有整数的索引表实现的。数组的大小不是固定的,并且可以根据无涯教程的要求(取决于内存限制)来增长。 一维数组 一维…...

0基础学习VR全景平台篇 第76篇:全景相机-圆周率全景相机如何直播推流
圆周率科技,成立于2012年,是中国最早投身嵌入式全景算法研发的团队之一,亦是全球市场占有率最大的全景算法供应商。相继推出一体化智能屏、支持一键高清全景直播的智慧全景相机--Pilot Era和Pilot One,为用户带来实时畅享8K的高清…...

超详细|ChatGPT论文润色教程
本文讲述使用中科大开源ChatGPT论文辅助工具,对论文进行润色 祝看到本教程的小伙伴们都完成论文,顺利毕业。 可以加QQ群交流,一群: 123589938 第一章 介绍 今天给大家分享一款非常不错的ChatGPT论文辅助工具,使用了专…...

MMDeploy安装、python API测试及C++推理
服务器配置如下: Cuda版本:11.1 Cudnn版本:8.2.0 显卡版本:RTX3090 使用转换脚本将.pth模型转换为ONNX格式 python mmdeploy/tools/deploy.py \mmdeploy/configs/mmdet/detection/detection_onnxruntime_dynamic.py \mmdetect…...

[openCV]基于拟合中线的智能车巡线方案V3
import cv2 as cv import os import numpy as np# 遍历文件夹函数 def getFileList(dir, Filelist, extNone):"""获取文件夹及其子文件夹中文件列表输入 dir:文件夹根目录输入 ext: 扩展名返回: 文件路径列表"""newDir d…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...