zoukankan      html  css  js  c++  java
  • Atitit 软件项目的一整套解决方案(gui界面,中间,存储数据库,图像处理,全文搜索)attilax总结

    Atitit 软件项目的一整套解决方案(gui界面,中间,存储数据库,图像处理,全文搜索)attilax总结

    1.1. 项目的常见构成模块(界面ui gui ,数据存储数据库,图像处理等) 2

    1.2. 常见的界面ui模式gui cli 3

    1.3. Gui的发展 native方案(swing qt winform>>xml方案(wpf javafx qml qss),私有h5》》dsl方案h5 4

    1.4. 编程语言 5

    1.5. 软件的运行模式:编译运行与直接源码运行(解释执行) 5

    1.6. 数据库存储 6

    1.7. 图像编程处理的四大金刚halcon matlab opencv photoshop 7

    1.8. 全文检索 8


    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 php4gl一般就是dsl,常用的dslh5(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

     编辑

    OpenCV全称是:Open Source Computer Vision LibraryOpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库

    halcon 

    HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境

    MATLAB是美国MathWorks公司出品的商业数学与图像处理软件,

     

    Photoshop::知名的图像处理软件了。。公开只提供gui接口。。用来测试,调试,验证一些图像处理的很有用。。直接通过gui接口调用ps也是某些情况下的很好选择。。

     

    当然一些非常频繁的图像处理都已经有成熟的类库,算法库等,可以直接几行代码调用,较为方便的集成到自己的软件当中。。

     


    1.8. 全文检索

    全文检索一般处理文章搜索的大量文字搜索,数据库默认的like搜索对这种大文字搜索性能很差。。。。

    搜索主要分俩中一种是遍历搜索,扫描一遍。。小数据量下还可,大数据量当然就不行了

    一种是索引搜索,就是做个目录,类似与分类,书籍目录,可以快速定位到需要的数据。。。

    索引的实质,即是分类处理,就像我们数据的目录编排一样。。。

  • 相关阅读:
    freemaker获取字符串长度
    freemarker截取字符串subString
    [转]freemarker中的list
    python常用模块——os模块
    python正则表达式
    需要区分对比的函数以及函数小结
    信道极限容量
    信道和调制
    python中颜色设置
    python中的exec()、eval()以及complie()
  • 原文地址:https://www.cnblogs.com/attilax/p/15198087.html
Copyright © 2011-2022 走看看