一条sql可以用到多个索引么

发表在 每日一题 | 留下评论

如何遍历多维数组

1、第一种方式、递归
$arr = array(
array(1,2,3,4,),
array(5,6,7,8,),
);
Function eachRead($arr){
Foreach($arr as $k=>$v){
If( is_array($v)){
eachRead($v);
}else{
each $v . PHP_EOL;
}

}
}

发表在 php, 面试题 | 留下评论

运算符优先级

先来看下面面试题:


 $b ? $a = 0 ? 30 : 50 + 1 : $b = 0;
echo $a,$b;//5140
?>
上面这个知识点主要考察的知识点是运算符的优先级,上面涉及到的优先级顺序从大到小依次是:
+ 、 >、 ?:(ternary) 、 =

我个人觉得这是个很重要的知识点,以下是各运算符的总体的优先级顺序:

发表在 未分类 | 留下评论

Memcached基本操作

memcached是 形式的存储数据库,key的长度限制250kb,value长度限制为1024kb

基本操作:
add
用法:add {key} {flag} {expire time(s)} {length} 然后回车输入制定长度的内容 再回车
如果数据存在的话会报一个NOT_STORED错误
get
没啥说的
set
cas {key} {flag} {expire time(s)} {length} 然后回车输入制定长度的内容
数据存在则跟replace一样,如果不存在就成了add操作
replace
这里跟set差不多,只不过如果数据不存在会报一个NOT_STORED错误
delete
不多说了
gets
比get多了一个版本的操作,配合cas使用
cas
意思是check and set,类似于mysql innodb中的mvcc,在set的基础上加了个修改版本号,这里可以做一些mysql中乐观锁的操作
用法:
cas {key} {flag} {expire time(s)} {length} {version(int)}
incr
key值加1,如果原key值不是int类型会报错(CLIENT_ERROR cannot increment or decrement non-numeric value)
decr
用法:decr {key} 1
key值减1

append/prepend 用法和add完全一样,append是从后面追加,prepend是从前面填充

下面相当于关系型数据库中的select了:

stats cachedump slabs_id limit_num
slabs_id:由stats items返回的结果(STAT items后面的数字)决定的
limit_num:返回的记录数,0表示返回所有记录
通过stats items、stats cachedump slab_id limit_num配合get命令可以遍历memcached的记录。

stats
查看状态,如总请求数(cmt_get)、总命中数(get_hits)、未命中数(get_misses)、启动时间(uptime)
flush_all
清空所有

发表在 memcache | 留下评论

Memcached分布式搭建

1、memcached服务安装

#依赖libevent模块
brew install libevent
./configure --prefix=/Users/wenzg/local/memcached --with-libevent=/usr/local/Cellar/libevent/2.0.22/
make && make install

启动服务

/Users/wenzg/local/memcached/bin/memcached -d -m 128 -l 127.0.0.1 -p 9527 -u root
#-d 是守护进程模式
#-m 128M
#-l 监听服务器ip
#-p 监听端口
#-u 以哪个用户的身份运行

测试

telnet localhost 9527
stats

2、memcache扩展安装
php7下安装pecl版本的memcache会报错

./memcache_pool.h:45:10: fatal error: 'ext/standard/php_smart_str_public.h' file not found
wget https://github.com/websupport-sk/pecl-memcache/archive/php7.zip 
mv php7.zip memcache.zip
unzip memcache.zip
cd pecl-memcache-php7/
./configure --with-php-config=/Users/wenzg/local/php/bin/php-config
make && make install

php.ini中配置

[memcache]
extension_dir = '/Users/wenzg/local/php/lib/php/extensions/no-debug-non-zts-20160303/'
extension = 'memcache.so'

让服务生效


测试


							
发表在 memcache | 留下评论

having用法

having的用法
having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。

例如:
有这么一个面试题:
请写出一条SQL满足一下查询需求(表名:score)
1)筛选出不及格科目的个数大于1的学生
2)同时计算该学生不及格科目的平均分
3)不使用子查询
+—-+——–+———+——-+
| id | name | subject | score |
+—-+——–+———+——-+
| 1 | 张三 | 数学 | 80 |
| 2 | 张三 | 语文 | 53 |
| 3 | 张三 | 英语 | 59 |
| 4 | 李四 | 数学 | 55 |
| 5 | 李四 | 语文 | 56 |
| 6 | 李四 | 语文 | 50 |
| 7 | 王五 | 数学 | 100 |
| 8 | 王五 | 语文 | 90 |
+—-+——–+———+——-+

select name,count(1) as cnt,avg(score) avg from score where score < 60 group by name having cnt > 1;

+——–+—–+———+
| name | cnt | avg |
+——–+—–+———+
| 张三 | 2 | 56.0000 |
| 李四 | 3 | 53.6667 |
+——–+—–+———+

发表在 mysql | 留下评论

linux下生成任意大小的文件

dd if=/dev/zero of=~/Downloads/test.png bs=100k count=1
生成一个100k大小的图片

发表在 linux | 留下评论

我的.vimrc配置

syntax on
set nu
set paste
set fileencodings=ucs-bom,utf-8,utf-16,gbk,big5,gb18030,latin1  
set fileencoding=utf-8 
set encoding=utf-8
map   I//
map   ^xx
"map   

"============"
"多窗口操作"
"============"
map + +  "ctrl+w++ 扩大窗口"
map - -  "ctrl+w++ 缩小窗口"
map gl l "ctrl+w+l 移动到右侧窗口"
map gh h "ctrl+w+h 移动到左侧窗口"
map gj j   "ctrl+w+j 移动到下方窗口"
map gk k "ctrl+w+k 移动到上方窗口"

"================="
"当前文件内搜索选项"
"================="
set hlsearch "开启搜索结果的高亮显示"
set incsearch "边输入边搜索(实时搜索)"

"ctrl+a全选并复制
"gg是定位到行首
"V:是进入 visual模式
"G$是VISUAL模式全选
"y:是复制
"+是+号寄存器
map  ggVG$"+y

"================="
"加入文件头注释"
"================="
autocmd BufNewFile *.js,*.php exec ":call SetComment()" 
"新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
func SetComment()
	if expand("%:e") == 'php'
                call setline(1,"")
	call append(line(".")+5, " * 创建日期:".strftime("%Y年%m月%d日 %H:%M:%S")) 
	call append(line(".")+6, " ****************************************************************/") 
	call append(line(".")+7, "")
	call append(line(".")+8, "")
endfunc
发表在 vim | 留下评论

Binary Tree

 $find ){
      $high = $mid - 1;
    }else{
      return $mid;
    }
  }
  return false;
}
发表在 algorithm | 留下评论

Git常用命令

http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

发表在 git | 留下评论