1、无线传感器网络:可以使用无线传感器网络(WSN)来监测主变温度。这些传感器可以通过Wi-Fi、蓝牙、Zigbee等无线技术将数据传输到后台服务器。
2、数据采集器:可以使用数据采集器来收集主变温度数据并将其传输到后台。数据采集器通常会连接到传感器,并使用有线或无线连接将数据传输到后台服务器。
3、物联网设备:可以使用物联网设备来监测主变温度。这些设备可以连接到传感器,并使用Wi-Fi、蓝牙、NFC等技术将数据传输到后台服务器。物联网设备通常具有处理器和存储器,可以在设备本地处理数据,并在需要时将数据上传到后台服务器。
近期准备session,希望能跟大家轻松地分享一些东西,一些常见的场景。比如:web后台服务器到底是如何工作的。
上网过程对于普通人:首先,他需要一台电脑,然后,他的电脑可以接入网络,最后,他可以打开浏览器键入自己想要浏览的网址,然后就可以上网了。但是对于计算机来讲,是一个比较复杂的过程,里面包含了信息如何保存,信息如何传递以及信息如何展示的过程。所以,针对整个上网过程,我们从前到后,分析一下其中包含的各种技术细节,可能不全,目的是抛砖引玉,希望大家在简单的流程当中学习更多的东西分享出来,一些基础知识则当做复习。之前buddy王老吉讲过浏览器的工作方式,所以本文内容不包含浏览器的工作方式,重点在于各种后台服务以及通信层面的分析。
前面说到,用户浏览器中键入网址便浏览网页信息,这个网址实际上就是URL,英文全称是Uniform Resource Locator——统一资源定位符。
完整的、带有授权部分的普通统一资源标志符语法看上去如下:
协议://用户名:密码@子域名域名顶级域名:端口号/目录/文件名文件后缀参数=值
协议部分可以是>
现在确实有不少这样的场景,当后台数据发生变化,需要主动“通知”前台进行页面刷新,实现方案有这么几种:
轮询
很容易理解,实现起来也非常简单的一种方法:客户端每隔一段时间向后台发送一次请求,把最新的数据取回来。
当然缺点也比较明显,如果定时任务的时间设置比较长,那么数据更新和展示会不及时;如果定时任务的时间设置的比较短,那么频繁地访问后台,也会增加后台服务器的压力。
长轮询
如果是轮询的话,客户端每次向后台请求数据的时候,都会建立一次连接;而长轮询,客户端发送请求给服务器之后,如果有最新数据的话,就直接返回,如果没有最新数据的话,就等待,当有新数据的时候再返回。
缺点也显而易见,因为保持连接也是会消耗资源的,并且如果长时间没有新数据的话,也会发生超时。
Iframe
这个方式的本质是基于Iframe的>
维护长链接就需要增加开销,而且需要考虑连接中断、重连等问题。
WebSocket
>
WebSocket,是要在客户端和服务器之间,建立一个通道,建立一个真的长链接;一旦确立WebSocket通信连接,不论服务器还是客户端,任意一方都可直接向对方发送数据,这个是真正意义的双向通信;并且数据格式可以是文本,也可以是二进制数据。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
1 从Service继承一个类。2 创建startService()方法。
3 创建endService()方法 重载onCreate方法和onDestroy方法,并在这两个方法里面来调用startService以及endService。
4 在startService中,通过getSystemService方法获取ContextLOCATION_SERVICE。
5 基于LocationListener实现一个新类。默认将重载四个方法onLocationChanged、onProviderDisabled、onProviderEnabled、onStatusChanged。对于onLocationChanged方法是我们更新最新的GPS数据的方法。一般我们的 *** 作都只需要在这里进行处理。
6 调用LocationManager的requestLocationUpdates方法,来定期触发获取GPS数据即可。在onLocationChanged函数里面可以实现我们对得到的经纬度的最终 *** 作。
7 最后在我们的Activity里面通过按钮来启动Service,停止Service。
示意代码如下:
package comoffbyegpsservice;
import androidappService;
import androidcontentContext;
import androidcontentIntent;
import androidlocationLocationListener;
import androidlocationLocationManager;
import androidosBinder;
import androidosIBinder;
import androidutilLog;
public class GPSService extends Service {
// 2000ms
private static final long minTime = 2000;
// 最小变更距离10m
private static final float minDistance = 10;
String tag = thistoString();
private LocationManager locationManager;
private LocationListener locationListener;
private final IBinder mBinder = new GPSServiceBinder();
public void startService() {
locationManager = (LocationManager) getSystemService(ContextLOCATION_SERVICE);
locationListener = new GPSServiceListener();
locationManagerrequestLocationUpdates(LocationManagerGPS_PROVIDER, minTime, minDistance,
locationListener);
}
public void endService() {
if (locationManager != null && locationListener != null) {
locationManagerremoveUpdates(locationListener);
}
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return mBinder;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)