1. 1
  2. 1
  3. 1
  4. 1
  • 欢迎您
    Linux redis命令大全
    sxy 2018-09-19 技术语录

    1646

    Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用。下面将Redis提供的命令做一总结。官网命令列表:http://redis.io/commands

    1、连接操作相关的命令

    quit:关闭连接(connection

    auth:简单密码认证

    2、对value操作的命令

    exists(key):确认一个key是否存在

    del(key):删除一个key

    type(key):返回值的类型

    keys(pattern):返回满足给定pattern的所有key

    randomkey:随机返回key空间的一个key

    rename(oldname, newname):将keyoldname重命名为newname,若newname存在则删除newname表示的key

    dbsize:返回当前数据库中key的数目

    expire:设定一个key的活动时间(s

    ttl:获得一个key的活动时间

    select(index):按索引查询

    move(key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库

    flushdb:删除当前选择数据库中的所有key

    flushall:删除所有数据库中的所有key

    3、对String操作的命令

    set(key, value):给数据库中名称为keystring赋予值value

    get(key):返回数据库中名称为keystringvalue

    getset(key, value):给名称为keystring赋予上一次的value

    mget(key1, key2,…, key N):返回库中多个string(它们的名称为key1key2…)的value

    setnx(key, value):如果不存在名称为keystring,则向库中添加string,名称为key,值为value

    setex(key, time, value):向库中添加string(名称为key,值为value)同时,设定过期时间time

    mset(key1, value1, key2, value2,…key N, value N):同时给多个string赋值,名称为key istring赋值value i

    msetnx(key1, value1, key2, value2,…key N, value N):如果所有名称为key istring都不存在,则向库中添加string,名称key i赋值为value i

    incr(key):名称为keystring1操作

    incrby(key, integer):名称为keystring增加integer

    decr(key):名称为keystring1操作

    decrby(key, integer):名称为keystring减少integer

    append(key, value):名称为keystring的值附加value

    substr(key, start, end):返回名称为keystringvalue的子串

    4、对List操作的命令

    rpush(key, value):在名称为keylist尾添加一个值为value的元素

    lpush(key, value):在名称为keylist头添加一个值为value的 元素

    llen(key):返回名称为keylist的长度

    lrange(key, start, end):返回名称为keyliststartend之间的元素(下标从0开始,下同)

    ltrim(key, start, end):截取名称为keylist,保留startend之间的元素

    lindex(key, index):返回名称为keylistindex位置的元素

    lset(key, index, value):给名称为keylistindex位置的元素赋值为value

    lrem(key, count, value):删除count个名称为keylist中值为value的元素。count0,删除所有值为value的元素,count>0从 头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素。 lpop(key):返回并删除名称为keylist中的首元素 rpop(key):返回并删除名称为keylist中的尾元素 blpop(key1, key2,… key N, timeout)lpop命令的block版本。即当timeout0时,若遇到名称为key ilist不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对 keyi+1开始的list执行pop操作。

    brpop(key1, key2,… key N, timeout)rpopblock版本。参考上一命令。

    rpoplpush(srckey, dstkey):返回并删除名称为srckeylist的尾元素,并将该元素添加到名称为dstkeylist的头部

    5、对Set操作的命令

    sadd(key, member):向名称为keyset中添加元素member

    srem(key, member) :删除名称为keyset中的元素member

    spop(key) :随机返回并删除名称为keyset中一个元素

    smove(srckey, dstkey, member) :将member元素从名称为srckey的集合移到名称为dstkey的集合

    scard(key) :返回名称为keyset的基数

    sismember(key, member) :测试member是否是名称为keyset的元素

    sinter(key1, key2,…key N) :求交集

    sinterstore(dstkey, key1, key2,…key N) :求交集并将交集保存到dstkey的集合

    sunion(key1, key2,…key N) :求并集

    sunionstore(dstkey, key1, key2,…key N) :求并集并将并集保存到dstkey的集合

    sdiff(key1, key2,…key N) :求差集

    sdiffstore(dstkey, key1, key2,…key N) :求差集并将差集保存到dstkey的集合

    smembers(key) :返回名称为keyset的所有元素

    srandmember(key) :随机返回名称为keyset的一个元素

    6、对zsetsorted set)操作的命令

    zadd(key, score, member):向名称为keyzset中添加元素memberscore用于排序。如果该元素已经存在,则根据score更新该元素的顺序。

    zrem(key, member) :删除名称为keyzset中的元素member

    zincrby(key, increment, member) :如果在名称为keyzset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment

    zrank(key, member) :返回名称为keyzset(元素已按score从小到大排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”

    zrevrank(key, member) :返回名称为keyzset(元素已按score从大到小排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”

    zrange(key, start, end):返回名称为keyzset(元素已按score从小到大排序)中的indexstartend的所有元素

    zrevrange(key, start, end):返回名称为keyzset(元素已按score从大到小排序)中的indexstartend的所有元素

    zrangebyscore(key, min, max):返回名称为keyzsetscore >= minscore <= max的所有元素 zcard(key):返回名称为keyzset的基数 zscore(key, element):返回名称为keyzset中元素elementscore zremrangebyrank(key, min, max):删除名称为keyzsetrank >= minrank <= max的所有元素 zremrangebyscore(key, min, max) :删除名称为keyzsetscore >= minscore <= max的所有元素

    zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):对Nzset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行 AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATESUM,即结果集合中元素 的score是所有集合对应元素进行SUM运算的值,而MINMAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。

    7、对Hash操作的命令

    hset(key, field, value):向名称为keyhash中添加元素field<—>value

    hget(key, field):返回名称为keyhashfield对应的value

    hmget(key, field1, …,field N):返回名称为keyhashfield i对应的value

    hmset(key, field1, value1,…,field N, value N):向名称为keyhash中添加元素field i<—>value i

    hincrby(key, field, integer):将名称为keyhashfieldvalue增加integer

    hexists(key, field):名称为keyhash中是否存在键为field的域

    hdel(key, field):删除名称为keyhash中键为field的域

    hlen(key):返回名称为keyhash中元素个数

    hkeys(key):返回名称为keyhash中所有键

    hvals(key):返回名称为keyhash中所有键对应的value

    hgetall(key):返回名称为keyhash中所有的键(field)及其对应的value

    8、持久化

    save:将数据同步保存到磁盘

    bgsave:将数据异步保存到磁盘

    lastsave:返回上次成功将数据保存到磁盘的Unix时戳

    shundown:将数据同步保存到磁盘,然后关闭服务

    9、远程服务控制

    info:提供服务器的信息和统计

    monitor:实时转储收到的请求

    slaveof:改变复制策略设置

    config:在运行时配置Redis服务器

     


  • 欢迎您
    php7安装redis扩展
    sxy 2018-09-17 技术语录

    893

    如果安装的php版本是php7版本的话,当安装扩展的时候会'报错;

    此时需要安装对应的phpredis---php7的版本的redis扩展;


    一、安装Redis


    1.创建redis用户组和用户

    groupadd redis
    useradd -r -g redis -s /sbin/nologin -M redis

    2.下载redis源码包,将源码包放到/usr/local/src/目录下

    下载页面:http://redis.io/download
    这里用的是redis-3.2.5.tar.gz
    下载地址:http://download.redis.io/releases/redis-3.2.5.tar.gz

    3.进入src/目录

    cd /usr/local/src/

    4.解压源码包

    tar -zxf redis-3.2.5.tar.gz

    5.进入redis源码目录,编译安装

    cd redis-3.2.5/
    
    make PREFIX=/usr/local/redis install

    6.创建redis文件目录

    mkdir -p /usr/local/redis/datamkdir -p /usr/local/redis/etcmkdir -p /var/run/redismkdir -p /var/log/redis

    7.将配置文件放入redis/etc/目录

    cp redis.conf /usr/local/redis/etc/

    8.修改redis配置文件redis.conf

    vim /usr/local/redis/etc/redis.conf

    9.修改为下面内容,保存退出

    复制代码

    tcp-backlog 128                   #tcp队列长度,CentOS系统默认为128,此值不应该大于操作系统的该值
    daemonize yes                    #改为yes,保证redis可以后台运行
    pidfile /var/run/redis/redis.pid   #redis pid
    logfile "/var/log/redis/redis.log" #redis日志dir /usr/local/redis/data/         #redis数据存储目录
    
    #------ 可选配置 ------
    #slaveof 192.168.1.66 6379      #主从复制,在副机上配置,例:IP 192.168.1.66,端口 6379
    #save 60 10000                     #快照,例:60s内10000个更改就保存
    #appendonly yes                    #AOF持久化

    复制代码

    10.修改redis目录权限

    chown -R redis:redis /usr/local/redischown -R redis:redis /var/run/redischown -R redis:redis /var/log/redis

    11.将redis命令加入环境变量,修改profile文件

    vim /etc/profile

    12.修改为下面内容,保存退出

    PATH=/usr/local/mysql/bin:/usr/local/php/bin:/usr/local/redis/bin:$PATH

    13.使/etc/profile里的配置立即生效

    source /etc/profile

    14.将redis服务脚本加入到init.d/目录,创建redisd文件

    vim /etc/init.d/redisd

    15.加入下面内容,保存退出

    View Code

    16.为redisd添加可执行权限

    chmod +x /etc/init.d/redisd

    17.将redis加入系统服务

    chkconfig --add redisd

    18.修改服务的默认启动等级

    chkconfig redisd on

    19.启动redis

    service redisd start

    二、PHP7安装Redis拓展

    1.yum安装git

    yum -y install git

    2.进入src/目录

    cd /usr/local/src/

    3.git下载phpredis拓展

    git clone https://github.com/phpredis/phpredis.git

    4.进入phpredis/目录

    cd phpredis/

    5.默认clone的php5的redis扩展,需要切换到php7的分支

    git checkout php7

    6.编译安装拓展

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

    7.修改php.ini文件

    vim /usr/local/php/etc/php.ini

    8.添加redis.so扩展配置,保存退出

    extension=redis.so

    9.重启Apache或php-fpm

    service httpd restart
    service php-fpm restart

    10. 在web目录下添加php文件,如/usr/local/apache/htdocs/redis.php 或 /usr/local/nginx/html/redis.php

    <?php$redis = new Redis();$redis->connect('127.0.0.1', 6379);$redis->set('class','toefl');print_r($redis->get('class'));

    访问URL,如:http://192.168.8.9/redis.php
    页面显示正常,则配置成功

    Redis安装完毕!


    参考网址:

         www.cnblogs.com/luyucheng/p/6084892.html


  • 欢迎您
    TP3.2.3 addAll的问题
    sxy 2018-09-12 技术语录

    840

    这是个BUG,Mysql.class.php 中 insertAll 方法,对字段拼接的代码是这样的

    foreach ($dataSet as $data){
                $value   =  array();
                foreach ($data as $key=>$val){
                    if(is_array($val) && 'exp' == $val[0]){
                        $value[]   =  $val[1];
                    }elseif(is_scalar($val)){   
                        if(0===strpos($val,':') && in_array($val,array_keys($this->bind))){
                            $value[]   =   $this->parseValue($val);
                        }else{
                            $name       =   count($this->bind);
                            $value[]   =   ':'.$name;
                            $this->bindParam($name,$val);
                        }
                    }
                }
                $values[]    = '('.implode(',', $value).')';
            }



    第六行只有在判断为标量的时候才会拼接字段,如果是空值 这两个判断就都没有进去,就会导致插入的时候少掉空值的字段 ,改成 is_scalar($val) || is_null($val) 就可以了


  • 欢迎您
    使用jquery刷新当前页面
    sxy 2018-08-31 技术语录

    845


    如何使用jquery刷新当前页面

    下面介绍全页面刷新方法:有时候可能会用到

    window.location.reload()刷新当前页面.

    parent.location.reload()刷新父亲对象(用于框架)

    opener.location.reload()刷新父窗口对象(用于单开窗口)

    top.location.reload()刷新最顶端对象(用于多开窗口)

    Javascript 返回上一页

      1. Javascript 返回上一页 history.go(-1), 返回两个页面: history.go(-2);

      2. history.back().

    window.history.back(-1);

      3. window.history.forward()返回下一页

      4. window.history.go(返回第几页,也可以使用访问过的URL)  

    下面再介绍一些javascript基本函数

    1.document.write(”");为 输出语句 
    2.js中的注释为// 
    3.传统的html文档顺序是:document->html->(head,body) 
    4.一个浏览器窗口中的dom顺序是:window->(navigator,screen,history,location,document) 
    5.得到表单中元素的名称和值:document.getelementbyid(”表单中元素的id号”).name(或value) 
    6.一个小写转大写的js: document.getelementbyid(”output”).value = document.getelementbyid(”input”).value.touppercase(); 
    7.js中的值类型:string,number,boolean,null,object,function 
    8.js中的字符型转换成数值型:parseint(),parsefloat() 
    9.js中的数字转换成字符型:(”"+变量) 
    10.js中的取字符串长度是:(length) 
    11.js中的字符与字符相连接使用+号. 
    12.js中的比较操作符有:==等于,!=不等于,>,>=,<.<= 
    13.js中声明变量使用:var来进行声明 
    14.js中的判断语句结构:if(condition){}else{} 
    15.js中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop} 
    16.循环中止的命令是:break 
    17.js中的函数定义:function functionname([parameter],…){statement[s]} 
    18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替. 
    19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self 
    20.状态栏的设置:window.status=”字符”; 
    21.弹出提示信息:window.alert(”字符”); 
    22.弹出确认框:window.confirm(); 
    23.弹出输入提示框:window.prompt(); 
    24.指定当前显示链接的位置:window.location.href=”url” 
    25.取出窗体中的所有表单的数量:document.forms.length 
    26.关闭文档的输出流:document.close(); 
    27.字符串追加连接符:+= 
    28.创建一个文档元素:document.createelement(),document.createtextnode() 
    29.得到元素的方法:document.getelementbyid() 
    49.引用一个文件式的js:<script type=”text/javascript” src=”aaa.js”></script> 
    50.指定在不支持脚本的浏览器显示的html:<noscript></noscript> 
    51.当超链和onclick事件都有时,则老版本的浏览器转向a.html,否则转向b.html.例:<a href=”a.html” onclick=”location.href=’b.html’;return false”>dfsadf</a> 
    52.js 的内建对象 有:array,boolean,date,error,evalerror,function,math,number,object,rangeerror,referenceerror,regexp,string,syntaxerror,typeerror,urierror 53.js中的换行:/n 
    54.窗口全屏大小:<script>function fullscreen(){ this.moveto(0,0);this.outerwidth=screen.availwidth;this.outerheight=screen.availheight;}window.maximize=fullscreen;</script> 
    55.js中的all代表其下层的全部元素

    56.js中的焦点顺序:document.getelementbyid(”表单元素”).tabindex = 1 
    57.innerhtml的值是表单元素的值:如how are you,则innerhtml的值就是:how are you

    58.innertext的值和上面的一样,只不过不会把em这种标记显示出来. 
    59.contenteditable可设置元素是否可被修改,iscontenteditable返回是否可修改的状态. 
    60.isdisabled判断是否为禁止状态.disabled设置禁止状态 
    61.length取得长度,返回整型数值 
    62.addbehavior()是一种js调用的外部函数文件其扩展名为.htc 
    63.window.focus()使当前的窗口在所有窗口之前. 
    64.blur()指失去焦点.与focus()相反. 
    65.select()指元素为选中状态. 
    66.防止用户对文本框中输入文本:onfocus=”this.blur()” 
    67.取出该元素在页面中出现的数量:document.all.tags(”div(或其它html标记符)”).length 
    68.js中分为两种窗体输出:模态和非模态.window.showmodaldialog(),window.showmodeless() 
    69.状态栏文字的设置:window.status=‘文字’,默认的状态栏文字设置:window.defaultstatus = ‘文字.’; 
    70.添加到收藏夹:external.addfavorite(”http://www.google.com”,”google”); 
    71.js中遇到脚本错误时不做任何操作:window.onerror = donothing; 指定错误句柄的语法为:window.onerror = handleerror; 
    72.js中指定当前打开窗口的父窗口:window.opener,支持opener.opener…的多重继续. 
    73.js中的self指的是当前的窗口 
    74.js中状态栏显示内容:window.status=”内容” 
    75.js中的top指的是框架集中最顶层的框架 
    76.js中关闭当前的窗口:window.close(); 
    77.js中提出是否确认的框:if(confirm(”are you sure?”)){alert(”ok”);}else{alert(”not ok”);} 
    78.js中的窗口重定向:window.navigate(”http://www.google.com”); 
    79.js中的打印:window.print() 
    80.js中的提示输入框:window.prompt(”message”,”defaultreply”); 
    81.js中的窗口滚动条:window.scroll(x,y) 
    82.js中的窗口滚动到位置:window.scrollby 
    83.js中设置时间间隔:setinterval(”expr”,msecdelay)或setinterval(funcref,msecdelay)或settimeout 
    84.js中的模态显示在ie4+行,在nn中不行:showmodaldialog(”url”[,arguments][,features]); 
    85.js中的退出之前使用的句柄:function verifyclose(){event.returnvalue=”we really like you and hope you will stay longer.”;}}   window.onbeforeunload=verifyclose; 
    86.当窗体第一次调用时使用的文件句柄:onload() 
    87.当窗体关闭时调用的文件句柄:onunload() 
    88.window.location的属性: protocol(http:),hostname(www.example.com),port(80),host(www.example.com:80),pathname(”/a/a.html”),hash(”#giantgizmo”,指跳转到相应的锚记),href(全部的信息) 
    89.window.location.reload()刷新当前页面. 
    89-1.parent.location.reload()刷新父亲对象(用于框架) 
    89-2.opener.location.reload()刷新父窗口对象(用于单开窗口) 
    89-3.top.location.reload()刷新最顶端对象(用于多开窗口) 
    90.window.history.back()返回上一页,window.history.forward()返回下一页,window.history.go(返回第几页,也可以使用访问过的url) 
    91.document.write()不换行的输出,document.writeln()换行输出 
    92.document.body.nowrap=true;防止链接文字折行. 
    93.变量名.charat(第几位),取该变量的第几位的字符. 
    94.”abc”.charcodeat(第几个),返回第几个字符的ascii码值. 
    95.字符串连接:string.concat(string2),或用+=进行连接 
    96.变量.indexof(”字符”,起始位置),返回第一个出现的位置(从0开始计算) 
    97.string.lastindexof(searchstring[,startindex])最后一次出现的位置. 
    98.string.match(regexpression),判断字符是否匹配. 
    99.string.replace(regexpression,replacestring)替换现有字符串. 
    100.string.split(分隔符)返回一个数组存储值. 
    101.string.substr(start[,length])取从第几位到指定长度的字符串. 
    102.string.tolowercase()使字符串全部变为小写. 
    103.string.touppercase()使全部字符变为大写. 
    104.parseint(string[,radix(代表进制)])强制转换成整型. 
    105.parsefloat(string[,radix])强制转换成浮点型. 
    106.isnan(变量):测试是否为数值型. 
    107.定义常量的关键字:const,定义变量的关键字:var

    jQuery函数使用

    jquery取json中的值

    json数据:{“type”:1,"title":"我是帅哥"}

    先将json字符串反序列化为对象

    var  blogJson = eval("(" + blog + ")");//blos就是你的json数据

    然后根据key值获取value

    alert(blogJson.type)
    alert(blogJson.title)




  • 欢迎您
    什么是面向对象,什么是面向过程
    sxy 2018-08-09 技术语录

    2012

    面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 
    面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

    1.什么是面向对象技术?

    面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。它具有抽象性、封装性、继承性及多态性。

    2.面向对象与面向过程程序设计有什么不同?

    面向对象与面向过程程序设计有如下不同:

    (1)面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来;面向对象程序设计方法将数据和对数据的操作封装在一起,作为一个整体来处理。 函数与数据是否分离

    (2)面向过程程序设计方法以功能为中心来设计功能模块,难于维护;而面向对象程序设计方法以数据为中心来描述系统,数据相对于功能而言具有较强的稳定性,因此更易于维护。

    (3)面向过程程序的控制流程由程序中预定顺序来决定;面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际需要。 预定顺序;由运行时各种事件的实际发生来触发

    (4)面向对象程序设计方法可以利用框架产品(如MFC,Microsoft Foundation Classes)进行编程。 面向对象可利用框架 面向对象和面向过程的根本差别,在于封装之后,面向对象提供了面向过程不具备的各种特性,最主要的,就是继承和多态。

     3.面向对象技术有哪些优点?

    面向对象技术具有程序结构清晰,自动生成程序框架,实现简单,可有效地减少程序的维护工作量,代码重用率高,软件开发效率高等优点。 4.面向对象技术中的封装性有何优缺点?如何克服这些缺点?

    封装将对象有关的数据和行为封装成整体来处理,使得对象以外的部分不能随意存取对象的内部属性,从而有效地避免了外部错误对它的影响,大大减小了查错和排错的难度。另一方面,当进行修改对象内部时,由于只有少量的外部接口对外提供服务,因此同样减小了内部的修改对外部的影响。 如果一味地强调封装,对象的任何属性都不允许外部直接存取,则要增加许多没有其他意义、只负责读或写的行为。这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿。为了避免这一点,在程序的具体实现过程中应使对象有不同程度的可见性,进而与客观世界的具体情况相符合。

    面向对象的特点是:封装,多态,继承。其中多态有分为重载和重写。面向对象的编程思想更加接近现实的事物。 有这样几点好处:

     1、是编程更加容易。因为面向对象更接近于现实,所以你可以从现实的东西出发,进行适当的抽象。

     2、在软件工程上,面向对象可以使工程更加模块化,实现更低的耦合和更高的内聚。

    3、在设计模式上(似乎只有面向对象才设计到设计模式),面向对象可以更好的实现开-闭原则。也使代码更易阅读。 相对而言,面向过程的程序设计是面向对象程序设计的基础。面向对象的程序里面一定会有面向过程的程序片断的

     5.为什么要应用继承机制? 客观事物既有共性,也有特性。如果只考虑事物的共性,而不考虑事物的特性,就不能反映出客观世界中事物之间的层次关系。抽象机制是考虑事物的共性,继承机制是考虑事物的特性,这样才能完整地描述客观世界的层次关系。继承能使软件模块具有可重用性、独立性,缩短软件开发周期,提高软件开发效率,同时使软件易于维护。

    6.C++对多态性的支持体现在哪些方面?

    C++的多态性分为编译时多态和运行时多态。编译时多态是指在程序的编译阶段由编译系统根据参数确定与哪个同名的函数相联系;运行时多态是指在程序的运行阶段才根据产生的信息确定需要调用哪个同名的函数。C++通过函数重载和运算符重载实现编译时多态,通过继承和虚函数来实现运行时多态。

    7.目前常用的面向对象程序设计语言有何异同? 目前常用的面向对象程序设计语言有C++、Java、Visual Basic等。C++是混合型面向对象程序设计语言,继承并改进了C语言,是一种既支持面向对象又支持面向过程的程序设计方法。Java是纯面向对象程序设计语言,从C++发展而来。C++和Java均支持面向对象技术的基本概念和基本特征,如封装、类、构造函数、析构函数、继承、多态等。 C++与Java语法描述有相同之处,也有不同之处。如基本结构语句的语法大致相同,而类定义的语法等方面则不相同。

    此外还有以下不同:

    (1)C++有运算符重载机制,而Java没有此特性;

    (2)C++支持多重继承,而Java只支持单重继承;

    (3)C++通过构造函数创建对象,可以直接使用指针来操作对象的成员,而Java通过new运算符创建对象,通过new运算符返回的对象引用来使用对象,而不是直接操作指针;

    (4)C++程序要显式地释放所分配的内存,而Java具有内存垃圾收集机制,自动管理内存,不需要显式释放所分配的内存。 Visual Basic继承了BASIC语言所具有的语法简单、容易学习、容易使用、数据处理能力强的特点,又引入了面向对象、事件驱动的编程机制和可视化程序设计方法,大大降低了开发Windows应用程序的难度,有效地提高了应用程序开发的效率。但是,Visual Basic存在语法不严格、开发出的系统稳定性较低的缺点。相对C++来说,Visual Basic面向系统底层的编程能力有限


  • 欢迎您
    jQuery ajax - ajax() 方法
    sxy 2018-07-31 技术语录

    566

    实例

    通过 AJAX 加载一段文本:

    jQuery 代码:

    $(document).ready(function(){
      $("#b01").click(function(){
      htmlobj=$.ajax({url:"/jquery/test1.txt",async:false});
      $("#myDiv").html(htmlobj.responseText);
      });
    });

    HTML 代码:

    <div id="myDiv"><h2>Let AJAX change this text</h2></div>
    <button id="b01" type="button">Change Content</button>

    定义和用法

    ajax() 方法通过 HTTP 请求加载远程数据。

    该方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。

    最简单的情况下,$.ajax() 可以不带任何参数直接使用。

    注意:所有的选项都可以通过 $.ajaxSetup() 函数来全局设置。

    语法

    jQuery.ajax([settings])
    参数描述
    settings

    可选。用于配置 Ajax 请求的键值对集合。

    可以通过 $.ajaxSetup() 设置任何选项的默认值。

    参数

    • options

    • 类型:Object

      可选。AJAX 请求设置。所有选项都是可选的。

    • async

    • 类型:Boolean

      默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。

      注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

    • beforeSend(XHR)

    • 类型:Function

      发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。

      XMLHttpRequest 对象是唯一的参数。

      这是一个 Ajax 事件。如果返回 false 可以取消本次 ajax 请求。

    • cache

    • 类型:Boolean

      默认值: true,dataType 为 script 和 jsonp 时默认为 false。设置为 false 将不缓存此页面。

      jQuery 1.2 新功能。

    • complete(XHR, TS)

    • 类型:Function

      请求完成后回调函数 (请求成功或失败之后均调用)。

      参数: XMLHttpRequest 对象和一个描述请求类型的字符串。

      这是一个 Ajax 事件。

    • contentType

    • 类型:String

      默认值: "application/x-www-form-urlencoded"。发送信息至服务器时内容编码类型。

      默认值适合大多数情况。如果你明确地传递了一个 content-type 给 $.ajax() 那么它必定会发送给服务器(即使没有数据要发送)。

    • context

    • 类型:Object

      这个对象用于设置 Ajax 相关回调函数的上下文。也就是说,让回调函数内 this 指向这个对象(如果不设定这个参数,那么 this 就指向调用本次 AJAX 请求时传递的 options 参数)。比如指定一个 DOM 元素作为 context 参数,这样就设置了 success 回调函数的上下文为这个 DOM 元素。

      就像这样:

      $.ajax({ url: "test.html", context: document.body, success: function(){
              $(this).addClass("done");
            }});
    • data

    • 类型:String

      发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。

    • dataFilter

    • 类型:Function

      给 Ajax 返回的原始数据的进行预处理的函数。提供 data 和 type 两个参数:data 是 Ajax 返回的原始数据,type 是调用 jQuery.ajax 时提供的 dataType 参数。函数返回的值将由 jQuery 进一步处理。

    • dataType

    • 类型:String

      预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:

      • "xml": 返回 XML 文档,可用 jQuery 处理。

      • "html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。

      • "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)

      • "json": 返回 JSON 数据 。

      • "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

      • "text": 返回纯文本字符串

    • error

    • 类型:Function

      默认值: 自动判断 (xml 或 html)。请求失败时调用此函数。

      有以下三个参数:XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象。

      如果发生了错误,错误信息(第二个参数)除了得到 null 之外,还可能是 "timeout", "error", "notmodified" 和 "parsererror"。

      这是一个 Ajax 事件。

    • global

    • 类型:Boolean

      是否触发全局 AJAX 事件。默认值: true。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的 Ajax 事件。

    • ifModified

    • 类型:Boolean

      仅在服务器数据改变时获取新数据。默认值: false。使用 HTTP 包 Last-Modified 头信息判断。在 jQuery 1.4 中,它也会检查服务器指定的 'etag' 来确定数据没有被修改过。

    • jsonp

    • 类型:String

      在一个 jsonp 请求中重写回调函数的名字。这个值用来替代在 "callback=?" 这种 GET 或 POST 请求中 URL 参数里的 "callback" 部分,比如 {jsonp:'onJsonPLoad'} 会导致将 "onJsonPLoad=?" 传给服务器。

    • jsonpCallback

    • 类型:String

      为 jsonp 请求指定一个回调函数名。这个值将用来取代 jQuery 自动生成的随机函数名。这主要用来让 jQuery 生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存 GET 请求的时候,指定这个回调函数名。

    • password

    • 类型:String

      用于响应 HTTP 访问认证请求的密码

    • processData

    • 类型:Boolean

      默认值: true。默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。

    • scriptCharset

    • 类型:String

      只有当请求时 dataType 为 "jsonp" 或 "script",并且 type 是 "GET" 才会用于强制修改 charset。通常只在本地和远程的内容编码不同时使用。

    • success

    • 类型:Function

      请求成功后的回调函数。

      参数:由服务器返回,并根据 dataType 参数进行处理后的数据;描述状态的字符串。

      这是一个 Ajax 事件。

    • traditional

    • 类型:Boolean

      如果你想要用传统的方式来序列化数据,那么就设置为 true。请参考工具分类下面的 jQuery.param 方法。

    • timeout

    • 类型:Number

      设置请求超时时间(毫秒)。此设置将覆盖全局设置。

    • type

    • 类型:String

      默认值: "GET")。请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。

    • url

    • 类型:String

      默认值: 当前页地址。发送请求的地址。

    • username

    • 类型:String

      用于响应 HTTP 访问认证请求的用户名。

    • xhr

    • 类型:Function

      需要返回一个 XMLHttpRequest 对象。默认在 IE 下是 ActiveXObject 而其他情况下是 XMLHttpRequest 。用于重写或者提供一个增强的 XMLHttpRequest 对象。这个参数在 jQuery 1.3 以前不可用。

    回调函数

    如果要处理 $.ajax() 得到的数据,则需要使用回调函数:beforeSend、error、dataFilter、success、complete。

    beforeSend

    在发送请求之前调用,并且传入一个 XMLHttpRequest 作为参数。

    error

    在请求出错时调用。传入 XMLHttpRequest 对象,描述错误类型的字符串以及一个异常对象(如果有的话)

    dataFilter

    在请求成功之后调用。传入返回的数据以及 "dataType" 参数的值。并且必须返回新的数据(可能是处理过的)传递给 success 回调函数。

    success

    当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。

    complete

    当请求完成之后调用这个函数,无论成功或失败。传入 XMLHttpRequest 对象,以及一个包含成功或错误代码的字符串。

    数据类型

    $.ajax() 函数依赖服务器提供的信息来处理返回的数据。如果服务器报告说返回的数据是 XML,那么返回的结果就可以用普通的 XML 方法或者 jQuery 的选择器来遍历。如果见得到其他类型,比如 HTML,则数据就以文本形式来对待。

    通过 dataType 选项还可以指定其他不同数据处理方式。除了单纯的 XML,还可以指定 html、json、jsonp、script 或者 text。

    其中,text 和 xml 类型返回的数据不会经过处理。数据仅仅简单的将 XMLHttpRequest 的 responseText 或 responseHTML 属性传递给 success 回调函数。

    注意:我们必须确保网页服务器报告的 MIME 类型与我们选择的 dataType 所匹配。比如说,XML的话,服务器端就必须声明 text/xml 或者 application/xml 来获得一致的结果。

    如果指定为 html 类型,任何内嵌的 JavaScript 都会在 HTML 作为一个字符串返回之前执行。类似地,指定 script 类型的话,也会先执行服务器端生成 JavaScript,然后再把脚本作为一个文本数据返回。

    如果指定为 json 类型,则会把获取到的数据作为一个 JavaScript 对象来解析,并且把构建好的对象作为结果返回。为了实现这个目的,它首先尝试使用 JSON.parse()。如果浏览器不支持,则使用一个函数来构建。

    JSON 数据是一种能很方便通过 JavaScript 解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用 jsonp 类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的 URL 后面。服务器端应当在 JSON 数据前加上回调函数名,以便完成一个有效的 JSONP 请求。如果要指定回调函数的参数名来取代默认的 callback,可以通过设置 $.ajax() 的 jsonp 参数。

    注意:JSONP 是 JSON 格式的扩展。它要求一些服务器端的代码来检测并处理查询字符串参数。

    如果指定了 script 或者 jsonp 类型,那么当从服务器接收到数据时,实际上是用了 <script> 标签而不是 XMLHttpRequest 对象。这种情况下,$.ajax() 不再返回一个 XMLHttpRequest 对象,并且也不会传递事件处理函数,比如 beforeSend。

    发送数据到服务器

    默认情况下,Ajax 请求使用 GET 方法。如果要使用 POST 方法,可以设定 type 参数值。这个选项也会影响 data 选项中的内容如何发送到服务器。

    data 选项既可以包含一个查询字符串,比如 key1=value1&key2=value2 ,也可以是一个映射,比如 {key1: 'value1', key2: 'value2'} 。如果使用了后者的形式,则数据再发送器会被转换成查询字符串。这个处理过程也可以通过设置 processData 选项为 false 来回避。如果我们希望发送一个 XML 对象给服务器时,这种处理可能并不合适。并且在这种情况下,我们也应当改变 contentType 选项的值,用其他合适的 MIME 类型来取代默认的 application/x-www-form-urlencoded 。

    高级选项

    global 选项用于阻止响应注册的回调函数,比如 .ajaxSend,或者 ajaxError,以及类似的方法。这在有些时候很有用,比如发送的请求非常频繁且简短的时候,就可以在 ajaxSend 里禁用这个。

    如果服务器需要 HTTP 认证,可以使用用户名和密码可以通过 username 和 password 选项来设置。

    Ajax 请求是限时的,所以错误警告被捕获并处理后,可以用来提升用户体验。请求超时这个参数通常就保留其默认值,要不就通过 jQuery.ajaxSetup 来全局设定,很少为特定的请求重新设置 timeout 选项。

    默认情况下,请求总会被发出去,但浏览器有可能从它的缓存中调取数据。要禁止使用缓存的结果,可以设置 cache 参数为 false。如果希望判断数据自从上次请求后没有更改过就报告出错的话,可以设置 ifModified 为 true。

    scriptCharset 允许给 <script> 标签的请求设定一个特定的字符集,用于 script 或者 jsonp 类似的数据。当脚本和页面字符集不同时,这特别好用。

    Ajax 的第一个字母是 asynchronous 的开头字母,这意味着所有的操作都是并行的,完成的顺序没有前后关系。$.ajax() 的 async 参数总是设置成true,这标志着在请求开始后,其他代码依然能够执行。强烈不建议把这个选项设置成 false,这意味着所有的请求都不再是异步的了,这也会导致浏览器被锁死。

    $.ajax 函数返回它创建的 XMLHttpRequest 对象。通常 jQuery 只在内部处理并创建这个对象,但用户也可以通过 xhr 选项来传递一个自己创建的 xhr 对象。返回的对象通常已经被丢弃了,但依然提供一个底层接口来观察和操控请求。比如说,调用对象上的 .abort() 可以在请求完成前挂起请求。


  • 欢迎您
    thinkphp5总结
    sxy 2018-07-31 技术语录

    851


    'query'=>['name'=>$canshu],]);
    ->paginate(3,false,['query'=>request()->param()]);

    thinkphp5中字段值自增或自减的方法

    自增方法:db('数据表名')->where('条件')->setInc('字段',值);

    例子:db('user')->where('uid',$uid)->setInc('score',5);//用户积分加5

    自减方法:db('数据表名')->where('条件')->setDec('字段',值);

    例子:db('user')->where('uid',$uid)->setDec('score',5);//用户积分减5



  • 欢迎您
    include,include_once,require,require_once的区别
    sxy 2018-07-24 技术语录

    344

    1、include,require在其被调用的位置处包含一个文件。

    2、include_once,require_once函数的作用与include相同,不过它会首先验证是否已包含该文件。如果已经包含,则不再执行include_once。其他同include一样。

    3、require与include最主要的区别,a、require出错时,脚本将停止运行,而include出错的情况下,脚本将继续执行。b、无论require的位置如何,制定文件都将包含到出现require的脚本中。例如,即使require放在计算结果为假的if语句中,依然会包含指定文件。

    4、使用require_once可以解决文件被覆盖的问题。 require_once函数确保文件只包含一次。在遇到require_once后,后面再试图包含相同的文件时将被忽略。


  • 姓名:孙小宇
  • 职业:PHP开发
  • 邮箱:yntx420@163.com
  • 定位:河北 · 张家口
       
  •   总访问量:17.19w+
  •   累计访问量:14.45w+
  •