Java 应用与开发 - Java EE 监听器编程大纲 监听器概述 Java EE 监听器类型 ServletContext 对象监听器 ServletContext 对象属性监听器 本节习题 Java 应用与开发 Java EE 监听器编程 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 December 3, 2018 大纲 监听器概述 Java EE 监听器类型 ServletContext 对象监听器 ServletContext ServletContext 对象属性监听器 本节习题 学习目标 1. 理解监听器的概念。 2. 掌握 Java EE 的监听器的主要功能和包含的类型。 3. 掌握监听器的编程和配置,学会编写监听器代码。 大纲 监听器概述 Java EE 监听器类型 ServletContext 对象监听器 ServletContext 对象属性监听器 本节习题 大纲 监听器概述 Java EE 监听器类型 ServletContext 对象监听器 ServletContext 对象属性监听器 本节习题 大纲 监听器概述 Java EE 监听器类型 ServletContext 对象监听器 ServletContext 对象属性监听器 本节习题 接下来⋯ 监听器概述 Java EE 监听器类型 ServletContext 对象监听器 ServletContext 对象属性监听器 本节习题 大纲 监听器概述 Java0 码力 | 22 页 | 549.84 KB | 1 年前3
《Java 应用与开发》课程讲义 - 王晓东118 10.4.1 Iterator 接口概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 10.4.2 使用迭代器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 10.5 集 . . . . . . . . . . . . . 11.1.5 Panel 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 11.1.6 布局管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 11.1.7 容器的嵌套使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 11.2.4 GUI 事件及相应监听器接口 . . . . . . . . . . . . . . . . . . . . . . 136 11.2.5 多重事件监听器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 11.20 码力 | 330 页 | 6.54 MB | 1 年前3
Hello 算法 1.0.0b4 Java版B,它们都能解决同一问题,现在需要对比这两个算法的效率。我们最直接的 方法就是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够 反映真实情况,但也存在较大局限性。 难以排除测试环境的干扰因素。硬件配置会影响算法的性能表现。例如,在某台计算机中,算法 A 的运行时 间比算法 B 短;但在另一台配置不同的计算机中,我们可能得到相反的测试结果。这意味着我们需要在各种 机器上进行测试,而这是不现实的。 机器上进行测试,而这是不现实的。 展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,输入数据量较小时, 算法 A 的运行时间可能短于算法 B;而输入数据量较大时,测试结果可能相反。因此,为了得到有说服力的 结论,我们需要测试各种规模的输入数据,这样需要占用大量的计算资源。 理论估算 由于实际测试具有较大的局限性,我们可以考虑仅通过一些计算来评估算法的效率。这种估算方法被称为 ‧“算法运行效率”可分为“运行时间”和“占用空间”,因此我们可以将复杂度分为「时间复杂度 Time Complexity」和「空间复杂度 Space Complexity」。 2. 复杂度 hello‑algo.com 14 ‧“随着输入数据量增多时”表示复杂度与输入数据量有关,反映了算法运行效率与输入数据量之间的关 系。 ‧“增长趋势”表示复杂度分析关注的是算法时间与空间的增长趋势,而非具体的运行时间或占用空间。0 码力 | 342 页 | 27.39 MB | 1 年前3
Hello 算法 1.1.0 Java版法 是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面, 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考虑仅通过一些计算来评估算法的效率。这种估算方法被称 complexity)和空间复杂度(space complexity)。 ‧“随着输入数据大小的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系。 ‧“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间 增长的“快慢”。 复杂度分析克服了实际测试方法的弊端,体现在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 Java版法 是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面, 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考虑仅通过一些计算来评估算法的效率。这种估算方法被称 complexity」和「空间复杂度 space complexity」。 ‧“随着输入数据大小的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系。 ‧“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间 增长的“快慢”。 复杂度分析克服了实际测试方法的弊端,体现在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo0 码力 | 376 页 | 17.59 MB | 1 年前3
Hello 算法 1.0.0b5 Java版,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能表现。比如在某台计算机中,算法 A 的 运行时间比算法 B 短;但在另一台配置不同的计算机中,我们可能得到相反的测试结果。这意味着我们需要 在各种机器 在各种机器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 更少;而输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,我们可以考 complexity」和「空间复杂度 space complexity」。 ‧“随着输入数据大小的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系。 ‧“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间 增长的“快慢”。 复杂度分析克服了实际测试方法的弊端,体现在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo0 码力 | 376 页 | 30.69 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Java 版(? log ?) ;而如果给定的数据是固定 位数的整数(例如学号),那么我们就可以用效率更高的“基数排序”来做,将时间复杂度降为 ?(??) , 其中 ? 为位数。当数据体量很大时,节省出来的运行时间就能创造较大价值(成本降低、体验变好等)。 在工程领域中,大量问题是难以达到最优解的,许多问题只是被“差不多”地解决了。问题的难易程度一方 面取决于问题本身的性质,另一方面也取决于观测问题的人 寻求最优解法:同一个问题可能存在多种解法,我们希望找到尽可能高效的算法。 也就是说,在能够解决问题的前提下,算法效率已成为衡量算法优劣的主要评价指标,它包括以下两个维 度。 ‧ 时间效率:算法运行时间的长短。 ‧ 空间效率:算法占用内存空间的大小。 简而言之,我们的目标是设计“既快又省”的数据结构与算法。而有效地评估算法效率至关重要,因为只有 这样,我们才能将各种算法进行对比,进而指导算法设计与优化过程。 效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能表现。比如一个算法的并行度较高,那 么它就更适合在多核 CPU0 码力 | 379 页 | 18.48 MB | 10 月前3
Apache Shiro 1.2.x Reference Manual 中文翻译Me”服务,获取用户关联信息而无需登录 … 等等——都集成到一个有凝聚力的易于使用的API。 Shiro 致力在所有应用环境下实现上述功能,小到命令行应用程序,大到企业应用中,而且不 需要借助第三方框架、容器、应用服务器等。当然 Shiro 的目的是尽量的融入到这样的应用环 境中去,但也可以在它们之外的任何环境下开箱即用。 Apache Shiro Features 特性 Apache Shiro是一个全面的、 么简单。 执行mvn compile exec:java 可以看到程序成功的运行(由于 Shiro 默认在 debug 或更底层才 记录日志,所以你不会看到任何 Shiro 的日志输出--只要运行时没有错误提示,你就可以知道 已经成功了)。 上面所加入的代码做了下面的事情: 1. 使用 Shiro 的 IniSecurityManagerFactory 加载了我们的shiro.ini 文件,该文件存在于 或者其它。它可简单描述为“当前和软件进行交互的事件”,在大多数情况下,你可以认为它是 一个“人(User)”。 在一个独立的程序中调用 getSubject() 会在程序指定位置返回一个基于用户数据的 Subject, 在服务器环境(如 web 程序)中,它将获取一个和当前线程或请求相关的基于用户数据的 Subject。 现在你得到了Subject,你可以利用它做什么呢? 如果你针对该用户希望一些事情在程序当前会话期内可行,你可以获取他们的0 码力 | 196 页 | 2.34 MB | 1 年前3
Apache Shiro参考手册中文版以及更多——全部集成到紧密结合的易于使用的 API 中。 Shiro 视图在所有应用程序环境下实现这些目标——从最简单的命令行应用程序到最大的企业应用,不强制依赖其 他第三方框架,容器,或应用服务器。当然,该项目的目标是尽可能地融入到这些环境,但它能够在任何环境下立 即可用。 Apache Shiro Features Apache Shiro 是一个拥有许多功能的综合性的程序安全框架。下面的图表展示了 把 Subject 看成是 Shiro 的"User"概念。 getSubject()在一个独立的应用程序中调用,可以返回一个在应用程序特定位置的基于用户数据的 Subject,并且在服 务器环境中(例如,Web 应用程序),它获取的 Subject 是基于关联了当前线程或传入请求的用户数据的。 现在你拥有了一个 Subject,你能拿它来做什么? 如果你想在应用程序的当 SecurityManager 处理所有繁重的 Subject 安全操作。这反映在上面的基本流程图。 Realms:Realms 担当 Shiro 和你的应用程序的安全数据之间的“桥梁”或“连接器”。当它实际上与安全相 关的数据如用来执行身份验证(登录)及授权(访问控制)的用户帐户交互时,Shiro 从一个或多个为应用程 序配置的 Realm 中寻找许多这样的东西。 在这个意义上说,Realm0 码力 | 92 页 | 1.16 MB | 1 年前3
Java 应用与开发 - 类加载和反射大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 Java 应用与开发 类加载和反射 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 December 24, 2018 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 学习目标 1. 理解什么是反射机制,通过常见场景认识反射的作用。 2. 掌握类的加载、连接和初始化概念。 理解类加载器及类加载机制。 4. 掌握使用反射生成并操作对象的方法。 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 接下来⋯ 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 反射机制 ▶ 程序运行时,允许改变程序结构或变量类型,这种语言称为 动态语言。从这个观点看,Perl、Python、Ruby 是动态语 言,C++、Java、C# 不是动态语言。 ▶ 但是 Java 有着一个非常突出的动态相关机制:反射 (Reflection),可以于运行时加载、探知、使用编译期间完 全未知的类。换句话说,Java0 码力 | 46 页 | 714.40 KB | 1 年前3
共 45 条
- 1
- 2
- 3
- 4
- 5













