WM Blog

WM Blog

The Times We Had

TypeScript:进阶语法
联合与交叉类型先看下面一段代码: 1234567891011121314interface Bird { fly: bollean; sing:() ={};}interface Dog { fly: bollean; bark:() ={};}function train(animal: Bird | Dog){ 这里可以使用fly方法,因为bird与dog中都有fly这个属性。 animal.fly(); //不可以直接使用。 animal.sing()....} 我们...
TypeScript:基础知识
TypeScript 是什么 TypeScript 2012 年由微软发布, 很多广泛使用的前端框架都在使用TypeScript进行开发。TypeScript 是JavaScript的超集,这意味着它是建立在javaScript语言之上的一门语言,我们可以在TypeScript中使用个各种扩展语言,同时依赖着它对静态类型和面向对象的良好支持,可以让我们写出更加健壮,更可维护,更易阅读的代码。 TypeScript 相比JavaScript有哪些优势下面这段代码是在JavaScript中求两个数平方和的一个函数 123456function demo(data) { retu...
SQL11:对表的增删改
创建表格你可以使用 CREATE TABLE 来创建新的数据库表格 12345CREATE TABLE IF NOT EXISTS mytable ( column DataType TableConstraint DEFAULT default_value, another_column DataType TableConstraint DEFAULT default_value, …); 每一行开始先是列名,然后是数据类型,表格的限制,最后是默认值。如果已经存在了相同表名的表,那么SQL通常会抛出一个异常,所以为了避免这个我们最好使用 IF NOT EXIST 子句...
SQL10:对行数据的增删改
之前讲的都是如歌在数据库中查找,从现在要开始学习如何对数据进行操作了。 Schema 是什么我们之前说的数据库表格是一个二位的行列集合,行对应数据实体,列对应属性。在SQL中,数据库 Schema 描述的是每个表的结构以及表中的每列数据可以存储的类型。比如电影表中,Year必须是整数而Title必须是字符串。这种固定的结构才让查询变得高效。 插入数据我们必须用 INSERT 来声明插入哪一个表以及我们插入的是一行还是多行。一般情况下,每一行你插入的数据需要包含每一个对应的列值,你可以一次插入多行数据只需要把他们按顺序写。 1234INSERT INTO mytableVALUES (va...
SQL9:在SQL中使用聚合
除了上篇中说到的简单表达式之外,SQL还支持一些聚合函数让我们从一组行信息从提取总结出信息。聚合函数可以被用来回答像“xxx导演执导了多少电影?”,”每一年最高分的电影是什么?”这类问题。 123SELECT AGG_FUNC(column_or_expression) AS aggregate_description, …FROM mytableWHERE constraint_expression; 如果不特定指定分组,每一个聚合函数会对整个集合进行运算,返回单个值,就像一般的表达式一样,给你的聚合函数一个别称会让结果更容易阅读和处理。 常见的聚合函数下面表格中列出了常见的聚合函数 ...
SQL8:在查询中加入表达式
除了直接通过SQL来查找原始的列数据,我们还可以在一个查询中通过使用表达式来写出逻辑更为复杂的查询语句。可以使用数学表达式和字符串函数来对要查询的值进行改变当我们在查询的时候,下面的例子展示了这种方法: 123SELECT particle_speed / 2.0 AS half_particle_speedFROM physics_dataWHERE ABS(particle_position) * 10.0 > 500; 每一种数据库都有自己支持的一系列数学的,字符串以及时间函数,这些需要在文档中寻找。使用表达式可以节省时间并且对结果数据进行额外的处理,但是会让查询变得更加难以...
SQL7:关于NULLs
减少出现 NULL 值在数据库中的可能总归是好的,因为他们需要特别的关注当构建查询,限制的时候。一个对 NULL 替换的方案是有一个默认数据类型值,比如0对于数字类型的,空字符串对于文本类型。但是当你的数据库需要存储不完整的数据,那么 NULL 是必要的因为默认值会影响只会对空值的分析(已经被替换掉了或者比如需要算一个数字类型的平均值的时候)。有时候我们也无法避免 NULL 值,就像我们在之前外连接的时候看到的,当两个表有不对称的数据的时候。在这些情况下,我们可以为一列测试 NULL 值在 WHERE 子句中通过使用 IS NULL 或者 IS NOT NULL 限制。 12345SEL...
SQL6:外连接(OUTER JOIN)
内连接只是返回两个数据库中都存在的数据组成的表,如果两个表含有不对称的数据,比如在表B中含有不存在表A中的主键中的数据。这时候我们就需要使用 LEFT JOIN, RIGHT JOIN 或者 FULL JOIN 了。 1234567SELECT column, another_column, …FROM mytableINNER/LEFT/RIGHT/FULL JOIN another_table ON mytable.id = another_table.matching_idWHERE condition(s)ORDER BY column, … ASC/DESCLIMIT n...
SQL5:使用JOIN进行多表查询
之前我们只在一张表上进行查询,但是现实情况是整个数据库被分成了很多个表来进行数据的存储,这个过程叫做规范化(normalization). 数据库规范化数据库正则化非常有用因为它使得数据在每个表中的重复降到了最低,并且也让他们之间相互独立(例如汽车引擎可以和每一种汽车类型相互独立)。代价就是这个查询会变得更加复杂,并且查询的性能问题也会变得明显,尤其是当有很多很大的表的时候。为了回答一个关于跨越很多表的实体的问题的时候,我们需要知道如何组合这些数并且从中提取我们想要要的。 使用JOINs来进行多表查询在多个表中的一个单独的实体需要一个主键(primary key)来唯一的定位这个实体,最...
写一个AI来玩桌面游戏 Auzl--partⅠ
我们AI课的项目需要我们组队实现可以玩桌面游戏Auzl的agent。这个游戏规则比较多,但是都不复杂,在这篇中先简单说明一下这个游戏规则:首先每个人都有一块个人的面板,对应图中A。面板上方区域(Scoring track)是记分区,用来记录当前玩家获得了多少分。下边区域是地板区(Floor lines)每一个方格内记有该格对应的负分,在每一轮结束的时候结算。中间左边区域叫做预备区(Pattern lines),每轮玩家拿到的砖需要先放入这个区域中。右边墙(Wall)为结算的时候将左边预备区每一行填满的砖移入右边对应颜色对应行中。对于2人游戏来说,首先需要准备5个工厂(Factory)对应...
avatar
mian wang
The Light of Hope
FRIENDS
andy-tk