收藏
0
0
本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。
- 中文名
- 二次开发
- 外文名
- custom/tailor-made software development
- 性 质
- 现有的软件上进行定制修改
- 语言基础
- 语言基础
- 分 类
- 计算机学
- 二次开发工具
- 族表、用户定义特征等
目录
一般颈枣榜乘厚良悼的来说,一些大公司如IBM开发了一个大型的软件系统平台,根据不同的客户的需要,一朵她剃些其它的中小公司为客户根据需求在该平台上进行第二次有针对性的开发。是否提供相应的接口,有的软件公司只提供软件,但也有小公司连代码一起出售,如是后者,就更方便进行二次开发。比如售票系统厚拘,车站里面弄归应钻好糊劝了,提供提端几个储存过程给银行,银行就可以代理售票了,这也是一种,还有一种如我们利用delphi体担影,C#等操作word等。[1]
第一,你要有这个开源产品的所用语言的语言基础,能看懂代码是最基本的。
第二,你要对这个开源产品的功能和使用要有比较熟悉,因为你熟悉了,你才知道一个需求下来,你要改什么,什么是系统自带的,大概要怎么改。
第四,根据你的需求,然后利用开源产品的内核,进行系统的扩展和修改,以达到你的需求。
第二,你要对这个开源产品的功能和使用要有比较熟悉,因为你熟悉了,你才知道一个需求下来,你要改什么,什么是系统自带的,大概要怎么改。
第三,你要熟悉这个开源产品的数据结构,代码结构,系统的框架结构,核心是哪里,附属功能是在哪里。简单点说,就是数据库,代码逻辑,文件目录的熟悉。如果是用接口式的二次开发,则需要你对这个接口比较熟悉,一般来说会有相应的文档。
第四,根据你的需求,然后利用开源产品的内核,进行系统的扩展和修改,以达到你的需求。
PRO/ENGINEER在提供强大的设计、分析、制造功能的同时,也为用户提供了多种二次开发工具。
1)族表(Family Table) 通过族表可以方便的管理具有相同或相近结构的零件,特别适用于标准零件的管理。族表通过建立通用零件为父零件,然后在其基础上对各参数加以控制生成派生零件。整个族表通过电子表格来管理,所以又被称为表格驱动。
2)用户定义特征(UDF) 用户定义特征是将若干个系统特征融合为一个自定义特征,使用时作为一个整体出现。系统将UDF特征以gph文件保存。UDF适用特定产品中的特定结构,有利于设计者根据产品特征快速生成几何模型。
3)Pro/ENGINEER软件对于每个模型都有一个主要设计步骤和参数列表―Pro/Program。它是由类似BASIC的高级语言构成的,用户可以根据设计需要来编辑该模型的Program,使其作为一个程序来工作。通过运行该程序,系统通过人机交互的方法来控制系统参数、特征出现与否和特征的具体尺寸等。
4)J-link是PRO/ENGINEER中自带的基于JAVA语言的二次开发工具。用户通过JAVA编程实现在软件PRO/ENGINEER中添加功能。
5)Pro/Toolkit同J-link一样也是Pro/E自带的二次开发工具,在Pro/Toolkit中,PTC向用户提供了大型的C语言函数库,函数采用面向对象的风格,通过调用这些底层函数,用户能方便而又安全地访问Pro/ENGINEER的数据库及内部应用程序,进行二次开发,扩展一些特定功能。
6)基于VB API的二次开发过程,Pro/E Wildfire 4.0开始可以采用Visual Basic API,通过 Visual Basic NET应用程序和应用程序 (如 Microsoft Word、Excel 或 Access) 中的 Visual Basic 宏来进行二次开发。
同步模式(Synchronous Mode)和异步模式(Asynchronous Mode)。同步模式下,Pro/E根据注册文件中的信息启动应用程序,Pro/Toolkit应用程序和Pro/E产生各自的进程,程序的控制权在两个进程之间切换。该应用程序不能够独立于Pro/E而运行。在异步模式下,Pro/Toolkit应用程序和Pro/E能够进行各自的操作,在通信方面,异步模式使用远程调用(Remote Procedure Calls,RPC)方式,程序(含有独立主函数)能独立于Pro/E启动。由于异步模式采用远程调用,程序运行速度相比同步模式慢很多,整合性也不好,所以一般基于Pro/E的Toolkit开发采用同步模式。在同步模式下又有两种开发方式:动态链接库(DLL Mode)和多进程(Multiprocess 或Spawned Mode)。前者为的动态连接库文件,无自身主程序函数,直接连接于Pro/E进行程序调用。后者为.exe文件,有独立的主程序和Pro/E进行相连接。一般为了调试方便,开发程序时可以采用多进程模式,在程序完成时,采用动态连接库提高程序运行效率
ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。目前最新版本为2.7.3。
系统在实际使用过程中用户会有各种不同的需求,往往需要进行二次开发,针对这些需求 php服务中心专门建立ecshop二次开发部门,来解决用户以上问题,同时 php服务中心齐永东齐老师总结二次开发经验录制了大量ecshop二次开发视频并提供免费下载。[3]
- 非常熟悉HTML
- 熟悉DIV+CSS的布局
- 扎实的PHP基础,熟悉结构化编程,了解OOP,并能看懂和使用
- 熟悉Smarty模板引擎
- 熟悉MYSQL,掌握SQL语言
\includes\cls_captcha.php: 验证码图片类
\includes\cls_ecshop.php: 基础类
\includes\inc_constant.php: 常量
\includes\init.php: 前台公用文件
\includes\lib_common.php: 公用函数库
\includes\lib_goodscat.php: 前台公用函数库
\includes\lib_insert.php: 动态内容函数库
\includes\lib_main.php: 前台公用函数库
\includes\lib_payment.php: 支付接口函数库
\includes\ip\cls_ip.php: IP 归属地查询类
\includes\modules\integrates\discuz.php: 会员数据处理类
\includes\modules\integrates\ecshop.php: 会员数据处理类
- 扎实的PHP基础,熟悉结构化编程,了解OOP,并能看懂和使用
- 熟悉MYSQL,掌握SQL语言
熟悉每个文件的基本功能,方便做修改,知道每个文件的大概作用之后,可以方便的对文件进行修改
文件结构摘要:
- config.cache.bak.php 后台系统配置备份
- downmix.data.php 采集混淆缓存文件
- mysql_error_track.inc MYSQL错误日志
- safequestions.php 安全问题
- sitemap.html 站点地图
- sys_pay.cache.php 支付网关配置
- template.rand.php 随机模板设置
- ……
熟悉一些登陆,注册,文档管理,权限控制,分类管理,模型设置等一些常用流程控制。对几个核心文件进行解剖,了解其编程技巧及安全机制
· DedeCMS插件的开发(插件和内嵌式插件)
熟悉两种插件的编写,插件的导入导出,插件搭配模型的使用
在大部份情况下我们的网站都会使用数据库作为站点数据存储的容器。当你执行一个SQL查询时,典型的处理过程是:连接数据库->准备SQL查询->发送查询到数据库->取得数据库返回结果->关闭数据库连接。但数据库中有些数据是完全静态的或不太经常变动的,缓存系统会通过把SQL查询的结果缓存到一个更快的存储系统中储,从而避免频繁操作数据库而很大程度上提高了程序执行时间,而且缓存查询结果也允许你后期处理。[4]
这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存文件中获得。
每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能)
Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
以上的缓存技术虽然能很好的解决频繁查询数据库的问题,但其缺点在在于数据无时效性,下面介绍项目中常用的方法:
设定时间内不去判断数据是否要更新,过了设定时间再更新缓存。以上只适合对时效性要求不高的情况下使用 ,否则请看下面。
当插入数据或更新数据时,强制更新缓存。
在这里我们可以看到,当有大量数据频繁需要更新时,最后都要涉及磁盘读写操作。怎么解决呢?我在日常项目中,通常并不缓存所有内容,而是缓存一部分不经常变的内容来解决。但在大负荷的情况下,最好要用共享内存做缓存系统。