没头没尾--项目开发笔记:如何开发代码更新工具?!(上)

经验分享:如何快速上手公司的项目代码 新人如何快速熟悉新项目和业务 阅读详情

 

   12月31号:2002年的最后一天,天气不错!!希望明年天天都是好天气,也希望所有的IT从业人员新年好,天天快乐!

 

好长时间没有更新项目笔记了,并不是因为我们的项目没有什么进展。而是我要期末考试!郁闷。昨天好不容易考完了我最怕怕的English. 总算可以重新开写项目笔记罗。

上篇的项目笔记有朋友问我们代码如果始用自动生成之后,如何进行更新?如何保留生成地代码变化部分?这篇文章主要是讲讲这方面的内容。如果对代码生成工具不了解,可以参考以前的项目笔记。

http://www.youkuaiyun.com/develop/author/netauthor/ViktorYu/

 

以下所写的部分还是实现“异常处理与日志记录代码自动生成”文章中所说的功能,实际上要在一堆的Web Service代码文件中加入或更新代码的过程为例,说明代码生成工具与代码更新工具的开发与使用。

l         代码生成时对应生成的代码特殊规则

一段使用代码生成工具植入的代码是否可以进行整个文件修改之后的重新更新,最为关键的一点是你的代码更新工具是不是可以定位此段的代码,以及生成的代码是不是已经被破坏。所谓破坏是指明生成的代码已经被各个开发人员进行了个性化的修改,无法使用统一的规则进行更新处理。换句话说,你在设计要植入的代码时就需要对代码进行比较细的拆分,使得植入的代码保证原子性。这就要求在生成代码时,必须要对代码加入一些对应的规则。这一篇主要讨论比较简单的代码更新,可能还用不要这些特殊的规则,以后将会讨论比较复杂的代码更新,将会对生成的代码的规则做出更加细致的字义。这种情况下更新的数据可以只更新预先定义好的部分,并可以保留目标代码文件中其它的部分。

 

l         代码更新的原则与方案

下面分别从代码更新所需要的输入原则,代码更新的替换原则,以及有代码更新的最后所要输出的原则讨论代码更新的原则与方案。

代码更新工具的过程简单来说是两个步骤:第一步是找出被更新文件中是否要更新的那部分代码;第二步是将新的代码替换那部分要更新的代码。这里我使用了一个XML格式的模板文件来记录文件基本信息,被更新的代码,以及新的要植入的代码。

Ø         代码更新的输入

代码更新的输入包括两个部分:

²        原始文件(目录)

