自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 微服务之微服务架构

GitHub:https://github.com/JDawnF 一般的服务调用流程如图: 首先服务提供者(就是提供服务的一方)按照一定格式的服务描述,向注册中心注册服务,声明自己能够提供哪些服务以及服务的地址是什么,完成服务发布。 接下来服务消费者(就是调用服务的一方)请求注册中心...

2019-10-02 14:26:46 114 0

原创 微服务之初识微服务

GitHub:https://github.com/JDawnF 一、微服务介绍 1. 微服务简介 顾名思义,微服务得从两个方面去理解,什么是”微”、什么是”服务”, 微 狭义来讲就是体积小、著名的”2 pizza 团队”很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bez...

2019-09-21 14:27:38 194 0

原创 常见的认证机制及JSON WEB TOKEN

GitHub:https://github.com/JDawnF HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和 password,简言之,Basic Auth是配合RESTful API 使用的最简单的认证方式,只需...

2019-07-28 16:11:40 501 0

原创 深入理解缓存之缓存预热与淘汰策略

GitHub:https://github.com/JDawnF 一、缓存预热 在刚启动的缓存系统中,如果缓存中没有任何数据,如果依靠用户请求的方式重建缓存数据,那么对数据库的压力非常大,而且系统的性能开销也是巨大的。 此时,最好的策略是启动时就把热点数据加载好。这样,用户请求时,直接读取的...

2019-07-10 21:43:23 661 0

原创 深入理解缓存之缓存和数据库的一致性

GitHub:https://github.com/JDawnF 产生原因 主要有两种情况,会导致缓存和 DB 的一致性问题: 并发的场景下,导致读取老的 DB 数据,更新到缓存中。 缓存和 DB 的操作,不在一个事务中,可能只有一个操作成功,而另一个操作失败,导致不一致。 ...

2019-07-08 23:02:09 3635 1

原创 深入理解缓存之缓存存在的问题及应对措施

GitHub:https://github.com/JDawnF 1.缓存穿透 指查询一个一定不存在的数据,由于缓存是不命中时被动写( 被动写,指的是从 DB 查询到数据,则更新到缓存中 )的,并且处于容错考虑,如果从 DB 查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB...

2019-07-07 10:25:45 520 0

原创 深入理解缓存之常见的缓存算法

GitHub:https://github.com/JDawnF 缓存算法,比较常见的是三种: LRU(least recently used ,最近最少使用) LFU(Least Frequently used ,最不经常使用) FIFO(first in first...

2019-07-06 09:24:19 291 0

原创 计算机网络之HTTP、HTTPS、HTTP2

GitHub:https://github.com/JDawnF 一、HTTP HTTP 协议,是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP ...

2019-06-12 18:30:37 1392 0

原创 计算机网络之TCP(三次握手、四次挥手等),UDP及DNS

目录 一、TCP 数据包说明 TCP 对应的应用层协议 TCP 头部 TCP 三次握手 三次握手的原因 TCP 四次挥手 四次挥手的原因 TCP数据传输 TCP 数据传输丢失怎么办(T即CP重传,通过定时器实现) TCP 滑动窗口 滑动窗口的原理 TCP 拥堵 解决方案...

2019-06-11 09:22:43 288 0

原创 计算机网络之网络体系架构与IP

GitHub:https://github.com/JDawnF 一、网络体系结构 推荐的连接: 《计算机网络体系结构综述(上)》 《计算机网络体系结构综述(下)》 七层架构主要包括: 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质...

2019-06-08 23:14:56 62 0

原创 深入理解MyBatis(四)--缓存

GitHub:https://github.com/JDawnF 查询缓存的使用,主要是为了提高查询访问速度。将用户对同一数据的重复查询过程简化,不再每次均从数据库查询获取结果数据,从而提高访问速度。 MyBatis 的查询缓存机制,根据缓存区的作用域(生命周期)可划分为两种:一级查询...

2019-06-05 00:30:06 60 0

原创 深入理解MyBatis(三)--运行源码解析及延迟加载

GitHub:https://github.com/JDawnF 一、运行源码解析 先看一下Mybatis的Dao实现类例子,如下: A、 输入流的关闭 在输入流对象使用完毕后,不用手工进行流的关闭。因为在输入流被使用完毕后,SqlSessionFactoryBuilder 对象的 b...

2019-06-02 22:46:17 124 0

原创 深入理解MyBatis(二)--Mapper

