面试官:注解五问你怕了吗?

2020-11-04
阅读 4 分钟
2.5k
而在 Java 中,简单通俗的讲,就是一个标签,对类、方法、变量的一个解释说明,在早些年,我们通常使用 xml 去对我们的代码进行增强的解释,但是格式繁杂,代码可读性差,维护起来很困难,在 Java SE 5.0 以后,注解的出现为这种情况得到了改善,越来越多的开源项目开始使用注解,抛弃了 xml 。xml 就像一段代码的补充解...

【两万字】面试官:听说你很懂集合源码,接我二十道问题!

2020-06-28
阅读 40 分钟
1.9k
这个图由Map指向Collection的Produces并不是说Map是Collection的一个子类(子接口),这里的意思是指Map的KeySet获取到的一个视图是Collection的子接口。

「山禾说成长」:写作?写作!

2020-05-25
阅读 2 分钟
1.3k
写是体力劳动,作是脑力劳动,接受过一定文化水平的人,一般都可以做到写,比如日记,一则简单的故事,但是作却不是所有人都可以做到的事情,需要经过大量的思考和提炼,看到的事务背后的本质,所谓词不达意,或许就是描述写手和作家的最大区别。

「给产品经理讲JVM」:垃圾收集算法

2020-04-13
阅读 4 分钟
1.1k
纠结的我,给我的JVM系列终于起了第三个名字,害,我真是太难了。从 JVM 到 每日五分钟,玩转 JVM 再到现在的给产品经理讲 JVM ,虽然内容为王,但是标题可以让更多的人看到我的文章,所以,历经了三个选题,最终定下来了这个。

「 Offer收割机之JVM」:生存还是毁灭

2020-03-27
阅读 4 分钟
1k
这两天,广州的天气又开始热了起来,又到了小动物交配的季节,啊呸,又到了一个收割 offer 的季节。年底将至,又到了面试的高峰期,JVM 作为Java 程序员面试绕不过的一道坎儿,它又来了,你准备好了吗?

「每日五分钟,玩转JVM」:两种算法

2020-03-25
阅读 1 分钟
1.3k
引用计数法的原理很简单,就是在对象中维护一个计数器,当有一个对象引用它的时候,该计数器的值就会加一,当这个引用失效的时候,计数器的值就会减少一,当计数器的值为零的时候,就意味着这个对象是一个垃圾对象,需要被 GC 回收,这个算法是一个比较高效的算法,但是会存在一种对象循环引用导致内存泄露的问题,什么...

「每天五分钟,玩转 JVM」:对象访问定位

2020-03-23
阅读 1 分钟
906
在「对象内存布局」一节中,我们了解到对象头中包含了一个叫做类型指针的东西,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。但是,并不是所有的虚拟机都是这么去做的。不同的虚拟机关于这点有不同的实现,目前主流的方式可以分为句柄和直接指针

Java 基础(六):循环

2020-03-20
阅读 3 分钟
1.5k
循环 老生常谈的一个控制流程了,我们在是使用数组和集合的时候,遍历元素的时候经常会用到循环的结构,Java具有非常灵活的三种循环机制: 根据是否知道循环的次数可以为分为while循环,do...while循环和for循环,下面我们单独来了解一下: while循环 当我们不知道循环的具体次数时,可以使用while循环进行操作,下面是w...

Java基础(五):数组

2020-03-19
阅读 2 分钟
1.2k
当然,一般情况下我们更喜欢使用第一种方式来声明一个数组,因为它将类型与变量名分开,优化了代码的可读性。 刚刚我们只是声明了一个数组 a ,但是并没有将 a 初始化为一个真正的数组。

Java 基础(四):从面试题看String

2020-03-18
阅读 2 分钟
851
String类是由final修饰的,所以是无法被继承的,一旦创建了String对象,我们就无法改变它的值。因此,它是线程安全的,可以安全地用于多线程环境中。

Java Grammar(三):修饰符

2020-03-17
阅读 3 分钟
1.5k
修饰符是用于限定类型以及类型成员申明的一种符号,从修饰对象上可以分为类修饰符,方法修饰符,变量修饰符;从功能上可以划分为访问控制修饰符和非访问修饰符。访问修饰符控制访问权限,不同的访问修饰符有不同的权限范围,而非访问修饰符则是提供一些特有功能。

Java Grammar(一):数据类型

2020-03-15
阅读 3 分钟
1k
我们知道,Java是一种强类型语言,类型对于Java语言来说非常的重要不言而喻,在Java中,分为基础数据类型和引用数据类型,其中基础数据类型分为了四类八种:

「每日五分钟,玩转JVM」:指针压缩

2020-01-07
阅读 2 分钟
2.1k
最初的时候,JVM是32位的,但是随着64位系统的兴起,JVM也迎来了从32位到64位的转换,32位的JVM对比64位的内存容量比较有限,但是我们使用64位虚拟机的同时,也带来了一个问题,64位下的JVM中的对象会比32位中的对象多占用1.5倍的内存空间,这是我们不想看到的(又要马儿跑,又要马儿不吃草可还行?),但是机智的程序员...

一份让你效率翻倍的年终总结

2020-01-02
阅读 9 分钟
3.3k
上半年在北京上海来回中来回漂泊度过,见过凌晨六点的北京,也见过午夜一点的上海,不止一次的一日辗转两千公里,早上五点从家出发去机场,晚上十二点到达高铁站然后打车回家。

「每日五分钟,玩转 JVM」:GC 概览

