《Java 应用与开发》课程讲义 - 王晓东序设计语言系统所定义、不可再划分的数据类型。所占内存大小固定,与软硬件环境 无关,在内存中存放的是数据值本身。Java 的基本数据类型包括:整型(byte、short、 int、long)、浮点型(float、double)、逻辑型(boolean)和字符型(char)。引用数据类 型(复合数据类型)在内存中存放的是指向该数据的地址,不是数据值本身。引用数 据类型包括类、数组、接口等。 数据类型的基本要素包括: • 数据的性质(数据结构) 数据位数 取值范围 float(单精度)(f 或 F) 32 1.4E − 45 ∼ 3.4E + 38 double(双精度)(默认) 64 4.9E − 324 ∼ 1.8E + 308 逻辑型 逻辑型又称为布尔型(boolean),布尔型数据类型的特性如下: • 布尔型数据只有 true(真)和 false(假)两个取值。 • 布尔型数据存储占 1 个字节,默认取值为 false。 • . . . . 中国海洋大学信息学院计算机系 第 12 页 / 共 306 页 2.1. JAVA 语言基础 � 2 � 浮点型常量 单精度后加 f 或 F,双精度后加 d 或 D 可省略。 逻辑型常量 true 或者 false。 字符型常量 单引号。 字符串常量 双引号。 示例代码:常量的声明 1 final int MAX = 10; 2 final float PI =3.14f;0 码力 | 330 页 | 6.54 MB | 1 年前3
Java 应用与开发 - MVC 和框架初步2 的开发步骤小结 本节习题 大纲 Java Web 应用的开发演化 经典 MVC 框架 - Struts 2 本节习题 JSP 方式 JSP 在 HTML 代码里写 Java 代码完成业务逻辑。 1 <% 2 String name = request.getParameter("name"); 3 String password = request.getParameter("password"); 本节习题 JSP 方式 O 仅有的一点优势 1. 无需额外的配置文件,无需框架的帮助,即可完成逻辑。 2. 简单易上手。 O 劣势 1. Java 代码由于混杂在一个 HTML 环境中而显得混乱不堪, 可读性非常差。一个 JSP 文件有时候会变成几十 K,甚至 上百 K,经常难以定位逻辑代码的所在。 2. 编写代码时非常困惑,不知道代码到底应该写在哪里,也不 知道别人是不是已经曾经实现过类似的功能,到哪里去引用。 突然之间,某个需求发生了变化。于是,每个人蒙头开始全 程替换,还要小心翼翼的,生怕把别人的逻辑改了。 4. 逻辑处理程序需要自己来维护生命周期,对于类似数据库事 务、日志等众多模块无法统一支持。 大纲 Java Web 应用的开发演化 经典 MVC 框架 - Struts 2 本节习题 JSP 方式 O 仅有的一点优势 1. 无需额外的配置文件,无需框架的帮助,即可完成逻辑。 2. 简单易上手。 O 劣势 1. Java0 码力 | 51 页 | 837.26 KB | 1 年前3
Hello 算法 1.1.0 Java版一位少女翩翩起舞,与数据交织在一起,裙摆上飘扬着算法的旋律。 她邀请你共舞,请紧跟她的步伐,踏入充满逻辑与美感的算法世界。 第 1 章 初识算法 hello‑algo.com 11 1.1 算法无处不在 当我们听到“算法”这个词时,很自然地会想到数学。然而实际上,许多算法并不涉及复杂数学,而是更多 地依赖基本逻辑,这些逻辑在我们的日常生活中处处可见。 在正式探讨算法之前,有一个有趣的事实值得分享:你已经 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 1.2.3 数据结构与算法的关系 如图 表、树、堆、图,它们可以从“逻辑结构”和“物理结构” 两个维度进行分类。 3.1.1 逻辑结构:线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照一定顺序排列,体现了数据之间的线 性关系;而在树中,数据从顶部向下按层次排列,表现出“祖先”与“后代”之间的派生关系;图则由节点 和边构成,反映了复杂的网络关系。 如图 3‑1 所示,逻辑结构可分为“线性”和“非线性0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Java 版一位少女翩翩起舞,与数据交织在一起,裙摆上飘扬着算法的旋律。 她邀请你共舞,请紧跟她的步伐,踏入充满逻辑与美感的算法世界。 第 1 章 初识算法 www.hello‑algo.com 11 1.1 算法无处不在 当我们听到“算法”这个词时,很自然地会想到数学。然而实际上,许多算法并不涉及复杂数学,而是更多 地依赖基本逻辑,这些逻辑在我们的日常生活中处处可见。 在正式探讨算法之前,有一个有趣的事实值得分享:你 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 1.2.3 数据结构与算法的关系 如图 表、树、堆、图,它们可以从“逻辑结构”和“物理结构” 两个维度进行分类。 3.1.1 逻辑结构:线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照一定顺序排列,体现了数据之间的线 性关系;而在树中,数据从顶部向下按层次排列,表现出“祖先”与“后代”之间的派生关系;图则由节点 和边构成,反映了复杂的网络关系。 如图 3‑1 所示,逻辑结构可分为“线性”和“非线性0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.0.0 Java版一位少女翩翩起舞,与数据交织在一起,裙摆上飘扬着算法的旋律。 她邀请你共舞,请紧跟她的步伐,踏入充满逻辑与美感的算法世界。 第 1 章 初识算法 hello‑algo.com 11 1.1 算法无处不在 当我们听到“算法”这个词时,很自然地会想到数学。然而实际上,许多算法并不涉及复杂数学,而是更多 地依赖基本逻辑,这些逻辑在我们的日常生活中处处可见。 在正式探讨算法之前,有一个有趣的事实值得分享:你已经 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 1.2.3 数据结构与算法的关系 如图 表、树、堆、图,它们可以从“逻辑结构”和“物理结构” 两个维度进行分类。 3.1.1 逻辑结构:线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照一定顺序排列,体现了数据之间的线 性关系;而在树中,数据从顶部向下按层次排列,表现出“祖先”与“后代”之间的派生关系;图则由节点 和边构成,反映了复杂的网络关系。 如图 3‑1 所示,逻辑结构可分为“线性”和“非线性0 码力 | 376 页 | 17.59 MB | 1 年前3
Nacos架构&原理
。 19 > Nacos 架构 内核层 插件机制:实现三个模块可分可合能力,实现扩展点 SPI 机制,用于扩展自己公司定制。 事件机制:实现异步化事件通知,SDK 数据变化异步通知等逻辑,是 Nacos 高性能的关键部分。 日志模块:管理日志分类,日志级别,日志可移植性(尤其避免冲突),日志格式,异常码+帮 助文档。 回调机制:SDK 通知数据,通过统⼀的模式回调用户处理。接口和数据结构需要具备可扩展性。 架构中,服务注册和配置管理⼀致性协议是分开的,没有下沉到 Nacos 的内核模 块作为通用能力演进,服务发现模块⼀致性协议的实现和服务注册发现模块的逻辑强耦合在⼀起, 并且充斥着服务注册发现的⼀些概念。这使得 Nacos 的服务注册发现模块的逻辑变得复杂且难以 维护,耦合了⼀致性协议层的数据状态,难以做到计算存储彻底分离,以及对计算层的无限水平扩 容能力也有⼀定的影响。因此为了解决这个问题,必然需要对 方法即可。同时,⼀致性协议已经被 抽象在了 consistency 的包中,Nacos 对于 AP、CP 的⼀致性协议接口使用抽象都在里面,并且 在实现具体的⼀致性协议时,采用了插件可插拔的形式,进⼀步将⼀致性协议具体实现逻辑和服务 注册发现、配置管理两个模块达到解耦的目的。 public class ProtocolManager extends MemberChangeListener implements DisposableBean0 码力 | 326 页 | 12.83 MB | 10 月前3
Hello 算法 1.0.0b1 Java版本书提供了讨论区,遇到疑惑可以随时提问。 8 1. 引言 1.1. 算法无处不在 听到“算法”这个词,我们一般会联想到数学。但实际上,大多数算法并不包含复杂的数学,而更像是在考察 基本逻辑,而这些逻辑在我们日常生活中处处可见。 在正式介绍算法之前,我想告诉你一件有趣的事:其实,你在过去已经学会了很多算法,并且已经习惯将它们 应用到日常生活中。接下来,我将介绍两个具体例子来佐证。 例一 。 1. 引言 hello‑algo.com 10 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构的设计是一个充满权衡的过程,这意味着如果获得某方面的优势,则往往需要在另一方面做出妥协。 例如,链表相对于数组,数据添加删除操作更加方便,但牺牲了数据的访问速度;图相对于链表,提供了更多 的逻辑信息,但需要占用更多的内存空间。 1.2.3. 数据结构与算法的关系 「数据结 ‧「字符」在计算机中是以字符集的形式保存的,char 的值实际上是数字,代表字符集中的编号,计算机 通过字符集查表来完成编号到字符的转换。占用空间与具体编程语言有关,通常为 2 bytes 或 1 byte ; ‧「布尔」代表逻辑中的“是”与“否”,其占用空间需要具体根据编程语言确定,通常为 1 byte 或 1 bit ; 类别 符号 占用空间 取值范围 默认值 整数 byte 1 byte −27 ~ 27 − 1 (0 码力 | 186 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 Java版本书提供了讨论区,遇到疑惑可以随时提问。 8 1. 引言 1.1. 算法无处不在 听到“算法”这个词,我们一般会联想到数学。但实际上,大多数算法并不包含复杂的数学,而更像是在考察 基本逻辑,而这些逻辑在我们日常生活中处处可见。 在正式介绍算法之前,我想告诉你一件有趣的事:其实,你在过去已经学会了很多算法,并且已经习惯将它们 应用到日常生活中。接下来,我将介绍两个具体例子来佐证。 例一 。 1. 引言 hello‑algo.com 10 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构的设计是一个充满权衡的过程,这意味着如果获得某方面的优势,则往往需要在另一方面做出妥协。 例如,链表相对于数组,数据添加删除操作更加方便,但牺牲了数据的访问速度;图相对于链表,提供了更多 的逻辑信息,但需要占用更多的内存空间。 1.2.3. 数据结构与算法的关系 「数据结 ‧「字符」在计算机中是以字符集的形式保存的,char 的值实际上是数字,代表字符集中的编号,计算机 通过字符集查表来完成编号到字符的转换。占用空间通常为 2 bytes 或 1 byte ; ‧「布尔」代表逻辑中的“是”与“否”,其占用空间需根据编程语言确定,通常为 1 byte 或 1 bit ; 类别 符号 占用空间 取值范围 默认值 整数 byte 1 byte −27 ~ 27 − 1 ( −1280 码力 | 197 页 | 15.72 MB | 1 年前3
Hello 算法 1.0.0b5 Java版一位少女翩翩起舞,与数据交织在一起,裙摆上飘扬着算法的旋律。 她邀请你共舞,请紧跟她的步伐,踏入充满逻辑与美感的算法世界。 第 1 章 初识算法 hello‑algo.com 10 1.1 算法无处不在 当我们听到“算法”这个词时,很自然地会想到数学。然而实际上,许多算法并不涉及复杂数学,而是更多 地依赖于基本逻辑,这些逻辑在我们的日常生活中处处可见。 在正式探讨算法之前,有一个有趣的事实值得分享:你已经 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便使得算法高效运行。 数据结构设计是一个充满权衡的过程。如果想要在某方面取得提升,往往需要在另一方面作出妥协。下面举 两个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 1.2.3 数据结构与算法的关系 哈希表、树、堆、图,它们可以从“逻辑结构”和“物理结构” 两个维度进行分类。 3.1.1 逻辑结构:线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照顺序依次排列,体现了数据之间的线 性关系;而在树中,数据从顶部向下按层次排列,表现出祖先与后代之间的派生关系;图则由节点和边构成, 反映了复杂的网络关系。 如图 3‑1 所示,逻辑结构可被分为“线性”和“非线性”0 码力 | 376 页 | 30.69 MB | 1 年前3
Apache Shiro 1.2.x Reference Manual 中文翻译wrapper)’设 计在上面的架构图表中已有反映。 Apache Shiro 1.2.x Reference Manual 中文翻译 22 3. Architecture 架构 当组件执行逻辑的时候,SecurityManager 知道如何以及何时去协调组件做出正确的动作。 SecurityManager 和 JavaBean 兼容,这允许你(或者配置途径)通过标准的J avaBean 视图最终的对象/属性,例如下面这 行配置: ... securityManager.sessionManager.globalSessionTimeout = 1800000 ... 转换逻辑为(通过BeanUtils): securityManager.getSessionManager().setGlobalSessionTimeout(1800000); 用这种方法访问的层数需要多深可以有多深: 如果原有的异常不能满足你的需求,可以创建自定义的AuthenticationExceptions 来表示特定 的失败场景。 登录失败小贴士 虽然你的代码可以对指定的异常做出处理并执行某些所需的逻辑,但有经验的安全做法是仅 向终端用户输出一般的失败信息,例如“错误的用户名和密码”。这确保不向尝试攻击你的黑客 提供有用的信息。 Remembered vs. Authenticated 如上例所示,Shiro0 码力 | 196 页 | 2.34 MB | 1 年前3
共 27 条
- 1
- 2
- 3













