随笔 - 175  文章 - 202  trackbacks - 0
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

第一个Blog,记录哈哈的生活

常用链接

留言簿(16)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

Java links

搜索

  •  

最新评论

阅读排行榜

评论排行榜

按照如下步骤安装到 DBD::mysql 时,出错,提示找不到 mysql_config

perl -MCPAN -eshell
CPAN> install Time::HiRes
CPAN> install Term::ReadKey
CPAN> install DBI
CPAN> install DBD::mysql

需要到 mysql 网站下载

MySQL-devel-community-5.1.57-1.rhel5.x86_64.rpm

安装,才可以。
我找了半天。
posted @ 2011-06-22 13:39 哈哈的日子 阅读(168) | 评论 (0)编辑 收藏
转自:http://dolphin-ygj.iteye.com/blog/366314
vi替换命令用法详解
: ranges /pat1/pat2/g
其中
: 这是Vi的命令执行界面。
range 是命令执行范围的指定: 百分号(%)表示所有行
点(.)表示当前行
美元($)表示最末行

例如:
10,20表示第10到20行,
.,$表示当前行到最后一行,.
+2,$-5表示当前行后两行直到全文的倒数第五行

s 表示其后是一个替换命令。
pat1 这是要查找的一个正则表达式
pat2 这是希望把匹配串变成的模式的正则表达式

g 可选标志,带这个标志表示替换将针对行中每个匹配的串进行,否则则只替换行中第一个匹配串。


:/string #向下查找
:?stirng   # 向上查找


1

