
前言最近网上总是充满了对IT行业的负面情绪说什么什么要凉了计算机行业要日落西山。放心你走了it行业还在。。。很大一部分都是刚刚踏入社会的学生和刚刚培训出来的这两部分人居多确实是受到了现在市场环境的影响但是究其原因很多都是自己学习的时候没有认真。付出不一定有收获但是不付出一定没有收获。作为一个老android人我记得我当时学习编程主要有以下几个方面的原因目的当时在大学努力学习编程的目地就只有一个那就是不想大四毕业时去培训想着在大学就把技术学好所以才很努力的学习。(相比于其余同学而言只是早早的知道了自己该干什么而已但和那些一流大学毕业后面试进大厂的同学比起来差的不是一丁半点差距太大了还得好好努力)。专业课程安排有 JAVA、C 语言、Android但是老师上课讲的也都是书本上面最最基本的知识点理论层面偏重达不到学完后立马能上手做项目的程度。虽然说专业里面学习 Android 和 C 语言但是让我感兴趣的却是 C#。在当时学完 Android 后特别不喜欢配置环境在环境配置这块就卡了好久才配置好。对比之下简单、快速上手的 C#,还是觉得 Android 太麻烦当时感觉好复杂直到后面有个学长说现在市面上Android应用开发最受欢迎都在搞这个我才沉下心学习Android。金钱报酬当时做项目参加比赛是可以挣到钱虽然不多但对于当时学生身份的我来说1000~3000 的也是不错的经济来源可以买一些自己之前一直舍不得买的东西或者说和舍友们出去大吃一顿好的烧烤。不为人知的、少一些为什么的坚持当时大一下学期和我一起报名在实验室上夜课(老师讲解学习 Android)的同学很多,可是等到大四快毕业时还在做 Android的就我和隔壁宿舍的哥们。在一起学习的过程中有些同学就由于或多或少各种各样的原因慢慢的晚上就不来了放弃了。其实这都是很正常的当有些事情得不到反馈或者说短时间内看不到回报时大家都会有这种情绪出现的。也不知道为什么我和室友就坚持了下来基本上每天只要没有大课安排我们俩就背着电脑和键盘待在实验室里面学习(看视频、看书、敲代码)现在突然想起还挺怀念当时和好友一起努力奋斗的时光。如何学习编程其实说起如何学习编程这个话题自己或多或少还能说点话毕竟自己也算靠着兴趣和努力闯入了编程这道大门但是也深知功力不是很深在各个方面的能力还都有待提升所以下面就只是总结下当时自己如何去学习编程可能适合你也可能不适合你毕竟每个人的学习、吸收、总结能力都不一样。看书和官方文档先看入门书籍让自己能看懂语法看懂别人写的代码。按照编程语言的语法能写一些简单正确的逻辑代码。比如排序数组的使用循环递归等。这里要注意刚开始先看那些比较薄一点知识点比较简单的书籍别一上来就整什么红宝石书籍特别特别厚的先让自己能对其编程产生兴趣不然刚开始就整厚书籍、难懂的点可能学上 3~5 天自己就放弃了没了当初的兴趣。切记学习需要循序渐进不可急于求成。看官方文档对于一些编程语言官方网站都会有系列的入门教程这个是很重要的官方出的东西都是知识面很广而且受众全体比较广所以很容易看懂和上手。不管是看书还是官方教程都要及时的主动敲代码对于书中的例子或官网教程中的案例刚开始都需要自己在本地敲一篇你可以先直接对照着实现看自己能否成功运行之后在慢慢的理解和修改。在你实现的过程中你会发现这个过程就是一个正反馈的过程。你会体会到当你把一个项目一点一滴的敲进编译器能成功运行结果时那种自豪满足的心情(要经常这么做这一点一滴成功就是你坚持下去的动力)。看视频第二阶段可以看一些网上的编程视频比如 B 站里面的教程或某些培训班的培训教程(网上可以找到)。目前很多程序员都在 B 站制作质量一流的编程系列教程这些教程只要你用心去找,都能找到。看视频的作用可以加强你对知识点的理解看别人是如何制作解释一个知识点的是否和你刚开始看书或看官方教程理解的一样。看视频的过程中你也需要对照着作者的实现方法自己在本地实现有时候你会发现看作者实现立马就懂了可是当你自己在本地实现的时候就会遇到各种各样的问题也许你可能花费 1 整天都无法解决(哈哈哈别丧失斗志这很正常)。当时我学习 的时候看的是某马程序员的培训教材有好几个 G 呢当时好像是学长在淘宝购买的我们就一起看、理解、学习不懂的地方就一起讨论分析。做项目做项目是终极目标只有做项目才能将那些零散的知识点汇总起来形成一条线。做项目也能让自己有成就感看到自己经过几个月一点一滴坚持做出来的东西就特别满足。在学校的话可以参加一些比赛比如大学生三创(创新、创意、创业)比赛和同学一起按照一个 ID 来构思实现一个项目。在参与的过程中你会发现以前学习的东西可能都或多或少有点用处当你们一起拿着自己做的项目来参加比赛西装革履的给各级领导讲解展示的时候你会发现那是多么的自豪与满足。到了进阶的时候就少用CV大法这个其实是很多程序员的通病我记得我刚刚工作的时候也喜欢这样搞和我一起进来的同事也是一样这样好多东西比较省事我自己还好本身自己在大学的时候认真学习过还是有一定的基础。像有些人自己在大学的时候就没有学好到了真正工作的时候老想着省事这样是不行的。反正和我一起来的基本上都“走了”。我自己也意识到了也就尽量自己去敲去理解每一行代码。这样我在公司完全可以完成自己的工作在半年后我就开始想着自己看源码摸底层。这个时候我才工作一年能力确实有限还好当时带我的师傅人很好我很多时候也是向他请教这之后的半年是我提升最快的时候。如果大家想详细了解 Android 系统纷繁复杂的底层知识去学习Framework底层知识是最好的选择。这里分享一份 Android framework 全家桶学习资料。有需要的可以扫码免费领取### **Surface源码解析**● **第一节 创建流程及软硬件绘制** ● **第二节 双缓冲及SurfaceView解析** ● **第三节 Android图形系统综述**基于Android12.0的SurfaceFlinger 源码解析● **第一节 应用建立和SurfaceFlinger的沟通桥梁** ● **第二节 SurfaceFlinger的启动和消息队列处理机制** ● **第三节 SurfaceFlinger 之 VSync上** ● **第四节 SurfaceFlinger之VSync中** ● **第五节 SurfaceFlinger之VSync下**PKMS源码解析● **第一节 PKMS调用方式** ● **第二节 PKMS启动过程分析** ● **第三节 APK的扫描** ● **第四节 APK的安装** ● **第五节 PKMS之权限扫描** ● **第六节 静默安装** ● **第七节 requestPermissions源码流程解析** ● **第八节 PKMS面试题**** InputManagerService源码解析**● **第一节 Android Input输入事件处理流程1** ● **第二节 Android Input输入事件处理流程2** ● **第三节 Android Input输入事件处理流程3**DisplayManagerService源码解析● **第一节 DisplayManagerService启动** ● **第二节 DisplayAdapter和DisplayDevice的创建** ● **第三节 DMS部分亮灭屏流程** ● **第四节 亮度调节** ● **第五节 Proximity Sensor灭屏原理** ● **第六节 Logical Display和Physical Display配置的更新**