Java已经过了20个年头了,Java8之后,JDK的发行计划变了不少,半年一小聚,三年一大闹。根据Oracle官方的的文档,长期支持的Java版本是Java11 和 Java17。 其中Java17计划在2021年9月14号发布,Java17 将是一个长期支持的版本(Long Terms Support)。既然长期支持,作为Java程序员就必须重视并搞起来。那么让我们来阅览一下二十年陈酿 Java17 。文木附送OpenJDK 17 Earily Access 版本下载地址,还不玩起来!
代购 == 代理模式? -- 20210802
大家好,我是指北君。
最近指北君的女神要生日了,所以指北君决定通过代购买个小包包当生日礼物(这半个月又白忙活了😭),在下单完的一瞬间,突然指北君发现,代购和我们Java中的静态代理模式很像啊,指北君顾不上买包的心痛,马上码了这篇文章。
阿里四面,居然栽在一道排序算法上 --20210730
大家好,我是指北君。
前两天有童鞋发消息给指北君哭诉阿里四面挂了,据了解,面试过程中该童鞋表现得很不错,所以最后面试官出了道简单题”912. 排序数组“放放水,但指定使用归并排序算法,但该读者因为细节问题运行case始终过不了,最终收到感谢信。
模块系统-module -- 20210729
大家好,我是指北君,本次将为大家带来Java模块系统的介绍。模块化一直是软件工程和设计领域的重要关注点,模块化程度的高低决定了产品在安全、可复用、扩展、升级、维护等诸多方面是否具备竞争力。 Java的模块系统是JDK9引入,由于Java的9,10两个版本不是LTS版本,所以大部分人接触到Java的模块系统是在Java11中。
都1202年了,还不懂String类的原理吗? -- 20210728
哈喽,大家好,我是指北君。
java.lang.String类可能是大家日常用的最多的类,但是对于它是怎么实现的,你真的明白吗?不知道不要紧,善解人意的指北君写下了这篇文章,包你一看就明白了。
3个案例让你掌握 Spring Boot 全局异常处理 --20210726
大家好,我是指北君。
前言
在平时的 API 开发过程中,总会遇到一些错误异常没有捕捉到的情况。那有的小伙伴可能会想,这还不简单么,我在 API 最外层加一个 try...catch
不就完事了。
哈哈哈,没错。这种方法简单粗暴。指北君曾经也是这么干的,但是你转过来想一想,你会在每一个 API 入口,都去做 try...catch
吗?这样不是代码非常丑陋的。小伙伴开始思考,突然灵光一现,说我们实现一个 AOP 来做这事不久完了。没错,使用 AOP 来实现是最佳的选择。
现在指北君就给大家来介绍介绍 Spring Boot
怎么通过注解来实现全局异常处理的。
一篇搞定@SpringBootApplication注解所有面试题 --20210723
大家好,我是指北君。
前言
前几天,指北君有一个朋友小王在面试过程中被吊打了。当时的情况是这样的。
面试官:Spring Boot
中最重要的注解是什么?你能讲讲为什么最重要吗?
小王:@SpringBootApplication
,这个注解最重要吧。 @SpringBootApplication
注解能够实现 Spring 组件自动化配置,组件扫描。
面试官:那 @SpringBootApplication
注解是怎么实现 Spring Boot
的自动配置功能呢?
小王心想大事不妙,还真没有看过这块源码。支支吾吾回答不上,只好回家等通知了。
线程:臣妾不止能抢资源还能合作共赢 --20210722
大家好,我是指北君。
前几天指北君的朋友小 B,写了一个导出 excel 下载太慢被客户嫌弃了。
指北君就让小 B 用 CyclicBarrier 。CyclicBarrier 是一个循环的栅栏,在多个线程完成各自的任务之后,主线程才可以开始执行任务。小 B 的情况就适用于多个线程并行查询数据库,然后写入 excel 的各个 sheet 页,在所有操作完成之后执行汇总数据的算法并将结果写入汇总的 sheet 页。
新媒体大佬粥佐罗:这样取标题会让你文章浏览量大增
哈喽,大家好,我是指北君。
本篇文章给大家总结自媒体大佬粥佐罗取标题技巧,看完之后再也不担心文章如何取标题了。
Zookeeper 源码分析:Leader选举
大家好,我是指北君。
Zookeeper作为一个开源的分布式应用协调系统,简称 ZK。已经用到了许多分布式项目中,用来完成统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等工作,使用场景也是非常多。
面试中如何你能够对原理讲解清楚,甚至从源码的角度谈一谈,那征服面试官想必也是水到渠成的事情。
Docker是什么?--20210721
大家好,我是指北君。
如果说个人主机时代大家都是比拼单机 CPU 主频的高低和内存的大小,那么现在的云计算时代,虚拟化技术毫无疑问是时代的主流了(进一步压榨硬件资源)。而 Docker 就是实现轻量级虚拟机技术的代表了。它实现了应用组件级别的 “一次封装,到处运行”。
从 a++ 到 乐观锁 CAS -- 20210719
听说有人不清楚[时间复杂度],怪我。看完这篇还不清楚,那么请来怼我!--20210716
了解这两个接口后,阿里多线程面试题秒AC --20210715
大家好,我是指北君
我们知道,阿里面试时非常喜欢考Java多线程编程题,如果你AC不了,可能会给面试官留下一个基础不扎实的印象,影响到你offer的收割,想当年指北君面阿里时就因为秒AC了一道多线程面试题,让面试官刮目相看,所以我们需要重视Java多线程编程。
一般在解决多线程编程题时,我们都离不开JUC并发包下的各种工具类,特别是ReentrantLock锁,它能提供互斥与线程同步的能力,那它是如何获得这个能力的呢?今天指北君就来详细说说给它提供强大能力的两大接口。(PS:文末有当年指北君面试阿里的多线程编程原题以及答案喔)
听说你想学Java并发编程?先把这个学了(3) -- 20210714
大家好,我是指北君。
这是AQS系列的第三篇文章,也是最后一篇,如果没看过AQS系列前两篇的童鞋,建议先去公号中的”Java并发编程”专栏中把前两篇看完。这篇主要是讲AQS是如何解决线程同步通信问题的。
我们在第一篇中说到AQS使用的是管程模型,而管程模型是使用条件变量来解决同步通信问题的。条件变量会有两个方法,唤醒和等待。当条件满足时,我们会通过唤醒方法将条件队列中的线程放入第二篇所说的同步队列中;如果不满足条件,则会通过等待方法将线程阻塞放入条件队列中。而AQS中通过ConditionObject类实现了条件变量,所以接下来我们就具体看看ConditionObject类吧。
你还在苦苦分析Spring Boot 启动错误堆栈,而不是使用故障分析器吗? --20210712
大家好, 我是指北君。
相信大家在启动 Spring Boot 项目的时候,也遇到过由于各种各样的原因而启动失败的情况吧,显示出一大堆的错误信息,比如端口占用时会打印如下异常:
1 |
|
相信大家应该很熟悉吧,多少遇到过这种情况吧。
你知道Spring Boot的彩蛋怎么设置吗?--20210709
文稿原地址: https://www.yuque.com/wbf1013/mglhnr/ah83wl
大家好,我是指北君。
前言
今天,我给大家来讲讲在 Spring Boot 项目中,自定义 banner 的事情。有些新入门的朋友可能会不知道 banner 是什么?它在哪里? 我在哪里见过它吗? 这3连门是不是很有意思。 我们今天所说的 banner 如下图所示,想必大家在启动 Spring Boot 项目的时候,大家都见过吧。
JDK源码解析——深入函数式接口(原理篇)--20210708
大家好,函数式接口的应用篇已经给大家讲完,今天,指北君和大家一同深入探索Java实现函数式接口的原理。本篇将从编译,执行层面为大家讲解函数式接口运行的机制,让各位小伙伴更进一步加深对函数式接口的理解。
LinkedBlockingQueue 的入队与出队解析 -- 20210628
大家好,我是指北君。
在前面的文章中,已经对 ArrayBlockingQueue 进行了一次源码分析,对它的核心源码做了分析,今天来解析一波同为 BlockingQueue 家族中的一员的 LinkedBlockingQueue。它的底层基于单向链表实现。
深拷贝和浅拷贝,看完再也不怕面试官问了 -- 20210707
哈喽,大家好,我是指北君。
本篇文章给大家介绍面试常问的深拷贝和浅拷贝,看完之后再也不担心面试官问你这道题而做不到了。