img图片下边距消除的方法

“图片底部的空隙实际上涉及行内元素的布局模型,图片默认的垂直对齐方式是基线,而基线的位置是与字体相关的。所以在某些时候,图片底部的空隙可能是 2px,而有时可能是 4px 或更多。不同的 font-size 应该也会影响到这个空隙的大小。

ps:解决办法给img定义vertical-align或者定义为块状,最优的解决办是定义vertical-align,注:定义vertical-align为middle时在IE6中大概还有一像素的顶边距,最好为top或bottom。当然还有种极端解决办法大家可以试试就是将 父容器的字体大小为零,font-size:0

发表在 开源代码 | 标签为 | 留下评论

access无法使用sql语句like百分号通配符%

今天使用access查询设计,使用sql模糊搜索

delete from table where name like ‘%test%’

select count(*) from table where name like ‘%test%’

都无效,搞了半天原来access的通配符不是% 而是 * 星号

发表在 数据库 | 标签为 , | 留下评论

Access2003/2007/2010数据库中执行SQL语句

Access2003及之前版本执行SQL语句的方法:

(1)点击对象里的“查询”

(2)点击 “在设计视图创建查询” ,再点击“关闭”

(3)再点击 左上角的”sql”

(4)就可以输入sql语句了

Access2007/2010中执行SQL语句的方法:

1、打开一个access数据库文件

2、点击“创建”标签中的“查询设计”,会弹出一个“显示表”的对话框,点击“关闭”将其关闭

3、这时会有一个名为“查询*”的窗口,还不能输入SQL语句

4、点击左上角的“SQL视图”,这时就可在查询窗中输入SQL语句了

5、SQL语句编辑完成后,点击左上角的红色感叹号即可执行SQL语句

 

发表在 数据库 | 标签为 | 留下评论

更换将phpstorm主题皮肤风格

分享两个主题:sublime text和notepad++

下载皮肤插件,将插件解压缩放在:c:/Users/USERNAME/.WebIde[10|9|8]/config/colors,重启phpstorm,在File > Settings > Editor > Colors & Fonts选择刚才放入的插件即可。选择刚才复制进去的主题,点击应用。

Monokai_Sublime.icls
Notepad.icls

发表在 软件 | 标签为 | 留下评论

如何卸载ie11的方法,IE11怎么卸载

很简单,和和平时卸载程序一样。

1.找到开始菜单,找到并打开控制面板。

2.点击面板中的卸载程序,然后选择查看已安装的更新。

3.在当前安装的更新里找到IE11的更新,然后直接右击卸载;或者在搜索栏输入IE就会查找更新啦,不用一个一个去找的哦。

发表在 软件 | 标签为 | 留下评论

nginx重写rewrite正则详解和实例

nginx rewrite 正则表达式匹配

大小写匹配

~ 为区分大小写匹配

~* 为不区分大小写匹配

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配

文件及目录匹配

-f和!-f用来判断是否存在文件

-d和!-d用来判断是否存在目录

-e和!-e用来判断是否存在文件或目录

-x和!-x用来判断文件是否可执行

flag标记

last 相当于Apache里的[L]标记,表示完成rewrite

break 终止匹配, 不再匹配后面的规则。

redirect 返回302临时重定向 地址栏会显示跳转后的地址。

permanent 返回301永久重定向 地址栏会显示跳转后的地址。

 

location的几个使用实例:

1)location  / { }:匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则将被优先和查询匹配。
2)location =/ {}:仅仅匹配/
3)location ~* \.(gif|jpg|jpeg)$


rewrite \.(gif|jpg)$ /logo.png;
}:location不区分大小写,匹配任何以gif,jpg,jpeg结尾的文件。

 

几个实例:

多目录转成参数 

要求:abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2

规则配置:

if ($host ~* (.*)\.domain\.com) {

set $sub_name $1;

rewrite ^/sort\/(\d+)\/?$ /index.php?act=sort&cid=$sub_name&id=$1 last;

}

目录对换

要求:/123456/xxxx -> /xxxx?id=123456

规则配置:

rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;

 

再来一个针对浏览器优化的自动rewrite,这里rewrite后的目录可以是存在的;

例如设定nginx在用户使用ie的使用重定向到/nginx-ie目录

规则如下:

if ($http_user_agent ~ MSIE) {

rewrite ^(.*)$ /nginx-ie/$1 break;

}

目录自动加“/” ,这个功能一般浏览器自动完成

if (-d $request_filename){

rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;

}

以下这些可能就跟广义的rewrite重写无关了

禁止htaccess

location ~/\.ht {

deny all;

}

禁止多个目录 

location ~ ^/(cron|templates)/ {

deny all; break;

}

禁止以/data开头的文件,可以禁止/data/下多级目录下.log.txt等请求

location ~ ^/data {

deny all;

}

禁止单个文件

location ~ /data/sql/data.sql {

deny all;

}

给favicon.ico和robots.txt设置过期时间; 这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志

