精华内容
下载资源
问答
  • function objToStr(obj){ obj.t = new Date().getTime();... // 这个给对象添加属性方法, 会被直接加到键值对里?? /* { "userName":"lnj", "userPwd":"123456", "t":"38439034204...

     

     

    function objToStr(obj){
    
      obj.t = new Date().getTime();  // 给obj动态增加了一个属性
      // 这个给对象添加属性的方法, 会被直接加到键值对里??
    
      /*
      {
        "userName":"lnj",
        "userPwd":"123456",
        "t":"38439034204"     // 随机的时间数值
      }
      */
    
      var res = [];
    
      for(var key in obj){
        res.push(encodeURIComponent(key)+"="+encodeURIComponent(obj[key])); 
        // 注意这里键值对取值的方式
        // encodeURIComponent();  把中文转码,因为URL里不能出现中文
        // URL中只能出现 字母/数字/下划线/ASCII码
      }
      return res.join("&"); // 数组的join方法要看一下!!
    }
    
    function ajax(url, obj, timeout, success, error){
    
      // 0. 将对象转换为字符串
      var str = objToStr(obj);  // 函数的返回值即为这个字符串str
    
      // 1. 创建异步对象
      var xmlHttp, timer;
    
      if(window.XMLHttpRequest){
        xmlHttp = new XMLHttpRequest();
      }else{
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
    
      /* 2. 设置请求方式和请求地址  open(method,url,async)
      method: 请求的类型  GET 或 POST
      url: 文件在服务器上的位置
      async: true(异步)  false(同步)
      */
      xmlHttp.open("GET", url+"?"+str, true);
    
      // 3. 发送请求
      xmlHttp.send();
    
      // 4. 监听状态的变化
      xmlHttp.onreadystatechange = function(ev2){
        /*
        0: 请求未初始化
        1: 服务器连接已建立
        2: 请求已接收
        3: 请求处理中
        4:请求已完成,且相应已就绪
        */
        if(xmlHttp.readyState === 4){
          //判断是否请求成功
          clearInterval(timer);  // 这里有点疑问,readyState状态为4,即清除定时器?
    
          if(xmlHttp.status >= 200 && xmlHttp.status < 300 || xmlHttp.status === 304){
            // 5. 处理返回的结果
            success(xmlHttp);
          }else{
            error(xmlHttp);
          }
        }
      }
      // 判断外界是否传入了超时时间
      if(timeout){
        timer = setInterval(() => {
          xmlHttp.abort();  // abort();  中止XMLHttpRequest对象的请求
          clearInterval(timer);
        }, timeout);
      }
    }

     

      <script src="myAjax.js"></script>
      <script>
      window.onload = function(ev){
        var oBtn = document.querySelector('button');
        //var res = encodeURIComponent('张三');
    
        oBtn.onclick = function(ev1){
    
          ajax('04-ajax-get.php', {
            "userName":"lnj",
            "userPwd":"123456"
          }, 3000, // 设置服务器响应超时时间,到时间还没返回结果,就中止这次请求
          function(xhr){
            alert(xhr.responseText);
            
          }, function(xhr){
            alert('请求失败');
          })
        }
      }
      </script>

     

    xhr.open("POST", "04-ajax-get.php", true); 
          // POST 的 URL后面 不能直接拼接参数, 只能通过以下方式:
          
          // 注意点:以下代码必须放到open和send之间
          xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    
          xhr.send("userName=zs&userPwd=123");  // POST请求的参数

     

    转载于:https://www.cnblogs.com/carpenterzoe/p/10387818.html

    展开全文
  • 对象的动态特性:在对象创建出来之后为对象添加新的属性/方法 使用.点语法进行赋值的时候,如果对象存在就是修改该属性,如果对象不存在就是新添该属性 ...这样可以获取/修改/增加对象的属性值
    
    
    1. 对象的动态特性:在对象创建出来之后为对象添加新的属性/方法
    1. 使用.点语法进行赋值的时候,如果对象存在就是修改该属性,如果对象不存在就是新添该属性
    2. 其实对象就是键值对的集合,所以可以通过索引[]的方式访问:对象名[“属性名”] à 这样可以获取/修改/增加对象的属性值
    展开全文
  • 对象

    2020-10-22 22:44:03
    Redis 并没有直接使用这些数据结构来实现键值对数据库, 而是基于这些数据结构创建了一个对象系统, 这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象, 每种对象都用到了至少...

    定义

    在前面的数个章节里, 我们陆续介绍了 Redis 用到的所有主要数据结构, 比如简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合, 等等。

    Redis 并没有直接使用这些数据结构来实现键值对数据库, 而是基于这些数据结构创建了一个对象系统, 这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象, 每种对象都用到了至少一种我们前面所介绍的数据结构。

    对象进一步封装来数据和算法,隐藏了细节,并且还增加了引用计数,ttl,访问时间等属性

    数据结构

    查看对象的属性:
    he OBJECT command supports multiple sub commands:

    OBJECT REFCOUNT returns the number of references of the value associated with the specified key. This command is mainly useful for debugging.
    OBJECT ENCODING returns the kind of internal representation used in order to store the value associated with a key.
    OBJECT IDLETIME returns the number of seconds since the object stored at the specified key is idle (not requested by read or write operations). While the value is returned in seconds the actual resolution of this timer is 10 seconds, but may vary in future implementations. This subcommand is available when maxmemory-policy is set to an LRU policy or noeviction and maxmemory is set.
    OBJECT FREQ returns the logarithmic access frequency counter of the object stored at the specified key. This subcommand is available when maxmemory-policy is set to an LFU policy.

    typedef struct redisObject {
    
        // 类型
        unsigned type:4;
    
        // 编码
        unsigned encoding:4;
    
        // 指向底层实现数据结构的指针
        void *ptr;
    
        // ...
    
    } robj;
    

    类型常量 对象的名称
    REDIS_STRING 字符串对象 (sds, int64)
    REDIS_LIST 列表对象 (ziplist, list)
    REDIS_HASH 哈希对象(ziplist, hashtable)
    REDIS_SET 集合对象 (intset, hashtable)
    REDIS_ZSET 有序集合对象 (ziplist, skiplist)

    类型 编码 对象
    REDIS_STRING REDIS_ENCODING_INT 使用整数值实现的字符串对象。
    REDIS_STRING REDIS_ENCODING_EMBSTR 使用 embstr 编码的简单动态字符串实现的字符串对象。
    REDIS_STRING REDIS_ENCODING_RAW 使用简单动态字符串实现的字符串对象。
    REDIS_LIST REDIS_ENCODING_ZIPLIST 使用压缩列表实现的列表对象。
    REDIS_LIST REDIS_ENCODING_LINKEDLIST 使用双端链表实现的列表对象。
    REDIS_HASH REDIS_ENCODING_ZIPLIST 使用压缩列表实现的哈希对象。
    REDIS_HASH REDIS_ENCODING_HT 使用字典实现的哈希对象。
    REDIS_SET REDIS_ENCODING_INTSET 使用整数集合实现的集合对象。
    REDIS_SET REDIS_ENCODING_HT 使用字典实现的集合对象。
    REDIS_ZSET REDIS_ENCODING_ZIPLIST 使用压缩列表实现的有序集合对象。
    REDIS_ZSET REDIS_ENCODING_SKIPLIST 使用跳跃表和字典实现的有序集合对象。

    从ziplist, intset转换的时机是可以配置的

    zset使用skiplist和hashtable一起的,要不然查询复杂度不是O1

    typedef struct zset {
    
        zskiplist *zsl;
    
        dict *dict;
    
    } zset;
    

    共享对象

    共享对象机制对于节约内存非常有帮助, 数据库中保存的相同值对象越多, 对象共享机制就能节约越多的内存。

    比如说, 假设数据库中保存了整数值 100 的键不只有键 A 和键 B 两个, 而是有一百个, 那么服务器只需要用一个字符串对象的内存就可以保存原本需要使用一百个字符串对象的内存才能保存的数据。

    目前来说, Redis 会在初始化服务器时, 创建一万个字符串对象, 这些对象包含了从 0 到 9999 的所有整数值, 当服务器需要用到值为 0 到 9999 的字符串对象时, 服务器就会使用这些共享对象, 而不是新创建对象。

    所以使用这些数字很节约内存啊

    总结

    Redis 数据库中的每个键值对的键和值都是一个对象。
    Redis 共有字符串、列表、哈希、集合、有序集合五种类型的对象, 每种类型的对象至少都有两种或以上的编码方式, 不同的编码可以在不同的使用场景上优化对象的使用效率。
    服务器在执行某些命令之前, 会先检查给定键的类型能否执行指定的命令, 而检查一个键的类型就是检查键的值对象的类型。
    Redis 的对象系统带有引用计数实现的内存回收机制, 当一个对象不再被使用时, 该对象所占用的内存就会被自动释放。
    Redis 会共享值为 0 到 9999 的字符串对象。
    对象会记录自己的最后一次被访问的时间, 这个时间可以用于计算对象的空转时间。

    展开全文
  • MemCaChe是一个存储键值对的HashMap,在内存中对任意数据(比如字符串、对象等)使用key-value存储。 为什么要使用Memcache ? 主要用于动态Web应用以减轻数据库负载它通过在内存中缓存数据和对象来减少读取...

    MemCache

    1. 什么是MemCache
    • MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统
    • MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)使用key-value存储。
    1. 为什么要使用Memcache ?
    • 主要用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度
    1. MemCache和MemCached的区别
    • MemCache是项目名称
    • MemCached服务器端可以执行文件的名称

    实验环境

    php增加memcache模块实现过程

    步骤一:加入环境变量

    在server1上面:将之前PHP编译完成的二进制命令(php的bin目录下)加入到环境变量中,可以直接调用PHP命令

    vim ~/.bash_profile
    source ~/.bash_profile 
    

    在这里插入图片描述在这里插入图片描述

    步骤二:解压安装memcache

    tar zxf memcache-4.0.5.2.tgz
    cd memcache-4.0.5.2
    

    memcache目录中并没有configure文件,所以没有办法编译。
    在这里插入图片描述
    在这里插入图片描述
    phpize要侦测之前的php环境,以至于使得memcache configure出来。

    yum install autoconf -y #解决依赖性
    phpize  ##进行编译
    

    在这里插入图片描述
    步骤三:编译并安装

    ./configure --with-php-config=/usr/local/lnmp/php/bin/php-config 
    make && make install
    

    在这里插入图片描述

    步骤四:修改php主配置文件

    cd /usr/local/lnmp/php/etc/
    vim php.ini
    759 extension_dir = "/usr/local/lnmp/php/lib/php/extensions/no-debug-non-zts-20190902/"
    913 extension=memcache.so
    

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    步骤五:重新加载并查看是否加载成功

    /etc/init.d/php-fpm reload
    php -m |grep memcache  # 查看是否加载成功
    

    在这里插入图片描述
    此时php已经支持memcache

    步骤六:安装memcachaed

    yum install memcached
    cat /etc/sysconfig/memcached 	#查看配置文件
    systemctl start memcached	    #启动
    

    在这里插入图片描述telent 测试

    yum install telnet -y
    telnet localhost 11211
    

    在这里插入图片描述
    不会写php下的memcache脚本,怎么办呢??

    memcache给我们提供了测试页面.

    步骤七:复制文件

    cp memcache.php example.php /usr/local/lnmp/nginx/html/  #放到默认发布目录下
    
    cd /usr/local/lnmp/nginx/html/
    vim memcache.php
    

    在这里插入图片描述

    修改memcache的密码和访问地址

    vim memcache.php
    加入管理员密码:westos,名字memcache
    172.25.42.250
    重新加载服务
    

    在这里插入图片描述

    访问 172.25.42.1/memcache.php

    在这里插入图片描述
    在这里插入图片描述

    测试
    在这里插入图片描述

    展开全文
  • memcache :分布式内存对象缓存系统,存储键值对的hashmap,在内存中对任意数据使用key-value存储。 主要用于动态Web应用以减轻数据库负载,通过内存中缓存数据和对象来减少读取数据库次数,从而提高网站访问...
  • 动态数组:当元素个数达到最大值时,动态增加容量,解决数组定长问题 在java类集中,提供了两个最为核心接口:Collection、Map Collection接口及其子接口:每次进行数据操作时,都是单个对象进行处理 Map...
  • python自带了四种数据结构:列表、字典、元组、集合,本章主要介绍第一种:列表...字典:无序的键值对集合 就类似C++里面的map。注意字典增加元素的插入顺序没有任何意义。在一个字典中,键的值是唯一的。 集合:...
  • 集合 集合是种容器,在程序中,使用...ArrayList-可以根据需要动态增加的数组 Hashtable-用来存储键值对的哈希表 Queue-遵循先进先出队列 Stack-遵循后进先出栈 泛型集合 使用泛型集合需要引入...
  • 总结列表,元组,字典,集合联系与区别。 列表是可变的对象,可进行动态的增加、删除、更新,可以用list()函数或者[]创建。...字典是存储键值对数据的对象,字典元素都是无序,且键不能相同,可以通过...
  • 列式存储(一)

    2016-10-11 20:22:00
    最近做项目,客户要求对象的属性能够动态添加,于是采用了列式存储。 1.传统关系型数据库的行式...2.关系型数据库的行式存储方法为:将数据转换为“属性名:属性值”的键值对存储,每一行表示模块的一个属性。将...
  • wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 17、...
  • 1.练习: 总结列表,元组,字典,集合联系与区别。... 字典是存储键值对数据的对象,字典元素都是无序,且键不能相同,可以通过键,找到值,字典最外面用大括号,每一组用冒号连接起来。 集合相...
  • 作业3

    2018-10-08 11:43:00
    总结列表,元组,字典,集合区别 ... 字典是存储键值对数据的对象,字典元素都是无序,且键不能相同,可以通过键,找到值,字典最外面用大括号,每一组用冒号连接起来。 集合相当于字典键,也是一个无序...
  • 第三次

    2018-10-08 11:34:00
    总结列表,元组,字典,...(3)字典是存储键值对数据的对象,字典元素都是无序,且键不能相同,可以通过键,找到值,字典最外面用大括号,每一组用冒号连接起来。 (4) 集合相当于字典键,也是一个无序不重...
  • 0920作业

    2018-09-21 12:18:00
    总结列表,元组,字典,集合联系与区别: 1、列表是可变的对象,可...3、字典是存储键值对数据的对象,字典元素都是无序,且键不能相同,可以通过键,找到值,字典最外面用大括号,每一组用冒号连接起来。 4...
  • java面试随笔

    2019-08-21 13:30:18
    java面试随笔总结 set map list list 有序可重复 Arraylist 基于动态数组实现,可随机get和set 查询效率高,线程不安全 LinkedList 基于双向链表...map键值对键唯一,值不唯一。 HashMap 使用对象的hashc...
  • 4.7.3 增加分区 158 4.7.4 移除分区 160 4.7.5 把分区移动到不同表 161 4.7.6 移除分区函数和分区方案 162 4.7.7 用文件组提高VLDB可管理性 162 4.7.8 用数据压缩减少磁盘空间使用 164 第5章 ...
  • letter shell采取一个静态数组定义多个shell进行管理,shell数量可以修改宏SHELL_MAX_NUMBER定义(为了不使用动态内存分配,此处通过数据进行管理),从而,在shell执行函数中,可以调用shellGetCurrent()获得...
  • java 面试题 总结

    2009-09-16 08:45:34
    1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    掌握类和对象的概念,掌握面向对象编程的本质 49.静态变量和静态方法的意义,如何引用一个类的静态变量或者静态方法? 50.JAVA语言如何进行异常处理,关键字:thorws,throw,try,catch,finally 51.Object类(或者其...
  • 配置 (Setting) – 以键值对的形式存储玩家数据,对 UnityEngine.PlayerPrefs 进行封装。 声音 (Sound) – 提供管理声音和声音组功能,用户可以自定义一个声音音量、是2D声音还是3D声音,甚至是直接绑定到...
  • 符号重命名程序(resym.exe)增加对.obj文件支持,并更新了文档(sdk\static_docs)。 3. 编译生成安装软件时已支持打包静态编译后程序,但需事先静态编译出该程序。 4. 升级加密狗驱动程序,增加 Windows 7,...
  • Java范例开发大全 (源程序)

    热门讨论 2011-04-27 07:47:22
     实例221 改变Properties文件中的键值 399  第13章 多线程编程(教学视频:121分钟) 405  13.1 多线程的五种基本状态 405  实例222 启动线程 405  实例223 参赛者的比赛生活(线程休眠唤醒) 407  实例...
  • java范例开发大全源代码

    热门讨论 2011-10-30 23:31:51
     第9章 面向对象的四大特征(教学视频:65分钟) 252  9.1 抽象 252  实例162 求自定义几何图形的面积和周长 252  实例163 使用抽象方法实现的支票夹 254  9.2 封装 257  实例164 世界小姐参赛资格 ...
  • java范例开发大全

    2013-03-08 20:06:54
    实例221 改变Properties文件中的键值 399 第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载...
  • Java范例开发大全(全书源程序)

    热门讨论 2013-04-05 11:50:26
    实例221 改变Properties文件中的键值 399 第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索...
  • Windows系统进程详解

    2010-06-21 12:18:32
    )(附:Svchost.exe文件那些从动态连接库中运行服务来说是一个普通主机进程名。Svhost.exe文件定位在系统 %systemroot%\system32文件夹下。在启动时候,Svchost.exe检查注册表中位置来构建需要加载服务...
  • powerbuilder

    2013-11-21 17:11:48
    当Print组函数生成新行时,系统自动把打印光标x坐标位置设置为0,y坐标位置在原有基础上增加当前行距值。使用PrintSetSpacing()函数可以改变当前打印作业行距。 -------------------------------------------...
  • 在过去的15 ~ 20 年间,很多合格的职业开发者都在使用纯粹的关系型或是面向对象的术语来描述他们的数据。Cassandra 的数据模型与此非常不同,起先可能很难吸引你,特别是对于数据库(应该)是什么已经有了先入为主...

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

动态增加对象的键值对