GitHub:https://github.com/JDawnF 一、Mapper接口的工作原理 Mapper 接口,对应的关系如下: 接口的全限名,就是映射文件中的 "namespace" 的值。 接口的方法名,就是映射文件中 MappedStatemen...

2019-06-01 01:21:59 32 0

原创 深入理解MyBatis(一)基础及工作原理

GitHub:https://github.com/JDawnF 一、MyBatis编程步骤 创建 SqlSessionFactory 对象。 通过 SqlSessionFactory 获取 SqlSession 对象。 通过 SqlSession 获得 Mapper ...

2019-05-31 01:25:08 53 0

原创 MyBatis中XML 映射文件中常见的标签

GitHub:https://github.com/JDawnF SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出): cache – 对给定命名空间的缓存配置。 cache-ref – 对其他命名空间缓存配置的引用。 resultMap – 是最复杂也是...

2019-05-31 00:47:21 3262 0

原创 深入理解SpringMVC之核心组件、工作原理及相关注解

GitHub:https://github.com/JDawnF 目录 一、核心组件 1.概述: 2. MultipartResolver MultipartResolver 接口,代码如下: 3. LocaleResolver 4. ThemeResolver 5. Handle...

2019-05-29 08:34:53 605 0

原创 SpringMVC相关注解

GitHub:https://github.com/JDawnF/learning_note @Controller @Controller 注解,它将一个类标记为 Spring Web MVC 控制器 Controller 。 @RestController 和 @Controller...

2019-05-29 08:33:54 71 0

原创 深入了解Spring之事务

GitHub:https://github.com/JDawnF/learning_note 目录 1、事务 2、事务的特性 3、列举 Spring 支持的事务管理类型 3.1 声明式事务 a.基于TransactionInterceptor的声明式事务: b.基于Transacti...

2019-05-28 09:39:05 79 0

原创 深入了解Spring之AOP

GitHub:https://github.com/JDawnF/learning_note 目录 1、简介 1.1 应用场景 2、Aspect简介 3、AOP相关术语 Joinpoint(连接点): Pointcut(切入点): Advice(通知/增强): Introduct...

2019-05-27 08:42:03 56 0

原创 深入了解Spring之Bean(声明周期等)

GitHub:https://github.com/JDawnF/learning_note 目录 1、Spring 的配置方式 2、Bean Scope作用域 3、Bean的生命周期 实例化 Bean 对象 4、内部Bean 5、Spring 装配 自动装配 6、延迟加载 7...

2019-05-26 09:53:24 309 0

原创 Spring之循环依赖与解决方案

GitHub:https://github.com/JDawnF/learning_note 目录 1. 什么是循环依赖 2. 解决循环依赖 2.1 getSingleton 2.2 addSingletonFactory(二级缓存出处) 2.3 addSingleton(一级缓存出处...

2019-05-26 09:39:49 79 0

原创 深入了解Spring之IoC

GitHub:https://github.com/JDawnF/learning_note 目录 1、IoC 容器 2、依赖注入 3、实现依赖注入的方式 4、Spring中的IoC 容器(ApplicationContext 面向开发应用) 5、常用的 ApplicationCont...

2019-05-25 08:19:12 64 0

原创 认识OAuth 2.0及实例

GitHub:https://github.com/JDawnF/learning_note 一、简介 1.类比小区门禁 小区中有门禁,出入需要输入密码,但快递人员等非小区用户进入时,需要先申请小区用户授权方可进入。 授权机制如下: 第一步,门禁系统的密码输入器下面,增加一个按钮,叫做&...

2019-05-24 16:38:44 91 0

转载 web.xml中context-param和init-param的区别

转自:https://www.cnblogs.com/zhaoleigege/p/5807995.html <context-param>的作用: web.xml的配置中<context-param>配置作用 1.启动一个WEB项目的时候,容器(如:Tomcat)会去读...

2019-04-26 10:06:16 183 0

原创 虚拟机centos6网卡配置及提示Device does not seem to be present

参照这两个博客: https://blog.csdn.net/vitaminc4/article/details/76061988 https://blog.csdn.net/xiaobei4929/article/details/40515247

2019-03-26 15:12:55 175 0

原创 JUC之深入理解ReentrantReadWriteLock

