自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jsbintask的博客

You move, your change. https://jsbintask.cn

原创 springboot整合springsecurity从Hello World到源码解析(五):springsecurity+jwt整合restful服务

上一章我们详细介绍了springsecurity的基础结构,并且在第三章我们已经知道了springsecurity中的基础配置,但是那是基于all in one模式的,前端页面和后端集成在一起,然而事实上现在越来越多的开发模式是前后端分离,后端提供的restful接口,那我们本章就来学习下springsecurity+jwt整合restful服务。springboot整合springse...

2019-01-21 15:29:13 406

原创 JVM中的对象以及内存管理

java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。

2018-07-07 21:35:40 261

原创 从未这么明白的设计模式(四):策略模式

本文原创地址:jsbintask的博客(食用效果最佳),转载请注明出处!前言策略模式是一种行为模式,它用以运行时动态的改变类的行为,通过将一系列类似的算法封装成不同的类来达到目的,可以有效减少代码中if else的冗余。它实现的关键是面向接口接口编程以及有一个算法切换者。它的优点是扩展性良好,可以自由切换策略。栗子周末天气不错,小明准备去爬武功山,于是他请教它的出行助手应该选择怎样...

2019-07-10 16:31:11 143

原创 从未这么明白的设计模式(三):装饰器模式

本文原创地址:jsbintask的博客(食用效果最佳),转载请注明出处!前言装饰器模式是为了运行时动态的扩展一个类的功能。它谨遵开闭原则,它实现的关键在于继承和组合的结合使用,解耦对象之间的关系。各种设计模式学习地址:https://github.com/jsbintask22/design-pattern-learning栗子首先我们列举一个案例,并且按照面向对象的思想来对应实...

2019-05-23 14:10:45 151

原创 神奇的Unsafe,你get了吗

本文原创地址,我的博客:https://jsbintask.cn/2019/05/05/jdk/jdk8-unsafe/(食用效果最佳),转载请注明出处!简介Unsafe是jdk提供的一个直接访问操作系统资源的工具类(底层c++实现),它可以直接分配内存,内存复制,copy,提供cpu级别的CAS乐观锁等操作。它的目的是为了增强java语言直接操作底层资源的能力,无疑带来很多方便。但是...

2019-05-06 09:00:43 103

原创 JDK中关于BIO,NIO,AIO,同步,异步介绍

本文原创地址,我的博客:https://jsbintask.cn/2019/04/16/essay/nio/(食用效果最佳),转载请注明出处!在理解什么是BIO,NIO,AIO之前,我们首先需要了解什么是同步,异步,阻塞,非阻塞。假如我们现在要去银行取钱:同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写);异步 : 委托一小弟拿银行卡到银行取钱,然后...

2019-04-16 17:19:18 157

原创 从未这么明白的设计模式(二):观察者模式

本文原创地址,我的博客:https://jsbintask.cn/2019/04/15/designpattern/observer/(食用效果最佳),转载请注明出处!前言观察者模式定义了对象间的一种一对多依赖关系,当一个对象状态发生改变时,观察者们都可以做出相应的更新,使得系统更易于扩展!案例小丽长得很漂亮,“天生丽质难自弃”, 是一个不折不扣的"女神"。小丽身边有很多”备胎...

2019-04-15 17:35:30 143

原创 SpringCloud-Zuul(三):常用配置详解

本文原创地址,我的博客:https://jsbintask.cn/2019/04/11/springcloud/springcloud-zuul-config/(食用效果最佳),转载请注明出处!SpringCloud Zuul同系列文章:SpringCloud-Zuul(一):技术选型及请求流程源码走读SpringCloud-Zuul(二):自定义Filter及内部路由源码解析Sp...

2019-04-11 15:34:04 195

原创 谈一谈ConcurrentModificationException