vi编辑命令责任编辑:黑色联想   更新日期:2006-9-7重复执行命令
数字N+命令     重复执行命令N次,如删除15行,就在命令状态下输入15dd
.              重复执行上一条命令
vi命令使用的一些选项及含义
-c sub-command 在对指定的文件编辑前,先执行指定的命令 sub-command .
-r filename 恢复指定的文件filename .
-R 将指定的文件以只读的方式放入编辑器中,这样不会保存对文件的任何修 改。
-y number 将编辑窗口的大小设为number行。
光标移动
命令模式下,在同一行上移动的子命令:
h   将光标左移一格
l   将光标右移一格
j   将光标下移一格
k   将光标上移一格
w   将光标移到下一个小字的前面
W  将光标移到下一个大字的前面
b   将光标移到前一个小字的前面
B   将光标移到前一个大字的前面
e   将光标移到下一个小字的后面
E   将光标移到前一个大字的后面
fc  把光标移到同一行的下一个c字符处
Fc  把光标移到同一行的前一个c字符处
tc  把光标移到同一行的下一个字符c的前一格
Tc  把光标移到同一行的前一个字符c的后一格
number|把光标移到递number列上
命令模式下在行间移动的子命令:     
+或Enter   把光标移至下一行第一个非空白字符
-   把光标移至上一行第一个非空白字符 
0   把光标移到当前行的第一个字符处
$   把光标移到当前行的最后一个字符处
H   把光标移到屏幕最顶端一行
L   把光标移到屏幕最底端一行
M  把光标移到屏幕中间
:number 光标移动到第number行
:$  光标移动到最后以行
屏幕翻滚类命令
Ctrl+u   向文件首翻半屏
Ctrl+d   向文件尾翻半屏
Ctrl+f   向文件尾翻一屏
Ctrl+b  向文件首翻一屏
nz     将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部
插入文本
I   在光标前
I   在当前行首
a   光标后
A   在当前行尾
o   在当前行之下新开一行
O  在当前行之上新开一行
r   替换当前字符
R   替换当前字符及其后的字符,直至按ESC键
s   从当前光标位置处开始,以输入的文本替代指定数目的字符
S   删除指定数目的行,并以所输入文本代替之
ncw或nCW  修改n个单词
nCC修改指定数目的行
删除
x       删除光标所指的一个字母
X      删除光标左边的一个字母
dd     删除光标所在的一行文字,同时本行文字会放到缓存中
d0     删至行首
d$     删至行尾
D      删除本行光标右边的所有文字,包括光标位置的字母
d$     删除本行光标右边的所有文字,包括光标位置的字母
dw     删除光标右边的一个单词
ndw    删除n个单词
d1G       删除光标所在行以上的所有行
dG     删除光标所在行及光标以下所有行
复制
yy          复制本行文字到缓存中
number yy   复制number行到缓存中
粘贴
p      把缓存中的行粘贴到光标所在的下一行,
P      把缓存中的行粘贴到光标所在的上一行
替换
:s/pattern1/pattern2/g    把光标当前行的pattern1替换为pattern2
:%s/pattern1/pattern2/g   把所有行的pattern1替换为pattern2
:g/parttern1/s//parttern2  把所有行的pattern1替换为pattern2
:num1,num2 s/pattern1/pattern2/g     把num1到num2的partten1替换为partten2
被替换的文字用^表示行首,$表示行尾,如:%s/^/111/g就表示在每一行的行首插入111
文件
:r filename   把文件filename的内容粘贴在光标以下行
:w         保存当前编辑的文件名
:w filename  当filename不存在时,把修改后的文件存为文件filename ,当文件filename
存在时,报错。
!w filename  如果文件filename存在时,把修改后的文件保存为文件filename
:q         退出vi ,若文件被修改,系统不会让用户使用q命令退出
q!         不保存退出
x          保存退出
wq         保存退出
在多个文件之间切换
:n开始编辑vi激活的文件列表中的下一个文件
:n filenames 指定将被编辑的新的文件列表
在当前文件和另外一个文件间切换:
:e filename  使用filename激活vi(在vi中装入另一个文件filename)
e!         重新装入当前文件,若当前文件有改动,则丢弃以前的改动
:e+filename  使用filename激活vi ,并从文件尾部开始编辑
:e+number filename  使用filename激活vi ,并在第number行开始编辑
:e#        开始编辑另外一个文件
查找
/pattern     向后寻找指定的pattern ,若遇到文件尾,则从头再开始。
?pattern   向前寻找指定的pattern ,若遇到文件头,则从尾再开始。
n          在上次指定的方向上,再次执行上次定义的查找。
N         在上次指定的方向的相反方向上,再次执行上次定义的查找。
/pattern/+number    将光标停在包含pattern的行后面第number行上。
/pattern/-number     将光标停在包含pattern的行前面第number行上。
%                移到匹配的"()"或"{}"上。
选项设置
all         列出所有选项设置情况
term        设置终端类型
ignorance   在搜索中忽略大小写
list         显示制表位(Ctrl+I)和行尾标志($)
number    显示行号
report       显示由面向行的命令修改过的数目
terse       显示简短的警告信息
warn        在转到别的文件时若没保存当前文件则显示NO write信息
nomagic     允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan 禁止vi在搜索到达文件两端时,又从另一端开始
mesg       允许vi显示其他用户用write写到自己终端上的信息
、在vi中使用的查找替换方法
利用 :s 命令可以实现字符串的替换。具体的用法包括:
:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串str1
:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串str1
:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串str1
:g/str1/s//str2/g 功能同上从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

2、在shell中使用find结合grep进行文件的替换
# find ./ -exec grep str1 ‘{}’ \; -exec sed -i.bak s/str1/str2/g ‘{}’ \;
上面命令可以在当前目录下(包括子目录)查找包含str1的文件,自动替换成str2,并且生成源文件的bak文件。

 
posted @ 2011-06-17 15:39 哈哈的日子 阅读(173) | 评论 (0)编辑 收藏
准备写一个说不清楚的问题,我表示鸭梨很大。

背景:
    1. 业务分区,多用户,用户间无交叉
    2. 水平切分,一张表存到两个库里去
Bug:
    用户1引用了用户2的数据(这不算什么,后面一句才重要),平时看不出来
问题:
    第一场
    用户1来了,建了一大堆东西。
    用户2来了,关联了用户1的东西,因为都分库到 s1, s2,所以,相安无事。
    第二场
    用户1来了,又建了一大堆东西。
    用户2来了,又想关联用户1的数据。但是,却分库到 s2, s1,注意顺序不一样,然后,没关联到,出错了。

