Java 应用与开发 - 线程编程概念回顾 O 任务调度 ▶ 大部分操作系统的任务调度是采用时间片轮转的抢占式调度 方式,一个任务执行一小段时间后强制暂停去执行下一个任 务,每个任务轮流执行。 ▶ CPU 的执行效率非常高,时间片非常短,在各个任务之间 快速地切换,让人感觉像是多个任务在“同时进行”,这也 就是我们所说的并发。 t Task 1 Task 2 Task 3 大纲 线程基础 线程控制 线程的同步 相关知识回顾 进程是一个具有一定独立功能的程序在一个数据集上的一次 动态执行的过程,是操作系统进行资源分配和调度的一个独 立单位,是应用程序运行的载体。 (展示类 UNIX 系统的进程树) ▶ 进程一般由程序段、数据段和进程控制块三部分构成进程 实体。 大纲 线程基础 线程控制 线程的同步 相关知识回顾 什么是线程 根据多任务原理,在一个程序内部也可以实现多个任务(顺序控 制流)的并发执行,其中每个任务被称为线程(Thread)。更专 线程作为“轻量的进程”,同一类线程共享代码和数据空间,每个 线程有独立的运行栈和程序计数器(PC),线程切换的开销小。 3. 多进程——在操作系统中能同时运行多个任务(程序)。 4. 多线程——在同一应用程序中有多个顺序流同时执行。 大纲 线程基础 线程控制 线程的同步 相关知识回顾 线程和进程的区别和联系 代码 数据 进程空间 打开文件 寄存器 栈 线程 1 寄存器 栈 线程 2 寄存器 栈 线程0 码力 | 82 页 | 1010.73 KB | 1 年前3
《Java 应用与开发》课程讲义 - 王晓东. . . . . . . . . . . . . . . . . . . . . 278 23.1.3 JSP 的执行过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 23.1.4 JSP 执行过程描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 20.1 重定向和转发的区别 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 xx 23.1 JSP 的执行过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 23.2 inlcude 动作和指令的差异 . . 没有内置的多线程机制,需调用操作系统的多线程功能来进行多线程序设 计;Java 提供了多线程支持。 网络编程 Java 具有丰富的网络编程库。 编译和解释并存 由编译器将 Java 源程序编译成字节码文件,再由运行系统解释执行 字节码文件(解释器将字节码再翻译成二进制码运行)。 1.2 Java 平台核心机制 Java 技术栈如图1.2所示,程序的编译运行过程如图1.3所示。需要了解以下几个核 心概念: • Java0 码力 | 330 页 | 6.54 MB | 1 年前3
Java 应用与开发 - HTTP 会话跟踪技术name/value 对,可以保存如登录帐号、用户喜好等会话数据。 ▶ Cookie 由 Web 服务器创建,由 Web 服务器在进行 HTTP 响应 时,将 Cookie 保存在 HTTP 响应头中并发送给浏览器,浏览器 收到 HTTP 响应头,解析出 Cookie,将它保存在客户的本地隐 藏文件中。 ▶ 客户浏览器每次向 Web 服务器发出 HTTP 请求时,自动将 Cookie 保存在请求头中,随请求体一起发送到服务器,这个过程 name/value 对,可以保存如登录帐号、用户喜好等会话数据。 ▶ Cookie 由 Web 服务器创建,由 Web 服务器在进行 HTTP 响应 时,将 Cookie 保存在 HTTP 响应头中并发送给浏览器,浏览器 收到 HTTP 响应头,解析出 Cookie,将它保存在客户的本地隐 藏文件中。 ▶ 客户浏览器每次向 Web 服务器发出 HTTP 请求时,自动将 Cookie 保存在请求头中,随请求体一起发送到服务器,这个过程 name/value 对,可以保存如登录帐号、用户喜好等会话数据。 ▶ Cookie 由 Web 服务器创建,由 Web 服务器在进行 HTTP 响应 时,将 Cookie 保存在 HTTP 响应头中并发送给浏览器,浏览器 收到 HTTP 响应头,解析出 Cookie,将它保存在客户的本地隐 藏文件中。 ▶ 客户浏览器每次向 Web 服务器发出 HTTP 请求时,自动将 Cookie 保存在请求头中,随请求体一起发送到服务器,这个过程0 码力 | 54 页 | 824.47 KB | 1 年前3
跟我学Shiro - 张开涛....................................................................................... 147 第十八章 并发登录人数控制 ............................................................................................ 这样可以 跟我学 Shiro——http://jinnianshilongnian.iteye.com/ 6 提高效率; Concurrency:shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能 把权限自动传播过去; Testing:提供测试支持; Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问; Remember M 都绑定 到 SecurityManager,与 Subject 的所有交互都会委托给 SecurityManager;可以把 Subject 认 为是一个门面;SecurityManager 才是实际的执行者; SecurityManager:安全管理器;即所有与安全有关的操作都会与 SecurityManager 交互; 且它管理着所有 Subject;可以看出它是 Shiro 的核心,它负责与后边介绍的其他组件进行0 码力 | 219 页 | 4.16 MB | 10 月前3
Apache Shiro 1.2.x Reference Manual 中文翻译10.5. JSP Tag Library IV. Auxiliary Support 辅助支持 11. Caching 缓存 12. Concurrency & Multithreading 并发与多线程 13. Testing 测试 14. Custom Subjects 自定义 Subject V. Integration 整合 15. Spring Framework 16. Web支持:Shiro 提供的 web 支持 api ,可以很轻松的保护 web 应用程序的安全。 缓存:缓存是 Apache Shiro 保证安全操作快速、高效的重要手段。 并发:Apache Shiro 支持多线程应用程序的并发特性。 测试:支持单元测试和集成测试,确保代码和预想的一样安全。 "Run As":这个功能允许用户假设另一个用户的身份(在许可的前提下)。 "Remember Me":跨 Test Run 测试运行 Apache Shiro 1.2.x Reference Manual 中文翻译 9 2. Tutorial 教程 在教程项目的根目录(如 shiro-tutorial )执行以下命令提示符中,输入以下: mvn compile exec:java 你就会看到我们的小教程应用程序的运行和退出。 您应当会看到类似于下面的输出(译者 注:红框中的内容) 我们已经验证了应用程序成功运行——现在让我们使0 码力 | 196 页 | 2.34 MB | 1 年前3
Nacos架构&原理
准确的在 3 秒钟之内推送到每⼀ 个计算节点,这是当时提出的⼀个要求,围绕这个要求,系统要做大量的研发和改造,类似的这种 关键的技术挑战点还非常非常的多。本书就是将面对复杂的分布式计算场景,海量并发的业务场景, 对软负载⼀个系统的进行阐述,通过 Nacos 开源分享阿里软负载最佳实践,希望能够帮助到各位开 发者,各位系统架构师,少走弯路。 阿里巴巴云原生应用平台负责人 - 丁宇(叔同) void delete(byte[] key) throws KvStorageException; ... } 由于 Nacos 的服务模块存储,更多的都是根据单个或者多个唯⼀ key 去执行点查的操作,因此 Key-Value 类型的存储接口最适合不过。而 Key-Value 的存储接口定义好之后,其实就是这个 KVStore 的具体实现了。可以直接将 KVStore 的实现对接 Redis,也可以直接对接 port 信息计算其所属的 Distro 责任节点, 并将该请求转发到所属的 Distro 责任节点上。 责任节点上的 Controller 将写请求进行解析。 Distro 协议定期执行 Sync 任务,将本机所负责的所有的实例信息同步到其他节点上。 读操作 由于每台机器上都存放了全量数据,因此在每⼀次读操作中,Distro 机器会直接从本地拉取数据。 快速响应。 41 >0 码力 | 326 页 | 12.83 MB | 9 月前3
Java 对象的创建过程Java创建对象的过程 类加载检查 首先当虚拟机遇到一个new指令时,首先会去检查这个参数能否在常量池中定位到这个类的符号引用 并且检查这个符号引用所代表的的类是否已经被加载、连接、解析和初始化过,如果没有需要先执行 的加载操作(详细过程可参考"类的加载流程" )。 分配内存 当类加载检查通过后,接下来虚拟机需要为新生对象分配内存,为对象分配空间的任务等同于把一块 定大小的内存从 Java 堆中划分出来。分 块足够大的内存块来给对象实例,最后更新列表记录。 当然该算法也有不足,由于需要时刻维护一个空闲列表,因而会增加空间和时间开销,但优点就是它 以用来对离散的空间进行内存分配。 最后在分配内存时,可能也会存在并发安全的问题,为了解决该问题,虚拟机采用两种方式来解决: ● CAS+失败重试: CAS 是乐观锁的一种实现方式。所谓乐观锁就是,每次不加锁而是假设没有冲突 去完成某项操作,如果因为冲突失败就重试,直到成功为止。虚拟机采用 据虚拟机当前运行状态的不同,如是否启用偏向锁等,对象头会有不同的设置方式。 执行init()方法 上边一些列工作完成之后,从虚拟机角度来看,实际上一个对象已经产生了。但从Java程序的角度来 ,对象创建才刚刚开始---构造函数,即Class文件中的()方法还没有执行所有字段还都是零值 并没有按照构造方法来对对象进行初始化,因而最后一步需要执行 ()按照程序员的意愿来对代 进行初始化。 好了 0 码力 | 4 页 | 389.87 KB | 1 年前3
Apache Shiro参考手册中文版该尽可能掩盖复杂的地方,露出一个干净而直观的 API,来简化开发人员在使他们的应用程序安全上的努力。 以下是你可以用 Apache Shiro 所做的事情: 验证用户来核实他们的身份 对用户执行访问控制,如: 判断用户是否被分配了一个确定的安全角色 判断用户是否被允许做某事 在任何环境下使用 Session API,即使没有 Web 或 EJB 容器。 能够轻松地帮助保护 Web 应用程序。 Caching:缓存是 Apache Shiro 中的第一层公民,来确保安全操作快速而又高效。 Concurrency:Apache Shiro 利用它的并发特性来支持多线程应用程序。 Testing:测试支持的存在来帮助你编写单元测试和集成测试,并确保你的能够如预期的一样安全。 "Run As":一个允许用户假设为另一个用户身份(如 该程序 所能够做到全部事情是打印出文本"My First Apache Shiro Application"并退出。 Test Run 要试用我们的教程应用程序,请在你的教程项目的根目录下执行以下的命令提示符,并键入以下内容: mvn compile exec:java 然后你将看到我们的 little 教程“程序”运行并退出。你应该会看到与下面相似的一些东西(注意粗体文本,它显0 码力 | 92 页 | 1.16 MB | 1 年前3
Hello 算法 1.0.0b1 Java版的字,一般我们会这样做: 1. 打开字典大致一半页数的位置,查看此页的首字母是什么(假设为 ? ); 2. 由于在英文字母表中 ? 在 ? 的后面,因此应排除字典前半部分,查找范围仅剩后半部分; 3. 循环执行步骤 1‑2 ,直到找到拼音首字母为 ? 的页码时终止。 1. 引言 hello‑algo.com 9 Figure 1‑1. 查字典步骤 查字典这个小学生的标配技能,实际上就是大名鼎鼎的「二 系列指令看作是「二分查找」算法。 小到烹饪一道菜、大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现,使我们可以通过编程将 数据结构存储在内存中,也可以编写代码来调用 CPU, GPU 执行算法,从而将生活中的问题搬运到计算机中, 更加高效地解决各式各样的复杂问题。 � 读到这里,如果你感到对数据结构、算法、数组、二分查找等此类概念一知半解,那么就太好 了!因为这正是本书存在的 储的数据,以及操作数据的对应方法。 ‧ 算法是数据结构发挥的舞台。数据结构仅存储数据信息,结合算法才可解决特定问题。 ‧ 算法有对应最优的数据结构。给定算法,一般可基于不同的数据结构实现,而最终执行效率往往相差很 大。 Figure 1‑2. 数据结构与算法的关系 如果将「LEGO 乐高」类比到「数据结构与算法」,那么可以得到下表所示的对应关系。 数据结构与算法 LEGO 乐高 输入数据0 码力 | 186 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 Java版的字,一般我们会这样做: 1. 打开字典大致一半页数的位置,查看此页的首字母是什么(假设为 ? ); 2. 由于在英文字母表中 ? 在 ? 的后面,因此应排除字典前半部分,查找范围仅剩后半部分; 3. 循环执行步骤 1‑2 ,直到找到拼音首字母为 ? 的页码时终止。 1. 引言 hello‑algo.com 9 Figure 1‑1. 查字典步骤 查字典这个小学生的标配技能,实际上就是大名鼎鼎的「二 系列指令看作是「二分查找」算法。 小到烹饪一道菜、大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现,使我们可以通过编程将 数据结构存储在内存中,也可以编写代码来调用 CPU, GPU 执行算法,从而将生活中的问题搬运到计算机中, 更加高效地解决各式各样的复杂问题。 � 读到这里,如果你感到对数据结构、算法、数组、二分查找等此类概念一知半解,那么就太好 了!因为这正是本书存在的 储的数据,以及操作数据的对应方法。 ‧ 算法是数据结构发挥的舞台。数据结构仅存储数据信息,结合算法才可解决特定问题。 ‧ 算法有对应最优的数据结构。给定算法,一般可基于不同的数据结构实现,而最终执行效率往往相差很 大。 Figure 1‑2. 数据结构与算法的关系 如果将「LEGO 乐高」类比到「数据结构与算法」,那么可以得到下表所示的对应关系。 数据结构与算法 LEGO 乐高 输入数据0 码力 | 197 页 | 15.72 MB | 1 年前3
共 36 条
- 1
- 2
- 3
- 4













