Hello 算法 1.0.0 Java版、hpstory、justin‑tse、krahets、night‑cruise、 nuomi1 和 Reanon 完成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代 码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 ‧ 感谢我在公司的导师李汐博士,在一次畅谈中你鼓励我“快行动起来”,坚定了我写这本书的决心; ‧ 感谢我的女朋友泡泡作为本书的首位读者 3.4.1 ASCII 字符集 「ASCII 码」是最早出现的字符集,其全称为 American Standard Code for Information Interchange(美 国标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不 同的字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符 (如换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的「EASCII」字符 集。它在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。0 码力 | 376 页 | 17.59 MB | 1 年前3
跟我学Shiro - 张开涛.................................................................................. 179 第二十二章 集成验证码 ................................................................................................... 证成功的认证信息。 自定义实现时一般继承 org.apache.shiro.authc.pam.AbstractAuthenticationStrategy 即可,具体 可 以 参 考 代 码 com.github.zhangkaitao.shiro.chapter2.authenticator.strategy 包 下 OnlyOneAuthenticatorStrategy 和 AtL 监、CTO、开发工程师等都是角色,不同的角色拥有一组不同的权限。 隐式角色:即直接通过角色来验证用户有没有操作权限,如在应用中 CTO、技术总监、开 发工程师可以使用打印机,假设某天不允许开发工程师使用打印机,此时需要从应用中删 除相应代码;再如在应用中 CTO、技术总监可以查看用户、查看权限;突然有一天不允许 技术总监查看用户、查看权限了,需要在相关代码中把技术总监角色从判断逻辑中删除掉; 即粒度是以角色为单位进行访问控制0 码力 | 219 页 | 4.16 MB | 10 月前3
Hello 算法 1.0.0b1 Java版isEmpty(); 5.1.2. 栈的实现 为了更加清晰地了解栈的运行机制,接下来我们来自己动手实现一个栈类。 栈规定元素是先入后出的,因此我们只能在栈顶添加或删除元素。然而,数组或链表都可以在任意位置添加删 除元素,因此 栈可被看作是一种受约束的数组或链表。换言之,我们可以“屏蔽”数组或链表的部分无关操 作,使之对外的表现逻辑符合栈的规定即可。 基于链表的实现 使用「链表」实现栈时,将链表的头结点看作栈顶,将尾结点看作栈底。 数组、链表 输入数据要求 无 有序 无 平均时间复杂度查找 / 插入 / 删 除 ?(?) / ?(1) / ?(?) ?(log ?) / ?(?) / ?(?) ?(1) / ?(1) / ?(1) 10. 查找算法 hello‑algo.com 160 线性查找 二分查找 哈希查找 最差时间复杂度查找 / 插入 / 删 除 ?(?) / ?(1) / ?(?) ?(log ?) / ?( Algorithm」使得列表中的所有元素按照从小到大的顺序排列。 ‧ 待排序的列表的 元素类型 可以是整数、浮点数、字符、或字符串; ‧ 排序算法可以根据需要设定 判断规则,例如数字大小、字符 ASCII 码顺序、自定义规则; Figure 11‑1. 排序中不同的元素类型和判断规则 11.1.1. 评价维度 排序算法主要可根据 稳定性、就地性、自适应性、比较类 来分类。 稳定性 ‧「稳定排序」在完成排序后,不改变0 码力 | 186 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 Java版isEmpty(); 5.1.2. 栈的实现 为了更加清晰地了解栈的运行机制,接下来我们来自己动手实现一个栈类。 栈规定元素是先入后出的,因此我们只能在栈顶添加或删除元素。然而,数组或链表都可以在任意位置添加删 除元素,因此 栈可被看作是一种受约束的数组或链表。换言之,我们可以“屏蔽”数组或链表的部分无关操 作,使之对外的表现逻辑符合栈的规定即可。 基于链表的实现 使用「链表」实现栈时,将链表的头结点看作栈顶,将尾结点看作栈底。 数组、链表 输入数据要求 无 有序 无 平均时间复杂度查找 / 插入 / 删 除 ?(?) / ?(1) / ?(?) ?(log ?) / ?(?) / ?(?) ?(1) / ?(1) / ?(1) 10. 查找算法 hello‑algo.com 161 线性查找 二分查找 哈希查找 最差时间复杂度查找 / 插入 / 删 除 ?(?) / ?(1) / ?(?) ?(log ?) / ?( Algorithm」使得列表中的所有元素按照从小到大的顺序排列。 ‧ 待排序的列表的 元素类型 可以是整数、浮点数、字符、或字符串; ‧ 排序算法可以根据需要设定 判断规则,例如数字大小、字符 ASCII 码顺序、自定义规则; Figure 11‑1. 排序中不同的元素类型和判断规则 11.1.1. 评价维度 运行效率:我们希望排序算法的时间复杂度尽可能低,并且总体操作数量更少(即时间复杂度中的常数项更0 码力 | 197 页 | 15.72 MB | 1 年前3
Apache Shiro 1.2.x Reference Manual 中文翻译。 潜在的安全隐患 虽然这是一个非常简单和常用的方法,但隐含的角色可能会增加软件的维护成本和管理问 题。 例如,如果你想增加或删除一个角色,或者重定义角色的行为怎么办?你不得不重新打开代 码,修改所有对更改后的角色的检测,每次都需要这样做,这还没提到其引起的执行代价 (重测试,通过质量验证,关闭程序,升级软件,重启程序等)。 Apache Shiro 1.2.x Reference Manual AuthenticationToken 提交的用户凭证直接 执行相等检查。 例如,如果提交了一个UsernamePasswordToken,SimpleCredentialsMatcher 检查提交的密 码与存储的密码是否完全相等。 SimpleCredentialsMatcher 不仅仅对字符串执行相同对比,它可以对大多数常用类型,如字 符串、字符数组、字节数组、文件和输入流等执行对比,查看 JavaDoc JavaDoc来了解一个单独的会话能够做什么。 The SessionManager SessionManager,名如其意,在应用程序中为所有的 subject 管理Session —— 创建,删 除,inactivity(失效)及验证,等等。如同其他在Shiro 中的核心结构组件一样, SessionManager 也是一个由 SecurityManager 维护的顶级组件。 Apache0 码力 | 196 页 | 2.34 MB | 1 年前3
Hello 算法 1.1.0 Java版展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 原码(sign‑magnitude)虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原 码下计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 1 + (−2) → 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了反码(1’s 二进制数到字符的转换。 3.4.1 ASCII 字符集 ASCII 码是最早出现的字符集,其全称为 American Standard Code for Information Interchange(美国 标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的 字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符(如 换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0b5 Java版ASCII 字符集 「ASCII 码」是最早出现的字符集,全称为“美国标准信息交换代码”。它使用 7 位二进制数(即一个字节的 低 7 位)表示一个字符,最多能够表示 128 个不同的字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、 数字 0 ~ 9、一些标点符号,以及一些控制字符(如换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。 3.4.2 GBK 字符集 后来人们发现,EASCII 码仍然无法满足许多语言的字符数量要求。比如汉字大约有近十万个,光日常使用 的就有几千个。中国国家标准总局于 1980 年发布了「GB2312」字符集,其收录了 字符集中,常用的字符占用 2 字 节,有些生僻的字符占 3 字节甚至 4 字节。 Unicode 是一种字符集标准,本质上是给每个字符分配一个编号(称为“码点”),但它并没有规定在计算机 中如何存储这些字符码点。我们不禁会问:当多种长度的 Unicode 码点同时出现在同一个文本中时,系统 如何解析字符?例如给定一个长度为 2 字节的编码,系统如何确认它是一个 2 字节的字符还是两个 1 字节的 字符?0 码力 | 376 页 | 30.69 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Java 版展示了原码、反码和补码之间的转换方法。 图 3‑4 原码、反码与补码之间的相互转换 原码(sign‑magnitude)虽然最直观,但存在一些局限性。一方面,负数的原码不能直接用于运算。例如在原 码下计算 1 + (−2) ,得到的结果是 −3 ,这显然是不对的。 1 + (−2) → 0000 0001 + 1000 0010 = 1000 0011 → −3 为了解决此问题,计算机引入了反码(1’s 二进制数到字符的转换。 3.4.1 ASCII 字符集 ASCII 码是最早出现的字符集,其全称为 American Standard Code for Information Interchange(美国 标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的 字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符(如 换行符和制表符)。 图 3‑6 ASCII 码 然而,ASCII 码仅能够表示英文。随着计算机的全球化,诞生了一种能够表示更多语言的 EASCII 字符集。它 在 ASCII 的 7 位基础上扩展到 8 位,能够表示 256 个不同的字符。 在世界范围内,陆续出现了一批适用于不同地区的 EASCII 字符集。这些字符集的前 128 个字符统一为 ASCII 码,后 128 个字符定义不同,以适应不同语言的需求。0 码力 | 379 页 | 18.48 MB | 10 月前3
Java 应用与开发 - Java 技术概述及开发环境基本开发流程 Java 技术的特点 面向对象 平台无关性 分布式 可靠性 多线程 网络编程 编译和解释并存 由编译器将 Java 源程序编译成字节码文件,再 由运行系统解释执行字节码文件(解释器将字节码 再翻译成二进制码运行)。 大纲 Java 技术概述 Java 平台核心机制 Java 开发环境 Java 基本开发流程 ���� Java 技术概述 Java 平台核心机制 平台核心机制 Java 开发环境 Java 基本开发流程 Java 程序的运行过程 Java源文件 字节码文件 .java .class 编译 执行 JVM Windows JVM Linux JVM Mac 将程序代码从一种指令转换为另一种指令 解释器将字节码指令逐条解释成所在底层平台 能够处理的指令格式,解释一条执行一条 JIT, Just-In-Time 传统解 public static void main(String[] args) { 3 System.out.println("Hi,␣Java!"); 4 } 5 } 2. 将源文件编译为字节码文件 1 > javac HelloWorld.java && ls 2 HelloWorld.class HelloWorld.java 3. 运行程序 1 > java HelloWorld0 码力 | 33 页 | 1.17 MB | 1 年前3
Java EE 企业应用系统开发 - HTTP 响应处理编程响应对象功能和方法 设置响应状态码 一般情况下,Web 开发人员不需要通过编程来改变响应状态码, Web 服务器会根据请求处理的情况自动设置状态码,并发送到 客户端浏览器。例如,当客户请求不存在的 URL 地址时,Web 服务器会自动设置状态码为 404,状态消息为 not found。 O public void setStatus(int code) 直接发送指定的响应状态码,没有设置状态消息,只有默认的状 message) 设置指定的状态码,同时设定自定义的状态消息,可以修改默认 的状态消息。该方法在 Servlet 2.5 后被舍弃,一般不要使用。 大纲 HTTP 响应的内容 HTTP 响应对象 响应对象功能和方法 设置响应状态码 O public void sendError(int sc) throws IOException 向客户端发送指定的错误信息码,可以是任意定义的整数。 1 response response.sendError(580); O public void sendError(int sc, String msg) throws IOException 向客户端发送指定的错误信息码和自定义状态消息。 1 response.setCharacterEncoding("GBK"); 2 response.sendError(580, "自定义错误"); 大纲 HTTP 响应的内容0 码力 | 26 页 | 575.28 KB | 1 年前3
共 23 条
- 1
- 2
- 3













