跟我学Shiro - 张开涛........................................................................................ 192 模块关系依赖 .................................................................................................. Realm,分别是主体及验证主体的数据源。 环境准备 本文使用 Maven 构建,因此需要一点 Maven 知识。首先准备环境依赖: 添加 junit、common-logging 及 shiro-core 依赖即可。junit } @Override public boolean supports(AuthenticationToken token) { //仅支持 UsernamePasswordToken 类型的 Token return token instanceof UsernamePasswordToken; } @Override public0 码力 | 219 页 | 4.16 MB | 10 月前3
Nacos架构&原理
服务实 例续约)。而对于 Nacos 服务发现注册中的持久化服务,因为所有的数据都是直接使用调用 Nacos 服务端直接创建,因此需要由 Nacos 保障数据在各个节点之间的强⼀致性,故而针对此类型的服务 数据,选择了强⼀致性共识算法来保障数据的⼀致性。 从配置管理来看 配置数据,是直接在 Nacos 服务端进行创建并进行管理的,必须保证大部分的节点都保存了此配 置数据才能认为配置被成 ProtocolManager.this.cpProtocol = protocol; }); } ... } 其实,仅做完⼀致性协议抽象是不够的,如果只做到这里,那么服务注册发现以及配置管理,还是 需要依赖⼀致性协议的接口,在两个计算模块中耦合了带状态的接口;并且,虽然做了比较高度的 ⼀致性协议抽象,服务模块以及配置模块却依然还是要在自己的代码模块中去显示的处理⼀致性协 议的读写请求逻辑,以及需要 数据存储抽象 正如前面所说,⼀致性协议,就是用来保证数据⼀致的,如果利用⼀致性协议实现⼀个存储,那么 服务模块以及配置模块,就由原来的依赖⼀致性协议接口转变为了依赖存储接口,而存储接口后面 的具体实现,就比⼀致性协议要丰富得多了,并且服务模块以及配置模块也无需为直接依赖⼀致性 协议而承担多余的编码工作(快照、状态机实现、数据同步)。使得这两个模块可以更加的专注自 35 > Nacos 架构 己0 码力 | 326 页 | 12.83 MB | 9 月前3
Apache Shiro 1.2.x Reference Manual 中文翻译INI 文件易读易用,而且所依赖的组件很少,稍后你就会通过一个简单易 懂的示例明白 INI 在对简单对象进行配置的时候是非常有效率的,比如 SecurityManager 多种配置选择 Apache Shiro 1.2.x Reference Manual 中文翻译 10 2. Tutorial 教程 Shiro 的 SecurityManager 的实现和其所依赖的组件都是 JavaBean,所以可以用多种形式对 //password 不匹配,再输入? } catch ( LockedAccountException lae ) { //账号锁住了,不能登入。给个提示? } ... 更多类型异常 ... } catch ( AuthenticationException ae ) { //未考虑到的问题 - 错误? } 这里有许多不同类别的异常你可以检测到,也可以抛出你自己异常。详见 rings are for schwartz masters only."); } 同样,我们还可以执行非常强大的 instance-level (实例级别)的权限检测,检测用户是否具 备访问某个类型特定实例的权限: if ( currentUser.isPermitted( "winnebago:drive:eagle5" ) ) { log.info("You are permitted0 码力 | 196 页 | 2.34 MB | 1 年前3
基于 Java EE 的企业应用系统设计 - Spring MVC 01XML 的配置文件,可以编辑配置而无需 重新编译应用程序。 4. Spring MVC 实例化控制器,并根据用户输入来构造 bean。 5. Spring MVC 可以自动绑定用户输入并正确地转换数据类型。 6. Spring MVC 内置了常见的校验器,可以校验用户输入,若校验不 通过则重定向回输入表单。 7. Spring MVC 支持国际化和本地化,支持根据用户区域显示多国语 言。 8. Controller 和 RequestMapping 注释类型是 Spring MVC API 最 重要的两个注释类型。 2. 一个控制器类可以处理多个动作(而一个实现了 Controller 接口的控制器只能处理一个动作)。 3. 基于注解的控制器的请求映射不需要存储在配置文件中。 使用 RequestMapping 注释类型,可以对一个方法进行请求 处理。 大纲 Java Web 应用的开发演化 应用的开发演化 MVC 模式示例 Spring MVC 数据绑定和表单标签库 Controller 注解类型 org.springframework.stereotype.Controller 注解类型用于指示 Spring 类的实 例是一个控制器。 O @Controller 示例 package com.example.controller; import org.springframework0 码力 | 67 页 | 792.43 KB | 1 年前3
Java 应用与开发 - 面向对象编程进阶Java 中,子类的对象可以替代父类的对象使用称为多态。 O Java 引用变量与所引用对象间的类型匹配关系 ▶ 一个对象只能属于一种确定的数据类型,该类型自对象创建 直至销毁不能改变。 ▶ 一个引用类型变量可能引用(指向)多种不同类型的对象 ——既可以引用其声明类型的对象,也可以引用其声明类型 的子类的对象。 1 Person p = new Student(); //Student 是 Student类型对象 Person类型变量p 大纲 多态性 方法重载 关键字 static 关键字 final 什么是多态? 在 Java 中,子类的对象可以替代父类的对象使用称为多态。 O Java 引用变量与所引用对象间的类型匹配关系 ▶ 一个对象只能属于一种确定的数据类型,该类型自对象创建 直至销毁不能改变。 ▶ 一个引用类型变量可能引用(指向)多种不同类型的对象 ——既 ——既可以引用其声明类型的对象,也可以引用其声明类型 的子类的对象。 1 Person p = new Student(); //Student 是 Person 的子类 0x3a478b null 0 null name age school Student类型对象 Person类型变量p 大纲 多态性 方法重载 关键字 static 关键字 final 多态性 多态性同样适用与引用类型数组元素0 码力 | 49 页 | 659.74 KB | 1 年前3
Hello 算法 1.0.0b4 Java版3.1. 数据结构分类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.2. 基本数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.3. 数字编码 * . . . . 本书主要内容包括: ‧ 复杂度分析:数据结构和算法的评价维度,算法效率的评估方法。时间复杂度、空间复杂度的推算方 法、常见类型、示例等。 ‧ 数据结构:基本数据类型,数据结构的分类方法。数组、链表、栈、队列、散列表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤、 标注,以避免歧义。 ‧ 涉及到编程语言之间不一致的名词,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2. 在动画图解中高效学习0 码力 | 342 页 | 27.39 MB | 1 年前3
Java 应用与开发 - 类加载和反射类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 反射机制 ▶ 程序运行时,允许改变程序结构或变量类型,这种语言称为 动态语言。从这个观点看,Perl、Python、Ruby 是动态语 言,C++、Java、C# 不是动态语言。 ▶ 但是 Java 有着一个非常突出的动态相关机制:反射 (Refl 方法来调用 execute 方法。 这个过程是基于 Java 反射框架完成的。 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 反射的主要用途 O 依赖注入 有两个组件 A 和 B,A 依赖于 B。 1 public class A { 2 public void importantMethod() { 3 B b = ...; // get an instance } 7 } 我们需要获得 B 的实例的引用。如果 B 是接口�有多个实现该 怎么做? 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 反射的主要用途 3 O 依赖注入 接管对象的创建工作,并将该对象的引用注入需要该对象的组 件。例如,我们使用 Spring1框架将对象 B 注入到对象 A 中,A 需要进行如下修改,加入 setB() 方法: 1 public0 码力 | 46 页 | 714.40 KB | 1 年前3
Hello 算法 1.1.0 Java版3.1 数据结构分类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.2 基本数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.3 数字编码 * . . . . 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 免歧义。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 Java版3.1 数据结构分类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.2 基本数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.3 数字编码 * . . . . 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 加粗,这类文字值得特别关注。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 第 0 章 前言 hello‑algo.com 50 码力 | 376 页 | 17.59 MB | 1 年前3
Apache Shiro参考手册中文版为没有关联到登录的用户启用"Remember Me"服务 … 以及更多——全部集成到紧密结合的易于使用的 API 中。 Shiro 视图在所有应用程序环境下实现这些目标——从最简单的命令行应用程序到最大的企业应用,不强制依赖其 他第三方框架,容器,或应用服务器。当然,该项目的目标是尽可能地融入到这些环境,但它能够在任何环境下立 即可用。 Apache Shiro Features Apache Shiro 为此,Shiro 通过基于文本的 INI 配置文件提供了一个默认的"共性(common denominator)"解决方案。近来人们已 经相当厌倦了使用笨重的 XML 文件,且 INI 文件易于阅读,使用简单,依赖性低。你稍后将会看到有了对象导航图 的简单理解,INI 文件能够有效地被用来配置简单的对象图,如 SecurityManager。 Many Configuration Options 这就是了!它再简单不过了。 但如果他们的登录尝试失败了会怎样?你能够捕获各种具体的异常来告诉你到底发生了什么,并允许你去处理并作 出相应反应: 你能够检查到许多不同类型的异常,或抛出你自己的自定义条件的异常——Shiro 可能不提供的。请参见 AuthenticationException JavaDoc 获取更多。 Handy Hint0 码力 | 92 页 | 1.16 MB | 1 年前3
共 42 条
- 1
- 2
- 3
- 4
- 5













