跟我学Shiro - 张开涛} @Override public boolean supports(AuthenticationToken token) { //仅支持 UsernamePasswordToken 类型的 Token return token instanceof UsernamePasswordToken; } @Override public 空参构造器,通过反射创建相应的实例。 常量值 setter 注入 会自动调用 jdbcRealm.setPermissionsLookupEnabled(true),对于这种常量值会自动类型转 换。 对象引用 setter 注入 [main] #提供了对根对象 securityManager 及其依赖的配置 securityManager=org.apache 2、通过 authenticationQuery 指定密码及盐查询 SQL; 此处还要注意 Shiro 默认使用了 apache commons BeanUtils,默认是不进行 Enum 类型转型 的 , 此 时 需 要 自 己 注 册 一 个 Enum 转 换 器 “ BeanUtilsBean.getInstance().getConvertUtils().register(new0 码力 | 219 页 | 4.16 MB | 10 月前3
Nacos架构&原理
程序包,就可以快速以单机模式启动 Nacos 或者以集群模式启动 Nacos。而 Nacos 是⼀个需要 存储数据的⼀个组件,因此,为了实现这个目标,就需要在 Nacos 内部实现数据存储。单机下其 实问题不大,简单的内嵌关系型数据库即可;但是集群模式下,就需要考虑如何保障各个节点之间 的数据⼀致性以及数据同步,而要解决这个问题,就不得不引入共识算法,通过算法来保障各个节 点之间的数据的⼀致性。 为什么 Nacos 服务实 例续约)。而对于 Nacos 服务发现注册中的持久化服务,因为所有的数据都是直接使用调用 Nacos 服务端直接创建,因此需要由 Nacos 保障数据在各个节点之间的强⼀致性,故而针对此类型的服务 数据,选择了强⼀致性共识算法来保障数据的⼀致性。 从配置管理来看 配置数据,是直接在 Nacos 服务端进行创建并进行管理的,必须保证大部分的节点都保存了此配 置数据才能认为配置被成 key) throws KvStorageException; ... } 由于 Nacos 的服务模块存储,更多的都是根据单个或者多个唯⼀ key 去执行点查的操作,因此 Key-Value 类型的存储接口最适合不过。而 Key-Value 的存储接口定义好之后,其实就是这个 KVStore 的具体实现了。可以直接将 KVStore 的实现对接 Redis,也可以直接对接 DB ,或者直0 码力 | 326 页 | 12.83 MB | 9 月前3
Apache Shiro参考手册中文版这就是了!它再简单不过了。 但如果他们的登录尝试失败了会怎样?你能够捕获各种具体的异常来告诉你到底发生了什么,并允许你去处理并作 出相应反应: 你能够检查到许多不同类型的异常,或抛出你自己的自定义条件的异常——Shiro 可能不提供的。请参见 AuthenticationException JavaDoc 获取更多。 Handy Hint ? 比方说,他们是是谁: 我们也可以测试他们是否有特定的角色: 我们还可以判断他们是否有权限在一个确定类型的实体上进行操作: 当然,我们可以执行极其强大的实例级权限检查——判断用户是否有能力访问某一类型的特定实例的能力: 小菜一碟,对吧? 最后,当用户完成了对应用程序的使用,他们可以注销: Final Tutorial 应用程序的理想配置。以下是程式化定制可能不适合 你的几点原因: 它需要你了解和实例化一个直接实现。这将会更好,如果你不需要了解具体的实现和在哪里可以找到它们。 由于 Java 的类型安全性,你需要转换通过 get*方法获取的对象来得到它们具体的实现。如此多的转换是丑陋 的,冗长的,并使你和实现类紧密连接起来。 SecurityUtils.setSecurityManager0 码力 | 92 页 | 1.16 MB | 1 年前3
Apache Shiro 1.2.x Reference Manual 中文翻译//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 permitted 它需要你确切知道并实例化一个直接实现(direct implementation),然而更好的做法是 你并不需要知道这些实现也不需要知道从哪里找到它们。 因为JAVA类型安全的特性,你必须对通过 get* 获取的对象进行强制类型转换,这么多强 制转换非常的丑陋、累赘并且会和你的类紧耦合。 SecurityUtils.setSecurityManager 方法会将 SecurityManager0 码力 | 196 页 | 2.34 MB | 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
Hello 算法 1.0.0b5 Java版3.1 数据结构分类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.2 基本数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.3 数字编码 * . . . . 本书主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度、空间复杂度的推算方法、常见类型、示 例等。 ‧ 数据结构:基本数据类型,数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤、 关注。 ‧ 当涉及到编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习0 码力 | 376 页 | 30.69 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Java 版3.1 数据结构分类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.2 基本数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.3 数字编码 * . . . . 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 免歧义。 ‧ 当涉及编程语言之间不一致的名词时,本书均以 Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 www.hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** *0 码力 | 379 页 | 18.48 MB | 10 月前3
《Java 应用与开发》课程讲义 - 王晓东. . . . . . . . . . . . . . . . . . . . . . . 10 2.1.1 数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.2 数据类型转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 7.5 枚举类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 iv 7.5.1 枚举类型的概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 7.5.2 遍历枚举类型常量值 . . . . . . . . . . . . . . . . . . . . . . . . . . 81 7.5.3 组合使用枚举类型与 switch . . . . . . . . . . . . . . . . . . . . . . 81 7.6 课后习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 码力 | 330 页 | 6.54 MB | 1 年前3
JAVA 应用与开发 - 泛型理��型的��,������� ▶ �合���的�型 ▶ �型的����� ������型类��型�法 ▶ 理�类型参数 ▶ 理�����������的�型类��型�法 ▶ 受��的类型参数 ��处理�型类型,����������型�器����作 1 19 �� 1 �型�� 2 �型类��型�法 3 处理�型类型 2 19 �型�� ���泛型 �型�Generics� �型��� JDK 5 型���� 作为��� Java 类型体�的��,���型���� Java ��� �的类型������������ 3 19 ���泛型 O 集合框架中的数据造型问题 ��的�合�器为�����的���,��������的元素 当作 Object 类型来处理���此��,�����时,我们��� ��合�取�的元素��������型�为���的类型� 无泛型机制的集合容器 1 showInfo(); 4 19 ���泛型 O 集合框架中的数据造型问题 ��的�合�器为�����的���,��������的元素 当作 Object 类型来处理���此��,�����时,我们��� ��合�取�的元素��������型�为���的类型� 无泛型机制的集合容器 1 Vector v = new Vector(); 2 v.addElement(new Person("Tom"0 码力 | 35 页 | 587.40 KB | 1 年前3
共 41 条
- 1
- 2
- 3
- 4
- 5













