我的DDK学习经验(转载)

2023-10-31

这篇文章在无数技术网站都找的到。我在这里发这篇文章的原因:

1。这篇文章实在很好。别说作者倾情的介绍了自己的经验和感想(尤其是关于“钱途”的感想),里面介绍的一些书,真够有志开发驱动程序的同志看半辈子了。

2。我搜索了文档中心,没有发现这篇文章。

3。我现在需要参与分给我的帖子加分(可用分700多可是参与分没有了),大家多多点击  :)

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

我的DDK学习经验
转载辅大美少女梦工场BBS站

自从97年1月我在Program版Post鼓励有心网友学习Window Device Driver以来,陆续收到一些人询问如何下手.现在我已没时间玩BBS,因除了3D显示卡Driver要Tune外,还被派去做一些杂7杂8的事情.趁教师节比较有空,写下这封我学习DDK的经验,如果那站的站主觉得对网友有帮助,就尽管利用,不用客气.但需注明出处,并严禁有任何谋利举动(如剽窃修改后,来赚取稿费),曾对一些网友提出如何在MFC中用I/O Port Function的问题,回答了6次,让我觉得很烦烦烦烦烦烦,希望这种情况不在发生.

本文供分3段:(1)为何我要学DDK (2)学习DDK的过程 (3)未来可能的发展.

(1)为何我要学DDK.

我是资讯科班出身,就读过交大计工,清大资研.历经78,79股市狂飚,退伍后,认为写程序没什么前途,也无法撑到38岁.但MBA却是越老人脉越多,收入也越多,所以进资策会,一面工作一面准备GMAT,但没申请到理想的学校,而考外贸协会的人才培训班,在复试时也被刷下来.最后认命乖乖学Window 3.1,第一年做多媒体资料库专案,当时连VC++ 1.0都还没出现,就用Borland C++ 3.0以纯SDK方式coding,(因不知道有OWL这种东西)事后想起来真是因祸得福,让我更了解Window底层的运作(不过当时真的觉得很干).

第二年做Video Editor是我比较快乐的时光,VC++ 1.0刚出来,但市面没一本相关书籍,连MSDN也一样.怎么办?到处找不到资料.最后用最笨的方法:用Debuger trace MFC source code!, 然后搭配Video for Window 1.1版SDK来coding,当时傻傻得,以为可以做个Video Editor跟友立拼,所以常常加班到10点,但后来Video Editor结案后就放到储藏室,而Aldus被Adobe并购,友立也把PhotoStyle卖给Adobe.这件事件让我得到个教训:套装软件不好做,更难与国际大厂同类型产品竞争.因有时Video Editor会利用MCI Command来控制AVI/FLI播放,但觉得很奇怪,那个MCI Driver到底在搞什么鬼?在好奇心驱使下,翻MSDN的MultiMedia Device Driver来看,才搞懂MCI Driver如何与底层的Video/Audio Driver沟通.

第三年是最黑暗的时期,Team Leader包个Multimedia Title来做(还曾打算向敦煌科技包Game来做).美工,企划,全和在一起,而要我用Director 3.0的Lingo语言来写Title的Program.我便开始消极抵抗,同时自己偷偷用MFC+WinG+32Bit Assembly在Win3.1上写个类似Director3.0的Engine. UI及绘图引擎都完成,而且播放速度比Director 3.0还快.但卡在不知道如何设计Script及Interpreter.最后只好做罢.然而转捩点就发生在这一年:应台北电脑工会之邀,开门"Windows影音驱动程序剖析"课程而与童子贤先生有一面之缘(当副总的他竟跑来上我这无名小卒的课),也保留他一张名片.另外帮别人写Motion Control Card的Dos Driver来用在CNC上,对Driver开始发生兴趣,原来写Driver的利润颇丰.

第四年,黑暗的日子终于过去.参与IBM VisualAge for Basic的Visual Component开发,用VisualAge for C++ 3.0来coding,过了一段无任何相关资料的日子,还好从李维那拿到OpenClass source code,发挥tracing的精神,终于顺利结案.这年在某电脑展中遇上任职IBM的大学同学,被他讥笑还在米仓中当米虫,让我心理不好受.也使我思考,只会coding的我未来要何去何从,难道要过着一年换一个专案的日子吗?然后40岁时会变成怎样?(PetShop Boy的"Being Borning"在我脑中响起...).

