《Java 应用与开发》课程讲义 - 王晓东中国海洋大学信息学院计算机系 第 18 页 / 共 306 页 2.3. 课后习题 � 2 � continue 语句 终止当前这一轮(次)的循环,进入下一轮(次)循环。 return 语句 用来使程序从方法(函数)中返回,可返回一个值。 2.3 课后习题 . O 简答题 1. Java 语言定义类哪些基本数据类型?其存储结构分别是什么样的? 2. 自动类型转换的前提是什么?转换时的优先级顺序如何? static 成员。 . 课程配套代码 ± sample.oop.StaticMemberAndMethodSample.java 5.3.2 初始化块 static 初始化块 在类的定义体中,方法的外部可包含 static 语句块,static 块仅在其所属的类被载 入时执行一次,通常用于初始化化 static(类)属性。 非 static 初始化块 非 static 的初始化块在创建对象时被自动调用。 方法已经被执行,或者 对象空间已被重用的时候。 Java 的 finalize() 方法 Java 所有类都继承自 Object 类,而 finalize() 是 Object 类的一个函数,该函数在 Java 中类似于 C++ 的析构函数(仅仅是类似)。一般来说可以通过重载 finalize() 的形 式来释放类中对象。 1 public class A { 2 public Object a; 40 码力 | 330 页 | 6.54 MB | 1 年前3
Java 源码剖析——彻底搞懂Reference 和ReferenceQueuesubclassed directly. 引用对象的抽象基类。此类定义了常用于所有引用对象的操作。因为引用对象是通过与垃圾回收器的 切合作来实现的,所以不能直接为此类创建子类。 */ 该类提供了两个构造函数: Reference(T referent) { this(referent, null); } Reference(T referent, ReferenceQueue super this.queue = (queue == null) ? ReferenceQueue.NULL : queue; } 一个构造函数带需要注册到的引用队列,一个不带。带queue的意义在于我们 以吃从外部通过对queue的操作来了解到引用实例所指向的实际对象是否被回收了,同时我们也可以 过queue对引用实例进行一些额外的操作;但如果我们的引用实例在创建时没有指定一个引用队列, 队列, 我们要想知道实际对象是否被回收,就只能够不停地轮询引用实例的get()方法是否为空了。值得注意 是虚引用PhantomReference,由于它的get()方法永远返回null,因此它的构造函数必须指定一个引 队列。这两种查询实际对象是否被回收的方法都有应用,如weakHashMap中就选择去查询queue的 据,来判定是否有对象将被回收;而ThreadLocalMap,则采用判断get()是否为null来作处理。0 码力 | 6 页 | 283.24 KB | 1 年前3
Nacos架构&原理
ServerMemberManager 的存储、查询能力,后者 afterLookup 则是⼀个事件接口,当 MemberL ookup 需要进行成员节点信息更新时,会将当前最新的成员节点列表信息通过该函数进行通知给 ServerMemberManager,具体的节点管理方式,则是隐藏到具体的 MemberLookup 实现中。 接着来介绍下当前 Nacos 内部实现的几种寻址机制。 Nacos 是 5 秒,Nacos 服务端会在 15 秒没收到心 跳后将实例设置为不健康,在 30 秒没收到心跳时将这个临时实例摘除。 不过正如前文所说,有⼀些服务无法上报心跳,但是可以提供⼀个检测接口,由外部去探测。这样 的服务也是广泛存在的,而且以我们的经验,这些服务对服务发现和负载均衡的需求同样强烈。服 务端健康检查最常见的方式是 TCP 端口探测和 HTTP 接口返回码探测,这两种探测方式因为其协 了集群中剩余健康实例能正 常工作。 实例选择器(Selector):用于在获取服务下的实例列表时,过滤和筛选实例。该选择器也被称 为路由器,目前 Nacos 支持通过将实例的部分信息存储在外部元数据管理 CMDB 中,并在发现 服务时使用 CMDB 中存储的元数据标签来进行筛选的能力。 拓展数据(extendData):用于用户在注册实例时自定义扩展的元数据内容,形式为 K-V 。可以在0 码力 | 326 页 | 12.83 MB | 9 月前3
Apache Shiro 1.2.x Reference Manual 中文翻译Referencing the Configuration 引用配置 现在我们已经定义了一个 INI 文件,我们可以在我们的示例程序中创建SecurityManager 实例 了,将 main 函数中的代码进行如下调整: Apache Shiro 1.2.x Reference Manual 中文翻译 11 2. Tutorial 教程 public static void main(String[] ((DefaultSessionManager)securityManager.getSessionManager()).setSessionDAO(sessionDAO); ... 使用这些函数,你可以配置 SecurityManager 视图(graph)中的任何一部分。 虽然在程序中配置很简单,但它并不是我们现实中配置的完美解决方案。在几种情况下这种 方法可能并不适合你的程序: 方法将有效地执行身份验证。 三步:处理成功或失败 Apache Shiro 1.2.x Reference Manual 中文翻译 36 5. Authentication 认证 当login函数没有返回信息时表明验证通过了。程序可以继续运行,此时执行 SecurityUtils.getSubject() 将返回验证后的 Subject 实例,subject.isAuthenticated())0 码力 | 196 页 | 2.34 MB | 1 年前3
跟我学Shiro - 张开涛后通过 相应的接口注入给 Shiro 即可。 接下来我们分别从外部和内部来看看 Shiro 的架构,对于一个好的框架,从外部来看应该 具有非常简单易于使用的 API,且 API 契约明确;从内部来看的话,其应该有一个可扩展 的架构,即非常容易插入用户自定义实现,因为任何框架都不能满足所有需求。 首先,我们从外部来看 Shiro 吧,即从应用程序角度的来观察如何使用 Shiro 完成工作。如 指定需要的权限信息,其他的都是类似的,请参 考源码。 Web 层标签库 com.github.zhangkaitao.shiro.chapter16.web.taglib.Functions 提供了函数标签实现,有根据编 号显示资源/角色/组织机构名称,其定义放在 src/main/webapp/tld/zhang-functions.tld。 Web 层异常处理器 跟我学 Shiro——http://jinnianshilongnian.iteye.com/ 196 1、如果从外部传入了 successUrl(登录成功之后重定向的地址),且以 http://或 https://开 头那么直接返回(相应的拦截器直接重定向到它即可); 2、如果 successUrl 有值但没有上下文,拼上上下文;0 码力 | 219 页 | 4.16 MB | 10 月前3
Apache Shiro参考手册中文版Subject.Builder.buildSubject() 上面所展示的默认的 Subject.Builder 无参构造函数将通过 SecurityUtils.getSubject()方法使用应用程序当前可访问的 SecurityManager。你也可以指定被额外的构造函数使用的 SecurityManager 实例,如果你需要的话: SecurityManager securityManager 这样没人可以理 解它。Shiro 致力于加密的两个核心要素:加密数据的密码,如使用公钥或私钥的邮件,以及散列表(也称消 息摘要),它对数据进行不可逆的加密,如密码。 Hash 散列函数是单向的,不可逆转的输入源,有时也被称为消息,在一个编码的哈希值内部,有时也被称为消息 摘要。它通常用于密码,数字指纹,或以字节数组为基础的数据。 Permission 权限,至少按照 Subject Subject 只是一个精挑细选的安全术语,基本上的意思是一个应用程序用户的安全特定的“视图”。然而 Subject 不总是需要反映为一个人——它可以代表一个调用你应用程序的外部进程,或许是一个系统帐户的守护进程, 在一段时间内执行一些间歇性的东西(如一个 cron job)。它基本上是任何使用应用程序做某事的实体的一个 代表。 Lend a hand with documentation0 码力 | 92 页 | 1.16 MB | 1 年前3
Java 应用与开发 - Java EE 体系结构EE 规范定义了面向 Internet 的企业级软件应用的组成部 分和各组成部分之间的交互协议。 ▶ 容器规范 ▶ 组件规范 ▶ 服务规范 Java EE 规定了连接各种外部资源的标准接口 API,简化了 连接各种不同类型外部资源的设计和编程。如 JDBC API 提供了连接数据库的标准接口;JMS API 可以连接各种外 部的消息服务系统。 ▶ 通信协议规范 ▶ 开发角色规范 大纲 软件开发现状 概述 Java EE 容器 Java EE 组件 组件间通信协议 Web 容器 ▶ Web 容器(Web Container)运行在符合 Java EE 规范的应 用服务器上,驻留在服务器端,外部应用可以通过HTTP 和 HTTPS协议与 Web 容器通信,进而访问 Web 容器管 理的 Web 组件。 ▶ Web 容器管理 Web 组件的运行和调用。Java EE 定义了两 种 Web 组件:Servlet 概述 Java EE 容器 Java EE 组件 组件间通信协议 Web 容器 ▶ Web 容器(Web Container)运行在符合 Java EE 规范的应 用服务器上,驻留在服务器端,外部应用可以通过HTTP 和 HTTPS协议与 Web 容器通信,进而访问 Web 容器管 理的 Web 组件。 ▶ Web 容器管理 Web 组件的运行和调用。Java EE 定义了两 种 Web 组件:Servlet0 码力 | 40 页 | 1.89 MB | 1 年前3
Java 应用系统开发 - ServletContext 和 Web 配置监听器(listener) ▶ 异常跳转页面(error-page) ▶ MIME 类型映射(mime-mapping) ▶ 会话对象超时(session-config) ▶ 外部资源声明(resource-ref) ▶ 外部标记库描述符文件(taglib) 大纲 Web 应用环境对象 Java EE Web 的配置 Servlet 配置对象 转发和重定向 本节习题 Web 初始参数配置 O0 码力 | 33 页 | 668.91 KB | 1 年前3
Java 应用与开发 - Java EE 过滤器编程init(FilterConfig filterConfig) throws ServletException 初始化方法,在 Web 容器创建过滤器对象后被调用,用于完成 过滤器初始化操作,如取得过滤器配置的参数,连接外部资源。 public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws 时调用,开发人员在此方法中编写过滤功能代码。 public void destroy() 在过滤器销毁之前此方法被调用,此方法主要编写清理和关闭打 开的资源操作,如关闭数据库连接、将过滤信息保存到外部资源 操作。 大纲 过滤器概述 Java EE 过滤器 API Java EE 过滤器编程和配置 过滤器的主要任务 本节习题 Filter 的 doFilter() 方法 参数 1 请求对象 javax0 码力 | 31 页 | 605.91 KB | 1 年前3
Hello 算法 1.1.0 Java版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?0 码力 | 378 页 | 18.47 MB | 1 年前3
共 24 条
- 1
- 2
- 3













