 Java 应用与开发 - 高级 I/O 编程大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 Java 应用与开发 高级 I/O 编程 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 October 29, 2018 大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 学习目标 1. 深入理解 Java 的 I/O 原理 2. 掌握 Java Java 基本 I/O 流类型 3. 掌握 I/O 的几种应用编程方式 大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 ���� Java I/O 原理 基础 I/O 流 常用 常用 I/O 流类型 I/O 应用 大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 Java I/O 原理 O I/O(Input/Output)基本概念 ▶ 数据源(Data Source) ▶ 数据宿(Data Sink) ▶ 流(Stream) Java 中把不同的数据源与程序间的数据传输都抽象表述为 流,java.io 包中定义了多种 I/O 流类型实现数据0 码力 | 27 页 | 609.17 KB | 1 年前3 Java 应用与开发 - 高级 I/O 编程大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 Java 应用与开发 高级 I/O 编程 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 October 29, 2018 大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 学习目标 1. 深入理解 Java 的 I/O 原理 2. 掌握 Java Java 基本 I/O 流类型 3. 掌握 I/O 的几种应用编程方式 大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 ���� Java I/O 原理 基础 I/O 流 常用 常用 I/O 流类型 I/O 应用 大纲 Java I/O 原理 基础 I/O 流 常用 I/O 流类型 I/O 应用 Java I/O 原理 O I/O(Input/Output)基本概念 ▶ 数据源(Data Source) ▶ 数据宿(Data Sink) ▶ 流(Stream) Java 中把不同的数据源与程序间的数据传输都抽象表述为 流,java.io 包中定义了多种 I/O 流类型实现数据0 码力 | 27 页 | 609.17 KB | 1 年前3
 Rust 异步 Runtime 的兼容层  - 施继成Rust 异步 Runtime 的兼容层 施继成 @ DatenLord Introduce what’s rust async runtime # Rust async runtime Analyze the reason of runtime isolation # Async runtime binding # Compatible layer 1 Create a wheel Language and compiler define tasks • How to run it? • When to run it? • How does it deal with the I/O? Rust async runtime Runtime responsibilities • Invoke waiting tasks and halt tasks • Get notifications HTTP client framework for async-std Async runtime binding Barriers on runtime switch • Switch all I/O related data structures • Switch all async macros • Switch all functions • Scan everywhere – We0 码力 | 22 页 | 957.41 KB | 1 年前3 Rust 异步 Runtime 的兼容层  - 施继成Rust 异步 Runtime 的兼容层 施继成 @ DatenLord Introduce what’s rust async runtime # Rust async runtime Analyze the reason of runtime isolation # Async runtime binding # Compatible layer 1 Create a wheel Language and compiler define tasks • How to run it? • When to run it? • How does it deal with the I/O? Rust async runtime Runtime responsibilities • Invoke waiting tasks and halt tasks • Get notifications HTTP client framework for async-std Async runtime binding Barriers on runtime switch • Switch all I/O related data structures • Switch all async macros • Switch all functions • Scan everywhere – We0 码力 | 22 页 | 957.41 KB | 1 年前3
 Rust 异步并发框架在移动端的应用 - 陈明煜第三届中国 Rust 开发者大会 Rust 异步并发框架在移动端的应用 陈明煜 chenmingyu4@huawei.com 华为 公共开发部 嵌入式软件能力中心 本科就读加州大学圣地亚哥分校,毕业时长两年半, Rustacean 在 华为 目前正在使用 Rust 开发并行调度框架等模块。 Rust 异步并发框架在移动端的应用 陈明煜 chenmingyu4@huawei.com 华为 公共开发部 嵌入式软件能力中心 Applications of Rust Runtime in Mobile Overview of asynchronous Rust #1 Rust 异步简介 Ylong async runtime #3 Ylong Runtime 并发框架 目录 Table of Contents #2 社区并发框架介绍以及与移动端的不适配性 Introduction environment Rust 异步机制 Asynchronous Rust 异步并发框架是许多大型应用、系统具备的底层能力。 区别于多线程编程模型,它带来以下优势:  任务调度颗粒度更小,充分利用线程资源  更可控的线程数  单个任务资源占用:几十 KB -> 几百 Byte  任务切换时间 : 10 微秒 -> 100 纳秒 Rust 语言并没有提供异步并发框架, 只提供异步所需的基本特性:0 码力 | 25 页 | 1.64 MB | 1 年前3 Rust 异步并发框架在移动端的应用 - 陈明煜第三届中国 Rust 开发者大会 Rust 异步并发框架在移动端的应用 陈明煜 chenmingyu4@huawei.com 华为 公共开发部 嵌入式软件能力中心 本科就读加州大学圣地亚哥分校,毕业时长两年半, Rustacean 在 华为 目前正在使用 Rust 开发并行调度框架等模块。 Rust 异步并发框架在移动端的应用 陈明煜 chenmingyu4@huawei.com 华为 公共开发部 嵌入式软件能力中心 Applications of Rust Runtime in Mobile Overview of asynchronous Rust #1 Rust 异步简介 Ylong async runtime #3 Ylong Runtime 并发框架 目录 Table of Contents #2 社区并发框架介绍以及与移动端的不适配性 Introduction environment Rust 异步机制 Asynchronous Rust 异步并发框架是许多大型应用、系统具备的底层能力。 区别于多线程编程模型,它带来以下优势:  任务调度颗粒度更小,充分利用线程资源  更可控的线程数  单个任务资源占用:几十 KB -> 几百 Byte  任务切换时间 : 10 微秒 -> 100 纳秒 Rust 语言并没有提供异步并发框架, 只提供异步所需的基本特性:0 码力 | 25 页 | 1.64 MB | 1 年前3
 阮一峰 《ECMAScript 6入门》 第三版Set 和 Map 数据结构 Proxy Reflect Promise 对象 Iterator 和 for...of 循环 Generator 函数的语法 Generator 函数的异步应用 async 函数 Class 的基本语法 Class 的继承 Decorator Module 的语法 Module 的加载实现 编程风格 读懂规格 ArrayBuffer 转码结果输出到标准输出 $ babel example.js # 转码结果写入一个文件 # --out-file 或 -o 参数指定输出文件 $ babel example.js --out-file compiled.js # 或者 $ babel example.js -o compiled.js # 整个目录转码 # --out-dir 或 -d 参数指定输出目录 $ babel src require('babel-core'); // 字符串转码 babel.transform('code();', options); // => { code, map, ast } // 文件转码(异步) babel.transformFile('filename.js', options, function(err, result ) { result; // => { code, map0 码力 | 679 页 | 2.66 MB | 1 年前3 阮一峰 《ECMAScript 6入门》 第三版Set 和 Map 数据结构 Proxy Reflect Promise 对象 Iterator 和 for...of 循环 Generator 函数的语法 Generator 函数的异步应用 async 函数 Class 的基本语法 Class 的继承 Decorator Module 的语法 Module 的加载实现 编程风格 读懂规格 ArrayBuffer 转码结果输出到标准输出 $ babel example.js # 转码结果写入一个文件 # --out-file 或 -o 参数指定输出文件 $ babel example.js --out-file compiled.js # 或者 $ babel example.js -o compiled.js # 整个目录转码 # --out-dir 或 -d 参数指定输出目录 $ babel src require('babel-core'); // 字符串转码 babel.transform('code();', options); // => { code, map, ast } // 文件转码(异步) babel.transformFile('filename.js', options, function(err, result ) { result; // => { code, map0 码力 | 679 页 | 2.66 MB | 1 年前3
 阮一峰 JavaScript 教程Math 对象 Date 对象 RegExp 对象 JSON 对象 面向对象编程 实例对象与 new 命令 this 关键字 对象的继承 Object 对象的相关方法 严格模式 异步操作 概述 定时器 Promise 对象 DOM 概述 - 2 - 本文档使用 书栈(BookStack.CN) 构建 致谢 当前文档 《阮一峰 JavaScript 教程》 由 进击的皇虫 控制其他大型应用程序(比如浏览器)的“脚本”。 JavaScript 也是一种嵌入式(embedded)语言。它本身提供的核 心语法不算很多,只能用来做一些数学和逻辑运算。JavaScript 本 身不提供任何与 I/O(输入/输出)相关的 API,都要靠宿主环境 (host)提供,所以 JavaScript 只合适嵌入更大型的应用程序环 境,去调用宿主环境提供的底层 API。 目前,已经嵌入 JavaScript (1)灵活的语法,表达力强。 JavaScript 既支持类似 C 语言清晰的过程式编程,也支持灵活的 函数式编程,可以用来写并发处理(concurrent)。这些语法特性已 经被证明非常强大,可以用于许多场合,尤其适用异步编程。 JavaScript 的所有值都是对象,这为程序员提供了灵活性和便利 性。因为你可以很方便地、按照需要随时创造数据结构,不用进行麻烦 的预定义。 JavaScript 的标准还在快速进化中,并不断合理化,添加更适用的0 码力 | 540 页 | 3.32 MB | 10 月前3 阮一峰 JavaScript 教程Math 对象 Date 对象 RegExp 对象 JSON 对象 面向对象编程 实例对象与 new 命令 this 关键字 对象的继承 Object 对象的相关方法 严格模式 异步操作 概述 定时器 Promise 对象 DOM 概述 - 2 - 本文档使用 书栈(BookStack.CN) 构建 致谢 当前文档 《阮一峰 JavaScript 教程》 由 进击的皇虫 控制其他大型应用程序(比如浏览器)的“脚本”。 JavaScript 也是一种嵌入式(embedded)语言。它本身提供的核 心语法不算很多,只能用来做一些数学和逻辑运算。JavaScript 本 身不提供任何与 I/O(输入/输出)相关的 API,都要靠宿主环境 (host)提供,所以 JavaScript 只合适嵌入更大型的应用程序环 境,去调用宿主环境提供的底层 API。 目前,已经嵌入 JavaScript (1)灵活的语法,表达力强。 JavaScript 既支持类似 C 语言清晰的过程式编程,也支持灵活的 函数式编程,可以用来写并发处理(concurrent)。这些语法特性已 经被证明非常强大,可以用于许多场合,尤其适用异步编程。 JavaScript 的所有值都是对象,这为程序员提供了灵活性和便利 性。因为你可以很方便地、按照需要随时创造数据结构,不用进行麻烦 的预定义。 JavaScript 的标准还在快速进化中,并不断合理化,添加更适用的0 码力 | 540 页 | 3.32 MB | 10 月前3
 Node.js Manual & DocumentationObjects 全局对象 o global o process o require() o require.resolve() o require.paths o __filename o __dirname o module  Timers 定时器 o setTimeout(callback, delay, [arg], [...]) o clearTimeout(timeoutId) clearTimeout(timeoutId) o setInterval(callback, delay, [arg], [...]) o clearInterval(intervalId)  Modules 模块 o Core Modules 核心模块 o File Modules 文件模块 o Loading from `node_modules` Folders 从 `node_modules` to the `node_modules` Lookup Process 优化 `node_modules` 的查找过程 o Folders as Modules 目录作为模块 o Caching 缓存 o All Together... 总结一下... o Loading from the `require.paths` Folders 从`require.paths`目 录中加载0 码力 | 153 页 | 1.21 MB | 1 年前3 Node.js Manual & DocumentationObjects 全局对象 o global o process o require() o require.resolve() o require.paths o __filename o __dirname o module  Timers 定时器 o setTimeout(callback, delay, [arg], [...]) o clearTimeout(timeoutId) clearTimeout(timeoutId) o setInterval(callback, delay, [arg], [...]) o clearInterval(intervalId)  Modules 模块 o Core Modules 核心模块 o File Modules 文件模块 o Loading from `node_modules` Folders 从 `node_modules` to the `node_modules` Lookup Process 优化 `node_modules` 的查找过程 o Folders as Modules 目录作为模块 o Caching 缓存 o All Together... 总结一下... o Loading from the `require.paths` Folders 从`require.paths`目 录中加载0 码力 | 153 页 | 1.21 MB | 1 年前3
 ServiceComb在华为消费者云的亿级用户微服务实践没有十全十美的微服务框架,适合的才是最好的  微服务API设计:支持Swagger API规范  开发方式:支持透明RPC、Spring MVC风格的微服务开发  编程模型:同时支持同步、异步的编程模型  性能:支持原生的Reactive模式(EventLoop),相比于传 统的同步服务调用,性能更高(吞吐量N倍+提升、时延降低 为原来的50%-)  轻量级、易集成:可以方便的与Spring 实践-同步和异步 Website: http://servicecomb.incubator.apache.org/ Gitter: https://gitter.im/ServiceCombUsers/Lobby 不一刀切,根据业务实际需要选择同步或者异步微服务调用 微服务消费端 业务 线程 池 异步 I/O线 程池 NIO异步通信 微服务提供端 NIO异步通信 业务线程阻塞, 获取响应 1 2 微服务同步调用问题: 1、同步服务调用:业务线程将请求消息交给I/O线程之后, 无论I/O线程是同步还是异步发送请求消息,业务线程都会 同步阻塞,等待响应 2、异步I/O通信:I/O通信方式与服务调用方式没关联关 系,无论是同步服务调用还是异步服务调用,I/O通信都 可以采用异步非阻塞模式 同步服务调用的几个缺点: 1、业务线程利用率低:线程资源是系统中比较重要的资源,0 码力 | 15 页 | 1.15 MB | 1 年前3 ServiceComb在华为消费者云的亿级用户微服务实践没有十全十美的微服务框架,适合的才是最好的  微服务API设计:支持Swagger API规范  开发方式:支持透明RPC、Spring MVC风格的微服务开发  编程模型:同时支持同步、异步的编程模型  性能:支持原生的Reactive模式(EventLoop),相比于传 统的同步服务调用,性能更高(吞吐量N倍+提升、时延降低 为原来的50%-)  轻量级、易集成:可以方便的与Spring 实践-同步和异步 Website: http://servicecomb.incubator.apache.org/ Gitter: https://gitter.im/ServiceCombUsers/Lobby 不一刀切,根据业务实际需要选择同步或者异步微服务调用 微服务消费端 业务 线程 池 异步 I/O线 程池 NIO异步通信 微服务提供端 NIO异步通信 业务线程阻塞, 获取响应 1 2 微服务同步调用问题: 1、同步服务调用:业务线程将请求消息交给I/O线程之后, 无论I/O线程是同步还是异步发送请求消息,业务线程都会 同步阻塞,等待响应 2、异步I/O通信:I/O通信方式与服务调用方式没关联关 系,无论是同步服务调用还是异步服务调用,I/O通信都 可以采用异步非阻塞模式 同步服务调用的几个缺点: 1、业务线程利用率低:线程资源是系统中比较重要的资源,0 码力 | 15 页 | 1.15 MB | 1 年前3
 Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 12. 一个 I/O 项目:构建命令行程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 13.3. 改进之前的 I/O 项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 应该是 String 类型,并不需要我们写出类型。另一方面,secret_number,是数字类型。几个数字类 型拥有 1 到 100 之间的值:32 位数字 i32;32 位无符号数字 u32;64 位数字 i64 等等。 Rust 默认使用 i32,所以它是 secret_number 的类型,除非增加类型信息,或任何能让 Rust 推断出不同数值类型的信息。这里错误的原因在于 Rust 不会比较字符串类型和数字类型。0 码力 | 562 页 | 3.23 MB | 26 天前3 Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 12. 一个 I/O 项目:构建命令行程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 13.3. 改进之前的 I/O 项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 应该是 String 类型,并不需要我们写出类型。另一方面,secret_number,是数字类型。几个数字类 型拥有 1 到 100 之间的值:32 位数字 i32;32 位无符号数字 u32;64 位数字 i64 等等。 Rust 默认使用 i32,所以它是 secret_number 的类型,除非增加类型信息,或任何能让 Rust 推断出不同数值类型的信息。这里错误的原因在于 Rust 不会比较字符串类型和数字类型。0 码力 | 562 页 | 3.23 MB | 26 天前3
 NodeJS 中文文档 V0.2.3buffer,每次一个字节: str = "node.js", buf = new Buffer(str.length), i; for (var i = 0; i < str.length ; i += 1) { buf[i] = str.charCodeAt(i); } console.log(buf); // node.js Buffer.byteLength(string, Buffer buf2中第八字节开始的空间中。 buf1 = new Buffer(26), buf2 = new Buffer(26), i; for (var i = 0 ; i < 26 ; i += 1) { buf1[i] = i + 97; // 97 is ASCII a buf2[i] = 33; // ASCII ! } buf1.copy(buf2, 8, 16, 20); console.log(buf2 buffer 对象,并剪切出一个新的 buffer,然后修改原始 buffer 的一个字节。 buf1 = new Buffer(26), buf2, i; for (var i = 0 ; i < 26 ; i += 1) { buf1[i] = i + 97; // 97 is ASCII a } buf2 = buf1.slice(0, 3); console.log(buf2.toString('ascii'0 码力 | 62 页 | 542.14 KB | 1 年前3 NodeJS 中文文档 V0.2.3buffer,每次一个字节: str = "node.js", buf = new Buffer(str.length), i; for (var i = 0; i < str.length ; i += 1) { buf[i] = str.charCodeAt(i); } console.log(buf); // node.js Buffer.byteLength(string, Buffer buf2中第八字节开始的空间中。 buf1 = new Buffer(26), buf2 = new Buffer(26), i; for (var i = 0 ; i < 26 ; i += 1) { buf1[i] = i + 97; // 97 is ASCII a buf2[i] = 33; // ASCII ! } buf1.copy(buf2, 8, 16, 20); console.log(buf2 buffer 对象,并剪切出一个新的 buffer,然后修改原始 buffer 的一个字节。 buf1 = new Buffer(26), buf2, i; for (var i = 0 ; i < 26 ; i += 1) { buf1[i] = i + 97; // 97 is ASCII a } buf2 = buf1.slice(0, 3); console.log(buf2.toString('ascii'0 码力 | 62 页 | 542.14 KB | 1 年前3
 廖雪峰JavaScript教程申明变量。这个设计错误带来 了严重的后果:如果一个变量没有通过 var 申明就被使用,那么该变量就自动被申明为全局变量: 1. i = 10; // i现在是全局变量 在同一个页面的不同的JavaScript文件中,如果都不用 var 申明,恰好都使用了变量 i ,将造 成变量 i 互相影响,产生难以调试的错误结果。 使用 var 申明的变量则不是全局变量,它的范围被限制在该变量被申明的函数体内(函数的概念将稍 如果 ' 本身也是一个字符,那就可以用 "" 括起来,比如 "I'm OK" 包含的字符 是 I , ' , m ,空格, O , K 这6个字符。 如果字符串内部既包含 ' 又包含 " 怎么办?可以用转义字符 \ 来标识,比如: 1. 'I\'m \"OK\"!'; 表示的字符串内容是: I'm "OK"! 转义字符 \ 可以转义很多字符,比如 \n 表示换行, 2. var i; 3. for (i=1; i<=10000; i++) { 4. x = x + i; 5. } 6. x; // 50005000 让我们来分析一下 for 循环的控制条件: i=1 这是初始条件,将变量i置为1; i<=10000 这是判断条件,满足时就继续循环,不满足就退出循环; i++ 这是每次循环后的递增条件,由于每次循环后变量i都会加1,因此它终将在若干次循环后不0 码力 | 264 页 | 2.81 MB | 10 月前3 廖雪峰JavaScript教程申明变量。这个设计错误带来 了严重的后果:如果一个变量没有通过 var 申明就被使用,那么该变量就自动被申明为全局变量: 1. i = 10; // i现在是全局变量 在同一个页面的不同的JavaScript文件中,如果都不用 var 申明,恰好都使用了变量 i ,将造 成变量 i 互相影响,产生难以调试的错误结果。 使用 var 申明的变量则不是全局变量,它的范围被限制在该变量被申明的函数体内(函数的概念将稍 如果 ' 本身也是一个字符,那就可以用 "" 括起来,比如 "I'm OK" 包含的字符 是 I , ' , m ,空格, O , K 这6个字符。 如果字符串内部既包含 ' 又包含 " 怎么办?可以用转义字符 \ 来标识,比如: 1. 'I\'m \"OK\"!'; 表示的字符串内容是: I'm "OK"! 转义字符 \ 可以转义很多字符,比如 \n 表示换行, 2. var i; 3. for (i=1; i<=10000; i++) { 4. x = x + i; 5. } 6. x; // 50005000 让我们来分析一下 for 循环的控制条件: i=1 这是初始条件,将变量i置为1; i<=10000 这是判断条件,满足时就继续循环,不满足就退出循环; i++ 这是每次循环后的递增条件,由于每次循环后变量i都会加1,因此它终将在若干次循环后不0 码力 | 264 页 | 2.81 MB | 10 月前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100














 
  
 