总结
这份面试题几乎包含了他在一年内遇到的所有面试题以及答案,甚至包括面试中的细节对话以及语录,可谓是细节到极致,甚至简历优化和怎么投简历更容易得到面试机会也包括在内!也包括教你怎么去获得一些大厂,比如阿里,腾讯的内推名额!
某位名人说过成功是靠99%的汗水和1%的机遇得到的,而你想获得那1%的机遇你首先就得付出99%的汗水!你只有朝着你的目标一步一步坚持不懈的走下去你才能有机会获得成功!
成功只会留给那些有准备的人!
编写Dockerfile
Dockerfile内容如下,主要是安装必要的应用,另外关键的操作都有详细的注释,就不多说了:
#Docker image of source for OpenJDK
VERSION 0.0.1
Author: bolingcavalry
#基础镜像使用ubuntu:16.04
FROM ubuntu:16.04
#作者
MAINTAINER BolingCavalry zq2599@gmail.com
#定义boot jdk文件名
ENV BOOT_JDK_FILE_NAME jdk-10_linux-x64_bin_ri
#定义boot jdk安装目录
ENV BOOT_JDK_PATH /usr/lib/jvm
#定义boot jdk解压后的包名
ENV BOOT_JDK_PACKAGE_NAME jdk-10
#boot jdk的完全路径
ENV BOOT_JDK_HOME B O O T J D K P A T H / BOOT_JDK_PATH/ BOOTJDKPATH/BOOT_JDK_PACKAGE_NAME
#boot jdk相关的环境变量
ENV JAVA_HOME $BOOT_JDK_HOME
ENV JRE_HOME $BOOT_JDK_HOME/jre
ENV CLASSPATH .: B O O T J D K H O M E / l i b : BOOT_JDK_HOME/lib: BOOTJDKHOME/lib:JRE_HOME/lib
ENV PATH= B O O T J D K H O M E / b i n : BOOT_JDK_HOME/bin: BOOTJDKHOME/bin:PATH
#创建文件夹用于安装boot jdk
RUN mkdir $BOOT_JDK_PATH
#将分割好的boot jdk安装文件逐个复制到镜像中,分多步完成,这样下载过程中出现问题时,不至于全部重新开始下载
COPY ./$BOOT_JDK_FILE_NAME-ac $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-ag $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-ak $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-ao $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-as $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-ad $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-ah $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-al $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-ap $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-aa $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-ae $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-ai $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-am $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-aq $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-ab $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-af $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-aj $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-an $BOOT_JDK_PATH/
COPY ./$BOOT_JDK_FILE_NAME-ar $BOOT_JDK_PATH/
#还原成完整的文件,再解压开,将boot JDK配置信息写入环境变量,创建jre目录,把lib放进去
RUN cat B O O T J D K P A T H / BOOT_JDK_PATH/ BOOTJDKPATH/BOOT_JDK_FILE_NAME-* > B O O T J D K P A T H / BOOT_JDK_PATH/ BOOTJDKPATH/BOOT_JDK_FILE_NAME.tar.gz \
&& tar -zxvf B O O T J D K P A T H / BOOT_JDK_PATH/ BOOTJDKPATH/BOOT_JDK_FILE_NAME.tar.gz -C $BOOT_JDK_PATH \
&& rm B O O T J D K P A T H / BOOT_JDK_PATH/ BOOTJDKPATH/BOOT_JDK_FILE_NAME.tar.gz \
&& rm B O O T J D K P A T H / BOOT_JDK_PATH/ BOOTJDKPATH/BOOT_JDK_FILE_NAME-* \
&& mkdir $BOOT_JDK_HOME/jre \
&& cp -r $BOOT_JDK_HOME/lib $BOOT_JDK_HOME/jre/
#备份旧的源
RUN mv /etc/apt/sources.list /etc/apt/sources.list.backup
#复制新的源
COPY ./sources.list /etc/apt/
#apt更新
RUN apt-get update \
&& apt-get install -y file autoconf zip libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libfontconfig1-dev libasound2-dev
#命令行文件复制到工作目录
COPY ./cmd.sh /
#赋予可执行权限
RUN chmod a+x /cmd.sh
#启动执行
#CMD [“/bin/bash”, “/cmd.sh”]
ENTRYPOINT [“/cmd.sh”]
看到这里您一定会有疑问:这么多行COPY命令,为什么不用BOOT_JDK_FILE_NAME-*,这样岂不是一行命令就够了?
您可以在镜像build成功后,用docker history命令看看文件的layer数量,用多个COPY命令逐个执行,每个命令都对应一个小的layer,这样用户下载镜像时就是在下载多个小文件了;
cmd.sh文件
cmd.sh的内容如下,可见当容器启动后,先完成configure,再执行make命令进行编译:
#!/bin/bash
#修改所属人和所属群组
echo “start chown and chgrp”
chown -R root /src/jdk11 && chgrp -R root /src/jdk11
cd /src/jdk11
#配置
echo “start configure”
bash /src/jdk11/configure
#开始编译,如果有入参,就作为make的参数
echo “start make”
Kafka实战笔记
关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图
- Kafka入门
- 为什么选择Kafka
- Karka的安装、管理和配置
- Kafka的集群
- 第一个Kafka程序
afka的生产者
- Kafka的消费者
- 深入理解Kafka
- 可靠的数据传递
- Spring和Kalka的整合
- Sprinboot和Kafka的整合
- Kafka实战之削峰填谷
- 数据管道和流式处理(了解即可)
- Kafka实战之削峰填谷
- Kafka实战之削峰填谷
[外链图片转存中…(img-XOk0LJNj-1715663805418)]