- 博客(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
47736
7

原创 深入理解HashMap 的工作原理及代码实现,什么时候用到红黑树
GitHub:https://github.com/JDawnF一.HashMap的内部结构(线程不安全,基于jdk1.7):hashmap是无序的,因为每次根据 key 的 hashcode 映射到 Entry 数组上,所以遍历出来的顺序并不是写入的顺序 HashMap 底层是基于数组和链表实现的,如图所示,其中两个重要的参数:容量和负载因子;容量的默认大小是 16,负载因子是 0.7...
2018-11-30 16:10:33
12380

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

原创 使用RedisTemplate操作Redis数据库
GitHub:https://github.com/JDawnF目录一.什么是Redis二.RedisTemplate及其相关方法三.RedisTemplate操作Redis数据库的具体例子四.RedisTemplate和StringRedisTemplate的区别一.什么是RedisRedis是一个非关系型数据库,具有很高的存取性能,一般用作缓存数据库,减少正常存储数...
2018-11-05 13:06:54
32478
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
5402
2
转载 idea手动刷新git分支的详细教程及IDEA中分支合并
简而言之,就是先刷新git,然后在右下角切换分支!转自:https://www.jb51.net/article/193253.htm
2021-03-03 09:01:26
1126
转载 js文件引用方式及其同步执行与异步执行
https://www.cnblogs.com/grefr/p/5046296.htmlhttps://www.cnblogs.com/sheep-sheep/p/9438053.html
2021-01-29 11:08:25
712
原创 微服务之微服务架构
GitHub:https://github.com/JDawnF一般的服务调用流程如图:首先服务提供者(就是提供服务的一方)按照一定格式的服务描述,向注册中心注册服务,声明自己能够提供哪些服务以及服务的地址是什么,完成服务发布。接下来服务消费者(就是调用服务的一方)请求注册中心,查询所需要调用服务的地址,然后以约定的通信协议向服务提供者发起请求,得到请求结果后再按照约定的协议...
2019-10-02 14:26:46
492
原创 微服务之初识微服务
GitHub:https://github.com/JDawnF一、微服务介绍1. 微服务简介顾名思义,微服务得从两个方面去理解,什么是”微”、什么是”服务”, 微 狭义来讲就是体积小、著名的”2 pizza 团队”很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就...
2019-09-21 14:27:38
764
原创 常见的认证机制及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
1562
原创 深入理解缓存之缓存预热与淘汰策略
GitHub:https://github.com/JDawnF一、缓存预热在刚启动的缓存系统中,如果缓存中没有任何数据,如果依靠用户请求的方式重建缓存数据,那么对数据库的压力非常大,而且系统的性能开销也是巨大的。此时,最好的策略是启动时就把热点数据加载好。这样,用户请求时,直接读取的就是缓存的数据,而无需去读取 DB 重建缓存数据。举个例子,热门的或者推荐的商品,需要提前预热到缓...
2019-07-10 21:43:23
3842
原创 深入理解缓存之缓存和数据库的一致性
GitHub:https://github.com/JDawnF产生原因主要有两种情况,会导致缓存和 DB 的一致性问题: 并发的场景下,导致读取老的 DB 数据,更新到缓存中。 缓存和 DB 的操作,不在一个事务中,可能只有一个操作成功,而另一个操作失败,导致不一致。 当然,有一点我们要注意,缓存和 DB 的一致性,我们指的更多的是最终一致性。我们使用缓存只要是提高读...
2019-07-08 23:02:09
33919
18
原创 深入理解缓存之缓存存在的问题及应对措施
GitHub:https://github.com/JDawnF1.缓存穿透指查询一个一定不存在的数据,由于缓存是不命中时被动写( 被动写,指的是从 DB 查询到数据,则更新到缓存中 )的,并且处于容错考虑,如果从 DB 查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,失去了缓存的意义。缓存穿透问题可能会使后端存储负载加大,由于很多后端存储不具备高并...
2019-07-07 10:25:45
3014
原创 深入理解缓存之常见的缓存算法
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
1439
原创 计算机网络之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
12558
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
1756
原创 计算机网络之网络体系架构与IP
GitHub:https://github.com/JDawnF一、网络体系结构推荐的连接: 《计算机网络体系结构综述(上)》 《计算机网络体系结构综述(下)》 七层架构主要包括: 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由 1、0 转化为电流强弱来进行传输,到达目的地后在转化为...
2019-06-08 23:14:56
559
原创 深入理解MyBatis(四)--缓存
GitHub:https://github.com/JDawnF 查询缓存的使用,主要是为了提高查询访问速度。将用户对同一数据的重复查询过程简化,不再每次均从数据库查询获取结果数据,从而提高访问速度。MyBatis 的查询缓存机制,根据缓存区的作用域(生命周期)可划分为两种:一级查询 缓存与二级查询缓存。一、查询缓存1.一级查询缓存MyBatis 一级查询缓存是基...
2019-06-05 00:30:06
387
原创 深入理解MyBatis(三)--运行源码解析及延迟加载
GitHub:https://github.com/JDawnF一、运行源码解析先看一下Mybatis的Dao实现类例子,如下:A、 输入流的关闭在输入流对象使用完毕后,不用手工进行流的关闭。因为在输入流被使用完毕后,SqlSessionFactoryBuilder 对象的 build()方法会自动将输入流关闭。//SqlSessionFactoryBuilder.jav...
2019-06-02 22:46:17
555
原创 深入理解MyBatis(二)--Mapper
GitHub:https://github.com/JDawnF一、Mapper接口的工作原理Mapper 接口,对应的关系如下: 接口的全限名,就是映射文件中的 "namespace" 的值。 接口的方法名,就是映射文件中 MappedStatement 的 "id" 值。 接口方法内的参数,就是传递给 SQL 的参数。 Mapper 接口是没有实现类的,当...
2019-06-01 01:21:59
961
1
原创 深入理解MyBatis(一)基础及工作原理
GitHub:https://github.com/JDawnF一、MyBatis编程步骤 创建 SqlSessionFactory 对象。 通过 SqlSessionFactory 获取 SqlSession 对象。 通过 SqlSession 获得 Mapper 代理对象。 通过 Mapper 代理对象,执行数据库操作。 执行成功,则使用 Sq...
2019-05-31 01:25:08
404
原创 MyBatis中XML 映射文件中常见的标签
GitHub:https://github.com/JDawnFSQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出): cache – 对给定命名空间的缓存配置。 cache-ref – 对其他命名空间缓存配置的引用。 resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。 parameterMap – 已被废...
2019-05-31 00:47:21
26719
5
原创 深入理解SpringMVC之核心组件、工作原理及相关注解
GitHub:https://github.com/JDawnF目录一、核心组件1.概述:2. MultipartResolverMultipartResolver 接口,代码如下:3. LocaleResolver4. ThemeResolver5. HandlerMapping6. HandlerAdapter7. HandlerExceptionRes...
2019-05-29 08:34:53
1555
原创 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
410
原创 深入了解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
374
原创 深入了解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
229
原创 深入了解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
1020
原创 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
433
原创 深入了解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
311
原创 认识OAuth 2.0及实例
GitHub:https://github.com/JDawnF/learning_note一、简介1.类比小区门禁小区中有门禁,出入需要输入密码,但快递人员等非小区用户进入时,需要先申请小区用户授权方可进入。授权机制如下:第一步,门禁系统的密码输入器下面,增加一个按钮,叫做"获取授权"。快递员先按这个按钮,去申请授权。第二步,他按下按钮以后,小区用户的手机就会跳出对话框:...
2019-05-24 16:38:44
1252
转载 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
377
原创 虚拟机centos6网卡配置及提示Device does not seem to be present
参照这两个博客:https://blog.youkuaiyun.com/vitaminc4/article/details/76061988https://blog.youkuaiyun.com/xiaobei4929/article/details/40515247
2019-03-26 15:12:55
635
原创 JUC之深入理解ReentrantReadWriteLock
GitHub:https://github.com/JDawnF/learning_noteReentrantReadWriteLock ,读写锁,是用来提升并发程序性能的锁分离技术的 Lock 实现类。可以用于 “多读少写” 的场景,读写锁支持多个读操作并发执行,写操作只能由一个线程来操作。ReadWriteLock 使得你可以同时有多个读取者,只要它们都不试图写入即可。如果写锁已经被其...
2019-03-21 17:25:45
256
原创 JUC之深入理解ReentrantLock
1. 简介ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于 synchronized 的使用,但是 ReentrantLock 提供了比 synchronized 更强大、灵活的锁机制,可以减少死锁发生的概率。一个可重入的互斥锁定 Lock,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁定相同的一些基本行为和语义,但功能更强大。R...
2019-03-20 11:43:12
439
原创 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
847
原创 算法练习之剑指offer
参照CYC大佬和牛客上面别人的解法,并结合自己的理解连接:https://github.com/JDawnF/offer
2019-03-16 20:57:59
185
转载 Java 自定义比较器:Comparator 和 Comparable
这两个接口都是为了实现比较而用到的,当想要比较两个对象的时候,就可以实现这两个接口,参照:https://blog.youkuaiyun.com/u012289441/article/details/45154401?ref=myread主要补充:PriorityQueue<Integer> pq = new PriorityQueue<>((a,b)->map....
2019-03-03 12:02:55
657
转载 spring与线程安全
https://blog.youkuaiyun.com/csdnlijingran/article/details/83094756
2019-02-18 18:57:09
1252
原创 多线程之阻塞队列
一、概述阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。2)支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。 阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的...
2019-02-10 17:45:58
980
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人