ConCurrentModificationException`是jdk用于限制并发情况下容器结构改变的异常类。当一个线程操作一个容器时,此时如果有另一个线程修改了容器大小,将抛出这个异常

2019-04-10 11:56:02 78

原创 SpringCloud-Zuul(二):自定义Filter及内部路由源码解析

本文原创地址,我的博客:https://jsbintask.cn/2019/04/03/springcloud/springcloud-zuul-customfilters/(食用效果最佳),转载请注明出处!前言上一篇介绍了SpringCloud使用Zuul的调用流程,明白了Zuul的工作原理关键在于ZuulServlet和它的内置Filter,所以在实际工作中,编写业务逻辑的关键就在...

2019-04-03 16:17:59 260

原创 这可能是ThreadLocal说得最清楚的一篇文章

本文原创地址,我的博客:https://jsbintask.cn/2019/04/01/jdk/jdk8-threadlocal/(食用效果最佳),转载请注明出处!前言ThreadLocal是jdk中一个非常重要的工具,它可以控制堆内存中的对象只能被指定线程访问,如果你经常阅读源码,基本在各大框架都能发现它的踪影。而它最经典的应用就是事务管理,同时它也是面试中的常客。原理我们知道,堆...

2019-04-01 16:41:19 142

原创 SpringCloud-Zuul(一):技术选型及请求流程源码走读

本文原创地址,我的博客:https://jsbintask.cn/2019/03/28/springcloud/springcloud-zuul-process/(食用效果最佳),转载请注明出处!前言最近公司最新架构确定使用微服务之后,经过讨论,最终还是选用了SpringCloud的体系。我负责网关,鉴权服务的研发。记录下这段时间新接触的知识。网关技术选型springcloud选用了最...

2019-03-28 11:21:16 383

原创 HashSet源码解析从一道面试题说起:HashSet内部是怎么实现的?

本文原创地址,我的博客:https://jsbintask.cn/2019/03/27/jdk/jdk8-hashset/(食用效果最佳),转载请注明出处!前言前段时间朋友面试遇到这个问题:谈一谈HashSet的特点,它是怎么实现的,使用时有什么需要注意的点呢?恰好最近在写这方面的文章,于是正好通过本篇文章讲解下HashSet的源码实现,需要注意的点。HashSet实现了Set接口,是一...

2019-03-27 15:49:04 121

原创 jdk1.8 LinkedList源码全分析

本文原创地址,我的博客:https://jsbintask.cn/2019/03/26/jdk/jdk8-linkedlist/(食用效果最佳),转载请注明出处!前言LinkedList内部是一个链表的实现,一个节点除了保持自身的数据外,还持有前,后两个节点的引用。所以就数据存储上来说,它相比使用数组作为底层数据结构的ArrayList来说,会更加耗费空间。但也正因为这个特性,它删除,插入...

2019-03-26 16:22:41 86

转载 分布式系统面试题:分布式事务解决方案?

面试题分布式事务了解吗?你们是如何解决分布式事务问题的?面试题剖析一般来说,分布式事务的实现主要有以下 5 种方案:XA 方案TCC 方案本地消息表可靠消息最终一致性方案最大努力通知方案两阶段提交方案/XA方案所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok...

2019-03-25 21:37:04 738

原创 jdk1.8源码解析-ArrayList

本文原创地址,我的博客:https://jsbintask.cn/2019/03/22/jdk/jdk8-arraylist/(食用效果最佳),转载请注明出处!前言ArrayList是一个长度可调节的数组,使用者只需向其中添加,删除,获取元素,可以向其中添加任何对象(包括null值),无需关系它的扩容,,缩减问题。它实现了list接口所有方法,它基本等价于Vector,唯一不同的是它没...

2019-03-22 17:02:35 120

原创 你的rest服务幂等吗?

本文原创地址,我的博客:https://jsbintask.cn/2019/03/21/api/restful-api-idempotent/(食用效果最佳),转载请注明出处!前言上一篇我们介绍了restful api相关知识,本篇我们介绍另一个于rest息息相关的概念:幂等;你真的了解rest api吗?介绍我们知道,springcloud做微服务时,服务之间的调用,服务的...

2019-03-22 09:05:08 90

原创 你的rest服务幂等吗?

本文原创地址,我的博客:https://jsbintask.cn/2019/03/21/api/restful-api-idempotent/(食用效果最佳),转载请注明出处!前言上一篇我们介绍了restful api相关知识,本篇我们介绍另一个于rest息息相关的概念:幂等;你真的了解rest api吗?介绍我们知道,springcloud做微服务时,服务之间的调用,服务的...

2019-03-21 18:09:17 179

原创 你真的了解restful api吗?

本文原创地址,我的博客:https://jsbintask.cn/2019/03/20/api/restful-api-best-practices/(食用效果最佳),转载请注明出处!前言在以前,一个网站的完成总是“all in one”,页面,数据,渲染全部在服务端完成,这样做的最大的弊端是后期维护,扩展极其痛苦,开发人员必须同时具备前后端知识。于是慢慢的后来兴起了前后端分离的思想:...

2019-03-21 09:15:27 447

原创 线程池?面试?看这篇就够了!

本文原创地址,我的博客:https://jsbintask.cn/2019/03/10/jdk/jdk8-threadpool/(食用效果最佳),转载请注明出处!前言在实际工作中,线程是一个我们经常要打交道的角色,它可以帮我们灵活利用资源,提升程序运行效率。但是我们今天不是探讨线程!我们今天来聊聊另一个与线程息息相关的角色:线程池.本篇文章的目的就是全方位的解析线程池的作用,以及jdk...

2019-03-12 16:45:28 352

原创 HashMap源码全解析从一道面试题说起:请一行一行代码描述下hashmap put方法

本文原创地址,我的博客:https://jsbintask.cn/2019/02/27/jdk/jdk8-hashmap-sourcecode/(食用效果最佳),转载请注明出处!前言前阵子(估计也快半年了吧)遇到这么一个面试题:请一行代码一行代码描述下HashMap put方法。我:。。。哈哈,其实也没有无语,当时知道HashMap的原理,数据结构,以及一些要注意的点,没想到面试官...

2019-02-28 17:22:02 1535

原创 (干货)Android入门完整项目:一个有定时提醒功能的备忘录

本文原创地址,我的博客:https://jsbintask.cn/2019/02/23/android/android-memo/(食用效果最佳),转载请注明出处!介绍今天给大家分享一个以前学习android时做的小项目,一个带有定时提醒功能的备忘录,主要用到RecycleView, sqlite, butterknife,效果如下:apk地址详细功能实现建立db,编写db h...

2019-02-23 16:03:34 2114 13

原创 redis面试必问(下)

接上一章redis面试必问(上)7.redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?考点分析在前几年,redis 如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有 codis,或者 twemproxy,都有。有一些 redis 中间件,你读写 redis 中间...

2019-02-18 15:08:22 354

原创 redis面试必问(上)

1.项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?面试题剖析为什么要用缓存?用缓存,主要有两个用途:高性能、高并发。高性能假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 mysql,半天查出来一个结果,耗时 600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办?缓存啊,折腾 600ms 查出来...

2019-02-18 14:48:57 1387 2

原创 java高级工程师面试题:如何设计一个高并发系统?

面试题如何设计一个高并发系统?考点分析说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先。如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿,高峰...

2019-02-17 19:52:46 936

原创 高并发下数据库分库分表面试题整理

面试题1为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?面试题剖析为什么要分库分表?(设计高并发系统的时候,数据库层面该如何设计?)说白了,分库分表是两回事儿,大家可别搞混了,可能是光分库不分表,也可能是光分表不分库,都有可能。我先给大家抛出来一个场景。...

2019-02-17 19:43:48 4147 1

原创 mysql面试题:如何实现 MySQL 的读写分离?MySQL 主从复制原理是啥?如何解决 MySQL 主从同步的延时问题?

面试题你有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?考点分析高并发这个阶段,肯定是需要做读写分离的,啥意思?因为实际上大部分的互联网公司,一些网站,或者是 app,其实都是读多写少。所以针对这个情况,就是写一个主库,但是主库挂多个从库,然后从多个从库来读,那不就可以支撑更高的读并发压力了吗?面试...

2019-02-17 19:03:23 2342

原创 史上最全springboot配置,踩坑,注解,使用手册(持续更新中)

springboot春节在家长了几斤肉,今天开始减肥了(工作了)。19年的第一篇文章,本篇文章将覆盖springboot所有配置(本人实际工作中所遇到问题以及学习总结),后续将会持续更新!话不多说,直接开始。详细配置注意:本演示全部基于springboot最新版本,现在是**2.1.2.RELEASE**,并且所有配置将全部使用yaml格式!如何配置springboot监听端口?通...

2019-02-15 18:00:42 505

原创 netty极简教程(一):从helloworld到编写一个聊天室

netty介绍Nowadays we use general purpose applications or libraries to communicate with each other. For example, we often use an HTTP client library to retrieve information from a web server and to i...

2019-01-31 11:01:53 98

原创 从未这么明白的设计模式(一):单例模式

什么是单例?为什么要用单例?一个类被设计出来,就代表它表示具有某种行为(方法),属性(成员变量),而一般情况下,当我们想使用这个类时,会使用new关键字,这时候jvm会帮我们构造一个该类的实例。而我们知道,对于new这个关键字以及该实例,相对而言是比较耗费资源的。所以如果我们能够想办法在jvm启动时就new好,或者在某一次实例new好以后,以后不再需要这样的动作,就能够节省很多资源了。哪些类可...

2019-01-29 16:51:48 213

原创 消息中间件面试题:如果让你写一个消息队列,该如何进行架构设计?

面试题如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。面试题剖析其实聊到这个问题,一般面试官要考察两块:你有没有对某一个消息队列做过较为深入的原理的了解,或者从整体了解把握住一个消息队列的架构原理。看看你的设计能力,给你一个常见的系统,就是消息队列系统,看看你能不能从全局把握一下整体架构设计,给出一些关键点出来。说实话,问类似问题的时候,大部分人基本都会蒙,因为平时从来...

2019-01-28 14:17:44 1810

原创 消息中间件面试题:如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时呢?

面试题如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?面试题剖析你看这问法,其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了;或者消费的速度极其慢。接着就坑爹了,可能你的消息队列集群的磁盘都快写满了,都没人消费,这个时候怎么办?或者是这整个就积压了几个小时,你这个时候怎么办?或者是你积压的时间太长了,导致比如 Rab...

2019-01-28 14:06:42 1765

原创 消息中间件面试题:如何保证消息不被重复消费

面试题如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?面试题剖析回答这个问题,首先你别听到重复消息这个事儿,就一无所知吧,你先大概说一说可能会有哪些重复消费的问题。首先,比如 RabbitMQ、RocketMQ、Kafka,都有可能会出现消息重复消费的问题,正常。因为这问题通常不是 MQ 自己保证的,是由我们开发来保证的。挑一个 Kafka 来举个例子,说说怎么重复消费吧。K...

2019-01-28 11:52:35 9418 1

原创 消息中间件面试题:如何保证消息的顺序性

面试题如何保证消息的顺序性?面试题剖析我举个例子,我们以前做过一个 mysql binlog 同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql -> mysql)。常见的一点在于说比如大数据 team,就需要同步一个 mysql 库过来,对公司的业务系统的数据做各种复杂的操作。你在 mysql...

2019-01-28 11:46:46 2737

原创 消息中间件面试题:消息丢失怎么办?

面试题如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?如果说你这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中绝对不会把计费消息给弄丢。面试题剖析数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ 和 Kafka 分别来分析一下吧。RabbitMQ生产者弄丢了数据生产者将数据发送到 RabbitMQ...

2019-01-28 11:41:21 5903 2

原创 消息中间件面试题:消息中间件的高可用

接着上一篇面试题的扩展。面试题如何保证消息队列的高可用?RabbitMQ 的高可用性RabbitMQ 是比较有代表性的,因为是基于主从(非分布式)做高可用性的,我们就以 RabbitMQ 为例子讲解第一种 MQ 的高可用性怎么实现。RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式。单机模式单机模式,就是 Demo 级别的,一般就是你本地启动了玩玩儿的

2019-01-28 11:32:35 2009 1

原创 消息中间件面试题:消息队列的优缺点,区别

题目为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?面试题剖析为什么使用消息队列先说一下消息队列常见的使用场景吧,其实场景有很多,但是比较核心的有 3 个:解耦、异步、削峰。解耦看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如...

2019-01-28 11:18:23 3100 1

原创 springboot整合各种消息队列(二):rabbitmq消息队列

本篇博客将介绍使用rabbitmq消息中间件和springboot的整合使用;安装配置rabbitmq请参考笔者另一篇博客,有详细介绍:https://jsbintask.cn/2019/01/25/middleware/docker-rabbitmq-install/#more整合springboot新建项目新建一个springboot项目,并且修改application.yml文...

2019-01-25 14:58:34 201

原创 linux上docker上配置运行rabbitmq

linux下docker安装配置rabbitmq直接运行docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=jsbintask -e RABBITMQ_DEFAULT_PASS=jsbintask rabbitmq:3-managem...

2019-01-25 11:34:53 380

原创 springboot整合各种消息队列(一):redis消息队列

本篇博客将介绍使用redis作为消息中间件和springboot的整合使用;安装配置redis请参考笔者另一篇博客,有详细介绍:https://jsbintask.cn/2019/01/24/middleware/redis-install/#more整合springboot新建项目新建一个springboot项目,并且修改application.yml文件,pom如下:sprin...

2019-01-25 10:22:50 145

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