三十而立

分类代码下的文章

对于做国内站的我来说,我不希望国外蜘蛛来访问我的网站,特别是个别垃圾蜘蛛,它们访问特别频繁。这些垃圾流量多了之后,严重浪费服务器的带宽和资源。通过判断user agent,在nginx中禁用这些蜘蛛可以节省一些流量,也可以防止一些恶意的访问。

1、进入nginx的配置目录,例如cd /usr/local/nginx/conf

2、添加agent_deny.conf配置文件 vim agent_deny.conf

加入以下

#禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
  return 403;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
{
  return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
  return 403;
}

还有加一些针对特殊的user_agent的访问

if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") { return 404; }

这个是如何得出是频繁访问的user_agent呢,通过分析nginx的日志可以得出

tail -n 1000 /usr/local/nginx/logs/access.log | awk -F\" '{A[$(NF-1)]++}END{for(k in A)print A[k],k}' | sort -n | tail 

分析访问次数
执行以上命令可以得出访问最多的user_agent,通过人为判断是否正常来屏蔽

然后在nginx.conf的location中加入include agent_deny.conf;

平滑重启nginx

/usr/local/nginx/sbin/nginx –s reload

然后测试一下 设置是否成功

curl -I -A "BaiduSpider" www.test.com
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 09 Feb 2015 03:37:20 GMT
Content-Type: text/html; charset=UTF-8 Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.5.19 Vary: Accept-Encoding, Cookie
Cache-Control: max-age=3, must-revalidate
WP-Super-Cache: Served supercache file from PHP
curl -I -A "JikeSpider" www.test.com
HTTP/1.1 403 Forbidden
Server: nginx Date: Mon, 09 Feb 2015 03:37:44 GMT
Content-Type: text/html
Content-Length: 162 Connection: keep-alive

到这里,nginx通过判断User-Agent屏蔽蜘蛛访问网站就已经完成,可以根据实际情况对agent_deny.conf中的蜘蛛进行增加、删除或者修改。

参考原文:https://blog.csdn.net/qq_22929803/article/details/50724662

我们在管理自己的Linux vps主机产品的时候,我们可以自由的设置自己的VPS产品是否禁止PING IP。

第一个方法,我们可以通过修改文件:

vim /proc/sys/net/ipv4/icmp_echo_ignore_all

编辑这个文件,默认应该是0,我们修改成1就是禁止PING。如果需要恢复继续修改成0,然后重启VPS就可以。

第二个方法,我们直接通过命令解决(建议):

禁止命令:
sysctl -w net.ipv4.icmp_echo_ignore_all=1
sysctl -p
恢复禁止
sysctl -w net.ipv4.icmp_echo_ignore_all=0
sysctl -p

用命令设置不需要重启VPS直接会生效的。

一般用wordpress编辑器,有个别常用的按钮在第2行(默认隐藏,需要点击才打开),这样的话感觉有些麻烦。

根据用户体验原则,功能类似的按钮,常用的按钮应该出现在一起,这一点WordPress可以学习一下Gmail的按钮组织方式。下面的方法不但可以添加TinyMCE按钮,还可以任意排列各个TinyMCE按钮出现的顺序

把以下代码根据自己需要增减修改后,再加入当前主题的 functions.php 文件。

// 编辑器第一行
function cw_mce_buttons_1( $buttons ) {
    $buttons = array(
        'bold',
        'italic',
        'underline',
        'strikethrough',
        'bullist',
        'numlist',
        'blockquote',
        'hr',
        'alignleft',
        'alignright',
        'aligncenter',
        'alignjustify',
        'subscript',
        'superscript',
        'link',
        'unlink',
        'wp_more',
        'wp_adv'
    );
    return $buttons;
}
add_filter( 'mce_buttons', 'cw_mce_buttons_1' );

//编辑器第二行
function cw_mce_buttons_2( $buttons ) {
    $buttons = array(
        'formatselect',
        'fontsizeselect',
        'forecolor',
        'backcolor',
        'charmap',
        'pastetext',
        'removeformat',
        'spellchecker',
        'fullscreen',
        'undo',
        'redo',
        'indent',
        'outdent',
        'cleanup',
        'charmap',
        'wp_help',
        'code',
        'sub',
        'sup',
        'anchor',
    );
    return $buttons;
}
add_filter( 'mce_buttons_2', 'cw_mce_buttons_2' );