幸好碰上一个影响我很大的同事,他那时也刚帮人写完一个Window 95的VxD,于是向他讨教,并学得如何收集相关资料,练好后就接个A/D,D/A卡的Win31/95 Driver CASE来做,写完Win95觉得不过瘾,便拿NT4.0 DDK来看.另外他有事没事拿ASIS电子周刊给我看,当时正报导PC97的specification:ACPI,AGP,OnNow等新技术,我看完就知道大好机会来了.凭做A/D, D/A卡Window Driver的经验,我知道随着Win95的普及,这些硬卡没有Win95 Driver根本很难卖到欧美.PC97规定了Intel的硬件设计如何跟Microsoft的Window做结合,而接口就是Window Driver!,加上主机板厂养的软件工程师只会写BIOS or 8051,对Window Driver根本是听都没听过,但PC97,98是必走的道路,所以一定要找到会的人来做.

而这时候我又要换另一资料库相关的专案(我最讨厌做MIS,成天与数据,报表奋战,有够无聊).于是上网路找工作,想到手头的童子贤名片,就试投华硕看看.没想到一试便上,(不过在面试时被嫌在资策会待太久,恐染上不良习性).进华硕后,感觉到是Right Man in Right Place.终于可以一展抱负,有明确的目标,不再虚度时光,也不会被别人嘲笑是米虫.更重要的是有成就感,想想做的专案,是要卖到全世界的产品,而且是与一些国际大厂竞争产品上市时间.再也不是作完往仓库一摆的东西.再者华硕目前员工人数少,业务扩展迅速,加上公司高级领导阶层非常重视研发实力,只要有能力的人,不怕没升迁机会.不像宏基已有太多员工,没什么表现能力的机会,且升迁管道太挤了

(2)学习DDK的过程

要学DDK首先要把Window的底层基础练的扎实.但一般人对学Window SDK都视为畏途,更何况是底层的东西.从Win31到Win95变化比较多得,我个人认为是:Multitasking,Plug&Play,Memory Addressing.有人问我说,Memphis都快出来, 还要花功夫看Win95 or Win31吗?, 我认为还是要!原因是:

a.Memphis不是完全重新改写,里面的一些观念还是沿用Win95.
b.目前市面上尚未有大师级的Memphis相关书籍,如果有也只是趁火打劫类型的书,而台湾的书商,作者最会搞这种把戏来A钱.如Win31/95方面已有一些大师的书籍,如Andrew Scrullman,Patt Metrick,Richard Jeffery,Walter O'ney,Charle Patzold等大师.你不去看大师级的书,反而去看"快快乐乐学Memphis","教你21天学会Memphis"这类垃圾书,真是在浪费你的时间及金钱.

学DDK的第一步准备功夫是把英文阅读能力练好,你别指望书商会出中译本.因这类书的卖相太差,比不上VB,Delphi,JAVA这类较大众化的书.再者要找到够格的译者很难.要译好是要花相当时间,那还到不如去写些轻松的书,稿费也赚得多.

接下来就要练基础工夫,如同张无忌花了6年时间练好九阳真经,等到练乾昆大挪移时只花数个时辰就OK.要如何练底层基础呢?勤看书,勤coding及Trace别人写得sample code而已.即使是天才型的Programmer也是要看书,因Window不是他设计的,必须了解Window才有办法下手.而非像写Algorithm方面的论文般,自己定assumption, Lemma,导出Theme,下conclusion就完成.所以一些刚入社会的研究生最好先调整自己的心态.

以往我是读一些大师级的书,如:
"Window Programing"的CharlePetzold,
"Undocument Window"系列的Andrew Scullman,
"Win95 system Programming Secrets"的MattPietrek,
"AdvancedWindows"的JefferyRichter.

期刊的话是:
Microsoft System Journal,
Doctor Dobb's Journal,
Window Developer Journal这本期刊是我认为学DDK的人必要订阅的!几乎过个1,2期就会刊登Window Device Driver相关的文章,而且里面有位Paula女士主持的NT专栏,写的很深入,不是市面一些标榜NT"大剖析"之类的书籍所能比拟.在Andrew Scrullman的"Undocument NT"尚未问世之前,它是我觉得最有深度的专栏.

接下来就谈与Driver有直接关系的资料:

