Atitit 软件项目的一整套解决方案(gui界面,中间,存储数据库,图像处理,全文搜索)attilax总结
1.1. 项目的常见构成模块(界面ui gui ,数据存储数据库,图像处理等) 2
1.3. Gui的发展 native方案(swing qt winform)>>xml方案(wpf javafx qml qss),私有h5》》dsl方案h5 4
1.5. 软件的运行模式:编译运行与直接源码运行(解释执行) 5
1.7. 图像编程处理的四大金刚halcon matlab opencv photoshop 7
1.1. 项目的常见构成模块(界面ui gui ,数据存储数据库,图像处理等)
做出一款软件项目的常见要素有。。
依赖类库::通用的半成品软件。。代码包等。。站在巨人的肩膀上,君子善假于物也
语言::特点的环境使用特定的语言。。现在的混合编程模型是趋势,也需要混合多种编程语言来完成软件(一般一个通用语言GPL和多款DSL领域特定语言)
运行环境::一般是桌面 web 手机等,,还分为原生 h5 hybrid混合模式等。。
软件架构: cs bs web hybrid 跨架构是趋势,即是一个软件可以运行在web模式下,也可以运行在桌面gui模式,或者混合模式,一般是web优先,然后套一个本地shell
跨平台操作系统: 一般可以跨越linux win 等操作系统。。甚至安卓 ios等。。
1.2. 常见的界面ui模式gui cli
Gui模式一般俩中实现,一个基于dom模型,一个基于像素级别,性能高,但是事件模型需要自己实现,繁琐。。
普通软件大部分是属于dom模型。。一部分游戏也用像素模型,特别是比较需求性能的
1.3. Gui的发展 native方案(swing qt winform)>>xml方案(wpf javafx qml qss),私有h5》》dsl方案h5
效果图
native方案大概如图
JButton btn2=new JButton(); btn.setText("按钮文字")
native方案的缺点,受限于通用语言的语法限制,语法噪音太多,啰嗦,可读性较差。。面对嵌套层次结构界面设计可读性很差
xml方案,比如javafx fxml方案。。
<Buttonfx text="按钮文字" />
可以看到简洁很多了,解决了可读性问题,语法噪音问题,层次结构问题。但是,私有的,不是标准化的。。
第三阶段,H5阶段(html5)
<button >按钮文字</button>标准化的问题。。
主要解决了标准化的问题。。至此阶段,gui 界面方面的dsl已经发展比较好了。。
1.4. 编程语言
编程语言分类:命令式java c# js,函数式sql , 逻辑式语言等。。
按照是否编译,可以分为编译型语言和脚本语言。。脚本语言一般更加简化。。
按照通用与专用,可分为GPL 通用语言 Generalized Programming Language 通用编程语言和dsl领域特定语言
按照代际划分,有一代汇编类,二代native本地编译语言(c c++),三代vm类型语言(java c# ) ,脚本语言也有时称为三代半语言,常用的js py php,4gl一般就是dsl了,常用的dsl有h5(html) sql等。。
编程语言的发展 从机器语言,汇编语言到本地native语言(c c++) 到vm语言(java c#) 再到脚本语言(js php python等) 再到dsl
语言层次越高,可读性一般越好,可移植性越好,不过性能也越差了。。当然如果使用同样的类库的话,只是写点胶水代码的话,差别到是相对来说不大了。
机器语言, 可以说彻底淘汰,唯一的优点就是性能,其他基本全是缺点。。
汇编语言,貌似也基本淘汰,比起机器语言,提升了很大的可读性。。
native语言(c c++) 相对汇编语言可读性又大幅提升,性能方面不如汇编,但比vm语言要高。。。缺点是开发效率,以及可移植性仍然需要提升。。很多图像库貌似都是使用此开发。。依赖于性能的应用大有所为。
vm语言(java c#) 改进了native语言的问题,增加一个vm层隔离开了os。目前的业界高层应用开发主力
脚本语言 带来更高的生产力。但目前ide的问题,大型复杂企业级开发还难当重任,目前貌似在轻复杂度代码领域比较大发展。
Dsl语言 ,领域特定语言。。比如H5做界面。。Sql做数据库查询。Matlab halcon使用的语言,用来做图像处理。。
更高的开发效率,特别对于特定领域,图像处理,界面,数据库查询等大有优势。。正则表达式,用来文本搜索等。
Dsl语言本身性能很差,但是它是调用类库的,类库使用底层语言书写的,所以对性能不影响。
1.5. 软件的运行模式:编译运行与直接源码运行(解释执行)
1.6. 数据库存储
数据库相当于一个高级的excel。。。
表头定义
数据显示与维护
1.7. 图像编程处理的四大金刚halcon matlab opencv photoshop
图像方面的编程处理也是非常的与广泛了,比如人脸识别,指纹识别,二维码扫描等,条码,拍照识别等。。
OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库
HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境
MATLAB是美国MathWorks公司出品的商业数学与图像处理软件,
Photoshop::知名的图像处理软件了。。公开只提供gui接口。。用来测试,调试,验证一些图像处理的很有用。。直接通过gui接口调用ps也是某些情况下的很好选择。。
当然一些非常频繁的图像处理都已经有成熟的类库,算法库等,可以直接几行代码调用,较为方便的集成到自己的软件当中。。
1.8. 全文检索
全文检索一般处理文章搜索的大量文字搜索,数据库默认的like搜索对这种大文字搜索性能很差。。。。
搜索主要分俩中一种是遍历搜索,扫描一遍。。小数据量下还可,大数据量当然就不行了
一种是索引搜索,就是做个目录,类似与分类,书籍目录,可以快速定位到需要的数据。。。
索引的实质,即是分类处理,就像我们数据的目录编排一样。。。