GVKun编程网logo

js的push()方法(js的push方法 结果少了 是啥原因)

8

本文将为您提供关于js的push()方法的详细介绍,我们还将为您解释js的push方法结果少了是啥原因的相关知识,同时,我们还将为您提供关于Androidpush(一):SMSpush、Array的p

本文将为您提供关于js的push()方法的详细介绍,我们还将为您解释js的push方法 结果少了 是啥原因的相关知识,同时,我们还将为您提供关于Android push (一):SMS push、Array的push与unshift方法性能比较分析、Array的push与unshift方法性能比较分析_javascript技巧、at&t 汇编 pushl push 的问题的实用信息。

本文目录一览:

js的push()方法(js的push方法 结果少了 是啥原因)

js的push()方法(js的push方法 结果少了 是啥原因)

js 的push 方法

push   方法  
  将新元素添加到一个数组中,并返回数组的新长度值。  
   
  arrayObj.push([item1   [item2   [.   .   .   [itemN   ]]]])  
   
  参数  
  arrayObj  
   
  必选项。一个   Array   对象。  
   
  item,   item2,.   .   .   itemN  
   
  可选项。该   Array   的新元素。  
   
  说明  
  push   方法将以新元素出现的顺序添加这些元素。如果参数之一为数组,那么该数组将作为单个元素添加到数组中。如果要合并两个或多个数组中的元素,请使用   concat   方法。  
   
   
  */  
  Array.prototype.push=function(){  
          var   len=arguments.length;  
          if(len>0)for(var   i=0;i<len;i++)this[this.length]=arguments[i];  
          return   this.length;  
          }  
  var   a=[1,2,3,4]  
  a.push(5)  
  alert(a)  
  alert(a.push(6))</script>    

Android push (一):SMS push

Android push (一):SMS push

Android push (一):SMS push

移动终端为了节省电量和网络流量,不再采用轮训服务器的方式来收集数据,而是在服务器有数据需要发送到终端时通知终端。我们称这种机制叫推送(push)。终端接收到通知消息,如果客户端应用正则运行,则连接服务器接收数据,即使客户端程序不在运行状态,也可以启动客户端程序去接收说句,或者以一定的方式通知用户服务器有数据变化。

短信(SMS)Push 和 Ip push是比较常见的两种push方式。

本篇主要简单说说Sms push。

 

Sms push的原理:

sms push是通过发送二进制短信到移动终端,来达到通知终端的目的。客户端拦截这类短信,分析短信PDU的数据,然后采取相应的操作。push短信是通过Wap push来承载的。其内容包括头部和数据两部分,头部中应该含有目的端口和原端口号(可类比IP报文)。

由于发送短信需要运营商的支持,比如移动的邮件推送网关(GEGW:GPRS Email Gateway),依赖性比较强。

Android客户端拦截短信处理:

客户端静态注册一个广播接收器,即使应用不在运行,广播接收器也能拦截短信。

 <receiver android:name=".service.receiver.MyBroadcastReceiver">
            <intent-filter android:priority="1000">
                <action android:name="android.intent.action.DATA_SMS_RECEIVED" />
                <data android:scheme="sms" android:host="localhost" android:port="16001" />
            </intent-filter>
这样当push短信下发时(监听到端口16001的数据),系统发起Intent激活广播接收器,广播接受器在其事件回调函数中进行处理


@Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (TextUtils.equals(action, "android.intent.action.DATA_SMS_RECEIVED")) {
            handleDataSmsReceived(context, intent);
        }
}

在处理函数handleDataSmsReceived中,获取pdu数据并解析,了解服务器的数据发生何种变化,客户端可以进行相应处理。

简易实现代码如下:


private void handleDataSmsReceived(Context context, Intent intent) {
        Uri uri = intent.getData();
        int port = uri.getPort();//接受端口 16001
        SmsMessage[] msgs = getMessagesFromIntent(intent);
        String senderNumber = msgs[0].getOriginatingAddress();//短信发送方的电话号码
        int type =  parse(msgs)//解析 pdu的业务部分数据,根据与服务器交互的协议去解
        switch(type){
             //不同的情况分类处理
        }
}


获取的短信的方法


private static final SmsMessage[] getMessagesFromIntent(Intent intent) {
        Object[] messages = (Object[]) intent.getSerializableExtra("pdus");
        byte[][] pduObjs = new byte[messages.length][];

        for (int i = 0; i < messages.length; i++) {
            pduObjs[i] = (byte[]) messages[i];
        }
        byte[][] pdus = new byte[pduObjs.length][];
        int pduCount = pdus.length;
        SmsMessage[] msgs = new SmsMessage[pduCount];
        for (int i = 0; i < pduCount; i++) {
            pdus[i] = pduObjs[i];
            msgs[i] = SmsMessage.createFromPdu(pdus[i]);
        }
        return msgs;
    }

