需要根据某个时间点来统计数量,例如统计每天网站的访问量,本人以前的做法是先查询当前有没有记录,如果存在就更新访问量的值,否则就插入一条。其实在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,该文更加详细的描述三种休眠模式的优缺点。
前段时间在公司的路由器上配置把公网IP映射到局域网中的一台电脑,映射为web服务器,在公司外面可以使用公网IP正常访问web服务,但公司内部使用公网IP确无法访问web服务。最开始以为是路由器配置问题,多次排查配置,没有发现问题;然后想到会不会是本机路由表的问题,尝试设置一些静态路由,问题依然没有解决;最后终于在网上找到类似的问题,原因是路由器硬件的问题,路由器不支持数据回流造成。
关于“数据回流”介绍,在网上看到一篇很好的文章以下转帖。原文地址:http://www.5mwl.com/thread-17384-1-1.html
阅读全文…
今天把mac下的firefox升级到16,发现以前使用的httpfox的快捷键不能使用,原来是firefox在工具–web开发者中增加了一个“开发者工具栏”,而它使用的快捷键恰好和httpfox一样,导致使用快捷键shift+F2无法启动httpfox。想停掉“开发者工具栏”,找了一圈又没有找到如何停止,另外firefox本身还不支持自定义快捷键,搞的都想放弃最新版了。好在找到一个可以自定义快捷键的插件。插件地址:https://addons.mozilla.org/zh-CN/firefox/addon/customizable-shortcuts/。安装此插件后可以在首选项页面中看到上面的tab增加一个“Shortcuts”,选择它后就可以安装自己喜欢的方式来定义各种功能的快捷键了。
另附mac os 下firefox的自带快捷键的列表地址:Firefox 键盘快捷键
eclipse本身自带了很多快捷键,当然也允许用户修改或自定义。依次打开window –> preferences –> General –> Keys,可以看到设置快捷键的列表。一般情况下设置好了快捷键就可以立马使用了,但某些操作好像无法使用快捷键,例如配置了svn相关的操作,发现快捷键不起作用。究其原因,可能是在 “Command Groups Availability”中没有启用。可以在 windows –> Customize Perspective –> Command Groups Availability下找到对应在快捷键配置的category,并将其选中。如果没有选中,那么快捷键不启用。
前段时间帮人在mac下安装支付宝插件。进入支付宝官网下载了插件,安装支付宝控件的时候却提示“不能打开替身,因为找不到原身”错误信息。他说曾经安装过的,后来删除过,然后再就安装不上了。
在网上查询后得知,控件存放的位置是 “~/Library/Internet Plug-Ins”,在finder中打开~/Library/,没有看到Internet Plug-Ins文件夹,在下面创建后在进行安装,提示成功。可以支付宝登陆了。
众所周知,z-index的值越大,其对应的层就会覆盖其他层,但是ie6下可能会有问题,因为它不止依赖自身的z-index,而且还要看父容器的z-index。