原始文件存放的地方,可以通过原始文件目录的搜索找出所有要进行代码更新的文件。比如我所参与的项目中,我将所有的Web Service文件放在c:/inetpub/wwwroot/projects之中,我要修改的是所有的以后缀名为.asmx.cs(Web Service在我们的项目中采用的C#进行开发的,其它的具体情况可以参见以前的文档)的文件。那么原始文件输入为c:/inetpub/wwwroot/projects,我将通过遍历目录结构的方式,将所有的Web Service的文件找出,并执行代码更新的工作。

²        模板文件

模板文件为代码更新提供了被更新的代码的版本,新植入的代码的版本,以及使用这个模板文件的标识。下面是我的模板文件的一个例子:

TryandCatch.XML文件:

<?xml version="1.0" encoding="gb2312" ?>

<CodeTemplate>

<TemplateTag>

//**?? 已经使用TryandCatch.xml模板文档  ??**//

</TemplateTag>

<CodeSession value="Try">

        <oldsource>

            //**严禁修改以下代码**//

            //insert trytry

            //**严禁修改以上代码**//

        </oldsource>

        <newsource>

    //**严禁修改以下代码**//

    //insert try

        try{

    //**严禁修改以上代码**//

        </newsource>

 

</CodeSession>

<CodeSession value="Catch">

        <oldsource>

            //**严禁修改以下代码**//

            //insert catchcatch

            //**严禁修改以上代码**//

        </oldsource>

        <newsource>

    //**严禁修改以下代码**//

    //insert catchcatch

        }

        catch(CommonException e){

            return e.ErrorObject;

        }

        catch(Exception e){

            try{

                throw new ExceptionHandler.CommonException(e);

            }

            catch(CommonException ee){

                return ee.ErrorObject;

            }

        }

        finally{

        }

    //**严禁修改以上代码**//

        </newsource>

</CodeSession>

</CodeTemplate>   

上面的XML模板文件中,一共有两种节:

1.<TemplateTag>

<TemplateTag>节中间的内容代表是不是本模板的内容已经被植入了目标代码文件中,如果目标代码文件中没有找到<TemplateTag>节中的内容,则可以判断出目标还没有植入本模板的代码,那么直接使用<newsource>中的内容植入;如果目标代码文件中没有找到<TemplateTag>节中的内容,则可以判断出目标已经植入本模板的代码,那么使用<newsource>中的内容替换<oldsource>中的内容。

2.<CodeSession>

每一个CodeSession中的内容存放了以前植入的代码,本次需要植入的代码。以前值入的代码放在<oldsource>中,本次需要植入的代码放在<newsource>中。当需要对代码进行替换时,可以只需要修改模板文件(将原来的<newsource>节中的内容拷贝到<oldsource>节中,然后将需要新植入的代码放入<newsource>节中),再重新执行一次代码更新工具就可以了。

(待续下篇http://www.youkuaiyun.com/develop/article/16/16309.shtm)

超级好用的开发笔记记录工具推荐 这篇笔记为开发者推荐了四款高效笔记工具: Boostnote:支持多语言代码高亮、任务进度追踪,适合代码收集与轻量文档 Yank Note:集成VS Code编辑功能,支持绘图与版本控制,适合技术文档撰写 Dendron:VSCode插件,知识图谱式管理,适合大型项目文档 TakeNote:极简网页版,隐私优先,适合临时记录 根据需求推荐:效率选Boostnote,开发集成选Yank Note/Dendron,临时记录用TakeNote。所有工具均免费开源,适配不同开发场景。 阅读详情

相关推荐

APICloud项目开发的APP二次更新 和 APICloud Studio工具的使用讲解

一、项目类型是APICloud开发的: 二、命令运行将项目跑起来: 1、当你执行 npm install 报错: 解决: (1)在package.json文件里面添加这句: "optionalDependencies": { "fsevents": "*" } (2)再执行 install --no-optional --verbose 2、当你再执行 npm run build 报错: 如图: ...

weixin_45276056的博客 1579

没头没尾--项目开发笔记:如何开发代码更新工具?!(下)

 (接上篇http://www.youkuaiyun.com/develop/article/16/16299.shtm)Ø         代码更新的替换过程代码的更新的过程主要是搜索对应的文件的目录,将所有的目标文件找出,将目标文件读入字符串,根据模板文件内容对目标文件进行处理。下面是个简单说明:1.读入输入模板文件,读出TemplateTag,读出各个CodeSession存入对应的数据

ViktorYu的专栏 1656

小程序开发工具代码热更新

在小程序开发中,“改一行代码就要重新编译、重启应用”的时代早已过去。本文将聚焦“代码热更新”这一小程序开发工具的核心功能,覆盖其原理、使用技巧、常见问题,以及未来趋势,帮助开发者从“被动使用者”变为“主动理解者”。本文将按照“生活故事引入→核心概念拆解→原理流程图解→实战操作指南→未来趋势展望”的顺序展开,确保从感性认知到理性理解无缝衔接。热更新(Hot Reload):修改代码后,无需重启应用即可看到界面或功能变化的技术。增量更新。

小程序开发 1686

微信开发者工具:代码更新后页面未刷新

微信开发者工具代码更新后页面未更新。只用通过手动点击编译才可更新页面尝试过稳定版 16、15 版本均未解决项目配置:Taro3 + React17 + Node18 + @antmjs/vantui 开发者工具版本:1.06.2204250开发者工具的代码热重载未起到作用1、找到开发者工具 -> 本地设置 -> 启用代码自动热重载选项。关闭它 2、重新启动项目即可...

zc135565的博客 6276

手把手教你用Python分析OpenFAST仿真结果:pyDatView处理.out文件与数据可视化技巧

本文详细介绍了如何使用Python中的pyDatView工具分析OpenFAST仿真结果,包括数据加载、质量检查、时域与频域分析、多工况对比及自动化报告生成。通过优化技巧和可视化方法,帮助工程师高效处理.out文件,提升风机性能分析的准确性和效率。

weixin_29311017的博客 183

UOS系统手动添加1920x1080分辨率:xrandr命令详解与持久化配置

本文详细介绍了在UOS系统中使用xrandr命令手动添加1920x1080分辨率的方法。针对系统设置中缺失该选项的常见问题,文章提供了从识别显示设备、使用cvt生成模式、添加并切换分辨率,到通过修改.profile文件实现持久化配置的完整步骤。同时涵盖了虚拟机环境、设备名识别及排错等进阶内容,帮助用户彻底解决UOS分辨率配置难题。

weixin_29300931的博客 499

笔记与开发工具推荐

程序员的笔记与开发工具推荐前言笔记工具1. 飞书优点:缺点:预览效果个人评价2. Obsidian笔记软件优点:缺点:个人评价3. jupyter notebook优点:缺点个人评价4. BookxNote Pro电子书阅读软件优点:缺点:个人评价开发工具1. API Post 前言 曾今有一段时间,在网上找笔记软件找疯了。笔者几乎试过了市面上所有的笔记软件,无法完全满足自己的需求。当时最终选择的是印象笔记,因为功能上算是相当惊艳了,但可惜的是,印象笔记兼容最好的是mac系统,其它系统上使用功能都是缺这少那

dorlolo的博客 1万+

海康安防平台接口调试指南:从签名生成到Vue项目集成

本文详细解析了海康安防平台接口认证规则,从签名生成到Vue项目集成的完整流程。通过核心机制解析、签名工具使用技巧及Vue项目中的优雅集成方案,帮助开发者高效完成接口调试,避免常见问题。特别适合需要将海康安防平台接口集成到Vue项目中的开发者参考。

weixin_42533120的博客 438

微信开发者工具提交代码到git

结合上一章节,从git上获取并添加依赖,本章为git版本管理 一、怎么上传代码到码云仓库 1、新建一个空的代码库,并复制一下HTTPS链接 2、打开微信开发者工具客户端 --- 版本管理 --- 初始化Git仓库 -- 默认初始化就可以 3、点击 --- 设置 -- 网络和认证 -- 填入码云的账号和密码 4、点击 --- 设置 -- 远程 -- 添加 5、点击抓取 6、点击重置到上一个版本 7、重置到上一个版本后,工作区会显示需要提交的文件,填入相...

znoone的博客 8327

不止于HTTPS请求:用VS2022编译的libcurl玩转文件上传和代理设置

本文详细介绍了如何使用VS2022编译的libcurl库实现文件上传和高级代理配置。通过实战代码示例,展示了多部分表单上传、二进制数据上传以及各种代理设置技巧,帮助C++开发者提升网络编程能力。

weixin_28595749的博客 206

Vue2+OpenLayers动态绘制两个经纬度并计算距离(提供Gitee源码)

动态绘制两个经纬度并计算它们之间的距离。

黄团团的个人博客 366

OPNsense 更新工具项目推荐

OPNsense 更新工具项目推荐 项目基础介绍和主要编程语言 OPNsense 更新工具是一个专门为 OPNsense 防火墙系统设计的开源项目,旨在提供一套完整的固件升级工具。该项目基于 FreeBSD 操作系统,主要使用 Shell 脚本语言进行开发,同时也包含部分 C 语言和 Roff 语言的代码。 项目核心功能 opnsense-update: 这是一个统一的命令行工具,用于简化 O...

gitblog_00692的博客 689

基于YOLOv5/v8/v10的答题卡填涂识别与评分系统(附数据集+UI界面+完整代码)

在教育信息化的大背景下,传统的手工阅卷方式正在被智能化技术所取代。答题卡识别作为标准化考试的核心环节,其准确率和效率至关重要。本文将详细介绍如何利用YOLO系列目标检测算法(YOLOv5、YOLOv8、YOLOv10)构建一个答题卡填涂识别与评分系统。文章从数据集的制作与标注开始,逐步深入到模型的训练、评估与对比,最后基于PyQt5设计了一个用户友好的桌面端UI界面,实现了从图像输入到得分输出的全流程自动化。

YOLO 635

git项目多分支协同开发提交以及更新代码的方法

git项目多分支协同开发提交以及更新代码的方法

u013712343的博客 1014

华为OD机试2025A卷 - BOSS的收入(Java & Python& JS & C++ & C )

华为OD机试2025A卷 - BOSS的收入(Jav一个XX产品行销总公司,只有一个boss,其有若干一级分销,一级分销又有若干二级分销,每个分销只有唯一的上级分销。规定,每个月,下级分销需要将自己的总收入(自己的+下级上交的)每满100元上交15元给自己的上级。现给出一组分销的关系,和每个分销的收入,请找出boss并计算出这个boss的收入。输入:分销关系和收入:[[分销id 上级分销id 收入], [分销id 上级分销id 收入], [分销id 上级分销id 收入]]输出:[boss的ID, 总收入]

算法大师! 1171

置顶必读(2) |《YOLOv8实战:从入门到深度优化》总目录导航 & 学习路线指南(持续更新中)

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 28万+

代码 热更新_Java代码热更新工具,节省宝贵开发时间

Java代码热更新工具,节省宝贵开发时间一、背景在平时的开发过程中,开发流程一般是,编写/修改代码 -> 编译/打包 -> 部署/重启服务 -> 测试刚才的代码 -> 编写/修改代码 -> 编译/打包...这样的一个循环。常见问题场景下面的场景是否很熟悉呢?小明: 小张,我这个接口开发好了,在测试环境部署好了,你调用下吧。小张: 小明,这个请求结果不对,bl...

weixin_39631649的博客 848

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

小红书MCP工具更新,AI搜索笔记一键导出!

小红书MCP工具更新,新增搜索笔记功能,支持关键词搜索图文、视频笔记,可按最新、最热排序。同时新增本地文件获取工具,优化用户笔记列表功能,支持指定数量或全部数据导出。工具借助AI提升搜索效率,助力用户高效获取与分析小红书数据。

为Ai痴狂 1838

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Delphi在线升级自动更新工具:一键实现项目自动更新,提升维护效率

Delphi在线升级自动更新工具:一键实现项目自动更新,提升维护效率 去发现同类优质开源项目:https://gitcode.com/ 在软件开发领域,确保软件始终保持最新状态是提高用户体验和系统安全性的关键。Delphi在线升级自动更新工具正是为满足这一需求而设计。以下是这款工具的核心功能及场景介绍。 项目介绍 Delphi在线升级自动更新工具,是一款专门为Delphi项目定制的自动更新服务工具...

gitblog_06784的博客 1026

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

❤️ 程序员【代码管理】工具介绍❤️,热门语言更新这么快,你绕不过这一关的!

上次讲了2个游戏源码 前端实战之js推箱子游戏(有界面、附源码、赞关藏) Python实战:五子棋小游戏,切身感受一下前端和桌面应用的区别,选择自己喜欢的 本来今天准备写一篇面向对象文章,但是想一想,讲面向对象之前还是先给大家介绍几款实用的工具,更加快速的理解,掌握知识点。 1.UML 统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序

junior5的专栏 1万+

应届生必读:Java真实项目的开发流程和常用工具

商业项目经验是Java求职者技能的最好背书,所以在面试过程中证明自己的商业项目经验尤为重要,但不少Java程序员,尤其是商业项目经验不多的程序员,在面试过程中往往表现得像零商业项目的求职者一样,无法有效地通过项目细节来证明自己的经历。本章系统讲述了Java商业项目的开发流程流程以及项目开发时经常会用到的组件和工具,在之后的章节,将会在此基础上,具体给出如何证明商业项目经验的详细说辞和面试准备技巧。13 粉丝福利最近很多同学问我有没有java学习资料,我根据我从小白到架构师多年的学习经验整理出来了一份。

sinat_53467514的博客 2457

效率对比:传统vsAI开发Win10更新工具

在开发过程中,我分别尝试了传统手动编码和AI辅助开发两种方式,发现效率差异非常明显。最重要的是,整个过程不再需要反复折腾环境配置,可以专注于核心功能的实现。:使用AI工具可以立即获得功能实现的示例代码,省去了大量查阅文档的时间。:遇到问题时,AI能立即提供修正建议,避免了传统开发中"遇到问题-搜索解决方案-尝试修复"的漫长循环。:不同版本的Windows10对更新机制的处理略有差异,需要为每个主要版本编写特定的处理逻辑。:AI辅助开发的反馈模块集成更完善,支持自动收集系统环境信息,便于问题诊断。

AmberLeopard26的博客 630

nbterm开发者指南:如何为终端笔记本工具贡献代码的完整教程

nbterm是一个创新的终端工具,它允许你在命令行中直接查看、编辑和执行Jupyter Notebooks。这个终极指南将教你如何为这个强大的终端笔记本工具贡献代码,无论是修复bug、添加新功能还是改进用户体验。 ## 🔧 开发环境搭建指南 首先,你需要克隆项目仓库并设置开发环境: ```bash git clone https://gitcode.com/gh_mirrors/nb/nb

gitblog_01033的博客 595

microparse:CPU微代码更新解析工具

microparse:CPU微代码更新解析工具 项目介绍 microparse 是一个用 Python 3.x 编写的微代码更新解析器,支持 AMD、Intel 和 VIA 处理器。该工具能够从多个源获取微代码更新二进制文件,并进行分析,方便用户及时更新和优化 CPU 的运行效率。 项目技术分析 microparse 利用 Python 3.x 的强大功能,对 CPU 微代码进行高效解析。它能够从...

gitblog_00032的博客 570

Xamarin/vs开发Android笔记案例下载介绍:掌握Android开发新技巧

Xamarin/vs开发Android笔记案例下载介绍:掌握Android开发新技巧 去发现同类优质开源项目:https://gitcode.com/ Xamarin/vs开发Android笔记案例下载介绍,为开发者提供一站式Android开发学习资源。以下是项目的核心功能及场景介绍。 项目介绍 Xamarin/vs开发Android笔记案例下载介绍是一个专注于Android开发的学习项目。本项目...

gitblog_06746的博客 815
上一篇: 没头没尾--项目开发笔记:如何开发代码更新工具?!(下)
下一篇: 没头没尾--项目开发笔记:怎样选择项目开发语言?!
ViktorYu
博客等级 码龄24年 2粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值