Mysql可以使用AUTO_INCREMENT来设定主键的值为自增长的,其默认值是1,如果想把它的初始值设置为1000,比较笨的办法是先插入一条记录并指定主键的值为999,然后delete改行记录,例如:
insert into test(pk) values(999);
delete from test where pk = 999;
更好的方法是使用alter的方法来直接修改,例如:
alter table test AUTO_INCREMENT = 200;
需要根据某个时间点来统计数量,例如统计每天网站的访问量,本人以前的做法是先查询当前有没有记录,如果存在就更新访问量的值,否则就插入一条。其实在Mysql中可以一条SQL语句来搞定,只要使用ON DUPLICATE KEY UPDATE即可。例如:
insert into daypv(day,cnt) values('2012-11-22',1)
on duplicate key update cnt = cnt + 1;
如果insert 末尾指定了on duplicate key update,插入数据会导致一个primary key或unique索引出现重复,那么就对已经存在的行执行update操作,条件就是primary key或unique索引。
对于一次插入一条记录没有问题,如果一次插入多条记录,其中某些可能会造成primary key或unique索引重复,那该如何处理呢。其实和单条处理类似,只要在后面使用values函数即可,例如:
insert into daypv(day,cnt)
values('2012-11-22',1),
('2012-11-23',2),
('2012-11-24',3),
('2012-11-25',4)
on duplicate key update cnt = cnt + values(cnt);
上述 “cnt = cnt + values(cnt)”中第一个是cnt指更新的字段,第二个指原来的值,第三个是上面insert对应行中指定的cnt的值,例如2012-11-24记录已经存在,cnt的原始值为5,那么执行上述sql后,2012-11-24的cnt就为8 ( 3 + 5)。
另外需要注意的是 ON DUPLICATE KEY UPDATE 是Mysql特有的,不是标准的SQL语法。
mysql可以使用unique key来确保数据的准确性,unique key可以是一个字段,也可以是多个字段,对应已经存在的unique key如何修改呢?目前我使用的方法是分两步来完成,先drop掉,然后在创建。需要注意的是drop时关键字是“index”,而创建时关键词是“unique key”,命令如下:
alter table table_name drop index `uk_name`;
alter table table_name add unique key `new_uk_name` (`col1`,`col2`);
注意:如果表中已经存在数据,可能会创建失败,原因是col1, col2无法满足unique。
Apache服务自带了应该用于压力测试的工具ab(ApacheBench),对应做一些简单的压力测试,它完全能够胜任。本文介绍在Centos中不安装apache的情况下如何获取安装ab。
ab运行需要依赖apr-util包,安装命令为:
yum install apr-util
下载apache的rpm包,可以直接去官网手动下载,当然也可以使用命令yumdownloader来完成,yumdownloader是yum-utils包下面的,如果没有安装yum-utils,则需要先安装它。因为解压apache的rpm包时会在当前目录下生成etc、var和usr三个目录,所以建议先创建一个临时目录,命令如下:
mkdir ~/abtmp
cd ~/abtmp
yumdownloader httpd
rpm2cpio httpd-*.rpm | cpio -idmv
上述命令成功后,可以在~/abtmp下的usr/bin中看到一个名为ab的文件,复制到系统PATH下就大功告成,例如。
cp ~/abtmp/usr/bin/ab /usr/bin
今天使用goolge搜索时,点击搜索结果到百度看到了传说中的“中间跳转页”,即是出现“点击这里继续访问您选择的百度知道结果>>”提示,而且这还是针对浏览器的,使用chrome会这样,而Fireofx、safari则没有。对这种情况果断不能忍啊,上网一找,使用chrome下的脚本扩展Tampermonkey可以轻松搞定。Tampermonkey真是一个好东西,它允许用户自己定义JS脚本在指定的页面上运行,也就是说通过它可以修改访问页面上的很多东西,比如你经常访问的某个网站,你觉得字体太小,可以使用自己写一个脚本来加大字号,可以理解自己写的js是页面自带js一样。下面介绍如何解决上述的问题。
1、安装Tampermonkey。直接去Chrome Web Stroe搜索Tampermonkey,然后安装即可。
2、安装成功后应该在网址输入栏后出现Tampermonkey的小图标。点击图标选择“新建脚本”,然后把下面内容复制进去保存即可。
// ==UserScript==
// @name baidu ressafe page auto rediret
// @version 1.0
// @description chrome浏览器中取消百度对Google搜索的自动跳转
// @include http://*baidu.com/search/ressafe.html*
// @author YangYZ
// ==/UserScript==
(function(){
var loc = window.location.href;
if (loc.match("ressafe\\.html\\?q=.*&url=.*baidu.com")) {
window.location.href = window.location.href.replace(/.*url=(.*)&*/,"$1");
};
})();
说明:注释中使用@xxx 后的信息会在脚本管理中显示,其中@include对设定的网站启用脚本,可以使用通配符。脚本内容很简单,就是判断当前的url是不不是“中间页”的地址,如果是就使用 window.location.href跳转到真正的目标地址。
最近发现我的MBP合上盖子后需要一到两分钟的样子才会进入到休眠状态,所以在网上查了一下,原来mac os x有三种休眠方式。
方式1:mode 0,电脑进入休眠,但是电源或电池还是会继续会向内存供电,内存的数据不会写入硬盘。所以能够快速进入休眠状态,同样恢复开机也很快。
方式2:mode 1,内存的数据会写入到硬盘,然后系统停止对内存的供电,让系统进入休眠状态。如果内存大,写硬盘需要时间,所以这种方式所需要的时间比较长,恢复开机时间也较长。
方式3:mode 3,此方式叫做safe sleep模式或混合休眠模式。因为他说混合了方式1和方式2。就是说内存的数据在会存在内存和硬盘两个地方,即使通过电池供电到电池耗尽,接通电源后系统也能恢复到先前的状态。由于要写硬盘,所以时间也会比较长,但是恢复开机比较快。
MBP默认采用方式3,因此当内存使用8G时,休眠时间会比较长。既然提供了上述三种模式,当然也是可以修改的,但是想要修改必须在终端下使用命令来完成。
查看当前使用哪种休眠模式,其中 hibernatemode 的值对应上述的模式,
hibernatefile硬盘存储内存镜像的文件
pmset -g
修改休眠模式使用,modetype 就是上述的0、1、3
sudo pmset -a hibernatemode modetype
同样可以修改内存镜像文件的存放路径
sudo pmset -a hibernatefile
本文参考了 http://bisn.me/mac-os-x-hibernatemode.html,该文更加详细的描述三种休眠模式的优缺点。