自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 资源 (1)
  • 收藏
  • 关注

原创 后端程序员需要了解的前端知识(持续更新中)

一、FastJson1.对于JSON格式字符串、JSON对象及JavaBean之间的相互转换JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。JSONObject:fastJson提供的json对象。JSONArray:fastJson提供json数组对象。参照:https://www.cnblogs.com/cdf-open...

2018-11-24 18:37:47 3197 1

原创 微服务之微服务架构

GitHub:https://github.com/JDawnF一般的服务调用流程如图:首先服务提供者(就是提供服务的一方)按照一定格式的服务描述,向注册中心注册服务,声明自己能够提供哪些服务以及服务的地址是什么,完成服务发布。接下来服务消费者(就是调用服务的一方)请求注册中心,查询所需要调用服务的地址,然后以约定的通信协议向服务提供者发起请求,得到请求结果后再按照约定的协议...

2019-10-02 14:26:46 188

原创 微服务之初识微服务

GitHub:https://github.com/JDawnF一、微服务介绍1. 微服务简介顾名思义,微服务得从两个方面去理解,什么是”微”、什么是”服务”, 微 狭义来讲就是体积小、著名的”2 pizza 团队”很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就...

2019-09-21 14:27:38 267

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

GitHub:https://github.com/JDawnFHTTP Basic AuthHTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和 password,简言之,Basic Auth是配合RESTful API 使用的最简单的认证方式,只需提供 用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被 使用的越来越少。因...

2019-07-28 16:11:40 923

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

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

2019-07-10 21:43:23 1465

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

GitHub:https://github.com/JDawnF产生原因主要有两种情况,会导致缓存和 DB 的一致性问题: 并发的场景下,导致读取老的 DB 数据,更新到缓存中。 缓存和 DB 的操作,不在一个事务中,可能只有一个操作成功,而另一个操作失败,导致不一致。 当然,有一点我们要注意,缓存和 DB 的一致性,我们指的更多的是最终一致性。我们使用缓存只要是提高读...

2019-07-08 23:02:09 10700 6

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

GitHub:https://github.com/JDawnF1.缓存穿透指查询一个一定不存在的数据,由于缓存是不命中时被动写( 被动写,指的是从 DB 查询到数据,则更新到缓存中 )的,并且处于容错考虑,如果从 DB 查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,失去了缓存的意义。缓存穿透问题可能会使后端存储负载加大,由于很多后端存储不具备高并...

2019-07-07 10:25:45 1047

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

GitHub:https://github.com/JDawnF缓存算法,比较常见的是三种: LRU(least recently used ,最近最少使用) LFU(Least Frequently used ,最不经常使用) FIFO(first in first out ,先进先出) 手写 LRU 代码的实现手写 LRU 代码的实现,有多种方式。其中,最...

2019-07-06 09:24:19 731

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

GitHub:https://github.com/JDawnF一、HTTPHTTP 协议,是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP 是一个无状态的协议。无状态是指客户机(Web 浏览器)和服务器之间不需要建立持久的连接,这意味着当一个...

2019-06-12 18:30:37 4327

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

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

2019-06-11 09:22:43 507

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

GitHub:https://github.com/JDawnF一、网络体系结构推荐的连接: 《计算机网络体系结构综述(上)》 《计算机网络体系结构综述(下)》 七层架构主要包括: 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由 1、0 转化为电流强弱来进行传输,到达目的地后在转化为...

2019-06-08 23:14:56 101

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

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

2019-06-05 00:30:06 96

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

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

2019-06-02 22:46:17 277

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

GitHub:https://github.com/JDawnF一、Mapper接口的工作原理Mapper 接口,对应的关系如下: 接口的全限名,就是映射文件中的 "namespace" 的值。 接口的方法名,就是映射文件中 MappedStatement 的 "id" 值。 接口方法内的参数,就是传递给 SQL 的参数。 Mapper 接口是没有实现类的,当...

2019-06-01 01:21:59 53

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

GitHub:https://github.com/JDawnF一、MyBatis编程步骤 创建 SqlSessionFactory 对象。 通过 SqlSessionFactory 获取 SqlSession 对象。 通过 SqlSession 获得 Mapper 代理对象。 通过 Mapper 代理对象,执行数据库操作。 执行成功,则使用 Sq...

2019-05-31 01:25:08 76

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

GitHub:https://github.com/JDawnFSQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出): cache – 对给定命名空间的缓存配置。 cache-ref – 对其他命名空间缓存配置的引用。 resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。 parameterMap – 已被废...

2019-05-31 00:47:21 11799 2

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

GitHub:https://github.com/JDawnF目录一、核心组件1.概述:2. MultipartResolverMultipartResolver 接口,代码如下:3. LocaleResolver4. ThemeResolver5. HandlerMapping6. HandlerAdapter7. HandlerExceptionRes...

2019-05-29 08:34:53 918

原创 SpringMVC相关注解

GitHub:https://github.com/JDawnF/learning_note@Controller@Controller 注解,它将一个类标记为 Spring Web MVC 控制器 Controller 。@RestController 和 @Controller 的区别@RestController 注解,在 @Controller 基础上,增加了 @Res...

2019-05-29 08:33:54 111

原创 深入了解Spring之事务

