最全制作JavaCV应用依赖的基础Docker镜像(CentOS7+JDK8+OpenCV4),rabbitmq面试

总结:心得体会

既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。

学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。

面试大厂,最重要的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。

最后,上面这些大厂面试真题都是非常好的学习资料,通过这些面试真题能够看看自己对技术知识掌握的大概情况,从而能够给自己定一个学习方向。包括上面分享到的学习指南,你都可以从学习指南里理顺学习路线,避免低效学习。

大厂Java架构核心笔记(适合中高级程序员阅读):

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

curl -fL -o openjdk.tgz.asc “$downloadUrl.sign”; \

\

export GNUPGHOME=“$(mktemp -d)”; \

pre-fetch Andrew Haley’s (the OpenJDK 8 and 11 Updates OpenJDK project lead) key so we can verify that the OpenJDK key was signed by it

(https://github.com/docker-library/openjdk/pull/322#discussion_r286839190)

we pre-fetch this so that the signature it makes on the OpenJDK key can survive “import-clean” in gpg

gpg --batch --keyserver keyserver.ubuntu.com --recv-keys EAC843EBD3EFDB98CC772FADA5CD6035332FA671; \

TODO find a good link for users to verify this key is right (https://mail.openjdk.java.net/pipermail/jdk-updates-dev/2019-April/000951.html is one of the only mentions of it I can find); perhaps a note added to https://adoptopenjdk.net/upstream.html would make sense?

no-self-sigs-only: https://salsa.debian.org/debian/gnupg2/commit/c93ca04a53569916308b369c8b218dad5ae8fe07

gpg --batch --keyserver keyserver.ubuntu.com --keyserver-options no-self-sigs-only --recv-keys CA5F11C6CE22644D42C6AC4492EF8D39DC13168F; \

gpg --batch --list-sigs --keyid-format 0xLONG CA5F11C6CE22644D42C6AC4492EF8D39DC13168F \

| tee /dev/stderr \

| grep ‘0xA5CD6035332FA671’ \

| grep ‘Andrew Haley’; \

gpg --batch --verify openjdk.tgz.asc openjdk.tgz; \

rm -rf “$GNUPGHOME”; \

\

mkdir -p “$JAVA_HOME”; \

tar --extract \

–file openjdk.tgz \

–directory “$JAVA_HOME” \

–strip-components 1 \

–no-same-owner \

; \

rm openjdk.tgz*; \

\

rm -rf “$JAVA_HOME/jre/lib/security/cacerts”; \

see “update-ca-trust” script which creates/maintains this cacerts bundle

ln -sT /etc/pki/ca-trust/extracted/java/cacerts “$JAVA_HOME/jre/lib/security/cacerts”; \

\

https://github.com/oracle/docker-images/blob/a56e0d1ed968ff669d2e2ba8a1483d0f3acc80c0/OracleJava/java-8/Dockerfile#L17-L19

ln -sfT “$JAVA_HOME” /usr/java/default; \

ln -sfT “$JAVA_HOME” /usr/java/latest; \

for bin in “$JAVA_HOME/bin/”*; do \

base=“ ( b a s e n a m e " (basename " (basename"bin”)"; \

[ ! -e “/usr/bin/$base” ]; \

alternatives --install “/usr/bin/ b a s e " " base" " base""base” “$bin” 20000; \

done; \

\

basic smoke test

javac -version; \

java -version

  • 写完之后执行docker build -t bolingcavalry/centos7.6-jdk8:0.0.1 .即可生成镜像,如果您有hub.docker.com的账号,还可以将其推送到中央仓库,给更多人使用

  • 用history命令看看镜像内容,详情如下,合计五百多兆,已经不小了:

will@Mac-mini$ docker history bolingcavalry/centos7.6-jdk8:0.0.1

IMAGE CREATED CREATED BY SIZE COMMENT

a5dead4a6505 2 days ago /bin/sh -c set -eux; arch="$(objdump… 209MB

2 days ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0B

2 days ago /bin/sh -c #(nop) ENV PATH=/usr/java/openjd… 0B

2 days ago /bin/sh -c #(nop) ENV JAVA_HOME=/usr/java/o… 0B

2 days ago /bin/sh -c set -eux; yum install -y … 144MB

2 years ago /bin/sh -c #(nop) CMD [“/bin/bash”] 0B

2 years ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B

2 years ago /bin/sh -c #(nop) ADD file:54b004357379717df… 202MB

  • 我这里已经推送到hub.docker.com上去了,执行以下命令即可下载到本地:

docker pull bolingcavalry/centos7.6-jdk8:0.0.3

CentOS7+JDK8+OpenCV4镜像

  • 接下来可以集成OpenCV4了,这里有两个关键点需要注意:
  1. 受到JavaCV依赖的约束,OpenCV的版本要用4.5.3

  2. OpenCV编译的时候要求cmake版本是3.x,因此需要下载cmake对应版本

  • 最终,Dockerfile内容如下,基础镜像是前面做好的bolingcavalry/centos7.6-jdk8:0.0.1,先是安装一大堆编译所需的应用,然后下载cmake并安装,再下载OpenCV-4.5.3版本的源码然后编译,就这么简单(但其间的调试工作还是不少的,不说了,说多了都是泪):

FROM bolingcavalry/centos7.6-jdk8:0.0.1

RUN echo “export LC_ALL=en_US.UTF-8” >> /etc/profile \

&& source /etc/profile

RUN set -eux; \

yum install -y \

make \

gcc \

gcc-c++ \

gtk±devel \

gimp-devel \

gimp-devel-tools \

gimp-help-browser \

zlib-devel \

libtiff-devel \

libjpeg-devel \

libpng-devel \

gstreamer-devel \

libavc1394-devel \

libraw1394-devel \

libdc1394-devel \

jasper-devel \

jasper-utils \

swig \

python \

libtool \

nasm \

build-essential \

ant \

unzip \

;

RUN set -eux; \

curl -fL -o cmake-3.12.2-Linux-x86_64.tar.gz https://cmake.org/files/v3.12/cmake-3.12.2-Linux-x86_64.tar.gz \

&& tar -zxvf cmake-3.12.2-Linux-x86_64.tar.gz \

&& mv cmake-3.12.2-Linux-x86_64 cmake-3.12.2 \

&& ln -sf /cmake-3.12.2/bin/* /usr/bin; \

curl -fL -o opencv-4.5.3.zip https://codeload.github.com/opencv/opencv/zip/4.5.3; \

unzip opencv-4.5.3.zip; \

rm -rf opencv-4.5.3.zip; \

cd opencv-4.5.3; \

mkdir build; \

cd build; \

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local …; \

make; \

make install; \

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTS=OFF …;\

make -j8; \

make install

  • 执行命令docker build -t bolingcavalry/opencv4.5.3:0.0.1 .即可生成镜像,如果您有hub.docker.com的账号,还可以将其推送到中央仓库,给更多人使用

  • 用history命令看看镜像内容,详情如下,倒吸一口凉气,这么大的体积,亲爱的读者们会不会打死我…:

will@Mac-mini centos7-jdk8 % docker history bolingcavalry/opencv4.5.3:0.0.1

IMAGE CREATED CREATED BY SIZE COMMENT

d1518ffa4699 5 days ago RUN /bin/sh -c set -eux; curl -fL -o cma… 819MB buildkit.dockerfile.v0

5 days ago RUN /bin/sh -c set -eux; yum install -y … 637MB buildkit.dockerfile.v0

5 days ago RUN /bin/sh -c echo "export LC_ALL=en_US.UTF… 1.84kB buildkit.dockerfile.v0

3 months ago /bin/sh -c set -eux; arch="$(objdump… 209MB

3 months ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0B

3 months ago /bin/sh -c #(nop) ENV PATH=/usr/java/openjd… 0B

3 months ago /bin/sh -c #(nop) ENV JAVA_HOME=/usr/java/o… 0B

3 months ago /bin/sh -c set -eux; yum install -y … 144MB

2 years ago /bin/sh -c #(nop) CMD [“/bin/bash”] 0B

2 years ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B

2 years ago /bin/sh -c #(nop) ADD file:54b004357379717df… 202MB

Java高频面试专题合集解析:

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

当然在这还有更多整理总结的Java进阶学习笔记和面试题未展示,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

更多Java架构进阶资料展示

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

阿里Java岗面试百题:Spring 缓存 JVM 微服务 数据库 RabbitMQ等

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

(img-vsHKQ1bg-1715596024415)]

[外链图片转存中…(img-rRCe0NVa-1715596024415)]

[外链图片转存中…(img-9TKEvA5h-1715596024415)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值