BoxCore

Start


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 站点地图

  • 搜索

Composer Note

发表于 2017-12-26 | 分类于 php | | 阅读次数

Composer 是 PHP 的一个依赖管理工具,类似于node.js的npm,相关收录的php包可以在packagist找到。下面是composer常用到的资源库,mark在笔记最前方便查阅

  • packagist

version

  • composer v1.5.5 : 截止2017-12-26前的最新版;
  • composer v1.2:

一、安装composer

1
2
3
4
5
6
7
8
9
10
11
12
$ mac
brew install composer
$ linux
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
$ windows
$ 下载安装 https://getcomposer.org/Composer-Setup.exe
$ 或者下载phar文件
php -r "readfile('https://getcomposer.org/installer');" | php
echo @php "%~dp0composer.phar" %*>composer.bat

二、composer配置

2.1 镜像的配置

packagist 是 Composer 的主要资源库。 一个 Composer 的库基本上是一个包的源:记录了可以得到包的地方。Packagist 的目标是成为大家使用库资源的中央存储平台。由于国内网络的问题composer源可以替换回国内, 操作方法如下

  • 设置为全局

composer config repo.packagist composer https://packagist.phpcomposer.com

composer 全量中国镜像:http://pkg.phpcomposer.com/

  • 应用内设置

上述命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息(你也可以自己手工添加):

1
2
3
4
5
6
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}

2.2 配置语法

关于 require Key配置

第一件事情(并且往往只需要做这一件事),你需要在 composer.json 文件中指定 require key 的值。你只需要简单的告诉 Composer 你的项目需要依赖哪些包。

1
2
3
4
5
{
"require": {
"monolog/monolog": "1.0.*"
}
}

关于包名称和包版本可以参考文章http://docs.phpcomposer.com/01-basic-usage.html#Package-Names

更多配置内容请参考 composer.json 架构

三、使用composer

3.1 composer基础命令使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ 一些帮助命令
composer help
composer list
composer help require
$ composer 安装
composer init
$ 引入composer
composer require monolog/monolog
$ 创建项目语法:composer create-project 名称 目录 版本 参数
composer create-project slim/slim slim-2.6.2 2.6.2
composer create-project laravel/laravel learnlaravel5 5.2.31 --prefer-dist # 使用composer安装laravel
# 说明--prefer-dist:强制使用压缩包,而不是克隆源代码
composer install --no-dev # 非开发环境,不执行require-dev的包安装
php composer.phar update # 更新包 同 composer update
php composer.phar update monolog/monolog [...] # 只更新指定的依赖包

跟多关于composer的命令可以在这里看:http://docs.phpcomposer.com/03-cli.html

3.2 php使用composer

1) 自动加载

对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件。你可以简单的引入这个文件,你会得到一个自由的自动加载支持。

1
require 'vendor/autoload.php';

这使得你可以很容易的使用第三方代码。例如:如果你的项目依赖 monolog,你就可以像这样开始使用这个类库,并且他们将被自动加载。

1
2
3
4
$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');

另外还有其他方法实现composer的自动加载,方法如下

  1. 可以在 composer.json 的 autoload 字段中增加自己的 autoloader。
    1
    2
    3
    4
    5
    {
    "autoload": {
    "psr-4": {"Acme\\": "src/"}
    }
    }

Composer 将注册一个 PSR-4 autoloader 到 Acme 命名空间。添加 autoload 字段后,你应该再次运行 install 命令来生成 vendor/autoload.php 文件。

  1. 将包含调用的返回值存储在变量中,并添加更多的命名空间。这对于在一个测试套件中自动加载类文件是非常有用的,例如:
    1
    2
    $loader = require 'vendor/autoload.php';
    $loader->add('Acme\\Test\\', __DIR__);

3.3 升级composer

1
2
3
composer selfupdate
Use composer self-update --rollback to return to version 66efc9af8601234b8ab3a5fb91cfa7a2f30e9bbd

3.4 卸载包

  • 语法composer global remove {包名},比如composer global remove phpunit/phpunit

四、composer实战

