Flyertutor


  • 首页

  • 归档

  • 分类

  • 标签

Shell 基础

发表于 2017-04-19

Shell 在日常开发和维护中十分的常用,掌握它会给我们带来很多的便利,下面来简单的了解下。

变量定义

变量定义十分的简单,直接使用变量名,然后赋值,但要格外注意的是,变量两边不能有空格。

1
2
3
4
5
#!/bin/bash

a=1
b=2.1
c="a"

数学运算

我这里只是用加法做演示,在 shell 中,如果单纯的使用 + 号,那么会直接输出,不会做运算,这是一种方法就是借助 expr,另外一种是使用双括号的方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

a=1
b=2

echo $a+$b # 直接显示 1+2

# 方法一
c=$(expr $a + $b)
echo $c

# 方法二
c=$(($a + $b))

echo $c

阅读全文 »

Linux 权限

发表于 2017-03-10 | 分类于 Linux

出于安全的考虑,多用户操作系统需要具备保障个人隐私和系统安全的机制。在Linux中,无论是文档还是硬件设备都以文件的形式存在,相应地,安全机制也主要表现为对文件访问权限的控制。

介绍

在 Linux 中打开一个目录,使用命令 ls -l 查看某个文件,显示如下:

1
2
ls -l
-rwxr--r-- 1 root root 395 Nov 17 06:48 demo.php

在这里我们主要看前面的 rwxr--r--,这里两两分组,分为三组,分别对应了 文件拥有者,文件属组,其他。

  • 文件所有者 (owner):文件或文件夹的拥有者,开始创建文件或文件夹时为创建者。
  • 属组 (group):文件或文件夹所属的组, 开始创建文件或文件夹时为创建者的所属的组。
  • 其他 (other):除了文件或文件夹的所有者和文件或文件夹所属的组的其他成员,剩下的 linux 的用户。

在这里我们还可以看到三个字母 r, w, x,下面用表格作详细的说明。

权限 简写 数字表示 对普通文件的作用 对文件夹的作用
读取 r 4 查看文件内容 列出文件夹中的文件(ls)
写入 w 2 修改文件内容 在文件夹中删除、添加或重命名文件(夹)
执行 x 1 文件可以作为程序执行 cd 到文件夹
阅读全文 »

PHP 数据类型

发表于 2017-03-01 | 分类于 PHP

四种标量类型:

  • boolean (布尔型)
  • integer (整型)
  • float (浮点型, 也称作 double)
  • string (字符串)

两种复合类型:

  • array (数组)
  • object (对象)

两种特殊类型:

  • resource (资源)
  • NULL (NULL)

下面详细讲解定义和类型获取,以及如何判断是否是其类型。

整形 integer

1
2
3
$num = 100; // 定义
var_dump(gettype($num)); // 获取类型
var_dump(is_int($num)); // 判断是否整形
阅读全文 »

MySQL & JOIN

发表于 2017-02-13

今天来熟悉下 MySQL 中的连接查询,最常用的有三种,分别是内连接,左连接和右连接。
首先准备测试的数据表和测试数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE `users` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '',
`cls_id` int NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;

CREATE TABLE `cls` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB;

insert into users(name,cls_id) values('wang', 1), ('zhang', 2), ('li', 3),('zhao', 4);
insert into cls(id,name) values(1, 'one'),(2, 'two'),(3, 'three'),(5,'five');

阅读全文 »

Mongodb 学习笔记一

发表于 2017-02-07

过完年之后,给自己定了学习计划,打算学习下 mongodb 数据库,那么现在开始学起来~

基本操作

1
2
3
4
> use table;    // 选择数据库
> show dbs; // 查看数据库
> show collections; // 查看 collections
> db.demo.drop(); // 删除 collection demo

CRUD 操作

insert

1
2
3
> db.demo.insert({name: "a1", age: 10});
> db.demo.insert({name: "a2", age: 20});
> db.demo.insert({name: "a3", age: 10});
阅读全文 »

PHP trait 学习笔记

发表于 2017-01-22 | 分类于 PHP

介绍