GitHub:https://github.com/JDawnF/learning_note ReentrantReadWriteLock ,读写锁,是用来提升并发程序性能的锁分离技术的 Lock 实现类。可以用于 “多读少写” 的场景,读写锁支持多个读操作并发执行,写操作只能由一个线程来操作。...

2019-03-21 17:25:45 89 0

原创 JUC之深入理解ReentrantLock

1. 简介 ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于 synchronized 的使用,但是 ReentrantLock 提供了比 synchronized 更强大、灵活的锁机制,可以减少死锁发生的概率。 一个可重入的互斥锁定 Lock,它具有与使用 s...

2019-03-20 11:43:12 86 0

原创 JUC之深入理解AQS

GitHub:https://github.com/JDawnF/learning_note java.util.concurrent.locks.AbstractQueuedSynchronizer 抽象类,简称 AQS ,是一个用于构建锁和同步容器的同步器。事实上concurrent 包内许...

2019-03-19 11:07:48 155 0

原创 算法练习之剑指offer

参照CYC大佬和牛客上面别人的解法,并结合自己的理解 连接:https://github.com/JDawnF/offer

2019-03-16 20:57:59 56 0

原创 算法练习之LeetCode

参照CYC大佬给出的题解,加上自己的理解。 连接:https://github.com/JDawnF/LeetCode

2019-03-16 20:56:45 80 0

转载 Java 自定义比较器:Comparator 和 Comparable

这两个接口都是为了实现比较而用到的,当想要比较两个对象的时候,就可以实现这两个接口,参照:https://blog.csdn.net/u012289441/article/details/45154401?ref=myread 主要补充: PriorityQueue&lt;Int...

2019-03-03 12:02:55 285 0

转载 spring与线程安全

https://blog.csdn.net/csdnlijingran/article/details/83094756

2019-02-18 18:57:09 735 0

原创 多线程之阻塞队列

一、概述 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。 1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。 2)支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。   ...

2019-02-10 17:45:58 273 0

原创 AQS组件之CyclicBarrier

前面已经介绍了AQS及其两个组件,接下来看看CyclicBarrier这个组件。 一、简介 CyclicBarrier是另一种多线程并发控制使用工具,和CountDownLatch非常类似,他也 可以实现线程间的计数等待,但他的功能要比CountDownLatch更加强大一些。 Cyclic...

2019-02-06 17:59:58 215 0

原创 AQS组件之Semaphore

在前两篇说了AQS和CountDownLatch,现在我们来看看Semaphore。 synchronized 和 ReentrantLock 都是一次只允许一个线程访问某个资源,Semaphore(信号量)可以指定多个线程同时访问某个资源。 ​ 用于保证同一时间并发访问线程的数目。信号量在操...

2019-02-05 22:20:24 50 0

原创 什么是AQS及其原理

GitHub:https://github.com/JDawnF 1、AQS简介 AQS全名:AbstractQueuedSynchronizer,是并发容器J.U.C(java.lang.concurrent)下locks包内的一个类。它实现了一个FIFO(FirstIn、FisrtOut先...

2019-02-03 23:49:59 1256 0

原创 AQS组件之CountDownLatch

GitHub:https://github.com/JDawnF 一、CountDownLatch简介 CountDownLatch是一个同步工具类,用来协调多个线程之间的同步。这个工具通常用来控制线程等待,它可以让某一个线程等待直到倒计时结束,再开始执行。 通过一个计数来保证线程是否需...

2019-02-03 22:42:52 105 0

原创 CopyOnWriteArrayList源码分析

前言: 当我们想要用ArrayList,又想要保证线程安全的时候,可以考虑使用CopyOnWriteArrayList这个类。因为如果使用Vector的话,虽然可以保证线程安全,但是因为在Vector里面是用synchronized修饰的,所以开销会比较大。因此考虑使用CopyOnWriteAr...

2019-02-01 21:32:40 67 0

转载 servlet/tomcat等容器/springMVC之间的关系及声明周期

转自:https://www.jianshu.com/p/406a09136a18 生命周期:https://www.cnblogs.com/lgk8023/p/6427977.html Servlet是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能,统一接口。由其他内部厂...

2019-02-01 10:44:14 760 0

原创 java内存模型之双重检测锁和延迟初始化

1 双重检查锁定及其存在的问题 在单例模式中,普通的单例模式是线程不安全的,如下: //懒汉式,线程不安全 public static class SingleTon2 { public static SingleTon2 instance = null; private ...

2019-01-26 22:38:09 85 0

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