我另外发现了一个问题,我真无聊。
posted @ 2011-06-07 17:18 哈哈的日子 阅读(128) | 评论 (0)编辑 收藏
目前项目有个需要,就是在所有查询的参数中,增加一个属性。
自然想到使用 interceptor 将每个 parameter wraper 一下,加上这个属性
我就使用 cglib 生成了一个 wrapper class,然后再 proxy 到原来的 parameter 上。

后来,出了错误,找了好长时间,发现
ibatis sql 中写着 isPrimary,可其实在 java 里是这样的

private boolean isPrimary;
public boolean isPrimary() {
    return isPrimary;
}

其实属性名字是 primary 啊,为什么在 wrapper 之前就不出错呢。

找了一下,ibatis 是通过他自己的 probe 来获得属性值的,这个 probe 不仅会通过方法取值,还会通过 field name 取值,没访问权限的,还会加上权限。

就是 ClassInfo 的下面方法


  private void addFields(Class clazz) {

    Field[] fields = clazz.getDeclaredFields();

    for (int i = 0; i < fields.length; i++) {

      Field field = fields[i];

      if (canAccessPrivateMethods()) {

        try {

          field.setAccessible(true);

        } catch (Exception e) {

          // Ignored. This is only a final precaution, nothing we can do.

        }

      }

      if (field.isAccessible()) {

        if (!setMethods.containsKey(field.getName())) {

          addSetField(field);

        }

        if (!getMethods.containsKey(field.getName())) {

          addGetField(field);

        }

      }

    }

    if (clazz.getSuperclass() != null) {

      addFields(clazz.getSuperclass());

    }

  }


解决办法,将 isPrimary 改成 primary

posted @ 2011-06-01 15:58 哈哈的日子 阅读(173) | 评论 (0)编辑 收藏
也一直使用 quartz,但没仔细看过,看了一个非常详细的文章,转发一下。另外,官方文档链接也附在下面:
http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html

转自:http://wangrui.iteye.com/blog/150947

 一个Cron表达式是由7个子表达式组成的字符串,这些子表达式用空格分隔,其中最后一个子表达式是可选的,其他都是必须的。每个子表达式都描述了一个单独的日程细节。每一个子表达式的含义如下: 