自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait。

众所周知,PHP 中是单继承的,trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。

trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。

实例

首先我们举个例子来介绍 trait,和类定义相似,但使用关键字 trait 定义。在类中使用 use 组合。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
trait T
{
public function m1()
{
return 'm1';
}

public function m2()
{
return 'm2';
}
}

class Demo
{
use T;
public function test()
{
return 'test';
}
}

$demo = new Demo;
echo $demo->m1(), PHP_EOL;
echo $demo->test(), PHP_EOL;

阅读全文 »

PHP 闭包

发表于 2017-01-12 | 分类于 PHP

PHP 闭包和匿名函数是同一个概念,是在 PHP5.3 引入的特性,现代 PHP 框架中广泛使用。
闭包是指在创建时封装状态的函数,也就是说即使闭包所在的环境不存在了,但是闭包中封装的状态值依然存在。
匿名函数是没有名称的函数,但可以赋值给变量,使用变量调用执行。
在 PHP 中闭包和匿名函数是同一个概念。

创建闭包

1
2
3
4
$fun = function($name) {
echo $name;
};
$fun('dev');

使用外部变量

闭包会调用外部的变量,这时使用关键字 use 传递外部变量。

1
2
3
4
5
6
$name = 'top';
$fun = function($val) use ($name) {
echo $val, PHP_EOL;
echo $name, PHP_EOL;
};
$fun('val');

阅读全文 »

phpredis List

发表于 2017-01-10 | 分类于 PHP

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边) LPUSH 命令插入一个新的元素导头部, 而 RPUSH 插入一个新元素导尾部。

lInsert

在列表中元素的前面或后面插入元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$redis->del('l');

$redis->lPush('l', 'A');
$redis->lPush('l', 'B');

// 在 A 后面添加 a
$redis->lInsert('l', Redis::AFTER, 'A', 'a');
print_r($redis->lRange('l', 0, -1));

// 在 A 的前面添加 b
$redis->lInsert('l', Redis::BEFORE, 'A', 'b');
print_r($redis->lRange('l', 0, -1));

// 如果元素不存在,插入失败
$redis->lInsert('l', Redis::BEFORE, 'C', 'b');
print_r($redis->lRange('l', 0, -1));

lLen & lSize

获取列表的元素长度。

1
2
3
4
$redis->del('l');
$redis->lPush('l', 1);
$redis->lPush('l', 2);
echo $redis->lLen('l'); // 2

阅读全文 »

phpredis 字符串操作

发表于 2017-01-04 | 分类于 PHP

字符串是 Redis 最基本的数据类型,能够存储任何类型的字符串,下面讲解具体的用法。

set

设置一个key,对应的值为字符串类型,成功返回 TRUE,如果 key 已经存在,覆盖。

1
2
3
4
5
6
7
8
9
10
11
12
13
if ($redis->set('k1', 'v1')) {
echo 'success';
} else {
echo 'error';
}

$redis->set('k2', 'v2', 10); // 设置有过期时间的 key,过期时间单位秒

# 第三个参数也可以是数组
// 如果 key 不存在,设置他,ex 单位为秒
$redis->set('key', 'value', Array('nx', 'ex'=>10));
// 如果 key 存在,设置他,px 单位为毫秒
$redis->set('key', 'value', Array('xx', 'px'=>1000));

get

获取当前 key 的值,如果 key 不存在,返回 FALSE。

1
2
3
if ($str = $redis->get('k1')) {
echo $str;
}

阅读全文 »

phpredis 介绍

发表于 2017-01-03 | 分类于 PHP

安装 phpredis 扩展

下载地址
直接源码编译安装。

1
2
3
4
phpize
./configure
make
make install

编译完毕之后,配置 php.ini ,重启开发环境。

1
extension=redis.so

如果是 windows 开发环境的话,请 点击这里。

阅读全文 »
1…345…8
Flyertutor

Flyertutor

一个PHP爱好者

78 日志
9 分类
16 标签
GitHub
© 2018 Flyertutor
由 Hexo 强力驱动
主题 - NexT.Gemini