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

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

相关文章

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示