5月 20

vsftp 自用配置

直接用yum安装vsftp非常简单,然后将配置拷贝到配置文件中重启即可,自用配置在这做个记录。
配置文件/etc/vsftpd/vsftpd.conf
配置如下
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
#chroot_local_user=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
xferlog_file=/var/log/vsftpd.log
idle_session_timeout=600
data_connection_timeout=120
ls_recurse_enable=NO
pam_service_name=vsftpd
userlist_enable=YES
ftpd_banner=Welcome to blah FTP service.
max_clients=10
max_per_ip=3
use_localtime=YES
listen=YES
tcp_wrappers=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

然后手动建立/etc/vsftpd/vsftpd.chroot_list
将系统中可以用来登录ftp的账户放在里面。
注意:ftp账户也可以有操作系统登录权,所以登录用户需要规划。

5月 16

tomcat7 虚拟主机

  之前一直在用tomcat5,现在用tomcat7,幸好配置没有变化,把几处重要的配置写出来,备忘。
  需求1)tomcat做连接优化。
2)tomcat下的默认使用ROOT,message.simonzhang.net的域名,使用tomcat,webapps下的message

修改一、

    

修改二、

      
        
      
      
      
        
      

需要注意compressableMimeTy配置,tomcat前端有nginx或者apace等服务如果已经启动了压缩的处理,这里就不用配置了。。

5月 04

SD 中class级别的意义

image

  之前买的手机说是带8G卡,当时看确实8G容量就没在意。今天又买了张16G的class4的存储开,把之前的换下来。时才发现原来带的是class2的。不知道两种类型能查多少。到网上查看了一下,得到一下结果再次做个记录。

SD2.0的规范中对于SD卡的性能上分为如下若干个等级,不同等级能分别满足不同的应用要求:
Class 0:包括低于Class 2和未标注Speed Class的情况;
Class 2:能满足观看普通MPEG4 MPEG2 的电影、SDTV、数码摄像机拍摄;
Class 4:可以流畅播放高清电视(HDTV),数码相机连拍等需求;
Class 6:满足单反相机连拍和专业设备的使用要求;
class 10:满足更高速率要求的存储需要。

Class等级是按8KB文件写入的每秒速度换算的:
[Class2(>2MB/s)
Class4(>4MB/s)
Class6(>6MB/s)
Class10(>10MB/s)

参考:http://ask.zol.com.cn/q/18461.html

4月 12

C 语言 读取mysql

测试环境:CentOS 5.4 64位 mysql5.5.20
mysql使用bin安装,安装在/program/mysql目录

代码

#include 
#include 
#include 
#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));}

int main(int argc,char **argv )
{
    MYSQL *sql_p;
    MYSQL_RES *result_p;
    MYSQL_ROW row_p;
    int res;
    int len;
    sql_p=mysql_init(NULL);
    if(sql_p==NULL){
        printf("Init error!\n");
        exit(1);
    }

    sql_p=mysql_real_connect(sql_p,"192.168.1.41","root","test",
                    "mysql",0,NULL,0);
    if(!sql_p){
        fprintf(stderr,"%d:%s\n",mysql_errno(sql_p),mysql_error(sql_p));
        exit(1);
    }

    res=mysql_query(sql_p,"SELECT * FROM admin");
    if(res){
        printf("Select error!\n");
        exit(1);
    }
    
    result_p=mysql_use_result(sql_p);
    if(!result_p){
        printf("mysql_use error!\n");
        exit(1);
    }

    row_p=mysql_fetch_row(result_p);
    GET_ARRAY_LEN(row_p,len);
    printf("%d\n",len);
    int i;
    for (i=0 ;i<20 ;i++)
      {if (row_p[i][1])
         printf("%s\n",row_p[i]);
       }
    mysql_close(sql_p);
    return 0;
}

编译语句
gcc -Wall cmysql.c -o cmysql -L /program/mysql/lib -I /program/mysql/include/ -lmysqlclient -lz

问题:
运行报错
./cmysql: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

解决办法:
32位操作系统运行下面一句
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/
64位操作系统运行下面一句
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
再次编译通过。
在读取数据时还出现一个问题,如果没有数据,程序显示错误,这个我没有处理。

4月 10

java 内存泄露问题查找

  之前已经查找过java运行越来越慢的问题,用了visualvm工具,文档详见:http://www.simonzhang.net/?p=950。只是查到了内存泄露,知道由某类问题导致,但是不能具体到类上,不能定位到是什么资源导致内存泄露,所以需要进一步查看。
  通过google学习,找到了JRockit Mission Control 4.1。此工具已经免费,直接到oracle下载相关包。下载位置:
http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html
  下载Oracle JRockit 6 – R28.2.2其中包含JRockit Mission Control 4.1和JRockit Real Time 4.1。直接下载了linux的64位的bin文件,上传到服务器上安装并替换当前的jdk。命令记录:
# chmod 755 jrockit-jdk1.6.0_29-R28.2.2-4.1.0-linux-x64.bin
# ./jrockit-jdk1.6.0_29-R28.2.2-4.1.0-linux-x64.bin
系统会弹出安装界面,我开启了X11可以远程使用图形化界面。真是有oracle的风格呀。

# mv jrockit-jdk1.6.0_29-R28.2.2 /usr/local/jrockit-jdk1.6.0_29-R28.2.2
  编辑/etc/profile添加
JAVA_HOME=/usr/local/jrockit-jdk1.6.0_29-R28.2.2
CLASSPATH=$JAVA_HOME/jre/lib/ext/jcert.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/jpda.jar:$JAVA_HOME/lib/tools.jar
PATH=.:$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export JAVA_HOME PATH CLASSPATH
  保存过后加载资源,然后启动JRockit Mission Control
# source /etc/profile
# cd /usr/local/jrockit-jdk1.6.0_29-R28.2.2/bin/
# jrmc
  启动后可以看到图形化界面,“启动Memleak”

  找到消耗内存大的部分,列出所有实例看看什么数据占用过多,然后在处理。如果下图