当前位置: 首页 > 编程日记 > 正文

【物联网中间件平台-01】真正面向物联网的组态软件 YFIOs和YFHMI的前生今世

1前言

从2001年进入工控领域以来,前后7年多的时间开发了诸如二型计量监控系统、焦炉四大机车自动化系统、烧结配水监控系统、隧道广告影像系统、通用组态软件、嵌入式系统组态软件(基于WINCE系统)、LED视频影像系统和ICU病室输液管理等系统。其中焦炉四大机车自动化系统获得了国家专利,而隧道广告影像系统目前发展势头良好,在北京地铁(2号线、4号线),深圳地铁(罗宝线)都已实施安装,未来上海和国外也将安装该系统。

工控相关开发历程,请参见我以前写的博文《叶帆工控自动化一览》。

开发这些系统最大的感触就是,初次开发相对比较容易,但是后续系统扩展,维护相对较难,在系统架构设计不好的情况下,非常依赖团队的稳定性和技术能力。并且系统一旦开发完毕,如果有多套差别不大,相对重复的系统实施,将大大降低开发人员的兴致,因为很少有开发人员喜欢做重复的工作,并且针对每个现场修改代码,虽然修改的代码量不一定多,但是给系统的稳定性,还有后续代码的版本维护,都带来重重问题(这还不算能修改系统代码的人员成本和一个只需会配置的工程人员成本差别)。

在初入工控的前几年中,我大部分时间都是在工业现场度过的,一般一个现场项目,从实施到系统基本完成,至少大概一个月的时间,并且后续还要听从客户的召唤,一遍遍去现场修改代码的BUG。当有几个现场项目同时需要维护的时候,时间和人力已经很难调配开了。

最初也考虑用传统组态软件搭建系统,优点是一些PLC和通信模块可以直接进行通信。不过组态画面的构建还是不太方便,每个现场还需要重新组态,所以上层界面需要自己自行用VB或VC开发界面,通过控件+配置的方式,完成界面设计。但是如果仅仅使用组态软件的IO组态部分,那使用组态软件的价值就不大了,所以从2005年开始自行设计组态软件后台(参见博文:组态软件开发(仅限后台部分)),并以此为基础构建了一套工控项目开发框架(参见博文:工控项目开发框架介绍)。

使用这套系统的优点是非常明显的,焦炉四大机车项目由最初实施的一个多月,变成最长一个礼拜,并且后续除了PC本身的问题外,基本上没有什么软件问题。

有了组态后台的开发经验,然后根据公司的战略,开始为触摸屏开发嵌入式组态项目。数据组态、画面组态是一个组态软件的基本组成部分,但是更重要的是,组态软件还要有一套自己的脚本系统,有了脚本才能把IO数据、各种图元有机的联系在一起。最初YFIOServer后台组态系统采用是微软的VBScript脚本引擎,在Windows平台上可以使用,但是在WinCE平台却很难支持,也曾考虑过购买嵌入式脚本引擎(自行开发的脚本引擎,功能和能力是比较弱的),但考虑到脚本本身的跨平台特性、扩展能力和宿主语言交互的能力等因素,最后还是放弃了。

2007年开始接触和了解.NET Micro Framework系统,我意识到.NET Micro Framework系统就是我所要寻找的大脚本系统,其框架特性,可以支持跨平台运行;其标准、稳定、完善的TinyCLR保证了C#强大的应用开发能力,以此为基础可以构建任何复杂的系统。出于对.NET Micro Framework喜爱,所以在2008年加入微软.NET Micro Framework项目组,开始了为期四年的.NET Micro Framework学习和研发过程。

7年工控经验的积淀加上四年.NET Micro Framework的潜心研发,由此在YFIOServer和YFEIOServer的基础上,推出了.NET Micro Framework平台的YFIOs系统,在EasyHMI的基础上,推出了.NET Micro Framework平台上的YFHMI系统。

下面我将一一介绍YFIOs和YFHMI系统的技术演进过程。

2 YFIOs物联网中间件平台简介

2.1 YFIOs技术演进图

2.2 YFIOServer

查看了我在2005年1月份写的《研发部总结及计划(0501)》,其中有这么一项(如下图),可见组态软件后台程序的研发应该始于2005年1月份。

不过从2004年10月份写的一篇博文《VBScript脚本运用(脚本程序与宿主程序的交互)》来看,脚本的研究始于2004年10月左右,我在前言中说了,除了驱动和图元外,脚本也是组态软件必备的功能之一,所以说YFIOServer的研发开始时间还可以向前追溯几个月。

