Java EE 企业应用系统设计 - HTTP 请求处理编程大纲 HTTP 请求内容 Java EE 请求对象 Java EE 企业应用系统设计 HTTP 请求处理编程 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 November 17, 2018 大纲 HTTP 请求内容 Java EE 请求对象 学习目标 1. 理解 Web 的工作模式,掌握 HTTP 协议的特点以及 HTTP 请求中包含哪些信息。 2. 理解 理解 Java HTTP 请求对象的类型及其生命周期,掌握请求 对象的功能,学习部分请求对象方法的用法。 大纲 HTTP 请求内容 Java EE 请求对象 大纲 HTTP 请求内容 Java EE 请求对象 大纲 HTTP 请求内容 Java EE 请求对象 接下来⋯ HTTP 请求内容 Java EE 请求对象 大纲 HTTP 请求内容 Java EE 请求对象 Web 工作模式 Web 通常使用请求�响应模式。 ▶ 客户端(浏览器)向服务器发出 HTTP 请求,在 HTTP 请 求中包含传递到服务器的数据; ▶ Web 服务器接收到请求,对请求进行处理。 ▶ Web 服务器使用 HTTP 向客户端发送响应。 ▶ 客户端接收到响应后,进行显示或页面跳转。 大纲 HTTP 请求内容 Java EE 请求对象 HTTP 请求中包含的信息 HTTP 请求中包含的信息包括两部分:请求头和请求体。0 码力 | 27 页 | 565.27 KB | 1 年前3
Nacos架构&原理
7 > 推荐序 推荐序 阿里巴巴合伙人 - 蒋江伟(小邪) 随着企业加速数字化升级,越来越多的系统架构采用了分布式的架构,主要目的是为了解决集中化 和互联网化所带来的架构扩展性和面对海量用户请求的技术挑战。这里面其中有⼀个关键点是软负 载。因为整个分布式架构需要有⼀个软负载来协作各个节点之间的服务在线离线状态、数据⼀致性、 以及动态配置数据的推送。这里面最简单的需求就是将⼀个配置准时的推送到不同的节点。即便如 散我们 品牌和运营资源。另外大部分客户没有阿里这么大的体量,模块拆分过细,部署和运维成本都会成 倍上涨,而且阿里巴巴也是从最早⼀个产品逐步演化成 3 个产品的,因此我们最终决定将内部三个 产品合并统⼀开源。定位为:⼀个更易于构建云原生应用的动态服务发现、配置管理和服务管理平 台。由于我们在阿里内部发展了 10 年,在易用、规模、实时、稳定沉淀了核心竞争力,围绕阿里 Dubbo 和 Spring-cloud-alibaba 与存储、Server 间、Server 与 SDK 间高效通信问题。 容量管理:管理每个租户,分组下的容量,防止存储被写爆,影响服务可用性。 流量管理:按照租户,分组等多个维度对请求频率,长链接个数,报文大小,请求流控进行控制。 缓存机制:容灾目录,本地缓存,Server 缓存机制,是 Nacos 高可用的关键。 启动模式:按照单机模式,配置模式,服务模式,DNS 模式模式,启动不同的模块。0 码力 | 326 页 | 12.83 MB | 10 月前3
跟我学Shiro - 张开涛SecurityManager 并绑定到 SecurityUtils,这是一个全局设置,设置一次即可; 2.3、通过 SecurityUtils 得到 Subject,其会自动绑定到当前线程;如果在 web 环境在请求结 束时需要解除绑定;然后获取身份验证的 Token,如用户名/密码; 2.4、调用 subject.login 方法进行登录,其会自动委托给 SecurityManager.login 方法进行登录; 因为每个 AuthenticationStrategy 实例都是无状态的,所有每次都通过接口将相应的认证信 息传入下一次流程;通过如上接口可以进行如合并/返回第一个验证成功的认证信息。 自定义实现时一般继承 org.apache.shiro.authc.pam.AbstractAuthenticationStrategy 即可,具体 可 以 getObjectPermissions() 得 到 Permission 实 例 集 合 ; 通 过 AuthorizationInfo. getStringPermissions()得到字符串集合并通过 PermissionResolver 解析为 Permission 实例;然后获取用户的角色,并通过 RolePermissionResolver 解析角色对应的权 限集合(默认没有实现,可以自己提供);0 码力 | 219 页 | 4.16 MB | 10 月前3
Hello 算法 1.0.0b1 Java版Sort」是算法中“分治思想”的典型体现,其有「划分」和「合并」两个阶段: 1. 划分阶段:通过递归不断 将数组从中点位置划分开,将长数组的排序问题转化为短数组的排序问题; 2. 合并阶段:划分到子数组长度为 1 时,开始向上合并,不断将 左、右两个短排序数组 合并为 一个长排 序数组,直至合并至原数组时完成排序; Figure 11‑8. 归并排序的划分与合并阶段 11.5.1. 算法流程 「递归划分」从顶至底递归地 递归执行 1. 步骤,直至子数组区间长度为 1 时,终止递归划分; 「回溯合并」从底至顶地将左子数组和右子数组合并为一个 有序数组; 11. 排序算法 hello‑algo.com 175 需要注意,由于从长度为 1 的子数组开始合并,所以 每个子数组都是有序的。因此,合并任务本质是要 将两 个有序子数组合并为一个有序数组。 11. 排序算法 hello‑algo.com 176 Figure 观察发现,归并排序的递归顺序就是二叉树的「后序遍历」。 ‧ 后序遍历:先递归左子树、再递归右子树、最后处理根结点。 ‧ 归并排序:先递归左子树、再递归右子树、最后处理合并。 // === File: merge_sort.java === /* 合并左子数组和右子数组 */ // 左子数组区间 [left, mid] // 右子数组区间 [mid + 1, right] void merge(int[]0 码力 | 186 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 Java版有「划分」和「合并」两个阶段: 1. 划分阶段:通过递归不断 将数组从中点位置划分开,将长数组的排序问题转化为短数组的排序问题; 2. 合并阶段:划分到子数组长度为 1 时,开始向上合并,不断将 左、右两个短排序数组 合并为 一个长排 序数组,直至合并至原数组时完成排序; 11. 排序算法 hello‑algo.com 175 Figure 11‑8. 归并排序的划分与合并阶段 11.5 1, right] ); 2. 递归执行 1. 步骤,直至子数组区间长度为 1 时,终止递归划分; 「回溯合并」从底至顶地将左子数组和右子数组合并为一个 有序数组; 需要注意,由于从长度为 1 的子数组开始合并,所以 每个子数组都是有序的。因此,合并任务本质是要 将两 个有序子数组合并为一个有序数组。 11. 排序算法 hello‑algo.com 176 Figure 11‑9. 归并排序步骤 后序遍历:先递归左子树、再递归右子树、最后处理根结点。 11. 排序算法 hello‑algo.com 177 ‧ 归并排序:先递归左子树、再递归右子树、最后处理合并。 // === File: merge_sort.java === /* 合并左子数组和右子数组 */ // 左子数组区间 [left, mid] // 右子数组区间 [mid + 1, right] void merge(int[]0 码力 | 197 页 | 15.72 MB | 1 年前3
Hello 算法 1.0.0b4 Java版Q & A � 数据结构的“堆”与内存管理的“堆”是同一个概念吗? 两者不是同一个概念,只是碰巧都叫堆。计算机系统内存中的堆是动态内存分配的一部分,程 序在运行时可以使用它来存储数据。程序可以请求一定量的堆内存,用于存储如对象和数组 等复杂结构。当这些数据不再需要时,程序需要释放这些内存,以防止内存泄露。相较于栈内 存,堆内存的管理和使用需要更谨慎,不恰当的使用可能会导致内存泄露和野指针等问题。 Merge Sort」基于分治思想实现排序,包含“划分”和“合并”两个阶段: 1. 划分阶段:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。 2. 合并阶段:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较 长的有序数组,直至结束。 Figure 11‑10. 归并排序的划分与合并阶段 11.6.1. 算法流程 “划分阶段”从顶至底递归地将数组从中点切为两个子数组: mid] )和右子数组(区间 [mid + 1, right] )。 2. 递归执行步骤 1. ,直至子数组区间长度为 1 时,终止递归划分。 “合并阶段”从底至顶地将左子数组和右子数组合并为一个有序数组。需要注意的是,从长度为 1 的子数组开 始合并,合并阶段中的每个子数组都是有序的。 11. 排序 hello‑algo.com 209 11. 排序 hello‑algo.com 210 Figure0 码力 | 342 页 | 27.39 MB | 1 年前3
Hello 算法 1.0.0b5 Java版Q & A � 数据结构的“堆”与内存管理的“堆”是同一个概念吗? 两者不是同一个概念,只是碰巧都叫堆。计算机系统内存中的堆是动态内存分配的一部分,程 序在运行时可以使用它来存储数据。程序可以请求一定量的堆内存,用于存储如对象和数组 等复杂结构。当这些数据不再需要时,程序需要释放这些内存,以防止内存泄露。相较于栈内 存,堆内存的管理和使用需要更谨慎,不恰当的使用可能会导致内存泄露和野指针等问题。 hello‑algo.com 212 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 // === File: binary_search_insertion.java === /* 二分查找插入点(存在重复元素) sort」是一种基于分治策略的排序算法,包含图 11‑10 所示的“划分”和“合并”阶段。 1. 划分阶段:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。 2. 合并阶段:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较 长的有序数组,直至结束。 图 11‑10 归并排序的划分与合并阶段 11.6.1 算法流程 如图 11‑11 所示,“划0 码力 | 376 页 | 30.69 MB | 1 年前3
Apache Shiro参考手册中文版该教程需要 Java 1.5 及更高本。我们也使用 Apache Maven 作为我们的构建工具,但当然这不是使用 Apache Shiro 所 必需的。你可以获取 Shiro 的 jar 包并按你喜欢的方式合并到你的应用程序,例如可能是一 Apache Ant 和 Ivy。 对于本教程,请确保你正在使用 Maven 2.2.1 或更高版本。你应该能够键入 mvn -version 命令行提示符,并看到与 getSubject()在一个独立的应用程序中调用,可以返回一个在应用程序特定位置的基于用户数据的 Subject,并且在服 务器环境中(例如,Web 应用程序),它获取的 Subject 是基于关联了当前线程或传入请求的用户数据的。 现在你拥有了一个 Subject,你能拿它来做什么? 如果你想在应用程序的当前会话中使事物对于用户可用,你可以获得他们的会话: Session pam.AbstractAuthenticationStrategy 作为出发点。AbstractAuthenticationStrategy 类自动实 现“捆绑”/聚集行为,从每一个 Realm 合并结果到一个单一的 AuthenticationInfo 实例。 Realm 的验证顺序 需要指出非常重要的一点是,ModularRealmAuthenticator 将与 Realm 实例以迭代的顺序进行交互。0 码力 | 92 页 | 1.16 MB | 1 年前3
Hello 算法 1.1.0 Java版& A Q:数据结构的“堆”与内存管理的“堆”是同一个概念吗? 两者不是同一个概念,只是碰巧都叫“堆”。计算机系统内存中的堆是动态内存分配的一部分,程序在运行时 可以使用它来存储数据。程序可以请求一定量的堆内存,用于存储如对象和数组等复杂结构。当这些数据不 再需要时,程序需要释放这些内存,以防止内存泄漏。相较于栈内存,堆内存的管理和使用需要更谨慎,使 用不当可能会导致内存泄漏和野指针等问题。 的元素,因此索引 ? 就是插入点。 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 第 10 章 搜索 hello‑algo.com 213 // === File: binary_search_insertion sort)是一种基于分治策略的排序算法,包含图 11‑10 所示的“划分”和“合并”阶段。 1. 划分阶段:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。 2. 合并阶段:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较 长的有序数组,直至结束。 图 11‑10 归并排序的划分与合并阶段 11.6.1 算法流程 如图 11‑11 所示,“0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 Java版& A Q:数据结构的“堆”与内存管理的“堆”是同一个概念吗? 两者不是同一个概念,只是碰巧都叫“堆”。计算机系统内存中的堆是动态内存分配的一部分,程序在运行时 可以使用它来存储数据。程序可以请求一定量的堆内存,用于存储如对象和数组等复杂结构。当这些数据不 再需要时,程序需要释放这些内存,以防止内存泄漏。相较于栈内存,堆内存的管理和使用需要更谨慎,使 用不当可能会导致内存泄漏和野指针等问题。 的元素,因此索引 ? 就是插入点。 图 10‑6 二分查找重复元素的插入点的步骤 观察以下代码,判断分支 nums[m] > target 和 nums[m] == target 的操作相同,因此两者可以合并。 即便如此,我们仍然可以将判断条件保持展开,因为其逻辑更加清晰、可读性更好。 第 10 章 搜索 hello‑algo.com 214 // === File: binary_search_insertion sort」是一种基于分治策略的排序算法,包含图 11‑10 所示的“划分”和“合并”阶段。 1. 划分阶段:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。 2. 合并阶段:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较 长的有序数组,直至结束。 图 11‑10 归并排序的划分与合并阶段 第 11 章 排序 hello‑algo.com 2390 码力 | 376 页 | 17.59 MB | 1 年前3
共 27 条
- 1
- 2
- 3













