Java1.8的HashMap源码解析

java1.8是现在用的最多的版本,hashmap是现在用的最多的map,今天我们试图分析一下源码。 数据结构 首先我们注意到数据是存放在一个Node数组里面 接着我们看一下Node的结构 我们注意到这是一个单链表,next指向下一个节点。 get方法 接着我们看一下get(Object key)方 ... »

阿里架构师的日志:带你快速理解微服务架构;理解微服务架构的核心

什么是微服务 首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务。 传统的WEB应用核心分为业务逻辑、适配器以及API或通过UI访问的WEB界面。业务逻辑定义业务流程、业务规则以及领域实体。适配器包括数据库访问组件、消息组件以及访问接口等。 ... »

LinkedHashMap 底层分析

众所周知 HashMap 是一个无序的 Map,因为每次根据 key 的 hashcode 映射到 Entry 数组上,所以遍历出来的顺序并不是写入的顺序。 ... »

MyBatis 源码分析系列文章导读

1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章。本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说明和演示。由于文章的篇幅比较大,这里特地拿出一章用于介绍本文的结构和内容。那下面我们来看一下本文的章 ... »

Java环境变量配置详解-懂你的人

我的是win10系统,其他系统也差不多,相信你能找到环境配置页面。 1. 添加JAVA_HOME,值为jdk的路径,如C:Program FilesJavajdk1.8.0_171,你要换成自己的路径。那么 JAVA_HOME是什么意思,它就是一个变量。跟Java里的变量是一样的意思,后面用的 ... »

java之接口开发-初级篇

简述:转眼之间已经开发java有五年之余了,从以前的刚刚接触电脑,到现在的公司上班,真是转眼之间呀!前两年开发过前端,后台和Android,Android火的那几年,差点转去做Android,哈哈!后面三年慢慢接触接口,做接口需要有一定的java基础,不需要很深,现在很多同行业的公司都有接口端。接口 ... »

ReentrantLock 实现原理

使用 synchronize 来做同步处理时,锁的获取和释放都是隐式的,实现的原理是通过编译后加上不同的机器指令来实现。 而 ReentrantLock 就是一个普通的类,它是基于 AQS(AbstractQueuedSynchronizer)来实现的。 是一个重入锁:一个线程获得了锁之后仍然可... ... »

Java设计模式学习记录-桥接模式

前言 这次介绍结构型设计模式中的第二种模式,桥接模式。 使用桥接模式的目的就是为了解耦,松散的耦合更利于扩展,但是会增加相应的代码量和设计难度。 桥接模式 桥接模式是为了将抽象化与实现化解耦,让二者可以独立地变化。方便对每一部分的扩展,以及单独的维护。抽象化的一方与实现化的一方之间建立一个桥梁,这样 ... »

JAVA数据结构之红-黑树

本篇博客我会重点介绍对红-黑树的理解,重点介绍红-黑树的查找,这里我们将要讨论的算法称为自顶向下插入,也就是把沿着树向下查找插入点 Ⅰ、平衡树和非平衡树 平衡树和非平衡树:当插入一组数据关键字是按照升序或者降序插入的话此时就是集中最极端的不平衡树,此时也可看做是一个链表此时对于此树的查找的时间复杂度 ... »

分享一些 Java 后端的个人干货

学习 Java 也有了不少时间,入 Java 后台的坑也有了一段时日。这段时间里,听过许多前辈的经验与分享,也看过许多大佬的文章和作品。找了个时间整理和总结了一下我个人到目前为止一路以来的听到看到或者自己感悟到的干货。 这篇文章可能更多的是面对初学者,当然,只要有人看了我的这篇文章后能有所收获,我就 ... »

Java异常实践事项

在大学项目开发中, 你有没发现自己做的项目总是出现bug,不仅仅出现bug,而且很难根据异常信息找到异常源。我当时也是非常懊恼, 可怕的是不知道怎么维护... 软件Java异常需要理解基础的知识, 在实战中较好的处理异常。Java异常基础知识 、tryCatchFinally语句块 本节总结Java ... »

浅谈Java堆内存分代回收

概述 与C++不同的是:在Java中我们无需关心对象占用空间的释放,这主要得益于Java中的垃圾处理器(简称GC)帮助我们自动的进行对象占用空间的释放。 下面我们带着几个问题来学习: 1、堆内存是如何分代的? 用一张图片来描述(面积大小不代表实际占用空间大小) 堆内存分为:年轻代(Young) +  ... »

Java数据结构和算法 - 递归

Q: 什么是三角数学? A: 据说一群在毕达哥拉斯领导下工作的古希腊的数学家,发现了在数学序列1,3,6,10,15,21,……中有一种奇特的联系。这个数列中的第N项是由第N-1项加N得到的。 由此,第二项是由第一项(1)加上2,得3。第三项是由第二项(3)加上3得到6,依次类推。 这个序列中的数字 ... »

1.初始Quartz(一)

开发工具:STS 代码下载链接:https://github.com/theIndoorTrain/QuartzDemo.git 前言: 接触一个新事物的开始,我们都会产生一些疑问: Quartz是什么? Quartz是用来做什么的? 答: Quartz是一个任务调度框架。说明白点,就是定制任务的。 ... »