koala-coding / day-day-up

每天进步一点点,记录每天在公司的一个小收获,一年后你回顾肯定收获了很多,哪怕是你知道了一个新函数,甚至一个新单词都可以。也算是一个个人成长秘籍吧
Apache License 2.0
9 stars 0 forks source link

2019年12月20日你要记录点什么? #15

Open weblixin opened 4 years ago

weblixin commented 4 years ago

服务器mysql安装

1、下载安装包, 并解压 /usr/local/src

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

2、将解压后的文件夹移动到 /usr/local/mysql-5.7.26

mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local
cd ../
mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql-5.7.26

3、创建组和用户

groupadd mysql
useradd -r -g mysql mysql

4、创建mysql数据目录

cd /
mkdir -p data
cd data/
mkdir -p mysql

5、赋予权限

chown mysql:mysql -R /data/mysql

6、配置参数

vim /etc/my.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql-5.7.26
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0

7、初始化mysql

cd /usr/local/mysql-5.7.26/bin/
 ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql-5.7.26/ --datadir=/data/mysql/ --user=mysql --initialize

8、添加权限,开启自启

cp ./support-files/mysql.server /etc/init.d/mysqld
chown 777 /etc/my.cnf 
chmod +x /etc/init.d/mysqld

9、查看初始密码并复制

vim /data/mysql/mysql.err

root@localhost:后边的就是密码

10、启动mysql,并修改密码

service mysqld start
cd /usr/local/mysql-5.7.26/bin
./mysql -u root -p

回车,输入密码

mysql> set password=password('admin');

11、退出,停止mysql服务

mysql > quit
service mysqld stop
592837154 commented 4 years ago

😂婴儿架构:前端用fetch发post/get请求,后端用koa2起服务,pm2守护进程,nginx做静态服务器

数据接口:开发环境proxy代理,生产环境nginx转发

😂前端

"proxy": "http://localhost:2019",

😂婴儿期fetch

fetch(
  '/first'
)
  .then((res) => res.json())
  .then(({ data }) => {
    setData(data);
  }).catch((err) => {
    console.log(err);
  });

fetch('/first', {
  method: 'POST',
  body: 'a=post请求!&b=asd',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  }
}).then(res => res.json()).then(((res) => {
  setData(res.a);
})).catch(err => {
  console.log(err);
});

😂婴儿期koa2

const Koa = require('koa');
const app = new Koa();
const poit = 2019;

app.use(async (ctx) => {
if (ctx.method === 'GET') {
    if (ctx.url === '/first') {
        ctx.body = { data: 'get请求!' }
    }
    return;
}
if (ctx.method === 'POST') {
    if (ctx.url === '/first') {
        let postData = await parsePostDate(ctx)
        ctx.body = postData
    }
    return;
}
ctx.body = '<h2>404</h2>'
})

const parsePostDate = (ctx) => {
return new Promise((resolve, reject) => {
    try {
        let postData = ""
        ctx.req.on('data', (data) => {
            postData += data
        })
        ctx.req.addListener("end", function () {
            let parseData = parseQueryStr(postData)
            resolve(parseData)
        })
    } catch (error) {
        reject(error)
    }
})
}

const parseQueryStr = (queryStr) => {
const queryData = {}
const queryStrList = queryStr.split('&')
for (let [index, queryStr] of queryStrList.entries()) {
    let itemList = queryStr.split('=')
    queryData[itemList[0]] = decodeURIComponent(itemList[1])
}
return queryData
}
app.listen(poit, () => {
console.log(`在${poit}端口启动`);
});

😂婴儿期pm2

pm2 start  index.js

😂婴儿期nginx

location / {
      root /usr/share/nginx/build/;
    index index.html index.htm;
    if (!-e $request_filename) {
                proxy_pass http://127.0.0.1:2019;
            }
}

下一周:

  1. linux:nginx负载均衡,压测,完善shell脚本,跑通ci/cd
  2. koa2连数据库,打log日志,jwt,实现增删改查
  3. 前端页面实现增删改查功能,安装less语言(一直没装)
koala-coding commented 4 years ago

有个问题需要用到判断二进制中1的个数

复习了一下JavaScript中的逻辑运算符

逻辑运算符用于连接布尔型表达式。在Java中不同于数学的逻辑表达 3<X<5 ,java 中应该写成 x>3 & x<5

几个运算符的区别

判断二进制中1的个数(使用逻辑运算符)

 function NumberOf(n){
     if(n===0) return 0;
     let count = 0;
     for(let i=0; i<32 ; i++){ //右移并与1进行&运算
         if((n>>>i & i)===1){
             count ++;
         }
     }
     return count;
 }

发现了一个不错的复习数据结构的网站

http://wiki.jikexueyuan.com/project/easy-learn-algorithm/stack.html