行为型:观察者模式

定义 观察者模式属于行为型模式,它定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并自动更新。 一种一对多的关系中一称为被观察者也叫目标对象Subject而多则称为观察者对象Observe...阅读全文

项目中如何对XSS统一处理

XSS攻击是什么? XSS攻击是指攻击者利用网站中的漏洞,向页面中注入恶意脚本,从而获取用户的信息或者控制用户的计算机。 举一个通俗的例子,早期使用JSP页面渲染页面的项目,如果将用户名改成nick<alert>1</...阅读全文

一站式消息管理器

一站式的消息管理器 在网络应用中,消息处理是必不可少的,该文章主要简单介绍一款简单的消息管理器的实现,其具备以下功能: 提供多种消息序列化和反序列化方式,目前支持JDK、ProtoStuff以及JSON,提供其他自定义的序列化/反序列化...阅读全文

设计模式-六大原则

六大原则是设计模式的基石, 是后面所提具体的二十三种设计模式的指导思想 总则: 开放封闭原则 对扩展开放, 对修改封闭 当我们需要添加新的功能时, 可以通过添加新的代码或者模块来实现, 而不需要修改已有的功能模块, 这样可以避免新增的功...阅读全文

设计模式-index

设计模式是个老生常谈的话题, 不同的人对此有不同的看法 新手可能会觉得设计模式难以理解, 并且也只与编程语言有关, 或者只与前端后端有关, 适用范围很窄 或者就干脆觉得这玩意儿没啥卵用, 写了那么一大坨只是让代码变得复杂难懂, 不如直接...阅读全文

TCP和UDP协议的区别

TCP/IP协议中有两个具有代表性的传输层协议,分别是TCP协议和UDP协议。TCP协议全称传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。UDP协议全称用户数据报协议,是 TCP/IP协议模型传输层的无连接协议,它...阅读全文

聊聊数据压缩

这篇文章主要讨论数据压缩,数据压缩不仅可以节省存储空间,还可以提升网络传输性能,不同的压缩算法有不同的压缩比和压缩耗时,我们需要根据项目需求,选择不同的压缩算法。 ...阅读全文

怎么使用硬件同步原语替代锁?

这篇文章主要描述硬件同步原语,它是由计算机硬件提供的一组原子操作。 我们常见的原语操作有CAS和FAA两种。在某些情景下,我们可以使用它来替代锁,从而更加安全高效的操作数据。 ...阅读全文

聊聊缓存

这篇文章主要聊一下缓存,如何使用缓存来加速你的系统,减少磁盘 IO。按照读写性质,缓存可以分为读写缓存和只读缓存,两种缓存有各自的适用场景。 ...阅读全文

为什么Kafka的性能那么好?

这篇文章主要用来讨论Kafka是如何做到高性能的,包括使用批处理方式处理消息,使用顺序读写的方式使用磁盘,利用PageCache缓存数据并减少IO操作,使用零拷贝技术加速消费流程。 ...阅读全文

python策略模式场景

什么是策略模式? 在Python中,除了上次介绍的工厂模式,还有一种应用广泛的设计模式,即策略模式。策略模式就是一个策略类,它可以用相同的接口来调用不同的策略类,从而实现不同策略下的算法。 策略模式一般由三个部分组成: Context:...阅读全文

怎么处理消息积压问题?

这篇文章主要描述如何解决消息重发的问题,目前主流的消息队列产品都采用了At least once的服务质量,这就导致了很难避免消息重发的情况,我们可以将消费者业务逻辑设计成幂等服务来解决消息重发问题。 ...阅读全文