首页
学习
活动
专区
工具
TVP
发布

Vi的技术博客

专栏作者
104
文章
54035
阅读量
30
订阅数
面试官:五问注解你怕了吗?
而在 Java 中,简单通俗的讲,就是一个标签,对类、方法、变量的一个解释说明,在早些年,我们通常使用 xml 去对我们的代码进行增强的解释,但是格式繁杂,代码可读性差,维护起来很困难,在 Java SE 5.0 以后,注解的出现为这种情况得到了改善,越来越多的开源项目开始使用注解,抛弃了 xml 。xml 就像一段代码的补充解释和说明,是一段单独的文档,比如我们 Spring 项目中使用 xml 配置 Bean 的作用域,而注解是写在代码旁边,对代码进行标记和进行进一步的解释。
山禾说
2020-11-05
3630
【两万字】面试官:听说你精通集合源码,接我二十个问题!
这个图由Map指向Collection的Produces并不是说Map是Collection的一个子类(子接口),这里的意思是指Map的KeySet获取到的一个视图是Collection的子接口。
山禾说
2020-07-24
5700
十问泛型,你能扛住吗?
使用泛型机制编写的代码要比那些杂乱的使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性,也就是说使用泛型机制编写的代码可以被很多不同类型的对象所重用。
山禾说
2020-07-24
9970
「给产品经理讲JVM」:垃圾收集算法
纠结的我,给我的JVM系列终于起了第三个名字,害,我真是太难了。从 JVM 到 每日五分钟,玩转 JVM 再到现在的给产品经理讲 JVM ,虽然内容为王,但是标题可以让更多的人看到我的文章,所以,历经了三个选题,最终定下来了这个。
山禾说
2020-03-31
3390
「Offer收割机之JVM」:引用是个什么鬼
这两天,广州的天气又开始热了起来,又到了小动物交配的季节,啊呸,又到了一个收割 offer 的季节。年底将至,又到了面试的高峰期,JVM 作为Java 程序员面试绕不过的一道坎儿,它又来了,你准备好了吗?
山禾说
2020-01-15
3430
「每日五分钟,玩转JVM」:指针压缩
最初的时候,JVM是32位的,但是随着64位系统的兴起,JVM也迎来了从32位到64位的转换,32位的JVM对比64位的内存容量比较有限,但是我们使用64位虚拟机的同时,也带来了一个问题,64位下的JVM中的对象会比32位中的对象多占用1.5倍的内存空间,这是我们不想看到的(又要马儿跑,又要马儿不吃草可还行?),但是机智的程序员不会屈服,所以在JDK 1.6的版本后,我们在64位中的JVM中可以开启指针压缩(UseCompressedOops)来压缩我们对象指针的大小来帮助我们节约内存空间,拿JDK 8来说,这个指令是默认开启的。
山禾说
2019-12-02
6620
「Java Grammar」:运算符
计算机自打诞生以来,用作最多的就是进行计算,而计算离不开运算符,所以运算符在我们的Java语言中的地位举足轻重,我们现在就来了解一下Java给我们提供的运算符。
山禾说
2019-09-16
7040
「每日五分钟,玩转JVM」:对象哪里来
众所周知,Java是一门面向对象的高级编程语言,那么现在问题来了,对象从哪来呢?有些人会说通过new关键字来创建一个对象,说的很好,本篇我们就来解密在new一个对象的过程中,JVM都给我们做了什么工作。
山禾说
2019-09-04
3020
Java基础系列(四十六):Set & AbstractSet
Set继承了 Collection接口,它本身也是一个接口,代表一种不能拥有重复元素的容器类型,更确切的说,集合不包含一对元素 e1和 e2 ,使得 e1.equals(e2) 。
山禾说
2019-08-21
4930
Java基础系列(四十三):集合之Vector&Stack
Vector是一种实现了动态数组的集合,何为动态数组呢?即长度可以自动增长的数组,它是线程同步的,也就是说同一时刻只有一个线程可以写Vector,可以避免多线程同时写引起的不一致性,但是比较消耗资源。接下来,我们来看Vector的源码。
山禾说
2019-08-21
3250
每日五分钟,玩转JVM(三):线程独占区
如果我们对计算机组成有所了解,那么我们一定会知道在计算机中有一块儿特殊的区域,称之为寄存器,寄存器包括了指令寄存器和程序计数器,这两样位于CPU中,作为程序运行的大脑来控制程序的运行和流转。
山禾说
2019-08-21
4060
Java Grammar:数据类型
我们知道,Java是一种 强类型 语言,类型对于Java语言来说非常的重要不言而喻,在Java中,分为 基础数据类型 和 引用数据类型 ,其中基础数据类型分为了 四类八种:
山禾说
2019-08-08
5540
JVM(一):久识你名,初居我心
JVM,一个熟悉又陌生的名词,从认识Java的第一天起,我们就会听到这个名字,在参加工作的前一两年,面试的时候还会经常被问到JDK,JRE,JVM这三者的区别。
山禾说
2019-07-30
3040
Spring Boot 2.x(十一):AOP实战--打印接口日志
在我们日常的开发过程中,我们可以通过接口日志去查看这个接口的一些详细信息。比如客户端的IP,客户端的类型,响应的时间,请求的类型,请求的接口方法等等,我们可以对这些数据进行统计分析,提取出我们想要的信息。
山禾说
2019-03-21
1.1K0
Spring Boot 2.x(八):日志框架的使用
最初我们开始接触Java的时候,我们通常会使用System.out.println()将我们想要知道的信息打印到控制台。 但是,如果在服务器上我们去运行我们的Java程序,这个时候就凸显了日志对于一个系统来说的重要性,查找异常信息、分析系统运行情况等都需要用到日志。
山禾说
2019-01-21
4770
Java基础系列(四十一):集合之List
List是继承自Collection的一个子接口,它提供了一个有序的集合,在这个集合中我们可以使用索引去获取集合中的值,同时,我们也可以通过迭代器去访问集合中的元素,第一种方法被称为随机访问,因为我们可以按照任意的顺序去访问元素,而使用迭代器就必须顺序的去访问元素。
山禾说
2019-01-21
3280
Java基础系列(四十二):集合之AbstractList
AbstractList是实现List接口的一个抽象类,它的地位之与List类似于AbstractCollection之与Collection,同事,AbstractList继承了AbstractCollection,并针对List接口给出了一些默认的实现。而且它是针对随机访问储存数据的方式的,如果需要使用顺序访问储存数据方式,还有一个AbstractSequentialList是AbstractList的子类,顺序访问时应该优先使用它。
山禾说
2019-01-21
1K0
Java基础系列(四十三):集合之Vector&Stack
Vector是一种实现了动态数组的集合,何为动态数组呢?即长度可以自动增长的数组,它是线程同步的,也就是说同一时刻只有一个线程可以写Vector,可以避免多线程同时写引起的不一致性,但是比较消耗资源。接下来,我们来看Vector的源码。
山禾说
2019-01-21
2990
Java基础系列(四十四):集合之ArrayList
ArrayList与Vector非常相似,他们都是基于数组实现的集合,都可以动态扩容,只不过Vector是同步的,所需的资源较多,而且比较老,有一些缺点,所以我们现在更多的是去使用ArrayList,而不是Vector。下面,我们在阅读源码的过程中遇到的一些问题对ArrayList进行分析。
山禾说
2019-01-21
4160
Java基础系列(四十五):集合之Map
Map是一个接口,代表的是将键映射到值的对象。一个映射不能包含重复的键,每个键最多只能映射到一个值。
山禾说
2019-01-21
5960
点击加载更多
社区活动
Python精品学习库
代码在线跑,知识轻松学
【玩转EdgeOne】征文进行中
限时免费体验,发文即有奖~
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品·最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档