Promise一个 Promise 是一个代理,它代表一个在创建 promise 时不一定已知的值。它允许你将处理程序与异步操作的最终成功值或失败原因关联起来。这使得异步方法可以像同步方法一样返回值:异步方法不会立即返回最终值,而是返回一个 promise,以便在将来的某个时间点提供该值。
一个 Promise 必然处于以下几种状态之一:
待定(pending):初始状态,既没有被兑现,也没有被拒绝。
已兑现(fulfilled):意味着操作成功完成。
已拒绝(rejected):意味着操作失败。
一个待定的 Promise 最终状态可以是已兑现并返回一个值,或者是已拒绝并返回一个原因(错误)。当其中任意一种情况发生时,通过 Promise 的 then 方法串联的处理程序将被调用。如果绑定相应处理程序时 Promise 已经兑现或拒绝,这处理程序将被立即调用,因此在异步操作完成和绑定处理程序之间不存在竞态条件。
如果一个 Promise 已经被兑现或拒绝,即不再处于待定状态,那么则称之为已敲定(settled)。
Vue组件简介
组件(Component)是 Vue.js 最强大的功能之一。
组件可以扩展 HTML 元素,封装可重用的代码,提高代码的复用性。
组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树
示例123456789101112131415161718192021<div id="app"> <student></student></div><script> const student = Vue.extend({ template: `<h1>你好 {{ msg }}</h1>`, data() { return { msg: 'XSS' } } }) let vm = ...
消息队列交互模型
消息队列两种模式点对点模式
点对点模式特点:
每个消息只有一个接收者(Consumer)(即一旦被消费,消息就不再在消息队列中)
发送者和接收者间没有依赖性,发送者发送消息之后,不管有没有接收者在运行,都不会影响到发送者下次发送消息;
接收者在成功接收消息之后需向队列应答成功,以便消息队列删除当前接收的消息;
发布订阅模式
发布/订阅模式特点:
每个消息可以有多个订阅者;
发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。
为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行;
Kafka简介
Kafka是由Apache软件基金会开发的一个开源流平台,由Scala和Java编写
Apache Kafka是一个分布式流平台。一个分布式的流平台应该包含3点关键的能力:
发布和订阅流数据流,类似于消息队列或者是企业消息传递系统
以容错的持久化方式存储数据流
处理数据流
上图,我们可以看到:
Producers:可以有很多的应用程序,将消 ...
最近项目收获1、Web消息格式前言 在Web项目开发中,我们都会和前端约定好,消息转换格式,便利于项目消息传输与使用,在此之前,我都是使用统一消息格式的类对象进行消息转换,而这次使用ResponseBodyAdvice接口,及逆行消息格式自动转换,并且自定义注解,在加上注解的类上或者是方法上,可以不进行消息类型的转换
ResponseBodyAdvice的使用ResponseBodyAdvice接口和RequestBodyAdvice接口类似, RequestBodyAdvice是请求到Controller之前拦截,做相应的处理操作, 而ResponseBodyAdvice是对Controller返回的{@code @ResponseBody}or a {@code ResponseEntity} 后,{@code HttpMessageConverter} 类型转换之前拦截, 进行相应的处理操作后,再将结果返回给客户端.
源码12345678910111213141516public interface Response ...
java
未读HTTP、HTTPS、以及跨域
HTTPS相对HTTP协议来说,不是特别安全,HTTPS可以解决以下问题
常规的 HTTP 通信,有以下的问题1.窃听风险 (eavesdropping): 第三方可以获知通信内容2.篡改风险(tampering): 第三方可以修改通信内容。3.冒充风险 (pretending) :第三方可以冒充他人身份参与通信.
https的设计
1.所有信息都是加密传播,第三方无法窃听。2.具有校验机制,一旦被篡改,通信双方会立刻发现3.配备身份证书,防止身份被冒充。
HTTP简介 HTTP 的全称是 HyperText Transfer Protocol (超文本传输协议)的缩写,是一种建立在 TCP 上的无状态连接。HTTP 是互联网的基础协议,用于客户端与服务器之间的通信,它规定了客户端和服务器之间的通信格式,包括请求与响应的格式。
基本的工作流程是客户端发送一个 HTTP 请求,服务端收到请求开始处理,处理结束返回给客户端结果,客户端对结果进行处理并展示。
请求报文格式主要由请求头,请求行,请求体组成
响应报文格式主要由状态行、响应头、响应正文 ...
CAS及原子操作概述CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。
CAS与volatile
结合CAS和volatile可以实现无锁并发,适用于线程数少、多核CPU的场景下使用
volatile获取共享变量时,为了保证该变量的可见性,需要使用volatile修饰。
它可以用来修饰成员变量和静态成员变量,它可以避免线程从自己的工作缓存中查找变量的值,必须到主存中获取它的值,线程操作volatile变量都是操作主存。即一个线程对volatile变量的修改,对另一个线程可见。
CAS必须借助volatile才能读取到共享变量的最新值来实现Compare-and-Swap的效果。
特点优点:
可以保证变量操作的原子性
并发量低时,CAS效率高于synchronized
在线程对共享资源占用时间较短的情况下,使用CAS机制效率也会较高
缺点:
无法解决ABA问题
可能会消耗较高的CPU
不能保证代码块的原子性
乐观锁 ...