自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

凡是过往,皆为序章

Yesterday is a history, tomorrow is a mystery.

  • 博客(35)
  • 收藏
  • 关注

转载 几张动态图清晰展示常用数据结构及其设计原理

最近在整理数据结构方面的知识,系统化看了下Java中常用数据结构,突发奇想用动画来绘制数据流转过程。主要基于jdk8,可能会有些特性与jdk7之前不相同,例如LinkedList LinkedHashMap中的双向列表不再是回环的。HashMap中的单链表是尾插,而不是头插入等等,后文不再赘叙这些差异,本文目录结构如下:排序算法详情及动图请点击进入...

2019-04-30 16:21:13 1060

转载 还在为面试发愁吗?这里有动态图解十大经典排序算法。

之前的一篇几张动态图清晰展示常用数据结构及其设计原理发出来之后反响不错,这次来个动图排序算法大全。数据结构与算法,算是齐了!本文将采取动态图 + 文字描述 + Java代码实现来讲解以下十大排序算法: 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序...

2019-04-30 16:18:15 291

转载 【斩获7枚offer,入职阿里平台事业部】横扫阿里、美团、京东、 去哪儿之后,写下了这篇面经!

自身情况跳槽之前,楼主在一个小型互联网公司,主要是做互联网彩票。其中做过面向用户的APP,也有o2o模式的,也有b2b模式的的项目,用的技术比较杂,没有指定的规范,只要能完成任务就可以,技术挑战也不是很大。然后我只能把我所做的东西做好,推动一些新技术更是难上加难,主要都是业务为主,对于高并发、高可用等技术方案犹如天上月亮一样,只可远观,而不可亵玩焉。然而去年10月,国家发布新的法律...

2019-04-30 16:06:25 821

转载 Java并发阻塞队列--BlockingQueue

目录一、什么是BlockingQueue二、BlockingQueue的用法三、BlockingQueue接口中的方法四、BlockingQueue的实现类4.1 ArrayBlockingQueue4.2 DelayQueue4.3 LinkedBlockingQueue4.4 PriorityBlockingQueue4.5 SynchronousQue...

2019-04-30 15:26:50 456

转载 Java多线程--让主线程等待子线程执行完毕(CountDownLatch类)

