摘要:
引言 在营销系统里,为了增加系统的活跃用户数,经常会有各种各样的营销活动。这类活动几乎都是为了充分利用存量用户的价值,促使他们分享产品或App以达到触达到更多用户的目的。又或者是出于营销目的,群发优惠券触达短信这种场景。 分享App活动页(或其他各种页面)时URL一般会带有各种参数,比如分享者fro 阅读全文
摘要:
注:本文面向于软考高级—系统架构设计师,具体来说是数据库部分,知识点偏零碎化。想要系统学习数据库原理的,可考虑去看《数据库原理》,清华大学出版社或其他出版社皆可。 概述 概念 关系,就是二维表。特性: 列不可分性:关系中每一列都是不可再分的属性,即不能出现如下复合属性 行列无序性:交换列的前后顺序不 阅读全文
摘要:
概述 关于TCP的杂乱知识点,不成体系,毕竟TCP真的太复杂。 TCP,Transmission Control Protocol;IP,Internet Protocol,两者共同组成TCP/IP协议族,包含一系列构成互联网基础的网络协议。 OSI七层网络模型 图片来自于OSI七层网络模型 OSI 阅读全文
摘要:
概述 在高并发场景下,请求量瞬间到达,后端服务器即使有缓存、集群主备、分库分表、容错降级等措施,也有可能扛不住这请求量,因此可考虑引入限流组件。限流的目的:防止恶意请求流量或流量超出系统承载。 应用场景: 网关层校验流量,拦截非法请求,或直接抛弃部分流量(后来的流量,如秒杀系统) 实时场景下的数据迁 阅读全文
摘要:
概述 ZooKeeper Atomic Broadcast,ZooKeeper原子消息广播协议。ZAB协议是为分布式协调服务ZK专门设计的一种支持崩溃恢复的原子广播协议。ZK主要依赖ZAB协议来实现分布式数据的最终一致性,基于该协议,ZK实现一种主备模式的系统架构来保持集群中各个副本之间的数据一致性 阅读全文
摘要:
概述 作为一个8年多Javaer,曾无数次看到Unsafe这个类,但一直没有去翻过源码,此为背景。 借助于IDEA查看JDK源码,却发现有两个Unsafe类: sun.misc.Unsafe jdk.internal.misc.Unsafe jdk.internal.misc.Unsafe和sun. 阅读全文
摘要:
概述 任何一个登录系统的密码不能明文存储,万一发生数据库泄漏事故(不管是内部人员导出数据库数据还是被黑客攻击破解数据库实例节点拿到数据库数据等,又或者是其他情况造成的),将产生巨大的损失。因此明文密码在存储到数据库之前需要加密处理。 加密算法有很多,大致有如下分类: 哈希函数算法:包括消息摘要算法( 阅读全文
摘要:
概述 与Spring、Spring MVC、Spring Boot一样,Spring Security里也有很多Handler接口、可以分为两大类,一类是普通的XxxHandler(见名知意),另一类是对应的ServerXxxHandler(RequestRejectedHandler除外)。 以A 阅读全文
摘要:
概述 负载均衡 负载均衡,即Load Balance,LB,通器常有两种实现手段,服务端和客户端。 负载均衡器,是带有负载均衡功能的实体(或载体),本文不做严格区分;即缩写LB,可表示负载均衡策略,也可以表示负载均衡器。 服务端LB的缺点,提供更强的流量控制权,但无法满足不同的消费者希望使用不同负载 阅读全文
摘要:
概述 Redis事务提供一种将多个命令打包,然后一次性、按顺序地执行的机制,在事务执行的期间不会主动中断,服务器在执行完事务中的所有命令之后,才会继续处理其他客户端的其他命令。 三个重要的保证: 批量操作在发送EXEC命令前被放入队列缓存 收到EXEC命令后进入事务执行,事务中任意命令执行失败,其余 阅读全文
摘要:
概述 Redis主从集群,一主多从模式,包括一个Master节点和多个Slave节点。Master负责数据的读写,Slave节点负责数据的查询。Master上收到的数据变更,会同步到Slave节点上实现数据的同步。通过这种架构实现可以Redis的读写分离,提升数据的查询性能。 主从集群不提供容错和恢 阅读全文
摘要:
概述 Redis 2.8版本发布稳定版Redis Sentinel,不过Sentinel集群版存在一些问题: 高可用性:Sentinel集群对Redis既有的主从集群提供有限的高可用保障; 在线扩容:节点下线,触发选举,选举涉及两个阶段;新增节点,数据迁移过程麻烦。 对比Redis Sentinel 阅读全文
摘要:
概述 Point-to-Point Protocol,点到点协议,工作于数据链路层,在链路层上传输网络层协议前验证链路的对端,主要用于在全双工的同异步链路上进行点到点的数据传输。 PPP主要是用来通过拨号或专线方式在两个网络节点之间建立连接、发送数据。PPP是各类型主机、网桥和路由器之间简单连接的一 阅读全文
摘要:
概述 无论是C端产品页面,还是后台系统页面,不可能一次性将全部数据加载出来。后台系统一般都是PC端登录,用Table组件(如Ant Design Table)渲染展示数据,可点击列表的下一页(或指定某一页)查看数据。C端产品如App,在下滑时可查看更多数据,看起来像是一次性加载数据,实际上也是分批请 阅读全文
摘要:
基础 简介 特点: 高吞吐、低延迟:kafka每秒可以处理几十万条消息,延迟最低只有几毫秒,每个Topic可以分多个Partition,Consumer Group对Partition进行Consumer操作 可扩展性:Kafka集群支持热扩展 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备 阅读全文
摘要:
概述 在ConcurrentSkipListMap里看到VarHandle,记录一下学习笔记。 VarHandle,变量句柄,是新的原子访问属性规范,JDK8以前都是通过sun.misc.Unsafe实现原子属性访问。见名知意,Unsafe是不安全API,理解不透彻使用不正确,会有意想不到的问题。从 阅读全文
摘要:
概述 所有异常都是继承自java.lang.Throwable类,Throwable有两个直接子类,Error和Exception。 Error用来表示程序底层或硬件有关的错误,这种错误和程序本身无关,如常见的NoClassDefFoundError。这种异常和程序本身无关,不需要检查,属于非受检异 阅读全文
摘要:
概述 SPI,Service Provider Interface,一种服务发现机制,指一些提供给你继承、扩展,完成自定义功能的类、接口或方法。 在SPI机制中,服务提供者为某个接口实现具体的类,而在运行时通过SPI机制,查找到对应的实现类,并将其加载进行使用。 JDK 6(参考java.util. 阅读全文
摘要:
概述 日志记录是应用程序运行中必不可少的一部分。具有良好格式和完备信息的日志,可以在程序出现问题时帮助开发人员迅速地定位错误的根源。日志所能提供的功能是多种多样的,包括记录程序运行时产生的错误信息、状态信息、调试信息和执行时间信息等。 System.out.println、System.err.pr 阅读全文
摘要:
概述 在Java开发中,我们会看到各种各样的对象(实体)类,包括: POJO:Plain Old Java Object,普通Java对象 VO:View Object,视图对象,返回给前端用于展示层,将某个页面(组件)的全部(或部分)数据封装到一个对象里,有些公司将其定义为**Resp对象,; V 阅读全文