尾记,是结束,更是开始

终于,当敲下这两个字后,我发现自己终于写完了,虽然仅仅可以算作初稿,虽然质量文笔组织结构等还有待提升,但我确实是按原计划写完了。在此之前,我别说写书,连稍微长一点的文章都没写过,因此内心难免会激荡一阵。

这本书的主体结构对应着我的一个培训课件,当然不管是内容或深度都极大延伸了。原本我仅是希望听我培训的朋友能有一份资料去复习加深,但当我展开目录结构的那一刻,我意识到自己实际上是在写一本书。

虽然现在市面上各类书籍已如过江之鲫,但自己从未尝试过,内心还颇有点忐忑。碰到难题我习惯分解大法,我给自己定了一个小小的目标:不论长短,每周写一小节。光阴荏苒,倏忽已过大半年,回头看,我已写了50篇长文,近20万字,内心竟然有点小激动。

写书是一种交流,不仅是在和读者交流,更是在和自己交流。原先同别人分享时,我总有零碎散乱不成体系之惑,通过本书,我不仅将自己多年的探索连线织网,而且还诱发了很多思考,在诸多方面得以更进一步。有时,当我试着回头阅读自己最初的文字时,会轻易发现很多内容应该有更好的组织,或者有更好的素材。因此,后续有空,我计划先将整篇初稿在细细的修订整理一遍,然后在重新分享给大家。

分享容易,写书也不难,真正难得是实践之路。真实的工作受限于各种约束条件,没钱、没人、没时间,出风头还容易被打击,能勉强完成各项工作任务已经颇为难得,还要持续改善原有的工作模式,每前进一步都会异常艰难。

如何帮助大家在实践之路上能更进一步呢?纸上得来终觉浅,绝知此事要躬行,我思前想后,我认为大家需要一个真实项目去真实触摸本书中的各种观点。实际上,为了内容组织方便,本书第四章已经引入过一个虚拟产品,但限于本书篇幅和组织结构约束,我没法按照真实项目的研发过程去展开。

因此,我计划开始从头构建一个虚拟产品,侧重产品研发阶段(也即会放弃立项、需求、验收等过程),有架构设计,有接口分析,有具体模块编码和单元测试,有集成测试等。该虚拟产品以第四章引入的产品为基础,采用本书的理念去组织研发过程。为了更大的适用性,该产品会包含一些工业plc、强实时、OS、通讯管理接入、二次开发、代码高复用等很多现代工业产品特性。我个人猜测,有这样的“真实”产品协助,大家能更容易理解本书中的诸多概念。

这应该是一个繁琐、庞杂而耗时的任务,但就如同写书一般,不妨先整体规划,然后日拱一卒,总有完成的那一天。也希望感兴趣的朋友,能够参与到其中,相信自己,你会长成你期望的样子。在具体实施过程中,一些实施内容,如需求整理、架构设计、知识库、测试脚手架等,我会以附录的形式组织在本书中,会以不定期的方式更新。

最后,额外补充一点,本书内容对应着我的系列培训课程,如仅看书有抽象或发虚的感觉,不妨联系我以公司为单位组织线下面对面的交流培训,再结合大家真实研发产品讨论,事半功倍。

——————————————

返回目录

我是小马儿,一个渴望良知与灵魂的嵌入式软件工程师,欢迎您的陪伴与同行,如需最新版PDF电子书,或期望深入交流,可加我个人微信nzn_xiaomaer,需备注“异维”二字。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当查询双向链表中的数据时,可以通过记录上一次查询时最后访问的节点位置以及下一次查询时数据相对于最后访问节点的位置来确定从头还是从尾进。如果上一次访问的节点是靠近链表头部的节点,且下一次查询的数据在链表头部的位置靠前,则可以从头部进入链表来查找数据,反之则从尾部进入链表。如果上一次访问的节点是靠近链表尾部的节点,且下一次查询的数据在链表尾部的位置靠后,则可以从尾部进入链表来查找数据,反之则从头部进入链表。这样可以最大程度地减少链表遍历的时间,提升查询效率。 ### 回答2: 在双向链表中,可以通过判断查询的数据与当前节点的位置关系来确定是从头节点还是从尾节点开始查询。一般情况下,我们从头部开始顺序遍历链表,直到找到目标节点或者遍历到链表末尾。但是,如果我们知道要查询的数据在链表的后半部分,那么从尾节点开始查询会更高效。 具体判断的方法是: 1. 从头部开始查询:将目标数据与当前节点的数据进行比较。如果相等,则找到了目标节点;如果目标数据大于当前节点的数据,则继续遍历下一个节点;如果目标数据小于当前节点的数据,则表示目标节点不存在于链表中。 2. 从尾部开始查询:首先从头节点开始遍历到链表末尾,记录链表长度。然后将目标数据与当前节点的数据进行比较。如果相等,则找到了目标节点;如果目标数据小于当前节点的数据,则表示目标节点不存在于链表中;如果目标数据大于当前节点的数据,则将尾节点视为当前节点,以相反的方向(向前)遍历链表,找到目标节点。 总结起来,可以根据目标数据与当前节点数据的关系,确定是从头部开始查询还是从尾部开始查询。从头部开始查询是常规操作,适用于大部分情况;而从尾部开始查询可以提高查询效率,适用于目标数据在链表后半部分的情况。 ### 回答3: 双向链表是一种数据结构,每个节点都包含数据项以及指向前一个节点和后一个节点的指针。在查询数据时,我们可以通过判断起始节点和结束节点和要查询的数据项的关系来确定是从头部还是尾部开始查询。 首先,我们可以从头部开始遍历链表,将起始节点设置为链表的头节点。然后,我们逐个比较节点的数据项和要查询的数据项。如果找到了匹配的数据项,说明从头部开始查询的数据项存在于链表中,可以结束查询。 如果在头部查询过程中没有找到匹配的数据项,我们可以转向尾部开始查询。此时,我们将起始节点设置为链表的尾节点,并逐个比较节点的数据项和要查询的数据项。如果找到了匹配的数据项,说明从尾部开始查询的数据项存在于链表中,可以结束查询。 如果在尾部查询过程中依然没有找到匹配的数据项,说明该数据项不存在于链表中。 总之,通过按照从头部开始查询的方法,如果找到匹配的数据项,则说明是从头部进入的;如果在头部查询过程中没有找到匹配的数据项,再按照从尾部开始查询的方法,如果找到匹配的数据项,则说明是从尾部进入的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值