子表达式名称(取值范围)(允许的特殊字符) 
1.Seconds秒 (0-59) (, - * /) 
2.Minutes分钟 (0-59) (, - * /) 
3.Hours小时 (0-23) (, - * /) 
4.Day-of-Month月中的天 (1-31) (, - * ? / L W) 
5.Month月 (1-12或JAN-DEC) (, - * /) 
6.Day-of-Week周中的天 (1-7或SUN-SAT) (, - * ? / L #) 
7.Year(optional)年(可选) (空或1970-2099) (, - * /) 

    一个cron表达式的例子字符串为"0 0 12 ? * WED",这表示“每周三的中午12:00”。 
    
    单个子表达式可以包含范围或者列表。例如:前面例子中的周中的天这个域(这里是"WED")可以被替换为"MON-FRI", "MON, WED, FRI"或者甚至"MON-WED,SAT"。 
    
    所有的域中的值都有特定的合法范围,这些值的合法范围相当明显,例如:秒和分域的合法值为0到59,小时的合法范围是0到23,Day-of-Month中值得合法凡范围是0到31,但是需要注意不同的月份中的天数不同。月份的合法值是0到11。或者用字符串JAN,FEB MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV 及DEC来表示。Days-of-Week可以用1到7来表示(1=星期日)或者用字符串SUN, MON, TUE, WED, THU, FRI 和SAT来表示.  
    
    通配符('*')可以被用来表示域中“每个”可能的值。因此在"Month"域中的*表示每个月,而在Day-Of-Week域中的*则表示“周中的每一天”。 
    
    '?'字符可以用在day-of-month及day-of-week域中,它用来表示“没有指定值”。这对于需要指定一个或者两个域的值而不需要对其他域进行设置来说相当有用。 

    '/'字符用来表示值的增量,例如, 如果分钟域中放入'0/15',它表示“每隔15分钟,从0开始”,如果在份中域中使用'3/20',则表示“小时中每隔20分钟,从第3分钟开始”或者另外相同的形式就是'3,23,43'。 

    'L'字符可以在day-of-month及day-of-week中使用,这个字符是"last"的简写,但是在两个域中的意义不同。例如,在day-of-month域中的"L"表示这个月的最后一天,即,一月的31日,非闰年的二月的28日。如果它用在day-of-week中,则表示"7"或者"SAT"。但是如果在day-of-week域中,这个字符跟在别的值后面,则表示"当月的最后的周XXX"。例如:"6L" 或者 "FRIL"都表示本月的最后一个周五。当使用'L'选项时,最重要的是不要指定列表或者值范围,否则会导致混乱。 

    'W' 字符用来指定距离给定日最接近的周几(在day-of-week域中指定)。例如:如果你为day-of-month域指定为"15W",则表示“距离月中15号最近的周几”。 

    '#'表示表示月中的第几个周几。例如:day-of-week域中的"6#3" 或者 "FRI#3"表示“月中第三个周五”。 
posted @ 2011-05-30 10:23 哈哈的日子 阅读(236) | 评论 (0)编辑 收藏
1. 在之前的2.x版本下,我一般编译程序到机子的做法是修改xproject去掉iPhone Developer的方法,(参考http://www.cocoachina.com/bbs/read.php?tid-1822-fpage-4.html )
如果以前这样修改过xproject文件的,要先恢复到原始状态,把iPhone Developer那句话加回去(随意找个2.x时期的官方sample就有)
2. 制作自己的证书,制作方法参考http://www.weiphone.com/thread-222380-1-1.html ,说明的是,最后的存放位置据说应该是登录(login)而不是系统,反正我现在用的就是登录.
3. 打开终端,执行如下代码,这个是XCode的补丁,因为在3.13的xcode修补了3.12的免签名漏洞,打这个补丁才行
#!/bin/bash
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
printf "\x8f\x2a\x00\x00" >> working
dd if=iPhoneOS\ Build\ System\ Support of=working bs=1 skip=127504 seek=127504
/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
/bin/mv working iPhoneOS\ Build\ System\ Support
chmod a+x iPhoneOS\ Build\ System\ Support
 
或者你懒的去执行,也可以下载这个文件(要解压下)    patch.sh.zip (1 K) 下载次数:103 放在用户根目录,执行
sudo sh ./patch.sh

4. 在终端执行如下命令

mkdir /Developer/iphoneentitlements30
cd /Developer/iphoneentitlements30
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt 
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py

5. XCode中打开你的project,在菜单project->New Build Phase > New Run Script Build Phase,那个script空白框,拷贝如下代码进去

export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
/Developer/iphoneentitlements30/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
codesign -f -s "iPhone Developer" --resource-rules "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/ResourceRules.plist" \
--entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent"  "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
fi
 

6. 修改"/Developer/Platforms/iPhoneOS.platform/Info.plist"文件,默认是用Property List Editor打开,然后添加:
PROVISIONING_PROFILE_ALLOWED = NO
PROVISIONING_PROFILE_REQUIRED = NO

7. 在你的project的info.list里面增加一行,也就是你之前步骤2建的自定义的证书名字啦.
SignerIdentity=iPhone Developer 

8. 把你的iphone连接到电脑,提示连接成功,后 xcode菜单,window->Organizer里面,把iphone设为调试设备.
对了,我忘记了我做的一个步骤,不知道是不是必须的,这里补上
9. iphone要安装MobileInstallation Patch ,安装步骤:打开cydia,进入manage->sources->edit->Add,在网址输入框里面输入www.iphone.org.hk/adp/ 
完成后,进入sources 可以看到www.iphone.org.hk 这个网站,然后进去,可以找到MobileInstallation Patch,点击安装即可.
安装完成重启手机.
posted @ 2011-05-17 00:29 哈哈的日子 阅读(234) | 评论 (0)编辑 收藏

转自:http://blog.csdn.net/cafecheng/archive/2009/07/17/4357248.aspx



H2, HSQLDB, DERBY, POSTGRESQL, MYSQL

openSourceDatabaseComparison

posted @ 2011-05-06 16:58 哈哈的日子 阅读(1084) | 评论 (0)编辑 收藏
     摘要: 转自:http://www.001pp.com/chengxuyouhua/mysql%20xingnengyouhua2183.html 网上有不少mysql 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与负责,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果,因此简单地根据某个给出方案来配置mysql是行不通的,...  阅读全文
posted @ 2011-05-04 15:50 哈哈的日子 阅读(172) | 评论 (0)编辑 收藏

转自 http://imysql.cn/node/609

作/译者:吴炳锡,来源:http://imysql.cn & http://imysql.cn/blog/3208 转载请注明作/译者和出处,并且不能用于商业用途,违者必究。

 

介绍:
InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。
Innodb 的创始人:Heikki Tuuri
Heikki Tuuri在Innodb的Bug社区里也是很活跃的,如果遇到Bug也可以直接提到社区,得到作者的解答。

为什么要学习Innodb的调优:
目前来说:InnoDB是为Mysql处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。在数据量大的网站或是应用中Innodb是倍受青睐的。
另一方面,在数据库的复制操作中Innodb也是能保证master和slave数据一致有一定的作用。

参数调优内容:
  1. 内存利用方面
2. 日值控制方面
3. 文件IO分配,空间占用方面
4. 其它相关参数

1.内存利用方面:
首先介绍一个Innodb最重要的参数:
innodb_buffer_pool_size
这个参数和MyISAM的key_buffer_size有相似之处,但也是有差别的。这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲。为Innodb加速优化首要参数。
该参数分配内存的原则:这个参数默认分配只有8M,可以说是非常小的一个值。如果是一个专用DB服务器,那么他可以占到内存的70%-80%。这个参数不能动态更改,所以分配需多考虑。分配过大,会使Swap占用过多,致使Mysql的查询特慢。如果你的数据比较小,那么可分配是你的数据大小+10%左右做为这个参数的值。例如:数据大小为50M,那么给这个值分配innodb_buffer_pool_size=64M
设置方法:
innodb_buffer_pool_size=4G
这个参数分配值的使用情况可以根据show innodb status\G;中的
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 4668764894;
 
去确认使用情况。


第二个:
innodb_additional_mem_pool:
作用:用来存放Innodb的内部目录
这个值不用分配太大,系统可以自动调。不用设置太高。通常比较大数据设置16M够用了,如果表比较多,可以适当的增大。如果这个值自动增加,会在error log有中显示的。
分配原则:
show innodb status\G;去查看运行中的DB是什么状态(参考BUFFER POOL AND MEMORY段中),然后可以调整到适当的值。
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 4668764894; in additional pool allocated 16777216
参考:in additional pool allocated 16777216
根据你的参数情况,可以适当的调整。
设置方法:
innodb_additional_mem_pool=16M


2.关于日值方面:
innodb_log_file_size
作用:指定日值的大小
分配原则:几个日值成员大小加起来差不多和你的innodb_buffer_pool_size相等。上限为每个日值上限大小为4G.一般控制在几个LOG文件相加大小在2G以内为佳。具体情况还需要看你的事务大小,数据大小为依据。
说明:这个值分配的大小和数据库的写入速度,事务大小,异常重启后的恢复有很大的关系。
设置方法:
innodb_log_file_size=256M


innodb_log_files_in_group
作用:指定你有几个日值组。
分配原则: 一般我们可以用2-3个日值组。默认为两个。
设置方法:
innodb_log_files_in_group=3


innodb_log_buffer_size:
作用:事务在内存中的缓冲。
分配原则:控制在2-8M.这个值不用太多的。他里面的内存一般一秒钟写到磁盘一次。具体写入方式和你的事务提交方式有关。在Oracle等数据库了解这个,一般最大指定为3M比较合适。
参考:Innodb_os_log_written(show global status 可以拿到)
如果这个值增长过快,可以适当的增加innodb_log_buffer_size
另外如果你需要处理大理的TEXT,或是BLOB字段,可以考虑增加这个参数的值。
设置方法:
innodb_log_buffer_size=3M

innodb_flush_logs_at_trx_commit
作用:控制事务的提交方式
分配原则:这个参数只有3个值,0,1,2请确认一下自已能接受的级别。默认为1,主库请不要更改了。
性能更高的可以设置为0或是2,但会丢失一秒钟的事务。
说明:
这个参数的设置对Innodb的性能有很大的影响,所以在这里给多说明一下。
当这个值为1时:innodb 的事务LOG在每次提交后写入日值文件,并对日值做刷新到磁盘。这个可以做到不丢任何一个事务。
当这个值为2时:在每个提交,日志缓冲被写到文件,但不对日志文件做到磁盘操作的刷新,在对日志文件的刷新在值为2的情况也每秒发生一次。但需要注意的是,由于进程调用方面的问题,并不能保证每秒100%的发生。从而在性能上是最快的。但操作系统崩溃或掉电才会删除最后一秒的事务。
当这个值为0时:日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新,但是在一个事务提交不做任何操作。mysqld进程的崩溃会删除崩溃前最后一秒的事务。

从以上分析,当这个值不为1时,可以取得较好的性能,但遇到异常会有损失,所以需要根据自已的情况去衡量。


设置方法:
innodb_flush_logs_at_trx_commit=1

3. 文件IO分配,空间占用方面
innodb_file_per_table
作用:使每个Innodb的表,有自已独立的表空间。如删除文件后可以回收那部分空间。
分配原则:只有使用不使用。但DB还需要有一个公共的表空间。
设置方法:
innodb_file_per_table=1

innodb_file_io_threads
作用:文件读写IO数,这个参数只在Windows上起作用。在LINUX上只会等于4
设置方法:
innodb_file_io_threads=4

innodb_open_files
作用:限制Innodb能打开的表的数据。
分配原则:如果库里的表特别多的情况,请增加这个。这个值默认是300。
设置方法:
innodb_open_files=800 
请适当的增加table_cache


4. 其它相关参数
这里说明一个比较重要的参数:
innodb_flush_method
作用:Innodb和系统打交道的一个IO模型
分配原则:Windows不用设置。
Unix可以设置:fsync() or O_SYNC/O_DSYNC
如果系统可以禁止系统的Cache那就把他禁了。
Linux可以选择:O_DIRECT 
直接写入磁盘,禁止系统Cache了
设置方法:
innodb_flush_method=O_DIRECT

innodb_max_dirty_pages_pct 
作用:控制Innodb的脏页在缓冲中在那个百分比之下,值在范围1-100,默认为90.
这个参数的另一个用处:当Innodb的内存分配过大,致使Swap占用严重时,可以适当的减小调整这个值,使达到Swap空间释放出来。建义:这个值最大在90%,最小在15%。太大,缓存中每次更新需要致换数据页太多,太小,放的数据页太小,更新操作太慢。
设置方法:
innodb_max_dirty_pages_pct=90
动态更改需要有Super权限:
set global innodb_max_dirty_pages_pct=50;

总结:
这里只算是列出了Innodb部分的重要参数,不能认为是对Mysql的整体调优。Mysql的参数一般分为:全局参数,具体引擎的参数。全局参数方面请参考http://imysql.cn/2007_12_08_optimize_mysql_under_linux yejr的那个Mysql调优的PPT。

posted @ 2011-05-04 15:37 哈哈的日子 阅读(201) | 评论 (0)编辑 收藏
手动创建目录 .ssh 的时候,权限可能不对,默认应该是 775,这样不行,需要改成 755 或者 700 之类的,才可以。
authorized_keys 文件权限也要改成 600

顺便把步骤写一下:

1. ssh-keygen 生成 key pair,默认是 rsa 的
2. 把 public key 放到服务器上,然后执行 cat xxx >> ~/.ssh/authorized_keys,xxx 是 public key 文件名

posted @ 2011-05-04 10:04 哈哈的日子 阅读(187) | 评论 (0)编辑 收藏
仅列出标题
共17页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last