4.1 使用composer配置laravel

1
2
3
# 安装指定版本的laravel
composer create-project laravel/laravel=5.1.* myProject

参考

  • https://www.kancloud.cn/thinkphp/composer/35668
  • https://my.oschina.net/zhuyajie/blog/506025

下载工具合集

发表于 2017-12-26 | 分类于 tools | | 阅读次数

1、由于业务发展上的调整,“QQ旋风”将于2017年9月6日停止运营
2、迅雷关闭远程离线下载

如上,很多之前提供下载的工具由于种种原因怕是要关闭的,下面是一些备用的推荐工具以供选择:

1、百度网盘
2、free download manager 不支持ed2k
http://www.freedownloadmanager.org/

3、Persepolis Download Manager 是一款即开即用的 aria2 客户端,用来下载网络上的文件,支持 HTTP / HTTPS,FTP,SFTP,BitTorrent 和 Metalink 等协议
https://persepolisdm.github.io/
https://github.com/persepolisdm/persepolis

4、https://webtorrent.io/ best of the world
https://instant.io/

Windows常用工具快捷命令

发表于 2017-12-25 | 分类于 Journal | | 阅读次数

Ctrl + r调用出此命令, 但里面常用的应用有:

  • mstsc: 远程桌面
  • sysdm.cpl : 系统属性

WHOIS查询

发表于 2017-12-22 | 分类于 php | | 阅读次数
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
26
27
28
29
30
31
32
<?php
/**
* whois查询接口
*
* 参考: http://stackoverflow.com/questions/3072247/free-open-source-whois-api
* http://www.cnblogs.com/case/articles/1883737.html
* http://apidoc.chaxun.la/WHOIS%E6%9F%A5%E8%AF%A2API
*/
/**
* 查询域名可用
* url: http://panda.www.net.cn/cgi-bin/check.cgi?area_domain={$domian}
* 返回状态说明:
* 200:
*/
/**
* whois info查询
* url: http://whois.hichina.com/whois/api_whois?host={$doname}&open=0
* post数据:
*/
/**
* http://whomsy.com/api/biaomeng.net
* 说明文档:http://whomsy.com/apidoc
*/

PHP使用SQLite扩展

发表于 2017-12-22 | 分类于 php | | 阅读次数

开启sqlite

一. Windows下开启sqlite:

extension=php_pdo.dll
extension=php_sqlite.dll

二. Unix/Linux下开启sqlite:

是编译的时候添加:

--with-sqlite=shared 

在安装后添加的编译:

tar xvf php-your.version.here.tar.gz
 cd php-your.version.here/ext/sqlite/
 phpize
 ./configure
 make
 make install

##

PHP正则使用

发表于 2017-12-22 | 分类于 php | | 阅读次数

正则中的一些概念

元字符

1
2
3
4
5
6
7
8
9
10
11
12
13
. 匹配除换行符意外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
[x] 匹配x字符,如匹配字符串中的 a、b 和 c 字符
\W \w的反义,即匹配任意非字母,数字,下划线和汉字的字符
\S \s的反义,即匹配任意非空白符的字符
\D \d的反义,即匹配任意非数字的字符
\B \b的反义,即不是单词开头或结束的位置
[^x] 匹配除了 x 意外的任意字符,如 [^abc] 匹配除了 abc 这几个字母之外的任意字符

重复

1
2
3
4
5
6
* 重复零次或更多次
+ 重复 1 次或更多次
? 重复零次或 1 次
{n} 重复 n 次
{n,} 重复 n 次或更多次
{n,m} 重复 n 到 m 次

模式修正符

1
2
3
4
5
6
7
8
9
i 模式中的字符将同时匹配大小写字母
m 字符串视为多行
s 将字符串视为单行,换行符作为普通字符
x 将模式中的空白忽略
e preg_replace() 函数在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。
A 强制仅从目标字符串的开头开始匹配
D 模式中的 $ 元字符仅匹配目标字符串的结尾
U 匹配最近的字符串
u 模式字符串被当成 UTF-8

PHP正则函数

