17

利用内存磁盘加速mysql 将mysql数据移入内存中运行

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: 利用内存磁盘加速mysql 将mysql数据移入内存中运行

linux下shm是一种完美的内存磁盘虚拟技术, 你可以指定一个shm盘的大小, 但实际的占用不会固定为设置的大小,而是随着里面文件的大小,占用相应的宝贵的mem空间. 这些mem在也会在必要时被系统交换到硬盘上面去. 下面是使用shm虚拟存储将mysql的库运行在内存中的一个实例.

debian在默认下,/dev/shm建立虚拟存储,在/etc/default/tmpfs文件中可以修改shm的大小.

或者用命令 mount tmpfs /dev/shm -t tmpfs -o size=128m来建立shm虚拟存储.

好了,我们首先建立/dev/shm/php4 用于php的session 和tmp目录, 修改它的用户和组为www-data,以及访问权限700 修改php.ini让它们指向/dev/shm/php4. 还要修改apache2的启动脚本,让apache2启动之前,检查/dev/shm/php4是否存在,并建立.

mysql 的存储目录在/var/lib/mysql,一个库一个文件目录,如果只想让某些库运行在内存中,可以把相应目录用符号联接的方式,放到/dev/shm,

还有数据的备份和恢复,因为shm在关机后会丢失.所以应该在mysql的启动脚本,建立shm下的目录,并从备份复制文件到shm,在关闭脚本中,应该复制shm的数据到备份目录.