Device Driver的书籍,我从Win31开始说起:
"Writing Windows Device Driver and VxD",Karen Hazzen,第1,2版是最适合写Win31 Driver的参考书籍.也有一本白皮的"Writing Window Device Driver",我认为它的参考性很低,因它光抄Win31 DDK Function Description就花了50~60几页,有A钱之嫌.

Win95:
那当然是首推"System Programing for Win95",Walter Oney.

这本巨作.我曾因翻Chapter11~13翻到书页掉落,而重新再买一本.Walter Oney既出,谁与争锋.有这本就够了!也没有人有胆来挑战他.

WinNT:
唯一的一本:"The NT Device Driver Book",Art Baker.很有系统的一步一步介绍如何写NT Kernal mode driver.先看这本书然后再看MS的NT DDK on Help会让你较容易了解.当初没这本书时,我刚开始看DDK Help是看得满头雾水.最好搭配"Inside Windows NT",Helen Custer一起看,因为NT底层已经导入Object Oriented观念(WDM是将NT Kernel mode driver 加装Plug&Play及Bus handle等新功能),与Win95的Virtual Machine观念相差甚远.这本书虽是1992年出版,但有对NT的核心运作加以介绍,也是一本难得的好书.

NewGroup and WebSite:
1.Win95是comp.os.ms-windows.programmer.vxd
2.NT的话是comp.os.ms-windows.programmer.nt.kernel-mode
3.Window Device Driver Web site:
http://www.albany.net/~danorton/ddk
http://www.vireo.com


发展工具:
1. 如何要让你日子好过,一定要有套SoftIce for Win95/NT.千万不要用MS的WinDebug,它根本是无山晓路用.SoftIce可让你用source code level debuging,对有assembly恐惧症的人是一大福音.(但我还是劝有心学DDK的人还是要摸assembly).

2.VToolsD(for Win31/95),DriverWork(for NT/WDM)
Vireo公司出的DDK Tool让你完全用C来写Driver,我只能说写Driver时,我已经不能没有它.由其它还免费附Class Library source code,让我Trace的很高兴.

领域知识(Domain Knowledge)
写Driver需了解你要控制的硬件,如Driver有用到DMA/Interrupt,建议你看一下8259,8237A的资料.在这方面,"微电脑接口技术与应用"是本不错的参考书. Programmer总有一天会coding不动的时候.但人老成精,只要你的Domain Knowledge够强的话, 还是会有许多公司请你去当技术经理, 而这也是你能克死年轻力壮Programmer最大的本钱. 多多看些其他杂志, 接触一些非Programming方面的知识来培养你的Domain Knowledge吧!

最后最重要的是:亲自动手做做做做做做做做做!
看资料是一回事,知道是一回事,做的出来又是另外一回事.公司请你来不是要听你长篇大论,或是发表多少篇论文.是要你做个会动,能商品化的东西.等你做下去,踢到铁板,又找不到别人问,也没有任何资料可帮助.再加上硬件没你写的Driver而无法出货时,那种滋味可是人间炼狱.我就遇上一次,东西都出到俄罗斯,德国的经销商时,结果发现Driver有Bug,无法顺利安装.老大放话说一星期内没解决,俄罗斯经销商就要取消订单(天呀!几百万美金的交易),我在想,如果到时解不掉就准备辞职.后来真是狗屎运.用一个非常另类的做法(骑摩托车在半路上想到的),解决这个Bug,保住订单也保住职务.说这则例子主要是奉劝一些自视甚高的在学研究生,不要以为顶着高学历,就可以在社会上一帆风顺(除非窝到学校或财团法人,政府机构内),也鼓励一些没有傲人学历的网友,只要有实力发挥黑手精神,照样可以当主管来管一群硕士工程师.

(3)未来可能的发展

看看WinTel PC98的规格,就知道以后会写Driver的人比较吃香,目前会用C,SDK写程序的人不多,更何况是写Driver,其实Driver并不难写,只是Learning curve很长,现在大多初学者怕难没耐心,都用VB,Delphi这类RAID Tool来写程序, 都快不知道SDK是何物.更不用说Window内部的运作.除非是走MIS路线,否则以后日子会很难过.就现实面来看:用VB,Delphi的人太多,老板要找个人来取代你的职务是很容易得.就盈余而论,国内做MIS的公司比不上做PC硬件,Chip set的公司,而且也没有股票可分,何苦去挤到经济规模小又人数众多的领域内.(但Year 2000对MIS工程师可是个大利多,只不过你还要会一些非常古老的程序语言,而不是懂VB,Delphi就没事).就我观察的结果: 目前主机板的软件工程师大都只会BIOS, 8051.根本都不懂Windows Driver.不要以为写个soft menu的BIOS就扬扬得意.等PC98正式上场就有好戏看.所以在这些公司中有有太多机会来让你表现自己的能力.


