知识图库
Java知识库
JDK线程池实现原理
Java中的强、软、弱、虚引用
深入拆解Java虚拟机
01 开篇词 | 为什么我们要学习Java虚拟机?
02 Java代码是怎么运行的?
03 Java的基本类型
04 Java虚拟机是如何加载Java类的?
05 JVM是如何执行方法调用的?(上)
06 JVM是如何执行方法调用的?(下)
7 JVM是如何处理异常的?
Java面试常见问题整理
Java面试常见问题-Java 基础篇
Java面试常见问题-Jvm篇
Java面试常见问题-并发篇
Android知识库
Kotlin编程第一课
1 开篇词 | 入门Kotlin有多容易,精通Kotlin就有多难
2 Kotlin基础语法:正式开启学习之旅
3 面向对象:理解Kotlin设计者的良苦用心
4 Kotlin原理:编译器在幕后干了哪些“好事”?
5 实战:构建一个Kotlin版本的四则运算计算器
6 object关键字:你到底有多少种用法?
7 扩展:你的能力边界到底在哪里?
8 高阶函数:为什么说函数是Kotlin的“一等公民”?
9 实战:用Kotlin写一个英语词频统计程序
10 加餐一 | 初识Kotlin函数式编程
11 委托:你为何总是被低估?
12 泛型:逆变or协变,傻傻分不清?
13 注解与反射:进阶必备技能
14 实战:用Kotlin实现一个网络请求框架KtHttp
15 加餐二 | 什么是“表达式思维”?
16 加餐三 | 什么是“不变性思维”?
17 加餐四 | 什么是“空安全思维”?
18 春节刷题计划(一)| 当Kotlin遇上LeetCode
19 春节刷题计划(二)| 一题三解,搞定版本号判断
20 春节刷题计划(三)| 一题双解,搞定求解方程
21 春节刷题计划(四)| 一题三解,搞定分式加减法
22 什么是“协程思维模型”?
23 如何启动协程?
24 挂起函数:Kotlin协程的核心
25 Job:协程也有生命周期吗?
26 Context:万物皆为Context?
27 实战:让KtHttp支持挂起函数
28 期中考试 | 用Kotlin实现图片处理程序
29 题目解答 | 期中考试版本参考实现
30 Channel:为什么说Channel是“热”的?
31 Flow:为什么说Flow是“冷”的?
32 select:到底是在选择什么?
33 并发:协程不需要处理同步吗?
34 异常:try-catch居然会不起作用?坑!
35 实战:让KtHttp支持Flow
36 答疑(一)| Java和Kotlin到底谁好谁坏?
37 集合操作符:你也会“看完就忘”吗?
38 协程源码的地图:如何读源码才不会迷失?
39 图解挂起函数:原来你就是个状态机?
40 加餐五 | 深入理解协程基础元素
41 launch的背后到底发生了什么?
42 Dispatchers是如何工作的?
43 CoroutineScope是如何管理协程的?
44 图解Channel:如何理解它的CSP通信模型?
45 图解Flow:原来你是只纸老虎?
46 Java Android开发者还会有未来吗?
47 Kotlin与Jetpack简直是天生一对!
48 用Kotlin写一个GitHub Trending App
49 结课测试 | “Kotlin编程第一课”100分试卷等你来挑战!
50 结束语 | 不忘初心
Android Framework 教程—基础篇
01 Ubuntu 使用快速入门
02 Make 构建工具入门
03 理解 Unicode UTF-8 UTF-16 UTF-32
04 Linux Shell 脚本编程入门1——核心基础语法
05 SeAndroid 使用极速上手
06 理解 C++ 的 Memory Order
07 AOSP 极速上手
08 系统开发工具推荐
09 添加 Product
运动相关知识
爱上跑步
01 开篇词 | 跑步,不那么简单的事儿
02 跑两步就喘了,是不是我不适合跑步?
03 正确的跑步姿势是什么样的?
04 为什么跑步要先热身?
05 怎样制定你的第一个10公里跑步计划?
06 快跑和慢跑,哪个更燃脂?
07 普通跑步者应该如何选择跑鞋?
08 买跑步装备,不要踩这些坑儿
09 跑步前到底应不应该吃东西?
10 跑步到底伤不伤膝盖?
11 参加了20场马拉松,我是如何准备的?
12 除了马拉松,还能参加哪些跑步赛事?
13 热点问题答疑 :跑完第二天浑身疼,还要不要继续跑?
健身房计划
[DeepSeek]减脂塑形计划
【DeepSeek】训练周期安排
每日餐饮热量控制
减脂期间食物推荐避坑指南
HarmonyOS知识库
其他知识类目
心理学相关
如何学点心理学——关于非专业人士学心理学的一点建议
投射性认同
-
+
首页
50 结束语 | 不忘初心
 不知不觉,课程就已经更新到50讲了。当我提笔开始写这篇结束语的时候,心情竟有些失落与不舍。这里我想先感谢你的支持与陪伴,也请你不要把结束语当做课程的终点,以后,我还是会偶尔回来加餐,分享更多Kotlin相关的经验。我希望,这门课可以陪着你,一起见证你的成长。所以,要记得,常回来看看。 今天,我们就不聊技术了。我想分享3个小故事,都是发生在我自己身上的,真实的故事。 ### 第一个故事 第一个故事,是我大学时期的“黑历史”。刚进大学的时候,我曾经认为自己比身边的同学要“聪明”。当身边的同学都在努力学习的时候,我懈怠了,我自认为可以凭借自己的“聪明”打败那些平庸的人。但是,经过一系列事件:期末考试成绩一般、ACM竞赛失败,我渐渐认清了一个现实:我只是个普通人,我的天资很平庸。 说实话,认识到自己的平庸,并且接受这个事实,真的不是个容易的事情。不过,这种思维带来的影响也是巨大的。因为,我再也不会用所谓的“聪明”,来给自己的懒惰找借口了;我再也不会去千方百计地找捷径,幻想着一蹴而就、一飞冲天了。为了学好一门技术,我会脚踏实地去写代码、做项目、写博客。我开始相信:慢就是快,技术成长没有捷径。 这番话可能会让有些同学感到失望,但技术成长确实是没有捷径的,我们能做的,就是踏踏实实地写代码,认认真真地去总结,然后才可能达到我们想要达成的目标。 ### 第二个故事 第二个故事,是关于机遇和努力。人们常说,机遇比努力重要。这句话虽然是对的,但却容易让人误入歧途。因为,机遇是可遇不可求的,我们唯一能做的,就只有努力。 我庆幸自己很早就认识到了自己的平庸,并且,也一直在努力。在2017年,Kotlin、Jetpack等新技术刚出现,大部分开发者还在抱怨、吐槽的时候,我已经在积极探索,并且通过写博客、写教程来帮助他人了。渐渐地,越来越多的技术大会邀请我,Google、Kotlin的员工也找到了我,让我去申请GDE(谷歌开发者专家)。这也让我有了跟世界顶级开发者交流的机会。随着视野的开阔,我也越发清晰地认识到了自己的平庸,也越发努力了。Roman Elizarov、Jake Wharton这样的程序员才算是天才,他们尚且如此努力,我又有什么理由不努力呢? 所以,我一直告诉我自己:在机遇来临之前,我只能努力。所以,你也不要觉得,自己一直以来的努力没有用,你只是需要多一点时间,多一点耐心,让量变成为质变。 ### 第三个故事 第三个故事,是关于理想和兴趣。小时候,我的理想就是当一个发明家,像爱迪生那样,发明电灯泡,帮助其他的人。不过,到了高考选专业的时候,我却没有找到“发明家”这个专业。最终,我阴差阳错地选了通信工程专业,在大一学习C语言的时候,我对计算机产生了浓厚的兴趣。最后,我就变成了一个程序员。 不过,后来我发现,我的兴趣正好可以帮我实现儿时的理想。因为:程序员也可以当发明家,帮助身边的人。大学的时候,我会做一些小游戏,自娱自乐。我记得很久之前有次春运的时候,我还写了个小软件,帮村里外出打工的叔叔阿姨抢火车票。 工作以后也一样。比如,我们课程里的“词频统计程序”,其实就是来自于我业余时间写的一个英语阅读的软件,它可以辅助我在阅读计算机专业书籍的同时,帮我积累更多词汇。比如,2020年疫情初期,我写了个简单的脚本,来监测京东、天猫的口罩库存,提醒身边的朋友去抢。再比如,前段时间,发生了很多悲剧新闻:儿童被拐卖、妇女被虐待、老人跌倒没人扶。看完这些新闻以后,我就花了几个通宵的时间,做了一个保护弱势群体的App。 虽然这些小东西都很粗糙,从商业的角度看连雏形都算不上,它们也无法给我带来任何金钱上的收益,但我却乐在其中。所以,我也会告诉我自己:不忘初心,方得始终。 其实,我也常常会想,虽然我们每个人的起点各不相同,但终点都是殊途同归的。我们唯一能做的,就是享受其中的过程,去追求来自内心的那份宁静和快乐。与其活在世俗的教条当中让自己难受,还不如跟随自己的内心,去做一些开心的事情。 所以,如果你有什么理想、兴趣爱好,那就勇敢地去追求、去尝试吧!因为,它值得! 好了,最后我想说的是,课程结束并非终点,我们还可以在留言区互动交流,也祝你享受成长,学有所成。另外,我还给你准备了一份毕业问卷,希望你能花两三分钟填写一下,非常期待能听到你对这门课的反馈。
嘿手大叔
2024年10月31日 19:31
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码