2019-11-15
阅读 2 分钟
1.2k
前言 GC(Garbage Collection)是我们在学习 JVM 的过程中不可避免的一道坎,接下来,我们就来系统的学习一下 GC。 做一件事情之前,我们一定要去知道我们为什么要去做,这里不仅仅指 GC,更适用我们日常的学习和生活,知其然,知其所以然,方能百战不殆。 下面我们先去了解为什么要有 GC,以及 GC 在 JVM 中扮演了一个...

「每日五分钟,玩转JVM」:对象的内存布局

2019-09-10
阅读 3 分钟
1k
一个对象根据不同情况可以被划分成两种情况,当对象是一个非数组对象的时候,对象头,实例数据,对齐填充在内存中三分天下,而数组对象中在对象头中多了一个用于描述数组对象长度的部分

「每日五分钟,玩转JVM」:对象从哪来

2019-09-04
阅读 2 分钟
836
众所周知,Java是一门面向对象的高级编程语言,那么现在问题来了,对象从哪来呢?有些人会说通过new关键字来创建一个对象,说的很好,本篇我们就来解密在new一个对象的过程中,JVM都给我们做了什么工作。

「每日五分钟,玩转JVM」:线程共享区

2019-08-29
阅读 2 分钟
1.1k
上一篇中,我们了解了JVM中的线程独占区,这节课我们就来了解一下JVM中的线程共享区,JVM中的线程共享区是跟随JVM启动时一起创建的,包括堆(Heap)和方法区()两部分,而线程独占区的程序计数器,虚拟机栈,本地方法栈的生命周期都是跟随线程的,随线程的创建而诞生,随线程的销毁而销毁。

「每日五分钟,玩转JVM」:线程独占区

2019-08-26
阅读 2 分钟
846
如果我们对计算机组成有所了解,那么我们一定会知道在计算机中有一块儿特殊的区域,称之为寄存器,寄存器包括了指令寄存器和程序计数器,这两样位于CPU中,作为程序运行的大脑来控制程序的运行和流转。

「每日五分钟,玩转JVM」:运行时数据区域概要

2019-08-22
阅读 2 分钟
1k
我们首先来认识一下JVM的运行时数据区域,如果说JVM是一个人,那么运行时数据区域就是这个人的骨架,它支撑着JVM的运行,所以我们先来学习一下运行时数据区域的分类和简单介绍。

「每日五分钟,玩转JVM」:JVM简介

2019-08-20
阅读 2 分钟
1.2k
JVM,一个熟悉又陌生的名词,从认识Java的第一天起,我们就会听到这个名字,在参加工作的前一两年,面试的时候还会经常被问到JDK,JRE,JVM这三者的区别。

Spring Boot 2.x (十八):邮件服务一文打尽

2019-08-15
阅读 5 分钟
2k
我们要做的其实就是把Java程序作为一个客户端,然后通过配置SMTP协议去连接我们所使用的发送邮箱(from)对应的SMTP服务器,然后通过SMTP协议,将邮件转投到目标邮箱(to)对应的SMTP服务器,最后将该邮件分发到目标邮箱

Spring Boot 2.x(十七):快速入门Elastic Search

2019-08-14
阅读 3 分钟
2.5k
Elasticsearch是一个基于Lucene的搜索服务器,Elasticsearch也是使用Java编写的,它的内部使用Lucene做索引与搜索,但是它的目的是使用全文检索变得简单,通过隐藏Lucene的复杂性,取而代之的提供一套简单一致的RESTful API。

Spring Boot 2.x(十六):玩转vue文件上传

2019-08-13
阅读 10 分钟
2.5k
最近用到了Vue + Spring Boot来完成文件上传的操作,踩了一些坑,对比了一些Vue的组件,发现了一个很好用的组件——Vue-Simple-Uploader

Spring Boot 2.x (十五):Dubbo + Zookeeper + 新版Dubbo Admin

2019-08-12
阅读 4 分钟
6.2k
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。

Spring Boot 2.x(十四):整合Redis,看这一篇就够了

2019-08-09
阅读 7 分钟
1.8k
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库(NoSQL)。

Spring Boot 2.x(十三):你不知道的PageHelper

2019-08-08
阅读 5 分钟
1.8k
说起PageHelper,使用过Mybatis的朋友可能不是很陌生,作为一款国人开发的分页插件,它基本上满足了我们的日常需求。但是,我想去官方文档看看这个东西配合Spring Boot进行使用的时候,发现了这个:

Spring Boot 2.x(十二):Swagger2的正确玩法

2019-08-07
阅读 5 分钟
3.2k
简单的来说,Swagger2的诞生就是为了解决前后端开发人员进行交流的时候API文档难以维护的痛点,它可以和我们的Java程序完美的结合在一起,并且可以与我们的另一开发利器Spring Boot来配合使用。

Spring Boot 2.x(十一):AOP实战--打印接口日志

2019-08-06
阅读 4 分钟
1.4k
在我们日常的开发过程中,我们可以通过接口日志去查看这个接口的一些详细信息。比如客户端的IP,客户端的类型,响应的时间,请求的类型,请求的接口方法等等,我们可以对这些数据进行统计分析,提取出我们想要的信息。

Spring Boot 2.x(十):构建优雅的RESTful接口

2019-08-05
阅读 3 分钟
2.9k
REST(Representational State Transfer)表述性状态转移是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML(标准通用标记语言下的一个子集)以及HTML(标准通用标记语言下的一个应用)这些现有的广泛流行的协...