Java 应用与开发 - 线程编程
大纲 线程基础 线程控制 线程的同步 Java 应用与开发 线程编程 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 November 6, 2018 大纲 线程基础 线程控制 线程的同步 学习目标 1. 线程基础:理解任务调度、进程和线程,掌握其联系和区别; 掌握 Java 的线程模型,以及如何创建线程;理解后台线程。 2. 线程控制:理解线程的生命周期,明白各阶段的含义;掌握 掌握 线程控制方法,理解各线程控制方法对线程状态切换的作 用。 3. 线程的同步:理解临界资源问题,进一步明白线程安全的意 义;了解关键字 synchronized 的用法;了解死锁的概念;通 过生产者—消费者问题分析理解线程同步。 大纲 线程基础 线程控制 线程的同步 大纲 线程基础 相关知识回顾 线程的概念模型 创建线程 后台线程 线程控制 线程生命的周期 线程优先级 线程串行化 线程串行化 线程休眠 线程让步 线程挂起与恢复 线程等待与通知 线程的同步 大纲 线程基础 线程控制 线程的同步 ���� 线程基础 相关知识回顾 线程的概念模型 创建线程 后台线程 线程控制 线程生命的周期 线程优先级 线程串行化 线程休眠 线程让步 线程挂起与恢复 线程等待与通知 线程的同步 大纲 线程基础 线程控制 线程的同步 相关知识回顾 ���� 线程基础 相关知识回顾 线程的概念模型0 码力 | 82 页 | 1010.73 KB | 1 年前3Java 对象的创建过程
链滴 Java 对象的创建过程 作者:vcjmhg 原文链接:https://ld246.com/article/1619614850780 来源网站:链滴 许可协议:署名-相同方式共享 4.0 国际 (CC BY-SA 4.0) 概述 在之前的一篇文章《关于java继承的哪些事》简单讲了Java创建对象的过程,但具体细节当时并没有 细讲。因而本篇文章以HotSpot虚拟机为例, 来讲一下Java虚拟机是如何创建一个对象的? 简单来说Java对象的创建过程总共分为5步: Java创建对象的过程 类加载检查 首先当虚拟机遇到一个new指令时,首先会去检查这个参数能否在常量池中定位到这个类的符号引用 并且检查这个符号引用所代表的的类是否已经被加载、连接、解析和初始化过,如果没有需要先执行 的加载操作(详细过程可参考"类的加载流程" )。 分配内存 当类加载检查通过后 当类加载检查通过后,接下来虚拟机需要为新生对象分配内存,为对象分配空间的任务等同于把一块 定大小的内存从 Java 堆中划分出来。分配内存的方式主要有两种:指针碰撞和空闲列表。 具体选择哪种方式取决于Java堆是否规整。而Java堆是否规整取决于垃圾收集器所采用的垃圾回收算 是否具有空间压缩整理的能力。 具体来说,指针碰撞分配内存空间的过程如下: 在Java堆规整的情况下,所有被使用过的内存放到一边,所有未被使用过的内存放置到另一边,中间0 码力 | 4 页 | 389.87 KB | 1 年前3Deepseek R1 本地部署完全手册
《Deepseek R1 本地部署完全⼿册》 版权归:HomeBrew Ai Club 作者wechat:samirtan 版本:V2.0 更新⽇期:2025年2⽉8⽇ ⼀、简介 Deepseek R1 是⽀持复杂推理、多模态处理、技术⽂档⽣成的⾼性能通⽤⼤语⾔模型。本⼿册 为技术团队提供完整的本地部署指南,涵盖硬件配置、国产芯⽚适配、量化⽅案、云端替代⽅ 案及完整671B MoE模型的Ollama部署⽅法。 核⼼提示: 个⼈⽤户:不建议部署32B及以上模型,硬件成本极⾼且运维复杂。 企业⽤户:需专业团队⽀持,部署前需评估ROI(投资回报率)。 ⼆、本地部署核⼼配置要求 1. 模型参数与硬件对应表 模型参 数 Windows 配置要求 Mac 配置要求 适⽤场景 1.5B - RAM: 4GB - GPU: 集成显卡/现代CPU - 存储: /swapfile sudo swapon /swapfile 七、附录:技术⽀持与资源 华为昇腾:昇腾云服务 沐曦GPU:免费API体验 李锡涵博客:完整部署教程 结语 Deepseek R1 的本地化部署需极⾼的硬件投⼊与技术⻔槛,个⼈⽤户务必谨慎,企业⽤户应充 分评估需求与成本。通过国产化适配与云端服务,可显著降低⻛险并提升效率。技术⽆⽌境, 理性规划⽅能降本增效! ⼿册更新与反馈:如有0 码力 | 7 页 | 932.77 KB | 7 月前3Java 应用与开发 - 面向对象编程进阶
大纲 多态性 方法重载 关键字 static 关键字 final Java 应用与开发 面向对象编程进阶 PART2 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 September 30, 2018 大纲 多态性 方法重载 关键字 static 关键字 final 学习目标 1. 理解多态和虚方法调用的概念,掌握其用法 2. 掌握方法重载的方法 3. 掌握 final 什么是多态? 在 Java 中,子类的对象可以替代父类的对象使用称为多态。 O Java 引用变量与所引用对象间的类型匹配关系 ▶ 一个对象只能属于一种确定的数据类型,该类型自对象创建 直至销毁不能改变。 ▶ 一个引用类型变量可能引用(指向)多种不同类型的对象 ——既可以引用其声明类型的对象,也可以引用其声明类型 的子类的对象。 1 Person p = new Student(); Student类型对象 Person类型变量p 大纲 多态性 方法重载 关键字 static 关键字 final 什么是多态? 在 Java 中,子类的对象可以替代父类的对象使用称为多态。 O Java 引用变量与所引用对象间的类型匹配关系 ▶ 一个对象只能属于一种确定的数据类型,该类型自对象创建 直至销毁不能改变。 ▶ 一个引用类型变量可能引用(指向)多种不同类型的对象 ——既可以0 码力 | 49 页 | 659.74 KB | 1 年前3CurveFS S3本地缓存盘方案
9 Curvefs-S3 本地写缓存盘方案© XXX Page 2 of 9 背景 方案设计 主要数据结构定义 方案设计思考 POC验证 背景 当前,s3客户端在写底层存储的时候是直接写入远端对象存储,由于写远端时延相对会较高,所以为了提升性能,引入了写本地缓存盘方案。也即要写底层存储时,先把数据写到本地缓存硬盘,然后再把本地缓存 硬盘中的数据异步上传到远端对象存储。 方案设计© XXX 足持久化的条件后,那么则准备持久化。 如果未配置本地硬盘作为写缓存,那么直接持久化到远端的对象存储;如果配置了本地硬盘作为写缓存,那么则尝试先写入本地硬盘写缓存目录。 写本地硬盘缓存目录之前先判断缓存目录容量是否已达到阈值,如果已经达到阈值,那么则直接写入到远端对象存储;否则,则写入到本地硬盘写缓存目录中。文件写入本地硬盘写缓存目录后,从本地硬盘读目录© XXX Page 4 of 9 做一个硬链接链接到该文件。 做一个硬链接链接到该文件。 本次io在本地硬盘写入好之后,异步上传模块会适时把本地硬盘写缓存目录中的文件上传到远端对象存储集群,上传成功后,删除本地写缓存目录中的对应文件。 同时,缓存清理模块会定时检查本地硬盘缓存目录容量情况,如果容量已经达到阈值了,则进行文件的清理工作。 另外,异常管理模块处理客户端挂掉后的文件重新上传问题。 主要数据结构定义 class DiskCacheManagerImpl0 码力 | 9 页 | 150.46 KB | 5 月前3Ozone:Hadoop 原生分布式对象存储
Ozone:Hadoop 原生分布式对象存储 Spark大数据博客 - https://www.iteblog.com Ozone:Hadoop 原生分布式对象存储 Hadoop 社区推出了新一代分布式Key-value对象存储系统 Ozone,同时提供对象和文件访问的接 口,从构架上解决了长久以来困扰HDFS的小文件问题。本文作为Ozone系列文章的第一篇,抛个 砖,介绍Ozone的产生背景,主要架构和功能。 10 Ozone:Hadoop 原生分布式对象存储 Spark大数据博客 - https://www.iteblog.com 强一致性 构架简洁性: 当系统出现问题时,一个简单的架构更容易定位,也容易调试。Ozone尽可能的保持架构 的简单,即使因此需要可扩展性上做一些妥协。但是在Ozone在扩展性上绝不逊色,目标 是支持单集群1000亿个对象。 构架分层 Ozone 采用分层的文件系统。Namespace Locality,使得计算能够尽可能的靠近数据。 语义 Ozone是一个分布式Key-value对象存储系统。Ozone提供给用户的语义包含Volume, Bucket 和Key。 2 / 10 Ozone:Hadoop 原生分布式对象存储 Spark大数据博客 - https://www.iteblog.com 如果想0 码力 | 10 页 | 1.24 MB | 1 年前3Java 应用与开发 - 面向对象编程进阶 PART1
大纲 包 继承 访问控制 方法重写 关键字 super 关键字 this Java 应用与开发 面向对象编程进阶 PART1 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 September 23, 2018 大纲 包 继承 访问控制 方法重写 关键字 super 关键字 this 学习目标 1. 掌握 Java 包、继承、访问控制、方法重写的概念、机制和 使用方法 继承 访问控制 方法重写 关键字 super 关键字 this 大纲 包 继承 访问控制 方法重写 关键字 super 关键字 this 什么是继承? 继承(Inheritance)是面向对象编程的核心机制之一,其本质是 在已有类型基础之上进行扩充或改造,得到新的数据类型,以满 足新的需要。 根据需要定义 Java 类描述“人”和“学生”信息: CODE ± Class Person 一个类的方法中使用到另一个类的对象(uses-a)1。 聚合关系 一个类的对象包含(通过属性引用)了另一个类的 对象(has-a)2。 泛化关系 一般化关系(is-a),表示类之间的继承关系、类和 接口之间的实现关系以及接口之间的继承关系。 1车能够装载货物,车的装载功能(load() 方法)对货物(goods)有依赖。 2车有发动机、车轮等,Car 对象是由 Engine 等对象构成的。 大纲 包0 码力 | 39 页 | 614.13 KB | 1 年前3OpenShift Container Platform 4.10 安装
Ignition 配置文件。 重要 重要 安装期间可以修改控制基础 RHCOS 操作系统的 Kubernetes 和 Ignition 配置文件。但是, 没有可用的验证机制来确认您对这些对象所做修改是适当的。如果修改了这些对象,集群 可能会无法运行。由于存在这种风险,修改 Kubernetes 和 Ignition 配置文件不受支持,除 非您遵循记录的流程或在红帽支持指示下操作。 安装配置文件转换为 Kubernetes Platform 集群。OpenShift Local 设计为在本地计算机上运行,以简化设置和测试,并使用开发基于容器的应用所需的所有工具在本 地模拟云环境。 无论您使用什么编程语言,OpenShift Local 都可以托管您的应用程序,并将最小预配置的 Red Hat OpenShift Container Platform 集群引入本地 PC,而无需基于服务器的基础架构。 在托管环境中,OpenShift Red Hat Enterprise Linux (RHEL) 8 和 9。 Red Hat Quay 服务的完全限定域名,它必须通过 DNS 服务器解析。 目标主机上的基于密钥的 SSH 连接。为本地安装自动生成 SSH 密钥。对于远程主机,您必须生 成自己的 SSH 密钥。 2 个或更多 vCPU。 8 GB RAM。 OpenShift Container Platform 4.10 发行镜像大约需要0 码力 | 3142 页 | 33.42 MB | 1 年前3OpenShift Container Platform 4.8 安装
Ignition 配置文件。 重要 重要 安装期间可以修改控制基础 RHCOS 操作系统的 Kubernetes 和 Ignition 配置文件。但是, 没有可用的验证机制来确认您对这些对象所做修改是适当的。如果修改了这些对象,集群 可能会无法运行。由于存在这种风险,修改 Kubernetes 和 Ignition 配置文件不受支持,除 非您遵循记录的流程或在红帽支持指示下操作。 安装配置文件转换为 Kubernetes Enterprise Linux(RHEL)8。 Red Hat Quay 服务的完全限定域名,它必须通过 DNS 服务器解析。 目标主机上的免密码 sudo 访问。 目标主机上的基于密钥的 SSH 连接。为本地安装自动生成 SSH 密钥。对于远程主机,您必须生 成自己的 SSH 密钥。 2 个或更多 vCPU。 8 GB RAM。 关于 OpenShift Container Platform 4.8 Platform 4.8 发行镜像和 OpenShift Container Platform 4.8 Red Hat Operator 镜像。 建议每个流或更长时间最多 1 TB。 重要 重要 这些要求基于本地测试结果,且只测试了发行镜像和 Operator 镜像。存储要求可 能会因您的组织的需求而有所不同。有些用户可能需要更多空间,例如当它们镜像 多个 z-streams 时。您可以使用标准 Red Hat0 码力 | 2586 页 | 27.37 MB | 1 年前3消息中间件RocketMQ原理解析 - 斩秋
........................................................................ 42 6.2:索引服务 IndexService 线程 ................................................................................. 43 6.3:构建索引服务 . 中的值是怎么获得的, 1. 发送消息的时候指定会指定 topic,如果 producer 集合中没有会根据指定 topic 到 namesrv 获取 topic 发布信息 TopicPublishInfo,并放入本地集合 2. 定时从 namesrv 更新 topic 路由信息, Producer 与 broker 间的心跳 Producer 定时发送心跳将 producer 信息(其实就是 procduer retryTimesWhenSendFailed = 2 发送消息超时 sendMsgTimeout = 3000 Producer 通过 selectOneMessageQueue 方法获取一个 MessagQueue 对象 --topic //Topic_A --brokerName //代表发送消息到达的 broker --queueId //代表发送消息的在指定0 码力 | 57 页 | 2.39 MB | 1 年前3
共 960 条
- 1
- 2
- 3
- 4
- 5
- 6
- 96