JavaScript —— 下一代物联网全栈开发
作者简介:李知周,中国科学院微系统与信息技术研究所博士,物联网早期创业者,发起了开源物联网项目 Openfpgaduino,目前在国际知名投资银行从事基于大数据与机器学习的网络安全开发。
本文为《程序员》杂志原创文章,未经授权,请勿转载
关注公众号“CSDN 物联网开发”微信公众号,了解更多物联网资讯与干货
Jeff Atwood 曾提出“任何能够用 JavaScript 实现的应用,最终都必将用 JavaScript 实现”他对 JavaScript 的推崇不言而喻。而当下这个物联网大热的时代,JavaScript 支持 HTTP 和 JSON、支持函数式编程、可提供交互式环境等特点堪称适用于物联网全栈开发。本文详解了 JavaScript 可参与的每一个物联网过程,并针对开源项目进行了汇总。
物联网节点 JavaScript 开发
网络中,HTTP 协议与 JSON 数据格式特别是 RESTful API 无疑具有支配地位,各种云服务,数据传输都基于这些协议来进行。而 JavaScript 为 HTTP 和 JSON 提供了最好的支持,当物联网系统采用 JavaScript 开发时,天然对接了互联网上海量的云服务与云资源,包括云存储、云计算等一系列资源都可被方便调用,就像你在手机端访问各种云服务一样。微服务构架在服务器端的兴起,让 JavaScript 编写的每一个物联网节点都可以作为一个大系统中的微服务,通过 RESTful API 接口提供自己的服务。
在设计模式上,JavaScript 的回调与事件循环等基于事件驱动的编程模型非常适合物联网。在物联网环境下,环境在不断变化,物联网节点要不断对环境的变动做出响应,换句话说物联网系统通常是 I/O 密集型的系统,回调与事件循环高效地完成了密集 I/O 操作这项工作,而事件响应式编程相比于多进程和多线程编程在内存的使用上又非常高效,而这又是物联网系统所需要的,通常物联网系统都是资源受限系统,内存与 CPU 的频率都非常有限。物联网节点底层开发中通常采用中断响应模式,在 CPU 中由称为中断控制器的硬件来检查中断信号的出现,并在中断出现后控制 CPU 执行特定程序片段,这一执行模式和 JavaScript 的回调一致,很容易使用 JavaScript 回调机制来实现硬件的中断响应。
物联网节点的部署特点决定了其回收维护成本非常高昂甚至是不可接受的。而物联网节点要不断应对新的环境与应用需求,所以在开发中物联网节点的远程部署与更新是非常重要的一个功能。JavaScript 本来就是实现从服务器端向客户端部署的一门语言,其天然就具有在网路上实现远程部署的属性,实现起来就像你用浏览器下载 JavaScript 脚本并运行一样简单。JavaScript 的热部署也是一个比较热门的研究领域,通过热部署,物联网节点可以实现在运行过程中远程添加新功能,远程修正 bug。
前面讲了使用 JavaScript 来做物联网开发的好处,那么也有必要讲一下 JavaScript 在物联网应用中相对于 Web 应用的不同以及误区。第一个问题就是实时性。作为嵌入式系统的物联网网关,首要面对的就是实时性问题,比如各种电机的控制,一些电压信号的采集都是有实时性要求的,需要在规定的时间内完成所需工作。由于 JavaScript 的内存管理使用垃圾收集机制,所以必然存在由于垃圾收集而导致应用中断执行的情况,甚至有可能在一些情况下造成实时性要求遭到破坏。所以在设计 JavaScript 物联网实时程序时需要考虑内存垃圾数据时间对实时性的影响。当然,也可以采用另一个设计模式,就是把实时任务使用 C 语言编写的单独线程来实现,利用 JavaScript 的单线程特点,这种设计模式不会在嵌入式系统中占用过多的资源,毕竟 JavaScript 本来就是一种嵌入在浏览器里的语言。另一方面,由于物联网网关是需要长期运行的设备,相对于 Web 端需要有更高的可靠性与稳定性,所以单元测试与集成测试是必须的,而且需要使用代码分析工具保证代码没有任何内存及文件句柄的泄漏。即使在垃圾收集环境下,内存泄漏也是存在的,而在嵌入式系统中由于内存有限,特别容易泄漏。好在服务器端 JavaScript 的开发应用已经有很长一段时间了,可以从服务器开发里借鉴不少工具。
JavaScript 物联网节点开发开源项目汇总
OpenFPGAduino(https://github.com/OpenFPGAduino/)是笔者设计的基于 Node.js 与 FPGA 的开源物联网软硬件开发平台,与 Arduino 等快速原型开发平台类似。基于 Node.js 提供了网络交互能力,特别包括用于开发的网络 IDE 以及类似于树莓派的 Linux 软件开发系统,方便安装各种 Linux 通用软件,并且通过 FPGA 提供了可编程的兼容 Arduino 外围接口用于与丰富的物联网传感器进行连接。
iotjs(https://github.com/Samsung/iotjs)是三星开发的嵌入式 JavaScript 执行环境,能够在几百 KB 内存的嵌入式系统上,不依靠操作系统实现完整的网络与 JavaScript 支持。JavaScript 解释引擎采用
JerryScript(https://github.com/jerryscript-project/jerryscript),事件循环采用 libtuv。可以说是 Node.js 的嵌入式版本,其 API 与 Node.js 相兼容。
Esprunio(https://github.com/espruino/Espruino)是为微控制开发的嵌入式 JavaScript 解释引擎,提供了最小化的配置,可以在内存低至 8KB 的微控制器上执行 JavaScript 语言。
Cyclon(https://github.com/hybridgroup/cylon)是使用 JavaScript 来做机器人控制的项目,支持市面上主要的开发板,通过提供各种外设的驱动,实现了不需要写一句 C 语言就能开发和组装一个机器人。
物联网 JavaScript 大数据处理
现在大数据技术方兴未艾,在这些技术中,最基本的思想是 MapReduce,这一思想将不同运算拆解为 Map 与 Reduce,然后将这些 Map 与 Reduce 任务在集群当中最大限度地并行执行。实现 MapReduce 模式编程最重要的一点就是支持函数式编程或者又称为 Lambda 编程,所有的 Map 与 Reduce 操作都接受函数式编程作为参数。大数据的成功推动了函数式编程的复兴,由此多数现代编程语言包括 C++与 Java 的新版本均支持函数式编程。JavaScript 在它出生的那一天就支持函数式编程,其回调函数就是一种函数式编程模式。自然而然,支持 Map 与 Reduce 也不是什么困难的事情,因此使用 JavaScript 做物联网大数据分析与处理非常容易而高效。JSON 数据格式因为格式简单、处理方便的特点而受到不少青睐,被大量应用于 HTTP 网络传输,现有互联网上的基础设施与云服务也都采用 JSON 格式。以这些设施作为数据源,就要使用 JavaScript 来处理大数据,这是因为 JSON 作为 JavaScript 代码片段,本质上来说一切基于 RESTful API 设计的接口几乎都是对 JavaScript 友好的,当然为了效率,有时会使用 JSON 的二进制形式 BSON。
由于物联网的对称性,物理网的节点不仅可以是数据的收集者,同样可以是数据的发起者,使用 JavaScript 来处理物联网大数据,那么每个物联网数据节点也能够发起大数据的处理,并利用后台大数据环境做出决策并响应环境的变化。这样利用 JavaScript 将物联网前端和后端数据处理直接无缝链接起来,实现了大数据的实时处理与响应的 Lambda 构架,并同时完成了批处理与实时处理构架的统一。在未来,可以用 JavaScript 设计基于 Node.js 的处理框架,把物理网节点当作大数据节点来统一物联网中数据的处理与传输。
机器学习作为现在最热门的大数据处理手段不得不提。由于 JavaScript 在浏览器端的支配地位,使用 JavaScript 做机器学习的尝试也非常多,有了 JavaScript 的机器学习库,就可以非常简单地在浏览器上运行一些机器学习的小程序,同样也可以将这些机器学习库运行在 Node.js 上,使得物联网节点也具有一定的机器学习能力及数据处理能力。当然使用 JavaScript 直接控制深度机器学习集群也是一个不错的选择,JavaScript 在数据可视化方面的成功,帮助了它能够很方便地可视化机器学习的过程与结果,方便以远程方式来控制机器学习集群。
JavaScript 物联网大数据开源项目
Eclairjs(https://github.com/EclairJS/eclairjs-node)是基于 Node.js 的 Spark 大数据处理平台前端,通过 Eclairjs,可以使用 JavaScript 来操作基于内存处理的大数据分析平台 Spark,通过 Spark 内置的调度器,实现了在整个集群上调度资源,以最大化并行度来执行 JavaScript 的算法。目前,Spark 是最主流和发展最快的大数据处理平台。
skale(https://github.com/skale-me/skale-engine)是一个完全使用 JavaScript 开发,采用 Node.js 作为执行环境的分布式数据处理系统,具有比 Spark 更快的性能。
MQTT 是为物联网设计的轻量级通讯协议,协议基于 TCP/IP,适用于低带宽不可靠环境。协议的开销非常小,支持发布订阅模式,是种非常高效的通信协议。MQTT.js(https://github.com/mqttjs/MQTT.js)是 Node.js 的 MQTT 通信模块,实现了 Node.js 收发 MQTT 数据。
Kafka 是大数据分布式消息总线,提供了对海量消息的持久化能力,通过将接收到的数据直接持久化到硬盘,提供了稳定的数据吞吐量以及高可用性。Kafka Rest(https://github.com/confluentinc/kafka-rest)模块为 Kafka 消息总线提供了 Restful API 的支持,无论是使用浏览器还是 Node.js 都可以方便使用 JavaScript 来收发消息。
convnetjs(https://github.com/karpathy/convnetjs)是完全用 JavaScript 写成的神经网络机器学习库,可以运行在浏览器中或 Node.js 中。convnetjs 提供了许多有趣的例子,在浏览器上实现了对神经网络学习过程的可视动画呈现与交互模式,对理解神经网络机器学习有非常好的帮助。
作为深度神经网络学习方向最重要也是最热门的项目,Google 的 TensorFlow 是深度学习开源的里程碑。TensorFlow 的开源使得使用深度学习来做数据处理已经不再是一件高难度的事情。Node-tensorflow(https://github.com/node-tensorflow/node-tensorflow)是一个 NodeJS API,使用了 Google 的开源机器学习库 TensorFlow。
物联网 JavaScript 数据展示
在浏览器端,JavaScript 在数据的可视化方面早已处于支配地位,作为现在几乎唯一可在所有浏览器上运行的编程语言,使用 JavaScript 不仅可以给用户提供交互式的环境,而且可以做出非常漂亮的图表与动画效果,包括两维的图表曲线以及三维的虚拟空间,都可以使用 JavaScript 控制浏览器来实现,现在许多基于浏览器的 VR 环境也可以通过 JavaScript 来开发了。使用 JavaScript 来做物联网的数据展示实在太合适不过了。
当今互联网世界,JavaScript 已经是一种全栈网络开发语言。特别是 HTML5 兴起以后,JavaScript 不再局限于浏览器端,而是将触手伸到了网络的方方面面,包括物联网端、手机的移动端和传统的 PC 端。HTML5 为浏览器设计,很好地发挥了 JavaScript 的跨平台特点,真正做到了开发一次 JavaScript 代码,从手机上的 iOS、Android 到电脑端的 Windows、macOS、Linux 的跨平台运行。虽然目前 JavaScript 在性能上仍然无法与原生开发应用相匹敌,但是仅使用单一的 JavaScript 来开发各种应用程序,开发成本与响应速度上是其他开发方式所无法比拟的。特别是在物联网开发环境中,很多应用是轻量级的,对性能没有特别高的要求,但是却需要依照不同物联网环境进行不同的定制与适配,JavaScript 来做这样的数据展示工作再合适不过。根据网络的对称性特点,甚至于,完全可以用 JavaScript 来实现在物联网节点上完成数据展示的工作,一如我们用手机来进行数据展示与控制。
JavaScript 数据展示开源项目汇总
D3(https://github.com/d3/d3)是基于 SVG 的矢量图操作工具。通过使用 JavaScript,D3 将数据以矢量图形式展示出来并提供了任意伸缩的能力,在 HTML5 出现之前,D3 是二维可视化的底层标准。通常许多绘制图表与数据可视化工具都使用 D3 作为底层驱动引擎,在其之上提供用户友好的 API 接口。
three.js(https://github.com/mrdoob/three.js/)是基于 WebGL 的 JavaScript3D 绘图工具。通过 WebGL 扩展,JavaScript 语言实现了直接驱动底层显卡进行 3D 绘图。three.js 在 3D 图像基础上还提供了 VR 支持,可以方便的使用 JavaScript 来实现 VR 数据展示。
ionic(https://github.com/driftyco/ionic)是基于 AngularJS 的移动端跨平台开发环境,能够在一个统一的框架下使用 JavaScript HTML CSS,同时完成开发 iOS、Android、Window Phone 程序,并根据各个环境的不同 UI 做自动适配。
Electron(https://github.com/electron/electron)是基于 Node.js 与 chrome 的跨平台桌面开发环境,electron 通过将浏览器内核和后台 Node.js 服务进行打包,实现了一个使用 JavaScript 的全栈开发环境,无需任何修改就能够将程序部署到 Windows、macOS、Linux 平台上。
nw(https://github.com/nwjs/nw.js)是轻量级的 JavaScript 跨平台桌面开发环境,它实现了在 HTML 代码中直接调用 Node.js 的各种 API 函数,提供了一个平滑自然的桌面应用开发环境,隐藏了客户端服务器编程的细节。
物联网 JavaScript 实例讲解
为更好理解 JavaScript 物联网开发,下面以笔者设计的物联网系统为例,详细介绍物联网系统的设计。所有设计资料都是开源的,读者可以对照源码网页与文档。( http://openfpgaduino.github.io)
物联网网关最小系统硬件设计
对于应用于物联网的嵌入式系统,系统的硬件设计是重要的组成部分,通常来说应对不同的应用,嵌入式硬件的系统设计会有所不同,每个系统都会按照相应的应用场景进行调整。但是物联网的核心系统通常是一个设计构架可以应用于一大类的系统,所需要调整的通常是外围设备。
如图 1 所示是笔者设计的物联网网关最小系统,在系统设计思想上首先保证了核心系统的通用性,采用了 ARM 处理器。因为是网关节点,设计上需要网关直接连接 IP 网络并提供全功能的网络服务,因此选择了能够完整运行 Linux 系统的 ARM9 处理器,运行完整的 Linux 也是能够运行 Node.js 与完整 JavaScript 的必要条件。由于采用了标准 Linux,虽然 Linux 内核提供了一些实时性补丁,但由于编程模型复杂而且也不适合与 Node.js 集成,因此在最小核心系统中加入了 FPGA。FPGA 能够在硬件层面完成实时响应,解决了系统的实时响应需求,其次由于 FPGA 是一种可配置系统,能够根据应用需要进行设计与配置,所以引入 FPGA 也极大提高了系统的适配能力,为灵活适配各种不同物联网应用提供了基础。
物联网网关系统软件设计
物联网网关的软件设计完全是基于硬件设计的构架,最大限度发挥硬件的功能,设计流程如下:
- 首先在 ARM9 处理器上运行完整的 Linux 系统,其拥有完整的网络服务,并能根据需要通过 APT-GET 命令来安装所需要的软件包。
- 在 Linux 系统基础上,运行 Node.js+MongoDB 来提供所有网络服务。
- 在 Node.js 里运行 HTTP 服务器来提供基于 Restful API 的各种本地服务,包括各种外设与 I/O 的控制。
- 运行 HTTP 服务器,基于 RESTful API,实现了基于 HTML5 的云 IDE 开发环境。方便技术极客对网关的功能进行定制,这些 IDE 包括了 JavaScript 的 IDE,基于图形编程的 Blockly IDE 和可以配置 FPGA 模块功能和引脚定义的 Web 设计工具,当然也包括较为底层的 C 语言 IDE。
有了这些功能,用户就可以根据自己的需要,编写简单的程序来控制与物联网网关连接的任何设备,实现自己的智能物联网。
在板子内部,通过实现 Linux 内核驱动的用户空间模式,实现了 Node.js 直接访问 FPGA 内存空间、控制 FPGA 内部逻辑,并最终控制与 FPGA 相连接的各种物联网外设的功能。同时还实现了 Node.js 对 FPGA 的现场再配置,这样直接通过网络下载 FPGA 配置文件,即可现场改变整个核心系统。
物联网云构建系统设计
如图 3 所示是物联网网关的云构建系统,图中可以看到物联网云构建系统由 GitHub,Docker Build 与七牛云存储三部分组成。云构建系统的想法来源于持续集成,在软件工程里,持续集成的概念已经非常普遍了,每次有代码改动的提交都会触发一个编译测试的持续过程。模仿软件持续集成,在云端构建了一个对应于物联网网关的持续集成环境,选择云端是因为嵌入式系统本身的能力与处理速度都有限,不适于做为持续集成的构建环境。在云构建系统中,使用 GitHub 来管理代码的基础版本,使用 Docker Hub 的容器构建机制完成应用程序与 FPGA 程序的构建,最后使用七牛云做为构建结果的分发平台。所有开发板通过 RESTful API 驱动云编译环境,并访问七牛云来实现程序配置的升级。利用这一套云持续集成系统,不仅可以迅速对应用进行部署而且可以开放支持用户进行自定义开发的云开发环境,用户利用这一云环境,能够轻松实现对 FPGA 的定制设计,实现一套云端 FPGA 设计环境。
物联网大数据处理系统设计
如图 4 所示是物联网大数据处理系统的设计构架图,物联网网关上收集到的物联网数据被系统上的 Node.js 源源不断地送往大数据消息总线 Kafka 的 HTTP proxy,每一个 Kafka HTTP proxy 可以承接数千个这样的物联网网关,而 proxy 又将汇总的的数据发送到 Kafka 的集群中做进一步汇总,然后在 Kafka 集群内部实现对数据的 ETL 过程,包括数据异常值的过滤,重复数据的去除,数据格式的转换。最后利用 Kafka 集群,将数据发送到不同的下游消费者那里,先发送到大数据存储系统 S3 或者 HDFS 做永久保存,为将来用 Hadoop 或者 Spark 等离线分析系统提供数据;接着数据被发送到 ElasticSearch 中做索引,方便对数据进行快速的搜索与查询,并且利用 Kibana 做数据的可视化,提供整个数据流的健康状态监控;最后数据被发送到实时在线大数据处理系统 Spark Streaming 中做数据在线分析、机器学习等任务,实现数据在在线分析与响应。
参考文献
- https://blog.jscrambler.com/javascript-the-perfect-language-for-the-internet-of-things-iot/
- http://fex.baidu.com/blog/2015/05/nodejs-hot-swapping/
- https://cnodejs.org/topic/5659a9e0c4fa25cb27cc3c23
- http://openfpgaduino.github.io/docs/index.html
- http://blog.csdn.net/brucesea/article/details/45937875
- https://www.burakkanber.com/blog/machine-learning-in-other-languages-introduction/
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 理解javascript中的MVVM开发模式
MVVM的全称是Model View ViewModel,这种架构模式最初是由微软的MartinFowler作为微软软件的展现层设计模式的规范提出,它是MVC模式的衍生物,MVVM模式的关注点在能够支持事件驱动的UI开发平台,例如HTML5,[2][3] WindowsPresentation Foundation (WPF), Silverlight 和 t ZK …...
2024/4/20 21:12:02 - 我的VC++6.0中没有Microsoft ADO Data Control 6.0 控件怎么解决?
刚开始是想解决Gallery中没有Register ActiveX Controls的问题,查来查去,好像需要先安装Microsoft ADO Data Control 6.0 这个插件,可是我的VC++6.0里也没有这个东西,有没有高手能给解决一下...
2024/4/20 21:12:01 - 《划时代-51单片机C语言全新教程》-第三章 开发环境 概览
(请复制整个下载地址到迅雷、快车、QQ旋风进行下载) 电子书下载地址:http://files.cnblogs.com/wenziqi/划时代-51单片机C语言全新教程.rar 转载于:https://www.cnblogs.com/wenziqi/archive/2010/07/05/1771277.html...
2024/4/20 23:54:33 - 基础练习 十六进制转换成十进制
/*问题描述从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535*/ #include<stdio.h> #include<string.h>int main(void) {int i=0;…...
2024/4/20 23:54:32 - 秒懂Java代理与动态代理模式
版权申明】非商业目的可自由转载 博文地址:https://blog.csdn.net/shusheng0007/article/details/80864854 出自:shusheng007设计模式系列文章: 秒懂设计模式之建造者模式(Builder Pattern) 秒懂设计模式之简单工厂模式(Simple Factory Pattern) 秒懂设计模式之工厂方法…...
2024/4/20 23:54:30 - 将OCX控件打包成EXE,实现双击后自动注册
工具:2345好压【其他压缩软件应该大同小异】第一步:首先将要打包的OCX控件,以及该控件所依赖的DLL文件放到桌面;第二步:1、新建文本文档,取名 register.txt,文档内写入 regsvr32 .\你的控件名2、更改文档后缀名为 bat ,即:名称改为:register.bat第三步:将OCX…...
2024/4/20 23:54:29 - 《划时代-51单片机C语言全新教程》-第七章 串口 概览
(请复制整个下载地址到迅雷、快车、QQ旋风进行下载) 电子书下载地址:http://files.cnblogs.com/wenziqi/划时代-51单片机C语言全新教程.rar 转载于:https://www.cnblogs.com/wenziqi/archive/2010/07/05/1771362.html...
2024/5/7 17:27:47 - 软件架构设计原则和模式(上):分层架构设计
#绪论 # 本文打算探讨一下软件架构设计的一些设计原则与经过实践验证的设计模式。这些软件架构设计的原则和模式已经有几十年的历史了。 #分层架构设计# 软件,应该根据其职能分成多个层次。分层架构设计思想,有很多成功的例子。如网络设计上,OSI七层网络模型,就把网络应用软…...
2024/4/20 23:54:28 - c# runas
Process Proc = new Process();ProcessStartInfo ProcStartInfo = new ProcessStartInfo(textBox_Command.Text);ProcStartInfo.UseShellExecute = true;ProcStartInfo.Verb = "runas";Proc.StartInfo = ProcStartInfo;Proc.Start();转载于:https://www.cnblogs.com/…...
2024/4/20 23:54:26 - JavaScript自定义事件--高级技巧
观察者模式事件是JavaScript和浏览器交互的主要途径。事件是一种叫做观察者的设计模式,这是一种创建松散耦合代码的技术。 观察者模式:由两类对象组成,主体和观察者,主体负责发布事件,观察者通过订阅这些事件来观察主体。该模式的一个重要概念是主体并不知道观察者的任何…...
2024/4/29 6:22:12 - C# Process类在程序中实现以管理员方式运行外部进程运行
var process = new Process {StartInfo ={WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory,UseShellExecute = true,FileName = xxx.exe,CreateNoWindow = true,Verb = "runas"} }; process.Start();[WorkingDirectory]外部启动程序运行路径 [Verb]"…...
2024/4/20 23:54:25 - VS2010 C# ReportViewer控件新手上路心得
(永远不要抱怨)环境:Visual Studio 2010, C#; 前言:本来是用VS2010连接Oracle数据库做一个报表功能,数据集设置部分出了些问题还未解决,因此先用本地动态数据为测试用例先熟悉VS自带的ReportViewer控件。新手上路,共同进步。牛蛙可以忽略。 本文主要包含以下内容:一、Re…...
2024/4/20 23:54:23 - javascript推荐书籍
WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正规教育,大多数人都是靠自己自学成才。本文主要介绍自己从事web开发以来(从大二至今)看过的书籍和自己的成长过程,目的是给想了解 JavaScript或者是刚接触JavaScript的朋友,介绍如何通过循序渐进的看书来学习…...
2024/4/20 23:54:22 - C#调用Bat文件
private void task(object sender, EventArgs e) {Process pro = new Process();pro.StartInfo.UseShellExecute =true;pro.StartInfo.FileName = this.txtCMD.Text;pro.StartInfo.CreateNoWindow =true;pro.Start(); }...
2024/4/20 21:12:13 - 《划时代-51单片机C语言全新教程》-第十章 数码管 概览
(请复制整个下载地址到迅雷、快车、QQ旋风进行下载) 电子书下载地址:http://files.cnblogs.com/wenziqi/划时代-51单片机C语言全新教程.rar 转载于:https://www.cnblogs.com/wenziqi/archive/2010/07/05/1771373.html...
2024/4/20 21:12:11 - 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤。 你可以在下面的目录下找到相应的样例程序: <安装目录>\DeveloperKit\Samples\Developer_Guide_Scenarios\ ArcGIS_Engine\Building_an_ArcGIS_Control_Applicat…...
2024/4/20 21:12:10 - Javascript的调试利器:Firebug使用详解
Javascript的调试,是开发Web应用尤其是AJAX应用很重要的一环,目前对Javascript进行调试的工具很多,我比较喜欢使用的是Firebug。Firebug是Joe Hewitt开发的一套与Firefox集成在一起的功能强大的web开发工具,可以实时编辑、调试和监测任何页面的CSS、HTML和JavaScript。本文…...
2024/4/20 21:12:09 - 51单片机入门教程(0)—— 开发环境配置
51单片机入门教程(0)—— 开发环境配置 本教程包含51单片机开发环境Keil_C51的安装、破解和汉化,以及51单片机仿真环境Proteus的安装、破解。 (说明:本教程仅供学习交流之用,禁止任何商业用途!请在24小时之内删除,如要使用Keil和Proteus请购买正版) 1、 Keil_C51 1.1 …...
2024/4/20 21:12:11 - 松翰单片机--SN8F5702学习笔记(二)HelloWorld
第一个程序的基本流程 1、时钟初始化、看门狗配置 注意:对于用C语言或汇编语言开发的程序,程序的第一行“必须设置”CKCON=0x70,然后设置CLKSEL=0x07~ 0x00,CLKMD=0x69,CKCON=0x00 ~ 0x70,这个优先级不能修改为了节能的目的,微控制器内置三种不同的运行模式:正常模式:…...
2024/4/23 11:49:11 - javascript——从「最被误解的语言」到「最流行的语言」
JavaScript曾是“世界上最被误解的语言”,因为它担负太多的特性,包括糟糕的交互和失败的设计,但随着Ajax的到来,JavaScript“从最受误解的编程语言演变为最流行的语言”,这除了幸运之外,也证明了它其实是一门优秀的语言。 我们应该把 javascript 当作一门真正的编程语言,…...
2024/4/20 21:12:07
最新文章
- Linux——MySQL编译安装、RPM安装、yum安装
文章目录 Linux——MySQL编译安装、RPM安装、yum安装一、编译安装二、RPM安装三、yum安装 Linux——MySQL编译安装、RPM安装、yum安装 卸载mysql # 查看是否安装了mysql [rootcsq ~]# rpm -qa |grep mysql mysql-community-server-5.7.36-1.el7.x86_64 mysql-community-common-…...
2024/5/7 17:57:46 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - 安卓java打包uniapp原生插件 和 uniapp使用安卓android原生插件
1.uniapp dcloud官方文档 简介 | uni小程序SDK 2.前提,需要有经验的安卓java开发人员,并且同时具备uniapp移动端开发经验。说明:android打包的.aar和uniapp需要的.aar是不一样的,uniapp需要的.aar是需要有一些特定配置的&#x…...
2024/5/7 9:16:07 - 开启 Keep-Alive 可能会导致http 请求偶发失败
大家好,我是蓝胖子,说起提高http的传输效率,很多人会开启http的Keep-Alive选项,这会http请求能够复用tcp连接,节省了握手的开销。但开启Keep-Alive真的没有问题吗?我们来细细分析下。 最大空闲时间造成请求…...
2024/5/5 19:08:29 - axios拦截器:每次请求自动带上 token
Step 1:创建Axios实例并添加拦截器 在你的Vue项目中,一般我们会先导入axios,然后创建一个axios实例。这样做是为了方便统一管理和配置。 import axios from axios; // 引入axios// 创建一个axios实例 const service axios.create();// 添加请…...
2024/5/4 22:20:25 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/7 5:50:09 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/7 9:45:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/7 14:25:14 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57