Docker - DockerFile
Docker - DockerFile
DockerFile 描述
dockerfile 是用来构建docker镜像的文件!命令参数脚本!
构建步骤:
- 编写一个dockerfile 文件
- docker build 构建成为一个镜像
- docker run 运行脚本
- docker push 发布镜像(dockerhub,阿里云镜像仓库!)
通过 Docker Hub 查看Centos,可以跳转到github查看构建代码
DockerFIle 构建
基础知识
-
每个保留关键字(指令)都是必须是大写字母
-
执行从上到下顺序执行
-
#表示注释
-
每一个指令都会创建提交一个新的镜像层,并提交!
dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件。
docker镜像逐渐成为企业交付的标准,必须掌握!
步骤:开发,部署,运维
Dockerfile:构建文件,定义了一切的步骤,源代码
DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品!
Docke容器:容器就是镜像运行起来提供服务器
DockerFile 指令
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的,姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤:tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载目录
EXPOSE # 保留端口配置
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD # 当构建一个被继承 Dockerfile 这个时候就会运行 ONBUILD 的指定。触发指令
COPY # 类似ADD,将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量
DockerFile 测试
# 1 编写Dockerfile文件
[root@iZ2zeg7mctvft5renx1qvbZ dockerfiles]# cat mycentos
FROM centos:7
MAINTAINER wys<199@163.com>ENV MYPATH /usr/local
WORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash# 2 构建 Docker 镜像
[root@iZ2zeg7mctvft5renx1qvbZ dockerfiles]# docker build -f mycentos -t mycentos:0.1 .
[+] Building 67.7s (8/8) FINISHED docker:default=> [internal] load build definition from mycentos 0.0s=> => transferring dockerfile: 237B 0.0s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [internal] load metadata for docker.io/library/centos:7 3.0s=> [1/4] FROM docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 39.5s=> => resolve docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 0.0s=> => sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 1.20kB / 1.20kB 0.0s=> => sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f 529B / 529B 0.0s=> => sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9 2.75kB / 2.75kB 0.0s=> => sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc 76.10MB / 76.10MB 35.8s=> => extracting sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc 3.3s=> [2/4] WORKDIR /usr/local 0.9s=> [3/4] RUN yum -y install vim 19.9s=> [4/4] RUN yum -y install net-tools 2.0s=> exporting to image 2.3s => => exporting layers 2.2s => => writing image sha256:afbe5424adac09891eefa5feabf9584f01638e7475eaca1789535fbe499c5ebd 0.0s => => naming to docker.io/library/mycentos:0.1# 查看镜像的生成过程[root@iZ2zeg7mctvft5renx1qvbZ dockerfiles]# docker history afbe5424adac
IMAGE CREATED CREATED BY SIZE COMMENT
afbe5424adac 6 minutes ago CMD ["/bin/sh" "-c" "/bin/bash"] 0B buildkit.dockerfile.v0
<missing> 6 minutes ago CMD ["/bin/sh" "-c" "echo \"----end----\""] 0B buildkit.dockerfile.v0
<missing> 6 minutes ago CMD ["/bin/sh" "-c" "echo $MYPATH"] 0B buildkit.dockerfile.v0
<missing> 6 minutes ago EXPOSE map[80/tcp:{}] 0B buildkit.dockerfile.v0
<missing> 6 minutes ago RUN /bin/sh -c yum -y install net-tools # bu… 198MB buildkit.dockerfile.v0
<missing> 6 minutes ago RUN /bin/sh -c yum -y install vim # buildkit 284MB buildkit.dockerfile.v0
<missing> 6 minutes ago WORKDIR /usr/local 0B buildkit.dockerfile.v0
<missing> 6 minutes ago ENV MYPATH=/usr/local 0B buildkit.dockerfile.v0
<missing> 6 minutes ago MAINTAINER wys<199@163.com> 0B buildkit.dockerfile.v0
<missing> 2 years ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 2 years ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
<missing> 2 years ago /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4… 204MB
ENTRYPOINT & CMD 区别
【ENTRYPOINT】:追加执行 【CMD】:替换执行
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令# CMD 测试
[root@iZ2zeg7mctvft5renx1qvbZ dockerfiles]# cat mycentoscmd
FROM centos
CMD ["ls","-a"]
[root@iZ2zeg7mctvft5renx1qvbZ dockerfiles]# docker run mycentoscmd
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
[root@iZ2zeg7mctvft5renx1qvbZ dockerfiles]# docker run mycentoscmd -l
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "-l": executable file not found in $PATH: unknown.
ERRO[0000] error waiting for container:# CMD 测试
[root@iZ2zeg7mctvft5renx1qvbZ dockerfiles]# cat mycentos-entrypoint
FROM centos
ENTRYPOINT ["ls","-a"]
[root@iZ2zeg7mctvft5renx1qvbZ dockerfiles]# docker run mycentos-entrypoint
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
[root@iZ2zeg7mctvft5renx1qvbZ dockerfiles]# docker run mycentos-entrypoint -l
total 0
drwxr-xr-x 1 root root 6 Nov 10 08:06 .
drwxr-xr-x 1 root root 6 Nov 10 08:06 ..
-rwxr-xr-x 1 root root 0 Nov 10 08:06 .dockerenv
lrwxrwxrwx 1 root root 7 Nov 3 2020 bin -> usr/bin
drwxr-xr-x 5 root root 340 Nov 10 08:06 dev
drwxr-xr-x 1 root root 66 Nov 10 08:06 etc
drwxr-xr-x 2 root root 6 Nov 3 2020 home
lrwxrwxrwx 1 root root 7 Nov 3 2020 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Nov 3 2020 lib64 -> usr/lib64
drwx------ 2 root root 6 Sep 15 2021 lost+found
drwxr-xr-x 2 root root 6 Nov 3 2020 media
drwxr-xr-x 2 root root 6 Nov 3 2020 mnt
drwxr-xr-x 2 root root 6 Nov 3 2020 opt
dr-xr-xr-x 132 root root 0 Nov 10 08:06 proc
dr-xr-x--- 2 root root 162 Sep 15 2021 root
drwxr-xr-x 11 root root 163 Sep 15 2021 run
lrwxrwxrwx 1 root root 8 Nov 3 2020 sbin -> usr/sbin
drwxr-xr-x 2 root root 6 Nov 3 2020 srv
dr-xr-xr-x 13 root root 0 Nov 10 08:06 sys
drwxrwxrwt 7 root root 171 Sep 15 2021 tmp
drwxr-xr-x 12 root root 144 Sep 15 2021 usr
drwxr-xr-x 20 root root 262 Sep 15 2021 var
构建 - tomcat
- 准备镜像文件 tomcat 压缩包,jdk 压缩包
- 编写dockerfile文件
[root@iZ2zeg7mctvft5renx1qvbZ tomcat]wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.82/bin/apache-tomcat-9.0.82.tar.gz[root@iZ2zeg7mctvft5renx1qvbZ tomcat]wget --no-check-certificate --no-cookies --header "Cookie:oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
[root@iZ2zeg7mctvft5renx1qvbZ tomcat]wget --no-check-certificate --no-cookies --header "Cookie:oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz[root@iZ2zeg7mctvft5renx1qvbZ tomcat]# pwd
/root/dockerfiles/tomcat
[root@iZ2zeg7mctvft5renx1qvbZ tomcat]# ls
apache-tomcat-9.0.82.tar.gz jdk-8u131-linux-x64.tar.gz readme.txt# 编写dockerfile文件,官方命名 `Dockerfile`, build会自动寻找这个文件,就不需要-f 指定了
FROM centos:7
MAINTAINER maomao<1213213@qq.com># 复制文件
COPY readme.txt /usr/local/readme.txt# 将压缩包复制到镜像
ADD jdk-8u131-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.82.tar.gz /usr/local/# 安装vim
RUN yum -y install vim# 设置工具目录
ENV MYPATH /usr/local
WORKDIR $MYPATH# 设置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_131
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.82
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.82
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin# 暴露端口
EXPOSE 8080# 执行tomcat
CMD /usr/local/apache-tomcat-9.0.82/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.82/bin/logs/catalina.out# 执行 build docker镜像
[root@iZ2zeg7mctvft5renx1qvbZ tomcat]# docker build -t tomcat .
[+] Building 26.1s (11/11) FINISHED docker:default=> [internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 804B 0.0s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [internal] load metadata for docker.io/library/centos:7 0.7s=> CACHED [1/6] FROM docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 0.0s=> [internal] load build context 0.0s=> => transferring context: 126B 0.0s=> [2/6] COPY readme.txt /usr/local/readme.txt 0.0s=> [3/6] ADD jdk-8u131-linux-x64.tar.gz /usr/local/ 5.3s=> [4/6] ADD apache-tomcat-9.0.82.tar.gz /usr/local/ 0.3s=> [5/6] RUN yum -y install vim 15.6s=> [6/6] WORKDIR /usr/local 0.1s=> exporting to image 3.9s=> => exporting layers 3.9s=> => writing image sha256:b1ef32328c3c25f035586a53f3ee10778892a593780232e2c6cf139e9ca8659e 0.0s=> => naming to docker.io/library/tomcat 0.0s
[root@iZ2zeg7mctvft5renx1qvbZ tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest b1ef32328c3c 10 seconds ago 881MB# 启动该镜像的窗口
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker run -d -p 8080:8080 --name tomcat -v /home/build/tomcat/test/:/usr/local/apache-tomcat-9.0.82/webapps/test -v /home/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.82/logs tomcat
06f1d3e98ec482bbba48e57d96c11867bbdbe61474d0674e81556da0ffc9d226# 编写 test/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID"version="2.5"></web-app># 编写 test/index.jsp 进行测试
<% System.out.println("----"); %>
发布镜像 -待注册账号
网络原因:这里没有实际操作过
- 地址:https://hub.docker.com/ 注册自己的账号!
- 确定这个账号可以登录
- 在服务器上提交自己的镜像
[root@iZ2zeg7mctvft5renx1qvbZ tomcatlogs]# docker login --helpUsage: docker login [OPTIONS] [SERVER]Log in to a registry.
If no server is specified, the default is defined by the daemon.Options:-p, --password string Password--password-stdin Take the password from stdin-u, --username string Username
- 登录完毕后就可以提交镜像了,就是一步 docker push
阿里云发布
-
登录阿里云
-
进入【容器镜像服务】并 开启个人实例 【创建命名空间,创建镜像仓库】
-
按操作指南进行操作即可
镜像仓库名好比于当前你发布的容器名
# 登录
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker login --username=*** registry.cn-beijing.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
[root@iZ2zeg7mctvft5renx1qvbZ ~]## 拉取镜像
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker pull registry.cn-beijing.aliyuncs.com/am98/tomcat:1.0
1.0: Pulling from am98/tomcat
2d473b07cdd5: Already exists
2045650e548c: Already exists
ca2b114dc7e9: Already exists
fa427a442e19: Already exists
1e0f8f1a4b3d: Already exists
4f4fb700ef54: Already exists
Digest: sha256:c7011cb830a34e26902ae7ac1c5f6c379088d9fde276f7c93942328a85f9f3b7
Status: Downloaded newer image for registry.cn-beijing.aliyuncs.com/am98/tomcat:1.0
registry.cn-beijing.aliyuncs.com/am98/tomcat:1.0
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-beijing.aliyuncs.com/am98/tomcat 1.0 b1ef32328c3c 2 hours ago 881MB# 修改镜像名:版本号
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker tag b1ef32328c3c registry.cn-beijing.aliyuncs.com/am98/tomcat:1.0# 提交镜像
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker push registry.cn-beijing.aliyuncs.com/am98/tomcat:1.0
The push refers to repository [registry.cn-beijing.aliyuncs.com/am98/tomcat]
5f70bf18a086: Pushed
bb6cd3e44e82: Pushed
801a43a0316f: Pushed
b3f9f3df333b: Pushed
1d2219e9e671: Pushed
174f56854903: Pushed
1.0: digest: sha256:c7011cb830a34e26902ae7ac1c5f6c379088d9fde276f7c93942328a85f9f3b7 size: 1579
相关文章:

Docker - DockerFile
Docker - DockerFile DockerFile 描述 dockerfile 是用来构建docker镜像的文件!命令参数脚本! 构建步骤: 编写一个dockerfile 文件docker build 构建成为一个镜像docker run 运行脚本docker push 发布镜像(dockerhub࿰…...
2311rust模式匹配
原文 在Rust中混合匹配,改变和移动 结构模式匹配:极大的改进了C或Java风格的switch语句. Match包含命令式和函数式编程风格:可继续使用break语句,赋值等,不必面向表达式. 按需匹配"借用"或"移动",:Rust鼓励开发者仔细考虑所有权和借用.设计匹配时仅支持…...

Linux系统软件安装方式
Linux系统软件安装方式 1. 绿色安装2. yum安装3. rpm安装3.1 rpm常用命令 4. 源码安装4.1 安装依赖包4.2 执行configure脚本4.3 编译、安装4.4 安装4.5 操作nginx4.6 创建服务器 1. 绿色安装 Compressed Archive压缩文档包,如Java软件的压缩文档包,只需…...
React + Antd 自定义Select选择框 全选、清空功能
实现代码 import React, { useState, useEffect } from react; import { Select, Space, Divider, Button } from antd;export default function AllSelect (props) {const {fieldNames, // 自定义节点labbel、value、options、grouLabeloptions, // 数据化配置选项内容&#…...

阿里云国际站:应用实时监控服务
文章目录 一、阿里云应用实时监控服务的概念 二、阿里云应用实时监控服务的优势 三、阿里云应用实时监控服务的功能 四、写在最后 一、阿里云应用实时监控服务的概念 应用实时监控服务 (Application Real-Time Monitoring Service) 作为一款云原生可观测产品平台ÿ…...

专题知识点-二叉树-(非常有意义的一篇文章)
这里写目录标题 二叉树的基础知识知识点一(二叉树性质 )树与二叉树的相互转换二叉树的遍历层次优先遍历树的深度和广度优先遍历中序线索二叉树二叉树相关遍历代码顺序存储和链式存储二叉树的遍历二叉树的相关例题左右两边表达式求值求树的深度找数找第k个数二叉树非递归遍历代码…...
多路数据写入DDR3/DDR4的两种方法
1.官方IP实现; 2.手写Axi 仲裁器。...

3 分钟看完 NVIDIA GPU 架构及演进
近期随着 AI 市场的爆发式增长,作为 AI 背后技术的核心之一 GPU(图形处理器)的价格也水涨船高。GPU 在人工智能中发挥着巨大的重要,特别是在计算和数据处理方面。目前生产 GPU 主流厂商其实并不多,主要就是 NVIDIA、AM…...
SMART PLC 和S7-1200PLC MODBUSTCP通信速度测试
SMART PLC MODBUSTCP通信详细介绍请参看下面文章链接: S7-200SMART PLC ModbusTCP通信(多服务器多从站轮询)_matlab sumilink 多个modbustcp读写_RXXW_Dor的博客-CSDN博客文章浏览阅读6.4k次,点赞5次,收藏10次。MBUS_CLIENT作为MODBUS TCP客户端通过S7-200 SMART CPU上的…...
C++文件操作知识点总结
文件流操作文本文件 文件流 在 C 中,对文件的操作是通过 stream 的子类 fstream( file stream )来实现的,所以,要用这种方式操作文件,就必须加入头文件<fstream>,代码如下: …...

开发vue3 UI组件库,并且发布到NPM
目录 1.创建vue3工程 2.创建package文件 3.编写组件,并且导出 4.编写package.json 5.npm账号注册登录并发布 6.从npm安装使用 7.注意事项 1.创建vue3工程 (1)初始化Vue项目 cnpm create vite (2)进入文件夹…...

雷达测角原理、测角精度、测角分辨率以及3DFFT角度估计算法汇总
1.角度测量方法 依据:电磁波的直线传播和雷达天线的方向性。 分类:振幅法测角、相位法测角 1.1 相位法测角 相位法测角利用多个天线所接收回波信号之间的相位差进行测角。如下图所示; 图 1 设在θ方向有一远区目标,则到达接收点…...

金财数科无代码开发平台:轻松实现电商、CRM、广告推广系统的集成连接
连接与集成:挖掘电商平台的潜力 金财数科是一家领先的信息技术公司,专注于利用前沿技术如互联网、人工智能、大数据和区块链等,为传统财税信息化方案和产品提供升级改造,并打造新一代智能财税SaaS平台。我们的目标是帮助企业通过…...
JavaWeb篇_09——Tomcat运行过程以及Servlet继承结构
Tomcat运行过程 用户访问localhost:8888/test/helloword.do,请求被发送到Tomcat,被监听8888端口并处理 HTTP/1.1 协议的Connector获得。Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。Engine获得请求localhost/t…...
Python中的异常与错误处理
一、基础知识 1、一个try语句支持多个except子句,但请记得将更精确的异常类型放在前面。 2、try语句的else分支会在没有异常时执行,因此它可以用来替代标记变量(flag变量)。 3、不带任何参数的raise语句会直接重复抛出当前异常。…...

sqli-labs关卡16(基于post提交的双引号加括号闭合的布尔盲注)通关思路
文章目录 前言一、回顾上一关知识点二、靶场第十六关通关思路1、判断注入点2、猜数据库长度3、猜数据库名字4、猜表名长度5、猜表名名字6、猜列名长度7、猜列名名字8、猜数据长度9、猜数据名字 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击…...
2.5k的ChatGPT-Java版SDK升级1.1.2-beta0支持GPT-4V、Dall-e-3模型、ToolCalls、微调Job、TTS...
1、项目简介 Chatgpt-Java是OpenAI官方Api的Java SDK,可以快速接入项目使用。支持OpenAI官方全部接口。 目前收获将2500star🌟。 开源地址:https://github.com/Grt1228/chatgpt-java官方文档:https://chatgpt-java.unfbx.com/最…...

k8s二进制(ETCD的部署安装)
角色ip组件k8s-master192.168.11.169kube-apiserver,kube-controller-manager,kube-scheduler,etcdk8s-node1192.168.11.164kubelet,kube-proxy,docker,etcdk8s-node2192.168.11.166kubelet,kube-proxy,docker,etcd 1、为etcd签发证书 1、证书的下载(任意机器上执行都可以) …...

【rl-agents代码学习】02——DQN算法
文章目录 Highway-env Intersectionrl-agents之DQN*Implemented variants*:*References*:Query agent for actions sequence探索策略神经网络实现小结1 Record the experienceReplaybuffercompute_bellman_residualstep_optimizerupdate_target_network小结2 exploration_polic…...
关于使用 Java 反射技术来实现解耦?
关于使用 Java 反射技术来实现解耦? 文章目录 关于使用 Java 反射技术来实现解耦?一、基本说明二、代码示例三、注意 一、基本说明 Java 反射技术允许程序在运行时加载、探索和使用类和对象。通过反射,我们可以在程序运行期间动态地创建对象…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

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…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...