开源代码的使用 二次开发
开源开发,就我的理解,有三种。
1、当作底层基础,使用。例如大家使用mysql就算。有人会认为我说错了。但我认为,开发不代表就是要同一个语言,甚至修改代码。例如我们使用动态库,原先的动态库是什么写的并不重要。重要的是作为自己的组成部分。你即便用mysql的接口甚至命令,去实现系统,也算是二次开发。
2、作为参考设计,这通常是在针对标准的实现上。这类代码,本身最大的价值是作为一个对比版本,检验自身的代码的正确性使用。如果都打算推倒重写了,要么原先代码很烂无法实用化,要么你的目标任务更明确,针对特定任务类型,你有更好的求解方式。
3、作为整体,局部修改,或引出新的分支。这类情况前者很常见,后者不常见。但通常更有意义的在于你的修改能符合规范并且纳入版本中,因为一旦开源代码的版本调整,而你只是修改而自行发布,这产生了统一和分裂的矛盾。主要功能希望统一,但代码实现存在分裂。
针对上述三种不同的情况,对代码的使用和学习分以下几种方式:
1、代码不看,或最多在实际应用中去局部理解,主要是为了更好的了解开源的底层是规模和情况,便于你的系统确定目标范围。
2、代码需要看,但以理解为主,主要是针对函数的目标进行理解,而不是针对函数内部实现进行理解。
3、这个比较痛苦,需要对函数内的代码进行理解,特别是跨模块(C文件作用域)的变量,函数的理解。
你要先搞清楚,你打算干什么才能针对目标进行不同模式的开源处理。
以上三种方式我都折腾过。但方法还是不太一样。
对于第一种方式我就不说了,很简单你去用就行了。如同你怎么学mysql就怎么来。下面说下后面两种方法的不同。
举例:
重写代码。我折腾过两套系统(都是好几年前的故事),1套是JM系列和X264系列,针对H264标准,而出的代码,前者不算真正开源,后者算。另一套,是国家标准AVS,有个类JM的代码。曾经骂JM的代码有多烂,看了国家标准AVS的参考代码,才知道什么叫学生水平(我甚至怀疑就是国内的普通没有代码设计能力的非专业程序员级别的研究生写的)
这类开源的代码理解,是通过输入输出数据,在运行态下,分析代码。
另一类,是我目前在做的,对GIT的代码的二次开发。但是这类,我暂且不会考虑对GIT的后续版本的统一问题。因为我的目标是多文件,多用户权限的分布式版本管理系统的开发,而GIT对多权限貌似支持并不好。所以我也无法统一,这是没有办法的办法。对这类的二次开发,确实比较痛苦,主要是针对独立的行为的一一理解和分析 。
对代码的理解,也是反复调整局部变量或结构,以判断实际效果的方式来处理。理解代码后,后续的工作是,逐步替换内部模块,或者改变内部模块的调用逻辑,来实现新的功能。
特别针对第三种的开发,个人建议不要重新列个工程,对已经识别和分析清楚的模块整体转入到新的工程中去。用我平时说的非常多的一句来形容,也就是说:
”不要尝试用理想改变现实,尽可能的通过现实实现理想“
开源代码的使用 二次开发相关推荐
- 开源代码微擎二次开发的分销商模块逻辑微擎分销商提现的一些注意事项
开源代码微擎的分销商模块逻辑微擎分销商提现的一些注意事项 一.分销商设置和提现 手机端在分销中心页面 /app/index.php?i=43&c=entry&m=ewei_shopv2 ...
- 关于开源堡垒机Jumpserver二次开发
针对市场上商业堡垒机动辄七八十万的投入,一般屌丝公司都是伤不起,只能砸机兴叹,开源堡垒机自然是一个方案.是拿来即用吗,NO,那是作死,不说安全.性能.并发,高可用,光维护资产.用户账号密码.授权,就可 ...
- [示例代码] UG CAM 二次开发创建新的加工坐标系MCS方法,并设置新加工坐标系的位置到当前WCS工作坐标系
本示例代码在几何视图的根组下通过UG CAM二次开发提供的函数(UF_NCGEOM_create)创建一个新的加工坐标系MCS,并设置新加工坐标系的位置到当前WCS工作坐标系的位置.创建方式为通过在U ...
- 开源堡垒机Guacamole二次开发记录之一
简介 项目中需要用到堡垒机功能,调研了一大圈,发现了Apache Guacamole这个开源项目. Apache Guacamole 是一个无客户端的远程桌面网关,它支持众多标准管理协议,例如 VNC ...
- 如何用开源飞控PIXHAWK进行二次开发?
著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:我是肉包子 链接:http://www.zhihu.com/question/38874663/answer/842399 ...
- pixhawk飞控调试_如何用开源飞控PIXHAWK进行二次开发?
以下所描述的都是针对px4原生固件,此外,由于固件更新过于频繁,本文描述的是15年7月的固件,主要是举例,有改动的话,自己再研究研究吧(后面换cmake编译方式了,改动蛮大). 既然要做开发,第一步就 ...
- 开源堡垒机Guacamole二次开发记录之二
这篇主要记录录屏和SFTP的实现. 录屏及视频播放 对于录屏及录屏的播放,因为我们的项目中需要把guacd和java后端分开两台服务器部署,而guacamole的录屏是通过guacd程序录制的.我的要 ...
- Salome平台介绍及二次开发案例
基于国产的"神威·太湖之光",国家超级计算无锡中心发布了"无锡超算云平台",将打造世界一流的超算技术与产业发展深度融合的高性能计算应用生态圈.现已升级为&quo ...
- mongodb时间范围查询少8个小时_为何要对开源mongodb数据库内核做二次开发
关于作者 前滴滴出行技术专家,现任OPPO文档数据库mongodb负责人,负责oppo千万级峰值TPS/十万亿级数据量文档数据库mongodb内核研发及运维工作,一直专注于分布式缓存.高性能服务端.数 ...
最新文章
- GitHub日收12000星,微软新命令行工具引爆程序员圈!
- Thttpd manual
- OC中protocol、category和继承的区别
- 【郭林专刊】JSP中JSTL提供的函数标签EL表达式操作字符串的方法
- HTML5编程实战之二:用动画的形式切换图片
- centos 7 安装 mail
- Android如何获得当前应用显示的Activity
- bzoj1951 [Sdoi2010]古代猪文 lucas+CRT+exgcd
- tornado autoreload 模式
- 3篇SCI定A类博士!直聘副教授七级!有偿70㎡住房+30万安家费+25万科启
- 线性代数 --- 什么是矩阵的逆?(个人笔记扫描版)
- 如何将b站视频从手机传输到电脑上
- JVM-GC日志分析
- android如何截屏快捷键,安卓手机怎么截图 各大品牌快捷键截屏大集合
- 金华职业技术学院计算机网络技术考试,金华职业技术学院2016年提前招生计算机应用技术专业测评方案...
- pwm调速c语言,PWM调速的C语言程序编写
- vscode+svn
- java实现条形图_java – 使用Apache POI在Excel中创建条形图
- FE310三个版本的差异
- 最近找工作时,一些杂七杂八的问题
热门文章
- easyexcel将对象处理为多列,自增序列
- 【JS 逆向百例】webpack 改写实战,G 某游戏 RSA 加密
- win7和mysql乱码,win7 mysql中文乱码怎么处理
- php新手用7.2,总结PHP升级7.2之后需要注意的事情
- 相似理论与模型试验_正交实验下的固液耦合相似材料研究
- 【2019牛客暑期多校训练营(第三场)- F】Planting Trees(单调队列,尺取)
- 【qduoj - 312】寻找唯一的萌妹(卡时)
- 【nyist】6 喷水装置(一) (简单的贪心)
- 计算机专业表白文案,深情表白文案40句
- android okgo参数,Android OkGo基本操作