 《Java 应用与开发》课程讲义 - 王晓东3.3 二维数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3.1 二维数组的声明和内存分配 . . . . . . . . . . . . . . . . . . . . . . 23 3.3.2 二维数组定义的含义 . . . . . . . . . . . . . . . . . . . 157 12.2.4 捕获和处理 IOException . . . . . . . . . . . . . . . . . . . . . . . . 158 12.2.5 声明抛出异常 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 12.2.6 人工抛出异常 . . . . . . . . Servlet 配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 16.5.1 Servlet 声明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 16.5.2 Servlet 初始参数 . . . . . .0 码力 | 330 页 | 6.54 MB | 1 年前3 《Java 应用与开发》课程讲义 - 王晓东3.3 二维数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3.1 二维数组的声明和内存分配 . . . . . . . . . . . . . . . . . . . . . . 23 3.3.2 二维数组定义的含义 . . . . . . . . . . . . . . . . . . . 157 12.2.4 捕获和处理 IOException . . . . . . . . . . . . . . . . . . . . . . . . 158 12.2.5 声明抛出异常 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 12.2.6 人工抛出异常 . . . . . . . . Servlet 配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 16.5.1 Servlet 声明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 16.5.2 Servlet 初始参数 . . . . . .0 码力 | 330 页 | 6.54 MB | 1 年前3
 Java 应用与开发 - 面向对象编程进阶引用变量与所引用对象间的类型匹配关系 ▶ 一个对象只能属于一种确定的数据类型,该类型自对象创建 直至销毁不能改变。 ▶ 一个引用类型变量可能引用(指向)多种不同类型的对象 ——既可以引用其声明类型的对象,也可以引用其声明类型 的子类的对象。 1 Person p = new Student(); //Student 是 Person 的子类 0x3a478b null 0 null name 引用变量与所引用对象间的类型匹配关系 ▶ 一个对象只能属于一种确定的数据类型,该类型自对象创建 直至销毁不能改变。 ▶ 一个引用类型变量可能引用(指向)多种不同类型的对象 ——既可以引用其声明类型的对象,也可以引用其声明类型 的子类的对象。 1 Person p = new Student(); //Student 是 Person 的子类 0x3a478b null 0 null name new Person(); 4 p[2] = new Graduate(); //�设 Graduate 类继承了 Student 类 父类引用对子类对象的能力屏蔽性 一个引用类型变量如果声明为父类的类型,但实际引用的是子类 对象,该变量则不能再访问子类中添加的属性和方法。 1 Student m = new Student(); 2 m.setSchool("ouc"); // 合法0 码力 | 49 页 | 659.74 KB | 1 年前3 Java 应用与开发 - 面向对象编程进阶引用变量与所引用对象间的类型匹配关系 ▶ 一个对象只能属于一种确定的数据类型,该类型自对象创建 直至销毁不能改变。 ▶ 一个引用类型变量可能引用(指向)多种不同类型的对象 ——既可以引用其声明类型的对象,也可以引用其声明类型 的子类的对象。 1 Person p = new Student(); //Student 是 Person 的子类 0x3a478b null 0 null name 引用变量与所引用对象间的类型匹配关系 ▶ 一个对象只能属于一种确定的数据类型,该类型自对象创建 直至销毁不能改变。 ▶ 一个引用类型变量可能引用(指向)多种不同类型的对象 ——既可以引用其声明类型的对象,也可以引用其声明类型 的子类的对象。 1 Person p = new Student(); //Student 是 Person 的子类 0x3a478b null 0 null name new Person(); 4 p[2] = new Graduate(); //�设 Graduate 类继承了 Student 类 父类引用对子类对象的能力屏蔽性 一个引用类型变量如果声明为父类的类型,但实际引用的是子类 对象,该变量则不能再访问子类中添加的属性和方法。 1 Student m = new Student(); 2 m.setSchool("ouc"); // 合法0 码力 | 49 页 | 659.74 KB | 1 年前3
 Apache Shiro参考手册中文版进制编码,但可以使用 Base64 编码代替 16 进制编码来配置(见下面)。 一旦你指定了文本密码散列值,你得告诉 Shiro 这些都是加密的。你可以通过配置在[main] section 中隐式地创建 iniRealm 来使用合适的 CredentialsMatcher 实现来对应到你所指定的哈希算法: 你可以像任何其他对象一样在 CredentialsMatcher 它将会遍历该集合,并对每一个支持提交 AuthenticationToken 的 Realm 调用 Realm 的 getAuthenticationInfo 方 法。 Implicit ordering(隐式排列) 当使用 Shiro 的 INI 配置文件格式时,你应该配置 Realm 处理 AuthenticationToken 的顺序,你想要的顺序。例 如,在 shiro.ini 中,Realm 将会以它们在 Realm Inclusion 当你显式地配置 securityManager.realms 的属性是,只有已引用的 Realm 将会在 SecurityManager 中被配置。这意味着你能够在 INI 文件中定义 5 个 realm,但是实际上只能使用 3 个如果只有 这 3 个被引用到 realm 的属性中的话.这是和隐式 realm 顺序不同的,所有可用的隐式的 realm 都将被使用。0 码力 | 92 页 | 1.16 MB | 1 年前3 Apache Shiro参考手册中文版进制编码,但可以使用 Base64 编码代替 16 进制编码来配置(见下面)。 一旦你指定了文本密码散列值,你得告诉 Shiro 这些都是加密的。你可以通过配置在[main] section 中隐式地创建 iniRealm 来使用合适的 CredentialsMatcher 实现来对应到你所指定的哈希算法: 你可以像任何其他对象一样在 CredentialsMatcher 它将会遍历该集合,并对每一个支持提交 AuthenticationToken 的 Realm 调用 Realm 的 getAuthenticationInfo 方 法。 Implicit ordering(隐式排列) 当使用 Shiro 的 INI 配置文件格式时,你应该配置 Realm 处理 AuthenticationToken 的顺序,你想要的顺序。例 如,在 shiro.ini 中,Realm 将会以它们在 Realm Inclusion 当你显式地配置 securityManager.realms 的属性是,只有已引用的 Realm 将会在 SecurityManager 中被配置。这意味着你能够在 INI 文件中定义 5 个 realm,但是实际上只能使用 3 个如果只有 这 3 个被引用到 realm 的属性中的话.这是和隐式 realm 顺序不同的,所有可用的隐式的 realm 都将被使用。0 码力 | 92 页 | 1.16 MB | 1 年前3
 Apache Shiro 1.2.x Reference Manual 中文翻译任何应用程序 Apache Shiro设计从一开始就支持任何应用程序——从最小的命令行应用程序最大的集群 web 应用程序。对于本教程,尽管我们创建一个简单的应用程序,你都知道运用相同的使用模 式来进行应用程序创建或部署。 本教程需要 Java 1.5 或更高版本。 我们还将使用 Apache Maven 作为我们的构建工具,当然 这对于 Apache Shiro 来说不是必须使用。你可能获得 else'角色),但复杂 的程序中,这会成为你程序生命周期中一个主要的问题,会给你的软件带来很大的维护代 价。 明确为角色指定权限:明确为角色指定权限本质上是一组权限指令的名称集,在这种形 式下,程序(以及 Shiro)准确知道一个特定的角色是什么意思,因为它确切知道某行为 是否可以执行,而不用去猜测特定的角色可以或不可以做什么。 Shiro 团队提倡使用权限和明确为角色指定权限替代原始的将权限隐含于角色中的方法,这样 1.2.x Reference Manual 中文翻译 59 6. Authorization 授权 6.1. Permissions 权限 Shiro定义了一个许可声明,定义了一个明确的行为或行动。 这是一个原始功能的声明在一个应 用程序而已。 权限是最低级别构造安全策略,他们只明确定义应用程序可以做“什么”。 他们不描述"谁"能够执行的操作。 一些权限的例子: 打开一个文件 浏览'/user/list'0 码力 | 196 页 | 2.34 MB | 1 年前3 Apache Shiro 1.2.x Reference Manual 中文翻译任何应用程序 Apache Shiro设计从一开始就支持任何应用程序——从最小的命令行应用程序最大的集群 web 应用程序。对于本教程,尽管我们创建一个简单的应用程序,你都知道运用相同的使用模 式来进行应用程序创建或部署。 本教程需要 Java 1.5 或更高版本。 我们还将使用 Apache Maven 作为我们的构建工具,当然 这对于 Apache Shiro 来说不是必须使用。你可能获得 else'角色),但复杂 的程序中,这会成为你程序生命周期中一个主要的问题,会给你的软件带来很大的维护代 价。 明确为角色指定权限:明确为角色指定权限本质上是一组权限指令的名称集,在这种形 式下,程序(以及 Shiro)准确知道一个特定的角色是什么意思,因为它确切知道某行为 是否可以执行,而不用去猜测特定的角色可以或不可以做什么。 Shiro 团队提倡使用权限和明确为角色指定权限替代原始的将权限隐含于角色中的方法,这样 1.2.x Reference Manual 中文翻译 59 6. Authorization 授权 6.1. Permissions 权限 Shiro定义了一个许可声明,定义了一个明确的行为或行动。 这是一个原始功能的声明在一个应 用程序而已。 权限是最低级别构造安全策略,他们只明确定义应用程序可以做“什么”。 他们不描述"谁"能够执行的操作。 一些权限的例子: 打开一个文件 浏览'/user/list'0 码力 | 196 页 | 2.34 MB | 1 年前3
 基于 Java EE 的企业应用系统设计 - Spring MVC 02convert.converter.Converter 接口的类。 O 接口声明和方法 public interface Converter 基于 Java EE 的企业应用系统设计 - Spring MVC 02convert.converter.Converter 接口的类。 O 接口声明和方法 public interface Converter- { T convert(S source); } S 表示源类型,T 表示目标类型。例如,为了创建一个可以将 Long 转换成 Date 的 Converter,声明 Converter 类并实现 convert 方法, 如下: public 验证器 表达式语言(EL) JSTL Formatter 为了创建 Formatter,要编写实现 org.springframework.format.Formatter 接口的类。 O 接口声明和方法 public interface Formatter- { T parse(String text, java.util.Locale locale); String print(T JSTL 表达式语言 ▶ JSP2.0 最重要的特性之一就是表达式语言(EL),可以用它 来访问应用程序数据。 ▶ EL 设计成可以轻松地编写免脚本的 JSP 页面,而不需要使 用任何 JSP 声明、表达式等元素。 O EL 的语法 ${expression} ▶ 例如表达式 x+y 可以写成:$x+y,计算结果的类型为 String。 ▶ 如果在定制标签的属性值中使用 EL 表达式,那么该表达式的取值 0 码力 | 56 页 | 866.07 KB | 1 年前3
 跟我学Shiro - 张开涛.......................................................................... 184 第二十三章 多项目集中权限管理及分布式会话 ....................................................................... 191 部署架构............... 来管理主体与应用之间交互的数据;这样的话,比如我们在 Web 环境用,刚开始是一台 Web 服务器;接着又上了台 EJB 服务器;这时想把两台服务器的会话数据放到一个地方, 这个时候就可以实现自己的分布式会话(如把数据放到 Memcached 服务器); SessionDAO:DAO 大家都用过,数据访问对象,用于会话的 CRUD,比如我们想把 Session 保存到数据库,那么可以实现自己的 SessionDAO,通过如 也需要从 Realm 得到用户相应的角色/权限进行验证用户是否能进行操作;可以把 Realm 看 成 DataSource , 即 安 全 数 据 源 。 如 我 们 之 前 的 ini 配 置 方 式 将 使 用 org.apache.shiro.realm.text.IniRealm。 org.apache.shiro.realm.Realm 接口如下: 跟我学 Shiro—0 码力 | 219 页 | 4.16 MB | 10 月前3 跟我学Shiro - 张开涛.......................................................................... 184 第二十三章 多项目集中权限管理及分布式会话 ....................................................................... 191 部署架构............... 来管理主体与应用之间交互的数据;这样的话,比如我们在 Web 环境用,刚开始是一台 Web 服务器;接着又上了台 EJB 服务器;这时想把两台服务器的会话数据放到一个地方, 这个时候就可以实现自己的分布式会话(如把数据放到 Memcached 服务器); SessionDAO:DAO 大家都用过,数据访问对象,用于会话的 CRUD,比如我们想把 Session 保存到数据库,那么可以实现自己的 SessionDAO,通过如 也需要从 Realm 得到用户相应的角色/权限进行验证用户是否能进行操作;可以把 Realm 看 成 DataSource , 即 安 全 数 据 源 。 如 我 们 之 前 的 ini 配 置 方 式 将 使 用 org.apache.shiro.realm.text.IniRealm。 org.apache.shiro.realm.Realm 接口如下: 跟我学 Shiro—0 码力 | 219 页 | 4.16 MB | 10 月前3
 JAVA 应用与开发 - 高级类特性������接口�����象的���������象� �的����������������实现��� 接口�抽象方法����的定义的���������接口��� ��的抽象类���抽象类�只包含常量定义和方法声明,而没有 变量和方法的实现� 8 29 ���interface� 接口 ��������接口����为��������������接 ��������的部��� � Java ����� ������接口�����象的���������象� �的����������������实现��� 接口�抽象方法����的定义的���������接口��� ��的抽象类���抽象类�只包含常量定义和方法声明,而没有 变量和方法的实现� 8 29 ���interface� 接口 ��������接口����为��������������接 ��������的部��� � Java ����� ������接口�����象的���������象� �的����������������实现��� 接口�抽象方法����的定义的���������接口��� ��的抽象类���抽象类�只包含常量定义和方法声明,而没有 变量和方法的实现� 8 29 ���� 接口�定义的����� public static final 的��接口�定义的方 法���� public abstract 的����������部���部0 码力 | 61 页 | 677.55 KB | 1 年前3 JAVA 应用与开发 - 高级类特性������接口�����象的���������象� �的����������������实现��� 接口�抽象方法����的定义的���������接口��� ��的抽象类���抽象类�只包含常量定义和方法声明,而没有 变量和方法的实现� 8 29 ���interface� 接口 ��������接口����为��������������接 ��������的部��� � Java ����� ������接口�����象的���������象� �的����������������实现��� 接口�抽象方法����的定义的���������接口��� ��的抽象类���抽象类�只包含常量定义和方法声明,而没有 变量和方法的实现� 8 29 ���interface� 接口 ��������接口����为��������������接 ��������的部��� � Java ����� ������接口�����象的���������象� �的����������������实现��� 接口�抽象方法����的定义的���������接口��� ��的抽象类���抽象类�只包含常量定义和方法声明,而没有 变量和方法的实现� 8 29 ���� 接口�定义的����� public static final 的��接口�定义的方 法���� public abstract 的����������部���部0 码力 | 61 页 | 677.55 KB | 1 年前3
 Java 应用与开发 - 面向对象编程进阶 PART14 Test t = new Test(); 5 t.m1(); 6 } 7 } 大纲 包 继承 访问控制 方法重写 关键字 super 关键字 this Java 包特性 一个类如果未声明为 public 的,则只能在其所在包中被使用, 其他包中的类即使在源文件中使用 import 语句也无法引入它。 可以不在源文件开头使用 import 语句导入要使用的有名包中的 类,而是在程序代 super 关键字 this 继承 Java 类(继承其他类)声明语法格式: 1 [< 修饰符 >] class < 类名 > [extends < 父类名 >] { 2 [< 属性声明 >] 3 [< 构造方法声明 >] 4 [< 方法声明 >] 5 } Object 类是所有 Java 类的最高层父类, 如果在类的声明中未使 用 extends 关键字指明其父类,则默认父类为 Object 继承 访问控制 方法重写 关键字 super 关键字 this 访问控制 访问控制是指对 Java 类或类中成员的操作进行限制,即规定其 在多大的范围内可以被直接访问。 O 类的访问控制 在声明 Java 类时可以在 class 关键字前使用 public 来修饰,也 可以不使用该修饰符。public 的类可在任意场合被引入和使用, 而非 public 的类只能在其所在包中被使用。 O 类中成员的访问控制0 码力 | 39 页 | 614.13 KB | 1 年前3 Java 应用与开发 - 面向对象编程进阶 PART14 Test t = new Test(); 5 t.m1(); 6 } 7 } 大纲 包 继承 访问控制 方法重写 关键字 super 关键字 this Java 包特性 一个类如果未声明为 public 的,则只能在其所在包中被使用, 其他包中的类即使在源文件中使用 import 语句也无法引入它。 可以不在源文件开头使用 import 语句导入要使用的有名包中的 类,而是在程序代 super 关键字 this 继承 Java 类(继承其他类)声明语法格式: 1 [< 修饰符 >] class < 类名 > [extends < 父类名 >] { 2 [< 属性声明 >] 3 [< 构造方法声明 >] 4 [< 方法声明 >] 5 } Object 类是所有 Java 类的最高层父类, 如果在类的声明中未使 用 extends 关键字指明其父类,则默认父类为 Object 继承 访问控制 方法重写 关键字 super 关键字 this 访问控制 访问控制是指对 Java 类或类中成员的操作进行限制,即规定其 在多大的范围内可以被直接访问。 O 类的访问控制 在声明 Java 类时可以在 class 关键字前使用 public 来修饰,也 可以不使用该修饰符。public 的类可在任意场合被引入和使用, 而非 public 的类只能在其所在包中被使用。 O 类中成员的访问控制0 码力 | 39 页 | 614.13 KB | 1 年前3
 Hello 算法 1.1.0 Java版return n + res; } 图 2‑3 展示了该函数的递归过程。 图 2‑3 求和函数的递归过程 虽然从计算角度看,迭代与递归可以得到相同的结果,但它们代表了两种完全不同的思考和解决问题的范 式。 ‧ 迭代:“自下而上”地解决问题。从最基础的步骤开始,然后不断重复或累加这些步骤,直到任务完成。 ‧ 递归:“自上而下”地解决问题。将原问题分解为更小的子问题,这些子问题和原问题具有相同的形式。 总结以上内容,如表 2‑1 所示,迭代和递归在实现、性能和适用性上有所不同。 表 2‑1 迭代与递归特点对比 第 2 章 复杂度分析 hello‑algo.com 27 迭代 递归 实现方 式 循环结构 函数调用自身 时间效 率 效率通常较高,无函数调用开销 每次函数调用都会产生开销 内存使 用 通常使用固定大小的内存空间 累积函数调用可能使用大量的栈帧空间 适用问 题 归:当函数完成执行并返回时,对应的栈帧会被从“调用栈”上移除,恢复之前函数的执行环境。 因此,我们可以使用一个显式的栈来模拟调用栈的行为,从而将递归转化为迭代形式: // === File: recursion.java === /* 使用迭代模拟递归 */ int forLoopRecur(int n) { // 使用一个显式的栈来模拟系统调用栈 Stack Hello 算法 1.1.0 Java版return n + res; } 图 2‑3 展示了该函数的递归过程。 图 2‑3 求和函数的递归过程 虽然从计算角度看,迭代与递归可以得到相同的结果,但它们代表了两种完全不同的思考和解决问题的范 式。 ‧ 迭代:“自下而上”地解决问题。从最基础的步骤开始,然后不断重复或累加这些步骤,直到任务完成。 ‧ 递归:“自上而下”地解决问题。将原问题分解为更小的子问题,这些子问题和原问题具有相同的形式。 总结以上内容,如表 2‑1 所示,迭代和递归在实现、性能和适用性上有所不同。 表 2‑1 迭代与递归特点对比 第 2 章 复杂度分析 hello‑algo.com 27 迭代 递归 实现方 式 循环结构 函数调用自身 时间效 率 效率通常较高,无函数调用开销 每次函数调用都会产生开销 内存使 用 通常使用固定大小的内存空间 累积函数调用可能使用大量的栈帧空间 适用问 题 归:当函数完成执行并返回时,对应的栈帧会被从“调用栈”上移除,恢复之前函数的执行环境。 因此,我们可以使用一个显式的栈来模拟调用栈的行为,从而将递归转化为迭代形式: // === File: recursion.java === /* 使用迭代模拟递归 */ int forLoopRecur(int n) { // 使用一个显式的栈来模拟系统调用栈 Stack- stack = new Stack<>(); 0 码力 | 378 页 | 18.47 MB | 1 年前3
 Hello 算法 1.0.0 Java版return n + res; } 图 2‑3 展示了该函数的递归过程。 图 2‑3 求和函数的递归过程 虽然从计算角度看,迭代与递归可以得到相同的结果,但它们代表了两种完全不同的思考和解决问题的范 式。 ‧ 迭代:“自下而上”地解决问题。从最基础的步骤开始,然后不断重复或累加这些步骤,直到任务完成。 ‧ 递归:“自上而下”地解决问题。将原问题分解为更小的子问题,这些子问题和原问题具有相同的形式。 总结以上内容,如表 2‑1 所示,迭代和递归在实现、性能和适用性上有所不同。 表 2‑1 迭代与递归特点对比 第 2 章 复杂度分析 hello‑algo.com 27 迭代 递归 实现方 式 循环结构 函数调用自身 时间效 率 效率通常较高,无函数调用开销 每次函数调用都会产生开销 内存使 用 通常使用固定大小的内存空间 累积函数调用可能使用大量的栈帧空间 适用问 题 归:当函数完成执行并返回时,对应的栈帧会被从“调用栈”上移除,恢复之前函数的执行环境。 因此,我们可以使用一个显式的栈来模拟调用栈的行为,从而将递归转化为迭代形式: // === File: recursion.java === /* 使用迭代模拟递归 */ int forLoopRecur(int n) { // 使用一个显式的栈来模拟系统调用栈 Stack Hello 算法 1.0.0 Java版return n + res; } 图 2‑3 展示了该函数的递归过程。 图 2‑3 求和函数的递归过程 虽然从计算角度看,迭代与递归可以得到相同的结果,但它们代表了两种完全不同的思考和解决问题的范 式。 ‧ 迭代:“自下而上”地解决问题。从最基础的步骤开始,然后不断重复或累加这些步骤,直到任务完成。 ‧ 递归:“自上而下”地解决问题。将原问题分解为更小的子问题,这些子问题和原问题具有相同的形式。 总结以上内容,如表 2‑1 所示,迭代和递归在实现、性能和适用性上有所不同。 表 2‑1 迭代与递归特点对比 第 2 章 复杂度分析 hello‑algo.com 27 迭代 递归 实现方 式 循环结构 函数调用自身 时间效 率 效率通常较高,无函数调用开销 每次函数调用都会产生开销 内存使 用 通常使用固定大小的内存空间 累积函数调用可能使用大量的栈帧空间 适用问 题 归:当函数完成执行并返回时,对应的栈帧会被从“调用栈”上移除,恢复之前函数的执行环境。 因此,我们可以使用一个显式的栈来模拟调用栈的行为,从而将递归转化为迭代形式: // === File: recursion.java === /* 使用迭代模拟递归 */ int forLoopRecur(int n) { // 使用一个显式的栈来模拟系统调用栈 Stack- stack = new Stack<>(); 0 码力 | 376 页 | 17.59 MB | 1 年前3
共 36 条
- 1
- 2
- 3
- 4