我改成了这样:
微信截图_20190328224228.png

首先我们需要知道为什么要给WordPress分类目录和页面添加斜杠。

分类目录顾名思义就是一个目录,众所周知,目录链接应该像这样 :

http://www.dmeng.net/category/wordpress-theme-development/

但有些时候因为我们的伪静态规则设置问题在WordPress分类目录后并没有斜杠 / ,会出现:

http://www.dmeng.net/category/wordpress-theme-development

像这样的情况。

这对搜索引擎是不友好的,因为带有斜杠时搜索引擎能及时识别出这是一个目录,而没有斜杠时则要分析。(就现在这行业水平,误判是常有的事,有做留意SEO的童鞋都知道。)

所以,我们需要给WordPress分类目录和页面添加斜杠。

我们只需要把以下代码加在主题目录的 functions.php 中即可:

wordpress给分类和tag尾部加斜线 /

// 分类目录地址后添加斜杠star

function nice_trailingslashit($string, $type_of_url) {
    if ( $type_of_url != 'single' && $type_of_url != 'page' && $type_of_url != 'single_paged' )
        $string = trailingslashit($string);
    return $string;
}
add_filter('user_trailingslashit', 'nice_trailingslashit', 10, 2);

// 分类目录地址后添加斜杠over

经测试wordpress5.1版本对分类/tag仍然有效(2019年3月27日)

参考资料:http://zmingcx.com/add-slash-catalog.html

阿里云提示:wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证不当,导致黑客可构造类似于012.10.10.10这样的畸形IP绕过验证,进行SSRF;

修复方法:

打开wp-includes 中的 http.php 大约553 行(编辑器不同,行数可能不同)

找到

preg_match('#^(([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)\.){3}([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)$#', $host)

改成

preg_match('#^(([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d|0+\d+)\.){3}([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)$#', $host)

原文:https://blog.csdn.net/dclnet/article/details/81869078

linux下开启mysql慢查询日志

修改mysql的配置文件my.cnf
执行 vi /etc/my.cnf

在[mysqld]里面加上以下内容

#开启慢日志
slow_query_log=TRUE          
#日志存放目录
slow_query_log_file=/home/wwwlogs/slow_query.log
#5秒记录值
long_query_time=5

如下图:
20170522152116543.jpg
然后重启 mysql /etc/init.d/mysql restart

登录mysql验证下 mysql-uroot -p

登录成功后执行 show variables like '%quer%';

看到下图就代表成功了:
2.jpg

显示出慢查询日志中最慢的10条sql

mysqldumpslow -t 10  /home/wwwlogs/slow_query.log  

附LNMP清理二进制mysql数据日志:
/usr/local/mysql/var/下面产生mysql-bin.0000* 类似的文件,而且一般都在几十MB到几个GB,会导致mysql无法启动或报错。

如何关闭MySQL的日志功能:

先删除日志:
先登录mysql:mysql -u root -p
输入密码登录成功后再执行:reset master; #注意别漏了后面的分号;
回车后会显示"Query OK, 234 rows affected (12.3 sec)",说明已经成功,再输入:quit; 退出mysql;

彻底禁用MySQL日志:
打开 vim /etc/my.cnf
找到这两行前面加上#注释掉

log-bin=mysql-bin
binlog_format=mixed

重启mysql /etc/init.d/mysql restart即可。

如果实在想保留日志,可以在/etc/my.cnf里[mysqld]部分中加入expire_logs_days = 10 #10天 然后重启mysql,这样10天就会自动清理日志。

方案参考:
https://blog.csdn.net/qq_27292113/article/details/72626722
https://www.vpser.net/manage/delete-mysql-mysql-bin-0000-logs.html

1、阿里云生成备份快照
2、旧的服务器扩容下数据盘(压缩资料超出存储不够,重要资料顺便本地备份下):https://help.aliyun.com/document_detail/25452.html?spm=a2c4g.11186623.4.3.360b14c5FLMEZt (注意执行第5步)
打包压缩: tar -zcvf wwwroot-bak.tgz /home/wwwroot

