一个没有技术只会增删改查的后端
Vue-i18n实现应用多语言切换

安装 i18n 模块

1
npm install vue-i18n --save

在src下创建lang目录及对应语言目录

配置src/lang/index.js

申请Let‘s Encrypt永久免费SSL证书

什么是Let’s Encrypt

Let’s Encrypt 是一家免费、开放、自动化的证书颁发机构(CA),为公众的利益而运行。它是一项由 Internet Security Research Group(ISRG)提供的服务。我们以尽可能对用户友好的方式免费提供为网站启用 HTTPS(SSL/TLS)所需的数字证书。这是因为我们想要创建一个更安全,更尊重隐私的 Web 环境。

安装certbot

  1. 安装snapd,参考:snapcraft.io

  2. 更新snapd为最新版本

    1
    sudo snap install core; sudo snap refresh core
  3. 删除之前可能安装的历史版本

    1
    2
    3
    4
    5
    6
    7
    8
    # ubuntu
    sudo apt-get remove certbot

    # centos 8
    sudo dnf remove certbot

    # centos 7
    sudo yum remove certbot
  4. 安装snapd

    1
    2
    3
    sudo snap install --classic certbot

    sudo ln -s /snap/bin/certbot /usr/bin/certbot
  5. 安装snapd阿里云dns插件

    1
    2
    3
    4
    5
    sudo snap install certbot-dns-aliyun
    sudo snap set certbot trust-plugin-with-root=ok
    sudo snap connect certbot:plugin certbot-dns-aliyun
    # 检查是否安装成功
    certbot plugins

获取证书(不使用阿里dns插件)

JAVA调用SAP WebService

使用 wsimport 生成java代码

命令参数说明:
-d:生成客户端执行类的class文件的存放目录
-s:生成客户端执行类的源文件的存放目录
-p:定义生成类的包名
-verbose:输出有关编译器正在执行的操作的消息
–Xauthfile:指定身份认证文件
其他命令参数请参照:http://docs.oracle.com/javase/6/docs/technotes/tools/share/wsimport.html

Xauthfile说明:

1
http[s]://user:password@host:port//<url-path>

命令示例:

MySQL中索引失效的常见场景与规避方法

前言

之前有看过许多类似的文章内容,提到过一些sql语句的使用不当会导致MySQL的索引失效。还有一些MySQL“军规”或者规范写明了某些sql不能这么写,否则索引失效。
绝大部分的内容笔者是认可的,不过部分举例中笔者认为用词太绝对了,并没有说明其中的原由,很多人不知道为什么。所以笔者绝对再整理一遍MySQL中索引失效的常见场景,并分析其中的原由供大家参考。
当然请记住,explain是一个好习惯!

MySQL索引失效的常见场景

在验证下面的场景时,请准备足够多的数据量,因为数据量少时,MySQL的优化器有时会判定全表扫描无伤大雅,就不会命中索引了。

1. where语句中包含or时,可能会导致索引失效

MobaXterm密码获取(MobaXterm密码导出)

工具下载

  1. 运行环境python3

python官网

  1. 依赖库
1
pip install pycryptodome
Centos环境下Nginx安装Modsecurity作为Web应用防火墙(包含安装,配置OWASP规则,配置DDOS,配置基于声誉的IP黑名单拦截,白名单设置)

Modsecurity 简介

ModSecurity是由Trustwave的SpiderLabs开发的开源、跨平台Web应用程序防火墙(WAF)。它具有强大的基于事件的规则语言,可针对Web应用程序提供一系列的攻击保护,并允许HTTP流量监控,日志记录和实时分析。ModSecurity 在全球拥有超过 10,000 个部署,是现存部署最广泛的 WAF。

Modsecurity 安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 安装epel源
yum install epel-release

# 安装依赖
yum install gcc-c++ flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel pcre-devel bison

cd /opt/
# 克隆代码
git clone https://github.com/SpiderLabs/ModSecurity.git

# 切换分支,虽然是默认分支,但还是执行一下这个命令确保万无一失
git checkout -b v3/master origin/v3/master

sh build.sh
git submodule init
git submodule update
./configure
# 编译
make
# 安装
make install

编译安装nginx module

Drone 部署 Hexo blog

环境

目前的环境是hexo+docker+drone

Drone CI/CD 安装

package.json明细

1
2
3
4
5
6
"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"server": "hexo server"
},
Docker 安装

卸载旧版docker

1
sudo apt-get remove docker docker-engine docker.io containerd runc

设置存储库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo apt-get update

sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装docker

Drone CI/CD 安装

安装 Drone(github,其他参考官网)

  1. 创建OAuth程序,并通过keySecret授权访问github资源。

请参考下面的格式填写Authorization callback URL

数据库中char、varchar、nchar、nvarchar的区别

我们在进行数据库的设计的时候,很多情况下表中的字段都是用的是字符串类型的数据,其中就有四种选择char,varchar,nchar,nvarchar,我们该如何选择?

四种类型的详细说明

  1. char:固定长度,非Unicode字符数据(对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节)。

    用来存储定长数据,长度为n个字节,n的取值范围为1至8,000,存储大小是n个字节。

  2. varchar:可变长度,非Unicode字符数据(对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节)。

    用来存储变长数据,长度为n的字节,n的取值范围为1至8,000,max指示最大存储大小是2^31-1个字节,存储大小是输入数据的实际长度加2个字节,所输入数据的长度可以为0个字符。

  3. nchar:固定长度,Unicode字符数据。

    n个字符,n值必须在1到4,000之间(含)。存储大小为两倍n字节。

  4. nvarchar:可变长度,Unicode字符数据。

    n个字符,n值在1到4,000之间(含)。max指示最大存储大小为2^31-1字节,存储大小是所输入字符个数的两倍+2个字节,所输入数据的长度可以为0个字符。

Unicode或非Unicode的区别

  1. 非Unicode:charvarchar

  2. Unicode:ncharnvarchar

    数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储,如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码。

    Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。而前缀n就表示Unicode字符,比如nchar,nvarchar,这两种类型使用了Unicode字符集。