在 PHP 应用中,正则表达式主要用于:

  1. 正则匹配:根据正则表达式匹配相应的内容
  2. 正则替换:根据正则表达式匹配内容并替换
  3. 正则分割:根据正则表达式分割字符串

PHP 正则表达式匹配 preg_match 与 preg_match_all 函数

preg_match()

preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。

语法:

int preg_match( string pattern, string subject [, array matches ] )

参数说明:
pattern 正则表达式
subject 需要匹配检索的对象
matches 可选,存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推

preg_match_all()

preg_match_all() 函数用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。

语法:

int preg_match_all( string pattern, string subject, array matches [, int flags ] )

参数说明:
pattern: 正则表达式
subject: 需要匹配检索的对象
matches: 存储匹配结果的数组
flags: 可选,指定匹配结果放入 matches 中的顺序,可供选择的标记有:

1. PREG_PATTERN_ORDER:默认,对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推
2. PREG_SET_ORDER:对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推
3. PREG_OFFSET_CAPTURE:如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量  

部分实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//1,过滤所有html标签的正则表达式:
</?[^>]+>
//2,过滤所有html标签的属性的正则表达式:
$html = preg_replace("/<([a-zA-Z]+)[^>]*>/","<\\1>",$html);
//3,过滤部分html标签的正则表达式的排除式(比如排除<p>,即不过滤<p>):
</?[^pP/>]+>
//4,过滤部分html标签的正则表达式的枚举式(比如需要过滤<a><p><b>等):
</?[aApPbB][^>]*>
//5,过滤部分html标签的属性的正则表达式的排除式(比如排除alt属性,即不过滤alt属性):
\s(?!alt)[a-zA-Z]+=[^\s]*
//6,过滤部分html标签的属性的正则表达式的枚举式(比如alt属性):
(\s)alt=[^\s]*

正则表达式中排除不需要匹配的字符串或字符
(1)排除不需要匹配的某个字符: 例: [^\w] 排除匹配中的一个数字或字符串

(2) 排除匹配中不需要的字符串:例:(?!元宝商城|游戏特权|图说新游|多玩策划|新游视频|娱乐视频|多玩演播室|多玩画报)

加上|用于或选择。上面列出的字符串都不会参与匹配


常用正则

  1. 删除空行: \r\n\r\n => \r\n\
  2. 删除有空格的空行: ^ +$ =>

PHP设计模式

发表于 2017-12-22 | 分类于 php | | 阅读次数

我们常用的php设计模式有:

  • 单例模式)
  • 单例模式)

Interpreter(解释器模式)

Factory(工厂模式)

Facade(外观模式)

Decorator(装饰模式)

Builder(建造者模式)

Adapter(适配器模式)

Template (模板模式)

Command(命令模式)

Singleton(单例模式)

单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类我们称之为单例类。

单例模式的要点有三个:

  1. 是某个类只能有一个实例;
  2. 是它必须自行创建这个实例;
  3. 是它必须自行向整个系统提供这个实例。

为什么要使用PHP单例模式?