上图是2005年3月份YFIOServer的运行图,从上图可以看出无论是TinyIOs还是YFIOs其图标、功能配置界面和组态思想从这个一刻起,就已经基本定型(从2006年5月27日写的博文上更能看出这一点)。

YFIOServer相关的博文共有9篇,罗列如下:

(1)、【2005年03月11日】组态软件开发(仅限后台部分)

http://blog.csdn.net/yefanqiu/article/details/317172

(2)、【2005年10月05日】YFIOServer 组态设备IO服务系统

http://blog.csdn.net/yefanqiu/article/details/495547

(3)、【2006年05月02日】OPC Server与YFIOServer成功绑定

http://blog.csdn.net/yefanqiu/article/details/705356

(4)、【2006年05月23日】YFIOServer后台驱动算法优化

http://blog.csdn.net/yefanqiu/article/details/751451

(5)、【2006年05月27日】YFIOServer 后台IO接口使用说明

http://blog.csdn.net/yefanqiu/article/details/757327

(6)、【2006年08月16日】隧道广告系统数据下载相关技术简介

http://blog.csdn.net/yefanqiu/article/details/1074382

(7)、【2007年01月07日】用拖拉实现设备驱动配置(EsayHMI最新驱动配置方式)

http://blog.csdn.net/yefanqiu/article/details/1476573

(8)、【2007年10月30日】.Net Micro Framework研究—TCP/IP通信

http://blog.csdn.net/yefanqiu/article/details/1855762

(9)、【2008年04月23日】工控项目开发框架介绍

http://blog.csdn.net/yefanqiu/article/details/2319050

YFIOServer系统研发成功后,最先在焦炉四大机车项目中进行应用(首钢、迁安钢厂、本溪钢厂和济南钢厂等等现场仍在使用),后续在配水系统(鄂钢)和隧道广告后台视频数据下载中采用。

2.3 YFEIOServer

