1.尽量静态化:

如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。
当然了,这个测试方法需要在十万级以上次执行,效果才明显。
其实静态方法和非静态方法的效率主要区别在内存:静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生实例,通过实例调用方法,静态速度很快,但是多了会占内存。
任何语言都是对内存和磁盘的操作,至于是否面向对象,只是软件层的问题,底层都是一样的,只是实现方法不同。静态内存是连续的,因为是在程序开始时就生成了,而实例申请的是离散的空间,所以当然没有静态方法快。
静态方法始终调用同一块内存,其缺点就是不能自动进行销毁,而是实例化可以销毁。

 

写了一个将ip地址从字符串转换成数值类型的存储过程,然后应用到整个IP数据库中。这时候发现报mysql的1264错误,即 Out of range value adjusted for column。

说明一下,存储数值型的数据库中,我将数据类型设置的INT。

而INT类型的范围是-2^31~2^31-1,很明显有一些IP地址超过了这个范围。

此时我注意到一个问题,就是INT(n),这里面n是什么意思呢?n只是用来控制显示而已,如果为int(4),插入一个1,显示时也会用空格补齐到4个字节。

 

http://www.nowamagic.net/javascript/js_EffectiveJavascriptCoding.php

 

Continue reading »

 

习惯了在php,shell等脚本语言使用echo等输出函数来调试程序,那么在mysql中的存储过程我们怎么进行调试呢?
看以下实例:
delimiter //
drop procedure test//
create procedure test()
begin
declare test_var varchar(20) default null;
declare test_int int;
set test_var=”test varchar output”;
set test_int=123;
select test_var;
select test_int;
end //
DELIMITER ;
Continue reading »

 

HA集群
实现高可用性,但对单个应用性能没有提高,市场上大部分产品都是属于这类,技术上也较简单。

IP负载均衡集群
利用IP技术实现对通用IP应用的支持。这种技术并不是很新,最早是在硬件上面采用的,Linux出现后才有了很多纯软件的模式,这也是open source带来的好处吧
并行计算集群
包括了一些象PVM,beowulf这样的信息传递机制和API库,也有任务调度产品,当然技术上最难的是并行编译/并行系统等更智能化的产品

应用负载均衡集群
虽然cluster的最高目的是实现真正的与应用程序无关的动态负载均衡,但由于技术上的限制,现在都只能在特殊的应用中实现,需要修改应用程序,所以并没有通用产品,大多是厂商有自己的并行版本

 

desc 表名;
show columns from 表名;
describe 表名;
show create table 表名;

use information_schema
select * from columns where table_name=’表名’;

顺便记下:
show databases;
use 数据库名;
show tables;

Continue reading »

 

参数实例

    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

Continue reading »

 

六月份的时候,我曾经在黑板报上介绍过“如何写一份好的工程师简历”, 今天想跟大家来谈谈如何准备软件工程师的面试?假设,现在您的杀手简历 (killer resume)已经吸引了某大公司的注意并约你面试。那么接下来该如何准备呢?

我在 Google(以前是微软)工作期间面试了不下 300人,其中某些应聘者确实表现非凡,但有些却显得准备不足。当然许多面试准备不足的人最后依然获得了录用通知,因为他们本身确实才华出众。但如果应聘 者能提前准备妥当,那么面试过程将更为保险和轻松。以下所列出的就是我根据多年经验总结得出的建议:

Continue reading »

 

首先说说php和MySQL的md5函数,例如:
md5(“testing”) = “ae2b1fca515949e5d54fb22b8ed95575″;
这个和Python的 hexdigest() 函数结果是一样的
>>> md5(“testing”).hexdigest()
‘ae2b1fca515949e5d54fb22b8ed95575′

在LDAP里怎么表示的呢?

dn: cn=md5user,dc=my,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: md5user
description: MD5USER
userPassword: {MD5}CgIBDAUFBA4NBAsCCA0FBw==]

怎么得到的呢?

我们研究 字符串 testing 的 MD5 字串:ae 2b 1f ca 51 59 49 e5 d5 4f b2 2b 8e d9 55 75
首先隔一个字符提取一个字符,得到一个新的字符串,例如:
ae 2b 1f ca 51 59 49 e5 d5 4f b2 2b 8e d9 55 75
得到:
a 2 1 c 5 5 4 e d 4 b 2 8 d 5 7
那么把每一位看成十六进制,转换成对应的ASCII字符,例如第一位的 a,十六进制是 \x0A,也就是个回车:\n,把转换后的ASCII字符连起来,那么我们可以得到一串字符,不可显示的:’\n\x02\x01\x0c\x05\x05\x04\x0e\r\x04\x0b\x02\x08\r\x05\x07′

© 2012 个人网站 Suffusion theme by Sayontan Sinha