总结:心得体会
既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。
学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。
面试大厂,最重要的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。
最后,上面这些大厂面试真题都是非常好的学习资料,通过这些面试真题能够看看自己对技术知识掌握的大概情况,从而能够给自己定一个学习方向。包括上面分享到的学习指南,你都可以从学习指南里理顺学习路线,避免低效学习。
大厂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了,这里有两个关键点需要注意:
-
受到JavaCV依赖的约束,OpenCV的版本要用4.5.3
-
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进阶学习笔记和面试题未展示,其中囊括了Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!
更多Java架构进阶资料展示
(img-vsHKQ1bg-1715596024415)]
[外链图片转存中…(img-rRCe0NVa-1715596024415)]
[外链图片转存中…(img-9TKEvA5h-1715596024415)]