• 关于

    通用数据模型工作原理

    的搜索结果

问题

【教程免费下载】 Spark大数据分析实战

沉默术士 2019-12-01 22:07:51 1453 浏览量 回答数 1

问题

分布式服务接口的幂等性如何设计(比如不能重复扣款)?【Java问答学堂】52期

剑曼红尘 2020-07-08 09:15:27 3 浏览量 回答数 1

回答

一、算法工程师简介 (通常是月薪15k以上,年薪18万以上,只是一个概数,具体薪资可以到招聘网站如拉钩,猎聘网上看看) 算法工程师目前是一个高端也是相对紧缺的职位; 算法工程师包括 音/视频算法工程师(通常统称为语音/视频/图形开发工程师)、图像处理算法工程师、计算机视觉算法工程师、通信基带算法工程师、信号算法工程师、射频/通信算法工程师、自然语言算法工程师、数据挖掘算法工程师、搜索算法工程师、控制算法工程师(云台算法工程师,飞控算法工程师,机器人控制算法)、导航算法工程师( @之介 感谢补充)、其他【其他一切需要复杂算法的行业】 专业要求:计算机、电子、通信、数学等相关专业; 学历要求:本科及其以上的学历,大多数是硕士学历及其以上; 语言要求:英语要求是熟练,基本上能阅读国外专业书刊,做这一行经常要读论文; 必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。 算法工程师的技能树(不同方向差异较大,此处仅供参考) 1 机器学习 2 大数据处理:熟悉至少一个分布式计算框架Hadoop/Spark/Storm/ map-reduce/MPI 3 数据挖掘 4 扎实的数学功底 5 至少熟悉C/C++或者Java,熟悉至少一门编程语言例如java/python/R 加分项:具有较为丰富的项目实践经验(不是水论文的哪种) 二、算法工程师大致分类与技术要求 (一)图像算法/计算机视觉工程师类 包括 图像算法工程师,图像处理工程师,音/视频处理算法工程师,计算机视觉工程师 要求 l 专业:计算机、数学、统计学相关专业; l 技术领域:机器学习,模式识别 l 技术要求: (1) 精通DirectX HLSL和OpenGL GLSL等shader语言,熟悉常见图像处理算法GPU实现及优化; (2) 语言:精通C/C++; (3) 工具:Matlab数学软件,CUDA运算平台,VTK图像图形开源软件【医学领域:ITK,医学图像处理软件包】 (4) 熟悉OpenCV/OpenGL/Caffe等常用开源库; (5) 有人脸识别,行人检测,视频分析,三维建模,动态跟踪,车识别,目标检测跟踪识别经历的人优先考虑; (6) 熟悉基于GPU的算法设计与优化和并行优化经验者优先; (7) 【音/视频领域】熟悉H.264等视频编解码标准和FFMPEG,熟悉rtmp等流媒体传输协议,熟悉视频和音频解码算法,研究各种多媒体文件格式,GPU加速; 应用领域: (1) 互联网:如美颜app (2) 医学领域:如临床医学图像 (3) 汽车领域 (4) 人工智能 相关术语: (1) OCR:OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程 (2) Matlab:商业数学软件; (3) CUDA: (Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台(由ISA和GPU构成)。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题 (4) OpenCL: OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。 (5) OpenCV:开源计算机视觉库;OpenGL:开源图形库;Caffe:是一个清晰,可读性高,快速的深度学习框架。 (6) CNN:(深度学习)卷积神经网络(Convolutional Neural Network)CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。 (7) 开源库:指的是计算机行业中对所有人开发的代码库,所有人均可以使用并改进代码算法。 (二)机器学习工程师 包括 机器学习工程师 要求 l 专业:计算机、数学、统计学相关专业; l 技术领域:人工智能,机器学习 l 技术要求: (1) 熟悉Hadoop/Hive以及Map-Reduce计算模式,熟悉Spark、Shark等尤佳; (2) 大数据挖掘; (3) 高性能、高并发的机器学习、数据挖掘方法及架构的研发; 应用领域: (1)人工智能,比如各类仿真、拟人应用,如机器人 (2)医疗用于各类拟合预测 (3)金融高频交易 (4)互联网数据挖掘、关联推荐 (5)无人汽车,无人机 相关术语: (1) Map-Reduce:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。 (三)自然语言处理工程师 包括 自然语言处理工程师 要求 l 专业:计算机相关专业; l 技术领域:文本数据库 l 技术要求: (1) 熟悉中文分词标注、文本分类、语言模型、实体识别、知识图谱抽取和推理、问答系统设计、深度问答等NLP 相关算法; (2) 应用NLP、机器学习等技术解决海量UGC的文本相关性; (3) 分词、词性分析、实体识别、新词发现、语义关联等NLP基础性研究与开发; (4) 人工智能,分布式处理Hadoop; (5) 数据结构和算法; 应用领域: 口语输入、书面语输入 、语言分析和理解、语言生成、口语输出技术、话语分析与对话、文献自动处理、多语问题的计算机处理、多模态的计算机处理、信息传输与信息存储 、自然语言处理中的数学方法、语言资源、自然语言处理系统的评测。 相关术语: (2) NLP:人工智能的自然语言处理,NLP (Natural Language Processing) 是人工智能(AI)的一个子领域。NLP涉及领域很多,最令我感兴趣的是“中文自动分词”(Chinese word segmentation):结婚的和尚未结婚的【计算机中却有可能理解为结婚的“和尚“】 (四)射频/通信/信号算法工程师类 包括 3G/4G无线通信算法工程师, 通信基带算法工程师,DSP开发工程师(数字信号处理),射频通信工程师,信号算法工程师 要求 l 专业:计算机、通信相关专业; l 技术领域:2G、3G、4G,BlueTooth(蓝牙),WLAN,无线移动通信, 网络通信基带信号处理 l 技术要求: (1) 了解2G,3G,4G,BlueTooth,WLAN等无线通信相关知识,熟悉现有的通信系统和标准协议,熟悉常用的无线测试设备; (2) 信号处理技术,通信算法; (3) 熟悉同步、均衡、信道译码等算法的基本原理; (4) 【射频部分】熟悉射频前端芯片,扎实的射频微波理论和测试经验,熟练使用射频电路仿真工具(如ADS或MW或Ansoft);熟练使用cadence、altium designer PCB电路设计软件; (5) 有扎实的数学基础,如复变函数、随机过程、数值计算、矩阵论、离散数学 应用领域: 通信 VR【用于快速传输视频图像,例如乐客灵境VR公司招募的通信工程师(数据编码、流数据)】 物联网,车联网 导航,军事,卫星,雷达 相关术语: (1) 基带信号:指的是没有经过调制(进行频谱搬移和变换)的原始电信号。 (2) 基带通信(又称基带传输):指传输基带信号。进行基带传输的系统称为基带传输系统。传输介质的整个信道被一个基带信号占用.基带传输不需要调制解调器,设备化费小,具有速率高和误码率低等优点,.适合短距离的数据传输,传输距离在100米内,在音频市话、计算机网络通信中被广泛采用。如从计算机到监视器、打印机等外设的信号就是基带传输的。大多数的局域网使用基带传输,如以太网、令牌环网。 (3) 射频:射频(RF)是Radio Frequency的缩写,表示可以辐射到空间的电磁频率(电磁波),频率范围从300KHz~300GHz之间(因为其较高的频率使其具有远距离传输能力)。射频简称RF射频就是射频电流,它是一种高频交流变化电磁波的简称。每秒变化小于1000次的交流电称为低频电流,大于10000次的称为高频电流,而射频就是这样一种高频电流。高频(大于10K);射频(300K-300G)是高频的较高频段;微波频段(300M-300G)又是射频的较高频段。【有线电视就是用射频传输方式】 (4) DSP:数字信号处理,也指数字信号处理芯片 (五)数据挖掘算法工程师类 包括 推荐算法工程师,数据挖掘算法工程师 要求 l 专业:计算机、通信、应用数学、金融数学、模式识别、人工智能; l 技术领域:机器学习,数据挖掘 l 技术要求: (1) 熟悉常用机器学习和数据挖掘算法,包括但不限于决策树、Kmeans、SVM、线性回归、逻辑回归以及神经网络等算法; (2) 熟练使用SQL、Matlab、Python等工具优先; (3) 对Hadoop、Spark、Storm等大规模数据存储与运算平台有实践经验【均为分布式计算框架】 (4) 数学基础要好,如高数,统计学,数据结构 l 加分项:数据挖掘建模大赛; 应用领域 (1) 个性化推荐 (2) 广告投放 (3) 大数据分析 相关术语 Map-Reduce:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。 (六)搜索算法工程师 要求 l 技术领域:自然语言 l 技术要求: (1) 数据结构,海量数据处理、高性能计算、大规模分布式系统开发 (2) hadoop、lucene (3) 精通Lucene/Solr/Elastic Search等技术,并有二次开发经验 (4) 精通Lucene/Solr/Elastic Search等技术,并有二次开发经验; (5) 精通倒排索引、全文检索、分词、排序等相关技术; (6) 熟悉Java,熟悉Spring、MyBatis、Netty等主流框架; (7) 优秀的数据库设计和优化能力,精通MySQL数据库应用 ; (8) 了解推荐引擎和数据挖掘和机器学习的理论知识,有大型搜索应用的开发经验者优先。 (七)控制算法工程师类 包括了云台控制算法,飞控控制算法,机器人控制算法 要求 l 专业:计算机,电子信息工程,航天航空,自动化 l 技术要求: (1) 精通自动控制原理(如PID)、现代控制理论,精通组合导航原理,姿态融合算法,电机驱动,电机驱动 (2) 卡尔曼滤波,熟悉状态空间分析法对控制系统进行数学模型建模、分析调试; l 加分项:有电子设计大赛,机器人比赛,robocon等比赛经验,有硬件设计的基础; 应用领域 (1)医疗/工业机械设备 (2)工业机器人 (3)机器人 (4)无人机飞控、云台控制等 (八)导航算法工程师 要求 l 专业:计算机,电子信息工程,航天航空,自动化 l 技术要求(以公司职位JD为例) 公司一(1)精通惯性导航、激光导航、雷达导航等工作原理; (2)精通组合导航算法设计、精通卡尔曼滤波算法、精通路径规划算法; (3)具备导航方案设计和实现的工程经验; (4)熟悉C/C++语言、熟悉至少一种嵌入式系统开发、熟悉Matlab工具; 公司二(1)熟悉基于视觉信息的SLAM、定位、导航算法,有1年以上相关的科研或项目经历; (2)熟悉惯性导航算法,熟悉IMU与视觉信息的融合; 应用领域 无人机、机器人等。

小哇 2019-12-02 01:21:12 0 浏览量 回答数 0

Quick BI 数据可视化分析平台

2020年入选全球Gartner ABI魔力象限,为中国首个且唯一入选BI产品

回答

一、算法工程师简介 (通常是月薪15k以上,年薪18万以上,只是一个概数,具体薪资可以到招聘网站如拉钩,猎聘网上看看) 算法工程师目前是一个高端也是相对紧缺的职位; 算法工程师包括 音/视频算法工程师(通常统称为语音/视频/图形开发工程师)、图像处理算法工程师、计算机视觉算法工程师、通信基带算法工程师、信号算法工程师、射频/通信算法工程师、自然语言算法工程师、数据挖掘算法工程师、搜索算法工程师、控制算法工程师(云台算法工程师,飞控算法工程师,机器人控制算法)、导航算法工程师( @之介 感谢补充)、其他【其他一切需要复杂算法的行业】 专业要求:计算机、电子、通信、数学等相关专业; 学历要求:本科及其以上的学历,大多数是硕士学历及其以上; 语言要求:英语要求是熟练,基本上能阅读国外专业书刊,做这一行经常要读论文; 必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。 算法工程师的技能树(不同方向差异较大,此处仅供参考) 1 机器学习 2 大数据处理:熟悉至少一个分布式计算框架Hadoop/Spark/Storm/ map-reduce/MPI 3 数据挖掘 4 扎实的数学功底 5 至少熟悉C/C++或者Java,熟悉至少一门编程语言例如java/python/R 加分项:具有较为丰富的项目实践经验(不是水论文的哪种) 二、算法工程师大致分类与技术要求 (一)图像算法/计算机视觉工程师类 包括 图像算法工程师,图像处理工程师,音/视频处理算法工程师,计算机视觉工程师 要求 l 专业:计算机、数学、统计学相关专业; l 技术领域:机器学习,模式识别 l 技术要求: (1) 精通DirectX HLSL和OpenGL GLSL等shader语言,熟悉常见图像处理算法GPU实现及优化; (2) 语言:精通C/C++; (3) 工具:Matlab数学软件,CUDA运算平台,VTK图像图形开源软件【医学领域:ITK,医学图像处理软件包】 (4) 熟悉OpenCV/OpenGL/Caffe等常用开源库; (5) 有人脸识别,行人检测,视频分析,三维建模,动态跟踪,车识别,目标检测跟踪识别经历的人优先考虑; (6) 熟悉基于GPU的算法设计与优化和并行优化经验者优先; (7) 【音/视频领域】熟悉H.264等视频编解码标准和FFMPEG,熟悉rtmp等流媒体传输协议,熟悉视频和音频解码算法,研究各种多媒体文件格式,GPU加速; 应用领域: (1) 互联网:如美颜app (2) 医学领域:如临床医学图像 (3) 汽车领域 (4) 人工智能 相关术语: (1) OCR:OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程 (2) Matlab:商业数学软件; (3) CUDA: (Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台(由ISA和GPU构成)。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题 (4) OpenCL: OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。 (5) OpenCV:开源计算机视觉库;OpenGL:开源图形库;Caffe:是一个清晰,可读性高,快速的深度学习框架。 (6) CNN:(深度学习)卷积神经网络(Convolutional Neural Network)CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。 (7) 开源库:指的是计算机行业中对所有人开发的代码库,所有人均可以使用并改进代码算法。 (二)机器学习工程师 包括 机器学习工程师 要求 l 专业:计算机、数学、统计学相关专业; l 技术领域:人工智能,机器学习 l 技术要求: (1) 熟悉Hadoop/Hive以及Map-Reduce计算模式,熟悉Spark、Shark等尤佳; (2) 大数据挖掘; (3) 高性能、高并发的机器学习、数据挖掘方法及架构的研发; 应用领域: (1)人工智能,比如各类仿真、拟人应用,如机器人 (2)医疗用于各类拟合预测 (3)金融高频交易 (4)互联网数据挖掘、关联推荐 (5)无人汽车,无人机 相关术语: (1) Map-Reduce:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。 (三)自然语言处理工程师 包括 自然语言处理工程师 要求 l 专业:计算机相关专业; l 技术领域:文本数据库 l 技术要求: (1) 熟悉中文分词标注、文本分类、语言模型、实体识别、知识图谱抽取和推理、问答系统设计、深度问答等NLP 相关算法; (2) 应用NLP、机器学习等技术解决海量UGC的文本相关性; (3) 分词、词性分析、实体识别、新词发现、语义关联等NLP基础性研究与开发; (4) 人工智能,分布式处理Hadoop; (5) 数据结构和算法; 应用领域: 口语输入、书面语输入 、语言分析和理解、语言生成、口语输出技术、话语分析与对话、文献自动处理、多语问题的计算机处理、多模态的计算机处理、信息传输与信息存储 、自然语言处理中的数学方法、语言资源、自然语言处理系统的评测。 相关术语: (2) NLP:人工智能的自然语言处理,NLP (Natural Language Processing) 是人工智能(AI)的一个子领域。NLP涉及领域很多,最令我感兴趣的是“中文自动分词”(Chinese word segmentation):结婚的和尚未结婚的【计算机中却有可能理解为结婚的“和尚“】 (四)射频/通信/信号算法工程师类 包括 3G/4G无线通信算法工程师, 通信基带算法工程师,DSP开发工程师(数字信号处理),射频通信工程师,信号算法工程师 要求 l 专业:计算机、通信相关专业; l 技术领域:2G、3G、4G,BlueTooth(蓝牙),WLAN,无线移动通信, 网络通信基带信号处理 l 技术要求: (1) 了解2G,3G,4G,BlueTooth,WLAN等无线通信相关知识,熟悉现有的通信系统和标准协议,熟悉常用的无线测试设备; (2) 信号处理技术,通信算法; (3) 熟悉同步、均衡、信道译码等算法的基本原理; (4) 【射频部分】熟悉射频前端芯片,扎实的射频微波理论和测试经验,熟练使用射频电路仿真工具(如ADS或MW或Ansoft);熟练使用cadence、altium designer PCB电路设计软件; (5) 有扎实的数学基础,如复变函数、随机过程、数值计算、矩阵论、离散数学 应用领域: 通信 VR【用于快速传输视频图像,例如乐客灵境VR公司招募的通信工程师(数据编码、流数据)】 物联网,车联网 导航,军事,卫星,雷达 相关术语: (1) 基带信号:指的是没有经过调制(进行频谱搬移和变换)的原始电信号。 (2) 基带通信(又称基带传输):指传输基带信号。进行基带传输的系统称为基带传输系统。传输介质的整个信道被一个基带信号占用.基带传输不需要调制解调器,设备化费小,具有速率高和误码率低等优点,.适合短距离的数据传输,传输距离在100米内,在音频市话、计算机网络通信中被广泛采用。如从计算机到监视器、打印机等外设的信号就是基带传输的。大多数的局域网使用基带传输,如以太网、令牌环网。 (3) 射频:射频(RF)是Radio Frequency的缩写,表示可以辐射到空间的电磁频率(电磁波),频率范围从300KHz~300GHz之间(因为其较高的频率使其具有远距离传输能力)。射频简称RF射频就是射频电流,它是一种高频交流变化电磁波的简称。每秒变化小于1000次的交流电称为低频电流,大于10000次的称为高频电流,而射频就是这样一种高频电流。高频(大于10K);射频(300K-300G)是高频的较高频段;微波频段(300M-300G)又是射频的较高频段。【有线电视就是用射频传输方式】 (4) DSP:数字信号处理,也指数字信号处理芯片 (五)数据挖掘算法工程师类 包括 推荐算法工程师,数据挖掘算法工程师 要求 l 专业:计算机、通信、应用数学、金融数学、模式识别、人工智能; l 技术领域:机器学习,数据挖掘 l 技术要求: (1) 熟悉常用机器学习和数据挖掘算法,包括但不限于决策树、Kmeans、SVM、线性回归、逻辑回归以及神经网络等算法; (2) 熟练使用SQL、Matlab、Python等工具优先; (3) 对Hadoop、Spark、Storm等大规模数据存储与运算平台有实践经验【均为分布式计算框架】 (4) 数学基础要好,如高数,统计学,数据结构 l 加分项:数据挖掘建模大赛; 应用领域 (1) 个性化推荐 (2) 广告投放 (3) 大数据分析 相关术语 Map-Reduce:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。 (六)搜索算法工程师 要求 l 技术领域:自然语言 l 技术要求: (1) 数据结构,海量数据处理、高性能计算、大规模分布式系统开发 (2) hadoop、lucene (3) 精通Lucene/Solr/Elastic Search等技术,并有二次开发经验 (4) 精通Lucene/Solr/Elastic Search等技术,并有二次开发经验; (5) 精通倒排索引、全文检索、分词、排序等相关技术; (6) 熟悉Java,熟悉Spring、MyBatis、Netty等主流框架; (7) 优秀的数据库设计和优化能力,精通MySQL数据库应用 ; (8) 了解推荐引擎和数据挖掘和机器学习的理论知识,有大型搜索应用的开发经验者优先。 (七)控制算法工程师类 包括了云台控制算法,飞控控制算法,机器人控制算法 要求 l 专业:计算机,电子信息工程,航天航空,自动化 l 技术要求: (1) 精通自动控制原理(如PID)、现代控制理论,精通组合导航原理,姿态融合算法,电机驱动,电机驱动 (2) 卡尔曼滤波,熟悉状态空间分析法对控制系统进行数学模型建模、分析调试; l 加分项:有电子设计大赛,机器人比赛,robocon等比赛经验,有硬件设计的基础; 应用领域 (1)医疗/工业机械设备 (2)工业机器人 (3)机器人 (4)无人机飞控、云台控制等 (八)导航算法工程师 要求 l 专业:计算机,电子信息工程,航天航空,自动化 l 技术要求(以公司职位JD为例) 公司一(1)精通惯性导航、激光导航、雷达导航等工作原理; (2)精通组合导航算法设计、精通卡尔曼滤波算法、精通路径规划算法; (3)具备导航方案设计和实现的工程经验; (4)熟悉C/C++语言、熟悉至少一种嵌入式系统开发、熟悉Matlab工具; 公司二(1)熟悉基于视觉信息的SLAM、定位、导航算法,有1年以上相关的科研或项目经历; (2)熟悉惯性导航算法,熟悉IMU与视觉信息的融合; 应用领域 无人机、机器人等。

琴瑟 2019-12-02 01:21:11 0 浏览量 回答数 0

问题

学术界关于HBase在物联网/车联网/互联网/金融/高能物理等八大场景的理论研究

pandacats 2019-12-18 16:06:18 1 浏览量 回答数 0

回答

逻辑回归 逻辑回归实际上是一种分类算法。我怀疑它这样命名是因为它与线性回归在学习方法上很相似,但是成本和梯度函数表述不同。特别是,逻辑回归使用了一个sigmoid或“logit”激活函数,而不是线性回归的连续输出。 首先导入和检查我们将要处理的数据集。 import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline import os path = os.getcwd() + '\data\ex2data1.txt' data = pd.read_csv(path, header=None, names=['Exam 1', 'Exam 2', 'Admitted']) data.head() 在数据中有两个连续的自变量——“Exam 1”和“Exam 2”。我们的预测目标是“Admitted”的标签。值1表示学生被录取,0表示学生没有被录取。我们看有两科成绩的散点图,并使用颜色编码来表达例子是positive或者negative。 positive = data[data['Admitted'].isin([1])] negative = data[data['Admitted'].isin([0])] fig, ax = plt.subplots(figsize=(12,8)) ax.scatter(positive['Exam 1'], positive['Exam 2'], s=50, c='b', marker='o', label='Admitted') ax.scatter(negative['Exam 1'], negative['Exam 2'], s=50, c='r', marker='x', label='Not Admitted') ax.legend() ax.set_xlabel('Exam 1 Score') ax.set_ylabel('Exam 2 Score') 从这个图中我们可以看到,有一个近似线性的决策边界。它有一点弯曲,所以我们不能使用直线将所有的例子正确地分类,但我们能够很接近。现在我们需要实施逻辑回归,这样我们就可以训练一个模型来找到最优决策边界,并做出分类预测。首先需要实现sigmoid函数。 def sigmoid(z): return 1 / (1 + np.exp(-z)) 这个函数是逻辑回归输出的“激活”函数。它将连续输入转换为0到1之间的值。这个值可以被解释为分类概率,或者输入的例子应该被积极分类的可能性。利用带有界限值的概率,我们可以得到一个离散标签预测。它有助于可视化函数的输出,以了解它真正在做什么。 nums = np.arange(-10, 10, step=1) fig, ax = plt.subplots(figsize=(12,8)) ax.plot(nums, sigmoid(nums), 'r') 我们的下一步是写成本函数。成本函数在给定一组模型参数的训练数据上评估模型的性能。这是逻辑回归的成本函数。 def cost(theta, X, y): theta = np.matrix(theta) X = np.matrix(X) y = np.matrix(y) first = np.multiply(-y, np.log(sigmoid(X * theta.T))) second = np.multiply((1 - y), np.log(1 - sigmoid(X * theta.T))) return np.sum(first - second) / (len(X)) 注意,我们将输出减少到单个标量值,该值是“误差”之和,是模型分配的类概率与示例的真实标签之间差别的量化函数。该实现完全是向量化的——它在语句(sigmoid(X * theta.T))中计算模型对整个数据集的预测。 测试成本函数以确保它在运行,首先需要做一些设置。 # add a ones column - this makes the matrix multiplication work out easier data.insert(0, 'Ones', 1) # set X (training data) and y (target variable) cols = data.shape[1] X = data.iloc[:,0:cols-1] y = data.iloc[:,cols-1:cols] # convert to numpy arrays and initalize the parameter array theta X = np.array(X.values) y = np.array(y.values) theta = np.zeros(3) 检查数据结构的形状,以确保它们的值是合理的。这种技术在实现矩阵乘法时非常有用 X.shape, theta.shape, y.shape ((100L, 3L), (3L,), (100L, 1L)) 现在计算初始解的成本,将模型参数“theta”设置为零。 cost(theta, X, y) 0.69314718055994529 我们已经有了工作成本函数,下一步是编写一个函数,用来计算模型参数的梯度,以找出改变参数来提高训练数据模型的方法。在梯度下降的情况下,我们不只是在参数值周围随机地jigger,看看什么效果最好。并且在每次迭代训练中,我们通过保证将其移动到减少训练误差(即“成本”)的方向来更新参数。我们可以这样做是因为成本函数是可微分的。这是函数。 def gradient(theta, X, y): theta = np.matrix(theta) X = np.matrix(X) y = np.matrix(y) parameters = int(theta.ravel().shape[1]) grad = np.zeros(parameters) error = sigmoid(X * theta.T) - y for i in range(parameters): term = np.multiply(error, X[:,i]) grad[i] = np.sum(term) / len(X) return grad 我们并没有在这个函数中执行梯度下降——我们只计算一个梯度步骤。在练习中,使用“fminunc”的Octave函数优化给定函数的参数,以计算成本和梯度。因为我们使用的是Python,所以我们可以使用SciPy的优化API来做同样的事情。 import scipy.optimize as opt result = opt.fmin_tnc(func=cost, x0=theta, fprime=gradient, args=(X, y)) cost(result[0], X, y) 0.20357134412164668 现在我们的数据集里有了最优模型参数,接下来我们要写一个函数,它使用我们训练过的参数theta来输出数据集X的预测,然后使用这个函数为我们分类器的训练精度打分。 def predict(theta, X): probability = sigmoid(X * theta.T) return [1 if x >= 0.5 else 0 for x in probability] theta_min = np.matrix(result[0]) predictions = predict(theta_min, X) correct = [1 if ((a == 1 and b == 1) or (a == 0 and b == 0)) else 0 for (a, b) in zip(predictions, y)] accuracy = (sum(map(int, correct)) % len(correct)) print 'accuracy = {0}%'.format(accuracy) accuracy = 89% 我们的逻辑回归分类器预测学生是否被录取的准确性可以达到89%,这是在训练集中的精度。我们没有保留一个hold-out set或使用交叉验证来获得准确的近似值,所以这个数字可能高于实际的值。 正则化逻辑回归 既然我们已经有了逻辑回归的工作实现,我们将通过添加正则化来改善算法。正则化是成本函数的一个条件,使算法倾向于更简单的模型(在这种情况下,模型会减小系数),原理就是帮助减少过度拟合和帮助模型提高通用化能力。我们使用逻辑回归的正则化版本去解决稍带挑战性的问题, 想象你是工厂的产品经理,你有一些芯片在两种不同测试上的测试结果。通过两种测试,你将会决定那种芯片被接受或者拒绝。为了帮助你做这个决定,你将会有以往芯片的测试结果数据集,并且通过它建立一个逻辑回归模型。 现在可视化数据。 path = os.getcwd() + '\data\ex2data2.txt' data2 = pd.read_csv(path, header=None, names=['Test 1', 'Test 2', 'Accepted']) positive = data2[data2['Accepted'].isin([1])] negative = data2[data2['Accepted'].isin([0])] fig, ax = plt.subplots(figsize=(12,8)) ax.scatter(positive['Test 1'], positive['Test 2'], s=50, c='b', marker='o', label='Accepted') ax.scatter(negative['Test 1'], negative['Test 2'], s=50, c='r', marker='x', label='Rejected') ax.legend() ax.set_xlabel('Test 1 Score') ax.set_ylabel('Test 2 Score') 这个数据看起来比以前的例子更复杂,你会注意到没有线性决策线,数据也执行的很好,处理这个问题的一种方法是使用像逻辑回归这样的线性技术,就是构造出由原始特征多项式派生出来的特征。我们可以尝试创建一堆多项式特性以提供给分类器。 degree = 5 x1 = data2['Test 1'] x2 = data2['Test 2'] data2.insert(3, 'Ones', 1) for i in range(1, degree): for j in range(0, i): data2['F' + str(i) + str(j)] = np.power(x1, i-j) * np.power(x2, j) data2.drop('Test 1', axis=1, inplace=True) data2.drop('Test 2', axis=1, inplace=True) data2.head() 现在我们需要去修改成本和梯度函数以包含正则项。在这种情况下,将正则化矩阵添加到之前的计算中。这是更新后的成本函数。 def costReg(theta, X, y, learningRate): theta = np.matrix(theta) X = np.matrix(X) y = np.matrix(y) first = np.multiply(-y, np.log(sigmoid(X * theta.T))) second = np.multiply((1 - y), np.log(1 - sigmoid(X * theta.T))) reg = (learningRate / 2 * len(X)) * np.sum(np.power(theta[:,1:theta.shape[1]], 2)) return np.sum(first - second) / (len(X)) + reg 我们添加了一个名为“reg”的新变量,它是参数值的函数。随着参数越来越大,对成本函数的惩罚也越来越大。我们在函数中添加了一个新的“learning rate”参数。 这也是等式中正则项的一部分。 learning rate为我们提供了一个新的超参数,我们可以使用它来调整正则化在成本函数中的权重。 接下来,我们将在梯度函数中添加正则化。 def gradientReg(theta, X, y, learningRate): theta = np.matrix(theta) X = np.matrix(X) y = np.matrix(y) parameters = int(theta.ravel().shape[1]) grad = np.zeros(parameters) error = sigmoid(X * theta.T) - y for i in range(parameters): term = np.multiply(error, X[:,i]) if (i == 0): grad[i] = np.sum(term) / len(X) else: grad[i] = (np.sum(term) / len(X)) + ((learningRate / len(X)) * theta[:,i]) return grad 与成本函数一样,将正则项加到最初的计算中。与成本函数不同的是,我们包含了确保第一个参数不被正则化的逻辑。这个决定背后的直觉是,第一个参数被认为是模型的“bias”或“intercept”,不应该被惩罚。 我们像以前那样测试新函数 # set X and y (remember from above that we moved the label to column 0) cols = data2.shape[1] X2 = data2.iloc[:,1:cols] y2 = data2.iloc[:,0:1] # convert to numpy arrays and initalize the parameter array theta X2 = np.array(X2.values) y2 = np.array(y2.values) theta2 = np.zeros(11) learningRate = 1 costReg(theta2, X2, y2, learningRate) 0.6931471805599454 我们能使用先前的最优代码寻找最优模型参数。 result2 = opt.fmin_tnc(func=costReg, x0=theta2, fprime=gradientReg, args=(X2, y2, learningRate)) result2 (数组([ 0.35872309, -3.22200653, 18.97106363, -4.25297831, 18.23053189, 20.36386672, 8.94114455, -43.77439015, -17.93440473, -50.75071857, -2.84162964]), 110, 1) 最后,我们可以使用前面应用的相同方法,为训练数据创建标签预测,并评估模型的性能。 theta_min = np.matrix(result2[0]) predictions = predict(theta_min, X2) correct = [1 if ((a == 1 and b == 1) or (a == 0 and b == 0)) else 0 for (a, b) in zip(predictions, y2)] accuracy = (sum(map(int, correct)) % len(correct)) print 'accuracy = {0}%'.format(accuracy) 准确度 = 91%

珍宝珠 2019-12-02 03:22:33 0 浏览量 回答数 0

问题

【精品问答】Python二级考试题库

珍宝珠 2019-12-01 22:03:38 1146 浏览量 回答数 2

回答

工作流:   根据 WfMC 的定义,工作流(Workflow)就是自动运作的业务过程部分或整体,表现为参与者对文件、信息或任务按照规程采取行动,并令其在参与者之间传递。简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。   工作流是针对工作中具有固定程序的常规活动而提出的一个概念。通过将工作活动分解成定义良好的任务、角色、规则和过程来进行执行和监控,达到提高生产组织水平和工作效率的目的。工作流技术为企业更好地实现经营目标提供了先进的手段。   1993年,国际工作流管理联盟(Workflow Management Coalition,WfMC)的成立标志着工作流技术开始进入相对成熟的阶段。为了实现不同工作流产品之间的互操作,WfMC在工作流管理系统的相关术语、体系结构及应用编程接口等方面制定了一系列标准。工作流管理联盟给出的工作流定义是:工作流是指整个或部分经营过程在计算机支持下的全自动或半自动化。在实际情况中可以更广泛地把凡是由计算机软件系统(工作流管理系统)控制其执行的过程都称为工作流。   一个工作流包括一组活动及它们的相互顺序关系,还包括过程及活动的启动和终止条件,以及对每个活动的描述。工作流管理系统指运行在一个或多个工作流引擎上用于定义、实现和管理工作流运行的一套软件系统,它与工作流执行者(人、应用)交互,推进工作流实例的执行,并监控工作流的运行状态。   一、工作流管理:   通常,工作流管理系统指运行在一个或多个称为工作流机的软件上的用于定义、实现和管理工作流运行的一套软件系统,它和工作流执行者(人、应用)交互,推进工作流实例的执行,并监控工作流的运行状态。在这里需要强调指出的是工作流管理系统不是企业的业务系统。在很大程度上,工作流管理系统为企业的业务系统运行提供一个软件支撑环境,非常类似于在单个计算机上的操作系统。只不过工作流管理系统支撑的范围比较大、环境比较复杂而已,所以也有人称工作流管理系统是业务操作系统(BOS - Business Operating System)。在工作流管理系统的支撑下,通过集成具体的业务应用软件和操作人员的界面操作,才能够良好地完成对企业经营过程运行的支持。所以,工作流管理系统在一个企业或部门的经营过程中的应用过程是一个业务应用软件系统的集成与实施过程。   二、工作流管理系统:   工作流管理系统可以用来定义与执行不同覆盖范围(单个工作者、部门、全企业、企业间)、不同时间跨度(分钟、小时、天、月)的经营过程。这完全取决于实际应用背景的需求。按照经营过程以及组成活动的复杂程度的不同,工作流管理系统可以采取许多种实施方式,在不同的实施方式中,所应用的信息技术、通信技术和支撑系统结构会有很大的差别。工作流管理系统的实际运行环境可以是在一个工作组内部或者在全企业的所有业务部门。   三、业务过程:   业务过程(business process)就是活动的集合,这些活动均关联于特定的托付事项(commitment),为过程的产出增值。相对于“工作流”,业务过程是一个更一般化的统称,而工作流这个词,则已经不能仅从字面含义或原理上去理解,它已经被赋予了更深一层的特定含义——专指基于信息技术规划、运作、管理的业务过程。   四、自动与协调:   “自动”(automate)是工作流的一个特征,但这主要是指它自动进行的特征,而不是说没有人的参与。工作流实际上是一个人-电脑协调的混合过程,在一个实际的工作流中,通常总有些步骤是人完成的。协调是工作流管理的一个目标或者特征,这包括了人与人、人与电脑,电脑(软件)之间等多种层面的含义。   五、监察与控制:   监察(Monitoring)与控制(Contorl)是工作流系统的重要功能与特征。这不仅包括对正在发生的业务过程(工作流),还包括它的定义或改变(比如BPR的过程)。这是工作流系统带给我们的明显好处之一。   六、标准化:   作流的概念被明确提出并得到重视的同时,人们就认识到了“标准化”在其中的重要性,有关工作流的标准开发和推广,基本是与“工作流”的开发和推广同步进行的。在这方面目前的权威性机构,是“工作流管理联盟”(Workflow Management Coalition, WfMC)。它成立于1993年8月,目前已拥有 130 余个成员,成员包括工作流产品的供应者、应用者,有关大学和研究机构和个人,是一个国际性的非赢利组织。在最近的投资成员(Funding members)清单中,可以看到诸如 Baan, HP, IBM, Microsoft, Oracle, Peplesoft, SAP AG, Xerox 等机构。   七、工作流与重规划:   从逻辑上,对工作流的关注和研究可以看作是对业务过程重规划(BPR)的一种深化。BPR的观点,要求我们将眼光投向实际业务进行的过程,但这个过程应当是什么样的,怎样分析、构造?工作流就是一个具体的、操作性的答案,它可以令我们从神秘的、难以预测和控制的“头脑风暴式”的“艺术的”业务过程创造,变成解析的、技术的、可控制和预测的工程化过程,如此,才真正体现出 re-engineering 中 engineering 的意义。   工作流与 BPR 的概念,已经被几乎所有的研究者联系在一起研究和应用。在这个领域有一个非常活跃的组织,即国际工作流与重规划协会( Workflow And Reengineering International Association, WARIA)。   八、工作流与企业工程:   无论从理论、方法上,还是对象、内容上,我们都有理由将“工作流”看作是企业工程的一部分。实际上,已有的关于工作流体系的描述,本身就是一个通用的业务模型框架。仅仅囿于工作流是不够的,必须对整个体系的目标及所有相关要素综合考虑——这正是企业工程。   九、工作流与IT应用体系:   与以往已经被采用的企业 IT 应用体系,例如 MRPII 或 ERP 相比,WFMS是一个相当重要的里程碑。(ERP的概念并不确定,我这里仅指其基本或较早期的含义而言)。从用户的角度,WFMS带来(或将要带来)的变化是极其强烈的,甚至可以形容为一种用户“梦想”的实现。   在一些老的“模块化”的产品中,系统的设计是通常是基于任务分割的,作业项目之间是分裂的。面向对象的技术,并不能直接解决这个的问题,相反,往往使系统变得更加混乱和琐碎。从操作上,典型地,我们必须不断地在层次结构的功能表(比如下拉菜单)或对象之间“进进退退”,或者在“神出鬼没”的对象以及相关菜单中捉迷藏。   工作流管理系统是一个真正的“人-机”系统,用户是系统中的基本角色,是直接的任务分派对象,他或她可以直接看到电脑针对自己列出的“任务清单”,跟踪每一项任务的状态,或继续一项任务,而不必从一个模块退出,进入另一个模块,搜索相应任务的线索。前者是面向功能或对象的,而后者是直接面向用户的。这样,用户的任务分派和任务的完成状态,可以被最大程度地电脑化和受到控制。   现在的典型工作流产品是客户-服务软件。而日益增长的重要途径是通过万维网界面,它可以令客户或远程的职员更好地参与。工作流的定义经常是借助于图形化工具,依照业务过程实例的情况定义相应工作的安排   OA(办公自动化): 引自肖淑男 2001-2-20   通常,OA 就是办公自动化,英文Office Automation的缩写。通过流程或特定环节与日常事务联系在一起,使公文在流转、审批、发布等方面提高效率,实现办公管理规范化和信息规范化,降低企业运行成本的一套系统的统称。   多年来,OA尚无一个确切的定义,人们对OA的看法和理解各有不同。笔者认为:OA本身就不是一个有确定界定的概念,它是一个过程、一种境界。它随技术的发展而发展,随人们办公方式和习惯以及管理思想的变化而变化。在技术发展过程中的每一个阶段,人们给OA赋予了不同的内容和新的想象,技术与管理的进步给OA打下了每一步发展的历史烙印。同时,不同行业、不同层次的人对OA的看法和理解也各有不同。也许正是OA这种变化和发展的特点使之成为30多年来常新不衰的话题。   现在有一种较普遍的偏见:认为OA仅仅是诸如公文流转、收发文管理、档案管理、会议安排、文献检索、电子表格、电子邮件等等这些非结构化数据的处理和交换过程,面向的用户群也只是机关办公室或企业的职能部门、文秘部门。其实,今天看来,OA应有更丰富的内容和层面,更广泛的用户群。以下是笔者对OA在功能上以及所涉及的技术范畴的肤浅理解,愿与同行商榷。   功能方面:广义面言,OA应该是一个企业除了生产控制之外的一切信息处理与管理的集合。它面向不同层次的使用者,便有不同的功能表现:   对于企业高层领导而言,OA是决策支持系统(DSS)。OA运用科学的数学模型,结合企业内部/外部的信息为条件,为企业领导提供决策参考和依据;   对于中层管理者而言:OA是信息管理系统(IMS),OA利用业务各环节提供的基础“数据”,提炼出有用的管理“信息”,把握业务进程,降低经营风险,提高经营效率;   对于普通员工而言:OA是事务/业务处理系统。OA为办公室人员提供良好的办公手段和环境,使之准确、高效,愉快地工作。   技术范畴:OA是计算机技术在办公业务中的合理应用。计算机技术是OA的前提。如果脱离计算机技术面阔谈OA,无异于痴人说梦。没有计算机技术,OA便成无源之水、无本之木。计算机对信息的存储与处理能力极大地改变了人们的办公方式,提高了工作效率。如:要建立决策支持系统,则需要数据仓库 、OLAP等技术;要建立信息管理系统,则要有数据库、程序设计语言等技术;要建立事务/业务处理系统,则离不开数据库、设计良好的人机界面和工作流控制、OLTP等技术。   OA是利用通信技术来实现人与机器、机器与机器及人与人的交流。通信技术是OA的基础。现代办公室不再是孤军奋战,而是一个团队的协同工作,团队中成员之间的协调、合作离不开通信技术;现代办公室也不再是闭门造车,企业需要与外界广泛的信息交流,这更离不开通信技术。没有通信技术的支持,OA便成空中楼阁。   OA是科学的管理思想在先进的技术手段下的物化。科学的管理思想是实现OA的核心。计算机技术和通信技术仅仅是为实现OA打下了基础,提供了可能。要真正实现OA,还需物化人类思维中科学管理的内容。正如仅有优质的画笔、画板、颜料而没有达.芬奇,就不会有蒙娜尼莎的微笑一样。不体现人类管理智慧,就不会有真正的OA,如果有,也只是技术的堆砌和摆设。   由此而知,OA是计算机技术、通信技术与科学的管理思想完美结合的一种境界和理想。我们一直在为实现OA而努力,但我们的成果仅仅是在某些环节、某些方面、部分地实现了OA的功能,与真正的OA尚有差距,差距的根本在于应用系统对管理思想的实现方面。 答案来源于网络

养狐狸的猫 2019-12-02 03:00:25 0 浏览量 回答数 0

回答

MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)最早是IBM开发的一个即时通讯协议,MQTT协议是为大量计算能力有限且工作在低带宽、不可靠网络的远程传感器和控制设备通讯而设计的一种协议。 MQTT协议的优势是可以支持所有平台,它几乎可以把所有的联网物品和互联网连接起来。 它具有以下主要的几项特性:1、使用发布/订阅消息模式,提供一对多的消息发布和应用程序之间的解耦;2、消息传输不需要知道负载内容;3、使用 TCP/IP 提供网络连接;4、有三种消息发布的服务质量:QoS 0:“最多一次”,消息发布完全依赖底层 TCP/IP 网络。分发的消息可能丢失或重复。例如,这个等级可用于环境传感器数据,单次的数据丢失没关系,因为不久后还会有第二次发送。QoS 1:“至少一次”,确保消息可以到达,但消息可能会重复。QoS 2:“只有一次”,确保消息只到达一次。例如,这个等级可用在一个计费系统中,这里如果消息重复或丢失会导致不正确的收费。5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;在MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、 可变头(Variable header)、 消息体(payload)三部分构成。MQTT的传输格式非常精小,最小的数据包只有2个bit,且无应用消息头。下图是MQTT为可靠传递消息的三种消息发布服务质量 发布/订阅模型允许MQTT客户端以一对一、一对多和多对一方式进行通讯。 下图是MQTT的发布/订阅消息模式 CoAP协议 CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。由于目前物联网中的很多设备都是资源受限型的,所以只有少量的内存空间和有限的计算能力,传统的HTTP协议在物联网应用中就会显得过于庞大而不适用。因此,IETF的CoRE工作组提出了一种基于REST架构、传输层为UDP、网络层为6LowPAN(面向低功耗无线局域网的IPv6)的CoAP协议。 CoAP采用与HTTP协议相同的请求响应工作模式。CoAP协议共有4中不同的消息类型。CON——需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。NON——不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。ACK——应答消息,接受到CON消息的响应。RST——复位消息,当接收者接受到的消息包含一个错误,接受者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。 CoAP消息格式使用简单的二进制格式,最小为4个字节。 一个消息=固定长度的头部header + 可选个数的option + 负载payload。Payload的长度根据数据报长度来计算。 主要是一对一的协议 举个例子: 比如某个设备需要从服务器端查询当前温度信息。 请求消息(CON): GET /temperature , 请求内容会被包在CON消息里面响应消息 (ACK): 2.05 Content “22.5 C” ,响应内容会被放在ACK消息里面 CoAP与MQTT的区别 MQTT和CoAP都是行之有效的物联网协议,但两者还是有很大区别的,比如MQTT协议是基于TCP,而CoAP协议是基于UDP。从应用方向来分析,主要区别有以下几点: 1、MQTT协议不支持带有类型或者其它帮助Clients理解的标签信息,也就是说所有MQTT Clients必须要知道消息格式。而CoAP协议则相反,因为CoAP内置发现支持和内容协商,这样便能允许设备相互窥测以找到数据交换的方式。 2、MQTT是长连接而CoAP是无连接。MQTT Clients与Broker之间保持TCP长连接,这种情形在NAT环境中也不会产生问题。如果在NAT环境下使用CoAP的话,那就需要采取一些NAT穿透性手段。 3、MQTT是多个客户端通过中央代理进行消息传递的多对多协议。它主要通过让客户端发布消息、代理决定消息路由和复制来解耦消费者和生产者。MQTT就是相当于消息传递的实时通讯总线。CoAP基本上就是一个在Server和Client之间传递状态信息的单对单协议。 HTTP协议http的全称是HyperText Transfer Protocol,超文本传输协议,这个协议的提出就是为了提供和接收HTML界面,通过这个协议在互联网上面传出web的界面信息。 HTTP协议的两个过程,Request和Response,两个都有各自的语言格式,我们看下是什么。请求报文格式:(注意这里有个换行) 响应报文格式:(注意这里有个换行) 方法method:       这个很重要,比如说GET和POST方法,这两个是很常用的,GET就是获取什么内容,而POST就是向服务器发送什么数据。当然还有其他的,比如HTTP 1.1中还有:DELETE、PUT、CONNECT、HEAD、OPTIONS、TRACE等一共8个方法(HTTP Method历史:HTTP 0.9 只有GET方法;HTTP 1.0 有GET、POST、HEAD三个方法)。请求URL:       这里填写的URL是不包含IP地址或者域名的,是主机本地文件对应的目录地址,所以我们一般看到的就是“/”。版本version:       格式是HTTP/.这样的格式,比如说HTTP/1.1.这个版本代表的就是我们使用的HTTP协议的版本,现在使用的一般是HTTP/1.1状态码status:       状态码是三个数字,代表的是请求过程中所发生的情况,比如说200代表的是成功,404代表的是找不到文件。原因短语reason-phrase:       是状态码的可读版本,状态码就是一个数字,如果你事先不知道这个数字什么意思,可以先查看一下原因短语。首部header:       注意这里的header我们不是叫做头,而是叫做首部。可能有零个首部也可能有多个首部,每个首部包含一个名字后面跟着一个冒号,然后是一个可选的空格,接着是一个值,然后换行。实体的主体部分entity-body:       实体的主体部分包含一个任意数据组成的数据块,并不是所有的报文都包含实体的主体部分,有时候只是一个空行加换行就结束了。 下面我们举个简单的例子: 请求报文:GET /index.html HTTP/1.1    Accept: text/*Host: www.myweb.com 响应报文:HTTP/1.1 200 OKContent-type: text/plainContent-length: 3  HTTP与CoAP的区别 CoAP是6LowPAN协议栈中的应用层协议,基于REST(表述性状态传递)架构风格,支持与REST进行交互。通常用户可以像使用HTTP协议一样用CoAP协议来访问物联网设备。而且CoAP消息格式使用简单的二进制格式,最小为4个字节。HTTP使用报文格式对于嵌入式设备来说需要传输数据太多,太重,不够灵活。 XMPP协议 XMPP(可扩展通讯和表示协议)是一种基于可扩展标记语言(XML)的协议, 它继承了在XML环境中灵活的发展性。可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输。XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议。   基本网络结构 XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。 服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统 的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过 TCP/IP连接到单服务器,然后在之上传输XML。 功能 传输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行符的方式发送(比如MSN)。而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。举个例子看看所谓的XML(标准通用标记语言的子集)流是什么样子的?客户端:123456<?xmlversion='1.0'?>to='example_com'xmlns='jabber:client'xmlns:stream='http_etherx_jabber_org/streams'version='1.0'>服务器:1234567<?xmlversion='1.0'?>from='example_com'id='someid'xmlns='jabber:client'xmlns:stream='http_etherx_jabber_org/streams'version='1.0'>工作原理XMPP核心协议通信的基本模式就是先建立一个stream,然后协商一堆安全之类的东西, 中间通信过程就是客户端发送XML Stanza,一个接一个的。服务器根据客户端发送的信息 以及程序的逻辑,发送XML Stanza给客户端。但是这个过程并不是一问一答的,任何时候 都有可能从一方发信给另外一方。通信的最后阶段是关闭流,关闭TCP/IP连接。  网络通信过程中数据冗余率非常高,网络流量中70% 都消耗在 XMPP 协议层了。对于物联网来说,大量计算能力有限且工作在低带宽、不可靠网络的远程传感器和控制设备,省电、省流量是所有底层服务的一个关键技术指标,XMPP协议看起来已经落后了。 SoAP协议 SoAP(简单对象访问协议)是交换数据的一种协议规范,是一种轻量的、简单的、 基于可扩展标记语言(XML)的协议,它被设计成在WEB上交换结构化的和固化的信息。  SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP), 简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到 远程过程调用(RPC)等大量的应用程序。SOAP使用基于XML的数据结构和超文本传输协议 (HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象。 总结: 从当前物联网应用发展趋势来分析,MQTT协议具有一定的优势。因为目前国内外主要的云计算服务商,比如阿里云、AWS、百度云、Azure以及腾讯云都一概支持MQTT协议。还有一个原因就是MQTT协议比CoAP成熟的要早,所以MQTT具有一定的先发优势。但随着物联网的智能化和多变化的发展,后续物联网应用平台肯定会兼容更多的物联网应用层协议。 作者:HFK_Frank 来源:CSDN 原文:https://blog.csdn.net/acongge2010/article/details/79142380 版权声明:本文为博主原创文章,转载请附上博文链接!

auto_answer 2019-12-02 01:55:21 0 浏览量 回答数 0

问题

极光推送一个朋友,三四天的Rails学习之路? 报错

优选2 2020-06-04 21:19:39 3 浏览量 回答数 1

问题

Nginx性能为什么如此吊

小柒2012 2019-12-01 21:20:47 15038 浏览量 回答数 3

问题

极光推送一个朋友,三四天的Rails学习之路? 400 报错

爱吃鱼的程序员 2020-06-02 13:32:16 0 浏览量 回答数 1

问题

极光推送一个朋友,三四天的Rails学习之路? 400 报错

爱吃鱼的程序员 2020-05-29 19:26:23 0 浏览量 回答数 1

问题

厉华:写一个开源容器引擎会是什么样的体验? 热:报错

kun坤 2020-06-10 10:01:12 3 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板