fix: 修改bug

This commit is contained in:
haishan 2021-10-21 15:22:41 +08:00
parent 41459c4819
commit 83e7ea9f59
5 changed files with 899 additions and 0 deletions

310
docs/fea/css/intro.md Normal file
View File

@ -0,0 +1,310 @@
---
nav:
title: 前端
path: /fea
group:
title: 💊 css
order: 1
path: /css
---
# 基础介绍
## 布局
### 绝对定位法
> 左右两栏采用绝对定位中间的由两边的margin撑开
```html
<body>
<div id="main"></div>
<div id="left"></div>
<div id="right"></div>
</body>
#main {
margin:0 200px;
background:red;
}
#left{
position:absolute;
top:0;left:0;
width:200px;
background:blue;
height:100%;
}
#right{
position:absolute;
top:0;right:0;
width:200px;
background:green;
height:100%;
}
```
这种布局缺点是,当缩放到一定大小的时候,会出现重叠现象
### 自身浮动法
> 左栏左浮动,右栏右浮动,中间栏放最后
```html
<body>
<div id="left"></div>
<div id="right"></div>
<div id="main"></div>
</body> 
#main {margin:0 200px;background:red;}
#left{float:left;width:200px;background:blue;height:100%;}
#right{float:right;width:200px;background:green;height:100%;}
```
简单而高效,代码还容易理解,适合初学者
### 圣杯布局
```html
//注意元素次序
<div class="main">Main</div>
<div class="left">Left</div>
<div class="right">Right</div>
//习惯性的CSS reset
body,html{
height:100%;
padding: 0;
margin: 0
}
//父元素body空出左右栏位
body {
padding-left: 100px;
padding-right: 200px;
}
//左边元素更改
.left {
background: red;
width: 100px;
float: left;
margin-left: -100%;
position: relative;
left: -100px;
height: 100%;
}
//中间部分
.main {
background: blue;
width: 100%;
height: 100%;
float: left;
}
//右边元素定义
.right {
background: red;
width: 200px;
height: 100%;
float: left;
margin-left: -200px;
position: relative;
right: -200px;
}
```
稍微难理解一点,不过这种布局目前我觉得是适配性比其他两种要好的布局方式,缺点是后期维护性不高
### 双飞翼布局
```html
div class="main">
<div class="inner">
Main
</div>
</div>
<div class="left">Left</div>
<div class="right">Right</div>
```
> css样式就是将body上的左右margin值去掉加在新增的 div 中
这种布局方式为淘宝 UED 提出,目前最好用的一种布局方式,相比较圣杯布局,去掉了相对布局,代码更简洁
小记:前两天面试,展现项目过程中经理问我轮播图的原理,我一脸懵逼,因为当时有现成的插件,所以我没怎么去研究,当然,我也知道该来的还是要来的...
首先我大概讲一下,传统轮播图的主要部分:
- 图片(废话)
- 左右两边的button
- 可以跳转的小点
## 轮播图
- 轮播图的原理就是一个长图里面有很多张图外面包一层展示窗口将属性设置成overflowhidden达到只显示一张的效果当点击左右两边的按钮时会按照像素来跳转
### 无限滚动
- 我给两个按钮设为 **prev next** 一个在点击后,长图会增加一张图的宽度,一个是减少一个图的宽度,在图片的头和尾部加一张图,结构大概为:
```html
<div id="list" style="left:-200px">
<img src="./img/5.jpg" alt="">
<img src="./img/1.jpg" alt="">
<img src="./img/2.jpg" alt="">
<img src="./img/3.jpg" alt="">
<img src="./img/4.jpg" alt="">
<img src="./img/5.jpg" alt="">
<img src="./img/1.jpg" alt="">
</div>
```
当是最后一张图或第一张图时,将第一张上一张跳转为最后一张时的宽,最后一张跳转为第一张时的宽
```javascript
if (newList < -1000) {
dot = 1
list.style.left = -200 + 'px'
}
if (newList > -200) {
dot = 5
list.style.left = -1000 + 'px'
}
```
### 小按钮切换
这要实现的思想有
- 点了小按钮,背景色会变
- 当点击切换到其他按钮,图片切换,且上一个按钮会变回原来的颜色
```javascript
function showBtn() {
for (var i = 0; i < btns.length; i++) {
if (btns[i].className == 'show-btn') {
btns[i].className = ''
break
}
}
btns[dot-1].className = 'show-btn'
}
//遍历数组,将有该属性设为空
for (var i = 0; i < btns.length; i++) {
btns[i].onclick = function () {
if (this.className == 'showBtn') {
return
}
var myIndex = parseInt(this.getAttribute('index'))
var leng = -200 * (myIndex - dot)
animate(leng)
dot = myIndex
showBtn()
}
}
//遍历数组将每一个小按钮设了个index属性这里用到 getAttribute 可以获取除了普通style 或 class 之外的一些属性获取index值点击时得到当前的index值正好和当前的dot值相减可得跳转的距离
```
> 这里要注意的是当小按钮被重复按的时候给他一个判断不然重复点击同一个图标会重复发生相同事件占内存耗cpu
### 延迟动画函数
就是当用户点击时,有一个慢慢偏移的过程,而不是闪现的动作,我们来看看实现原理
- 首先,定义参数
```javascript
var time = 300 //位移总时间
var interval = 10 //位移时间间隔
var speed = leng/(time/interval) //每次位移量,就是一共调用多少次的意思
```
- 设置递归函数
```javascript
if ((speed < 0 && parseInt(list.style.left) > newList) || (speed > 0 && parseInt(list.style.left) < newList)) {
list.style.left = parseInt(list.style.left) + speed + 'px'
setTimeout(go, interval) //递归,调用自身函数
```
- 判断是否仍在动画
如果用户一直在点击切换图时,如果电脑配置不好,或是其他一些因素,可能会轮播卡顿,为了防止这一现象,就用一个判断来看上一次动画是否完成,若未完成就不能继续切换,等到这次动画跳转完为止
```javascript
var animated = false //设初值
if(!animated) {
animate(200)
} //如果为false则继续动画
```
### 自动播放
首先给个思路,当鼠标移入的时候,自动播放停止,移出的时候开始自动播放
- 我们设两个函数play 和 stop
```javascript
function play() {
timer = setTimeout(function() {
next.onclick()
play()
},interval)
}
function stop() {
clearTimeout(timer)
}
```
最后给整个 container 容器添加该鼠标事件