解压: `tar -zcvf wwwroot-bak.tgz`

3、新的服务器挂载数据盘

https://help.aliyun.com/document_detail/25426.html?spm=a2c4g.11186623.2.21.62667d56PCiG4i#concept-jl1-qzd-wdb

这次放弃了军哥的lnmp(使用近10年了),改用了宝塔(BT),更原因纯粹是懒,赞扬军哥的lnmp非常稳定,几年来从未出过问题。

4、先安装宝塔

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

中间跳出选择 y,安装完后记复制管理面板账号和密码

5、登录管理面板安装(nginx1.14,php7.2,mysql5.7),可以选择 编绎安装 30分钟到1小时左右

6、导出旧的mysql数据:

mysqldump -uroot -p --all-databases > sqlfile.sql //导出全部数据库,注意:这不是在mysql下
mysqldump -uroot -p dp_db > dumpout.sql   //导出某1个数据库,dp_db是需要导出的数据库名称,dumpout.sql存储导出

的数据

7、导入新的数据库:

mysql> create database abc;      # 创建数据库,abc是数据库名
mysql> use abc;                  # 使用已创建的数据库 
mysql> set names utf8;           # 设置编码
mysql> source /home/abc.sql      # 导入备份数据库

wordpress 文章内容输出:


<?php while (have_posts()) : the_post(); ?>   //循环
<?php the_content(); ?> //输出内容
<?php endwhile; ?>  //循环结束                

通过Vagrant部署开发环境,使用目录共享模式,在本地磁盘进行开发,通过虚拟机环境运行开发的页面。
但如果出现:修改替换了一个css,一张图片,然后刷新浏览器,发现什么都没有变,然后你有非常猛烈、使劲的F5,依旧还是没有改变,是的,你看看编辑器,似乎替换是正常的,在看看VM上的文件,也都是对的,尝试重启nginx依旧没有任何变化,你开始怀疑php5-fpm甚至于毫不相干的memcached和mysql,但都无济于事,也不知道是什么让这些文件被“缓存”了呢。

当你尝试修改一个js,并且用同样的方法更新之后,会遇到类似的问题,是的,就算重启VM上任何服务,甚至重启VM,依旧没有用
,尝试花费很多时间,试验各种各样的方法去解决这个问题,其实对于nginx来说,你只需要修改配置文件(nginx.conf)中的一行重启就能简单的解决这个问题:

sendfile off;  //搜索sendfile

//找到 nginx.conf ,把里面的 “sendfile on” 修改为 “sendfile off”。

当然,如果你使用Apache也可能遇到类似的问题,那么同样也有类似的配置需要修改:

EnableSendfile off

先去安装一个适合在 CentOS 7 上面使用的 ius 仓库,这样我们就可以使用 yum 去安装比较新的软件包了。

sudo yum install https://centos7.iuscommunity.org/ius-release.rpm -y

NGINX
再去安装一下 NGINX:

sudo yum install nginx -y

启动一下它,再让他开机启动:

sudo systemctl start nginx
sudo systemctl enable nginx

MariaDB
下面再安装一下 MariaDB,我想安装 ius 仓库上的新版的 mariadb ,先删除掉系统自带的 mariadb:

sudo yum remove mariadb-libs -y

再安装一下新的 MariaDB:

sudo yum install mariadb101u-server -y

启动一下它,再让它开机自启动:

sudo systemctl start mariadb
sudo systemctl enable mariadb

执行一安全配置:

mysql_secure_installation

回答一些问题,设置一下数据库管理系统的 root 用户的密码,首次密码为空

PHP 7
下面再去安装一下 PHP 还有一些比较常用的扩展:

sudo yum install php71u-fpm php71u-cli php71u-xml php71u-gd php71u-mysqlnd php71u-pdo php71u-mcrypt php71u-mbstring php71u-json php71u-opcache -y

启动一下 php-fpm,再让它开机自启动:

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

配置
下面去创建一个虚拟主机,让它可以执行 PHP,我们需要创建一个可以执行 PHP 的 NGINX 配置文件。先去创建一个 PHP 文件:

mkdir -p /vagrant/www/default
vi /vagrant/www/default/phpinfo.php

