《Java 应用与开发》课程讲义 - 王晓东
. 181 14.1.1 进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 14.1.2 什么是线程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 14.1.3 线程和进程的区别 . . . . . . has-a)2。 泛化关系 一般化关系(is-a),表示类之间的继承关系、类和接口之间的实现关系以及 接口之间的继承关系。 4.3 访问控制 访问控制是指对 Java 类或类中成员的操作进行限制,即规定其在多大的范围内可 以被直接访问。 4.3.1 类的访问控制 在声明 Java 类时可以在 class 关键字前使用 public 来修饰,也可以不使用该修饰 符。public 的类可在任意场合被引入和使用,而非 规划 子类中通过抽象方法的重写来实现父类规划的功能。 抽象类的其他特性 • 抽象类中可以不包含抽象方法。主要用于当一个类已经定义了多个更适用的子类 时,为避免误用功能相对较弱的父类对象,干脆限制其实例化。 • 子类中可以不全部实现抽象父类中的抽象方法,但此时子类也只能声明为抽象 类。 • 父类不是抽象类,但在子类中可以添加抽象方法,此情况下子类必须声明为抽象 类。 • 多态性对于0 码力 | 330 页 | 6.54 MB | 1 年前3Linux Docker Mess
抢占式,不能真正实现实时应用。RT-Linux用巧妙的方式解决了此 问题,它并没有重写Linux的内核,而是实现了一个高效的可抢占式 实时调度核心并把Linux作为此核心的一个优先级最低的进程运行, 用户可以编写自己的实时进程,和标准的Linux共同运行。 Android n 架构 Linux Kernel Google vs Oracle:Java版权之争 So, what is Linux? Scratch. 阴险的笑 Architecture Shell Kernel File System Applications Architecture Kernel n 内存管理 n 进程管理 n 文件系统(虚拟文件系统 VFS) n 设备驱动 n 网络接口 建议阅读Linux内核源代码,可以从Linux-0.11入手,推荐Linux内核完全注释 (赵炯著) Architecture 车后 立刻返回到命令提示符状态下,而命令在后台执行。 命令& Architecture Shell n 暂停和恢复进程 n command& 让进程在后台运行 n jobs 查看后台运行的进程 n fg n 让后台运行的进程n到前台来 n bg n 让进程n到后台去 n ctrl+z 可以将一个正在前台执行的命令放到后台,并且暂停 Architecture Shell Scripts0 码力 | 77 页 | 7.40 MB | 1 年前3Nacos架构&原理
接根据 Nacos 内核模块的⼀致性协议,在此基础之上,实现⼀个内存或者持久化的分布式强(弱) ⼀致性 KV。通过功能边界将 Nacos 进程进⼀步分离为计算逻辑层和存储逻辑层,计算层和存储层 之间的交互仅通过⼀层薄薄的数据操作胶水代码,这样就在单个 Nacos 进程里面实现了计算和存储 二者逻辑的彻底分离。 37 > Nacos 架构 同时,针对存储层,进⼀步实现插件化的设计,对于中小公司且有运维成本要求的话,可以直接使 的写入,内部没有聚合;其次 Zookeeper 舍弃了服务发现的基本功能如健康检查、友好 的查询接口,它在支持这些功能的时候,显然需要增加⼀些逻辑,甚至弃用现有的数据结构;最后, Paxos 协议本身就限制了 Zookeeper 集群的规模,3、5 个节点是不能应对大规模的服务订阅和查 询的。 在对容量的评估时,不仅要针对企业现有的服务规模进行评估,也要对未来 3 到 5 年的扩展规模 进行预测 实例下线以此摘除流量,但是同样因为网络问题,该实例与 Nacos 的通信也收到影响,导致实例 注销后重新注册,这可能导致上线状态被重新注册而覆盖,失去了运维人员操作的优先级。 当然,这部分元数据也不应该无限制的存储下去,如果实例确实已经移除,元数据也应该移除,为 此,在 Nacos 2.0 版本后,通过该接口更新的元数据会在对应实例删除后,依旧存在⼀段时间,如 果在此期间实例重新注册,该元数据依旧生效;您可以通过0 码力 | 326 页 | 12.83 MB | 9 月前3Apache Shiro 1.2.x Reference Manual 中文翻译
currently executing user)”,这里并不称之为“User”因为“User”这个词通常和一个人相关,但在安全认证 中,“Subject”可以认为是一个人,也可以认为是第三方进程、时钟守护任务、守护进程帐户 或者其它。它可简单描述为“当前和软件进行交互的事件”,在大多数情况下,你可以认为它是 一个“人(User)”。 在一个独立的程序中调用 getSubject() 会在程序指定位置返回一个基于用户数据的 Subject:就像我们在上一章示例中提到的那样,Subject 本质上是当前运行用户特定 的'View'(视图),而单词“User”经常暗指一个人,Subject 可以是一个人,但也可以是第三 方服务、守护进程帐户、时钟守护任务或者其它--当前和软件交互的任何事件。 Subject 实例都和(也需要)一个 SecurityManager 绑定,当你和一个Subject 进行交互,这些交 互动作被转换成 行时,各程序有自己独立的实例会更好些,而不是共同引用一块静态内存。 改变配置就需要重新编译你的程序。 然而,尽管有这些不足,在程序中定制的这种方法在限制内存(memory-constrained )的环 境中还是很有价值的,像智能电话程序。如果你的程序不是运行在一个限制内存的环境中, 你会发现基于文本的配置会更易读易用。 INI Configuration 配置 大多数程序已经改为使用基于文本的配置0 码力 | 196 页 | 2.34 MB | 1 年前3Apache Shiro参考手册中文版
是一个安全术语,它基本上的意思是 “当前正在执行的用户的特定的安全视图”。它并没有被称为"User"是因为"User"一词通常和人类相关联。在安全 界,术语"Subject"可以表示为人类,而且可是第三方进程,cron job,daemon account,或其他类似的东西。它仅仅 意味着“该事物目前正与软件交互”。对于大多数的意图和目的,你可以把 Subject 看成是 Shiro 的"User"概念。 之前被删除,所以强烈建议在调用 subject.logout()后立即将终端用户重定向到一个新的视图或页面。 这样能够保证任何与安全相关的 Cookies 都能像预期的一样被删除。这是 HTTP cookies 的功能限制,而不是 Shiro 的。 验证顺序 到现在为止,我们只了解了如何从应用程序代码中验证一个 Subject。现在我们将涉及到当一个认证尝试出现 时 Shiro 内部会发什么。 我们采用了 button } else { //don't show the button? Grey it out? } 在这个例子中,我也看到了一个非常强大的实例级的访问控制检查的例子——限制行为的能力是基于个人的数据实 例。 基于对象的权限是很有用的,如果: 你想编译时类型安全 你想保证权限被描述和使用是正确的 你想显式控制许可解析逻辑(被称作许可蕴含的逻辑,基于权限接口的0 码力 | 92 页 | 1.16 MB | 1 年前3Hello 算法 1.0.0b4 Java版
循环链表常被用于需要周期性操作的场景,比如操作系统的资源调度。 ‧ 时间片轮转调度算法:在操作系统中,时间片轮转调度算法是一种常见的 CPU 调度算法,它需要对一 组进程进行循环。每个进程被赋予一个时间片,当时间片用完时,CPU 将切换到下一个进程。这种循 环的操作就可以通过循环链表来实现。 ‧ 数据缓冲区:在某些数据缓冲区的实现中,也可能会使用到循环链表。比如在音频、视频播放器中,数 据流可能会被 Array」的数据结构,即长度可变的数组,也常被称 为「列表 List」。列表基于数组实现,继承了数组的优点,并且可以在程序运行过程中动态扩容。在列表中, 我们可以自由添加元素,而无需担心超过容量限制。 4.3.1. 列表常用操作 初始化列表。通常我们会使用“无初始值”和“有初始值”的两种初始化方法。 // === File: list.java === /* 初始化列表 */ // 无初始值 栈的实现 为了深入了解栈的运行机制,我们来尝试自己实现一个栈类。 栈遵循先入后出的原则,因此我们只能在栈顶添加或删除元素。然而,数组和链表都可以在任意位置添加和 删除元素,因此栈可以被视为一种受限制的数组或链表。换句话说,我们可以“屏蔽”数组或链表的部分无 关操作,使其对外表现的逻辑符合栈的特性。 基于链表的实现 使用链表来实现栈时,我们可以将链表的头节点视为栈顶,尾节点视为栈底。 对0 码力 | 342 页 | 27.39 MB | 1 年前3Hello 算法 1.1.0 Java版
环形链表常用于需要周期性操作的场景,比如操作系统的资源调度。 ‧ 时间片轮转调度算法:在操作系统中,时间片轮转调度算法是一种常见的 CPU 调度算法,它需要对一 组进程进行循环。每个进程被赋予一个时间片,当时间片用完时,CPU 将切换到下一个进程。这种循 环操作可以通过环形链表来实现。 ‧ 数据缓冲区:在某些数据缓冲区的实现中,也可能会使用环形链表。比如在音频、视频播放器中,数据 流可能会被分成多 列表(list)是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。 ‧ 数组也支持元素增删查改,但由于其长度不可变,因此只能看作一个具有长度限制的列表。 当使用数组实现列表时,长度不可变的性质会导致列表的实用性降低。这是因为我们通常无法事先确定需要 的缓存结构是容量、速度和成本之间的最佳平衡点。 图 4‑9 计算机存储系统 Note 计算机的存储层次结构体现了速度、容量和成本三者之间的精妙平衡。实际上,这种权衡普遍存在于 所有工业领域,它要求我们在不同的优势和限制之间找到最佳平衡点。 总的来说,硬盘用于长期存储大量数据,内存用于临时存储程序运行中正在处理的数据,而缓存则用于存储 经常访问的数据和指令,以提高程序运行效率。三者共同协作,确保计算机系统高效运行。0 码力 | 378 页 | 18.47 MB | 1 年前3Hello 算法 1.0.0 Java版
环形链表常用于需要周期性操作的场景,比如操作系统的资源调度。 ‧ 时间片轮转调度算法:在操作系统中,时间片轮转调度算法是一种常见的 CPU 调度算法,它需要对一 组进程进行循环。每个进程被赋予一个时间片,当时间片用完时,CPU 将切换到下一个进程。这种循 环操作可以通过环形链表来实现。 ‧ 数据缓冲区:在某些数据缓冲区的实现中,也可能会使用环形链表。比如在音频、视频播放器中,数据 流可能会被分成多 list」是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。 ‧ 数组也支持元素增删查改,但由于其长度不可变,因此只能看作一个具有长度限制的列表。 当使用数组实现列表时,长度不可变的性质会导致列表的实用性降低。这是因为我们通常无法事先确定需要 的缓存结构是容量、速度和成本之间的最佳平衡点。 图 4‑9 计算机存储系统 � 计算机的存储层次结构体现了速度、容量和成本三者之间的精妙平衡。实际上,这种权衡普遍 存在于所有工业领域,它要求我们在不同的优势和限制之间找到最佳平衡点。 总的来说,硬盘用于长期存储大量数据,内存用于临时存储程序运行中正在处理的数据,而缓存则用于存储 经常访问的数据和指令,以提高程序运行效率。三者共同协作,确保计算机系统高效运行。0 码力 | 376 页 | 17.59 MB | 1 年前3Hello 算法 1.0.0b5 Java版
循环链表常被用于需要周期性操作的场景,比如操作系统的资源调度。 ‧ 时间片轮转调度算法:在操作系统中,时间片轮转调度算法是一种常见的 CPU 调度算法,它需要对一 组进程进行循环。每个进程被赋予一个时间片,当时间片用完时,CPU 将切换到下一个进程。这种循 环的操作就可以通过循环链表来实现。 ‧ 数据缓冲区:在某些数据缓冲区的实现中,也可能会使用到循环链表。比如在音频、视频播放器中,数 据流可能会被 array」的数据结构,即长度可变的数组,也常被称 为「列表 list」。列表基于数组实现,继承了数组的优点,并且可以在程序运行过程中动态扩容。我们可以在 列表中自由地添加元素,而无须担心超过容量限制。 4.3.1 列表常用操作 1. 初始化列表 我们通常使用“无初始值”和“有初始值”这两种初始化方法。 // === File: list.java === /* 初始化列表 */ // 栈的实现 为了深入了解栈的运行机制,我们来尝试自己实现一个栈类。 栈遵循先入后出的原则,因此我们只能在栈顶添加或删除元素。然而,数组和链表都可以在任意位置添加和 删除元素,因此栈可以被视为一种受限制的数组或链表。换句话说,我们可以“屏蔽”数组或链表的部分无 关操作,使其对外表现的逻辑符合栈的特性。 1. 基于链表的实现 使用链表来实现栈时,我们可以将链表的头节点视为栈顶,尾节点视为栈底。0 码力 | 376 页 | 30.69 MB | 1 年前3Hello 算法 1.2.0 简体中文 Java 版
环形链表常用于需要周期性操作的场景,比如操作系统的资源调度。 ‧ 时间片轮转调度算法:在操作系统中,时间片轮转调度算法是一种常见的 CPU 调度算法,它需要对一 组进程进行循环。每个进程被赋予一个时间片,当时间片用完时,CPU 将切换到下一个进程。这种循 环操作可以通过环形链表来实现。 ‧ 数据缓冲区:在某些数据缓冲区的实现中,也可能会使用环形链表。比如在音频、视频播放器中,数据 流可能会被分成多 列表(list)是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。 ‧ 数组也支持元素增删查改,但由于其长度不可变,因此只能看作一个具有长度限制的列表。 当使用数组实现列表时,长度不可变的性质会导致列表的实用性降低。这是因为我们通常无法事先确定需要 的缓存结构是容量、速度和成本之间的最佳平衡点。 图 4‑9 计算机存储系统 Tip 计算机的存储层次结构体现了速度、容量和成本三者之间的精妙平衡。实际上,这种权衡普遍存在于 所有工业领域,它要求我们在不同的优势和限制之间找到最佳平衡点。 总的来说,硬盘用于长期存储大量数据,内存用于临时存储程序运行中正在处理的数据,而缓存则用于存储 经常访问的数据和指令,以提高程序运行效率。三者共同协作,确保计算机系统高效运行。0 码力 | 379 页 | 18.48 MB | 10 月前3
共 24 条
- 1
- 2
- 3