自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 什么是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 46337 7

原创 深入理解HashMap 的工作原理及代码实现,什么时候用到红黑树

GitHub:https://github.com/JDawnF一.HashMap的内部结构(线程不安全,基于jdk1.7):hashmap是无序的,因为每次根据 key 的 hashcode 映射到 Entry 数组上,所以遍历出来的顺序并不是写入的顺序 HashMap 底层是基于数组和链表实现的,如图所示,其中两个重要的参数:容量和负载因子;容量的默认大小是 16,负载因子是 0.7...

2018-11-30 16:10:33 12218

原创 深入理解TCP、UDP协议及两者的区别

一、TCP协议:位于传输层, 提供可靠的字节流服务。所谓的字节流服务(Byte Stream Service) 是指, 为了方便传输, 将大块数据分割成以报文段(segment) 为单位的数据包进行管理。 而可靠的传输服务是指, 能够把数据准确可靠地传给对方。 即TCP 协议为了更容易传送大数据才把数据分割, 而且 TCP 协议能够确认数据最终是否送达到对方。所以,TCP连接相当于两根管道(一...

2018-11-14 13:03:24 195523 9

原创 使用RedisTemplate操作Redis数据库

GitHub:https://github.com/JDawnF目录一.什么是Redis二.RedisTemplate及其相关方法三.RedisTemplate操作Redis数据库的具体例子四.RedisTemplate和StringRedisTemplate的区别一.什么是RedisRedis是一个非关系型数据库,具有很高的存取性能,一般用作缓存数据库,减少正常存储数...

2018-11-05 13:06:54 32228 5

原创 SpringBoot+Thymeleaf项目解决HTTPS重定向时变成HTTP,设置redirectHttp10Compatible

一、前景由于新配了https的域名,但不支持通过nginx将域名转为http,在界面有些地方的重定向会失效,显示“was loaded over HTTPS, but requested an insecure frame”报错,所以只能通过代码层面去解决。项目是springboot+Thymeleaf,网上大概提了几种方法: 在页面上配上“<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-reque

2021-11-09 10:42:53 4450 2

转载 idea手动刷新git分支的详细教程及IDEA中分支合并

简而言之,就是先刷新git,然后在右下角切换分支!转自:https://www.jb51.net/article/193253.htm

2021-03-03 09:01:26 1031

转载 js文件引用方式及其同步执行与异步执行

https://www.cnblogs.com/grefr/p/5046296.htmlhttps://www.cnblogs.com/sheep-sheep/p/9438053.html

2021-01-29 11:08:25 650

原创 微服务之微服务架构

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

2019-10-02 14:26:46 440

原创 微服务之初识微服务

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

2019-09-21 14:27:38 630

原创 常见的认证机制及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 1470

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

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

2019-07-10 21:43:23 3755

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

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

2019-07-08 23:02:09 33510 18

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

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

2019-07-07 10:25:45 2929

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

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 1367

原创 计算机网络之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 11965 5

原创 计算机网络之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 1639

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

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

2019-06-08 23:14:56 487

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

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

2019-06-05 00:30:06 331

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

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

2019-06-02 22:46:17 520

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

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

2019-06-01 01:21:59 713 1

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

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

2019-05-31 01:25:08 328

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

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

2019-05-31 00:47:21 25911 5

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

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

2019-05-29 08:34:53 1504

原创 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 358

原创 深入了解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 344

原创 深入了解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 183

原创 深入了解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 970

原创 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 348

原创 深入了解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 262

原创 认识OAuth 2.0及实例

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

2019-05-24 16:38:44 1105

转载 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 341

原创 虚拟机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 580

原创 JUC之深入理解ReentrantReadWriteLock

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

2019-03-21 17:25:45 214

原创 JUC之深入理解ReentrantLock

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

2019-03-20 11:43:12 390

原创 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 741

原创 算法练习之剑指offer

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

2019-03-16 20:57:59 154

原创 算法练习之LeetCode

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

2019-03-16 20:56:45 168

转载 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 620

转载 spring与线程安全

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

2019-02-18 18:57:09 1218

原创 多线程之阻塞队列

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

2019-02-10 17:45:58 882

Java开源项目

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

2018-11-11

空空如也

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

TA关注的人

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