在里面添加一个 phpinfo 函数,保存一下文件。
再去创建一个 NGINX 配置文件:

sudo vi /etc/nginx/conf.d/php.basic.conf

添加下面内容:

server {
  listen        80;
  server_name   192.168.0.111;
  root          /vagrant/www/default;
  index         index.php index.html;

 location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
  }
}

保存一下,重新加载一下 NGINX:

sudo systemctl reload nginx

测试
打开浏览器,输入服务器的 IP 地址,后面加上一个 phpinfo.php,在页面上会显示一些跟 php 相关的信息 , 说明我们成功的配置了一个 LEMP 环境。

权限
Vagrant 会给我们在虚拟机与本地电脑之间设置一个共享的目录,默认这个目录在本地电脑就是项目的根目录,在虚拟机上这个共享的目录是 /vagrant ,这个目录的拥有者与用户组都会是 vagrant。注意我们不能在虚拟机上修改这个目录的权限,所以,如果你的网站应用放在这个目录的下面或者它下面的某个子目录里面,你需要把运行 PHP-FPM 这个服务的用户修改成 vagrant。
编辑一下 php-fpm 的配置文件:

sudo  vi /etc/php-fpm.d/www.conf

搜索一下 user,等号右边的值就是运行 PHP-FPM 这个服务的用户,默认应该是 php-fpm,我们需要把它改成 vagrant :

user = vagrant

保存配置文件,重新启动一下 PHP-FPM:

sudo systemctl restart php-fpm

mysql时间戳转换

//转换并写入:把时间戳转为可阅读时间(年-月-日 时:分:秒)格式
//wp_post是表名,addtime是时间字段
UPDATE wp_post set addtime=FROM_UNIXTIME(addtime,'%Y-%m-%d %H:%i:%s');

//wp_post是表名,addtime是时间字段
//查询转换入:把时间戳转为可阅读时间(年-月-日 时:分:秒)格式
select FROM_UNIXTIME(addtime,'%Y年%m月%d') from wp_post;

mysql时间加减,通常用于时区转换

//给时间加1小时语法,wp_post是表名,addtime是时间
UPDATE wp_post set addtime=DATE_ADD(addtime,interval 1 hour);
//减去1小时
UPDATE wp_post set addtime=DATE_sub(addtime,interval 1 hour);

select date_add(@dt, interval 1 day);   - 加1天  
select date_add(@dt, interval 1 hour);   -加1小时  
select date_add(@dt, interval 1 minute);    - 加1分钟  
select date_add(@dt, interval 1 second); -加1秒  
select date_add(@dt, interval 1 microsecond);-加1毫秒  
select date_add(@dt, interval 1 week);-加1周  
select date_add(@dt, interval 1 month);-加1月  
select date_add(@dt, interval 1 quarter);-加1季  
select date_add(@dt, interval 1 year);-加1年  

WordPress使用MySQL数据库。作为一个开发者,我们有必要掌握WordPress数据库的基本构造,并在自己的插件或主题中使用他们。

截至WordPress3.0,WordPress一共有以下11个表。这里加上了默认的表前缀 wp_ 。

wp_commentmeta:存储评论的元数据
wp_comments:存储评论
wp_links:存储友情链接(Blogroll)
wp_options:存储WordPress系统选项和插件、主题配置
wp_postmeta:存储文章(包括页面、上传文件、修订)的元数据
wp_posts:存储文章(包括页面、上传文件、修订)
wp_terms:存储每个目录、标签
wp_term_relationships:存储每个文章、链接和对应分类的关系
wp_term_taxonomy:存储每个目录、标签所对应的分类
wp_usermeta:存储用户的元数据
wp_users:存储用户

在WordPress的数据库结构中,存储系统选项和插件配置的wp_options表是比较独立的结构,在后文中会提到,它采用了key-value模式存储,这样做的好处是易于拓展,各个插件都可以轻松地在这里存储自己的配置。

post,comment,user 则是三个基本表加上拓展表的组合。以wp_users为例,wp_users已经存储了每个用户会用到的基本信息,比如 login_name、display_name、 password、email等常用信息,但如果我们还要存储一些不常用的数据,最好的做法不是去在表后加上一列,去破坏默认的表结构,而是将数据存在wp_usermeta中。wp_usermeta这个拓展表和wp_options表有类似的结构,我们可以在这里存储每个用户的QQ号码、手机号码、登录WordPress后台的主题选项等等。

