Linux问题: SSH FTP登录不了

昨天准备新加一个FTP用户来管理/etc下面的文件。然后执行chmod 777 -R /etc后出现了一系列的崩溃,服务器登不上,有些文件变成了只读,FTP和PUTTY登录不上。

之后尝试了git传文件被拒绝。

搜索了问题后无果,想到自己是新加FTP出现的问题,会不会是权限的问题?于是搜索了更改/etc权限会出现的问题,果不其然,会影响SSH的登录。没有备份的情况下只能重装系统。

因为我的一系列Nginx重定向规则不能下载,只能重装后再手打了。:(

JavaScript方法splice()和slice()

1 splice()

1.1 说明

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组Link

1.2 语法

arrayObject.splice(index,howmany,item1,.....,itemX)

参数

  • index: 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
  • howmany: 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
  • item1, …, itemX: 可选。向数组添加的新项目。

返回值

  • Array: 包含被删除项目的新数组,如果有的话。

1.3 示例

//添加项目
(function(){
    var arr = [0, 1, 2, 3, 4];
    arr.splice(1, 0, 9, 10); //索引位置/ 删除数量/ 可选, 添加项目, 可多个
    console.log(arr); //[0, 9, 10, 1, 2, 3, 4]
}());
//删除项目
(function(){
    var arr = [0, 1, 2, 3, 4];
    arr.splice(1, 2);
    console.log(arr); //[0, 3, 4]
}());
//删除并添加项目
(function(){
    var arr = [0, 1, 2, 3, 4];
    arr.splice(1, 2, 9, 10, 11);
    console.log(arr); //[0, 9, 10, 11, 3, 4]
}());

2 slice()

2.1 说明

slice() 方法可从已有的数组中返回选定的元素。该方法并不会修改数组,而是返回一个子数组

2.2 语法

arrayObject.slice(start,end)

参数

  • start: 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
  • end: 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

返回值

  • 返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

2.3 示例

//截取中间一段
(function(){
    var arr = [0, 1, 2, 3, 4];
    arrS = arr.slice(1, 3); //从索引1开始到索引3之前, 不包括索引3的项目
    console.log(arrS); //[1, 2]
}());
//截取中间到最后
(function(){
    var arr = [0, 1, 2, 3, 4];
    arrS = arr.slice(1); //end为空, 从索引1开始到结束
    console.log(arrS); //[1, 2, 3, 4]
}());
//获取最后一个项目
(function(){
    var arr = [0, 1, 2, 3, 4];
    arrS = arr.slice(-1); // -1个项目到最后, -1即最后一个, -2倒数第二个
    console.log(arrS); //[4]
}());
//排除最后一个项目
(function(){
    var arr = [0, 1, 2, 3, 4];
    arrS = arr.slice(0, -1); // 第一个到第-1个, 不包含第-1个(最后一个)
    console.log(arrS); //[0, 1, 2, 3]
}());

搭建LNMP环境

### 1.搭建 Nginx 静态服务器

– 安装 Nginx
– 使用 yum 安装 Nginx:

yum install nginx -y

– 修改 /etc/nginx/conf.d/default.conf,去除对 IPv6 地址的监听
– i进入修改 esc退出编辑 :x保存

vim /etc/nginx/conf.d/default.conf

– 代码示例
server {
listen 80 default_server;
# listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}

}

– 修改完成后,启动 Nginx:

nginx

– 此时,可访问实验机器外网 HTTP 服务(http://1.1.1.1)来确认是否已经安装成功。

– 将 Nginx 设置为开机自动启动:

chkconfig nginx on

### 2.安装 MySQL 数据库服务

– 安装 MySQL
– 使用 yum 安装 MySQL:

yum install mysql-server -y

– 安装完成后,启动 MySQL 服务:

service mysqld restart

– 设置 MySQL 账户 root 密码:

/usr/bin/mysqladmin -u root password 'vYyie1cQ'

– 将 MySQL 设置为开机自动启动:

chkconfig mysqld on

### 3.搭建 PHP 环境

– 安装 PHP
– 使用 yum 安装 PHP:

yum install php php-fpm php-mysql -y

– 安装之后,启动 PHP-FPM 进程:

service php-fpm start

– 启动之后,可以使用下面的命令查看 PHP-FPM 进程监听哪个端口

netstat -nlpt | grep php-fpm

– 把 PHP-FPM 也设置成开机自动启动:

chkconfig php-fpm on

### 4.配置 Nginx 并运行 PHP 程序

– 配置 Nginx

– 在 /etc/nginx/conf.d 目录中新建一个名为 php.conf 的文件,并配置 Nginx 端口 ,配置示例如下:
– 代码示例
server {
listen 8000;
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ .php$ {
root /usr/share/php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

cd /etc/nginx/conf.d

vim /etc/nginx/conf.d/php.conf

touch php.conf

vim /etc/nginx/conf.d/php.conf

– 修改配置完成后,重启 nginx 服务

service nginx restart

– 这时候,我们就可以在/usr/share/php 目录下新建一个 info.php 文件来检查 php 是否安装成功了,文件内容参考如下:

cd /usr/share/php

touch info.php

vim info.php

<?php phpinfo(); ?>

– 此时,访问 http://1.1.1.1:8000/info.php 可浏览到我们刚刚创建的 info.php 页面了

– 重启

service php-fpm restart
service nginx restart

– 默认网站目录

/usr/share/nginx/html

– 配置目录
vim /etc/nginx/conf.d/default.conf
vim /etc/nginx/conf.d/php.conf

[腾讯 – 开发者实验室 – 搭建 LNMP 环境](https://www.qcloud.com/developer/labs/lab/10029)

JavaScript函数setInterval()和setTimeout()正确的写法

一、常规写法

1.1 不传参数

function a (x, y) {
    var i = 0;
    var b = function(){
        console.log((x * y) + (i++));
    }
    return b;
}
var c = a(1, 2);
setInterval('c()', 1000);

1.2 传参数

function c (x, y) {
    console.log(x * y);
}
setInterval('c(1, 2)', 1000);

二、改进写法

2.1 不传参数

setInterval(c, 1000);

2.2 传参数

setInterval(function(){
    c(1, 2);
}, 1000);

2.3 改进原因

在幕后,JavaScript仍需要评估和执行你给程序传递的字符串。Link

JavaSctipt语句for循环的思考

一、语法

for (语句 1; 语句 2; 语句 3) {
    被执行的代码块;
}
  • 语句 1: 在循环(代码块)开始前执行, 可选.
  • 语句 2: 定义运行循环(代码块)的条件, 可选, 如果省略了语句 2, 那么必须在循环内提供 break, 否则循环就无法停下来.
  • 语句 3: 在循环(代码块)已被执行之后执行, 可选.

二、常规写法

var arr = [1, 2, 3, 4, 5];
(function(){
    for(var i = 0; i < arr.length; i++){
        console.log(arr[i]); //1 2 3 4 5
    }
})();

三、改进

3.1 将数组长度提前提取出来,避免每次循环提取一次

(function(){
    for(var i = 0, max = arr.length; i < max; i++){
        console.log(arr[i]); //1 2 3 4 5
    }
})();

3.2 i += 1i = i+1i++

(function(){
    for(var i = 0, max = arr.length; i < max; i += 1){
        console.log(arr[i]); //1 2 3 4 5
    }
})();

3.3 和0作比较更快

(function(){
    for(var i = arr.length; i--;){
        console.log(arr[i]); //5 4 3 2 1
    }
})();
(function(){
    var i = arr.length;
    while(i--){
        console.log(arr[i]); //5 4 3 2 1
    }
})();