用了这么多年的 SpringBoot 你知道什么是 SpringBoot 的 Web 类型推断吗?

2022-12-26

用了这么多年的 SpringBoot 那么你知道什么是 SpringBootweb 类型推断吗?

估计很多小伙伴都不知道,毕竟平时开发做项目的时候做的都是普通的 web 项目并不需要什么特别的了解,不过抱着学习的心态,阿粉今天带大家看一下什么是 SpringBootweb 类型推断。

Java 中的接口还可以这样用,你知道吗?

2022-11-23

Java 程序员都知道要面向接口编程,那 Java 中的接口除了定义接口方法之外还能怎么用你知道吗?今天阿粉就来带大家看一下 Java 中的接口还可以有哪些用法。 基本特性 我们先看一下接口的基本特性 接口的定义需要使用关键字 interface; 接口定义的所有方法默认都是 public abstract; 当一个具体的 class 去实现一个 interface时,需要使用 implements 关键字; 接口之间是可以多继承,而类是只能单继承的; 如下所示,我们定义一个接口 package com.example.demo.inter; import java.io.Serializable; import java.util.RandomAccess; /** * <br> * <b>Function:</b><br> * <b>Author:</b>@author java 极客技术<br> * <b>Date:</b>2022-09-24 17:38<br&gt....

Java 中如何加密配置文件中的数据库账号和密码

2022-04-17

作为程序员每天的开发工作都离不开跟数据库打交道,而且我们的应用程序往往都会配置数据库的链接,那你有没有想过,任何一个能接触到我们项目代码的人员,都可以看到配置文件里面的账号秘密? 相信很多人的项目里面配置文件都是类似这样写的 ############### Mysql配置 ######################### spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/abc?useUnicode=true&amp;characterEncoding=utf-8&amp;useTimezone=true&amp;serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=123456 sprin....

关于 Java 的可变参数你真的了解吗?

2022-04-17

我们都知道 Java 支持可变参数的形式定义方法,这种语法糖在某些时候可以简化我们的代码,但是关于可变参数是如何实现的以及其他的更多细节,你真的知道吗?今天阿粉就带你来了解一下。 可变参数方法的定义 首先看下可变参数方法在代码上是如何定义的,如下所示: public static void method1(Integer id, String... names) {       System.out.println("id:" + id + " names:" + names.length); } 通过上面的示例,我们可以看出在定义方法时,在最后一个形参类型后加上三点 …,就表示该形参可以接受多个相同类型的参数值,多个参数值被当成数组传入。这里我们需要注意几个点: 可变参数只能作为函数的最后一个参数,在其前面可以有也可以没有任何其他参数; 由于可变参数必须是最后一个参数,所以一个函数最多....

我与微笑哥以及 Java 极客技术的前世今生

2019-10-06

Hello,大家好,我是子悠,Java 极客技术团队的作者之一,细心的读者可能早就知道我,看过我写的几篇文章,没注意过的也没关系,因为后面我们还会经常见面。首先关于 Java 极客技术公众号的介绍可以去看文章搞事情,今天这篇文章主要想跟大家分享一下我是如何跟微笑哥以及 Java 极客技术团队结缘的。 相信很多人跟我一样,知道微笑哥都是从学习 SpringBoot 开始的。遥想起当年青涩荡漾意气风发在网上找着 SpringBoot 的学习资料,看着微笑哥的 SpringBoot 系列文章,一步步从初识 SpringBoot 到渐渐的熟悉掌握,再到现在的必备技能;从 1.x 到现在的 2.x,一点一滴的积累学习。 那么我是如何认识微笑哥以及到加入 Java 极客技术作者团队的呢?这一切都要从关注公众号《纯洁的微笑》和加入微笑哥的知识星球《微笑和他的朋友们》说起,清晰的记得那是在 2017 -11-23 花了 66 元以排名第 57 名加入了微笑哥的第一个知识星球,从此跟微笑就结下了不解之缘。刚开始大家都是在星球上分享技术,解决问题,进行思想碰撞,互相推荐好的开源项目以及一些自己觉得不错的问....

怎么让你的 Java 技术变得牛逼

2019-09-26

​ 每个Java技术人员心里多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。 第一:心态 其实最大的困难是在于克服自己。只要你有恒心,学好Java并不难。就算你没有基础,没有经验,没有任何概念。可是即使是发明Java的人,发明计算机的人在起初也是一张白纸。 他们也是不断琢磨,不断学习和实践才出结果的。所有的Java高手都是从什么也不会学到什么都会的。兴趣很重要,只要你有兴趣,就会发现学习Java和打篮球一样简单。 第二:学习方法 掌握好的学习方法,就是事半功倍的效果。很多同学在写代码的时候,都是照葫画瓢,没有自己半点的理解,往往是把从书上背下来的再全堆上去。这样写着写着就没有了思路,这是缺少编程思想的原因。所以说,理解最重要。一旦建立起编程思想,有了自己的想法,写东西自然就会容易多了! 第三:坚持 Java刚开始的时候相对还是简单一些,大家都还有学习的积极性。越到后面越难,很多人开始打退堂鼓,甚至产生想要放弃的念头。这和爬山是一个道理,你都快到山顶了,肯定是走不动了,但是如果再坚持一下下,就会看到胜利的日出。 推....

聊聊面试中的 ThreadLocal 原理和使用场景

2019-05-12

相信大家不管是在网上做题还是在面试中都经常被问过 ThreadLocal 的原理和用法,虽然一直知道这个东西的存在但是一直没有好好的研究一下原理,没有自己的知识体系。今天花点时间好好学习了一下,分享给有需要的朋友。 ThreadLocal 是什么 ThreadLocal 是 JDK java.lang 包中的一个用来实现相同线程数据共享不同的线程数据隔离的一个工具。 我们来看下 JDK 源码中是如何解释的: This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has its own, independently initialized copy of the variable. ThreadLocal instances are typically private static fields in classes ....

聊聊面试中的 Java 线程池

2019-04-29

背景 关于 Java 的线程池我想大家肯定不会陌生,在工作中或者自己平时的学习中多多少少都会用到,那你真的有了解过底层的实现原理吗?还是说只停留在用的阶段呢?而且关于 Java 线程池也是在面试中的一个高频的面试题,就像 HashMap 的实现原理一样,基本上面试必问,估计都已经被问烂大街了。 题外话:HashMap 的实现原理真的已经被问烂了,在我自身的多次面试中都不知道被问了几遍了,有的时候想想很奇怪,为什么这个被问的烂大街的问题还是会一直被问呢?但是从面试官的角度来想一下,如果一个被问的都烂大街的问题你都不好好准备对待,那怎么能好好的对待工作呢(个人愚见)。 常用的几种线程池 我们先来看下常用的几种线程池的创建方式,以及底层采用的实现原理 单个线程: Executors.newSingleThreadExecutor(); public static ExecutorService newSingleThreadExecutor() { return new FinalizableDelegatedExecutorService (new ThreadPoolExecutor(....