location ~(favicon.ico) {

log_not_found off;

expires 99d;

break;

}

location ~(robots.txt) {

log_not_found off;

expires 7d;

break;

}

设定某个文件的浏览器缓存过期时间;这里为600秒,并不记录访问日志

location ^~ /html/scripts/loadhead_1.js {

access_log off;

expires 600;

break;

}

 

Nginx还可以自定义某一类型的文件的保质期时间,具体写法看下文的代码:

location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
if (-f $request_filename) {
expires    1h;
break;
}
}

//上段代码就将js|css|jpg|jpeg|gif|png|swf这类文件的保质期设置为一小时。

 

防盗链的设置:

防盗链:如果你的网站是个下载网站,下载步骤应该是先经过你的主页找到下载地址,才能下载,为了防止某些网友直接访问下载地址完全不通过主页下载,我们就可以使用防盗链的方式,具体代码如下:

location ~* \.(gif|jpg|swf)$ {
valid_referers none blocked start.igrow.cn sta.igrow.cn;
if ($invalid_referer) {
rewrite ^/ http://$host/logo.png;
}
}

 

文件反盗链并设置过期时间–<盗链多次请求也会打开你的站点的图片啊,所以设置下缓存时间,不会每次盗链都请求并下载这张图片>

location ~* ^.+\.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {

valid_referers none blocked *.jjonline.cn *.jjonline.com.cn *.lanwei.org *.jjonline.org localhost  42.121.107.189;

if ($invalid_referer) {

rewrite ^/ http://img.jjonline.cn/forbid.gif;

return 417;

break;

}

access_log off;

break;

}

说明:

 

这里的return 417 为自定义的http状态码,默认为403,方便通过nginx的log文件找出正确的盗链的请求地址

“rewrite ^/ http://img.jjonline.cn/forbid.gif;”显示一张防盗链图片

“access_log off;”不记录访问日志,减轻压力

“expires 3d”所有文件3天的浏览器缓存

 

 

只充许固定ip访问网站,并加上密码;这个对有权限认证的应用比较在行

location \ {

allow 22.27.164.25; #允许的ipd

deny all;

auth_basic “KEY”; #认证的一些设置

auth_basic_user_file htpasswd;

}

说明:location的应用也有各种变化,这里的写法就针对了根目录了。

文件和目录不存在的时重定向

if (!-e $request_filename) {

#proxy_pass http://127.0.0.1; #这里是跳转到代理ip,这个代理ip上有一个监听的web服务器

rewrite ^/ http://www.jjonline.cn/none.html;  #跳转到这个网页去

#return 404; #直接返回404码,然后会寻找root指定的404.html文件

}

域名跳转 

server {

listen 80;

server_name jump.jjonline.cn ;#需要跳转的多级域名

index index.html index.htm index.php; #入口索引文件的名字

root /var/www/public_html/; #这个站点的根目录

rewrite ^/ http://www.jjonline.cn/;

#rewrite到这个地址,功能表现:在浏览器上输入jump.jjonline.cn并回车,不会有任何提示直接变成www.jjonline.cn

access_log off;

}

多域名转向

 

server {

listen 80;

 

server_name www.jjonline.cn www.jjonline.org;

index index.html index.htm index.php;

root /var/www/public_html/;

if ($host ~ “jjonline\.org”) {

rewrite ^(.*) http://www.jjonline.cn$1 permanent;

}

}

三级域名跳转 

if ($http_host ~* “^(.*)\.i\.jjonline\.cn$”) {

rewrite ^(.*) http://demo.jjonline.cn$1;

break;

}

域名镜向

server {

listen 80;

server_name mirror.jjonline.cn;

index index.html index.htm index.php;

root /var/www/public_html;

rewrite ^/(.*) http://www.jjonline.cn/$1 last;

access_log off;

}

某个子目录作镜向,这里的示例是demo子目录

location ^~ /demo {

rewrite ^.+ http://demo.jjonline.cn/ last;

break;

}

以下在附带本博客的rewrite写法,emlog系统的rewrite

 

location ~ {

if (!-e $request_filename) {

rewrite ^/(.+)$ /index.php last;

}

}

发表在 服务器 | 标签为 , , | 留下评论

各种cms转换导入phpcms v9的代码

织梦gbk转导入phpcms v9:dedecms5.6toV9_GBK.zip
织梦utf8转导入phpcms v9:dedecms5.6toV9_UTF8.zip
帝国gbk转导入phpcms v9:ecms6.5tov9_GBK.zip
帝国utf8转导入phpcms v9:ecms6.5tov9_UTF8.zip
php168gbk转导入phpcms v9:php168stov9_gbk.zip
php168utf8转导入phpcms v9:php168stov9_utf8.zip
phpcms2007gbk转导入phpcms v9:phpcms2007tov9_GBK.zip
phpcms2007utf8转导入phpcms v9:phpcms2007tov9_UTF8.zip
phpcms2008gbk转导入phpcms v9:phpcms2008tov9_gbk.zip
phpcms2008utf8转导入PHPCMS v9:phpcms2008tov9_utf8.zip

