《Java 应用与开发》课程讲义 - 王晓东22 3.2.1 创建数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.2 一维数组的初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3 二维数组 . . . . . . . . . . . . . . . . . . . . . 51 5.2.2 调用重载的构造方法 . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.2.3 对象构造/初始化细节 . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.3 关键字 static . . . . . . . . . . . . . . . . . 53 5.3.1 static 属性和方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.3.2 初始化块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.3.3 静态导入 . . . . . . . . .0 码力 | 330 页 | 6.54 MB | 1 年前3
Nacos架构&原理
吴援飘(草谷) 吴毅挺 任浩军 张波 王建伟(正己) 卿亮 许进 7 > 推荐序 推荐序 阿里巴巴合伙人 - 蒋江伟(小邪) 随着企业加速数字化升级,越来越多的系统架构采用了分布式的架构,主要目的是为了解决集中化 和互联网化所带来的架构扩展性和面对海量用户请求的技术挑战。这里面其中有⼀个关键点是软负 载。因为整个分布式架构需要有⼀个软负载来协作各个节点之间的服务在线离线状态、数据⼀致性、 对该领域感兴趣的技术爱好者阅读。 推荐序 < 8 Facebook 工程师 & CNCF 前 TOC 成员 - 李响 服务注册、发现与配置管理是构成大型分布式系统的基石。Nacos 是集成了这三种能力的现代化、 开源开放的代表系统。本书系统化的介绍了 Nacos 诞生的历史背景以及其在阿里集团内部孕育的过 程,阐述了打造⼀款实用、易用系统的全过程。另外,本书也从设计、架构方面详细介绍了 Nacos 的实现,分享了 Nacos 响整个分布式系统的运行。历史上,这个系统在阿里也触发过大故障,经历过数次血与火的考验。 在阿里数次架构升级中,Nacos 都做了大量的功能迭代,用来支持阿里的异地多活,容灾演练,容 器化,Serverless 化。Nacos 经过阿里内部锤炼十年以上,各项指标已经及其先进,稳定,为服务 好全球开发者,Nacos 经过数十名工程师持续努力,以开源形式和大家见面,相信 Nacos ⼀定能在 分布式领域成为开发者的首选项。0 码力 | 326 页 | 12.83 MB | 9 月前3
Java 对象的创建过程当时并没有 细讲。因而本篇文章以HotSpot虚拟机为例,来讲一下Java虚拟机是如何创建一个对象的? 简单来说Java对象的创建过程总共分为5步: Java创建对象的过程 类加载检查 首先当虚拟机遇到一个new指令时,首先会去检查这个参数能否在常量池中定位到这个类的符号引用 并且检查这个符号引用所代表的的类是否已经被加载、连接、解析和初始化过,如果没有需要先执行 的加载操作(详细过程可参考"类的加载流程" 的加载操作(详细过程可参考"类的加载流程" )。 分配内存 当类加载检查通过后,接下来虚拟机需要为新生对象分配内存,为对象分配空间的任务等同于把一块 定大小的内存从 Java 堆中划分出来。分配内存的方式主要有两种:指针碰撞和空闲列表。 具体选择哪种方式取决于Java堆是否规整。而Java堆是否规整取决于垃圾收集器所采用的垃圾回收算 是否具有空间压缩整理的能力。 具体来说,指针碰撞分配内存空间的过程如下: 在J 只需要将空闲指针向空闲内存方向移动对 内存大小的位置即可。 原文链接:Java 对象的创建过程 该算法能够使用的前提必须是空间是规整的,因为如果空间是碎片化的,很明显该算法就会失效。 另一种算法是空闲列表,其分配内存的过程如下: 虚拟机会维护一个列表,该列表中会记录那些内存块是可用的,在分配内存时,会在空闲列表中找到 块足够大的内存块来给对象实例,最后更新列表记录。 当然该算法也有不足,0 码力 | 4 页 | 389.87 KB | 1 年前3
Java 应用与开发 - 线程编程线程的概念模型 创建线程 后台线程 线程控制 线程生命的周期 线程优先级 线程串行化 线程休眠 线程让步 线程挂起与恢复 线程等待与通知 线程的同步 大纲 线程基础 线程控制 线程的同步 ���� 线程基础 相关知识回顾 线程的概念模型 创建线程 后台线程 线程控制 线程生命的周期 线程优先级 线程串行化 线程休眠 线程让步 线程挂起与恢复 线程等待与通知 线程的同步 大纲 线程基础 线程基础 线程控制 线程的同步 相关知识回顾 ���� 线程基础 相关知识回顾 线程的概念模型 创建线程 后台线程 线程控制 线程生命的周期 线程优先级 线程串行化 线程休眠 线程让步 线程挂起与恢复 线程等待与通知 线程的同步 大纲 线程基础 线程控制 线程的同步 相关知识回顾 概念回顾 O 任务调度 ▶ 大部分操作系统的任务调度是采用时间片轮转的抢占式调度 方式,一个任务执行一小段时间后强制暂停去执行下一个任 后台线程 线程控制 线程生命的周期 线程优先级 线程串行化 线程休眠 线程让步 线程挂起与恢复 线程等待与通知 线程的同步 大纲 线程基础 线程控制 线程的同步 线程的概念模型 Java 线程的概念模型 在 Java 语言中,多线程的机制通过虚拟 CPU 来实现。 1. 虚拟的 CPU,由 java.lang.Thread 类封装和虚拟; 2. CPU 所执行的代码和数据,传递给 Thread0 码力 | 82 页 | 1010.73 KB | 1 年前3
Linux Docker MessInstallation n 直接格掉Windows,安装一个Linux发行版,如Ubuntu(强烈推荐) n 双系统,Windows和Linux并存(不推荐) n 虚拟机方式安装 n Windows系统中通过虚拟机安装Linux(较推荐) n Linux系统中通过虚拟机安装Windows(Kid me?) http://www.linuxfromscratch.org/ 建议用一个连续的时间(例如你的寒假,或者没人打扰的完整的一周) Architecture Shell Kernel File System Applications Architecture Kernel n 内存管理 n 进程管理 n 文件系统(虚拟文件系统 VFS) n 设备驱动 n 网络接口 建议阅读Linux内核源代码,可以从Linux-0.11入手,推荐Linux内核完全注释 (赵炯著) Architecture Shell n 系统的用户界面 块设备和字符 设备 n 管道(FIFO)文件 : 提供进程建通信的一种方式 套接字(socket) 文件: 该文件类型与网络通信有关 Architecture File System 标准化的目录结构 tree –L 1 Architecture File System tree –L 1 –p /dev 显示文件类型及权限 目录树的显示深度 Architecture File0 码力 | 77 页 | 7.40 MB | 1 年前3
Apache Shiro 1.2.x Reference Manual 中文翻译SecurityManager,所以,在我们这个 示例程序中必须做的第一件事情是建立一个 SecurityManager 实例。 Configuration 配置 虽然我们可以直接对 SecurityManager 实例化,但在 Java 代码中对Shiro 的 SecurityManager 所须的选项和内部组件进行配置会让人感觉有点小痛苦--而将这些 SecurityManager 配置用一个灵活的配置文件实现就会简单地多。 Container),但如果环境中没有,比如在一个独立的程序或非 web 环 境中,它将使用它自己建立的 session 提供相同的作用,sessionDAO 用来使用任何数据源使 session 持久化。 SessionDAO(org.apache.shiro.session.mgt.eis.SessionDAO) SessionDAO 代表 SessionManager 执行 Session 持久(CRUD)动作,它允许任何存储的 退出登录(Logout) 及其它。 但这些功能都在一个单独的组件中管理,并且,当所有功能集中在一个类中实现是灵活和可 定制是非常困难的。 为了实现配置的简单、灵活、可插拔,Shiro在设计时实现了高模块化--尽管模块化, SecurityManager(包括它的继承类)并没有做到,相反地,SecurityManager实现更像一个 轻量级的‘容器(container)’,代表几乎所有嵌套/封装组件的行为,这种‘封装(wrapper)’设0 码力 | 196 页 | 2.34 MB | 1 年前3
Java 应用与开发 - Java 内存模型与分配机制Java 内存管理建议 ���� Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 虚拟机(Java Virtual Machine, JVM) ▶ Java 程序运行在 JVM 上,JVM 是程序与操作系统之间的桥梁。 ▶ JVM 实现了 Java 的平台无关性。 ▶ JVM 是内存分配的前提。 Stack PC Register JVM Stack Native Method Stack PC Register JVM Stack Native Method Stack 程序计数器、虚拟 机栈,native 栈 为线程私有 堆为线程共享 方法区为线程共享 Eden From Survivor To Survivor 新生代 Old Space 老年代 大纲 Java 则只在栈内存中保存一份对象的引用,而不 必创建大量新临时变量,从而降低了内存的使用。 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 内存优化的小示例 O 不要对同一对象初始化多次 1 public class A { 2 private Hashtable table = new Hashtable(); 3 public A() { 4 table = new Hashtable();0 码力 | 44 页 | 818.30 KB | 1 年前3
Java 应用与开发 - 类加载和反射类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 Java 应用与开发 类加载和反射 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 December 24, 2018 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 学习目标 1. 理解什么是反射机制,通过常见场景认识反射的作用。 2. 掌握类的加载、连接和初始化概念。 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 接下来⋯ 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 程序可以加载一个运行时才 得知名称的类,获悉其完整构造(但不包括 methods 定义), 并生成其对象实体、或对其 fields 设值、或唤起调用其 methods。 大纲 反射 类的加载、连接和初始化 类加载器 使用反射生成并操作对象 本节习题 反射机制 ▶ 反射机制是 Java 语言在运行时所拥有的一项自观能力。通 过这种能力可以彻底的了解自身的情况为下一步的动作做准 备。 ▶ 反射机制是在运行状态(而不是编译状态)时:0 码力 | 46 页 | 714.40 KB | 1 年前3
Java 应用系统开发 - ServletContext 和 Web 配置Servlet 配置对象 ServletConfig ▶ Java EE 为取得 Servlet 的配置信息,提供一个 Servlet 配 置对象 API。 ▶ 该对象在 Servlet 初始化阶段由 Web 容器实例化,并将当 前 Servlet 的配置数据写入到此对象,供 Servlet 读取使用。 大纲 Web 应用环境对象 Java EE Web 的配置 Servlet 配置对象 转发和重定向 Servlet 配置对象 转发和重定向 本节习题 ServletConfig 功能和方法 public Enumeration getInitParameterNames() 取得所有 Servlet 初始化参数。 public String getServletName() 取得 Servlet 的名称。 public ServletContext getServletContext() ServletConfig forward(request, response); 目标页面 main.jsp 的目录说明 ▶ 如果上述代码所在的 Servlet 被映射到/employee/main.action (一个虚拟请求地址),则转发的目标页面 main.jsp 也需要放到/ employee 目录下; ▶ 如果 main.jsp 和 Servlet 映射地址不在同一目录,就需要使用相 对路径定位,如把 main0 码力 | 33 页 | 668.91 KB | 1 年前3
Hello 算法 1.1.0 Java版愿这本书在你的脑海中轻轻响起,留下独特而深刻的旋律。 第 0 章 前言 hello‑algo.com 2 0.1 关于本书 本项目旨在创建一本开源、免费、对新手友好的数据结构与算法入门教程。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂,学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 要通过动画以图解形式展示,而文字则作为解释与补充。 如果你在阅读本书时,发现某段内容提供了如图 0‑2 所示的动画图解,请以图为主、以文字为辅,综合两者 代码块与对应的源代码文件 除了本地运行代码,网页版还支持 Python 代码的可视化运行(基于 pythontutor 实现)。如图 0‑6 所示,你 可以点击代码块下方的“可视化运行”来展开视图,观察算法代码的执行过程;也可以点击“全屏观看”,以 获得更好的阅览体验。 图 0‑6 Python 代码的可视化运行 第 0 章 前言 hello‑algo.com 8 0.2.4 在提问讨论中共同成长0 码力 | 378 页 | 18.47 MB | 1 年前3
共 39 条
- 1
- 2
- 3
- 4













