美文网首页
07 - Json&&内存分配

07 - Json&&内存分配

作者: 西巴撸 | 来源:发表于2016-12-22 23:26 被阅读18次

    本文是针对刚学编程的小白,都是一些基础知识,如果想了解更多深层一点的东西,欢迎移步本人博客!!

    博客地址 点击跳转


    什么是Json?

    • JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。相比于XML,json易于人阅读和编写,同时也易于机器解析和生成,目前数据传递基本上都使用json。

    • JSON有两种结构:对象 和 数组,两种结构相互组合从而形成各种复杂的数据结构。

    • 数据在键值对中

    • 数据由逗号分隔

    • 花括号保存对象

    • 方括号保存数组

    最大事件源

    <script>
        var box = document.getElementById('box');
        // 页面上最大的点击事件 就是document.onclick
        document.onclick = function(e){
            // IE浏览器中e不支持,支持event
            // 兼容写法
            var e =  e || event;
            box.innerHTML = e.clientX +'<br>'+ e.clientY;
        }
        // 这里的 e 是 event对象
        box.onclick  = function(e){
            var e =  e ||event;
            box.innerHTML = e.clientX +'<br>'+ e.clientY;
            //通过事件获取的clientX和clientY都是表示点击的时候,屏幕的实际坐标
            //以屏幕的左上角作为原点
        }
    </script>
    

    给对象设置属性

    <script>
        // 获取属性
        var box = document.getElementById('box');
        //1.设置属性
        //一般两个参数,第一个参表示属性,属性的值
        box.setAttribute('title','我是盒子');
        console.log(box.getAttribute('title'));
        box.removeAttribute('title');
        console.log(box.getAttribute('title'));
    </script>
    

    Json数据的认识

    <script>
        //1.json用来存储数据,但是数据不可以重复,没有顺序
        //2.json通过key:value来存储
        //3.创建json,通过{}
        //标准的json数据key必须用双引号
        var personJson = {"name":"张三","age":"16","sex":"不男不女"};
        var personJson1 = {'name':'张三','age':'16'};
        var personJson2 = {name:'张三',age:'16'};
        //4.访问json,通过key
        //如果通过中括号访问json,key需要些全称,如果有引号需要加上引号,没有引号也要加上引号
        console.log(personJson2.name);
        // console.log(personJson2[name]);
    </script>
    

    Json数据的遍历

    <script>
        // json
        //通过for in来遍历json
        //key遍历的是json 得到的是属性  json[key]得到的是属性值
         for(var key in personJson){
             console.log(personJson[key]);
         }
        // 数组
        var arr = [1,2,3,4,5,7];
        for(var key in arr){
            console.log(k);      // 得到是索引号
            console.log(arr[k]);  // 得到是值
        }
        for(var key in document){
         //如果for in循环中后面是一个对象,那么key代表属性
            document.write(key+':'+document[key]+'<br>');
        }
    </script>
    

    通过Json设置样式

    <script>
        var box = document.getElementById('box');
        var cssJson = {"width":"100px","height":"100px","background":"blue"};
        for(var key in cssJson){
            css(box,key,cssJson[key]);
        }
         // 样式的抽取封装
        function css(dom,key,value){
            dom.style[key] = value;
        }
    </script>
    

    ------------- 网络请求&&内存分配--------------

    HTTP协议

    • 和服务器进行交互
    • HTTP协议默认是短链接

    TCP/UDP

    • 是用来做链接传输的,默认不会断开链接, 都是长链接.
    • 不需要的时候可以手动断开
    • TCP涉及三次握手,和服务器需要交互三次,安全性高
    • UDP只需要和服务器交互一次就可以(QQ和微信等聊天工具用的都是UDP)

    socket

    • socket:管道 针孔
    • 用来连接客户端和服务器, 包含长链接和短链接
    • 是对TCP/UDP/HTTP的封装
    • 客户端和服务器都有inputstream和outputstream 两个流, 一个用来输入,一个用来输出.
    • 服务器端给客户端主动发送信息, 需要建立长链接

    安卓和Js内存管理机制

    • 内存分配机制包括栈/堆/静态区
    • js采用的是垃圾内存回收机制,栈区的内存不需要管理,栈的内存会自动管理,一般数字/字符/布尔值放在栈区
    • 垃圾内存回收机制:当发现一个对象在内存中没有使用的时候, 我们就直接把他回收,使用:1.计数器法 2.标记法
    • 安卓采用的就是垃圾内存回收机制,所有会越用越卡.现在在通过硬件加大内存,来解决卡的现象
    • 事件指令和对象放在堆中
    // 对于一个对象,左边的对象放在栈中,右边的实际对象放在堆中
    // 通过指针连接,栈中的对象指向堆中的实际对象
       var myDate = new Date()
    
    • 我们所说的内存管理,是管理堆中的内存,栈里面的不用管

    IOS内存管理机制

    • IOS通过OC语言 和 Swift语言,现在都用OC开发
    • C语言是面向过程的语言,C语言一般开发镜像软件,所有的语言最终都转换成C语言,然后再转换成汇编
    • 通过计数器时时管理内存,时时监测.以前是通过MRC(手动)管理,后来是通过ARC(自动)管理.所有内存管理机制要比安卓高很多

    提升内存性能

    • 尽量少用全局变量,因为全局变量一直存在
    • 尽量抽取函数
    • 管理闭包一定要精准,没有内存泄漏

    数据结构的类型

    • 数组
    • 队列(先进先出)
    • 栈(先进后出)
    • 链表(双向链表和单向链表)

    相关文章

      网友评论

          本文标题:07 - Json&&内存分配

          本文链接:https://www.haomeiwen.com/subject/atyhvttx.html