调试技术能够让新技术的学习事半功倍

2024-03-21 10:18

本文主要是介绍调试技术能够让新技术的学习事半功倍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

调试技术能够让新技术的学习事半功倍


我是WPF菜鸟。我要学WPF。

一种方法,是根据推荐的书籍,按照书籍的步骤,从Hello World开始,循序渐进,从event handling, data binding, style, template, graphic, resource等等一路练过来,然后,然后呢?

然后没了。然后可以看看MSDN上深入一点的文档,写个小程序什么的,再然后呢?

再然后就真的没了。

为什么说没了呢。因为接下来不知道做什么了。首先我不知道我是不是学全面了,其次就算我以为我学全面了,我能做个程序了,我也不知道我是用的方法是不是最优的。学一个东西,学到后来觉得没了,那是很让人失望的。

所以我觉得按照上面的方法来学WPF,肯定会让我非常不爽。

那我该怎么学呢?

首先是我为啥要学。导火索是现有的产品无法满足用户日益增长的需要了。日本A片都用蓝光碟了,说明用户对于视觉感官的渴望是非常强烈的。那WPF真的能满足这个需求么?WPF能发挥GPU的多少硬件特效?功能上支持关键部位打马赛克么?WPF的工作模型跟我现有的数据兼容么?WPF画图是实时的么,我开发游戏用WPF能达到直接用D3D的性能么?WPF出问题后我到什么地方找专家?如何制定性能指标跟其它技术比较?开发平台完善么?...

稍微具体点的问题比如有:

1. WPF支持数据和图像同步吗?比如我的数据源刷新速度比WPF的Render还快的时候,我有办法得知当前的Render状态,以便调整数据的获取速度吗?

2. 如果我的目标程序是一个DCOM Server,我需要在DCOM请求执行的时候通过GUI来显示执行状态。WPF的线程模型跟DCOM Server模型有冲突吗,使用WPF会带来 DCOM的性能下降吗?

3. 当频繁改变UI Tree结构的时候,怎样的做法才能够带来更高的性能,怎样的做法才能够避免UI的抖动呢?

如果手头的项目是非常重要,要花很多钱,上面这些问题往往是决定使用何种技术的关键。但事实情况是,就算我把亚马逊上WPF 4星半以上的书全部看一遍,WPF所有的feature全部学会,也无法回答得到上面问题的答案。

要回答上面的问题,其实需要两点:

1. 明确地知道你需要什么
2. 明确地知道WPF产品本身是如何工作的,而不是知道应该如何使用WPF

所以我重新制定的学习计划如下:

1. 会用WPF写一个hello world,以便做进一步研究的试验品
2. 尽可能多地通过比较深入的文章,比如WPF developer的blog,来了解WPF的实现细节
3. 针对我的需求,分析出WPF对应的实现细节。比如WPF通过怎样的方式把图像画到屏幕上,WPF的线程模型如何通信,WPF通过怎样的顺序传递消息,遍历UI tree,WPF如何优化重复绘图,WPF对Windows消息的依赖等等
4. 根据前三点获取的信息,根据MSDN中的介绍完成一个技术原形,测量该原形的工作是否跟预期相符合,反证前三步获取的信息是否准确
5. 把这些信息进行多方面的反馈和讨论,进一步完善原形,完成进一步的证实和检验
6. 根据前面的信息,决定是否使用WPF进行当前的开发。如果答案是肯定,那去亚马逊随便买本4星半的WPF教科书,快速学习如何使用WPF的各种feature

上面的计划,难点在第三步。除了微软以外,别人没有WPF的源代码,如何才能知道WPF的实现细节呢。如果你有钱,如果你是HP或者Citybank,你可以找微软的顾问,把你的问题交代给顾问,然后顾问会参考WPF的源代码,会跟WPF的developer讨论,最后告诉你WPF某些具体的技术是如何实现的。但是如果你是个人呢,或者你不想花钱,那对不起,你只有自己硬啃了。

这个怎么硬啃呢,自然是需要有技巧地啃了。调试工具在这个时候就会发挥出巨大的作用!

(哪怕手头有WPF的所有代码,其实还是没有调试器+reflector管用。要是不相信,你去打开VS下MFC,ATL和STL的代码,看看能学到多少东西)

下面是我结合调试器学习WPF的步骤。调试技术能够让学习事半功倍。

WPF起步(上) --- WPF是如何把图像画到屏幕上 
http://blog.csdn.net/eparg/archive/2007/12/11/1930357.aspx

WPF起步(中) --- 的main thread跟render thread如何通信
http://blog.csdn.net/eparg/archive/2007/12/11/1930363.aspx

WPF起步(下) --- WPF的画图请求是如何生成和派发
http://blog.csdn.net/eparg/archive/2007/12/11/1930368.aspx

 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1930560


这篇关于调试技术能够让新技术的学习事半功倍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/832412

相关文章

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

使用C/C++调用libcurl调试消息的方式

《使用C/C++调用libcurl调试消息的方式》在使用C/C++调用libcurl进行HTTP请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试,libcurl提供了多种... 目录1. libcurl 调试工具简介2. 输出请求消息使用 CURLOPT_VERBOSE使用 C

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC