基本清单

收到移民局的标题为 Your Communication with Immigration New Zealand 的确认邮件就算是拿到新西兰工作旅行签证(Working Holiday Visa)名额了,下一步就要在规定时间内邮寄提交申请材料了。经过双马尾菌自己以及帮别人申请,基本找到了准备材料的最简单办法。所需材料清单如下

材料名称 说明
付款凭证 中国签证中心手续费 + 回邮快递费
护照 原件
银行存款证明 4200 新西兰元 + 往返机票钱
胸透体检报告(INZ1096) 密封不可拆开
学历证明 高中清华认证,或大学学历证明
移民局确认邮件 打印出来填写好
补充表格(INZ1027) 所有中国人所有签证入境都要填这个
雅思成绩单 原件
EMS 回邮单 非必须,工作人员会自行填写
发邮件给中国签证中心 非必须,方便工作人员跟踪而已

Read More

  • Q: 为啥前言最后才写,感觉怪怪的

    A: 书还没出来之前有人会对前言感兴趣吗?

背景

双马尾菌是一个基础知识不太扎实的 Code Monkey,工作几年了维护型的工作居多,开发型的工作有一些但也大部分是锦上添花性质的。考虑到今年年底要重新找工作,所以想巩固一下基础知识。根据自己的实际情况和不多的时间,之前已经复习了软件工程和深入浅出设计模式两本书,接着就是刷 leecode 题目。

Read More

一些注意事项

  • Leetcode 不支持 T-SQL,也就是说答案只能在一个 SQL 语句中

  • 熟悉其他数据库例如 Oracle、MS SQL 的同学,注意 MySQL 某些特性(analytic function)可能缺失,也可能对标准 SQL 进行了扩展(GROUP BY)

  • 注意题目中的特殊要求和边界条件

  • 复杂的问题一般需要多个 subquery 语句,MySQL 中要求每个 subquery 都命名。

Read More

题目

#177 Nth Highest Salary

注意事项

  • Salary 排序要求是,例如前两名 Salary 相同,那么接着第三人 Salary 排名是 2

    所以计算排名的方法有三种情况

  • 不能直接 WHERE Ranking = N,因为 SQL 计算顺序是 FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY

    临时列 Ranking 在计算 WHERE 时这个列尚未生成,所以需要再在外层 SELECT 一次

  • 相同的 Salary 可能有多个,要加 DISCTINCT 去除重复值

Read More

题目

#185 Department Top Three Salaries

注意事项

  • Salary 排序要求是,例如前两名 Salary 相同,那么接着第三人 Salary 排名是 2

    所以计算排名的方法有三种情况

  • 第一步中不能直接 WHERE RowNumber <= 3,因为 SQL 计算顺序是 FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY

    临时列 RowNumber 在计算 WHERE 时这个列尚未生成,所以需要再在外层 SELECT 一次

Read More

题目

#196 Delete Duplicate Emails

解题思路

奇怪的是这题标明难度是 EASY,但通过率却是倒数第三,看来不少人在这个坑栽跟头。那我们换个思路不直接想如何 DELETE 重复值,而是先 SELECT 出我们需要的,非重复 Email 和其对应的最小 Id,然后把原表格中其他的数据删掉。

注意事项

  • 不能在一个语句中既更改表中数据(DELETE/UPDATE)又在子查询语句中 SELECT 该表。例如这样是不允许的 DELETE FROM Person WHERE Id IN (SELECT Id FROM Person),会报错。

    有一个 trick,可以再加一层 SELECT 把这个结果变成一个临时表。那么 MySQL 就会先运行子查询语句生成临时表,这样就和你真正要 DELETE 的表不算同一个表了。

Read More

简介:

本文介绍如何在 shell 命令行中过滤 adb logcat 输出的几个小技巧。

开发当中经常看到别人的 log 如洪水般瞬间刷满了屏幕,对自己有用的信息都被淹没了,影响心情也影响效率。下面是几个我所知道的过滤方法。

只显示需要的输出,白名单

最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配。简单的匹配一行当中的某个字符串,例如 MyApp:

1
2
3
adb logcat | grep MyApp
adb logcat | grep -i myapp #忽略大小写。
adb logcat | grep --color=auto -i myapp #设置匹配字符串颜色。更多设置请查看 grep 帮助。

Read More

题目

#180 Consecutive Numbers

解题思路

使用临时变量 prevVal 保存上一个 Num 值,然后使用临时变量 count 保存当前连续出现相同数字的次数。最外层 SELECT 再把 Num 这一列中 nowCount >= 3 的值取出。

连续数字计数可使用 @count := IF(@prevVal = Num, @count + 1, 1) 条件,prevVal 若为 NULL,等式不成立 count 初始化为 1;若 prevVal 是正常值则正常比较,现在值等于前值则加 1,否则初始化为 1。

这里如果用 CASE WHEN 则代码会长一些:

1
2
3
4
CASE
WHEN @prevVal = Num THEN @count:=@count + 1
ELSE @count:=1
END AS nowCount

Read More