内容简介:主要途径是参考苹果官方文档,所以介绍以翻译官方文档为主。由于内容比较多,会分阶段来介绍。以下来自苹果官方文档中对
主要途径是参考苹果官方文档,所以介绍以翻译官方文档为主。由于内容比较多,会分阶段来介绍。
以下来自苹果官方文档中对 Instruments 描述
介绍
Instruments
是一个强大而灵活的性能分析和测试工具,它是 Xcode
开发 工具 集的一部分,它被设计用于帮助分析 OS X
和 iOS
的应用、进程与设备,以便更好的理解和优化它们的行为和表现。结合 Instruments
从你的 app
开发工作刚刚开始,可以节省你的时间,帮助你在开发周期的早期发现问题。
在 Instruments
中,可以使用指定的工具,跟踪应用 app
、进程、设备不同方面的行为, Instruments
将数据收集在配置文件中,并将详细分析的结果显示出来。
不像其他的性能和调试工具, Instruments
允许你广泛的收集不同类型的数据并一起呈现出来,这让它很容易的去表示在其他方面可能被忽略的情况。例如你的 app
可能由于打开多个网络连接而导致大量的内存增长,通过一起使用 Instruments
中 Allocations
和 Connections
工具,你可以辨认而不用关闭它,找到导致快速内存增长的连接。
Instruments工作流程
Instruments
可能看起来像一个复杂的应用程序。它可以用来收集有关你的应用程序各种有用的信息有关的应用程序,并帮助您诊断和解决问题。但是整体的 Instruments
工作流是相对简单的。在高层次上,它由以下的主要阶段:
app app
当正在用 Xcode
测试你的 app
时,在使用 Instruments
之前参考调试导航栏中的信息,这些信息包括应用程序的CPU,内存,能源消耗等,通常情况下这里会提供所有你需要提高性能与快速解决常见问题的信息。当你需要执行更多详细的分析时需要使用 Instruments
。
在 Xcode
导航栏中CPU调试界面如下
常见任务
启动 Instruments
分析一个打开的 Xcode
项目
-
启动
Xcode
并且打开一个项目 -
请执行下列操作之一:
-
Xcode
中 builds
你的项目, Instruments
启动,并且系统会提示您选择分析模板。如果你经常用相同的模版配置你的 app
,可以设置 Xcode
项目自动使用,每当你初始化配置时。
建立一个Xcode项目使用特定的 Instruments
分析模板
- 启动
Xcode
并且打开一个项目 - 选择 Product > Scheme > Edit Scheme
或者在 Xcode
工具栏中 Scheme
弹出菜单中选择
3.点击 Profile
4.请单击 Instruments
弹出菜单,然后选择所需的分析模板。
如果选择 Ask on Launch
, Instruments
启动时显示其分析模板选择对话框。
5.点击 Close
Xcode中建立你的项目, Instruments
启动,并开始根据在方案编辑器配置的模板分析你的应用程序。
关于Instruments
Instruments
有几个主要的窗口和对话框。
配置模版选择对话框
当 Instruments
启动后,将会呈现一个分析模版的列表,从中选择模板 - 文件的列表。这份名单包括一组标准模板,以及您可能已经创建的任何自定义模板。包含 Instruments
预先配置的设置,从中选择,这份名单包括一组标准模板,以及你可能已经创建的任何自定义模板。
该分析模板选择对话框包含以下主要元素:
- Target device list: 单击此按钮,选择您要分析设备。
- Target process list: 单击此按钮,选中一个进程
- Filter buttons: 点击筛选标准模版、自定义模版、或者最近使用的模版
- Search field: 输入一些文字来快速找到你需要的模板。此字段搜索模板标题和描述。
- Template list: 分析模板列表,如果你点击一个Filter buttons或输入的搜索条件可以被过滤。
- Template description: 当前选择的分析模板,可用于确定所选模板是否满足您的需求有所帮助的简短说明。
- Choose button: 单击此按钮创建一个新的配置文件的文件,根据当前选定的模板。点击
option
键这个按钮变成Profile
点击Profile
按钮基于当前选择的模版创建一个新的文档并立即开始分析目标进程。 - Open button: 单击此按钮可打开以前保存的配置文件,而不是开始一个新的模板。
- Cancel button: 单击此按钮可关闭该模板选择对话框。
跟踪文件
跟踪文件是用来组织和配置 Instruments
分析,主动收集数据,以及查看和分析结果。通过启动 Instruments
并选择一个分析模板或者从Xcode中,Dock中,或命令行创建一个新的跟踪文件。您还可以保存并重新打开您在其中配置 Instruments
和收集到的数据的跟踪文件,跟踪文件可以包含很多非常详细的信息,而这些信息是通过一些窗口和区域呈现出来。
工具栏
该工具栏可以启动,暂停和停止数据剖析,添加 Instruments
,隐藏和显示面板等。它包括以下主要内容:
-
Profiling controls: 可以录制暂停和停止数据采集。
-
Target device list: 选择一个分析的设备
-
Target process list: 选择一个要分析的进程
-
Activity viewer: 显示当前跟踪或检查头在时间轴窗格中的位置所用的时间。如果您的跟踪文档有多个与其关联的数据运行就在这里显示。
-
Add instrument (+) button: 显示或隐藏工具库面板,其中包含可用工具的完整列表。在这里,您可以选择单个
instruments
并将它们添加到你的跟踪文档。 -
Strategy buttons: 控制在时间线窗格中显示的信息类型。
- CPU ( ): 显示CPU内核的列表,以及它们的收集到的数据,在时间轴窗格。仅当一个跟踪文件包含 CPU 数据记录工具可用。
- Instruments ( ): 显示在时间轴窗格工具及其相应的数据的列表。
- View buttons ( ): 隐藏或显示详细信息窗格和指示器。
时间线面板
时间线面板显示记录,对于给定的跟踪数据的图形总结。在该面板中,每个 instrument
,CPU核心,或线程有其自己的“轨道”,其提供所收集的数据的图形图表。点击工具栏上 Strategy buttons
来显示仪表,CPU核心或线程的数据。
虽然此面板的信息是只读的,但可以通过数据滚动,选择特定的区域进行更严密的检查,并插入标志到突出的兴趣点。你可以通过调整缩放级别改变信息图形,或通过改变指示器中各个工具的记录设置显示在这里。
工具分析视图 这是一个在追踪文件内包含的所有工具列表,以及它们的所收集的数据。可以从库面板中的列表拖拽一个新的工具。如果您在列表中选择一个工具,你可以将它删除或通过检查面板中进行配置。当你创建一个跟踪文件该工具列表默认为可见。
CPU分析视图 如果跟踪文档包含记录CPU的相关数据,在此显示的CPU内核,CPU内核与它们运行的超时时间被显示在这。
线程分析视图 如果您的跟踪文件中包含该记录线程相关的数据的工具,在这里显示线程列表及其使用率。
详细面板
此面板显示有关在你的跟踪文档中的工具收集的数据详细信息。在时间线面板中选择各个工具,看它收集分析的数据。
导航栏 在详细信息面板顶部的导航栏可以帮助你通过收集到的数据进行浏览。可以用它来在不同类型的数据之间进行切换,并通过不同层级的数据进行导航。
- Instrument: 时间线中的当前选择工具的图标。单击该按钮可查看控制台的工具。
- Detail type list: 让你在不同类型的数据之间的导航。此处显示的选项会有所不同,这取决于选择的工具。对于许多工具,该列表包括诸如数据的摘要,调用关系树和一个控制台。
- Detail tree: 跟踪你在哪里在层次结构中,你通过在详细信息面板中数据浏览,单击树的分支的层次结构回到相应的数据中。
- Filter field: 允许您过滤收集到特定阶段的数据。点击过滤器区域的菜单,一些额外的过滤选项。您还可以通过在Inspector面板中调整显示设置过滤收集的数据更加广泛。
所收集的数据区域显示为选定工具中的数据,通常以表格形式。这里显示的内容从工具到工具直接显著变化。例如,活动监视器工具显示的线程,CPU,线程信息,等等。
通常情况下,在此区域内的各符号和数据点包含导航按钮当你在移动鼠标指针时它们出现。您可以点击这些按钮来移动到更深入数据。当你这样做,导航栏更新树结构,以反映你身在何处的层次结构。
指示器面板
此面板包含特定工具的设置,你可以为了控制记录行为,在时间线和详细面板中的可视信息进行调整。此面板有时也显示了通过数据的详细信息面板浏览时可能是有用的附加信息。
记录设置区域 在这方面提供的设置而异,这取决于活动的工具。通常情况下,工具提供设置,允许调整某些属性有关数据是如何记录,如采样率或数据捕获的类型。
显示设置区域 在这方面的设置也各不相同,这取决于工具。这些设置可以帮助你:
- 控制出现在详细信息面板中的数据。例如,一个工具可能让你导航调用关系树时隐藏系统库。
- 导航通过过滤和数据挖掘更有效的记录数据。
- 调整信息如何被记录呈现在时间线视图。一种工具可以,例如,允许你改变图形样式来表示其收集的数据。
扩展详细区域 这个区域不包含任何设置。相反,它是用来显示附加工具特定的信息,有关详情面板中选择的数据,例如一个完整的栈跟踪。
库面板
库面板提供了可用的工具,相关组完成列表并允许你将它们添加到你的跟踪文件。在这里,你可以浏览工具的描述,过滤特定的工具,并建立常用工具,以便快速访问你自己的自定义分组。要显示库面板中 选择Window > Library,或按下Command-L,或单击在跟踪文档工具栏(+)按钮。
标识面板
该标识面板显示你可能在活动的追踪文件中时间线面板应用的所有标识。在这个面板中,您可以选择一个标识,快速定位到它的时间线。您也可以通过标志的大列表过滤指定的标识,显示和隐藏你的标识,与你的标识的时间戳。
创建、保存与打开追踪文件
在 Instruments
中,所有的工作都是在一个跟踪文件,包括一整套工具,它们的配置与它们已经收集的数据,一旦用追踪文件分析一个应用时,你可以保存这个收集追踪数据的文档,然后再次打开它后进行观察和分析。
关于分析模版
当 Instruments
第一次启动时,它提供的分析模板列表。每一个模版都包含了一组工具的集合,用来分析应用程序与收集信息,为了帮助找到问题,或让你的应用更加有效率。你应该计划使用分析模板作为一个起点,每当你需要收集数据用于一个指定的原因。例如,如果你想查询你的应用程序内存的问题,你应该选择一个与内存相关的模板,例如Allocations, Leaks, or Zombies,使用模板来创建跟踪文件后,可以随时添加或删除单个工具,或者根据需要重新配置工具。
创建一个追踪文件
你用 Instruments
开始分析时需要创建一个追踪文件
1.启动 Instruments
2.当选择分析模版对话框出现时,选择一个目标设备与进程
3.选择需要的分析模板。
4.单击 Choose
从你选择的模版中,一个预先配置工具的新文件已经被创建
保存跟踪文件
一旦你创建一个跟踪文件,你可以将其保存以供日后参考。 Instruments
保存跟踪文件, Instruments
跟踪文件扩展.trace。
1.创建一个跟踪文件,参考上面
2.3.输入一个文件名
4.选择保存文件的目录
5.默认保存最近运行的跟踪数据,如果想保存多次运行的数据则取消复选框。
6.单击保存
保存跟踪文档作为一个分析模板
如果你创建你认为你可能需要再次进行分析其他应用程序追踪文档,你可以将它保存为自定义模板,以便你不必每次运行 Instruments
都要来重新创建它。
1.创建或者打开一个追踪文件
2.3.输入模版名称
4.选择一个目录
将模版保存到 /Users//Library/Application Support/Instruments/Templates目录使其在 Instruments
模板窗口的自定义栏可用,这是在另存为模板对话框中的默认目录。
5.选择一个模版图标
6.输入一个模版描述
7.单击保存
一旦你保存模板,它会自动出现在分析模板选择对话框,分组为自定义模板。下次当你创建一个跟踪文件,你可以选择它作为起点。
关闭追踪文档
- 如果文档中包含未保存的数据,选择是否保存更新文档。
打开追踪文档
请执行下列操作之一:
- 双击在Finder中.trace文档文件。
- .trace文档文件拖动到
Instruments
的应用程序图标。
- 打开
Instruments
并执行以下步骤:
找到保存.trace文档文件。
目标设备与进程
用追踪文件分析,需要指定一个目标,也就是说需要告诉 Instruments
要分析什么,你要分析的在哪里,例如真机或者模拟器
当你创建一个追踪文件时, Instruments
会显示分析模版选择的对话框,此对话框的顶部包括一个目标设备列表和目标进程列表,它允许你当选择一个模版时指定一个目标设备,这些列表包括,配置货连接你的Mac上的任何设备,包括模拟器,以及任何在这些设备上的任何可用进程,最近目标进程,应用程序扩展,活动进程,系统进程也在列表内
目标列表在每个追踪文档中是可用的,允许你在一个追踪文档中工作室任何时间改变目标。
设置一个设备和进程
1.单击目标设备列表或目标进程列表,然后选择所需的设备和目标
有些工具允许你针对所有进程。如果你想做到这一点,选择在目标进程列表中的所有进程。
如果需要的进程没有列出,在目标进程列表中选择目标。这将显示一个对话框,允许您浏览的任何进程。您也可以通过这个对话为进程配置环境变量。
设置一个iOS设备
要设置iOS设备,将设备连接到开发的Mac上。一旦连接,该设备将在目标设备列表中显示。
无线设置一个iOS设备
Instruments
还可以让你以无线方式收集iOS设备数据。测试以下时,无线性能分析是非常有用的:
- 加速度计,移动设备在各个方向上没有被束缚。
- 配件,将USB插入空闲插槽,并对其进行测试。
1.确保你的移动设备通过USB或Lightning连接到你的开发的Mac。
2.按Option键并单击目标设备列表。
3.选择你要实现无线的移动设备并分析它。
4.再次单击目标设备列表中打开它,选择设备的无线版本,并选择一个进程。
5.开设备USB或Lightning。
你现在应该能够以无线方式分析你的设备上的进程。
设置Apple Watch
在用 Instruments
部署一个Apple Watch之前必须先准备好手表进行分析。
1.确保你的Apple Watch与你开发的iPhone是配对的
2.退出 Instruments
3.启动 Xcode
4.通过 USB
或 Lightning
连接与你Apple Watch配对的iPhone到你的 Mac
上。
5.选择Window > Devices 或者按Shift-Command-2打开在Xcode中打开设备窗口。
6.等待iPhone出现在设备列表中。
7.等待与iPhone配对的Watch出现。
8.等待Xcode中表示Watch已做好准备。这个过程可能需要几分钟。
9.从USB或Lightning断开iPhone。
10.再次将iPhone通过USB或Lightning连接。
一旦你的 Apple Watch
已经出现准备分析,重新启动 Instruments
, Apple Watch
应该已经出现在设备列表中了。
访问和使用单独的工具
在一个跟踪文件内。单独的数据收集模块被称为工具(instruments),它随着时间推移收集应用程序,进程,设备的数据,每个工具收集和显示一个特定类型的信息,例如文件存储,内存使用或者网络连接。 Instruments
是包括了工具(instruments)库,其目的是为了满足大多数开发人员,高级开发人员的需求,然后也可以自定义工具,使用DTrace收集其他类型的数据。
显示库面板
库面板显示所有的工具,你可以添加到一个跟踪文件。该库包含了所有内置的工具,也可以是任何你已经定义过的自定义工具。
显示库面板请执行下列操作之一:
- 点击添加工具 按钮在跟踪件工具栏。
- Command-L
在库面板查找并整理Instruments
在库面板中的工具清单很长,特别是如果你已经添加自己的自定义工具。有几种方法过滤和整理,以便快速找到更多需要工具的列表。
在库面板的底部筛选可以根据它们的名称,描述,分组或者关键字很容易找到指定的工具
在库面板的工具可以被看作是有或没有名称和描述的图标。
1.在库面板底部点击操作按钮2.从出现的菜单中选择所需的视图模式。
这些视图模式分别为
View Icons
View Icons And Labels
View Icons And Descriptions
View Small Icons And Labels
默认情况下,库面板显示所有可用的工具。然而,工具还可以按功能分组。你可以显示横幅来标识各工具分组,你可以通过这些分组进行筛选。
2.从菜单中选择显示组标识。
筛选分组
自定义工具组如果有需要你可以在库面板中创建自定义分组来管理你常用的工具
静态工具组
1.2.输入组名并按回车
3.在组列表中选择库。
4.找到所需的工具并将它们拖放到新组。
智能工具组
1.
2.该组中的标签字段中输入名称。
3.指定该组的条件
4.单击 (+)创建一个新的规则
5.单击OK
6.点击智能分组并验证其是否正确填充。
每个智能分组必须至少有一个规则。您可以添加额外的规则,根据需要使用规则编辑器的控件,然后配置分组支持全部或部分的规则。下表列出了可用于工具规则的标准。
| Criteria | Description |
| ———————– | —————————————————————————————————————————————————————– |
| Label | Matches instruments based on their title. Available comparison operators include: Starts With,Ends With,Contains |
| Used Within | Matches instruments based on when they were last used. You can use this filter for instruments that were used within the last few minutes, hours, days, or weeks. |
| Search Criteria Matches | Matches instruments whose title, description, category, or keywords include a specified string |
| Category | Matches instruments whose library group name contains or exactly matches the specified string. This criteria does not match against custom groups. |
编辑已经存在的智能工具分组请执行下列操作之一:
移除智能分组请执行下列操作之一:
- 组列表中选择智能组,然后按Delete键。
添加一个工具到追踪文件中
无论你是基于模板创建还是一个空白的追踪文件,你可以扩展其功能添加新的工具。
添加一个工具到追踪文件中
1.打开追踪文件
2.显示库面板
3.找到所需的工具
4.从库面板拖动工具到观察窗格列表中工具列表的所需位置在跟踪文件中。
从分析文件中删除工具
在追踪文件中工作时,你可以轻松地删除你不再需要的工具。
从分析文件中删除工具1.打开追踪文件。
2. 3.4.当出现提示时,单击确定以确认你要删除的工具。
配置工具的记录设置
工具一旦添加它们到追踪文件中就准备使用,然而在某些情况下你可能要自定义设置工具,例如你可能希望调整Activity Monitor的采样率,或者正在用Allocations分析释放内存通过禁止事件。像这样的自定义设置是不同的,这取决于工具。许多工具包含一些操作,用于确定哪些类型的信息是由工具本身被收集。您可以在导航窗中的记录设置区域调整这些设置。
配置工具的显示设置
记录跟踪后,工具在详细信息面板显示结果,这些结果在不同的工具上各不相同,它们可以包括摘要,调用树,和样本列表。通常情况下,大量的数据在这里展示与它的耗时,为了帮助迅速得到正确的信息,工具经常(这取决于工具)允许你调整和筛选展示的信息,如果工具支持这些操作,你可以找到他们在导航面板中的显示设置区域。用于配置时间线面板中的内容选项也在这里找到。
录制,暂停,停止追踪
当App正在运行时 Instruments
收集有关App的信息,这章介绍如何使用工具来收集信息。
录制一个追踪
当你准备分析你的app时,开始录制,在录制时,跟踪文件里的工具根据配置监视你的app,时间线窗口和详情窗口会更新已经捕捉的实时视图。
开始录制请执行下列操作之一:
- 在追踪文件的工具栏中点击录制( )按钮
- 按Command-R
你可以按Command-R停止录制
设置录制选项为了在追踪文件内改善数据收集,录制前选择一个 delay
,录制的最长时间,保存这些数据,或者是否在 deferred mode
下记录数据。
为追踪文件设置录制选项
选项包括:
- Time Limit:录制数据的最长时间
- Window Limit:数据将要被保存的最大持续时间,如果录制的持续时间长度超出制定的Window Limit(例如超出指定的4秒),那么只有最后4秒内收集到的数据被保存。
- Deferred Mode:选择推迟数据分析,直至数据收集完成后。这可以更快和更精确的数据收集,因为很多的系统资源是被针对用于记录的过程。
3.点击OK关闭窗口
暂停一个追踪
如果有必要,可暂停录制,并在以后再次恢复。
请执行下列操作之一:
- 在追踪文件的工具栏中点击暂停( )按钮
- 按Command-Shift-R
停止一个追踪
一旦你已经记录到你想要的数据,停止录制这样你就可以开始分析收集到的数据。
停止录制请执行下列操作之一:
- 在追踪文件的工具栏中点击停止( )按钮
- 按Command-R
从Dock开始分析
你可以从Dock中 Instrusments
应用图标触发 Time Profiler
来录制后台的某些事件。
1.随着 Instrusments
打开,点击 Instruments
图标
2.选择分析的进程开始录制
选项包括:
- System Time Profile:开始分析所有系统进程
- Automatically Time Profile Spinning Applications. Automatically profiles blocked (spinning) apps in the future.
- Allow Tracing of Any Process (10 hours):跟踪发生在未来10小时任何进程。在这10个小时期间绕过密码输入。
从Xcode开始分析
Instrusments
是Xcode开发工作流程的重要组成部分,你可以从Xcode中直接启动它创建和测试你的应用程序。
从build和product菜单开始分析
1.在Xcode中打开一个app项目
2.请执行下列操作之一:
- 按Command-I
Instruments
启动并显示分析模板选择对话框。请注意,您的应用程序已经在target device和process lists自动选择。
1.在Xcode中打开一个app项目
2.请执行下列操作之一:
- 按Command–<
3.
4.在 Instruments
弹出菜单选择要设置默认的模版
5.点击close
现在,只要你分析应用程序时, Instruments
会自动打开你选择的模版并开始分析。
当调试时从Xcode指示器来分析
Xcode
的调试导航器包括几个监测指示器当你测试并调试app时。这些指示器可以追踪多种因素,包括CPU使用率,内存,电量等影响,并提醒你可能影响性能,功耗以及潜在的问题,如果你在测试app时发现了一个影响要进一步的检查,可以过渡到 Instruments
来获取更多的信息。
1.打开一个项目并运行
2.当你的应用程序正在运行,通过执行下列操作之一显示调试导航:
- 按Command-6
3.点击要查看的指示器
4.
并不是所有的Xcode指示器都有 Profile in Instruments
按钮,例如 The Energy Impact
指示器,包括几个按钮用于 Instruments
启动不同类型的分析会话。
5.当出现提示时,选择是否转换当前运行的app到 Instruments
或者停止当前运行的app并开始启动一个新的 Instruments
。
从命令行开始分析
略…
最小化Instruments对数据收集的影响
Instruments
被设计尽量减少其自身对数据收集的影响。通过改变一些基本的设置,但是你可以进一步降低 Instruments
对数据收集的影响。
你可以减少采样间隔以便收集更多的数据,然而低的采样间隔导致高的采样率可能会出现几个问题:
- Processor time is required for every sample:高的采样率需要更多的处理器时间。
- Sample interval timing may not be consistent:中断用来启动每个采样,当这些中断发生变化当使用很小的采样时间可能会导致采样率显著的变化。
- Small sample intervals cause more samples to be taken:每个采样使用系统内存,大量的采样会很快的消耗可用的内存。
在Deferred模式下运行 Instruments
直到退出正在测试的应用程序,通过延迟数据分析提高性能相关的数据的准确性。通常情况下当你app运行时 Instruments
分析和显示数据,允许你查看它收集的数据,通过占用CPU时间和内存,实时运行分析减缓目标进程,使得你的测量可能不能反应进程怎么样正常运行。运行 Instruments
在deferred mode 下延迟数据的分析,直到数据采集完成,无论是在您的应用程序运行完毕后,或单击停止。当在deferred mode下,你被禁止从正在收集数据的工具交互。
在 deferred mode
下, Instruments
完成数据收集后,处理这些数据并在屏幕上显示出来,延迟数据分析附加时间到采集数据的后期阶段处理,但它有助于确保性能相关的数据时准确的。
Instruments设置deferred mode1.
2.
对于特别长追踪,延迟模式造成的延迟更显著。避免这种延迟设置,延迟模式只有那些需要极其精确的数据采集追踪。
追踪设置deferred mode1.
2.
关于
由于篇幅太长会再开一篇blog介绍对收集的数据进行分析
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据结构与问题求解
韦斯 / 清华大学出版社 / 2011-8 / 89.50元
《数据结构与问题求解(Java语言版)(第4版)》是专为计算机科学专业的两个学期课程而设计的,从介绍什么足数据结构开始,继而对高级数据结构与算法进行分析。《数据结构与问题求解(Java语言版)(第4版)》以独特的方式,清晰地将每种数据结构的接口与其实现分离开来,即将如何使用数据结构与如何对数据结构编程相分离。《数据结构与问题求解(Java语言版)(第4版)》从抽象思维和问题求解的角度出发,为数据结......一起来看看 《数据结构与问题求解》 这本书的介绍吧!