-
近期文章
近期评论
文章归档
- 2024 年十月
- 2024 年七月
- 2024 年五月
- 2024 年三月
- 2023 年十二月
- 2023 年六月
- 2023 年二月
- 2022 年六月
- 2022 年四月
- 2019 年十月
- 2019 年九月
- 2019 年八月
- 2019 年六月
- 2019 年五月
- 2019 年四月
- 2019 年三月
- 2019 年二月
- 2019 年一月
- 2018 年十二月
- 2018 年十一月
- 2018 年十月
- 2018 年八月
- 2018 年七月
- 2018 年六月
- 2018 年五月
- 2018 年四月
- 2018 年三月
- 2018 年二月
- 2018 年一月
- 2017 年十二月
- 2017 年十一月
- 2017 年十月
- 2017 年九月
- 2017 年八月
- 2017 年六月
- 2017 年五月
- 2017 年四月
- 2017 年三月
- 2017 年二月
- 2017 年一月
- 2016 年十二月
- 2016 年十一月
- 2016 年十月
- 2016 年九月
- 2016 年八月
- 2016 年七月
- 2016 年六月
- 2016 年五月
- 2016 年四月
- 2016 年三月
- 2016 年二月
- 2016 年一月
- 2015 年十二月
- 2015 年十一月
- 2015 年十月
- 2015 年七月
- 2015 年六月
- 2015 年五月
- 2015 年四月
- 2015 年二月
- 2015 年一月
分类目录
- algorithm
- apache
- awk
- bash
- curl
- DDD
- DesignPattern
- Elasticsearch
- git
- github
- GO
- http
- issues
- java
- javascript
- jquery
- linux
- memcache
- mongodb
- mysql
- nginx
- Nodejs
- ood
- php
- php-fpm
- php异常
- redis
- securecrt
- socket
- svn
- vim
- webserver
- windows
- 互联网
- 产品
- 前端
- 基本语法
- 小工具
- 小技巧
- 异常解决办法
- 想做但是没做的
- 扒拉代码
- 扫盲
- 扫盲
- 未分类
- 概念名词
- 每日一题
- 消息队列
- 涨姿势
- 漏洞
- 生活
- 算法
- 计算机基础
- 跨域解决方案
- 运维
- 通信加密
- 面试题
功能
如何遍历多维数组
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;
}
}
}
}
运算符优先级
先来看下面面试题:
$b ? $a = 0 ? 30 : 50 + 1 : $b = 0; echo $a,$b;//5140 ?> 上面这个知识点主要考察的知识点是运算符的优先级,上面涉及到的优先级顺序从大到小依次是: + 、 >、 ?:(ternary) 、 =
Memcached基本操作
memcached是
基本操作:
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
清空所有
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'
让服务生效
测试
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 |
+——–+—–+———+
linux下生成任意大小的文件
dd if=/dev/zero of=~/Downloads/test.png bs=100k count=1
生成一个100k大小的图片
我的.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