感想:
国内一些电脑作家实在是太好混日子,可以从VB写到VC,然后还可以"深入探讨"3D加速卡.流行VB就出VB的书,一本号称VC++/BorlandC++圣经的书,竟然都没提到MFC/OWL.而Windows95一出来,书摊又是一堆Win95圣经宝典之类的中文书.等着看吧,明年Memphis出来时又将旧事重演.不只如此,还故意标榜有博士学历或具有写作10几年的经验来烘抬自己的身价.有时我看了就一肚子火.不过这些人还不是照样继续A钱.真是......,而国内一些电脑杂志的水准,大家心理有数,不用我多讲.值得我佩服的,大概只有侯俊杰,不过最近一年他好像都只写MFC相关的文章书籍,没写些Windows内部运作的文章,不知这是否跟上次Matt Pietrek来台有关.
总归一句话:读者要自己小心,少碰一些"圣经,宝典. 最后,

祝大家能找到心目中理想的工作.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的DDK学习经验(转载) 的相关文章

  • Node.js + Socket.io + Windows 7 / 8?

    我一直在到处寻找 但似乎找不到解决方案 是否可以在 Windows 7 上的 Node js 上安装 Socket io 如果没有 是否有某种替代方案 或者您知道未来有任何 Windows 支持吗 通常使用 Node js 包管理器 但是我
  • 在 C# 中使用反射列出枚举中的值

    我正在尝试使用反射来列出一个 Visual Studio 解决方案内的各个项目中的一些类的公共成员和方法 我尝试访问的所有类都是 C 的 并且它们都是从 C 类访问的 我用来进行这些调用的代码如下 public void PopulateE
  • OSError: [WinError 193] %1 不是有效的 Win32 应用程序,同时使用 CTypes 在 python 中读取自定义 DLL

    我正在尝试编写用 python 封装 C 库的代码 我计划使用 CTypes 来完成此操作 并使用 Visual Studio 来编译我的 DLL 我从一个简单的函数开始 在 Visual Studio 内的标头中添加了以下内容 然后将其构
  • subprocess.Popen('start') 失败

    在 python 中运行此命令将导致 WindowsError 指出找不到指定的文件 FAILS import subprocess subprocess Popen start notepad exe 在命令窗口中 它可以工作 start
  • 在Delphi 7中,为什么我可以给const赋值?

    我将一些 Delphi 代码从一个项目复制到另一个项目 发现它在新项目中无法编译 但在旧项目中可以编译 代码看起来像这样 procedure TForm1 CalculateGP const Price money 0 begin Pric
  • TColorProperty德尔福柏林10.1.2?

    我正在尝试将组件从 Delphi 7 转换为 Delphi Berlin 平面组件 https sourceforge net projects flatstyle https sourceforge net projects flatst
  • 使用项目中的波形文件

    我目前只能通过将波形文件放在已编译的 exe 旁边来播放背景声音 但我实际上想要一个包含波形文件的静态可执行文件 这在Delphi XE2中可能吗 这是我的代码 SndPlaySound Raw wav SND ASYNC or SND L
  • “此应用程序已请求运行时以异常方式终止它”的原因是什么?

    Visual C 运行时抛出一个常见错误 此应用程序已请求运行时以异常方式终止它 请联系应用程序的支持团队以获取更多信息 该错误消息实际上是什么意思mean 让我用一个比喻来准确地解释我的问题 如果我看到一条消息 异常 访问冲突 0xc00
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • Boost + Visual Studio 2010 + Windows 平台 SDK 7.1

    有人可以告诉我 bjam 的命令行开关或其他可以使用新的 Windows Platform SDK 7 1 工具链使用 VS2010 进行 boost 编译的东西吗 您可以在普通的视觉工作室项目中设置该选项 默认值是 v100 是平台 7
  • PostgreSql“运行安装后步骤...数据库集群初始化失败”

    我是一名 Windows 用户 我花了几个小时不断地安装和卸载 然后才使其正常工作 前 10 次左右才看到标题中的错误消息 我将其作为一个自我回答的问题放在这里 以防止其他人在安装时可能遇到同样的问题 并为像我这样第一次使用 Postgre
  • 如何使用 python 在 Windows 中禁用/启用特定 USB 端口? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在图形窗口中创建一个切换开关 可以使用 python 禁用 启用 Windows 中的特定 USB 端口 我可以使用哪个外部命令或
  • MinGW Make 抛出“系统找不到指定的路径。”错误

    我正在尝试在 Windows 7 上使用 cmake 生成一个 c 项目 在实际创建项目之前 cmake 会对您的工具链进行快速测试 我正在使用 MinGW 这就是我的问题所在 Cmake 触发 make 构建 最终失败并返回 系统找不到指
  • 如何使用 FieldDefs 在运行时创建新的 SQLite 文件和表?

    我正在使用 Delphi Seattle 在全新的 SQLite 文件中创建一个全新的表 并且仅使用 FieldDefs 和非可视代码 我可以使用 ExecSQL CREATE TABLE 语法创建一个表 但不能如下所示 我得到 没有这样的
  • 长多字节 NOP:通常理解的宏或其他符号

    x86 和 x86 64 处理器不仅具有单字节 这不是什么大秘密NOP指令 还包括各种类型的多字节类 NOP 指令 这些是我设法找到的 AMD 推荐 参考 AMD 系列 15h 处理器的 AMD 软件优化指南 文档 47414 http s
  • Delphi中使用FindVCLWindow调用WinHelp32(WinXP Pro SP3 32bit)

    有什么问题吗 procedure TForm1 VCLHelpClick Sender TObject var Ctrl TWinControl begin Ctrl FindVCLWindow Mouse CursorPos if Ctr
  • 在Windows 7上安装curl后缺少libcurl-4.dll

    按照这个人的安装curl后指示 https stackoverflow com a 28757477 1186038 除了第 2 步 已安装Win64 OpenSSL v1 0 1u 轻型相反 因为下载页面中缺少版本 k http slpr
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 在 Delphi 或 C++ Builder 中使用 Chromium Edge WebView2 [重复]

    这个问题在这里已经有答案了 既然 Microsoft Chromium Edge 已经最终确定 是否可以在 Delphi 或 C Builder 中使用它 据我了解 它是基于WebView2成分 是否有一个组件 例如TWebView2或者E
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • xss-labs-master 第六关到第十关通关

    要想看前面的五关请看xss labs master 第一关到第五关通关 Level 6 进入题目废话不多说 上来就是一个test测试一下会不会变化 可以看到提示信息有输入的内容 昨天我想了一个可以看到JS变化的代码 话不多说直接上
  • Navicat 链接 MongoDB

    安装完毕后修改配置文件 vim etc mongod conf 默认127 0 0 1为只允许本地连接 0 0 0 0为不限制 多个指定服务器用 连接 bind ip 0 0 0 0 启动 mongod 启动命令行 gt systemctl
  • Android关于libs,jniLibs库的基本使用说明及冲突解决

    最近在开发中遇到了一个问题 因为项目需要集成不同的sdk 相对应的也是不同的 so文件 针对libs中 so库的引入会遇到一些问题 比如要集成第三方NDK库 如果是在eclipse中 需要放到libs下对应库的目录 如果是在Android
  • OpenCV人脸识别C++源码分析

    include cv h include highgui h include
  • OSTaskStkInit():任务堆栈结构的初始化

    转载请注明出处 http dreamlcr cublog cn OSTaskStkInit 任务堆栈结构的初始化 OSTaskCreate 和OSTaskCreateExt 通过调用OSTaskStkInit 初始化任务的栈结构 因此 堆栈
  • Something old,something new,something borrowed,something blue

    Something old something new something borrowed something blue 有旧 有新 有借 有蓝 的婚礼习俗已经有好几百年的历史了 许多新娘在她们举行婚礼的当天都曾被问到是否已经备好了那些
  • 区块链落地的必需工具——预言机(Oracle)

    在 经济学人 杂志中对区块链的定义 区块链是信任的机器 区块链最大的核心创新在于去中心化的解决信任问题 不需要再去信任和依靠第三方机构的情况下进行价值转移 其中 智能合约起到了重要的作用 它是一套数字形式定义的合约 帮助合约参与方执行完成任
  • kali linux 安装python 3xx 以及多版本切换的方式

    简介 在渗透测试的时候 我们通常会用到不同的工具 这些工具可能对python的版本要求不一样 这个时候我们可能就需要在kali上面安装不同版本的python 以及灵活的切换python的版本 下载python3并安装 以python38来举
  • flutter 沉浸式状态栏

    padding new EdgeInsets all 0 0 加上这句就可以 具体原因不知 希望大佬解答
  • 你不知道的JavaScript----混合对象 ”类“

    目录 类的概念 类理论 类设计模式 类的机制 类的继承 类的多态 混入 显示混入 使用call绑定this 隐式混入 类的概念 类的设计模式 实例化 继承和 相对 多态 封装 把实现某个功能的代码进行封装处理 后期想实现这个功能 直接调用这
  • Say No to Palindromes

    Say No to Palindromes 题意 给一个长度为n的字符串 只包含abc三种字符 现在有m次询问 每次询问给出l r 问l r需要操作几次使得其不包括长度大于等于2的回文子串 每次操作可以改变一个字符 当然 只能在abc三种字
  • Hexo博客搭建部署GitHub

    Hexo博客 Hexo是一个简洁的静态博客页面 使用markdown渲染文件 在本地生产静态文件后可以部署到GitHub上 这样不需要占用自己的域名和服务器 其实我在很早之前就换用了hexo 原来的博客在csdn oceansec blog
  • 云计算技能大赛 -- openstack私有云环境 第一部分

    原文博客地址 1 配置信息 注 文章中所用 中的内容皆为提示 如 controller AND compute 表示 此命令在两台节点都需要执行 使用 VM 虚拟机进行实验 主机名 IP地址 controller 内网 仅主机模式 192
  • 关于Linux内核,推荐的8本书籍

    推荐几本高质量的Linux内核的书籍 第一本 Linux内核设计与实现 基于Linux 2 6内核介绍了Linux内核的设计与实现 涵盖了从核心内核系统的应用到内核设计与实现等各方面内容 主要内容包括 进程管理 调度 时间管理和定时器 系统
  • 2、认识常见网络设备

    交换机简介 交换机 Switch 是一种基于MAC 网卡的硬件地址 识别 在网络中 交换机是一种硬件设备 用于过滤和转发网络数据包 从一个网络设备 交换机 路由器 计算机 服务器等 到另一个设备 它广泛用于局域网 LAN 通过查看物理设备地
  • leetcode刷题(9)二叉树(3)

    各位朋友们 提前祝大家五一劳动节快乐啊 今天我为大家分享的是关于leetcode刷题二叉树相关的第三篇我文章 让我们一起来看看吧 文章目录 1 二叉树的层序遍历 题目要求 做题思路 代码实现 2 从前序与中序遍历序列构造二叉树 题目要求 做
  • 合并两个有序数组 java_Leetcode.合并两个有序数组(Java实现)

    合并两个有序数组 给定两个有序整数数组 nums1 和 nums2 将 nums2 合并到 nums1 中 使得 num1 成为一个有序数组 说明 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 你可以假设 nums1 有
  • 最强自动化测试框架Playwright(32)-定位器

    定位器是playwright自动等待和重试能力的核心部分 代表了一种随时在页面上查找元素的方法 Locator Playwright Python 方法 all 当locator指向一组元素时 这个方法返回locator对应的数组 指向它们
  • 无刷电机驱动器

    0 0参考 FOC 看这篇文章就够了 志辉君 自制FOC驱动器 深入浅出讲解FOC算法与SVPWM技术 SPWM基本原理详解 图文并茂 公式推导 C程序实现 1 开源的FOC方案 1 SmipleFOC是比较常见的无刷驱动方案 因为其便宜的
  • 我的DDK学习经验(转载)

    这篇文章在无数技术网站都找的到 我在这里发这篇文章的原因 1 这篇文章实在很好 别说作者倾情的介绍了自己的经验和感想 尤其是关于 钱途 的感想 里面介绍的一些书 真够有志开发驱动程序的同志看半辈子了 2 我搜索了文档中心 没有发现这篇文章