GitHub:https://github.com/JDawnF/learning_note目录1、事务2、事务的特性3、列举 Spring 支持的事务管理类型3.1 声明式事务a.基于TransactionInterceptor的声明式事务:b.基于TransactionProxyFactoryBean的声明式事务c.基于命名空间的声明式事务d.基于标注(@T...

2019-05-28 09:39:05 118

原创 深入了解Spring之AOP

GitHub:https://github.com/JDawnF/learning_note目录1、简介1.1 应用场景2、Aspect简介3、AOP相关术语Joinpoint(连接点):Pointcut(切入点):Advice(通知/增强):Introduction(引介):Target(目标对象):Weaving(织入):Proxy(代理):...

2019-05-27 08:42:03 72

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

GitHub:https://github.com/JDawnF/learning_note目录1、Spring 的配置方式2、Bean Scope作用域3、Bean的生命周期实例化 Bean 对象4、内部Bean5、Spring 装配自动装配6、延迟加载7、单例 Bean 是否线程安全8、Spring解决循环依赖1、Spring 的配置方式 ...

2019-05-26 09:53:24 550

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

GitHub:https://github.com/JDawnF/learning_note目录1. 什么是循环依赖2. 解决循环依赖2.1 getSingleton2.2 addSingletonFactory(二级缓存出处)2.3 addSingleton(一级缓存出处)3. 小结1. 什么是循环依赖循环依赖,其实就是循环引用,就是两个或者两个以上的 bea...

2019-05-26 09:39:49 137

原创 深入了解Spring之IoC

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

2019-05-25 08:19:12 89

原创 认识OAuth 2.0及实例

GitHub:https://github.com/JDawnF/learning_note一、简介1.类比小区门禁小区中有门禁,出入需要输入密码,但快递人员等非小区用户进入时,需要先申请小区用户授权方可进入。授权机制如下:第一步,门禁系统的密码输入器下面,增加一个按钮,叫做"获取授权"。快递员先按这个按钮,去申请授权。第二步,他按下按钮以后,小区用户的手机就会跳出对话框:...

2019-05-24 16:38:44 217

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

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

2019-04-26 10:06:16 232

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

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

2019-03-26 15:12:55 230

原创 JUC之深入理解ReentrantReadWriteLock

GitHub:https://github.com/JDawnF/learning_noteReentrantReadWriteLock ,读写锁,是用来提升并发程序性能的锁分离技术的 Lock 实现类。可以用于 “多读少写” 的场景,读写锁支持多个读操作并发执行,写操作只能由一个线程来操作。ReadWriteLock 使得你可以同时有多个读取者,只要它们都不试图写入即可。如果写锁已经被其...

2019-03-21 17:25:45 101

原创 JUC之深入理解ReentrantLock

1. 简介ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于 synchronized 的使用,但是 ReentrantLock 提供了比 synchronized 更强大、灵活的锁机制,可以减少死锁发生的概率。一个可重入的互斥锁定 Lock,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁定相同的一些基本行为和语义,但功能更强大。R...

2019-03-20 11:43:12 142

原创 JUC之深入理解AQS

GitHub:https://github.com/JDawnF/learning_notejava.util.concurrent.locks.AbstractQueuedSynchronizer 抽象类,简称 AQS ,是一个用于构建锁和同步容器的同步器。事实上concurrent 包内许多类都是基于 AQS 构建。例如 ReentrantLock,Semaphore,CountDownL...

2019-03-19 11:07:48 290

原创 算法练习之剑指offer

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

2019-03-16 20:57:59 77

原创 算法练习之LeetCode

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

2019-03-16 20:56:45 100

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

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

2019-03-03 12:02:55 395

转载 spring与线程安全

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

2019-02-18 18:57:09 1036

原创 多线程之阻塞队列

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

2019-02-10 17:45:58 331

原创 AQS组件之CyclicBarrier

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

2019-02-06 17:59:58 320

原创 AQS组件之Semaphore

在前两篇说了AQS和CountDownLatch,现在我们来看看Semaphore。synchronized 和 ReentrantLock 都是一次只允许一个线程访问某个资源,Semaphore(信号量)可以指定多个线程同时访问某个资源。​ 用于保证同一时间并发访问线程的数目。信号量在操作系统中是很重要的概念,Java并发库里的Semaphore就可以很轻松的完成类似操作系统信号量的控制...

2019-02-05 22:20:24 68

原创 什么是AQS及其原理

GitHub:https://github.com/JDawnF1、AQS简介AQS全名:AbstractQueuedSynchronizer,是并发容器J.U.C(java.lang.concurrent)下locks包内的一个类。它实现了一个FIFO(FirstIn、FisrtOut先进先出)的队列。底层实现的数据结构是一个双向链表。Sync queue:同步队列,是一个双向链...

2019-02-03 23:49:59 3003 3

原创 AQS组件之CountDownLatch

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

2019-02-03 22:42:52 151

原创 CopyOnWriteArrayList源码分析

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

2019-02-01 21:32:40 80

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

转自:https://www.jianshu.com/p/406a09136a18生命周期:https://www.cnblogs.com/lgk8023/p/6427977.htmlServlet是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能,统一接口。由其他内部厂商如tomcat,jetty内部实现web的功能。如一个http请求到来:容器将请求封装为servl...

2019-02-01 10:44:14 906

Java开源项目

提高个人技术的开源项目,可以自己下下来好好研究一下,提高自己的技术

2018-11-11

空空如也

空空如也

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

TA关注的人 TA的粉丝

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