YFEIOServer是EasyHMI嵌入式组态软件中的一部分,上位机模拟器部分还是采用的YFIOServer(后续采用C#编写的代码替代了VB编写的界面程序),只是在WinCE平台才会运行YFEIOServer,该程序用EVC编写,界面相对简单仅能进行简单的数据编辑和查看。

查看2006年9月份的工作总结(上图),YFEIOServer的研发时间始于2006年9月,也是这个时候,确定了嵌入式设备IO变量的属性由原来windows平台上的32个变为目前的9个,TinyIOs和YFIOs把这个定义完全的继承下来。

2.4 YFIOs

YFIOs系统和此前研发的YFIOServer及YFEIOServer(当然还包括传统的组态软件的数据IOServer部分)有根本性的不同,不仅仅是因为采用了新的系统平台(.NET Micro Framework),采用C#进行驱动开发,而是从架构本身对驱动还有原脚本系统进行了大大的升级。

2.3.1 YFIOs和OSGi比较

YFIOs的系统架构和面向Java的OSGi动态模型系统非常类似(参见百度百科:OSCI词条),我也是在参与深圳海关相关项目的时候,才知道IBM智慧地球项目便是基于此架构进行项目构建的,没有想到我从组态软件中提炼出的思想,结合.NET Micro Framework本身特点构建出来的YFIOs和OSGi的思想竟然如出一辙。

OSGi系统架构图。

YFIOs的架构图(基于.NET Micro Framework平台)

从二者的架构图来看,模块化,分层化的思想完全类似,可以说YFIOs是面向C#开发的OSGi。另外因为.NET Micro Framework的架构特点,所以YFIOs也和OSGi一样,是一个跨平台的应用解决方案。

但是YFIOs和OSGi相比更有自己的优势,YFIOs把OSGi中的模块(Application/Bundles)根据功能分层两类,驱动和策略,驱动面向传感器设备,策略面向业务逻辑和上层云通信。所以说YFIOs更是面向物联网领域的中间件系统平台,更适合物联网应用开发。

另外OSGi仅仅是框架,只是提供了一些模块加载运行机制,并没有针对应用场景进行规划。所以要应用OSGi构建系统,还需要自行做大量的工作。而YFIOs基于组态的思想,提供了YFIODB和YFIOBC库,驱动和策略借助这些完成信息交互,并且驱动模型提供了各种链路通道和采集接口,用户开发具体驱动将会变得异常的简洁。

2.3.2 YFIOs和传统组态的后台IO服务比较

(1)、基于.NET系统进行驱动和策略开发,由于系统自带垃圾回收机制,不用担心在编写驱动和策略过程中,因内存溢出等原因导致系统当机。

(2)、传统的组态软件一般对外不提供驱动开发SDK,即使有些组态软件厂商提供了驱动开发SDK,一般驱动程序也需要用C++进行开发,对开发者要求比较高。并且驱动比较封闭,编写完毕后,所有的控制权都交付于系统,灵活性不足。

YFIOs和传统组态软件不同,驱动可以采用C#和VB.NET进行开发(当然对实时性要求较高的驱动,还可以调用底层C++编写的代码),且驱动有多种运行模式,不仅系统可以调用,用户策略也可以调用。还可以绑定策略事件,通过触发的方式去执行指定的策略(比循环判断去执行相关代码的方式,大大降低了CPU的负担)。

新编写驱动的加载也比较简单,直接拷贝到指定的目录即可,不像一些传统组态软件需要配置安装,并且YFIOs的驱动程序用户可以自行加密,可以授权指定的用户使用其驱动程序,不仅可以保护自己的知识产权,还可以基于YFIOs平台获取相应收益。

另外YFIOs的驱动可以动态替换,如果配置了相关的连接变量,只要驱动变量接口兼容就可以替换,这大大降低了系统运行后的维护成本,外围的硬件设备可以根据需要进行替换。

(3)、传统组态软件的脚本语言,一般是类C和类Basic语言,都是厂商自行开发的,效率较低、功能有限。而YFIOs中的脚本语言就是C#或VB.NET,其脚本引擎就是.NET Micro Framework系统的TinyCLR,所以进行策略开发时,可以充分访问系统中的任何资源。比如YFHMI的图形解析引擎就是YFIOs平台上的一个策略, YFIOs系统的策略开发能力由此可见一斑。

(4)、传统组态软件大都用本地语言进行开发,所以不具备跨平台的能力(由此衍生出各种版本,如PC通用版,嵌入式版本等等)。而YFIOs基于.NET Micro Framework系统进行开发,.NET Micro Framework是一个开放的框架,可以移植到各种系统平台上去,所以YFIOs天然的具备了跨平台的能力。

(5)、YFIOs系统支持远程升级和远程调试。支持三个层面升级,YFIOs运行时升级、YFIOs驱动和策略升级和YFIOs配置升级(如果有必要TinyCLR也是可以做到远程升级的)。

2.3.3 YFIOsManager操作视频演示

视频链接:http://v.youku.com/v_show/id_XNDkxMzgyNTgw.html

2.3.4 YFIOs技术白皮书

下载地址:

http://sky-walker.com.cn/MFRelease/document/YFIOs_WhiteBook.pdf

2.3.5 YFIOs未来发展方向

(1)、跨平台支持,后续将.NET Micro Framework移植到linux或安卓平台上。

(2)、提供WebServer支持,可以通过网页的方式,远程配置和加载策略和驱动,也可以动态启动和停止指定的驱动或策略。这样可以通过iPAD或安卓平板配置系统。

(3)、提供和上位机(windows平台)、iPAD或安卓平板的通信的SDK,便于用户开发集成。

3 YFHMI图形组态系统简介

3.1 YFHMI技术演进图

3.2 EasyHMI

从【2.3 YFEIOServer】提到的计划表可以看出,EasyHMI研发时间始于2006年9月,大概历时一个半月,初步成型。

EasyHMI相关的博文共有4篇,罗列如下:

(1)、【2006年11月19日】嵌入式EasyHMI V0.1版终于推出

http://blog.csdn.net/yefanqiu/article/details/1396827

(2)、【2006年11月29日】用EasyHMI做的工程示例一览

http://blog.csdn.net/yefanqiu/article/details/1419479

(3)、【2007年01月07日】用拖拉实现设备驱动配置

http://blog.csdn.net/yefanqiu/article/details/1476573

(4)、【2007年05月28日】LED影像系统

http://blog.csdn.net/yefanqiu/article/details/1627782

由于WinCE不支持二级制序列化(会导致嵌入式组态软件启动过程较慢,大概从开机到画面出现30s左右)和YFEIOServer支持的设备驱动相对较少,所以EasyHMI的应用并不广泛,后续和亚控组态王进行了合作,公司的触摸屏上运行了一段时间的嵌入式组态王系统。

不过EasyHMI这套组态框架应用还是比较广泛的,LED影像系统就是在这个基础上完成的。当然YFHMI上位机组态部分也是充分利用了这套框架。

3.3 YFHMI

从界面上看,YFHMI和EasyHMI差别不大,但是其框架体系结构已经大幅度调整,图元及属性配置已经合二为一,并且可以实现图元库的动态加载,使用户二次开发图元成为可能。

图元库还支持加密,可以保护用户的知识产权。

另外和WinCE平台下的嵌入式组态不同,YFHMI支持二进制序列化,并且是智能序列化,可以有选择,有改变的序列化数据,大大减少了嵌入式反序列化的时间,提升了系统的效率。

3.3.1 YFHMI和传统组态软件比较

(1)、传统组态软件图元和组态软件框架本身结合紧密,很难分割。一般也不提供二次开发接口。而YFHMI的框架结构和图元完全分开,用户完全可以替换系统自带的图元,自行根据行业需求做一套有自己特色的组态软件。YFHMI的图元开发接口非常简单,采用C#进行开发,只要继承相应基类,就可以相对容易的开发出符合要求的图元。

(2)、策略程序完全可以操控任何一个图元,甚至也可以用编程的方式动态生成和配置各类图元,结合策略的扩展配置面板,可以做出非常有个性化的组态系统。这一点传统组态软件是很难做到的。

(3)、YFHMI运行时非常小巧,四个核心图元库加起来才61K,支撑图元绘制的MiniGUI算上中文字库才276K,而图形解析引擎(也就是YFIOs的策略实现的)也仅仅2.07K。实际测试在STM32F103 72M主频的平台,运行组态的画面都比较流畅。

3.3.2 YFHMI系统架构

从架构图可以看出YFHMI完全基于YFIOs平台构建,YFHMIEngine图元引擎就是YFIOs平台上一个标准的策略,策略的执行模式是System_Loop,其它图元策略的执行模式一律配置为None,由YFHMIEngine图元引擎策略统一调配。这样做的目的就是YFHMIEngine图元引擎策略在调用其它图元策略的时候,可以向其它策略函数中传递整个图元类的信息。这样在图元策略中就可以直接访问各个图元了。

当然如果策略不访问图元,也可以通过YFIOsManager直接配置加载普通的策略。

3.3.3 YFHMI操作演示视频

视频链接:http://v.youku.com/v_show/id_XNDg2MjMxODI4.html

3.3.4 YFHMI设备运行视频

视频链接:http://v.youku.com/v_show/id_XNDg2MjM4MTQw.html

3.3.5 YFHMI技术白皮书

暂缓发布。

3.3.6 YFHMI未来发展方向

(1)、利用YFHMI框架和YFWinForm库,开发一套基于.NET Micro Framework平台的所见即所得的界面开发环境。

(2)、彻底的框架平台化,和具体业务逻辑不在相关。

4 YFIOs/YFHMI免费试用

从即日起YFIOs和YFHMI将开展为期半年的免费试用活动,符合申请条件的用户,将依次获取YFIOs和YFHMI的试用机会。

申请表下载:http://sky-walker.com.cn/MFRelease/document/yfios_yfhmi_application.doc

----------------------------------------------------------------------------------

MF简介:http://blog.csdn.net/yefanqiu/article/details/5711770

MF资料:http://www.sky-walker.com.cn/News.asp?Id=25

技术论坛: http://www.yfiot.net

相关文章:

OpenCV常遇问题解决方法汇总

1、cvLoad的使用和释放: CvMat *mat (CvMat*)cvLoad("a.xml"); cvRelease((void**)&mat); 2、cvCreateMatHeader的使用和释放: CvMat *mat cvCreateMatHeader(4, 2, CV_64FC1); cvReleaseMatHeader(&mat); 在OpenCV2.1及OpenCV2.2中…

分享我如何在7年时间里成长为阿里Java架构师(附学习路线图)

2019独角兽企业重金招聘Python工程师标准>>> 如何更高效的学习? 1.架构师应不应该写代码 总的来说,架构师和程序员在某些方面上有点像产品经理和用户的关系,大部分程序员并不会主动告诉你他们想要什么、哪里需要优化,甚…

github 与git 使用 及配置

git 是网上很流行的版本控制工具 ,尝试 熟悉并使用 它(也有windows版本,这里介绍mac的) 额,再操作前 先看看这个 并跟着做做 http://www.uml.org.cn/pzgl/201204285.asp 1,到github官网 申请账号 2,…

如何发布ActiveX 控件

转自:http://blog.csdn.net/zougangx/archive/2008/07/30/2738147.aspx [背景] 做过ActiveX控件的朋友都知道,要想把自己做的ActiveX控件功能放在自己的网页上使用,那么用户在客户端就必须进行本地的注册,也就是说用户得首先要把该…

200行代码实现一个滑动验证码

作者 | 崔庆才 转载自进击的Coder(ID: FightingCoder)做网络爬虫的同学肯定见过各种各样的验证码,比较高级的有滑动、点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文章大致说…

Envoy源码分析之Dispatcher

2019独角兽企业重金招聘Python工程师标准>>> 摘要: Dispatcher 在Envoy的代码中Dispatcher是随处可见的,可以说在Envoy中有着举足轻重的地位,一个Dispatcher就是一个EventLoop,其承担了任务队列、网络事件处理、定时器…

Windows 8 快捷键大全

为什么80%的码农都做不了架构师?>>> win8快捷键大全: Windows 键 X :Windows快捷菜单 Windows 键 C :显示个性分类和时钟 Windows 键 I :打开“设置”个性分类 Windows 键 K :打开“设备”…

Activex、OLE、COM、OCX、DLL之间区别、联系

转自:http://baike.baidu.com/view/393671.htm 概述 .ocx是ocx控件的扩展名,与.exe .dll同属于PE文件。下面说说什么是ocx控件! OCX 是对象类别扩充组件。 如果你用过Visual Basic或者Delphi一类的可视化编程工具,那么对控件这个概念一定不会陌生&#…

不写一行代码,也能玩转Kaggle竞赛?

整理 | Jane 出品 | AI科技大本营(ID:rgznai100)【导读】AI科技大本营会给大家分享一些 Kaggle 上的资源,如 Kaggle 开放的数据集,也会分享一些好的竞赛方案或有意义的竞赛经验,帮助大家成长。今天&#xf…

认识flask框架-2

1.json:基于键值对的字符串,轻量级的数据交互格式,用来传输数据 2.json模块 dumps:把字典转化成json字符串。 loads:把json字符串转成字典。 dump、load操作的是文件对象。 jsonify可以返回json字符串,会修改响应的类型为applicat…

Sencha-概念-Layouts(布局)(官网文档翻译8)

Sencha-概念-Layouts(布局)(官网文档翻译8) 介绍和HBox 布局描述了在您的应用程序的组件的大小和位置。例如,一个电子邮件客户端可能具有固定到左边的消息的列表,以说,可用的宽度的三分之一,和一个消息观看…

Photoshop图像处理操作汇总

1、给图像添加外边框,保持图像原有大小: 点击图层-->新建-->图层,弹出新图层对话框,点击确定,点按"Ctrl A”键将图像全部选中,再点击编辑>描边,弹出描边对话框,在宽…

人工智能进军餐饮:AI调酒,越喝越有

作者 | 神经小姐姐来源 | 转载自HyperAI超神经(ID:HyperAI)导读:“吃”,现在已经成了一种文化,对食物的不懈追求,可以说是人类历史的一种推动力。从烹饪的进化,到现在花样百出的美食&#xff0c…

LaTeX - 带圈数字

2019独角兽企业重金招聘Python工程师标准>>> 法I. by zepinglee \documentclass[UTF8]{ctexart} \XeTeXcharclass①1 \XeTeXcharclass②1 \XeTeXcharclass③1 \XeTeXcharclass④1 \XeTeXcharclass⑤1 \XeTeXcharclass⑥1 \XeTeXcharclass⑦1 \XeTeXcharclass⑧1 \Xe…

akcms折腾记

这几天闲着无聊,找cms折腾一下,先是搞了大名鼎鼎的dedecms,不过那繁琐真不是盖的,想修改个模板不知从哪里动手。虽然现在工作的后台也是由dedecms改过来的,但平时也就发发文章而已。 然后就找到了这个神器:…

VC++ OCX 控件注册

转自:http://www.cctry.com/thread-5334-1-1.html 方法一:在dos或Windows命令行下运行:regsvr32 ocxname.ocx 注册 示例: regsvr32 netshare.ocx //注册netshare.ocx控件 regsvr32 /u netshare.ocx //解除netshare.ocx控件…

程序猿生存指南-4 借钱风波

借钱风波(10)临近春节,我的朋友圈被各个公司的年终奖刷屏。土豪互联网公司有送现金的,有送豪车的,还有送别墅的。它们享受着移动互联网的红利,赚得盆满钵满。不过翻看公司请媒体写的那些报道,就…

赛灵思:人工智能芯片发展方向与误区

演讲嘉宾 | 姚颂,赛灵思人工智能业务资深总监整理 | 夕颜人工智能发展过程中,算力是一个重要的因素,算力就像是 AI 的燃油,没有燃油,AI 哪也去不了。而为 AI 应用提供算力的,正是各种各样的芯片。而近几年&…

Python 多线程抓取网页 牛人 use raw socket implement http request great

Python 多线程抓取网页 - 糖拌咸鱼 - 博客园Python 多线程抓取网页最近,一直在做网络爬虫相关的东西。 看了一下开源C写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术的实现。1、larbin的URL去重用的很高效的bloom filter算法; 2、DN…

从特斯拉到英伟达,那些端到端自动驾驶研发系统有何不同?

作者 | 黄浴,奇点首席科学家兼总裁来源 | 转载自知乎专栏自动驾驶与视觉感知导读:近日,吴恩达的 Drive.ai 被苹果收购的消息给了自动驾驶领域一记警钟,但这个领域的进展和成果犹在。本文将介绍一些端到端的自动驾驶研发系统&#…

vc6中进行多行注释和反注释的方法

1、利用工具中自带的按钮实现: Tools-->Customize-->Add-ins and Macro Files-->将SAMPLE项选中-->Commands-->Category中选择Macros-->在Commands中将CommentOut拖到工具栏,再选中一个Images,点击OK即可。 这种方法是使…

一看就懂!【英雄联盟锐雯】与 Python 详解设计模式之门面模式

【网络配图】设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模…

无法挂载 NTFS格式的分区:mount: unknown filesystem type ‘ntfs’

问题: # mount –t ntfs /dev/sdb1 /mnt/usb mount: unknown filesystem type ‘ntfs’ 这是由于CentOS release 5.3(Final)上无法识别NTFS格式的分区。解决办法: 通过使用 ntfs-3g 来解决。 打开ntfs-3g的下载点http://w…

vs2008 ActiveX控件测试容器的生成以及调试ActiveX控件

1、ActiveX控件测试容器的生成:用TSTCON生成测试容器 http://msdn.microsoft.com/zh-cn/library/f9adb5t5(vvs.90).aspx 在搜索里搜索tstcon,双击TstCon文件夹,将此文件夹里的东西全部复制到另外一个新的空文件里,然后打开解决方案 tstcon.…

百度自动驾驶新突破:获首批T4牌照,升级Apollo 5.0,将进行复杂城市场景路测...

作者 | KYLE WIGGERS等编译 | 夕颜出品 | AI科技大本营(ID:rgznai100)最近,百度自动驾驶项目终于有了进展。先是上周悄然发布了 Apollo 的最新版本 Apollo 5.0,引入一些新功能;昨天下午,北京市自动驾驶测试…

折叠屏就要来了,适配逼死 Android 开发?

1. 异型屏还没适配好,折叠屏就要来了,Android 的碎片化,让开发者又多掉了不少头发。 北京时间 11 月 8 日,三星在旧金山向开发者发布了一款可折叠屏幕手机。并表示,新技术需要开发者调整其 App,以确保在手机…

nginx虚拟目录配置

2019独角兽企业重金招聘Python工程师标准>>> 今天搞了N久的虚拟目录配置,在几乎要放弃的时侯偶然看到一篇文章,将我的问题搞定 原贴地址:http://blog.sina.com.cn/s/blog_6c2e6f1f0100l92h.html 我的需求是这样的,系…

阿里达摩院刷新纪录,开放域问答成绩比肩人类水平,超微软、Facebook

出品 | AI科技大本营(ID:rgznai100)近日,由阿里巴巴达摩院语言技术实验室研发的 Multi-Doc Enriched BERT 模型在微软的 MS MARCO 数 据评测任务,Passage Retrieval Task(文档检索排序)和 Q&A Task&…

解决windows7下vs2008不能正常编译ActiveX控件的问题

在windows7系统中,vs2008环境下用MFC ActiveX Control生成的控件不能正常编译,但是在xp系统中却能正常编译,解决方法: 1、在windows7中编译,提示错误为:fatal error LNK1000: Internal error during IncrB…

什么是shell【TLCL】

常用命令 datecaldf——report file system disk space usagefree——display amount of free and used memory in the systemexit——退出终端Ctrl-Alt-F1 到 Ctrl-Alt-F6 访问后台终端会话,AltF7返回图形桌面转载于:https://www.cnblogs.com/songdechiu/p/9943599…