思维导图系列整理
思维导图汇总
这里是在学习过程中总结的思维导图
Java 学习:https://www.processon.com/view/link/610b99617d9c087bbd18a03e
Spring MVC 异步请求处理 DeferredResult 的学习
Spring MVC 异步请求处理 DeferredResult 的学习导语 之前在学习 Apollo 配置中心的时候,发现 Apollo 通过 Spring MVC DeferredResult 实现长轮询服务推送。当时仅仅简单了解了一下,如今决定深入学习一下 Spring MVC 如何实现的 DeferredResult,期望可以解决以下问题:
什么是长轮询?除了长轮询还有什么方式?如何选择?
什么是 DeferredResult?如何使用?
DeferredResult 的实现原理是什么?
在实际工作中什么时候会用到?
背景什么是 DeferredResult DeferredResult 字面意思就是推迟结果,是在 Servlet 3.0 以后引入了异步请求之后,在 Spring 3.2 版本封装了一下支持了 Servlet 这个异步请求。DeferredResult 可以允许容器中的线程快速释放以便可以接受更多的请求提升吞吐量,让真正的业务逻辑在其他的工作线程中去完成。
DeferredResult 的使用场景服务端和客户端数据传输的方式 ...
互联网黑话手册
互联网黑话二字动词复盘 赋能 加持 沉淀 倒逼 落地 串联 协同 反哺 兼容 包装 重组 履约 响应 量化 布局 联动 细分 梳理 输出 加速 共建 支撑 融合 聚合 集成 对标 聚焦 抓手 拆解 抽象 摸索 提炼 打通 打透 吃透 迁移 分发 分装 辐射 围绕 复用 渗透 扩展 开拓 皮实 共创 共建 解耦 集成 对齐 拉起 对焦 给到 拿到 死磕
二字名词漏斗 中台 闭环 打法 纽带 矩阵 刺激 规模 场景 维度 格局 形态 生态 体系 认知 玩法 体感 感知 调性 心智 战役 合力 赛道 基因 模型 载体 ...
分布式事务及解决方案
基础概念什么是事务什么是事务?举个生活中的例子:你去小卖铺买东西,“一手交钱,一手交货”就是一个事务的例子,交钱和交货必
须全部成功,事务才算成功,任一个活动失败,事务将撤销所有已成功的活动。
明白上述例子,再来看事务的定义:
事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。
本地事务在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据
库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的
事务又被称为本地事务。
回顾一下数据库事务的四大特性 ACID:
A(Atomic):原子性,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失
败的情况。
C(Consistency):一致性,在事务执行前后,数据库的一致性约束没有被破坏。比如:张三向李四转100元,
转账前和转账后的数据是正确状态这叫一致性,如果出现张三转出100元,李四账户没有增加100元这就出现了数
据错误,就没有达到一致性。
...
加密算法
导语本文尝试由古及今,论述加密算法的发展演变,以及在整个过程中先后出现的几种关键加密算法及其优劣势对比。由于个人水平有限,如果出现谬误,还望不吝赐教。
签名算法和加密算法签名算法也叫杂凑函数、散列函数或哈希函数,可将任意长度的消息经过运算,变成固定长度数值,常见的有MD5、SHA-1、SHA256,多应用在文件校验,数字签名中。
算法
输出长度(位)
输出长度(字节)
MD5
128 bits
16 bytes
SHA-1
160 bits
20 bytes
RipeMD-160
160 bits
20 bytes
SHA-256
256 bits
32 bytes
SHA-512
512 bits
64 bytes
根据碰撞概率,哈希算法的输出长度越长,就越难产生碰撞,也就越安全。
签名算法是一个不可逆过程,就是无论多大数据,经过算法运算后都是生成固定长度的数据,一般结果使用16进制进行显示。
主要用途有:验证消息完整性,安全访问认证,数据签名。
消息完整性:由于每一份数据生成的MD5值不一样,因此发送数据时可以将数据和其MD5值一起发送,然后就可 ...
Jsoup
Jsoup官网 :https://jsoup.org 介绍如下:
jsoup实现WHATWG HTML5规范,并将HTML解析为与现代浏览器相同的DOM。
从URL,文件或字符串中刮取和解析 HTML
使用DOM遍历或CSS选择器查找和提取数据
操纵 HTML元素,属性和文本
清除用户提交的内容以防止安全白名单,以防止XSS攻击
输出整洁的HTML
SpringBoot 集成依赖12345<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.13.1</version></dependency>
过滤器12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152import lombo ...
Java 8 中的日期处理
Java 8 中的日期处理Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。
Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。
新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。
编号
类的名称
描述
1
Instant
时间戳
2
Duration
持续时间,时间差
3
LocalDate
只包含日期,比如:2018-02-05
4
LocalTime
只包含时间,比如:23:12:10
5
LocalDateTime
包含日期和时间,比如:2018-02-05 23:14:21
6
Period
时间段
7
ZoneOffset
时区偏移量,比如:+8:00
8
ZonedDateTime
带时区的时间
9
Clock
时钟,比如获取目前美国纽约的时间
10
java.time.format.DateTimeFormatter
时间 ...
Java 集合
Java集合序言Java集合是我们使用最频繁的工具,也是面试的热点,但我们对它的理解仅限于使用上,而且大多数情况没有考虑过其使用规范。本系列文章将跟随源码的思路,分析实现的每个细节,以期在使用时避免各种不规范的坑。在这里,我们会惊艳于开发者优秀的设计,也会感激先辈们付出的艰辛努力,更重要的是知其所以然,少犯错误,写出优秀的代码。
基础知识概述对数据的操作,大抵就是增、删、改、查,以及在某些时候根据位置获取数据,有时可能还需要进行排序。改和查又可以理解为一致的操作,因为要修改一条数据需要先找到它,然后替换即可。接下来我们就从增、删、查这三点简要分析下当前使用比较广泛的几种数据结构。
数组数组在内存中占据一段连续的内存,所有的数据在内存中连续排列。它的大小是固定的,这一特性使得数组对于插入操作并不友好,我们分析ArrayList时就会看到这种操作的复杂。但数组对于位置的访问是极其友好的,它支持所谓RandomAccess特性,这使得基于位置的操作可以迅速完成,其时间复杂度为**O(1)。数组的数据顺序与插入顺序一致,所以查询操作需要遍历,其时间复杂度为O(n)**。
所以数组最大的优势在于 ...
Spring 监听器、过滤器、拦截器、AOP 比较
Spring 监听器、过滤器、拦截器、AOP 比较前言:在后端项目开发中,会有一些需要基于全局处理的程序。传统基于Servlet容器的程序中,我们可以使用过滤器和监听器,在Java 框架中还可以使用拦截器,而面向切面编程AOP更是作为Spring框架中的核心思想被大家所关注。本文一方面从概念上讲解Filter、Listener、Interceptor和aop的区别,另一方面更是从代码层面讲解如何在SpringBoot中应用开发。
它们的执行顺序如下(@ControllerAdvice本文暂不做介绍):
拦截顺序:ServletContextListener> Filter > Interception > AOP > 具体执行的方法 > AOP > @ControllerAdvice > Interception > Filter > ServletContextListener
根据实现原理分成下面两大类:
Filter和Listener:依赖Servlet容器,基于函数回调实现。可以拦截所有请求,覆盖范围更广,但无法获取ioc ...
Spring Framework
Spring Framework Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
Core Container
由 spring-core, spring-beans, spring-context, springcontext-support, 和 spring-expression (Spring Expression Language) 模块组成。
Spring-core和spring-beans提供了 Spring 框架的基本功能,包括控制反转(Inversion of Control,简称IoC)和依赖注入(Dependency Injection简称DI)的特性。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory将应用程序的配置和依赖性规范与实际的应用程序代 ...