Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

联系方式[微信]:徐多蔚15309695130 感恩有您的陪伴,我们用心服务每一位客户 – 徐多蔚 xuduowei
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
官方网址:https://www.jetbrains.com/
中文网址:https://www.jetbrains.com/zh/phpstorm/specials/phpstorm/phpstorm.html?utm_source=baidu&utm_medium=cpc&utm_campaign=cn-bai-br-phpstorm-ex-pc&utm_content=phpstorm-prue&utm_term=phpstorm
http://www.oyksoft.com/soft/40722.html?pc=1
| 字符 | 描述 |
|---|---|
| \ | 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。串行“\\”匹配“\”而“\(”则匹配“(”。 |
| ^ | 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。 |
| $ | 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。 |
| * | 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。 |
| + | 匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。 |
| ? | 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。 |
| {n} | n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。 |
| {n,} | n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。 |
| {n,m} | m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。 |
| ? | 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。 |
| . | 匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“(.|\n)”的模式。 |
| (pattern) | 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\(”或“\)”。 |
| (?:pattern) | 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。 |
| (?=pattern) | 正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 |
| (?!pattern) | 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始 |
| (?<=pattern) | 反向肯定预查,与正向肯定预查类拟,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。 |
| (?<!pattern) | 反向否定预查,与正向否定预查类拟,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。 |
| x|y | 匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。 |
| [xyz] | 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。 |
| [^xyz] | 负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”。 |
| [a-z] | 字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。 |
| [^a-z] | 负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。 |
| \b | 匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。 |
| \B | 匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。 |
| \cx | 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。 |
| \d | 匹配一个数字字符。等价于[0-9]。 |
| \D | 匹配一个非数字字符。等价于[^0-9]。 |
| \f | 匹配一个换页符。等价于\x0c和\cL。 |
| \n | 匹配一个换行符。等价于\x0a和\cJ。 |
| \r | 匹配一个回车符。等价于\x0d和\cM。 |
| \s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。 |
| \S | 匹配任何非空白字符。等价于[^ \f\n\r\t\v]。 |
| \t | 匹配一个制表符。等价于\x09和\cI。 |
| \v | 匹配一个垂直制表符。等价于\x0b和\cK。 |
| \w | 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。 |
| \W | 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。 |
| \xn | 匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04&1”。正则表达式中可以使用ASCII编码。. |
| \num | 匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。 |
| \n | 标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。 |
| \nm | 标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。 |
| \nml | 如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。 |
| \un | 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(©)。 |
| 用户名 | /^[a-z0-9_-]{3,16}$/ |
|---|---|
| 密码 | /^[a-z0-9_-]{6,18}$/ |
| 十六进制值 | /^#?([a-f0-9]{6}|[a-f0-9]{3})$/ |
| 电子邮箱 | /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/ /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ |
| URL | /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ |
| IP 地址 | /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/ /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ |
| HTML 标签 | /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ |
| 删除代码\\注释 | (?<!http:|\S)//.*$ |
| Unicode编码中的汉字范围 | /^[^u4E00-u9FA5]+$/ |
function cutdot($Str, $Length, $dot) {//$Str为截取字符串,$Length为需要截取的长度
global $s;
$i = 0;
$l = 0;
$ll = strlen($Str);
$s = $Str;
$f = true;
while ($i <= $ll) {
if (ord($Str{$i}) < 0x80) {
$l++; $i++;
} else if (ord($Str{$i}) < 0xe0) {
$l++; $i += 2;
} else if (ord($Str{$i}) < 0xf0) {
$l += 2; $i += 3;
} else if (ord($Str{$i}) < 0xf8) {
$l += 1; $i += 4;
} else if (ord($Str{$i}) < 0xfc) {
$l += 1; $i += 5;
} else if (ord($Str{$i}) < 0xfe) {
$l += 1; $i += 6;
}
if (($l >= $Length) && $f) {
$s = substr($Str, 0, $i);
$f = false;
}
if (($l > $Length) && ($i < $ll)) {
$s = $s;
return $s.$dot; //如果当前串长度小与指定长度,则退出。
}
}
return $s;
}
//删除html样式,得到纯文本
function deleteHtmlTags($string, $br = false,$Length=””,$dot=””)
{
while(strstr($string, ‘>’))
{
$currentBeg = strpos($string, ‘<‘);
$currentEnd = strpos($string, ‘>’);
$tmpStringBeg = @substr($string, 0, $currentBeg);
$tmpStringEnd = @substr($string, $currentEnd + 1, strlen($string));
$string = $tmpStringBeg.$tmpStringEnd;
}
if(!empty($Length)){
return cutdot($string, $Length, $dot);
}else{
return $string;
}
}
学员问题:
|
比如我要删除表里最后一条数据,试了好几个都语法错误,我用的是phpmyadmin。 |
徐多蔚老师给出的解决方案格式:
delete a from infos a,(select max(id) id from infos) b where a.id = b.id; max最后一个id
delete a from infos a,(select min(id) id from infos) b where a.id = b.id; min获得第一个id
来源:https://baike.baidu.com/item/GIT/12647237?fr=aladdin
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。[1] Git的读音为/gɪt/。
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。[2] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 很多 Freedesktop 的项目迁移到了 Git 上。
Kohana 是一款纯 PHP5 的框架,基于 MVC 模式开发, 它的特点就是高安全性,轻量级代码,容易使用。 2009年9月发布了3.0版本,支持HMVC模式。
简介编辑
kohana是一个基于MVC模型构建的PHP5框架,它的目标旨在安全,重量轻,且易于使用。
特点编辑
1。严谨的PHP5面向对象编程。优势:可见性保护,自动加载,重载,接口,抽象类,单一模式等。
2。社区,没有公司。Kohana是由社区构想,讨论,及编码。Kohana的开发者们来自世界各地,有着各自的天赋。这使得开发速度得以提高,并在短时间内提供bug修复以及反馈用户提出的建议。
3。GET,POST,COOKIE,SESSION数组都能按照预期的工作。Kohana不限制你访问全局数据,但是提供了XSS过滤和检查所有的全局变量。
4。级联式资源,模块和继承。可以从你的系统,程序或者模块路径的任何地方加载控制器,模型,类库,助手和视图。配置参数可以继承或动态声明覆盖。
5。没有名字空间冲突。类前缀和后缀用来保护名字空间冲突。
6。类的自动加载。Kohana里的所有类都能自动被框架加载,不需要手动引用。
7。API一致性。类能使用驱动不同的访问不同的协议来保持API的一致性,即使底层发生变化。
8。强大的事件处理机制。Kohana的事件可被动态的添加、替换或删除。
目标编辑
更安全在任何时候,对安全的最佳做法:
*kohana内置XSS保护,也可以使用HTMLPurfier作为的XSS过滤器。
*所有数据插入到数据库是避免使用数据库特定方法,如mysql_real_escape_string,以防止SQL注入攻击。Kohana里的magicquotes是被关闭的。
*所有POST,GET,和COOKIE数据都经过处理,以防止恶意行为。
更轻量级以最有效的方式提供最大的灵活性:
*Kohana尽可能的使用公约配置(conventionoverconfiguration)。
*合理的配置和高度优化的环境检测例程允许kohana运行在几乎任何php5环境。
*松耦合(Loosecoupling)是用来总是载入的最少数量的文件,减少资源的使用。
*一个清洁的API和使用本土职能,尽可能使kohana成为最快的php5框架之一。
http://kohanaframework.org/
我们知道,PHP语言对大小写敏感问题的处理有点乱,在编程时需要多加注意,特别是在linux平台中更要注意。本文对这一问题做个总结,供大家学习参考。
说明:
不鼓励用这些规则,仅作为学习研究之用。
在编程中,应当坚持“大小写敏感”,遵循统一的代码规范。
一、大小写敏感
1. 变量名区分大小写
所有变量均区分大小写,包括普通变量以及$_GET,$_POST,$_REQUEST,$_COOKIE,$_SESSION,$GLOBALS,$_SERVER,$_FILES,$_ENV 等;
例子:
<?php
$abc = ‘abcd’;
echo $abc; //输出 ‘abcd’
echo $aBc; //无输出
echo $ABC; //无输出
?>
2. 常量名默认区分大小写,通常都写为大写
<?php
define(“ABC”,”Hello World”);
echo ABC; //输出 Hello World
echo abc; //输出 abc
?>
3. php.ini配置项指令区分大小写
如 file_uploads = 1 不能写成 File_uploads = 1
二、大小写不敏感
1. 函数名、方法名、类名 不区分大小写,但推荐使用与定义时相同的名字
例子:
<?php
function show(){
echo “Hello World”;
}
show(); //输出 Hello World 推荐写法
SHOW(); //输出 Hello World
?>
<?php
class cls{
static function func(){
echo “hello world”;
}
}
Cls::FunC(); //输出hello world
?>
2. 魔术常量不区分大小写,推荐大写
包括:__LINE__、__FILE__、__DIR__、__FUNCTION__、__CLASS__、__METHOD__、 __NAMESPACE__。
例子:
<?php
echo __line__; //输出 2
echo __LINE__; //输出 3
?>
3. NULL、TRUE、FALSE不区分大小写
例子:
<?php
$a = null;
$b = NULL;
$c = true;
$d = TRUE;
$e = false;
$f = FALSE;
var_dump($a == $b); //输出 boolean true
var_dump($c == $d); //输出 boolean true
var_dump($e == $f); //输出 boolean true
?>
4.类型强制转换,不区分大小写
包括
MagenTo默认支持多语言网店,不过要使用多语言功能,需要进行一些设置。
一、后台多语言支持(中文化)
Magento登录后台时默认的是显示的是英文界面,在页面左下角选择语言为中文就会跳转为中文界面,如果还是显示英文,则是因为没有下载中文语言包的原因,按以下步骤操作:
1.下载中文语言包
2.上传到指定目录
3.切换语言为简体中文,并清空缓存
二、前台多语言支持(多种方案)
1.下载指定语言包
2.上传到指定目录(app/local)
3.登陆管理后台 并创建一个新的store view在Manage stores页面,指定名称如“Chinese”
4.到admin panel System > Configuration > general处
然后选择 store view “Chinese” locale options > locale > Chinese
select store view “English” locale options > locales > English
保存设置。这样你就有了2种语言的界面。其实是2个store view。
最后刷新缓存,在System->Cache Management
上面介绍的方案是单网店对应多语言,如果要实现不同的域名或子目录对应不同的语言,可以添加多个Store,并指定对应的语言即可。
三、产品数据,文章页面的多语言实现
上述步骤安装完成后,仅是框架页面和导航结构实现了多语言的支持。如果是自己添加的产品分类,产品标题和内容,文章CMS页面等处要显示对应的语言内容,还需要为不同的语言/商店添加不同的语言内容,如不另外添加的话,会显示默认语言添加的内容。
如果你的网站产品内容比较多,要添加多语言的内容的工作就会比较繁琐,需要把一个产品标题或内容从原来的语言翻译成目标语言,然后再添加到指定的语言产品数据库。
在安装 Apache 时,会默认文件根目录为安装目录下的htdocs。可以修改 Apache 的配置文件 httpd.conf 里有关文件根目录的设置修改根目录。
修改 Apache 文件根目录的操作如下:
1. 备份 Apache 配置文件 httpd.conf,该配置文件的路径是:
%install%\conf\httpd.conf
2. 打开 http.conf 文件,找到 DocumentRoot 为开头的那一行,将DocumentRoot改成新的 DocumentRoot 路径
比如想改到 D:\website,就改成
DocumentRoot D:/website”
3. 然后找到 http.conf 文件中的如下内容
# This should be changed to whatever you set DocumentRoot to.#<Directory “C:/Program Files/Apache Software Foundation/Apache2.2/htdocs”>
将 Diectory 中的路径改成你新设的文件根目录,比如:
<Directory “D:/website”>
5. 重新启动 Apache
修改了文件根目录完成
////////////////////////////////其他虚拟目录创建
环境:appserv构架的,端口:90
测试页面:http://127.0.0.1:90
目的:将f盘下的www文件夹作为虚拟目录!
找到
C:\\AppServ\\Apache2.2\\conf 里面的httpd.conf文件,(修改前备份下)用记事本打开,找到:
Alias /icons/ “C:/AppServ/Apache2.2/icons/”
<Directory “C:/AppServ/Apache2.2/icons”>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
修改如下:
Alias /icons/ “C:/AppServ/Apache2.2/icons/”
Alias /life/ “f:/www/”
<Directory “C:/AppServ/Apache2.2/icons”>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory “f:/www”>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
重新启动Apache
测试访问:
收藏于 2010-06-13