Java 应用与开发 - HTTP 会话跟踪技术存客户的信息(如客户的账号或客户的购物车),称为会话 跟踪,即 Web 服务器必须使用某种技术保存客户的信息。 大纲 会话基本概念 会话跟踪技术 本节习题 Java EE Web 会话跟踪方法 1. 重写 URL 将客户端的信息附加在请求 URL 地址的参数中, Web 服务器取得参数信息,完成客户端信息的保存。 2. 隐藏表单字段 将要保存的客户信息,如用户登录账号使用 隐藏表单字段发送到服务器端,完成 Web 服务器保持客户 状态信息。 3. Cookie 使用 Java EE API 提供的 Cookie 对象,可以将客 户信息保存在 Cookie 中,完成会话跟踪功能。 4. HttpSession 对象 Java EE API 专门提供了 HttpSession 会 话对象保存客户的信息来实现会话跟踪。 一般 3 和 4 组合使用。 大纲 会话基本概念 会话跟踪技术 本节习题 接下来⋯ 会话基本概念 Netscape 浏览器引入 的,用于在客户端保存服务器端数据,实现一种简单有效的客 户/服务器的信息交换模式。 ▶ Cookie 是 Web 服务器保存在客户端的小的文本文件,存储许多 name/value 对,可以保存如登录帐号、用户喜好等会话数据。 ▶ Cookie 由 Web 服务器创建,由 Web 服务器在进行 HTTP 响应 时,将 Cookie 保存在 HTTP 响应头中并发送给浏览器,浏览器0 码力 | 54 页 | 824.47 KB | 1 年前3
Java 应用与开发 - Java 内存模型与分配机制Java 程序内存运行分析 Java 内存管理建议 Java 程序运行过程会涉及的内存区域 程序计数器 当前线程执行的字节码的行号指示器。 栈 保存局部变量的值,包括:用来保存基本数据类型的值; 保存类的实例,即堆区对象的引用(指针),也可以用来 保存加载方法时的帧。(Stack) 堆 用来存放动态产生的数据,如 new 出来的对象和数组。 1。(Heap) 常量池 JVM 为每个已加载的类型维护一个常量池,常量池就是 Java 程序内存运行分析 Java 内存管理建议 Java 程序运行过程会涉及的内存区域 程序计数器 当前线程执行的字节码的行号指示器。 栈 保存局部变量的值,包括:用来保存基本数据类型的值; 保存类的实例,即堆区对象的引用(指针),也可以用来 保存加载方法时的帧。(Stack) 堆 用来存放动态产生的数据,如 new 出来的对象和数组。 1。(Heap) 常量池 JVM 为每个已加载的类型维护一个常量池,常量池就是 Java 程序内存运行分析 Java 内存管理建议 Java 程序运行过程会涉及的内存区域 程序计数器 当前线程执行的字节码的行号指示器。 栈 保存局部变量的值,包括:用来保存基本数据类型的值; 保存类的实例,即堆区对象的引用(指针),也可以用来 保存加载方法时的帧。(Stack) 堆 用来存放动态产生的数据,如 new 出来的对象和数组。 1。(Heap) 常量池 JVM 为每个已加载的类型维护一个常量池,常量池就是0 码力 | 44 页 | 818.30 KB | 1 年前3
《Java 应用与开发》课程讲义 - 王晓东1.2 集合类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.1.3 对 Java 集合中只能保存引用类型的数据的说明 . . . . . . . . . . . 113 10.1.4 集合相关 API 的关系 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 19.3.4 将 Cookie 保存到客户端 . . . . . . . . . . . . . . . . . . . . . . . . 244 19.3.5 Web 服务器读取客户端保存的 Cookie . . . . . . . . . . . . . . . . . 245 19.3.6 Cookie . . . 246 19.4.4 会话对象的生命周期 . . . . . . . . . . . . . . . . . . . . . . . . . . 248 19.4.5 会话 ID 的保存方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 19.4.6 会话对象的应用示例 . . . . . . . . . .0 码力 | 330 页 | 6.54 MB | 1 年前3
Java 应用系统开发 - ServletContext 和 Web 配置组件都可以访问此 ServletContext 对象,进而取 得 Web 应用的基本信息。 ▶ ServletContext 还可以作为整个 Web 应用的共享容器对象, 能够被所有会话请求共用,保存 Web 应用的共享信息。 大纲 Web 应用环境对象 Java EE Web 的配置 Servlet 配置对象 转发和重定向 本节习题 Web 应用环境对象的生命周期 ServletContext 销毁 Web 容器停止时,自动销毁 ServletContext 对象。 注意 如果在 ServletContext 对象中保存的对象信息需要长久保存,一 般编写 ServletContext 对象的监听器,在此对象销毁之前将其中 保存的对象数据进行持久化处理,如保存到数据库或者文件中。 大纲 Web 应用环境对象 Java EE Web 的配置 Servlet 配置对象 转发和重定向 本节习题 销毁 Web 容器停止时,自动销毁 ServletContext 对象。 注意 如果在 ServletContext 对象中保存的对象信息需要长久保存,一 般编写 ServletContext 对象的监听器,在此对象销毁之前将其中 保存的对象数据进行持久化处理,如保存到数据库或者文件中。 大纲 Web 应用环境对象 Java EE Web 的配置 Servlet 配置对象 转发和重定向 本节习题0 码力 | 33 页 | 668.91 KB | 1 年前3
跟我学Shiro - 张开涛方, 这个时候就可以实现自己的分布式会话(如把数据放到 Memcached 服务器); SessionDAO:DAO 大家都用过,数据访问对象,用于会话的 CRUD,比如我们想把 Session 保存到数据库,那么可以实现自己的 SessionDAO,通过如 JDBC 写到数据库;比如想把 Session 放到 Memcached 中,可以实现自己的 Memcached SessionDAO;另外 然后把 salt 格式化到散列值中; 2.4、hashFormatFactory 用于根据散列值得到散列的密码和 salt;因为如果使用如 SHA 算法, 那么会生成一个 salt,此 salt 需要保存到散列后的值中以便之后与传入的密码比较时使用; 默认使用 DefaultHashFormatFactory; 2.5、passwordMatcher 使用 PasswordMatcher,其是一个 shiro-jdbc-passwordservice.ini,提供了 JdbcRealm 的测试用例,测试前请 先调用 sql/shiro-init-data.sql 初始化用户数据。 如上方式的缺点是:salt 保存在散列值中;没有实现如密码重试次数限制。 [main] passwordService=org.apache.shiro.authc.credential.DefaultPasswordService0 码力 | 219 页 | 4.16 MB | 10 月前3
JAVA 应用与开发 - 集合与映射������的���������������� �������� �� Map �����的��¡���Key-Value������ �������的��������������� 注意 Java 集合中只能保存引用类型的数据,实际上存放的是对象的引用 而非对象本身。Java API 中的集合类型均定义在 java.util 包中。 4 28 集合�� 集合�����用���������������合����� ������的���������������� �������� �� Map �����的��¡���Key-Value������ �������的��������������� 注意 Java 集合中只能保存引用类型的数据,实际上存放的是对象的引用 而非对象本身。Java API 中的集合类型均定义在 java.util 包中。 4 28 集合�� 集合�����用���������������合����� ������的���������������� �������� �� Map �����的��¡���Key-Value������ �������的��������������� 注意 Java 集合中只能保存引用类型的数据,实际上存放的是对象的引用 而非对象本身。Java API 中的集合类型均定义在 java.util 包中。 4 28 集合�� 集合�����用���������������合�����0 码力 | 66 页 | 713.79 KB | 1 年前3
Hello 算法 1.0.0b2 Java版通常情况下,空间复杂度统计范围是「暂存空间」+「输出空间」。 暂存空间可分为三个部分: ‧「暂存数据」用于保存算法运行中的各种 常量、变量、对象 等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统每次调用函数都会在栈的顶部创建一个栈帧,函数返 回时,栈帧空间会被释放。 ‧「指令空间」用于保存编译后的程序指令,在实际统计中一般忽略不计。 2. 复杂度分析 hello‑algo.com 28 ,根据算法需求选用,即在满足取值范围的情况下尽 量减小内存空间占用; ‧「浮点数」代表小数,根据长度分为 float, double ,同样根据算法的实际需求选用; ‧「字符」在计算机中是以字符集的形式保存的,char 的值实际上是数字,代表字符集中的编号,计算机 通过字符集查表来完成编号到字符的转换。占用空间通常为 2 bytes 或 1 byte ; ‧「布尔」代表逻辑中的“是”与“否”,其占用空间需根据编程语言确定,通常为 if (head == null) return null; head = head.next; } return head; } 链表的内存占用多。链表以结点为单位,每个结点除了保存值外,还需额外保存指针(引用)。这意味着同样 数据量下,链表比数组需要占用更多内存空间。 4.2.3. 链表常用操作 遍历链表查找。遍历链表,查找链表内值为 target 的结点,输出结点在链表中的索引。0 码力 | 197 页 | 15.72 MB | 1 年前3
Apache Shiro 1.2.x Reference Manual 中文翻译Shiro 1.2.x Reference Manual 中文翻译 8 2. Tutorial 教程 现在,在你的文件系统中创建一个新目录,例如, shiro-tutorial 作为项目名并在目录下保存以下 Maven pom.xml 文件: 教程中的 class 我们将运行一个简单的命令行应用程序,因此我们将需要创建一个带 public static void main(String[] Authenticator) Authenticator 是一个组件,负责执行和反馈用户的认证(登录),如果一个用户尝试登录, Authenticator 就开始执行。Authenticator 知道如何协调一个或多个保存有相关用户/帐号信息 的 Realm,从这些 Realm中获取这些数据来验证用户的身份以确保用户确实是其表述的那个 人。 Authentication Strategy(org.apache.shiro 实现来匹配你的凭证所使用的 hash 算法。 例发,假设你的程序使用用户名/密码对来进行验证,基于上述 hash 凭证的好处,你希望当 创建用户时以 SHA-265 方式加密用户的密码,你可以加密用户输入的明文密码并保存加密 值: import org.apache.shiro.crypto.hash.Sha256Hash; import org.apache.shiro.crypto.RandomNumberGenerator;0 码力 | 196 页 | 2.34 MB | 1 年前3
Hello 算法 1.0.0b1 Java版通常情况下,空间复杂度统计范围是「暂存空间」+「输出空间」。 暂存空间可分为三个部分: ‧「暂存数据」用于保存算法运行中的各种 常量、变量、对象 等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统每次调用函数都会在栈的顶部创建一个栈帧,函数返 回时,栈帧空间会被释放。 ‧「指令空间」用于保存编译后的程序指令,在实际统计中一般忽略不计。 2. 复杂度分析 hello‑algo.com 28 ,根据算法需求选用,即在满足取值范围的情况下尽 量减小内存空间占用; ‧「浮点数」代表小数,根据长度分为 float, double ,同样根据算法的实际需求选用; ‧「字符」在计算机中是以字符集的形式保存的,char 的值实际上是数字,代表字符集中的编号,计算机 通过字符集查表来完成编号到字符的转换。占用空间与具体编程语言有关,通常为 2 bytes 或 1 byte ; ‧「布尔」代表逻辑中的 if (head == null) return null; head = head.next; } return head; } 链表的内存占用多。链表以结点为单位,每个结点除了保存值外,还需额外保存指针(引用)。这意味着同样 数据量下,链表比数组需要占用更多内存空间。 4.2.3. 链表常用操作 遍历链表查找。遍历链表,查找链表内值为 target 的结点,输出结点在链表中的索引。0 码力 | 186 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b4 Java版通常情况下,空间复杂度统计范围是「暂存空间」+「输出空间」。 暂存空间可以进一步划分为三个部分: ‧「暂存数据」用于保存算法运行过程中的各种常量、变量、对象等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统在每次调用函数时都会在栈顶部创建一个栈帧,函 数返回后,栈帧空间会被释放。 ‧「指令空间」用于保存编译后的程序指令,在实际统计中通常忽略不计。 因此,在分析一段程序的空间复杂度时,我们一般统计 暂存数据、输出数据、栈帧空间 (树) 数据结构。 � char 类型的长度是 1 byte 吗? char 类型的长度由编程语言采用的编码方法决定。例如,Java, JS, TS, C# 都采用 UTF‑16 编 码(保存 Unicode 码点),因此 char 类型的长度为 2 bytes 。 50 4. 数组与链表 4.1. 数组 「数组 Array」是一种线性数据结构,其将相同类型元素存储在连续的内存空间中。我们将元素在数组中的位 (head == null) return null; head = head.next; } return head; } 链表的内存占用较大。链表以节点为单位,每个节点除了保存值之外,还需额外保存指针(引用)。这意味着 在相同数据量的情况下,链表比数组需要占用更多的内存空间。 4.2.3. 链表常用操作 遍历链表查找。遍历链表,查找链表内值为 target 的节点,输出节点在链表中的索引。0 码力 | 342 页 | 27.39 MB | 1 年前3
共 30 条
- 1
- 2
- 3













