你背不下来的书,总有人能背下来;你做不出来的题,总有人能做出来;你愿意拖到明天的事,总有人今天努力做完;那么不好意思,你想去的学校也只能别人去了,你想过的人生也只能别人过了。
路虽然很漫长,很孤单,但是只要你走出一步,你离目的地就近一步,千万不能停在原地叹息,否则永远都无法到达目的地。
Algorithm
没有哪个大牛对数据结构和算法是不熟练的。LeetCode 算法题,至少一题
题目链接:https://leetcode-cn.com/problems/string-to-integer-atoi/submissions/
将字符串转换为整数,发现自己好菜,一些边界值没有判断出来。最后虽然做出来,但是执行效率很差,需要看看别人写的,进行优化。
public class Atoi {
public static void main(String[] args) {
System.out.println(Pattern.matches("\\d", "2"));
String str = "22334";
Assert.assertEquals(22334, new Atoi().myAtoi(str));
str = "-23ssd";
Assert.assertEquals(-23, new Atoi().myAtoi(str));
str = "abc 23";
Assert.assertEquals(0, new Atoi().myAtoi(str));
str = " 2 3";
Assert.assertEquals(2, new Atoi().myAtoi(str));
str = "99999999999";
Assert.assertEquals(Integer.MAX_VALUE, new Atoi().myAtoi(str));
str = " -42";
Assert.assertEquals(-42, new Atoi().myAtoi(str));
str = " -";
Assert.assertEquals(0, new Atoi().myAtoi(str));
str = "+1";
Assert.assertEquals(1, new Atoi().myAtoi(str));
str = "+";
Assert.assertEquals(0, new Atoi().myAtoi(str));
str = "-91283472332";
Assert.assertEquals(-2147483648, new Atoi().myAtoi(str));
str = " +0 123";
Assert.assertEquals(0, new Atoi().myAtoi(str));
str = " 0000000000012345678";
Assert.assertEquals(12345678, new Atoi().myAtoi(str));
str = "20000000000000000000";
Assert.assertEquals(Integer.MAX_VALUE, new Atoi().myAtoi(str));
str = "- 234";
Assert.assertEquals(0, new Atoi().myAtoi(str));
}
public int myAtoi(String str) {
System.out.println("in:" + str);
if (str == null || str.length() == 0) {
return 0;
}
int symbol = 1;
str = str.trim();
boolean flag = false;
StringBuilder sb = new StringBuilder();
str = str.trim();
for (int i = 0; i < str.length(); i++) {
if ((int)' ' == (int)str.charAt(i)) {
if (sb.length() > 0 || !" ".equals(String.valueOf(str.charAt(0)))) {
break;
}
continue;
}
if ((int)'-' == (int)str.charAt(i) && i == 0) {
symbol = -1;
flag = true;
continue;
}
if ((int)'+' == (int)str.charAt(i) && i == 0) {
flag = true;
continue;
}
if (Pattern.matches("\\d",String.valueOf(str.charAt(i)))) {
sb.append(str.charAt(i));
}else if (i == 0){
return 0;
} else {
break;
}
}
String s = sb.toString();
int idx = 0;
for (int i = 0; i < s.length(); i++) {
if (String.valueOf(s.charAt(i)).equals("0")) {
idx ++;
}else {
break;
}
}
s = s.substring(idx);
if (s.length() == 0) {
return 0;
}
if (s.length() > 10) {
return symbol > 0 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
}
Long a = Long.valueOf(s) * symbol;
int res = a > Integer.MAX_VALUE
? Integer.MAX_VALUE : (a < Integer.MIN_VALUE
? Integer.MIN_VALUE : a.intValue());
System.out.println(res);
return res;
}
}
Review
流畅的阅读英文技术资料是一个大牛必备的。英文学习,以技术翻译为主
这篇没看懂好难,翻译。
Tip
保持好奇,保持学习。至少一个技巧,以技术技巧为主
最近学习了 Git 的一个新操作,git stash 保存当前现场记录。
使用场景,假设现在在dev分支开发,突然说该分支有个bug需要紧急修复下,但是你又不想提交目前正在开发的代码,就可以使用 git stash 保存记录。
创建的几个命令:
git stash list # 查看都有哪些记录
git stash save ‘msg’ # 保存现场记录,并写个注释,方便后面查看
git stash apply stash@{0} # 恢复第0个现场记录,但是不会从stash列表中删除
git stash pop stash@{1} # 恢复第1个现场记录,但是会从stash列表中删除该现场记录
Share
要是为了建立你的影响力,能够输出价值观。分享一篇有观点和思考的文章,也可以是技术总结的文章。
谈两个感悟。一个是工作上的,一个是理财上的。
开始适应工作了方式了,每天的日报,晨会,周报。当然之前听很多人说晨会就是浪费时间之类的言辞,这些确实都存在,但我认为有这几个好处:
- 这个机制是对大多数人来设定的,它是符合且能提高大多数人的工作效率
- 仪式感,不断强化每个人的工作内容和状态,时时有事干,日日有产出
- 团队参与感,虽然不能具体参与,但是可以了解最近团队的动向,听听比你优秀的人的发言,向更优秀的人学习,屏蔽掉无用的信息,这不就是成长的过程吗?
- 既然避免不了,改变不了,那就做到最好,开会浪费时间?那可以每次开会自发的总结开会内容,然后和专门记录的同学对比下,你们之间的差别,对信息的提取,总结,这也是个能力。
理财上就是最近美股熔断,如果之前没有买基金,炒股之类的操作,觉得跟我们小老百姓没关系,但是真正参与了二级、三级市场,感同身受啊,太惨了。我原来在且慢买的基金一度达到了10%,现在反而跌了7%,还是自己贪婪了,因为我的目标是12%-15%,谁也想不到,但又是必然事件,疫情只是一个导火线而已。不过国内市场依然看好,因为有无数的年轻人在奋斗努力,国家也在成长,这是很重要的一点。还有就是对于虚拟货币,是得反思下了,没有巨头兜底,很容易崩掉,除了 BTC,ETH 在灰黑产上有点作用,其它的都是韭菜币。
认知变现,再用钱学习新的知识,然后再去赚更多的 money,这是一个正循环的机制,希望每个人都最后都能既赚到了钱,又有了更高的认知维度。