多数 人都是从单例模式的字面上的意思来理解它的用途, 认为这是对系统资源的节省, 可以避免重复实例化, 是一种”计划生育”. 而PHP每次执行完页面都是会从内存中清理掉所有的资源. 因而PHP中的单例实际每次运行都是需要重新实例化的, 这样就失去了单例重复实例化的意义了. 单单从这个方面来说, PHP的单例的确有点让各位失望. 但是单例仅仅只有这个功能和应用吗? 答案是否定的,我们一起来看看。

  1. php的应用主要在于数据库应用, 所以一个应用中会存在大量的数据库操作, 在使用面向对象的方式开发时(废话), 如果使用单例模式, 则可以避免大量的new 操作消耗的资源。

  2. 如果系统中需要有一个类来全局控制某些配置信息, 那么使用单例模式可以很方便的实现. 这个可以参看zend Framework的FrontController部分。

  3. 在一次页面请求中, 便于进行调试, 因为所有的代码(例如数据库操作类db)都集中在一个类中, 我们可以在类中设置钩子, 输出日志,从而避免到处var_dump, echo。

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
/**
* 设计模式之单例模式
* $_instance必须声明为静态的私有变量
* 构造函数和析构函数必须声明为私有,防止外部程序new
* 类从而失去单例模式的意义
* getInstance()方法必须设置为公有的,必须调用此方法
* 以返回实例的一个引用
* ::操作符只能访问静态变量和静态函数
* new对象都会消耗内存
* 使用场景:最常用的地方是数据库连接。
* 使用单例模式生成一个对象后,
* 该对象可以被其它众多对象所使用。
*/
class Example
{
//保存例实例在此属性中
private static $_instance;
//构造函数声明为private,防止直接创建对象
private function __construct()
{
echo 'I am Construceted';
}
//单例方法
public static function singleton()
{
if(!isset(self::$_instance))
{
$c=__CLASS__;
self::$_instance=new $c;
}
return self::$_instance;
}
//阻止用户复制对象实例
public function __clone()
{
trigger_error('Clone is not allow' ,E_USER_ERROR);
}
function test()
{
echo("test");
}
}
// 这个写法会出错,因为构造方法被声明为private
$test = new Example;
// 下面将得到Example类的单例对象
$test = Example::singleton();
$test->test();
// 复制对象将导致一个E_USER_ERROR.
$test_clone = clone $test;
?>

Observer(观察者模式)

Strategy(策略模式)

Visitor (访问者模式)

Memento (备忘录模式)

Prototype (原型模式)

Mediator (中介者模式)

FlyWeight (享元模式)

Chain Of Responsibility (职责链模式)

Bridge (桥接模式)

Proxy (代理模式)

State (状态模式)

Composite (组合模式)

Interator (迭代器模式)


解释

  • 参考文章

  • 图说设计模式

  • php设计模式 (总结)
  • PHP单例模式(转载)
  • PHP设计模式笔记:使用PHP实现单例模式

Python语言

发表于 2017-12-22 | 分类于 python | | 阅读次数

Python笔记

变量类型

数字

字符串

1
2
3
4
5
6
7
8
9
10
11
12
my_var= "string"
str(1.2)
len(my_var)
my_var.lower()
my_var.upper()
my_var.isalpha() # 是否是字母(纯字母)
word = my_var + len(my_var) # 字符串拼接
# 字符串索引
word = "python"
print word[2] # 输出t
print word[1:4] # 输出ytho

时间处理库

首先要引入时间处理库才能使用其相关的函数:

from datetime import datetime

1
2
3
4
5
6
7
8
9
now = datetime.now() # 获取当前时间格式如: 2014-05-30 07:44:47.352977
# 获取指定时间
print now.year # 输出年 2014
print now.month # 输出月 5, 没有前导0
print now.day # 输出日期 30
print now.hour #
print now.minute #
print now.second #
print '%s/%s/%s %s:%s:%s' % ( now.month, now.day, now.year, now.hour, now.minute, now.second) # Grand Finale Datetime

控制结构

布尔操作(Boolean Operators)

比较运算(comparators): ==, !=, >, >=, <, 和 <=

1
2
bool_1 = 100 == (2*50) # True
bool_2 = 99!=(98+1) # False

not|and|or 逻辑判断

优先级: not > and > or

True or not False and False # returns True.

if流程控制

1
2
3
4
5
6
7
8
9
10
11
12
13
# 判断一
if 8 > 9:
print "I don't printed!"
else:
print "I get printed!"
# 判断二
if 8 > 9:
print "I don't get printed!"
elif 8 < 9:
print "I get printed!"
else:
print "I also don't get printed!"

一些测试范例

