Tips
- 使用 printf 命令方便地在 Linux 中进行进制转换(查找 Java 线程16进制线程 id 时经常会用到)。
printf "%x\n" 222
打印222的16进制。
printf "%d\n" 0x3ac
打印3ac的10进制。
另外%o
为八进制。 - Java 中
this
和Class.this
的区别:
当内部类或者匿名内部类要使用外部类的实例时使用Class.this
class Outter {
String name;
class Inner {
String name;
String getPersonName() {
// to fetch the Outter's name field
return Person.this.name;
}
}
}
git rebase
命令,相信很多人用得还是比较少的,那么它跟git merge
有哪些区别呢?这个可能一言难尽,网上也有很多资料可以看,所以这里只列举一个git rebase
的常用方式。
git rebase -i upstream|branch
合并多次提交,通过交互式编辑来完成后续操作,通常在当前分支上使用或者将分支 rebase 至其他分支上使用。
Code
Persistent Bugger from CodeWars 6kyu.
一个写得比较好的递归 solution :
public static int persistenceWithRecursion(long n) {
long m = 1, r = n;
if (r / 10 == 0)
return 0;
for (r = n; r != 0; r /= 10)
m *= r % 10;
return persistence(m) + 1;
}
非递归:
public static int persistenceWithoutRecursion(long n) {
int times = 0;
while (n >= 10) {
n = Long.toString(n).chars().reduce(1, (r, i) -> r * (i - '0'));
times++;
}
return times;
}
反正都比我自己写的简洁多了。