比较难以理解的是term,即wp_terms、wp_term_relationships、wp_term_taxonomy。在WordPress的系统里,我们常见的分类有文章的分类、链接的分类,实际上还有TAG,它也是一种特殊的分类方式,我们甚至还可以创建自己的分类方法。WordPress将所有的分类及分类方法、对应结构都记录在这三个表中。wp_terms记录了每个分类的名字以及基本信息,如本站分为“WordPress开发”、“WPCEO插件”等,这里的分类指广义上的分类,所以每个TAG也是一个“分类”。wp_term_taxonomy记录了每个分类所归属的分类方法,如“WordPress开发”、“WPCEO插件”是文章分类(category),放置友情链接的“我的朋友”、“我的同事”分类属于友情链接分类(link_category)。wp_term_relationships记录了每个文章(或链接)所对应的分类方法。

庆幸的是,关于term的使用,WordPress中相关函数的使用方法还是比较清晰明了,我们就没必要纠结于它的构造了。

在上文中我们已经介绍了WordPress数据库中各个表的作用,本文将继续介绍每个表中每个列的作用。WordPress官方文档已经有比较详细的表格,本文仅对常用数据进行介绍。

wp_commentmeta
meta_id:自增唯一ID
comment_id:对应评论ID
meta_key:键名
meta_value:键值

wp_comments
comment_ID:自增唯一ID
comment_post_ID:对应文章ID
comment_author:评论者
comment_author_email:评论者邮箱
comment_author_url:评论者网址
comment_author_IP:评论者IP
comment_date:评论时间
comment_date_gmt:评论时间(GMT+0时间)
comment_content:评论正文
comment_karma:未知
comment_approved:评论是否被批准
comment_agent:评论者的USER AGENT
comment_type:评论类型(pingback/普通)
comment_parent:父评论ID
user_id:评论者用户ID(不一定存在)

wp_links
link_id:自增唯一ID
link_url:链接URL
link_name:链接标题
link_image:链接图片
link_target:链接打开方式
link_description:链接描述
link_visible:是否可见(Y/N)
link_owner:添加者用户ID
link_rating:评分等级
link_updated:未知
link_rel:XFN关系
link_notes:XFN注释
link_rss:链接RSS地址

wp_options
option_id:自增唯一ID
blog_id:博客ID,用于多用户博客,默认0
option_name:键名
option_value:键值
autoload:在WordPress载入时自动载入(yes/no)

wp_postmeta
meta_id:自增唯一ID
post_id:对应文章ID
meta_key:键名
meta_value:键值

wp_posts
ID:自增唯一ID
post_author:对应作者ID
post_date:发布时间
post_date_gmt:发布时间(GMT+0时间)
post_content:正文
post_title:标题
post_excerpt:摘录
post_status:文章状态(publish/auto-draft/inherit等)
comment_status:评论状态(open/closed)
ping_status:PING状态(open/closed)
post_password:文章密码
post_name:文章缩略名
to_ping:未知
pinged:已经PING过的链接
post_modified:修改时间
post_modified_gmt:修改时间(GMT+0时间)
post_content_filtered:未知
post_parent:父文章,主要用于PAGE
guid:未知
menu_order:排序ID
post_type:文章类型(post/page等)
post_mime_type:MIME类型
comment_count:评论总数

wp_terms
term_id:分类ID
name:分类名
slug:缩略名
term_group:未知

wp_term_relationships
object_id:对应文章ID/链接ID
term_taxonomy_id:对应分类方法ID
term_order:排序

wp_term_taxonomy
term_taxonomy_id:分类方法ID
term_id:taxonomy:分类方法(category/post_tag)
description:未知
parent:所属父分类方法ID
count:文章数统计

wp_usermeta
umeta_id:自增唯一ID
user_id:对应用户ID
meta_key:键名
meta_value:键值

wp_users
ID:自增唯一ID
user_login:登录名
user_pass:密码
user_nicename:昵称
user_email:Email
user_url:网址
user_registered:注册时间
user_activation_key:激活码
user_status:用户状态
display_name:显示名称