java.util.concurrent.CountDownLatch使用Java多线程编程时经常遇到主线程需要等待子线程执行完成以后才能继续执行,那么接下来介绍一种简单的方式使主线程等待。CountDownLatch是一个同步辅助工具,用于使一个或多个线程等待(即阻塞)知道一组在其他线程中的任务结束。 CountDownLatch必须用给定的count(一个int类型的大于等于0...

2019-04-30 10:50:22 4209

转载 SpringBoot引入第三方jar包或本地jar包的处理方式

在开发过程中有时会用到maven仓库里没有的jar包或者本地的jar包,这时没办法通过pom直接引入,那么该怎么解决呢一般有两种方法第一种是将本地jar包安装在本地maven库 第二种是将本地jar包放入项目目录中这篇文章主要讲第二种方式,这又分两种情况,一种是打包jar包,第二种是打包war包jar包先看看jar包的结构用压缩工具打开一个jar包打...

2019-04-26 10:45:43 2547

转载 八点建议助您写出优雅的Java代码

目录1.使用 IntelliJ IDEA 作为您的集成开发环境 (IDE)2.使用 JDK 8 或更高版本3.使用 Maven/Gradle4.使用 Lombok5.编写单元测试6.重构:常见,但也很慢7.注意代码规范8.定期联络客户,以获取他们的反馈总结在每一位刚入行的程序员的心中,编写程序都是一门神圣的艺术创作。他们无不希望自己的代码作品既简洁清晰,又可...

2019-04-25 20:07:27 356

转载 ConcurrentHashMap源码分析

目录1. ConcurrentHashMap有哪些成员变量?2. 分段锁的内部结构是怎样的?3. ConcurrentHashMap初始化时做了些什么?4. 通过怎样的方式来定位锁和定位元素?5. 查找元素具体是怎样实现的?6. 插入元素具体是怎样实现的?7. 删除元素具体是怎样实现的?8. 替换元素具体是怎样实现的?9. 自旋时具体做了些什么?10. 哈希...

2019-04-25 20:02:03 128

转载 漫话:如何给女朋友解释什么是乐观锁与悲观锁

目录并发控制悲观锁乐观锁悲观锁实现方式乐观锁实现方式最近,我和女朋友商量好,我负责制定行程,她负责购买出行用品。相安无事,我正在各家比价中,不知道发生了什么,女朋友买买买竟然不高兴了。并发控制在《如何给女朋友解释什么是并发和并行》一文中我们介绍过并发和并行。当程序中可能出现并发的情况时,我们就需要通过一定的手段来保证在并发情况下数据的准...

2019-04-25 19:41:43 210

转载 想要去阿里面试?你必须得知道JVM-运行时数据区!

目录概述区域划分程序计数器Java虚拟机栈Java堆内存方法区 / Metaspace本地方法栈堆外内存总结概述很多人想要到阿里巴巴、美团、京东等互联网大公司去面试,但是现在互联网大厂面试一般都必定会考核JVM相关的知识积累和实践经验,毕竟线上系统写好代码部署之后,每个工程师都必须关注JVM相关的东西,比如OOM、GC等问题.所以一起来看看JVM的最...

2019-04-25 17:33:49 426

转载 分布式Session共享解决方案

目录分布式Session解决方案分布式Session一致性?Session的作用?分布式Session存在的问题?解决方案:分布式Session解决方案分布式Session一致性?说白了就是服务器集群Session共享的问题Session的作用?Session 是客户端与服务器通讯会话跟踪技术,服务器与客户端保持整个通讯的会话基本信息。客户端在第一次访问...

2019-04-25 17:00:59 146

原创 图片与Base64之间的互相转换

一定要引入import java.util.Base64包,不然会有问题import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.*;import java.net.HttpURLConnection;import java.net.URL;import java.util.Base64;/**...

2019-04-23 15:41:30 1794

转载 线程本地ThreadLocal的介绍与使用以及与synchronized的对比

ThreadLocal简介我们通过上两篇的学习,我们已经知道了变量值的共享可以使用public static变量的形式,所有的线程都使用同一个被public static修饰的变量。那么如果我们想实现每一个线程都有自己的共享变量该如何解决哪?JDK提供的ThreadLocal正是为了解决这样的问题的。类ThreadLocal主要解决的就是每个线程绑定自己的值,可以将ThreadLoc...

2019-04-22 11:19:09 150

转载 线程本地变量ThreadLocal

目录ThreadLocal理解:ThreadLocal解决的问题:ThreadLocal的使用场景:ThreadLocal主要方法:ThreadLocal源码分析:get方法:getMap(t)方法:​setInitialValue()方法和initialValue()方法:createMap(t, value):​set(T value)方法:Thre...

2019-04-22 11:01:25 779

转载 给你一份Spring Boot核心知识清单

目录一、抛砖引玉:探索Spring IoC容器1.1、Spring IoC容器1.2、Spring容器扩展机制二、夯实基础:JavaConfig与常见Annotation2.1、JavaConfig2.2、@ComponentScan2.3、@Import2.4、@Conditional2.5、@ConfigurationProperties与@EnableCo...

2019-04-18 19:23:55 160

转载 Java并发编程中的若干核心技术,向高手进阶!

引言本文试图从一个更高的视角来总结Java语言中的并发编程内容,希望阅读完本文之后,可以收获一些内容,至少应该知道在Java中做并发编程实践的时候应该注意什么,应该关注什么,如何保证线程安全,以及如何选择合适的工具来满足需求。当然,更深层次的内容就会涉及到JVM层面的知识,包括底层对Java内存的管理,对线程的管理等较为核心的问题,当然,本文的定位在于抽象与总结,更为具体而深入的内容就需要...

2019-04-17 20:03:56 164

转载 教你如何监控 Java 线程池运行状态

之前写过一篇 Java 线程池的使用介绍文章《线程池全面解析》,全面介绍了什么是线程池、线程池核心类、线程池工作流程、线程池分类、拒绝策略、及如何提交与关闭线程池等。但在实际开发过程中,在线程池使用过程中可能会遇到各方面的故障,如线程池阻塞,无法提交新任务等。如果你想监控某一个线程池的执行状态,线程池执行类 ThreadPoolExecutor 也给出了相关的 API, 能实时获取线程池的...

2019-04-17 19:59:21 4357

转载 关于【缓存穿透、缓存击穿、缓存雪崩、热点数据失效】问题的解决方案

正好这位同学面试前学习了笔者之前出的一套Java面试突击教程,里面就涉及到了关于缓存的一些问题。这篇文章,是这位同学对自己阿里一面的总结,大家可以参考一下,同时也感谢乔二爷同学的分享。1 前言昨天晚上接到阿里的电面电话,过程中就问到了关于缓存相关的问题。虽然以前接触过,多多少少了解了一些。但是之前自己并没有好好记录这些内容,在真正面试的时候,并没有回答得出来。今天记录一下,长长记性...

2019-04-17 19:24:28 254

转载 Java集合必会14问(精选面试题整理)

目录1)说说常见的集合有哪些吧?2)HashMap与HashTable的区别?3)HashMap的put方法的具体流程?4)HashMap的扩容操作是怎么实现的?5)HashMap是怎么解决哈希冲突的?什么是哈希?什么是哈希冲突?HashMap的数据结构hash()函数JDK1.8新增红黑树总结6)HashMap为什么不直接使用hashCode()处...

2019-04-17 14:39:36 342

转载 40个java集合面试题目与答案整理

目录  1.Java集合框架是什么?说出一些集合框架的优点?  2.集合框架中的泛型有什么优点?  3.Java集合框架的基础接口有哪些?  4.为何Collection不从Cloneable和Serializable接口继承?  5.为何Map接口不继承Collection接口?  6.Iterator是什么?  7.Enumeration和Iterator接口的...

2019-04-17 14:30:56 631

转载 Java集合框架综述

目录一、集合框架图二、总体分析三、Collection接口1.List接口(1)ArrayList(2)LinkedList(3)Vector(4)Stack2.Set接口(1)HashSet(2)LinkedHashSet(3)TreeSet四、Map接口1.HashMap2.LinkedHashMap3.TreeMap五、It...

2019-04-17 13:27:38 302

转载 一条SQL语句在MySQL中如何执行的

本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的。目录一 MySQL 基础架构分析1.1 MySQL 基本架构概览1.2 Server 层基本组件介绍1) 连接器2) 查询缓存(MySQL 8.0 版本后移除)3) 分析器4) 优化器5) 执行器二 语句分析...

2019-04-11 16:12:45 199

转载 数据库并发控制,选择乐观锁还是悲观锁?

今天,在这里,我们将讨论的是在实际生产过程中,对于并发控制你是选择乐观锁还是悲观锁。这两种锁各自的应用环境应该怎样选择?实际生产环境里边,如果并发量不大,完全可以使用悲观锁定的方法,这种方法使用起来非常方便和简单。但是如果系统的并发非常大的话,悲观锁定会带来非常大的性能问题,所以就要选择乐观锁定的方法。悲观锁假定其他用户企图访问或者改变你正在访问、更改的对象的概率是很高的,因此在悲观锁...

2019-04-11 15:00:26 179

转载 Java中的锁原理、锁优化、CAS、AQS详解!

目录一、为什么要用锁?二、锁实现的基本原理2.1、volatile2.2、synchronized2.2.1 synchronized实现原理2.2.2 synchronized具体实现2.2.3 锁存放的位置2.2.3 synchronized的锁优化2.2.4 锁的优缺点对比2.3、CAS三、Java中的锁实现3.1、队列同步器(AQS)3....

2019-04-10 10:28:53 414

转载 Synchronized 有几种用法?

目录1、同步普通方法2、同步静态方法3、同步类4、同步this实例5、同步对象实例我们都知道 Synchronized 是线程安全同步用的,大部分程序可能只会用到同步方法上面。其实 Synchronized 可以用到更多的场合,栈长列举了以下几个用法。1、同步普通方法这个也是我们用得最多的,只要涉及线程安全,上来就给方法来个同步锁。这种方法使用虽然最简单,但是只能作...

2019-04-10 10:20:23 190

转载 Spring Boot 面试,一个问题就干趴下了!

最近栈长面试了不少人,其中不乏说对 Spring Boot 非常熟悉的,然后当我问到一些 Spring Boot 核心功能和原理的时候,没人能说得上来,或者说不到点上,可以说一个问题就问趴下了!这是我的问题:我看你上面写了熟悉 Spring Boot,那你能讲下为什么我们要用 Spring Boot 吗?下面我列几个最常见的三个回答:A:Spring Boot 最主要是不用 XML...

2019-04-10 10:02:20 578 1

转载 听说又被 JVM 内存区域方面的面试题给虐了?看看这篇文章吧!

目录一 概述二 运行时数据区域2.1 程序计数器2.2 Java 虚拟机栈2.3 本地方法栈2.4 堆2.5 直接内存三 HotSpot 虚拟机对象探秘3.1 对象的创建3.2 对象的内存布局3.3 对象的访问定位四 重点补充内容String 类和常量池1、String 对象的两种创建方式2、String 类型的常量池比较特殊。它的主要使...

2019-04-08 16:28:15 1364 2

转载 面试官:你分析过线程池源码吗?

目录为什么要用线程池?如何创建使用线程池?1.(newFixedThreadPool)创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。2.(newWorkStealingPool)(JDK8新增)会根据所需的并发数来动态创建和关闭线程。能够合理的使用CPU进行对任务进行并发操作,所以适合使用在很耗时的任务。3.(newCachedThreadPool)创建一...

2019-04-08 16:14:13 265

转载 微服务架构之「 服务注册 」

微服务架构是一个庞大复杂的工程,为什么说它庞大复杂呢?因为想要做好微服务,就必须先要建设好微服务所需的一系列基础设施和组件。我在前面的文章《架构设计之「 微服务入门 」》中已经初步介绍过了这些组件,包括:服务注册、服务网关、配置中心、服务框架、服务监控、服务追踪、服务治理等。只有将这些基础设施搭建完善了,微服务实践的道路才能走的稳、走的远。后面的文章中会依次把每一个基础组件都详细分析一下。今...

2019-04-08 15:58:07 247 1

转载 最近面试 Java 后端开发的感受!

上周,密集面试了若干位Java后端候选人,工作经验在3到5年间。我的标准其实不复杂(适用90%小小小公司,BAT等自动忽略):第一能干活,第二Java基础要好,第三最好熟悉些分布式框架。我相信其它公司招初级开发时,应该也照着这个标准来面的。我也知道,不少候选人能力其实不差,但面试时没准备或不会说,这样的人可能在进团队干活后确实能达到期望,但可能就无法通过面试,但面试官总是只根据面试情况...

2019-04-03 17:37:17 383 1

转载 【架构师成长必备】如何阅读一个开源项目的源码?

目录前言1 从最简单的源码开始:别幻想一步登天2 循序渐进:先搞定底层依赖的技术3 一定要以Hello World作为入口来阅读4 抓大放小,边写注释边画图5 反复三遍:真正理解源码6 借力打力:参考源码分析书籍及博客7 最后寄语:用几年时间锻造自己的核心技术前言这篇文章,给大家简单介绍一下很多同学都非常关心的一个问题:如何阅读一个开源项目的源码。我...

2019-04-03 17:17:27 377

转载 搞不懂分布式事务?看这篇就够了

前言不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付。又或者在网上购物明明已经扣款,但是却告诉我没有发生交易。事实上,上面所描述的这一系列情况都是因为没有事务导致的。这说明了事务在生活中的一些重要性。有了事务,你去小卖铺买东西,那就是一手交钱一手交货。有了事务,你去网上购物,扣款即产生订单交易。事务的具体定义事务提供...

2019-04-02 17:06:08 253

转载 微服务架构设计之「 微服务入门 」

微服务这几年不可谓不火,很多技术团队都开始在自己的项目上引入了微服务。一方面这些团队确实很好的推动了微服务的应用和发展,另一方面也可以看到一些盲目追技术热点的行为所带来的危害,比如很多中小团队对微服务的基础知识只是做了很浅显的了解就开始盲目的推动微服务的实施,最后导致了项目的失败。微服务要想做好是一个非常复杂的架构,今天就先只聊一聊微服务的一些基础架构,算是入门篇。一、什么是「 微服务 」...

2019-04-02 16:28:47 154

转载 JUC 中的 Atomic 原子类总结

目录​1. 介绍一下Atomic 原子类2. JUC 包中的原子类是哪4类?2 基本类型原子类2.1 基本类型原子类介绍2.2 AtomicInteger 常见方法使用2.3 基本数据类型原子类的优势2.4 AtomicInteger 线程安全原理简单分析3 数组类型原子类3.1 数组类型原子类介绍3.2 AtomicIntegerArray 常见方法使用...

2019-04-01 20:00:54 781

转载 线程池ThreadPool

目录1. 为什么要用线程池?2. 实现Runnable接口和Callable接口的区别3. 执行execute()方法和submit()方法的区别是什么呢?4. 如何创建线程池1. 为什么要用线程池?线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。这里借用《Java并发编程的艺术》提到的来说一下使用线程池...

2019-04-01 19:52:12 222

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除