跟我学Shiro - 张开涛
名/密码及其角色;role.role1=permission1,permission2 指定角色及权限信息; org.apache.shiro.realm.jdbc.JdbcRealm:通过 sql 查询相应的信息,如“select password from users where username = ?”获取用户密码,“select password, password_salt from 获取用户角色;“select permission from roles_permissions where role_name = ?”获取角色对 应的权限信息;也可以调用相应的 api 进行自定义 sql; JDBC Realm 使用 1、数据库及依赖 跟我学 Shiro——http://jinnianshilongnian.iteye.com/ 16 下建三张表:users(用户名/密码)、user_roles(用户/角色)、roles_permissions (角色/权限),具体请参照 shiro-example-chapter2/sql/shiro.sql;并添加一个用户记录,用 户名/密码为 zhang/123; 3、ini 配置(shiro-jdbc-realm.ini) 1、变量名=全限定类名0 码力 | 219 页 | 4.16 MB | 10 月前3Nacos架构&原理
当该节点接收到属于该节点负责的实例的写请求时,直接写入。 2. 当该节点接收到不属于该节点负责的实例的写请求时,将在集群内部路由,转发给对应的节点, 从而完成读写。 3. 当该节点接收到任何读请求时,都直接在本机查询并返回(因为所有实例都被同步到了每台机 器上)。 Distro 协议作为 Nacos 的内嵌临时实例⼀致性协议,保证了在分布式环境下每个节点上面的服务 信息的状态都能够及时地通知其他节点,可以维持数十万量级服务实例的存储和⼀致性。 对⼀致性 http 短连接,30 秒定 期创建销毁连接,GC 压力大 md5 值计算也有⼀定 开销,在可接受范围内 Nacos Naming HTTP/UDP UDP 推送 + 补偿查询 丢包,云架构下无法 反向推送 配置和服务器模块的数据推送通道不统⼀,http 短连接性能压力巨大,未来 Nacos 需要构建能够 同时支持配置以及服务的长链接通道,以标准的通信模型重构推送通道。 Server 之间 ○ 客户端 SDK 需要感知服务节点列表,并按照某种策略选择其中⼀个节点进行连接;底层连接 断开时,需要进行切换 Server 进行重连。 ○ 客户端基于当前可用的长链接进行配置的查询,发布,删除,监听,取消监听等配置领域的 R PC 语意接口通信。 ○ 感知配置变更消息,需要将配置变更消息通知推送当前监听的客户端;网络不稳定时,客户端 接收失败,需要支持重推,并告警。 ○0 码力 | 326 页 | 12.83 MB | 9 月前3《Java 应用与开发》课程讲义 - 王晓东
参数1:数组对象;参数2:替换的值 27 System.out.println(Arrays.toString(num)); // 打印结果:[6, 6, 6] 29 /* 30 * 通过二分法查询元素值在数组中的下标 binarySearch 31 */ 32 char[] a = { ’a’, ’b’, ’c’ , ’d’, ’e’ }; 33 int i = Arrays.binarySearch(a utility 的简写 java.io 可提供数据输入/输出相关功能的类 input/output 的简写 java.net Java 网络编程的相关功能类 网络 java.sql 提供数据库操作的相关功能类 结构化查询语言的简写 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. 登录页面为 login.html,登录处理 Servlet 为 LoginServlet.java,使用表单完成用户 登录数据的提交并通过 LoginServlet 查询判断用户名和密码是否合法(可以硬编 码,无需查询数据库),如用户名和密码合法则重定向到 index.html。 1 if (”admin”.equals(username) && ”admin”.equals(password))0 码力 | 330 页 | 6.54 MB | 1 年前3Apache Shiro 1.2.x Reference Manual 中文翻译
Shiro 提供强大的和直观的语法我们称之为 WildcardPermission 。 Simple Usage 简单示例 你想保护访问贵公司的打印机,这样有些人可以打印到特定的打印机,而其他人可以查询什么工 作目前在队列中。 一个非常简单的方法是使用授予用户“queryPrinter”权限。 然后你可以通过调用检查用户是否 有 queryPrinter 权限: subject.isPer 可以简单地授予他们一个: printer:print,query 它能够赋予用户 print 和query 打印机的能力。由于他们被授予了这两个操作,你可以通过调 用下面的语句来判断用户是否有能力查询打印机: Apache Shiro 1.2.x Reference Manual 中文翻译 61 6.1. Permissions 权限 subject.isPermitted("printer:query") 你使用三个部 件——第一个是域,第二个是操作,第三个是被付诸实施的实例。 简单例子 printer:query:lp7200 printer:print:epsoncolor 第一个定义了查询拥有ID lp7200 的打印机的行为。第二条权限定义了打印到拥有 ID epsoncolor 的打印机的行为。 Apache Shiro 1.2.x Reference Manual 中文翻译0 码力 | 196 页 | 2.34 MB | 1 年前3Java 应用与开发 - 面向对象编程进阶 PART1
utility 的简写 java.io 可提供数据输入/输出相关功能的类 input/output 的简写 java.net Java 网络编程的相关功能类 网络 java.sql 提供数据库操作的相关功能类 结构化查询语言的简 写 大纲 包 继承 访问控制 方法重写 关键字 super 关键字 this 包的创建 package 语句作为 Java 源文件的第一条语句,指明该文件中定 义0 码力 | 39 页 | 614.13 KB | 1 年前3Java 应用与开发 - JSP (Java Server Page)
forName("sun.jdbc.odbc.JdbcOdbc.Driver"); 5 cn = DriverManager.getConnection("jdbc:odbc:cityoa"); 6 String sql = "select␣*␣from␣EMP"; 7 ... ... 8 } 9 % > 大纲 JSP 概述 JSP 指令 JSP 动作 JSP 脚本 JSP 内置对象 本节习题 JSP 脚本 1. 整理一份你最喜欢的歌单,最少包括 10 首歌曲,并将歌单 存入 MySQL 数据库。每首歌曲需要包括曲名、演唱者、类 型风格等信息。 2. 编写 JSP 代码,直接在 JSP 中连接数据库并查询歌单,将 所有歌曲信息以 HTML table 的形式显示在页面上。 3. 注意可能会用到 JSTL 标记实现 table 的循环生成行,请自 行检索简单用法。 大纲 JSP 概述 JSP 指令0 码力 | 47 页 | 740.36 KB | 1 年前3Hello 算法 1.1.0 Java版
之间的映射,实现高效的元素查询。具体而 言,我们向哈希表中输入一个键 key ,则可以在 ?(1) 时间内获取对应的值 value 。 如图 6‑1 所示,给定 ? 个学生,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入一个 学号,返回对应的姓名”的查询功能,则可以采用图 6‑1 所示的哈希表来实现。 图 6‑1 哈希表的抽象表示 除哈希表外,数组和链表也可以实现查询功能,它们的效率对比如表 6‑1 所示。 ‧ 添加元素:仅需将元素添加至数组(链表)的尾部即可,使用 ?(1) 时间。 ‧ 查询元素:由于数组(链表)是乱序的,因此需要遍历其中的所有元素,使用 ?(?) 时间。 ‧ 删除元素:需要先查询到元素,再从数组(链表)中删除,使用 ?(?) 时间。 表 6‑1 元素查询效率对比 数组 链表 哈希表 查找元素 ?(?) ?(?) ?(1) 添加元素 ?(1) ?(1) (1) ?(1) 删除元素 ?(?) ?(?) ?(1) 观察发现,在哈希表中进行增删查改的时间复杂度都是 ?(1) ,非常高效。 6.1.1 哈希表常用操作 哈希表的常见操作包括:初始化、查询操作、添加键值对和删除键值对等,示例代码如下: 第 6 章 哈希表 hello‑algo.com 114 // === File: hash_map.java === /* 初始化哈希表 */ Map0 码力 | 378 页 | 18.47 MB | 1 年前3Hello 算法 1.0.0 Java版
之间的映射,实现高效的元素查询。具 体而言,我们向哈希表中输入一个键 key ,则可以在 ?(1) 时间内获取对应的值 value 。 如图 6‑1 所示,给定 ? 个学生,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入一个 学号,返回对应的姓名”的查询功能,则可以采用图 6‑1 所示的哈希表来实现。 图 6‑1 哈希表的抽象表示 除哈希表外,数组和链表也可以实现查询功能,它们的效率对比如表 6‑1 所示。 ‧ 添加元素:仅需将元素添加至数组(链表)的尾部即可,使用 ?(1) 时间。 ‧ 查询元素:由于数组(链表)是乱序的,因此需要遍历其中的所有元素,使用 ?(?) 时间。 ‧ 删除元素:需要先查询到元素,再从数组(链表)中删除,使用 ?(?) 时间。 表 6‑1 元素查询效率对比 数组 链表 哈希表 查找元素 ?(?) ?(?) ?(1) 添加元素 ?(1) ?(1) (1) ?(1) 删除元素 ?(?) ?(?) ?(1) 观察发现,在哈希表中进行增删查改的时间复杂度都是 ?(1) ,非常高效。 6.1.1 哈希表常用操作 哈希表的常见操作包括:初始化、查询操作、添加键值对和删除键值对等,示例代码如下: 第 6 章 哈希表 hello‑algo.com 114 // === File: hash_map.java === /* 初始化哈希表 */ Map0 码力 | 376 页 | 17.59 MB | 1 年前3Hello 算法 1.0.0b4 Java版
之间的映射,实现高效的元素查询。具体而言,我们向哈 希表输入一个 key ,则可以在 ?(1) 时间内获取对应的 value 。 以一个包含 ? 个学生的数据库为例,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入 一个学号,返回对应的姓名”的查询功能,则可以采用哈希表来实现。 Figure 6‑1. 哈希表的抽象表示 除哈希表外,我们还可以使用数组或链表实现查询功能。若将学生数据看作数组(链表)元素,则有: 看作数组(链表)元素,则有: ‧ 添加元素:仅需将元素添加至数组(链表)的尾部即可,使用 ?(1) 时间。 ‧ 查询元素:由于数组(链表)是乱序的,因此需要遍历其中的所有元素,使用 ?(?) 时间。 ‧ 删除元素:需要先查询到元素,再从数组中删除,使用 ?(?) 时间。 数组 链表 哈希表 查找元素 ?(?) ?(?) ?(1) 添加元素 ?(1) ?(1) ?(1) 删除元素 ?( (1) 观察发现,在哈希表中进行增删查改的时间复杂度都是 ?(1) ,非常高效。 6. 散列表 hello‑algo.com 92 6.1.1. 哈希表常用操作 哈希表的常见操作包括:初始化、查询操作、添加键值对和删除键值对等。 // === File: hash_map.java === /* 初始化哈希表 */ Mapmap = new HashMap<>(); 0 码力 | 342 页 | 27.39 MB | 1 年前3Hello 算法 1.2.0 简体中文 Java 版
之间的映射,实现高效的元素查询。具体而 言,我们向哈希表中输入一个键 key ,则可以在 ?(1) 时间内获取对应的值 value 。 如图 6‑1 所示,给定 ? 个学生,每个学生都有“姓名”和“学号”两项数据。假如我们希望实现“输入一个 学号,返回对应的姓名”的查询功能,则可以采用图 6‑1 所示的哈希表来实现。 图 6‑1 哈希表的抽象表示 除哈希表外,数组和链表也可以实现查询功能,它们的效率对比如表 6‑1 所示。 ‧ 添加元素:仅需将元素添加至数组(链表)的尾部即可,使用 ?(1) 时间。 ‧ 查询元素:由于数组(链表)是乱序的,因此需要遍历其中的所有元素,使用 ?(?) 时间。 ‧ 删除元素:需要先查询到元素,再从数组(链表)中删除,使用 ?(?) 时间。 表 6‑1 元素查询效率对比 数组 链表 哈希表 查找元素 ?(?) ?(?) ?(1) 添加元素 ?(1) ?(1) (1) ?(1) 删除元素 ?(?) ?(?) ?(1) 观察发现,在哈希表中进行增删查改的时间复杂度都是 ?(1) ,非常高效。 6.1.1 哈希表常用操作 哈希表的常见操作包括:初始化、查询操作、添加键值对和删除键值对等,示例代码如下: 第 6 章 哈希表 www.hello‑algo.com 114 // === File: hash_map.java === /* 初始化哈希表 */0 码力 | 379 页 | 18.48 MB | 9 月前3共 381 条- 1
- 2
- 3
- 4
- 5
- 6
- 39