MySQL 创建数据库

我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下:

1
CREATE DATABASE 数据库名;

以下命令简单的演示了创建数据库的过程,数据名为 SXT:

1
2
3
4
[root@host]# mysql -u root -p
Enter password:****** # 登录后进入终端

mysql> create DATABASE SXT;
阅读全文 »

setState 更新状态的 2 种写法

setState(stateChange, [callback])

对象式的 setState

  1. stateChange 为状态改变对象(该对象可以体现出状态的更改)
  2. callback 是可选的回调函数, 它在状态更新完毕、界面也更新后(render 调用后)才被调用

setState(updater, [callback])

阅读全文 »

interface 与 class 的区别

typescript 有接口的概念,这个接口和类有什么关系吗?
interface: 接口只声明成员方法,不做实现。
class: 类声明并实现方法

  1. interface 只是定义了这个接口会有什么,但是没有告诉你具体是什么。
1
2
3
4
5
interface Point {
lng: number;
lat: number;
sayPosition(): void;
}

注意:Point interface 中包含数值类型的经纬度和一个 sayPosition 函数,但是具体内容没有定义,需要你自己在子类中实现

阅读全文 »

本文以活动状态为例介绍 ts 中的枚举类型

js 定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const statusObj = {
unplayed: 0,
underway: 1,
end: 2
};

function getServe(status) {
if (status === statusObj.unplayed) {
return "未开始";
} else if (status === statusObj.underway) {
return "进行中";
} else if (status === statusObj.end) {
return "已结束";
}
}

const resultJs = getServe(0);
console.log(`当前活动状态为${resultJs}`);

ts 枚举

枚举中默认值为下标,即 index 值,从 0 开始

阅读全文 »

泛型的定义

泛型:软件工程中,我们不仅要创建一致的定义良好的 API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。
在像 C#和 Java 这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。
通俗理解:泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验)

只能返回 string 类型的数据

1
2
3
function getData(value: string): string {
return value;
}

同时返回 string 类型 和 number 类型 (代码冗余)

阅读全文 »

本节介绍 ts 中的联合类型和类型保护的几种方法

1
2
3
4
5
6
7
8
9
10
11
12
13
interface CustomModel {
goods: boolean;
name: string;
age: number;
buy: () => {};
}

interface MerchantModel {
goods: boolean;
name: string;
age: number;
sell: () => {};
}

as 断言

1
2
3
4
5
6
7
function judgePeopleAs(people: CustomModel | MerchantModel) {
if (people.goods) {
(people as MerchantModel).sell();
} else {
(people as CustomModel).buy();
}
}

in 断言

阅读全文 »

toFixed()方法的坑
javascript 中 toFixed 使用的是银行家舍入规则

银行家舍入:所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法

简单来说就是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。

但是不论引入 toFixed 解决浮点数计算精度缺失的问题也好,它有没有使用银行家舍入法也罢,都是为了解决精度的问题,但是又离不开二进制浮点数的环境,但至少他帮助我们找到了问题所在,从而让我们有解决方法。

四舍五入并不是真正的四舍五入

阅读全文 »

介绍

Egg.js 官网

Egg.js 是《阿里旗下产品》基于 Node.js 和 Koa 是一个 Nodejs 的企业级应用开发框架。 可以帮助发团队和开发人员降低开发和维护成本。
Express 和 Koa 是 Node.js 社区广泛使用的框架,简单且扩展性强,非常适合做个人项 目。但框架本身缺少约定,标准的 MVC 模型会有各种千奇百怪的写法。Egg 按照约定进行 开发,奉行『约定优于配置』,团队协作成本低。
Egg.js 基于 Es6、Es7 以及 Typescript、Koa2 使得 Nodejs 具有更规范的开发模式、更低 的学习成本、更优雅的代码、更少的开发成本、更少的维护成本。为企业级框架而生。

特性

  1. 提供基于 Egg 定制上层框架的能力
  2. 高度可扩展的插件机制
  3. 内置多进程管理
  4. 基于 Koa 开发,性能优异
  5. 框架稳定,测试覆盖率高
  6. 渐进式开发
阅读全文 »

GET

GET 请求是用来获取数据的,不对服务器的数据做任何的修改,新增,删除等操作。
GET 请求就像数据库的 SELECT 操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容。GET 请求会把请求的参数附加在 URL 后面,这样会产生安全问题,如果是系统的登陆接口采用的 GET 请求,需要对请求的参数做一个加密。

PUT

PUT 请求是向服务器端发送数据的,PUT 请求就像数据库的 UPDATE 操作一样,用来修改数据的内容,PUT 的侧重点在于对于数据的修改操作。

POST

阅读全文 »

因使用了 git/svn 等代码版本工具,对于无用代码必须及时删除,例如:一些调试的 console 语句、无用的弃用功能代码。

  1. add -> commit -> pull -> merge -> push
1
2
3
4
5
6
7
git add . // 添加当前目录的所有文件到暂存区
git commit -m [message] // 提交暂存区到仓库区
git pull [remote] [branch] // 取回远程仓库的变化,并与本地分支合并

... MERGING

git push [remote] [branch]
  1. add -> stash -> pull -> stash apply/pop -> merge -> commit -> push
1
2
3
4
5
6
7
8
9
10
11
12
13
14
git add . // 添加当前目录的所有文件到暂存区

git stash save [name] // 暂时将未提交的变化移除到堆栈中,并命名为【name】

git pull [remote] [branch] // 取回远程仓库的变化,并与本地分支合并

git stash pop // 从堆栈中将之前未提交的变化再移入,并删除堆栈中暂存
git stash apply stash@{[number]} // 从堆栈中将之前未提交的变化再移入,不删除堆栈中暂存

... MERGING

git commit -m [message] // 提交暂存区到仓库区

git push [remote] [branch]
阅读全文 »