MySql按字母升降序排序
SELECT field1 FROM tab ORDER BY REGEXP '^[a-z]' DESC; -- 按字母升序
SELECT field1 FROM tab ORDER BY REGEXP '^[a-z]' ASC; -- 按字母降序
MySql按字母升降序排序
SELECT field1 FROM tab ORDER BY REGEXP '^[a-z]' DESC; -- 按字母升序
SELECT field1 FROM tab ORDER BY REGEXP '^[a-z]' ASC; -- 按字母降序
比如 server 表有许多 server 信息, 其中 server_name 为 M1, M2, A2 这样, 希望优先按照 字母排序,然后按照后面的数字排序,实现方法如下:
SELECT * FROM server ORDER BY LEFT(server_name,1) desc, MID(server_name,2)+0; 实际效果为先按该字段server_name第一个字符排序a-z,再按后面的数字进行排序.
不同的操作系统,不同的http服务器,所使用的安装方式会有所不同,详情请参考 https://certbot.eff.org/
生成证书,有两种模式,standalone模式和webroot模式, standalone 模式虽然可以配置好服务器,但是以后 Renew 的时候,需要让服务停止一下,再启动。因此推荐使用 Webroot 配置模式。
因为,CertBot在验证服务器域名的时候,会生成一个随机文件,然后CertBot的服务器会通过HTTP访问你的这个文件,因此要确保你的Nginx配置好,以便可以访问到这个文件。
改你的服务器配置,在server模块添加:
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /usr/share/nginx/html;
}
location = /.well-known/acme-challenge/ {
return 404;
}
接着重新加载Nginx配置:
sudo service nginx reload
然后在命令行输入:
sudo certbot certonly --webroot -w /usr/share/nginx/html/ -d your.domain.com
该命令成功执行之后,会在 /etc/letsencrypt 目录下生成证书相关文件。
这里仅给出最简单的例子, 更加详尽的配置和 letsencrypt 无关,而主要是和如何配置 https 相关
server {
listen 443 ssl;
listen [::]:443 ssl ipv6only=on;
ssl_certificate /etc/letsencrypt/live/your.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/your.domain.com/chain.pem;
// ... other settings ...
}
详细例子请参考: https://letsecure.me/secure-web-deployment-with-lets-encrypt-and-nginx/
先在命令行模拟证书更新:
sudo certbot renew --dry-run
既然模拟成功,我们就使用crontab -e的命令来启用自动任务,命令行:
sudo crontab -e
添加配置:
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
上面的执行时间为:每周一半夜2点30分执行renew任务。
你可以在命令行执行/usr/bin/certbot renew >> /var/log/le-renew.log看看是否执行正常,如果一切OK,那么我们的配置到此结束!
WARNING:letsencrypt.client:Registering without email!
此时使用如下命令:
letsencrypt renew --dry-run -m YOURMAIL --agree-tos
有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前Shell中获取字符串的长度的多种方法,在这里分享给大家,方法如下:
方法1: 使用wc -L命令
wc -L可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取,另外wc -l则是获取当前字符串内容的行数。
echo "abc" |wc -L
方法2: expr length string
使用expr length可以获取string的长度
len=`expr length $str`
方法3: awk获取域的个数,但是如果大于10个字符的长度时是否存在问题需要后面确认
echo "abc" |awk -F "" '{print NF}'
方法4: 通过awk+length的方式获取字符串长度
echo “Alex”|awk '{print length($0)}'
方法5: 通过echo ${#string}的方式(注意:这里的string是该字符串的变量名)
name=Alex
echo ${#name}
shell中应该还有其它获取字符串长度的方法,请大家有知道其它方式的回复补充下,有存在问题的地方大家指正!
update products p INNER JOIN
(select oi.pid, count(oi.qty) as sales from orders_items oi
INNER JOIN orders o on o.oid = oi.oid where o.status_payment = 1 GROUP BY oi.pid
) as t
on p.pid = t.pid
set p.sales = t.sales;