65
docs/fea/node/intro.md Normal file
View File

@ -0,0 +1,65 @@
---
nav:
title: 前端
path: /fea
group:
title: 💊 node
order: 4
path: /node
---
# 💊 node
## 安装
### 方法1
#### 拉取nvm
- wget -qO- [https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh](https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh) | bash
#### 安装nvm
```javascript
// 打开bash
source ~/.bash_profile
// 写入 node文件指向
export NODE_HOME=/usr/local/tool/nodejs/node
export PATH=$NODE_HOME/bin:$PATH
```
- nvm install node版本号or nvm install stable
- 方案2
- curl --silent --location [https://rpm.nodesource.com/setup_11.x](https://rpm.nodesource.com/setup_11.x)| sudo bash -
### 方法2
1. 第一步
```
wget https://npm.taobao.org/mirrors/node/v12.16.1/node-v12.16.1-linux-x64.tar.gz
```
2. 第二步
```
tar -xvf node-v12.16.1-linux-x64.tar.gz
yum install gcc gcc-c++
```
3. 第三步
```
mv node-v12.16.1-linux-x64.tar.gz node
```
4. 第四步
```
ln -s /usr/local/bin/node/bin/node /usr/bin/node
ln -s /usr/local/bin/node/bin/npm /usr/bin/npm
ln -s /usr/local/bin/node/bin/npx /usr/bin/npx
```
### 安装 GIT
- curl [https://setup.ius.io](https://setup.ius.io) | sh
- yum install -y git2u
- git --version

230
docs/tools/centOS.md Normal file
View File

@ -0,0 +1,230 @@
---
nav:
title: 工具
path: /tools
group:
title: 💊 终端命令
order: 4
path: /centos
---
# 💊 终端命令
## 常用命令
### 如何连接阿里云ECS
- ssh root@example.com
### 删除进程
- sudo kill 9 ID
### 关闭端口
- firewall-cmd --zone=public --remove-port=3000/tcp --permanent
### 用 tree 结构化展示列表
- brew install tree
- 忽略某些文件夹
- tree -I '*svn|*node_module*' -d
### 查看端口进程
- lsof -i tcp:8080 
- 杀掉kill -9 pid
## 用户权限
### 查看位置
- whereis sudoers
### 查看权限
- ls -l /etc/sudoers
### 添加权限
- chmod -v u+w /etc/sudoers
### 修改用户权限
- vim /etc/sudoers
### 加上和 root 相同的 ALL权限
- root ALL=(ALL) ALL
### 收回权限
- chmod -v u-w /etc/sudoers
### 创建用户
- useradd {用户名}
### 创建用户密码
- passwd {用户名}
## 密码登录
- sudo cat /etc/passwd
### sudo权限配置
- ① 到文件夹 /etc/sudoers 执行 visudo
- ② 修改 {用户名} ALL=(ALL) NOPASSWD:ALL
## 查看电脑配置
### 物理CPU个数。
```javascript
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
```
### 每个物理CPU中core的个数即CPU核数
```javascript
cat /proc/cpuinfo| grep "cpu cores"| uniq
```
### 逻辑CPU的个数
> cat /proc/cpuinfo| grep "processor"| wc -l
### CPU型号
> cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
### 内存信息
> cat /proc/meminfo
### 查看所有进程
> ps aux
### 查看所有已开启进程
```javascript
systemctl list-unit-files | grep enable
关闭进程
sudo systemctl stop {serverName}
```
### 查看进程端口
> ps -ef | grep jenkins
### 列出所有端口
> netstat -ntlp
## 软件安装
### ruby
> - yum install ruby
### homebrew
#### 第一步创建brew文件夹
- sudo mkdir /usr/local/Homebrew
#### 第二步:克隆 brew 源
- sudo git clone [https://mirrors.ustc.edu.cn/brew.git](https://mirrors.ustc.edu.cn/brew.git)/usr/local/Homebrew
#### 第三步:创建一个快捷方式到/usr/local/bin目录
- sudo ln -s /usr/local/Homebrew/bin/brew /usr/local/bin/brew
#### 第四步创建core文件夹 并 克隆(两句话分开运行)
- sudo mkdir -p /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
- sudo git clone [https://mirrors.ustc.edu.cn/homebrew-core.git](https://mirrors.ustc.edu.cn/homebrew-core.git)/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
#### 第五步:获取权限 运行更新(两句话分开运行)
- sudo chown -R $(whoami) /usr/local/Homebrew
- brew update
#### 最后:设置环境变量
- echo 'export HOMEBREW_BOTTLE_DOMAIN=[https://mirrors.ustc.edu.cn/homebrew-bottles'](https://mirrors.ustc.edu.cn/homebrew-bottles') >> ~/.zshrcecho '
- export HOMEBREW_BOTTLE_DOMAIN=[https://mirrors.ustc.edu.cn/homebrew-bottles'](https://mirrors.ustc.edu.cn/homebrew-bottles') >> ~/.bash_profile
### 文件上传下载工具
```
yum install lrzsz -y
<!-- 上传: rz -->
<!-- 下载:sz 文件名 -->
```
### 解压软件
```
yum install -y unzip zip
使用unzip 文件名
```
## Q&A
### 如何免密登录
#### 第一步:查看本机是否有 id_rsa.pub 文件
```javascript
cat ~/.ssh/id_rsa.pub
```
如果输出为空,就在下一步创建一下
#### 第二步:创建 id_rsa.pub 文件
如果本机已经存在该文件,就直接跳到第三步
##### 1. 先登录 git 账号
```javascript
git config --globaluser.name "j710328466"
git config --global user.email "710328466@qq.com"
```
##### 2. 生成 ssh 相关文件
```javascript
ssh-keygen -t rsa -C "710328466@qq.com"
```
#### 第三步:授权到远端 Ecs
##### 复制本地端的 id_rsa.pub
注意应该是以 ssh-rsa 开头到 XXXXX.XXXXX.XXXX 结束的一段,这个可能是个会导致错误的点,建议如果你登录失败的时候可以回来看看这边是不是错了
##### 登录远程Ecs创建 authorized_keys 文件
在 .ssh 文件夹下创建 authorized_keys 文件,并将之前复制的 id_rsa.pub 内容粘贴进去
```javascript
# 参考代码
cd ~/.ssh
touch authorized_keys
vim authorized_keys
```
##### 更改授权 (可选)
```javascript
# 设置所有人可以读写及执行
chmod 777 ~/.ssh
# 设置拥有者可读写
chmod 600 ~/.ssh/authorized_keys
```
> 这一步按自己的需要来设置
#### 最后:就可以免密登录啦~
现在打开本机的终端terminalzsh 输入下面的代码就可以实现免密登录啦
```javascript
ssh ${用户名}@${ip地址 或者 域名}
```
### Unable to lock the administration directory
```js
- apt-get update
- apt-get upgrade
- apt-get dist-upgrade
- alexander@alexander-virtual-machine:~$ sudo apt-get install -y httpd
- E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
- E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
- 解决方案:
- 其实这是因为有另外一个程序在运行,导致锁不可用。原因可能是上次运行更新或安装没有正常完成。解决办法是杀死此进程
- sudo rm /var/cache/apt/archives/lock
- sudo rm /var/lib/dpkg/lock
- 但是这样不能解决问题:可能还会出现问题,解决方案:
- 1,sudo dpkg --configure -a
- 2,sudo apt-get update
```

194
docs/tools/nginx.md Normal file
View File

@ -0,0 +1,194 @@
---
nav:
title: 工具
path: /tools
group:
title: 💊 nginx
order: 1
path: /nginx
---
# 💊 nginx
## 安装
### 环境确认
#### 确认网络
- ping [www.baidu.com](http://www.baidu.com)
#### 确认 yum 源是否可用
- yun list|grep gcc
#### 关闭 iptables 规则
- iptables -L 查看
- iptables -F 关闭
- iptables -t nat -L
#### 关闭 getenforce
- setenforce 0
### 新建文件目录
```
- backup 备份
- app 源文件
- logs 日志
- work 脚本
- download 下载资源
```
### 安装编译工具和库
```js
// 1
wget [http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz](http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz)
// 2
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
```
### centos 快速安装
- yum install nginx -y
## 常用命令
### 查看 nginx 配置文件路径和安装路径
> nginx -t
### 重启
> nginx -s reload
### 杀掉
> killall -9 nginx
### 初始目录
> /usr/share/nginx/html
### 配置文件
```
// /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
upstream nodetest {
server 127.0.0.1:3000;
}
upstream mongo_backend {
server 127.0.0.1:27017;
}
server {
listen 80;
server_name nicecoders.github.io github.io;
root /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 80;
server_name j710328466.github.io;
location / {
# add_header Access-Control-Allow-Origin *;
# add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
# add_header Access-Control-Allow-Headers *;
# 反向代理到 3000 端口
#proxy_pass http://nodetest;
proxy_pass http://0.0.0.0:3000;
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name nicecoders.github.io;
include /etc/nginx/default.d/*.conf;
location / {
# 反向代理到 3100 端口
proxy_pass http://0.0.0.0:3688;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
```
## Q&A
### 1. forbedden 403
> chmod -R 777 /data
> chmod -R 777 /data/www
```javascript
还不行的话尝试关闭 selinux
vi /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled
```

100
docs/tools/vscode.md Normal file
View File

@ -0,0 +1,100 @@
---
nav:
title: 工具
path: /tools
group:
title: 💊 vscode
order: 9
path: /vscode
---
# 💊 vscode
## 插件推荐
### auto-Open Markdown
markdown 预览插件
### beautify
让代码更符合规范
### Bracket Pair Colorizer
括号上色插件,神器推荐
### vscode-ext-color-highlight
颜色上色插件
### color-picker
取色插件
### cssrem
rem转换工具,移动端开发可以安装
### Debugger for Chrome
debugger插件正在学怎么用
### ESlint
代码规范插件
### file-icons
图标插件
### git History
查看历史修改记录插件
### hopscotch
可爱的代码颜色风格
### html css support
应该改支持代码提示插件吧
### markdownlint
markdown 语法提示插件
### path autocomplete
路径补全插件
### react native tools
暂时没用上
### react-native
也没用上
### settings sync
插件备份工具,同步用的,神器
### background
一款美化插件配置如下:
```
"background.useDefault": false,
"background.enabled": true,
"background.customImages": [
"file:///Users/mac/Desktop/improve/1.jpg"
],
"background.style": {
"opacity": 0.1,
"width": "1600px",
"height": "1150px"
}
```
ps: 有的时候超级超级吃 CPU好像有点bug 慎用!!