- 浏览: 260917 次
- 来自: 北京
最新评论
-
vae0921:
很详细,刚好在考虑统计每个月登录超过多少天的用户
只不过我们是 ...
用redis实现用户登录计数 -
iwindyforest:
介绍的很详细, 多谢指教, 另外:打开慢查询日志功能需要有Su ...
Mysql 慢查询日志 -
hexawing:
Office Outlook 2010貌似不支持这个,会显示成 ...
如何在邮件中嵌入图片,而非上传在附件 -
xq_blessing:
Yii framework非常好的php框架,偶也正在研究中! ...
Yii的log分析
文章列表
得到某个时间戳所对应的日期的0时在这边的数据统计中经常用到,如得到1409144737(2014/8/27 21:5:37)的0时1409068800(2014/8/27 0:0:0),可用的方法也比较多,在这里介绍常用的三种: 1.mktime函数方式
Java代码
$time =1409144737;
var_dump(date('Y-m-d H
最近有个问题 :实现显示用户本月登录日期 ,累计天数到一定数目可参加活动,和下图展示的功能类似。
过去看过使用redis bitmap进行活跃用户统计的例子,觉得和本功能非常match,决定用redis的bitset来实现。
每个用户每月产生一个key,字段意义如下 0 位表示某月1日登录 ,1表示某月2日登录,以此类推。
每个用户一月的活跃度需要8byte,1W用户每年需要1W*12*8byte 约1M数据
用户每次登录系统,需要用setBit设置用户本日登录,可用bitcount的到用户本月登录天数总和,因为PHP原生不对bitset进行支持, ...
PHP编码的几个最佳实践
- 博客分类:
- PHP
继续说说PHP的几个编码优化
1.用逗号连接echo字符串
$name='orange';
$address='BeiJing';
echo 'Hi,'.$name.'! Welcome to '.$address;//慢
echo 'Hi,',$name,'! Welcome to ',$address;//快,建议方式
原因可以查看两者的opcode,用逗号的方式和用点号方式的opcode如下
2.使用require还是require_once
老问题了,Lerdof N年前就提出来了,建议用require,因为require_once发起少量的stat调用,我们可以通过ab ...
前端优化的一些地方(JS/CSS/图片)
- 博客分类:
- Web前端
最近翻了翻,总结一下
一.督促你的客户选用更快的浏览器,这样才能体验到更快的加载速度!
具体什么的就不说了,上一张图,下图为Gomez收集了200个网站的18.6亿个别值,时间范围为1个月,得出的真实上网环境中的数据。图 ...
时间连续处理函数(PHP)
- 博客分类:
- PHP
前几天看他人项目代码,有一功能为统计最近1月某功能的使用总量,代码实现竟然不做时间连续处理,出现下面情形。
N星期前,也曾看到部分代码,时间连续处理竟然是以一天为时间间隔查询数据库,最近1月的统计竟然需要查询30+次。
在此列一下按照日统计数据的sql和自己写的一个时间连续处理函数.
1.测试表为
test
字段1:increase(int型,表每天增加)
字段2:optime(int型,为时间戳,表示记录增加时间)
--按日查询--
$start = strtotime('2012-02-21');
$end = strtotime('2012-03-03');
$sql=& ...
Python多线程
Python中实现多线程有两种方式,一种基于_thread模块(在Python2.x版本中为thread模块,没有下划线)的start_new_thread()函数,另一种基于threading模块的Thread类。
其实Python的多线程编程不能真正利用多核的CPU,但是用开源模块使你的计算压力分布到多核CPU上.........
一.使用start_new_thread()实现线程,是比较底层的实现方式,所有线程共享他们global数据,为了达到同步,模块也提供了简单的锁机制
_thread.start_new_thread(function, args[, kwar ...
MySQL Connector/Python
- 博客分类:
- python
MySQL Connector/Python 是 MySQL 官方提供的 Python 连接 MySQL 数据库的驱动程序.下载地址为: http://www.mysql.com/downloads/connector/python/,到现在位置发布支持Python2.7,Python3.2的版本,Python3.3的版本正在开发中,支持Python3.*的连接驱 ...
Mysql 查询缓存
- 博客分类:
- mysql
Mysql 查询缓存
查询缓存的作用就是当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询。这样就大大提高了性能,节省时间。
1.配置查询缓存
修改配置文件,修改[mysqld]下的query_cache_size和query_cache_type(如果没有则添加)。其中query_cache_size表示缓存的大小,而query_cache_type有3个值,表示缓存那种类 型的select结果集,query_cache_type各个值如下:
0或off关闭缓存
1或on开启缓存,但是不保存使用sql_no_cache的select语句,如不缓 ...
mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出代码实现中耗费资源的sql语句,对我们程序的优化有很高的参考。本篇主要将慢查询日志的开启,日志分析,这也是优化SQL程序的一般步骤中至关重要的一步。
1.mysql慢查询日志
打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加上
log-slow-queries=mysql_slow.log
long_query_time=3
其中 ...
现在好的邮件客户端如outlook等支持直接插入图片,接收方阅读时也表现为非附件形式. 但是如果我们用代码实现呢?我们可以用下面2种方式实现
1.可以将图片传到有外链的网站,这个就无需介绍了,如果图片不变化,推荐这种形式。
2.采用base 64编码的方式,在此重点讲讲这种方式。
嵌入图片,可以说这是HTML的知识例了
1.首先需要准备图片,这里有个限制,我们在最后说明。
2.对图片进行base 64编码
这里采用PHP base64_encode 函数进行演示,代码如下:
$content=base64_encode(file_get_contents('F:\test.png') ...
MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个:
* 数据回复
* 主从数据库。用于slave端执行增删改,保持与master同步。
1.开启binary log功能
需要修改mysql的配置文件,本篇的实验环境是win7,配置文件为mysql安装目录\MySQL Server 5.1下的my.ini,添加一句log_bin = mysql_bin即可
eg:
[mysqld]
......
log_bin = mysql_bin
...
1.定义:定义一个操作的算法的框架,将一些步骤的实现推迟到子类.
其实意思就是操作的算法的骨架不变,即规定好了第一步应该干什么,第二步干什么,再次干什么,但是不规定具体内容.
2.图示
AbstractClass(抽象类):定义了一到多个的抽象方法,以供具体的子类来实现它们;而且还要实现一个模板方法,来定义一个算法的骨架。
ConcreteClass(具体类):实现父类中的抽象方法以完成算法中与特定子类相关的步骤
在此那超市购物为例子,如某A购物非常有规律,他一般先去书籍区转转,然后再去蔬菜瓜果区看看,再去服装鞋帽区逛逛,最后去家电数码区(这就相当与AbstractClass)
话说上 ...
大家都在说设计模式,俺们也来插一脚解说一下。
先来中介者模式吧,大家都把设计模式将复杂了。GOF第一中介者模式为:用一个中介对象封装一系列对象的交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立的改变它们之间的交互。中介者模式使原有一对多的依赖变成了一对一的依赖,同事类只依赖中介者,降低了类之间的耦合。
其实说白了就是将下面的联系方式A变成了B方式而已,不仅降低类与类之间的耦合,也减少了我们维护的成本。
图1:联系方式A
图2:联系方式B
在A方式下各个对象之间的交互操作非常多;每个对象的行为操作都依赖彼此对方,修改B的一个函数,你就需修改A,C,E三个类的代码, ...
判断是POST/GET请求+判断是AJAX请求
- 博客分类:
- PHP
1.判断是POST/GET请求
这个大家都知道了,就是$_SERVER['REQUEST_METHOD']
返回用户的请求方式; i.e. 'GET', 'HEAD', 'POST', 'PUT'.
eg:
2.判断是AJAX请求
框架中频繁用到:$_SERVER['HTTP_X_REQUESTED_WITH']来判断是否Ajax提交. 其实$_SERVER数组中无HTTP_X_REQUESTED_WITH变量,其实是利用XmlHttpRequest的setRequestHeader方法设置的。
在Jquery的源码中
然后
setRequestHeader("XX" ...
Yiic介绍
本来要介绍Yii的RBAC,但里面有部分内容需要用到Yiic,先开篇文章介绍一下Yiic,本篇主要介绍CConsoleCommand,至于其他如怎么利用Yiic创建应用等请参考Yii官方提供的文档。
yii提供了强大的命令行工具来快速的创建相关组件 ...