最近在为客户做一个库存升级改造的项目,之前客户的数据管理全部是在Excel中操作,估计以前也是没有意识到数据量变大以后,工作会变得如此困难,基本上处于一个无法操作的程度了。于是我们将旧版本的Excel表格格式化以后,导入到新开发的MySQL数据库中发现一个比较有趣的问题:Excel导入MySQL日期为0000-00-00了。

这个问题客户肯定是不能接受的,其实我们已经事先在Excel表中将日期字段设定为日期类型,而且在MySQL中的数据结构也是DATE类型,原以为是不会出错的。经过思考,我们决定用一个低级但很实用的办法来解决这个问题。

第一步:重新格式化Excel日期这个字段。选中日期列→右键单击→设置单元格格式...→自定义→在日期前面加一个特殊字符,这里以a为例,如下图:
a.jpg
设置单元格格式
b.jpg
自定义单元格格式
c.jpg
设置好单元格格式

第二步:选中已经发生格式变化的日期数据,这个时候双击某一个单元格,可以发现那个a会消失,这是因为那个a只是一个格式,所以我们需要把它处理成真正的文本内容:复制并粘贴到记事本中,然后再从记事本中复制粘贴回来,并替换掉现在的内容。

第三步:在MySQL中把日期字段的字符类型修改为varchar(255),接下来就可以把处理后的Excel导入MySQL了。然后使用SQL语句,对已经成功导入但是含有一个a字母的数据进行修改,所使用的SQL语句为:update 表名 set 字段名=replace(字段名,´a´,´´);

第四步:在MySQL中,把日期字段的字符类型重新修改为DATE,然后,然后就大功告成了!

总的说来,这个方法真的没有什么技术含量,但是确确实实是非常实用的,当你在使用其他高科技方法出现错误或效率十分低下的时候,不妨试试我这个笨方法,不但有效,而且速度还很快!至于Excel要如何导入MySQL这里就不再赘述了,后面有时间再单独整理发文,感谢观看,转载请注明出处!

转载自:http://www.chuangluo.com/news_457.html

加/的意义在于让这个标签或分类成为一个目录,拥有更高的权重,利于seo。

在主题function.php中加入

function nice_trailingslashit($string, $type_of_url) {
if ( $type_of_url != 'single' )
$string = trailingslashit($string);
return $string;
}
add_filter('user_trailingslashit', 'nice_trailingslashit', 10, 2);

有时候经常会用到excel导入与导出数据,但对于mysql命令不熟悉的来说,用excel更为直接方便。

1、把linux系统下的时间改为友好阅读时间:

    
//TEXT是格式化,A2指表格位置
=TEXT((A2+8*3600)/86400+70*365+19,"yyyy-mm-dd HH:mm:ss")
//原A2表格中的时间:1473992001,转换后结果:2016-09-16 10:13:21

=TEXT(D2+TIME(8,0,0),"yyyy-mm-dd HH:mm:ss")
//给时间批量加8小时,D2代表单元格,(8,0,0)代表(小时,分,秒)
//执行结果为:2016-09-16 18:13:21

2、截取单元格内前面100个字
完整公式如下:=left(C2,100)
然后使用下拉——》复制 ——》选择性粘贴 ——》粘贴文本

3、2个单元格内容批量合并
完整公式:=A1&A2 //&输入为键盘的:shift+7
然后使用下拉——》复制 ——》选择性粘贴 ——》粘贴文本

4、2张表筛选合并数据
完整公式:点击空白单元格——>插入fx函数——>选择VLOOKUP
查找值:A2 /共同主键,比如:id
数据表:Sheet2!$A:$B //$A为匹配ID,$B为数据
列序数:2 //从第2栏开始
匹配条件:0 //表示模糊匹配
TIM截图20171224103457.jpg
参考:百度百科

一、同一张表中数据合并mysql中新增查询

SELECT sid, GROUP_CONCAT(filename SEPARATOR ';')
FROM pictures_copy
GROUP BY sid;

第1行:sid代表主字段名,filename代表要合并的字段名
第2行:pictures_copy代表数据表
第3行:sid代表主字段名

