0%

最近在维护一个老项目的时候,看到一段密码匹配的代码,感觉很奇怪,于是遍寻资料,最终还是很有收获。在密码学中,时序攻击是一种侧信道攻击,攻击者试图通过分析加密算法的时间执行来推导出密码。每一个逻辑运算在计算机需要时间来执行,根据输入不同,精确测量执行时间,根据执行时间反推出密码。
阅读全文 »

JDK1.8注解可以标注在任何类型上,获取注解的方式也随之扩展了。AnnotatedType 接口的目的在于获取泛型类型上的注解,包括泛型参数、通配符、上下边界等,前提是目标元素声明了泛型类型并且标注了注解,否则其 getType 方法将返回原始类型。
阅读全文 »

AnnotatedElement接口是用于反射获取注解的顶层接口,其api获取的注解与注解的存在形式息息相关,注解有四中存在形式:直接存在、间接存在、存在和关联。这几种注解存在的形式的出现原因,一方面是由于注解可以通过继承关系传递,另一方面是Java提供了定义可重复注解的功能。
阅读全文 »

很多时候,我们需要获取到泛型类上定义的具体类型,从而完成一些业务逻辑。比如,最常见的情景就是JSON的反序列化,需要将JSON字符串反序列化为泛型的具体类型,比如反序列化为 `List`,这就要求每一个 `List` 中的元素都是 `User` 对象。那么,如何获取到泛型类上定义的具体类型呢?这就是本文要阐述的内容。
阅读全文 »

Type接口是JDK1.5新增的表示Java所有类型的接口,它有5个组件,除了Java的类、接口的原始类型可以用Class来描述,其他的几个组件都是用来描述泛型类型的,分别是描述整个泛型的ParameterizedType、描述泛型类型变量的TypeVariable、描述泛型通配符的WildcardType,以及描述泛型数组的GenericArrayType。
阅读全文 »

泛型是编译期特性,我们能否创建泛型数组呢?通过 `Array` 类,除了可以动态的获取和设置数组的元素,还可以动态创建类型安全的数组。
阅读全文 »

反射是JDK5推出的非常重要的特性,通过反射,开发者可以在运行时动态的创建类实例,获取、更改、调用类的相关信息、方法等。反射也是各大框架使用的主要技术,如知名的Spring framework框架。
阅读全文 »

MindManger是Mindjet公司开发一款思维导图软件,目前已经更新到了2021版本。与其他几大思维导图软件相比,个人最钟爱MindManger,因为他功能更强大、界面更友好,支持强大的备注体系,插图片、查表格都可以,可以直接用来做知识体系整理,非常方便。
阅读全文 »

状态模式建议为对象的所有可能状态新建一个类, 然后将所有状态的对应行为抽取到这些类中。当控制一个对象的状态转换条件过于复杂时,就可以将判断逻辑转移到状态类中,以简化复杂的判断逻辑。
阅读全文 »

你的J2EE项目是否耗费了你太多的时间?它们是否难以调试?它们是否效率不彰?也许你还在使用传统的J2EE方案,然而这种主案太过复杂,而且并非真正面向对象。这里的很多问题都与EJB有关:EJB是一种复杂的技术,但它没有兑现自己曾经的承诺。
阅读全文 »

命令模式的定义:将一个请求封装为一个对象,从而可以用不同的请求对客户进行参数化,并且可以对请求排队或记录日志,还支持可以撤销的操作。
阅读全文 »

策略模式(Strategy Pattern),定义了一系列算法,并将他们封装起来,让他们之间可以相互替换,并且不影响使用这些算法的客户。
阅读全文 »

模板方法模式,其核心思想是:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
阅读全文 »

HTTP是Web的基础,这里所说的Web,不仅只是通常意义上的Browser/Server端的开发,而是Web Service。大多数人对HTTP的了解也就是这种程度了(没有读此书之前的我也是这样)。此书的意义在于,它让你知道,HTTP不仅只有一个简单的GET,HTTP可以做为一种通用的分布式编程的协议。现如今Web上大行其道的所谓Restful Web Service,其基础就是HTTP,而提出Rest这个概念的Roy Fielding,也是HTTP协议(RFC2616)的主要作者之一。
阅读全文 »

IntelliJ IDEA作为Java界IDE神一般的存在,深受广大java开发者的喜欢。目前官方最新版本为2020.3,本文介绍如何对其进行激活。
阅读全文 »

什么是代理?代理就是中介,它提供与服务提供方相同或者相似的功能,客户不再直接面对服务提供方,而是先找代理,再由代理去与服务提供方交互完成功能。现实生活中,有很多代理的例子,比如前边提到的外卖订餐,外卖小哥就是一个代理角色;又如,购买火车票,火车票代售点就是一个代理角色,用户直接可以去代售点购买车票;再如,各种中介所,如婚姻中介所、房产中介等等,都是代理。
阅读全文 »

享元模式,"享"即共享,"元"即元素,软件中则为对象,享元就是共享对象之意。这种设计模式用来共享对象而不是大量创建对象,以节约系统资源。
阅读全文 »

外观模式(Facade Pattern),也叫门面模式,是一种经常被使用的结构性设计模式。DP对其定义如下:通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问。
阅读全文 »

组合模式(Composite Pattern),将对象组合成树形结构以表示**"部分-整体"**的层次结构,使得用户对单个对象和组合对象的使用具有一致性。
阅读全文 »

在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式称为装饰模式。装饰模式属于一种结构型模式,它比继承更灵活。
阅读全文 »