以anheng这个表为例,首先关闭mysql,以便直接操作/var/lib/mysql的文件,
关闭mysql
/etc/init.d/mysql stop
开备份目录/var/lib/mysql/anheng0
mkdir /var/lib/mysql/anheng0
chown mysql:mysql /var/lib/mysql/anheng0
chmod 770 /var/lib/mysql/anheng0
复制数据
cp /var/lib/mysql/anheng/* /var/lib/mysql/anheng0
chown mysql:mysql /var/lib/mysql/anheng0/*
chmod 770 /var/lib/mysql/anheng0/*
移动所有的数据到shm
mv /var/mysql/anheng /dev/shm/anheng
建立符号联接
ln -s /dev/shm/anheng /var/lib/mysql/anheng
启动mysql
/etc/init.d/mysql start
下一步修改/etc/init.d/mysql在启动部分最前面增加shm开目录和复制,要保证在mysql启动之前进行复制
if [ ! -e /dev/shm/anheng ]
then
echo mkdir /dev/shm/anheng
mkdir /dev/shm/anheng
chown mysql:mysql /dev/shm/anheng
chmod 770 /dev/shm/anheng
cp /var/lib/mysql/anheng0/* /dev/shm/anheng
chown mysql:mysql /dev/shm/anheng/*
chmod 660 /dev/shm/anheng/*

fi
在关闭部分最后面增加备份shm的脚本,要保证关闭之后再复制
cp /dev/shm/anheng/* /var/lib/mysql/anheng0
chown mysql:mysql /var/lib/mysql/anheng/*
chmod 660 /var/lib/mysql/anheng/*

还要增加定时任务,定时用mysqldump从anheng库向anheng0库覆盖数据.防止突然关机造成的数据丢失.
如果有一台远程的mysql服务器,对anheng库进行热备份,就更完美了

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: 利用内存磁盘加速mysql 将mysql数据移入内存中运行

16

CentOS linux FTP服务(vsftpd)配置 安装

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: CentOS linux FTP服务(vsftpd)配置 安装

根据很多人对CentOS FTP服务的不解,我觉得应该对CentOS FTP服务做出一定的解释。

1.安装

一般在CentOS上都自动安装了vsftd,若没有安装则可以使用以下步骤进行安装
yum -y install vsftpd
touch /var/log/vsftpd.log # 创建vsftp的日志文件
在CentOS中,这样就可以完成了一个简单的匿名FTP的搭建。你可以通过访问ftp://127.0.0.1 你的IP来进行,不过这个FTP没有任何权限。

2.基于匿名的FTP架设

参考其他关于Vsftpd的CentOS FTP服务配置文章。

3.基于虚拟用户的FTP架设

所谓虚拟用户就是没有使用真实的帐户,只是通过某种手段达到映射帐户和设置权限的目的。

1)我们在/etc/vsftpd/vsftpd.conf中做如下CentOS FTP服务配置:
anonymous_enable=NO 设定不允许匿名访问
chroot_list_enable=YES 使用户不能离开主目录
xferlog_file=/var/log/vsftpd.log 设定vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来
ascii_upload_enable=YES
ascii_download_enable=YES 设定支持ASCII模式的上传和下载功能。

local_enable=YES 设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问。
pam_service_name=vsftpd PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
以下这些是关于Vsftpd虚拟用户支持的重要CentOS FTP服务配置项目。默认vsftpd.conf中不包含这些设定项目,需要自己手动添加CentOS FTP服务配置。
guest_enable=YES 设定启用虚拟用户功能。
guest_username=ftp 指定虚拟用户的宿主用户。-CentOS中已经有内置的ftp用户了
user_config_dir=/etc/vsftpd/vuser_conf 设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)

2)创建chroot list,将用户ftp加入其中:
touch /etc/vsftpd/chroot_list
echo ftp >> /etc/vsftpd/chroot_list

3)进行认证:
首先,安装Berkeley DB工具,很多人找不到db_load的问题就是没有安装这个包。
yum install db4 db4-utils
然后,创建用户密码文本/etc/vsftpd/vuser_passwd.txt ,注意奇行是用户名,偶行是密码
ftpuser1
ftppass1
ftpuser2
ftppass2
接着,.生成虚拟用户认证的db文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
随后,编辑认证文件/etc/pam.d/vsftpd,全部注释掉原来语句
再增加以下两句
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
最后,创建虚拟用户个性CentOS FTP服务文件
mkdir /etc/vsftpd/vuser_conf/
vi /etc/vsftpd/vuser_conf/ftpuser1
内容如下:
local_root=/opt/var/ftp1 虚拟用户的根目录(根据实际修改)
write_enable=YES 可写
anon_umask=022 掩码
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

4.启动vsftp服务器
mkdir /opt/var/ftp/ftpuser1
chmod 777 /opt/var/ftp/ftpuser1
service vsftpd start

常见错误:

1.553 Could not create file
一般都是SELinux的问题,设置SELinux的一个值,重启服务器即可。
setsebool -P ftpd_disable_trans 1
service vsftpd restart

2.500 OOPS: bad bool value in config file for: write_enable
注意你的CentOS FTP服务文件中保证每一行最后没有任何空格,一般出错就是在多余的空格上。

更改端口号:listen_port=端口号 (需要自己添加)

欢迎信息:ftpd_banner=欢迎信息

====================================================================

权限问题:
当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。

当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,
anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。

一些RadHat版本是默认打开SeLinux的。这个东西有加强安全性的同时很讨厌,比如让配置好的vsftpd无法正常登录。

#setsebool -P ftpd_disable_trans 1

重启FTP服务~

IP限制的方法

vsftpd中的配置需要 tcp_wrappers=YES

/etc/hosts.allow 中加入允许的IP

vsftpd : IP1 IP2 : allow

/etc/hosts.deny 中屏蔽所有IP

vsftpd : ALL : deny

重启服务 service xinetd restart (此服务应该开机启动!)

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: CentOS linux FTP服务(vsftpd)配置 安装

15

php 网页跳转的几个办法

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: php 网页跳转的几个办法

Header(“Location:http://kjj.midpiano.com”);
说明:必须在网页没有任何输出的时候执行,要特别要注意空格。

使用meta进行跳转
echo ““;
说明:没有方法一的限制,但是如果前面有输出,则输出的内容会闪烁一下然后进入跳转到的页面。

利用Javascript语言
echo “"; echo " location='http://kjj.midpiano.com';"; echo "“;

应该说后面几种是html的和php没多少关系

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: php 网页跳转的几个办法

09

javascript js 检测浏览器 是否支持 html5

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: javascript js 检测浏览器 是否支持 html5

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: javascript js 检测浏览器 是否支持 html5

07

at a time 与 at one time 的区别

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: at a time 与 at one time 的区别

at a time 依次,逐一,每次.
如:
1.Don’t try to do everything at once,take it a bit at a time.不要什么事情都一块干,要一次做一点.
2.Take the pills two at a time.每次服2粒.

at one time一度,从前.
如:
At one time I used to go skiing every winter.我有一度每到冬天就去滑雪.

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: at a time 与 at one time 的区别

06

vs2005 Windows 上 静态 编译 Libevent

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: vs2005 Windows 上 静态 编译 Libevent

原文链接:http://blog.s135.com/libevent_windows/

本文介绍了如何在 Windows 操作系统中,利用微软 Visual Studio 2005 编译生成 Libevent 2.0.10 静态链接库,并利用 Libevent 静态链接库,实现一个简单的 HTTP Web服务器程序:httpd.exe。

假设 Visual Studio 2005 的安装路径为“D:Program FilesMicrosoft Visual Studio 8”,Libevent 2.0.10 解压后的路径为“D:libevent-2.0.10-stable”。


一、编译生成 Libevent 2.0.10 静态链接库。

1、修改“D:libevent-2.0.10-stableevent_iocp.c”、“D:libevent-2.0.10-stable evthread_win32.c”、“D:libevent-2.0.10-stablelistener.c”三个文件,在文件开头分别加上一 行:

#define _WIN32_WINNT 0×0500

2、鼠标点击Windows左下角的【开始】-【所有程序】,找到【Microsoft Visual Studio 2005】,执行下图中的脚本:

点击在新窗口中浏览此图片

3、按照下图中的方法编译Libevent 2.0.10:

点击在新窗口中浏览此图片

4、生成的“libevent.lib”、“libevent_core.lib”、“libevent_extras.lib”三个文件就是我们需要的 Libevent 静态链接库。

点击在新窗口中浏览此图片


二、利用 Libevent 静态链接库,实现一个简单的 HTTP Web服务器程序

1、打开 Visual Studio 2005,新建一个项目

点击在新窗口中浏览此图片

2、选择在“d:test”目录内创建一个“Win32 控制台应用程序”

点击在新窗口中浏览此图片

3、按照下图进行选择

点击在新窗口中浏览此图片

4、创建完成项目后,会自动生成“d:testhttpd”目录,在该目录内创建一个“httpd.c”文件,内容如下:

#include

#define WIN32_LEAN_AND_MEAN
#include
#include

#include
#include

void root_handler(struct evhttp_request *req, void *arg)
{
struct evbuffer *buf = evbuffer_new();
if(!buf){
puts("failed to create response buffer");
return;
}

evbuffer_add_printf(buf, "Hello: %sn", evhttp_request_uri(req));
evhttp_send_reply(req, HTTP_OK, "OK", buf);
}

void generic_handler(struct evhttp_request *req, void *arg)
{
struct evbuffer *buf = evbuffer_new();
if(!buf){
puts("failed to create response buffer");
return;
}

evbuffer_add_printf(buf, "Requested: %sn", evhttp_request_uri(req));
evhttp_send_reply(req, HTTP_OK, "OK", buf);
}

int main(int argc, wchar_t* argv[])
{
struct evhttp *httpd;

WSADATA wsaData;
DWORD Ret;
if ((Ret = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0) {
printf("WSAStartup failed with error %dn", Ret);
return -1;
}

event_init();

httpd = evhttp_start("0.0.0.0", 8505);
if(!httpd){
return 1;
}

evhttp_set_cb(httpd, "/", root_handler, NULL);
evhttp_set_gencb(httpd, generic_handler, NULL);

printf("httpd server start OK!n");

event_dispatch();

evhttp_free(httpd);

WSACleanup();
return 0;
}

5、回到 Visual Studio 2005,在左侧的【源文件】中选择【添加】-【现有项】,将上一步创建的“httpd.c”文件添加进来。

点击在新窗口中浏览此图片

6、在【解决方案“httpd”】上点击鼠标右键,选择【属性】

点击在新窗口中浏览此图片

7、将【配置】改为“Release”

点击在新窗口中浏览此图片

8、将“D:libevent-2.0.10-stableinclude”整个目录复制到“D:testhttpdinclude”;将 “D:libevent-2.0.10-stableWIN32-Code”目录内的“tree.h”文件和“event2”子目录,复制到“D: testhttpdinclude”内;将“D:libevent-2.0.10-stable”目录内的所有“*.h”头文件复制到“D: testhttpdinclude”内。可以在Windows左下角的【开始】-【运行】中输入“cmd”回车,在命令行窗口中执行以下命令,完 成复制过程。

mkdir D:testhttpdinclude
xcopy /E /H /R D:libevent-2.0.10-stableinclude* D:testhttpdinclude
xcopy /E /H /R D:libevent-2.0.10-stableWIN32-Code* D:testhttpdinclude
xcopy /E /H /R D:libevent-2.0.10-stable*.h D:testhttpdinclude

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

9、回到 Visual Studio 2005,在左侧菜单中【解决方案“httpd”】下面一行【httpd】上点击鼠标邮件,选择【属性】,对每项内容进行修改。下图中红框内的数据即为修改后的数据。

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

注:下图中,附加依赖项填写:

ws2_32.lib wsock32.lib libevent.lib libevent_core.lib libevent_extras.lib

忽略特定库填写:

libc.lib;msvcrt.lib;libcd.lib;libcmtd.lib;msvcrtd.lib

点击在新窗口中浏览此图片

10、完成设置后,在【解决方案“httpd”】上点击鼠标右键,选择【生成解决方案】。如果是重新编译,可以选择【重新生成解决方案】。生成成功后,“d:testhttpdRelease”目录内的“httpd.exe”即为生成的可执行文件。

点击在新窗口中浏览此图片

11、双击“httpd.exe”运行后,打开浏览器,访问“http://127.0.0.1:8505/”,则可以看到以下信息:一个简单的 HTTP Web Server 输出的内容。

点击在新窗口中浏览此图片

12、如果你觉得像DOS程序一样的“httpd.exe”可执行文件图标不好看、没有显示版本信息,那么,你可以按照下图步骤,添加ICO图标文件。

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

13、添加版本信息

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

14、大功告成,下面显示的是带有自定义图标、版本信息的“httpd.exe”可执行程序。

点击在新窗口中浏览此图片

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: vs2005 Windows 上 静态 编译 Libevent

06

看that 区别 同位语从句和定语从句

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: 看that 区别 同位语从句和定语从句

 

定义上区别:

同位语从句解释前面名词的具体内容;

定语从句仅起到后置定语的作用常译为“什么什么的”

形式上区别:

同位语中that 只起到连接符的作用,不充当语法成分;

定语从句中的that是关系代词,充当主语,宾语或表语。

The proposal that john should be dismissed is unacceptable。

The proposal that john put forward is unacceptable。

When reports came into London Zoo that a wild puma had been spotted forty-five miles south of London 由此可见书本上的也是同位语

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: 看that 区别 同位语从句和定语从句

04

be found in 具体翻译 是被发现呢还是生存或产于某地

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: be found in 具体翻译 是被发现呢还是生存或产于某地

在新概念三第一课,puma at large中有一句
Pumas are large,cat-like animals which are found in America .
这个be found in 貌似不是被发现吧,因为发现是之前就被发现了的。
正确的应该是“动植物生存在某地或产于某地;某物存在于某地”

某物存在于某地的最好例子就是:

Vitamin C is found in citrus fruit。

维他命C 一般都存在于柑橘类的水果中

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: be found in 具体翻译 是被发现呢还是生存或产于某地

04

英语中描述体型的:large,fat,build,figure 区别

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: 英语中描述体型的:large,fat,build,figure 区别

新概念3 第一课 a puma at large 中有一句Pumas are large ,cat-like animals which are found in America.
第一段第一句就用large来表达狮子的是大型猫科动物。

有时候表达一个人胖,第一个想到的单词便是fat,当然说fat听着怪怪的。
表达人家胖最好用婉转的语言(softer language)
比如:The lady is quite large/big。(有点想说人家胖但是不好意思,只能说人家比较大,呵呵)

figure 直接就是体型的意思指女性
How do you keep your figure? 你是如何保持身材的?

女性用figure,男的就用build,之前还这不知道build还有这个意思
A man of large build。一个胖男人。
A man of powerful build。 就是斯瓦辛格那种了,哈哈
A man of average build。 一个中等身材的男人。

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: 英语中描述体型的:large,fat,build,figure 区别

02

php 自然周 第一天 最后一天 星期一 星期天

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: php 自然周 第一天 最后一天 星期一 星期天

function getFirstDateOfWeek($dateStr){
  $w = strftime("%w", strtotime($dateStr));
  $sdate = strftime("%Y-%m-%d",  (strtotime($dateStr) - $w * 86400));
  return $sdate;
 }

 function getLastDateOfWeek($dateStr){
  $w = strftime("%w",strtotime($dateStr));
  $edate = strftime("%Y-%m-%d",  (strtotime($dateStr) + (6 - $w) * 86400));
  return $edate;
 }

  getFirstDateOfWeek('2009-12-01');
  getLastDateOfWeek('2009-12-31');

原创文章,转载请注明: 转载自kongjiajie

本文链接地址: php 自然周 第一天 最后一天 星期一 星期天