python docker 镜像过大_谷歌技术人员解决Docker镜像体积太大问题的方法
虚拟机的问题
最初,大家都使用虚拟机作为软件的运行环境,对外提供服务。为了在虚拟机上运行你的 Service,你不得不运行一大堆程序:
系统进程
定时任务
SSH
安装 Agent
安装 Bash
安装一大堆 libs
其实,你仅仅只是想让你的 Service运行起来,但你不得不维护一个 40GB的虚拟机。
然后你开始试用 Docker
开始试用 Docker,你毫不犹豫选择了和之前虚拟机一样的镜像:Ubuntu 1404,将之前的虚机的内容复制到了 Docker镜像,安装了一堆软件,最后发现你的 Docker镜像有 8GB。
谷歌的 Docker镜像构建实践
找到最小的基础镜像
Alpine Linux是基于 musl和 BusyBox的操作系统,目的是为了为用户提供更高效的资源使用效率。它的特性是体积小,最小的 Alpine Linux体积可以只有 5MB。谷歌某些团队使用 Alpine Linux作为 Docker Build的基础镜像。
目的:仅仅为了运行 Service
谷歌认为,为了运行一个 Service,并不需要将那些无关联的包、程序打包到容器里,换句话说,Docker镜像里只留下需要用到的,其他的都删除,从而得到一个最小的镜像。这需要考虑以下几点:
1、程序编译后的二进制文件(从 Artifactory获取)
2、程序的所有依赖(从 Artifactory获取)
3、程序语言的运行时(libc,JRE,node,…)
4、任何程序和 Kernel之间的中间件
其实这一切的信息,构建工具都已经知道。
谷歌的构建工具 Bazel
介绍 Bazel之前,先介绍下谷歌的开发模式,对于服务器端代码库,谷歌的开发流程如下:
1、所有的服务器端代码库都在一个巨大的版本控制系统里
2、每个人都用 Bazel构建软件
3、不同的组负责源码树的不同部分,所有的组件都是作为 BUILD目标来用
4、分支主要是用来管理发布,所以每个人都在最新版本上开发软件
Bazel(https://bazel.build/)是 Google内部用来构建自己的服务器端软件的工具。目前变成谷歌公司贡献的一个开源项目,目的是帮助开发者将软件的构建和测试变得更快、更可靠。
从上图可以看到,Bazel有 WORDSPACE的概念,WORDSPACE文件用来准备 Docker镜像构建所依赖的所有材料和来源。BUILD文件用来告诉 Bazel这个镜像应该使用什么命令进行构建,以及如何构建、如何测试。
使用 Bazel的声明式语言: WORKSPACE和 BUILD,开发者可以用文件描述整个构建和部署的环境。谷歌使用 Bazel进行 Docker的构建已经很多年,它为谷歌带来以下收益:
1、支持跨平台构建,分布式缓存,优化依赖解析,并行构建,增量构建。
2、支持多语言(Java,C++,Android,iOS,Go等等)。
3、跨平台。
4、水平扩展和自定义扩展。
Bazel是以下理念的奠基石:由于 Bazel需要所有的依赖都被完整地指定,我们可以预测改动影响了哪些程序和测试,并在提交前执行他们。
谷歌提供的 Distroless镜像构建文件
Distroless (https://github.com/GoogleCloudPlatform/distroless)是谷歌内部使用的镜像构建文件,包括 Java、Node、Python等镜像构建文件,Distroless仅仅只包含运行服务所需要的最小镜像,不包含包管理工具、shell命令行等其他功能。
为什么你需要这些镜像?这些镜像是谷歌和其他大公司的最佳实践的产物,经过了漏洞扫描,镜像会持续更新,保持安全性。
如何使用?Distroless提供的构建镜像的 BUILD文件,通过 Bazel可以直接进行构建。
谷歌为大家介绍了内部如何解决镜像过大的问题,以及进行大规模并发构建、测试所用到的构建工具 Bazel,并且开源了 Docker镜像构建文件 Distroless项目。如果你认为你的镜像也存在体积太大的问题,可以参考谷歌的实践,体验他们的工具。
总结
以上就是本文关于谷歌技术人员解决Docker镜像体积太大问题的方法的全部内容,希望对大家有所帮助。感兴趣的朋友可以可以继续参阅本站:
如有不足之处,欢迎留言指出。
相关文章
- 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp
转自:http://blog.sina.com.cn/s/blog_65cab32d01012iln.html eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。 比方说:…...
2023/3/28 15:57:12 - 01-基本数据类型
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 一、数据类型 什么是数据类型? - 数据类型可以理解为固定内存大小的别名 - 数据类型是创建变量的模子 二、数据类型的本质 1.数据类型是有固定内存大小的别名 2.用这个有固定…...
2023/3/28 15:57:11 - Java入门第126课——PM2.5监控程序
问题 北京某日空气质量PM2.5监测站全程检测的数据如下表所示,一个监测站点有可能在一天内多次采集,因此同一个站点可能有多个数据,如表-1所示: 方案 分析问题中提出的要求为统计各空气质量监测站点PM2.5的最高值,再结合提供的PM2.5浓度数据,可以发现,站点名可以作为M…...
2023/3/28 15:57:11 - Java入门第127课——hashCode方法的重写
问题 测试hashCode的作用,详细要求如下: 1)将没有重写hashCode方法的Emp类存入Map中,进行测试。 2)将重写了hashCode方法的Emp类存入Map中,再次进行测试,并说明两次不同结果的原因。 步骤 实现测案例需要按照如下步骤进行。 步骤一:新建Emp类 在JavaSE工程的day…...
2023/3/28 15:57:10 - 02-有符号与无符号
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:ubuntu 14.04 一、计算机中的符号位 1)数据类型的最高位用于标识符数据的符号 - 最高位为1,表明这个数为负数 - 最高位为0,表明…...
2023/3/28 15:57:10 - Java入门第128课——遍历各点PM2.5最大值
问题 在第126节课的基础上,分别使用迭代key的方式和迭代Entry的方式遍历集合map。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 在TestHashMap类中添加测试方法test2,使test2中的代码和test1的代码保持一致,代码如下所示: package day05;import org…...
2023/3/28 15:57:09 - ubuntu14.04 gcc突然失效
环境:ubuntu14.04 问题:gcc正常使用,突然无法编译文件,使用gcc -v查看不到版本号 解决办法:卸载重新安装gcc。 步骤: 1.因为不知道gcc版本号,卸载时需要gcc版本号。 使用命令:wh…...
2023/3/28 15:57:09 - 03-浮点数的秘密
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:ubuntu 14.04 一、内存中的浮点数: * 浮点数在内存的存储方式为:符号位、指数、尾数 类型符号位指数尾数float1位(第31位&…...
2023/3/28 15:57:08 - Java入门第129课——统计并遍历各点PM2.5最大值(要求排序)
问题 在上一节课的基础上,按照放入map中的站点名的顺序遍历出来。 步骤 实现此案例需要按照如下步骤进行。 步骤一:将HashMap改成LinkedHashMap 首先,构建测试方法test4、test5;然后,复制test2的代码到test4中,复制test3的代码到test5中;最后,将test4、test5中构建…...
2023/3/28 15:57:08 - Java入门第130课——查看一个文件的大小
问题 查看当前工程下demo文件夹下HelloWorld.txt文件的大小。 步骤 实现此案例需要按照如下步骤进行。 步骤一:新建类及测试方法 首先,新建类TestFile,并在该类中新建测试方法testLength,代码如下所示: package day05;import java.io.File; import org.junit.Test;p…...
2023/3/28 15:57:06 - 05-变量属性
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:ubuntu 14.04 GCC版本:4.8.4 一、C语言的变量属性 * C语言中的变量可以有自己的属性 * 在定义变量的时候可以加上“属性”关键字 * “属性”关键字指…...
2023/3/28 15:57:06 - Java入门第131课——创建一个空文件
问题 在上一案例的基础上,在demo文件夹下创建文件Hello.txt。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,在TestFile类中新建测试方法testCreateNewFile,代码如下所示: package day05;im…...
2023/3/28 15:57:05 - Java入门第132课——删除一个文件
问题 在上一案例中创建的Hello.txt文件删除。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,在TestFile类中新建测试方法testDeleteFile,代码如下所示: package day05;import java.io.File; import org…...
2023/3/28 15:57:05 - 01-一个稍微复杂的VTK程序
一、程序 #include <QtCore/QCoreApplication> #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2)#include <vtkSmartPointer.h> #include <vtkRenderWindow.h> #include <vtkRenderer.h> #include <vtkRenderWindowInteracto…...
2023/3/28 15:57:04 - Java入门第133课——创建一个目录
问题 在当前工程下创建myDir目录 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,在TestFile类中新建测试方法testMkDir,代码如下所示: package day05;import java.io.File; import java.io.IOException;…...
2023/3/28 15:57:03 - 02-三维场景的基本要素(灯光)
一、灯光 剧场里有各式各样的灯光,三维渲染场景中也一样,可以有多个灯光存在。灯光和相机是三维渲染场景必备的要素,如果没有指定,vtkRenderer会自动创建默认的灯光和相机。VTK里用类vtkLight来表示渲染场景中的灯光。与现实中的…...
2023/3/28 15:57:03 - Java入门第133课——创建一个多级目录
问题 在当前工程下,创建a目录,然后在a目录下创建b目录,最后在b目录下创建c目录。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,在TestFile类中新建测试方法testMkDirs,代码如下所…...
2023/3/28 15:57:02 - 以像素为单位计算字符串大小
环境: Qt5.8、win7 一、背景 项目中需要根据字符串长宽调整空间边框大小。 二、解决办法 使用QFontMetrics。QFontMetrics函数计算给定字体的字符和字符串大小。string函数包括width()、boundingRect()、size()和size(),它们以像素为单位返回字符串…...
2023/3/28 15:57:02 - Java入门第134课——删除一个目录
问题 删除一个空目录。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,在TestFile类中新建测试方法testDeleteDir,代码如下所示: package day05;import java.io.File; import java.io.IOException; impo…...
2023/3/28 15:57:01 - 03-三维场景的基本要素(相机)
一、相机 观众的眼睛好比三维渲染场景中的相机,在VTK中用vtkCamera类来表示。vtkCamera负责把三维场景投影到二维平面,如屏幕,相机投影示意图如下图所示。从图中可以看出与相机投影相关的要素主要有如下几个: 1)相机…...
2023/3/28 15:57:01 - Java入门第135课——文件操作File和RandomAccessFile
1. 文件操作——File 1.1 File表示目录信息 1.1.1 listFiles()方法 File的listFiles方法用于返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录的子项(文件或目录)。 - File[] listFiles() - 返回值:抽象路径名数组,这些路径名表示此抽象路径名表示的目录…...
2023/3/28 15:57:00 - VS2015——Qt工程不能生成moc文件的解决办法
问题:在VS2015开发Qt应用程序时发现,编译器提示无法关联信号槽,无法经过moc工具生成相关函数。 解决办法: 1.找到无法生成转换的槽函数头文件,右键头文件(xxx.h)——>找到属性选项(Property)。 2.点击配置属性(Co…...
2023/3/28 15:57:00 - Java入门第136课——输出一个目录中的内容
1 输出一个目录中的内容 问题 输出当前目录下所有的内容 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,新建TestFile类,并在类中新建测试方法testListFiles,代码如下所示: import java.io.File; import java.io.IOException; import org.junit…...
2023/3/28 15:56:59 - VS2015——在release模式下进行调试
通过配置VS2015,解决release模式下问题: 1.工程项目上右键找到属性proterties(或菜单栏——>调试Debug——>属性 proterties)。 2.C ——> 常规General ——> 调试信息格式Debug Information Format 选 程序数据库 Program Database(/Zi) …...
2023/3/28 15:56:59 - 06-分支语句
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:Ubuntu 10.10 GCC版本:4.4.5 一、if语句分析 1) if语句用于根据条件选择执行语句 2) else不能独立存在且总是与它最近的if相匹配 3) else语句后可以…...
2023/3/28 15:56:58 - Java入门第137课——RandomAccessFile的read()和write()方法
问题 使用RandomAccessFile类进行文件的读写,详细要求如下: 1)使用RandomAccessFile的write方法向文件raf.dat写入数字“1”。 2)使用RandomAccessFile的read方法从文件raf.dat中将数字“1”读取出来并打印到控制台。 步骤 实现此案例需要按照如下步骤进行。 步骤一:…...
2023/3/28 15:56:58 - 07-循环语句
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:Ubuntu 10.10 GCC版本:4.4.5 一、循环语句分析 1)循环语句的基本工作方式 - 通过条件表达式判定是否执行循环体 - 条件表达式遵循if语句表…...
2023/3/28 15:56:57 - Java入门第138课——RandomAccessFile的read(byte[])和write(byte[])方法
问题 使用RandomAccessFile类进行文件的读写,详细要求如下: 1)使用RandomAccessFile的write(byte[])方法向文件raf.dat写入字符串"HelloWorld"。 2)使用RandomAccessFile的read(byte[])方法从文件raf.dat中将字符串"HelloWorld"读取出来并打印到控制…...
2023/3/28 15:56:56 - 08-goto和void分析
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:Ubuntu 10.10 GCC版本:4.4.5 一、遭人遗弃的goto 1)高手潜规则:禁用goto 2)项目经验:程序质量与goto的…...
2023/3/28 15:56:55 - Java入门第139课——文件指针的相关方法
问题 使用RandomAccessFile类的对象操作文件指针,详细要求如下: 1)获取文件raf.dat的指针 2)设置指针读取raf.dat中的字符串"World" 3)将指针移动到raf.dat文件的开始。 步骤 实现此案例需要按照如下步骤进行。 步骤一:添加测试方法testPointer方法 在…...
2023/3/28 15:56:55
最新文章
- 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp
转自:http://blog.sina.com.cn/s/blog_65cab32d01012iln.html eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。 比方说:…...
2023/3/28 15:57:12 - 01-基本数据类型
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 一、数据类型 什么是数据类型? - 数据类型可以理解为固定内存大小的别名 - 数据类型是创建变量的模子 二、数据类型的本质 1.数据类型是有固定内存大小的别名 2.用这个有固定…...
2023/3/28 15:57:11 - Java入门第126课——PM2.5监控程序
问题 北京某日空气质量PM2.5监测站全程检测的数据如下表所示,一个监测站点有可能在一天内多次采集,因此同一个站点可能有多个数据,如表-1所示: 方案 分析问题中提出的要求为统计各空气质量监测站点PM2.5的最高值,再结合提供的PM2.5浓度数据,可以发现,站点名可以作为M…...
2023/3/28 15:57:11 - Java入门第127课——hashCode方法的重写
问题 测试hashCode的作用,详细要求如下: 1)将没有重写hashCode方法的Emp类存入Map中,进行测试。 2)将重写了hashCode方法的Emp类存入Map中,再次进行测试,并说明两次不同结果的原因。 步骤 实现测案例需要按照如下步骤进行。 步骤一:新建Emp类 在JavaSE工程的day…...
2023/3/28 15:57:10 - 02-有符号与无符号
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:ubuntu 14.04 一、计算机中的符号位 1)数据类型的最高位用于标识符数据的符号 - 最高位为1,表明这个数为负数 - 最高位为0,表明…...
2023/3/28 15:57:10 - Java入门第128课——遍历各点PM2.5最大值
问题 在第126节课的基础上,分别使用迭代key的方式和迭代Entry的方式遍历集合map。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 在TestHashMap类中添加测试方法test2,使test2中的代码和test1的代码保持一致,代码如下所示: package day05;import org…...
2023/3/28 15:57:09 - ubuntu14.04 gcc突然失效
环境:ubuntu14.04 问题:gcc正常使用,突然无法编译文件,使用gcc -v查看不到版本号 解决办法:卸载重新安装gcc。 步骤: 1.因为不知道gcc版本号,卸载时需要gcc版本号。 使用命令:wh…...
2023/3/28 15:57:09 - 03-浮点数的秘密
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:ubuntu 14.04 一、内存中的浮点数: * 浮点数在内存的存储方式为:符号位、指数、尾数 类型符号位指数尾数float1位(第31位&…...
2023/3/28 15:57:08 - Java入门第129课——统计并遍历各点PM2.5最大值(要求排序)
问题 在上一节课的基础上,按照放入map中的站点名的顺序遍历出来。 步骤 实现此案例需要按照如下步骤进行。 步骤一:将HashMap改成LinkedHashMap 首先,构建测试方法test4、test5;然后,复制test2的代码到test4中,复制test3的代码到test5中;最后,将test4、test5中构建…...
2023/3/28 15:57:08 - Java入门第130课——查看一个文件的大小
问题 查看当前工程下demo文件夹下HelloWorld.txt文件的大小。 步骤 实现此案例需要按照如下步骤进行。 步骤一:新建类及测试方法 首先,新建类TestFile,并在该类中新建测试方法testLength,代码如下所示: package day05;import java.io.File; import org.junit.Test;p…...
2023/3/28 15:57:06 - 05-变量属性
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:ubuntu 14.04 GCC版本:4.8.4 一、C语言的变量属性 * C语言中的变量可以有自己的属性 * 在定义变量的时候可以加上“属性”关键字 * “属性”关键字指…...
2023/3/28 15:57:06 - Java入门第131课——创建一个空文件
问题 在上一案例的基础上,在demo文件夹下创建文件Hello.txt。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,在TestFile类中新建测试方法testCreateNewFile,代码如下所示: package day05;im…...
2023/3/28 15:57:05 - Java入门第132课——删除一个文件
问题 在上一案例中创建的Hello.txt文件删除。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,在TestFile类中新建测试方法testDeleteFile,代码如下所示: package day05;import java.io.File; import org…...
2023/3/28 15:57:05 - 01-一个稍微复杂的VTK程序
一、程序 #include <QtCore/QCoreApplication> #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2)#include <vtkSmartPointer.h> #include <vtkRenderWindow.h> #include <vtkRenderer.h> #include <vtkRenderWindowInteracto…...
2023/3/28 15:57:04 - Java入门第133课——创建一个目录
问题 在当前工程下创建myDir目录 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,在TestFile类中新建测试方法testMkDir,代码如下所示: package day05;import java.io.File; import java.io.IOException;…...
2023/3/28 15:57:03 - 02-三维场景的基本要素(灯光)
一、灯光 剧场里有各式各样的灯光,三维渲染场景中也一样,可以有多个灯光存在。灯光和相机是三维渲染场景必备的要素,如果没有指定,vtkRenderer会自动创建默认的灯光和相机。VTK里用类vtkLight来表示渲染场景中的灯光。与现实中的…...
2023/3/28 15:57:03 - Java入门第133课——创建一个多级目录
问题 在当前工程下,创建a目录,然后在a目录下创建b目录,最后在b目录下创建c目录。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,在TestFile类中新建测试方法testMkDirs,代码如下所…...
2023/3/28 15:57:02 - 以像素为单位计算字符串大小
环境: Qt5.8、win7 一、背景 项目中需要根据字符串长宽调整空间边框大小。 二、解决办法 使用QFontMetrics。QFontMetrics函数计算给定字体的字符和字符串大小。string函数包括width()、boundingRect()、size()和size(),它们以像素为单位返回字符串…...
2023/3/28 15:57:02 - Java入门第134课——删除一个目录
问题 删除一个空目录。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,在TestFile类中新建测试方法testDeleteDir,代码如下所示: package day05;import java.io.File; import java.io.IOException; impo…...
2023/3/28 15:57:01 - 03-三维场景的基本要素(相机)
一、相机 观众的眼睛好比三维渲染场景中的相机,在VTK中用vtkCamera类来表示。vtkCamera负责把三维场景投影到二维平面,如屏幕,相机投影示意图如下图所示。从图中可以看出与相机投影相关的要素主要有如下几个: 1)相机…...
2023/3/28 15:57:01 - Java入门第135课——文件操作File和RandomAccessFile
1. 文件操作——File 1.1 File表示目录信息 1.1.1 listFiles()方法 File的listFiles方法用于返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录的子项(文件或目录)。 - File[] listFiles() - 返回值:抽象路径名数组,这些路径名表示此抽象路径名表示的目录…...
2023/3/28 15:57:00 - VS2015——Qt工程不能生成moc文件的解决办法
问题:在VS2015开发Qt应用程序时发现,编译器提示无法关联信号槽,无法经过moc工具生成相关函数。 解决办法: 1.找到无法生成转换的槽函数头文件,右键头文件(xxx.h)——>找到属性选项(Property)。 2.点击配置属性(Co…...
2023/3/28 15:57:00 - Java入门第136课——输出一个目录中的内容
1 输出一个目录中的内容 问题 输出当前目录下所有的内容 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,新建TestFile类,并在类中新建测试方法testListFiles,代码如下所示: import java.io.File; import java.io.IOException; import org.junit…...
2023/3/28 15:56:59 - VS2015——在release模式下进行调试
通过配置VS2015,解决release模式下问题: 1.工程项目上右键找到属性proterties(或菜单栏——>调试Debug——>属性 proterties)。 2.C ——> 常规General ——> 调试信息格式Debug Information Format 选 程序数据库 Program Database(/Zi) …...
2023/3/28 15:56:59 - 06-分支语句
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:Ubuntu 10.10 GCC版本:4.4.5 一、if语句分析 1) if语句用于根据条件选择执行语句 2) else不能独立存在且总是与它最近的if相匹配 3) else语句后可以…...
2023/3/28 15:56:58 - Java入门第137课——RandomAccessFile的read()和write()方法
问题 使用RandomAccessFile类进行文件的读写,详细要求如下: 1)使用RandomAccessFile的write方法向文件raf.dat写入数字“1”。 2)使用RandomAccessFile的read方法从文件raf.dat中将数字“1”读取出来并打印到控制台。 步骤 实现此案例需要按照如下步骤进行。 步骤一:…...
2023/3/28 15:56:58 - 07-循环语句
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:Ubuntu 10.10 GCC版本:4.4.5 一、循环语句分析 1)循环语句的基本工作方式 - 通过条件表达式判定是否执行循环体 - 条件表达式遵循if语句表…...
2023/3/28 15:56:57 - Java入门第138课——RandomAccessFile的read(byte[])和write(byte[])方法
问题 使用RandomAccessFile类进行文件的读写,详细要求如下: 1)使用RandomAccessFile的write(byte[])方法向文件raf.dat写入字符串"HelloWorld"。 2)使用RandomAccessFile的read(byte[])方法从文件raf.dat中将字符串"HelloWorld"读取出来并打印到控制…...
2023/3/28 15:56:56 - 08-goto和void分析
注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:Ubuntu 10.10 GCC版本:4.4.5 一、遭人遗弃的goto 1)高手潜规则:禁用goto 2)项目经验:程序质量与goto的…...
2023/3/28 15:56:55 - Java入门第139课——文件指针的相关方法
问题 使用RandomAccessFile类的对象操作文件指针,详细要求如下: 1)获取文件raf.dat的指针 2)设置指针读取raf.dat中的字符串"World" 3)将指针移动到raf.dat文件的开始。 步骤 实现此案例需要按照如下步骤进行。 步骤一:添加测试方法testPointer方法 在…...
2023/3/28 15:56:55