那些年的记忆

习惯改变行为,行为决定命运。

在CentOS 6.6上安装ElasticSearch

1. 首先,检查是否安装Java:

[root@localhost ~]# java -version
openjdk version "1.8.0_45"
OpenJDK Runtime Environment (build 1.8.0_45-b13)
OpenJDK Server VM (build 25.45-b02, mixed mode)

注:这里需要安装1.8.0以上的版本,否则可能会在启动ElasticSearch时报错。

没有安装的话,使用yum直接安装:

yum install java-1.8.0-openjdk-devel


[转]PHP底层的运行机制与原理

PHP说简单,但是要精通也不是一件简单的事。我们除了会使用之外,还得知道它底层的工作原理。

PHP是一种适用于web开发的动态语言。具体点说,就是一个用C语言实现包含大量组件的软件框架。更狭义点看,可以把它认为是一个强大的UI框架。

了解PHP底层实现的目的是什么?动态语言要像用好首先得了解它,内存管理、框架模型值得我们借鉴,通过扩展开发实现更多更强大的功能,优化我们程序的性能。

1. PHP的设计理念及特点

  • 多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务造

    成影响,当然,随着时代发展,PHP也早已支持多线程模型。

  • 弱类型语言:和C/C++、Java、C#等语言不同,PHP是一门弱类型语言。一个变量的类型并不是一开始就

    确定不变,运行中才会确定并可能发生隐式或显式的类型转换,这种机制的灵活性在web开发中非常方便、

    高效,具体会在后面PHP变量中详述。

  • 引擎(Zend)+组件(ext)的模式降低内部耦合。

  • 中间层(sapi)隔绝web server和PHP。

  • 语法简单灵活,没有太多规范。缺点导致风格混杂,但再差的程序员也不会写出太离谱危害全局的程序。

Linux 限制SFTP用户只能访问某个目录

这里需要注意OpenSSH的版本,需要4.8以上

> ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013


1. 新建用户并设置密码

> useradd suser
> passwd suser   // 输入密码


2. 设置sshd配置文件

> cd /etc/ssh/
> cp sshd_config sshd_config.back      // 备份
> vi sshd_config

// 注释该行 不注释的话会报错
#Subsystem      sftp    /usr/libexec/openssh/sftp-server    

Subsystem sftp internal-sftp
Match User suser
        ChrootDirectory /var/opt/sftp
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp

Zend Studio 常用设置

1. 添加项目导入网站文件

选择"File"菜单-"New"-"PHP Project from Existing Directory"

2. 添加主题、字体和注释

// 修改主题

1) 选择"Help"菜单-Install New Software 在Work with填写"http://eclipse-color-theme.github.com/update/" 点击Add,然后Next..

2) 选择"Window"菜单-"Preferences"-"General"-"Appearance"-"Color Theme" 随便选吧

// 修改字体

3) 选择"Window"菜单-"Preferences"-"General"-"Appearance"-"Colors and Fonts"-"Basic"-"Text Font"-"Edit"


Crontab详解

1. Crontab是什么?

Crontab是一个用于设置周期性被执行的任务的工具。

使用场景:

每分钟需要执行一个程序检查每户运行状态

每天凌晨需要对过去一天的业务数据进行统计

每个星期需要把日志文件备份

每个月需要把数据库进行备份

等等。。。

数据库优化之基本语句优化10个原则

原则1. 尽量避免在列上进行计算,这样会导致索引失效。

如:

SELECT * FROM t WHERE YEAR(d) >= 2011;

优化为:

SELECT * FROM t WHERE d >= '2011-01-01';


Nginx的Rewrite规则

  • Nginx Rewrite规则的相关指令有if、rewrite、set、return、break等。

    break指令:作用是完成当前的规则集,不再处理rewrite指令。

    if指令:用于检查一个条件是否符合,如果条件符合,则执行大括号内的语句。if指令不支持嵌套,

使用Logrotate分割Nginx日志

Logrotate简介

logrotate 是Linux系统日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。

使用变量做表名创建存储过程

使用变量做表名创建存储过程

设置分隔符

DELIMITER $$

创建存储过程

CREATE DEFINER=`root`@`%` PROCEDURE `create_table`(IN `$cell_ident` int)
BEGIN
SET @cell_sqlcmd=CONCAT('CREATE TABLE IF NOT EXISTS CellBase.tab_',$cell_ident,' LIKE CellBase.meta;');
SET @serial_sqlcmd=CONCAT('CREATE TABLE IF NOT EXISTS SerialBase.tab_',$cell_ident,' LIKE SerialBase.meta;');
SET @album_sqlcmd=CONCAT('CREATE TABLE IF NOT EXISTS AlbumBase.tab_',$cell_ident,' LIKE AlbumBase.meta;');
PREPARE create_cell FROM @cell_sqlcmd;
PREPARE create_serial FROM @serial_sqlcmd;
PREPARE create_album FROM @album_sqlcmd;
EXECUTE create_cell;
EXECUTE create_serial;
EXECUTE create_album;
DEALLOCATE PREPARE create_cell;
DEALLOCATE PREPARE create_serial;
DEALLOCATE PREPARE create_album;
END$$


MySQL 用户及权限

1. 与用户相关的授权表:

user

    每一行主是一个用户账号(用户名、主机名和加密后的密码)以及用户的全部权限

db

    每一行包含了某个用户在数据库级权限

host

    每一行包含了用户从指定主机登录过来时它在一个数据库里的所有权限

tables_priv

    每一行包含了指定用户和表的表级别上的权限,也包括了视图的权限在内

columns_priv

    每一行包含了指定用户和列的列级别上的权限

procs_priv(5.0以上版本引入)

    每一行包含了指定用户和存储程序(存储过程和函数)的权限