Bootstrap
- 页面的modal元素记得加上
data-backdrop='static'
和data-keyboard='false'
,禁用非 modal 内点击和点击键盘 ESC 键 取消 modal。
JQuery
- 批量删除并返回批量删除的结果时,ajax 方法中 async 一定要配置成 false,否则页面无法正确响应批量删除的结果。
- 使用 qrcodejs 生成二维码图片之后直接使用
$('img').attr('src')
返回的值是undefined,这时需要使用setTimeout(function(), delay_time)
来拿到图片的 src 。 - js数组遍历删除元素的方法:
javascript
for (let i = 0; i < arr.length; i++) {
if (...) {
arr.splice(i, 1);
i--;
}
}
1
2
3
4
5
6
2
3
4
5
6
CSS
- 局部列表滚动查看css,height和max-height二选一。
css
.grid-list {
height: 190px; //固定高度的列表
max-height: 500px; //列表最大高度
overflow-x: hidden;
overflow-y: scroll;
}
.grid-list::-webkit-scrollbar {
display: none;
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- 一个基于网格的响应式布局简单示例:
css
.grid-container {
display: grid;
grid-template-rows: 1fr;
grid-gap: 1rem;
}
@media screen and (max-width: 719px) {
.grid-container {
grid-template-columns: 1fr;
}
}
@media screen and (min-width: 719px) {
.grid-container {
grid-template-columns: 1fr 1fr;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
浏览器窗口宽度大于719px时,元素呈2列排布,反之呈1列排布。
HTML
- 使用原生HTML进行表单开发时,如果没有指定
<button>
的type
属性,则默认type="submit"
,最终导致点击之后window.location.href
的路径中会自动多一个?
,这是因为原生的表单提交是以path后拼接form的参数进行请求的,所以在进行异步请求时需要指定提交的按钮为<button type="button">
。
缓存
- 使用 redis-cli 进入 redis 的命令行模式时,可以使用
keys **
查看所有 key 值,使用get [key]
查看 key 对应的 value 值。需要注意的是,使用keys **
查看到的 key 值如果使用“”
包括,那么get [key]
的 key 也需要用“”
包括起来。
构建
- 使用
**frontend-maven-plugin**
整合前后端项目构建时,需要注意web模块需要放在server模块之前,保证web先构建,这样才能将web构建好的文件复制到server的resources/public
目录下。
xml
<modules>
<module>xxx-web</module>
<module>xxx-server</module>
</modules>
1
2
3
4
2
3
4
同时要注意后台不要对 @RequestMapping("/")
做处理,否则有可能会使得访问 "/"
无法显示前端构建好的index.html页面。.
- maven引用私服的jar包时,需要在
pom.xml
文件的<repositories>
标签下中指定私服的<id>
、<name>
、<url>
。 - gitlab-runner的
config.toml
在[runners.docker]
中配置extra_hosts = ["xxx.xxx.com:172.17.0.1"]
可实现runner容器的ip和host映射关系的配置。 - 设置maven的
setting.xml
中 mirror 节点的mirrorOf
有以下配置策略:- *:everything
- external:*:everything not on the localhost and not file based
- repo,repo1:repo or repo1
- *,!repo1:everything except repo1
部署
- windows 下使用 Nginx 相关命令如下:
bash
#启动
点击 Nginx 目录下的 nginx.exe;cmd 运行 start nginx
#关闭
nginx -s stop #立即停止nginx,不保存相关信息
nginx -s quit #正常退出nginx,并保存相关信息
#重启(重新加载配置)
nginx -s reload
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- nginx 的配置文件 root 路径不识别
\
只识别/
。 - Letsencrypt通配符证书的申请和在nginx配置:
- 使用 nginx 解决 CORS 问题使用反向代理将服务端(接口提供方)与客户端(接口调用方)部署在同一个域下
- 使用 nginx 解决 X-Frame-Options: deny 问题使用headers-more插件,推荐直接下载带headers-more模块的openresty,下载地址。在 nginx.conf 中(一般是在server下)配置:
nginx
# 删除 "X-Frame-Options" header
more_clear_headers 'X-Frame-Options';
# 设置 "X-Frame-Options: SAMEORIGIN" 同域可嵌入iframe
more_set_headers 'X-Frame-Options: SAMEORIGIN';
1
2
3
4
2
3
4
- 指定MySQL时区,在mysqld.conf中增加
default-time-zone='+8:00'
配置。 - 在做微信公众号开发时,需要在公网上调用开发机器的接口,除了使用花生壳等软件进行内网穿透之外,如果有富余的公网服务器资源,可以使用一些简单方便的内网穿透工具,推荐 ichWebpass。
- gitlab pg数据库配置
修改/var/opt/gitlab/postgresql/data/pg_hba.conf
文件,增加下面的配置:
nginx
host all all 192.168.1.10/22 trust
1
上述的修改会在使用gitlab-ctl reconfigure
命令之后失效,通过修改gitlab配置文件中pg数据库的entries可以避免这种情况。具体为: 在gitlab.rb中增加
toml
postgresql['custom_pg_hba_entries'] = {
APPLICATION: [{ # APPLICATION should identify what the settings are used for
type: 'host',
database: 'all',
user: 'all',
cidr: '192.168.1.0/24',
method: 'trust',
#option: 0
}]
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
注意: 这里的APPLICATION
对象是一个数组,有些gitlab版本默认不是数组,需要手动修改。
Git
- GitHub 现在支持创建私有代码仓库了,但使用时需要注意:将 GitHub 的 repository 从 public 切换成 private 再切回 public 之后,需要
push
代码到master
分支才能让已经404的Github Pages
页面恢复正常。
Windows
- 为了在windows系统上安装docker,需要将win10系统升级到专业版开启HyperV虚拟机才行。
win10专业版升级密钥:DR9VN-GF3CR-RCWT2-H7TR8-82QGT
Linux
- Ubuntu/Debian开机启动脚本
spider.sh
示例:
bash
#!/bin/bash
### BEGIN INIT INFO
# Provides: spider
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: spider
# Description: spider service start
### END INIT INFO
[shell content]
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
- 开机启动:
update-rc.d spider.sh defaults
- 移除开机启动:
update-rc.d spider.sh remove
- 使用netstat查看系统网络端口情况:
netstat -tunlp
;如果发现没有PID
(进程号),需要使用sudo netstat -tunlp
。 - 对于新安装的官方Ubuntu-server等系统,可以通过指令
sudo apt-get install build-essential
安装gcc环境。 - 取消sudo密码:
sudo visudo
进入编辑界面;添加行username ALL=(ALL) NOPASSWD:ALL
,username为登录用户名,如果想作用于某个用户组则使用%usergroup ALL=(ALL:ALL) NOPASSWD:ALL
。 - linux系统添加ssh公钥的方式:
- 本地
bash
# 覆盖
cat [ssh_pub_key] > ~/.ssh/authorized_keys
# 追加
cat [ssh_pub_key] >> ~/.ssh/authorized_keys
1
2
3
4
5
2
3
4
5
- 远程
bash
scp ~/.ssh/id_rsa.pub root@[remote-server-ip]:/root/.ssh/authorized_keys
1
注: 需要输入远程服务器的登录密码进行认证。
ssh对目录的权限有要求,具体如下: | 目录/文件 | 权限 | | --- | --- | | ~/.ssh | 700 | | ~/.ssh/* | 600 | | ~/.ssh/config | 700 |
在终端中执行
curl -X GET http://www.sample.com/api?a=1&b=2
指令时,实际上只会传入a=1
参数,想要同时传入a=1
和b=2
,可使用以下两种方式:&
符号转义:curl -X GET http://www.sample.com/api?a=1\&b=2
- url加上双引号:
curl -X GET "http://www.sample.com/api?a=1&b=2"
当linux服务器重置之后,通过ssh再次访问时可能出现以下信息:
bash
ECDSA host key for xxx.xxx.xxx.xxx has changed and you have requested strict checking.
Host key verification failed.
1
2
2
简单的说就是服务器的Host key发生了变更,进行ssh访问时验证失败,通过以下命令可以进行修复:
bash
ssh-keygen -R xxx.xxx.xxx.xxx
1
其中的xxx.xxx.xxx.xxx为服务器ip。
Docker
- 使用docker-compose的build参数构建docker镜像时,要注意指定的context目录下默认的Dockerfile文件名必须为
Dockerfile
。如果想使用其他文件名,可以通过-f filename
指定。 - docker环境为docker for windows,有效避免host为windows系统时
docker run -v
绑定的目录映射关系在系统重启之后失效的方法为:使用docker volume create path1
创建volume,再使用-v path1:/container/path
。简单地说就是使用 “自定义数据卷” 代替 “容器自动创建的临时数据卷” 进行映射,完成docker容器的数据持久化。 - 指定docker的dns,防止网络环境变化时导致容器网络的不稳定。 编辑docker的
daemon.json
:
json
{
"dns": ["114.114.114.114", "8.8.8.8"]
}
1
2
3
2
3
- 使用docker-compose来部署redash时,注意需要先创建redash数据库才能启动:
bash
sudo docker-compose run --rm server create_db
sudo docker-compose up -d
1
2
2
- 使用docker方式部署consul时,由于consul在docker虚拟网络中无法正确识别注册服务的hostname,因此需要在注册服务中配置 spring.cloud.consul.discovery.hostname=192.168.1.xxx (注册服务的局域网ip,要注意的是必须是docker宿主机所在地局域网ip,使用172.17.0.1等docker内网ip也不行),才能确保consul正确地进行健康检查。
评论区留言准则:
1. 本评论区禁止传播封建迷信、吸烟酗酒、低俗色情、赌博诈骗等任何违法违规内容。
2. 当他人以不正当方式诱导打赏、私下交易,请谨慎判断,以防人身财产损失。
3. 请勿轻信各类招聘征婚、代练代抽、私下交易、购买礼包码、游戏币等广告信息,谨防网络诈骗。