1
2
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class Handler:
'''
'''
def callback(self, prefix, name, *args):
method = getattr(self,prefix+name,None)
if callable(method): return method(*args)
def start(self, name):
self.callback('start_', name)
def end(self, name):
self.callback('end_', name)
def sub(self, name):
def substitution(match):
result = self.callback('sub_', name, match)
if result is None: match.group(0)
return result
return substitution
class HTMLRenderer(Handler):
'''
'''
def start_document(self):
print '<html><head><title>...</title></head><body>'
def end_document(self):
print '</body></html>'
def start_paragraph(self):
print '<p>'
def end_paragraph(self):
print '</p>'
def start_heading(self):
print '<h2>'
def end_heading(self):
print '</h2>'
def start_list(self):
print '<ul>'
def end_list(self):
print '</ul>'
def start_listitem(self):
print '<li>'
def end_listitem(self):
print '</li>'
def start_title(self):
print '<h1>'
def end_title(self):
print '</h1>'
def sub_emphasis(self, match):
return '<em>%s</em>' % match.group(1)
def sub_url(self, match):
return '<a href="%s">%s</a>' % (match.group(1),match.group(1))
def sub_mail(self, match):
return '<a href="mailto:%s">%s</a>' % (match.group(1),match.group(1))
def feed(self, data):
print data

计划安排
学习时间安排:
Python基础 2014/5/30 ~ 2014/6/30

学习Python主要参考资料:

  1. https://docs.python.org/2/
  2. http://www.codecademy.com/zh/tracks/python
  3. http://www.pythondoc.com/pythontutorial27/index.html
  4. http://sebug.net/paper/python/
  5. http://www.w3cschool.cc/python/python-tutorial.html

一. Python基础教程

1.1 调用python解析器

1). 在windows中运行pytion脚本

设置环境变量:

set path=%path%;C:\python27

2). 在unix中运行pytion脚本

首行添加:
#! /usr/bin/env python
然后执行shell
chmod +x myscript.py
运行 ./myscript.py 就可以编译python脚本.

二、多行语句

Python语句中一般以新行作为为语句的结束符。

但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:

1
2
3
total = item_one + \
item_two + \
item_three

语句中包含[], {} 或 () 括号就不需要使用多行连接符。如下实例:

1
2
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']

Python 引号

Python 接收单引号(‘ ),双引号(“ ),三引号(‘’’ “””) 来表示字符串,引号的开始与结束必须的相同类型的。

其中三引号可以由多行组成,编写多行文本的快捷语法,常用语文档字符串,在文件的特定地点,被当做注释。

1
2
3
4
word = 'word'
sentence = "This is a sentence."
paragraph = """This is a paragraph. It is
made up of multiple lines and sentences."""

Python注释

python中单行注释采用 # 开头。python没有块注释,所以现在推荐的多行注释也是采用的 #

##Python空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

记住:空行也是程序代码的一部分。

等待用户输入

raw_input函数按回车键后就会等待用户输入:

1
raw_input("\n\nPress the enter key to exit.") # python3中使用input函数代替

同一行显示多条语句

Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:

import sys; x = ‘foo’; sys.stdout.write(x + ‘\n’)

变量类型

变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

python允许同时为多个变量赋值:

  1. 为多个变量赋同个值: a = b = c = 1
  2. 多个对象指定多个变量: a, b, c = 1, 2, “john”

Python有五个标准的数据类型:

Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)

数字

字符串

1
2
3
4
5
6
7
8
9
10
11
12
my_var= "string"
str(1.2)
len(my_var)
my_var.lower()
my_var.upper()
my_var.isalpha() # 是否是字母(纯字母)
word = my_var + len(my_var) # 字符串拼接
# 字符串索引
word = "python"
print word[2] # 输出t
print word[1:4] # 输出ytho

函数

函数的定义由3部分组成:

  1. header头, 包含 def函数定义关键字, 函数名 和 参数(parameters): def tax(bill):
  2. 注释,说明函数作用, 在函数header头第二行
  3. 函数主体(body), 必须使用缩进
1
2
3
4
5
6
7
def tax(bill):
"""Adds 8% tax to a restaurant bill."""
bill *= 1.08
print "With tax: %f" % bill
return bill
meal_with_tax = tax(100)

时间处理库

首先要引入时间处理库才能使用其相关的函数:

from datetime import datetime