http://www.netpc.com.cn/uploads/2015/0808/

代码下载后先不要在实际环境中直接运行,因为有些版本可能都产生改变了,先测试修改好再运行。

发表在 服务器 | 标签为 , | 留下评论

windows7下64位系统安装Memcached

Memcached-win64-1.4.4-14.zip 下载:http://www.netpc.com.cn/uploads/2015/0805/memcached.rar

2. 解压放某个盘下面,比如:

C:\memcached\memcached.exe

3. 在终端(也即cmd命令界面)下输入以下命令安装windows服务:

C:\memcached>memcached.exe -d install

4. 再输入下面命令启动:

C:\memcached>memcached.exe -d start

默认参数说明

-p 监听的端口

-l 连接的IP地址, 默认是本机

-d start 启动memcached服务

-d restart 重起memcached服务

-d stop|shutdown 关闭正在运行的memcached服务

-d install 安装memcached服务

-d uninstall 卸载memcached服

-u 以的身份运行 (仅在以root运行的时候有效

-m 最大内存使用,单位MB。默认64M

-M 内存耗尽时返回错误,而不是删除

-c 最大同时连接数,默认是102

-f 块大小增长因子,默认是1.2

-n 最小分配空间,key+value+flags默认是4

-h 显示帮助

测试代码

<?php

$memcache = new Memcache;

$memcache->connect(“localhost”,11211);

echo “Server’s version: ” . $memcache->getVersion() . “\n”;

$tmp_object = new stdClass;

$tmp_object->str_attr = “test”;

$tmp_object->int_attr = 123;

$memcache->set(“key”,$tmp_object,false,10);

var_dump($memcache->get(“key”));
?>

发表在 服务器 | 标签为 , | 留下评论

PHP发送常见header状态

<?php
//200 正常状态
header(‘HTTP/1.1 200 OK’);

// 301 永久重定向,记得在后面要加重定向地址 Location:$url
header(‘HTTP/1.1 301 Moved Permanently’);

// 重定向,其实就是302 暂时重定向
header(‘Location: http://www.netpc.com.cn/’);

// 设置页面304 没有修改
header(‘HTTP/1.1 304 Not Modified’);

// 显示登录框,
header(‘HTTP/1.1 401 Unauthorized’);
header(‘WWW-Authenticate: Basic realm=”登录信息”‘);
echo ‘显示的信息!’;

// 403 禁止访问
header(‘HTTP/1.1 403 Forbidden’);

// 404 错误
header(‘HTTP/1.1 404 Not Found’);

// 500 服务器错误
header(‘HTTP/1.1 500 Internal Server Error’);

// 3秒后重定向指定地址(也就是刷新到新页面与 <meta http-equiv=”refresh” content=”5;http://www.netpc.com.cn/ /> 相同)
header(‘Refresh: 5; url=http://www.netpc.com.cn/’);
echo ‘5后跳转到http://www.netpc.com.cn’;

// 重写 X-Powered-By 值
header(‘X-Powered-By: PHP/5.3.39’);
header(‘X-Powered-By: Brain/0.6b’);

//设置上下文语言
header(‘Content-language: en’);

// 设置页面最后修改时间(多用于防缓存)
$time = time() – 60; //建议使用filetime函数来设置页面缓存时间
header(‘Last-Modified: ‘.gmdate(‘D, d M Y H:i:s’, $time).’ GMT’);

// 设置内容长度
header(‘Content-Length: 39344’);

// 设置头文件类型,可以用于流文件或者文件下载
header(‘Content-Type: application/octet-stream’);
header(‘Content-Disposition: attachment; filename=”example.zip”‘);
header(‘Content-Transfer-Encoding: binary’);
readfile(‘example.zip’);//读取文件到客户端

//禁用页面缓存
header(‘Cache-Control: no-cache, no-store, max-age=0, must-revalidate’);
header(‘Expires: Mon, 26 Jul 1997 05:00:00 GMT’);
header(‘Pragma: no-cache’);

//设置页面头信息
header(‘Content-Type: text/html; charset=iso-8859-1’);
header(‘Content-Type: text/html; charset=utf-8’);
header(‘Content-Type: text/plain’);
header(‘Content-Type: image/jpeg’);
header(‘Content-Type: application/zip’);
header(‘Content-Type: application/pdf’);
header(‘Content-Type: audio/mpeg’);
header(‘Content-Type: application/x-shockwave-flash’);
?>

发表在 开源代码 | 标签为 | 留下评论

批量修改一个多级文件夹下所有文件的后缀名?

利用dos命令即可完成,win+R打开运行,直接在命令行输入
D:回车,到你需要更改后缀名的路径。
for /r %1 in (*.txt) do ren %1 *.html

回车

发表在 开源代码 | 标签为 | 留下评论