mysql中新增查询
简单来说,可以通过:

mysql> SELECT id , GROUP_CONCAT(name) name
    -> FROM a 
    -> GROUP BY id;

来获得这样的结果集:

+------+---------+
| id   | name    |
+------+---------+
| 1    | A,A,B,C |
| 2    | A,B     |
+------+---------+

当然也可以对其的分隔符进行修改:

mysql> SELECT id, GROUP_CONCAT(name SEPARATOR ';')
    -> FROM a
    -> GROUP BY id;

这将使分隔符改为" ; "

同样也可以对name列进行排序:

mysql> SELECT id, GROUP_CONCAT(name ORDER BY name DESC) name
    -> FROM a
    -> GROUP BY id;
+------+---------+
| id   | name    |
+------+---------+
| 1    | C,B,A,A |
| 2    | B,A     |
+------+---------+
2 rows in set (0.00 sec)

当然官方还给出了可以通过DISTINCT来排除冗余
用法如下:

mysql> SELECT id, GROUP_CONCAT(DISTINCT name) name
    -> FROM a
    -> GROUP BY id;
+------+-------+
| id   | name  |
+------+-------+
| 1    | A,B,C |
| 2    | A,B   |
+------+-------+
2 rows in set (0.00 sec)

SELECT sid, GROUP_CONCAT(filename SEPARATOR ';')
FROM pictures_copy
GROUP BY sid;

第1行:sid代表主字段名,filename代表要合并的字段名
第2行:pictures_copy代表数据表
第3行:sid代表主字段名

二、2张表合并

UPDATE subject,img  //subject 和 img分别为2张表
SET subject.img = img.img    /共同的img字段
WHERE  
subject.sid = img.sid;    /2个相加

将以下代码添加到配置文件中即可,比如网站路径:root /home/wwwroot/www;下面

if ($scheme = http ) {
    return 301 https://$host$request_uri;
}
    add_header Strict-Transport-Security max-age=15768000;

wordpress自带的链接太过麻烦,4.8以后还得开启,还不如直接写在footer中管理更方便,就是切记不要随意覆盖模板。但加在footer中会有个问题:整站都展示友情链接了,这对于优化和美观都不利。
wordpress有个是否首页的判断,只要判断是首页则显示,不是首页则不显示,就可以完美解决,而且代码量少,把以下代码加在footer中即可:

<?php if ( (is_home() || is_front_page()) && !is_paged() ) { ?>
    <div id='link'><span>友情链接:</span>
<li><a href="#">1111</a></li>
<li><a href="#">2222</a></li>
    </div>
<?php } ?>

css自己改成符合主题的即可,就几行代码。

linux主要用于服务器领域,而在服务器上执行一项服务是永无止境的,除非遇到特殊情况,否则不会关机。和Windows不同,在linux系统下,很多进程是在后台执行的。在屏幕背后,可能有很多人同时在工作。如果直接按下电源的按钮,其他人的数据可能就此中断。更严重的是,若不正常关机,严重的话,可能会造成文件系统损坏,从而导致数据丢失。

      如果要关机,必须保证当前系统中没有其他用户在登录系统。我们可以使用who命令查看是否还有其他人登录,或者使用命令ps -aux查看是否还有后台进程运行。`shutdown,halt,poweroff`都为关机的命令,我们可以使用命令`man shutdown`查看其帮助文档。例如,我们运行如下命令关机。

shutdown -h 10        #计算机将于10分钟后关闭,且会显示在登录用户的当前屏幕中
shutdown -h now       #计算机会立刻关机
shutdown -h 22:22     #计算机会在这个时刻关机
shutdown -r now       #计算机会立刻重启
shutdown -r +10       #计算机会将于10分钟后重启
reboot                #重启
halt                  #关机

在使用wp_head() 函式时,WordPress会自动生成一个多余的.recentcomments样式,没什么用,去掉了代码更简洁!

把这段代码加到主题的functions.php文件中即可:

/移除头部多余.recentcomments样式
function Fanly_remove_recentcomments_style() {
    global $wp_widget_factory;
    remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' ) );
}
add_action( 'widgets_init', 'Fanly_remove_recentcomments_style' );

内容来自泪雪博客