Pdu的格式本文不作讨论,网上可以找到相关资料,android源码类SmsMessage也有代码实现。


总结:

android短信push的关键在于拦截短信,一旦拦截到了短信,可以利用android自带的特性去完成后续操作,比如可以Push notification,可以Toast,可以发起连接服务器的请求,客户端应用不在线时,可以发一个Intent启动该应用然后再进行处理。

Array的push与unshift方法性能比较分析

Array的push与unshift方法性能比较分析

从原理就可以知道,unshift的效率是较低的。原因是,它每添加一个元素,都要把现有元素往下移一个位置。但到底效率差异有多大呢?下面来测试一下。
测试环境的主要硬件:CPU T7100(1.8G);内存4G DDR2 667;硬盘5400转。主要软件:操作系统为Windows 7;浏览器为Firefox 3.6.9。测试代码:

var arr = [ ], s = +new Date; 
// push性能测试 
for (var i = 0; i < 50000; i++) { 
  arr.push(i); 
} 
console.log(+new Date - s); 
s = +new Date; 
arr = [ ]; 
// unshift性能测试 
for (var i = 0; i < 50000; i++) { 
  arr.unshift(i); 
} 
console.log(+new Date - s);

这段代码分别执行了50000次push和unshift操作,运行一次以后,得出结果:
12
1152
可见,unshift比push要慢差不多100倍!因此,平时还是要慎用unshift,特别是对大数组。那如果一定要达到unshift的效果,有没有其他方法呢?答案是肯定的。
Array有一个叫做reverse的方法,能够把一个数组反转。先把要放进数组的元素用push添加,再执行一次reverse,就达到了unshift的效果。比如:

for (var i = 0; i < 50000; i++) { 
  arr.push(i); 
} 
arr.reverse(); 

//reverse的性能又如何呢,下面再来测试:
var arr = [ ], s = +new Date; 
for (var i = 0; i < 50000; i++) { 
  arr.push(i); 
} 
arr.reverse(); 
console.log(+new Date - s);

结果是:
12
可见,reverse性能极高,甚至于没有额外的消耗,可以放心使用。

当你的才华撑不起你的野心的时候、请潜下心、低下头、好好学习、

Array的push与unshift方法性能比较分析_javascript技巧

Array的push与unshift方法性能比较分析_javascript技巧

从原理就可以知道,unshift的效率是较低的。原因是,它每添加一个元素,都要把现有元素往下移一个位置。但到底效率差异有多大呢?下面来测试一下。
测试环境的主要硬件:CPU T7100(1.8G);内存4G DDR2 667;硬盘5400转。主要软件:操作系统为Windows 7;浏览器为Firefox 3.6.9。测试代码:

复制代码 代码如下:

var arr = [ ], s = +new Date;
// push性能测试
for (var i = 0; i   arr.push(i);
}
console.log(+new Date - s);
s = +new Date;
arr = [ ];
// unshift性能测试
for (var i = 0; i   arr.unshift(i);
}
console.log(+new Date - s);

这段代码分别执行了50000次push和unshift操作,运行一次以后,得出结果:
12
1152
可见,unshift比push要慢差不多100倍!因此,平时还是要慎用unshift,特别是对大数组。那如果一定要达到unshift的效果,有没有其他方法呢?答案是肯定的。
Array有一个叫做reverse的方法,能够把一个数组反转。先把要放进数组的元素用push添加,再执行一次reverse,就达到了unshift的效果。比如:
复制代码 代码如下:

for (var i = 0; i   arr.push(i);
}
arr.reverse();

reverse的性能又如何呢,下面再来测试:
复制代码 代码如下:

var arr = [ ], s = +new Date;
for (var i = 0; i   arr.push(i);
}
arr.reverse();
console.log(+new Date - s);

结果是:
12
可见,reverse性能极高,甚至于没有额外的消耗,可以放心使用。

at&t 汇编 pushl push 的问题

at&t 汇编 pushl push 的问题

刚开始学 at&t 汇编  用的是汇编语言程序设计 布鲁诺的那本

在 ubuntu14.04 上怎么没有 pushl  只有 push  和 printf 配合还会段错误???
push $str
call printf
就这 2 句
str 是.asciz 类型的字符串

str:

    .asciz "hello,world\n"

今天关于js的push()方法js的push方法 结果少了 是啥原因的分享就到这里,希望大家有所收获,若想了解更多关于Android push (一):SMS push、Array的push与unshift方法性能比较分析、Array的push与unshift方法性能比较分析_javascript技巧、at&t 汇编 pushl push 的问题等相关知识,可以在本站进行查询。

本文标签:

上一篇js基础(js基础数据类型)

下一篇您如何使用T-SQL全文本搜索来获得类似Google的结果?