博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在弱网传输的情况下,是怎么做到节约流量的(面试小问题,Android篇)
阅读量:6914 次
发布时间:2019-06-27

本文共 3341 字,大约阅读时间需要 11 分钟。

立即毕业了,在毕业之际。我辞掉了曾经的实习工作,主要是工作内容不太感兴趣。近期在找工作。主要是找Java和Android方面的工作。自以为学得不错。可是面试屡屡受挫。

先提一下问到的一些问题吧。

第一个:在弱网传输的情况下。是怎么做到节约流量的?

因为Android接触的确实不多,这个问题自然没有非常愉快的答上来。

我这样回答的:将一些数据进行压缩,比如传一个字符串,先将字符串转换成字符数组的形式,然后对这个字符数组进行压缩。

然后就是对非常多传输对象(一般都是JSON。XML这样的方式太笨重了),提取公共的部分,然后仅仅将不同的部分传输过去(我在想。怎么知道是同样的呢...)

自觉得回答的不太好,面试官也没有多说。

面完试,在网上搜资料。加上自己的理解。整理了下。

首先来说一下Android与server的数据交互方式吧。

1、  Socket(TCP/UDP)

2、  NIO,还有衍生的NIO框架比如Netty

3、  WebService(特指Soap协议下用XML数据传输)

4、  JSON(特质http协议下用基于Rest风格的传输方式)

这里呢,说到数据压缩,我认为应该是指将JSON进行先压缩再传输吧。

解决数据过大的问题,最直观的方法就是压缩数据。server将须要传递的数据先进行压缩。再发送给Androidclient,Androidclient接收到压缩的数据,对其解压。得到压缩前的数据。

以下这个图应该能说明详细情况。

引用

那么无非就是一些压缩算法的问题了。

那怎么选择压缩算法咧?这里有一个压缩算法。

引用 

packagecom.chenjun.utils.compress; importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.zip.GZIPInputStream;importjava.util.zip.GZIPOutputStream; publicclass Compress {    private static final int BUFFER_LENGTH =400;          //压缩字节最小长度,小于这个长度的字节数组不适合压缩,压缩完会更大    public static final int BYTE_MIN_LENGTH =50;          //字节数组是否压缩标志位    public static final byteFLAG_GBK_STRING_UNCOMPRESSED_BYTEARRAY = 0;    public static final byteFLAG_GBK_STRING_COMPRESSED_BYTEARRAY = 1;    public static final byteFLAG_UTF8_STRING_COMPRESSED_BYTEARRAY = 2;    public static final byteFLAG_NO_UPDATE_INFO = 3;       /**      * 数据压缩      *       * @param is      * @param os      * @throws Exception      */     public static void compress(InputStream is,OutputStream os)              throws Exception {           GZIPOutputStream gos = newGZIPOutputStream(os);           int count;          byte data[] = newbyte[BUFFER_LENGTH];          while ((count = is.read(data, 0,BUFFER_LENGTH)) != -1) {              gos.write(data, 0, count);          }           gos.finish();           gos.flush();          gos.close();      }            /**      * 数据解压缩      *       * @param is      * @param os      * @throws Exception      */     public static void decompress(InputStreamis, OutputStream os)              throws Exception {           GZIPInputStream gis = newGZIPInputStream(is);           int count;          byte data[] = newbyte[BUFFER_LENGTH];          while ((count = gis.read(data, 0,BUFFER_LENGTH)) != -1) {              os.write(data, 0, count);          }           gis.close();      }       /**     * 数据压缩     *      * @param data     * @return     * @throws Exception     */     public static byte[] byteCompress(byte[]data) throws Exception {         ByteArrayInputStream bais = newByteArrayInputStream(data);         ByteArrayOutputStream baos = newByteArrayOutputStream();          // 压缩         compress(bais, baos);          byte[] output =baos.toByteArray();          baos.flush();         baos.close();          bais.close();          return output;     }          /**     * 数据解压缩     *      * @param data     * @return     * @throws Exception     */     public static byte[] byteDecompress(byte[]data) throws Exception {         ByteArrayInputStream bais = newByteArrayInputStream(data);         ByteArrayOutputStream baos = newByteArrayOutputStream();          // 解压缩          decompress(bais, baos);          data = baos.toByteArray();          baos.flush();         baos.close();          bais.close();          return data;     } }
笔者眼下在找工作。

邮箱myhirra@126.com。本广告长期有效.....玩笑话。

转载地址:http://gwicl.baihongyu.com/

你可能感兴趣的文章
币圈的黄埔军校,徐明星的傲慢与偏见
查看>>
全球直播的罗胖跨年演讲背后技术支撑故事——罗辑思维首席架构师方圆访谈...
查看>>
万能的淘宝再现实力“魔术手”,沙县小吃摇身变成“萌系治愈所”
查看>>
勒索病毒致世界天翻地覆 360安全卫士离线救灾版扭转乾坤
查看>>
排插新国标将实施,传统排插企业满脸“尴尬”?
查看>>
36岁辞职创业,5名员工,如今年销售额50亿!
查看>>
势不可挡!荣耀双11再夺销量和销售额的双料冠军
查看>>
华为Mate 10 Pro:4800秒从0%至100%的神奇电池
查看>>
PCIe NVMe SSD准备”蚕食”企业级存储系统了
查看>>
“引江济淮”工程全线开工 将建全球单跨最大渡槽
查看>>
青瓦台:特朗普未曾提及韩方协防分担费具体数额
查看>>
福岛第一核电站将撤除屋顶钢筋 为取出燃料做准备
查看>>
贵阳铁路警方早谋划 多举措备战春运保安全
查看>>
“全国百名杰出新型职业农民”刘良军:从医官到村官
查看>>
深商全球大会:百果园获评“深圳老字号”
查看>>
政协委员建言川港两地深化合作 聚焦青年人才交流
查看>>
“脱欧”困境难解 英欧关系或面临十字路口
查看>>
Python 扩大领先优势 18 年数据科学&工具排名
查看>>
面向未来的前端数据流框架 - dob
查看>>
小程序 · 云开发
查看>>