1
2
3
4
5
6
7
8
9
now = datetime.now() # 获取当前时间格式如: 2014-05-30 07:44:47.352977
# 获取指定时间
print now.year # 输出年 2014
print now.month # 输出月 5, 没有前导0
print now.day # 输出日期 30
print now.hour #
print now.minute #
print now.second #
print '%s/%s/%s %s:%s:%s' % ( now.month, now.day, now.year, now.hour, now.minute, now.second) # Grand Finale Datetime

控制结构

布尔操作(Boolean Operators)

比较运算(comparators): ==, !=, >, >=, <, 和 <=

1
2
bool_1 = 100 == (2*50) # True
bool_2 = 99!=(98+1) # False

not|and|or 逻辑判断

优先级: not > and > or

True or not False and False # returns True.

if流程控制

1
2
3
4
5
6
7
8
9
10
11
12
13
# 判断一
if 8 > 9:
print "I don't printed!"
else:
print "I get printed!"
# 判断二
if 8 > 9:
print "I don't get printed!"
elif 8 < 9:
print "I get printed!"
else:
print "I also don't get printed!"

while语句

PHP使用redis

发表于 2017-12-22 | 分类于 php | | 阅读次数

Redis简介:

是一个key-value存储系统,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集 合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步.

window下安装使用redis

需要文件:

  • PHP官方Redis扩展下载
  • win下Redis程序(32位,在目录/bin中)
  • Win下Redis程序(64位)

解压下redis,有如下文件:

  • redis-server.exe:服务程序
  • redis-check-dump.exe:本地数据库检查
  • redis-check-aof.exe:更新日志检查
  • redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).

windows下 使用redis

安装好redis后可以在cmd中运行{dir}\redis-server.exe运行redis服务.
运行后redis服务端后,可以在cmd通过redis-cli.exe -h 127.0.0.1 -p 6379来运行客户端

简单测试:

1
2
3
4
redis 127.0.0.1:6379> set mykey somevalue
OK
redis 127.0.0.1:6379> get mykey
"somevalue"

如何添加值到list:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
redis 127.0.0.1:6379> lpush mylist val1
(integer) 1
redis 127.0.0.1:6379> lpush mylist val2
(integer) 2
redis 127.0.0.1:6379> lpush mylist val3
(integer) 3
redis 127.0.0.1:6379> lpush mylist val4
(integer) 4
redis 127.0.0.1:6379> lrange mylist 0 -1
1> val1
2> val2
3> val3
4> val4
redis 127.0.0.1:6379> rpop mylist
"val1"

redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的 ab 工具).

1
D:\wnmp\redis>redis-benchmark -n 100000 –c 50

linux下安装使用redis


参考

  • http://my.oschina.net/lujianing/blog/204103

MySQL数据备份&导入

发表于 2017-12-22 | 分类于 mysql | | 阅读次数

一、mysqldump基本用法

mysqldump语法:

mysqldump按条件查找:
mysqldump按条件查找的参数是 -where/-w,例子如:

mysqldump -uroot -p123456 dbname table_name -where “id>90” > ~/db.sql

常见问题

在win下导入sql文件乱码问题

中文cmd中默认的编码格式是gbk,直接导入linux下导出的utf8编码的文件会出现乱码,故需要特别指定下编码的格式.

1
2
3
4
5
6
7
# 在cmd下导出
mysqldump -uroot -p --default-character-set=utf8 mo(dbname) > E://xxxx.sql
# 在cmd下导入
mysql -u root -p --default-character-set=utf8
use dbname
source /root/newsdata.sql

而且需要注意,在linux中要配置默认编码为:default-character-set=utf8

二、mysqldump相关工具

2.1 使用perl备份

1
2
yum install perl-DBD-MySQL # 使用前需要安装插件:
perl /home/wwwroot/default/_msd2/msd_cron/crondump.pl -config=mysqldumper -html_output=0
1…91011…26
Zack Hwang

Zack Hwang

Go

257 日志
42 分类
76 标签
RSS
Links
  • 小白博客
  • 我的书单
© 2018 Zack Hwang
由 Hexo 强力驱动
主题 - NexT.Muse
又拍云