热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

「Android攻城狮进阶之路」——学无涯,前行之路莫言终!

一、引言学习本来就就是一条没有止境的路,路途中会有阻碍前行的“河流”、拦路的“山峰”、不必多想,勇往直前就好!千万不能放弃,坚持是最重要的,成长和收获就在前方等着你。二、前事回顾先

一、引言

学习本来就就是一条没有止境的路,路途中会有阻碍前行的“河流”、拦路的“山峰”、不必多想,勇往直前就好!千万不能放弃,坚持是最重要的,成长和收获就在前方等着你。


二、前事回顾


先了解一下个人经历:

1.大学与专业

大学:湖南工业大学
专业:工业设计
一个上识天文,下通地理,博学古今中外,会画图,会n个软件,需要无限创意的神奇专业


说白了就是设计一些可供生产的产品:
小到牙刷铅笔,大到汽车飞机,或者说everything
因为设计的本身就是对世界的认知和再创造,只要有能力便可以进行设计与创造


所以,工业设计需要广泛的知识面,这正让我各方面知识储备的来源,
还要各种软件的使用(这让我有很强的软件使用经验):
二维的软件:PS、CAD、AI、AE 三维设计软件:SolidWorks、3dMax、ProE等,
以前很熟练,现在就PS还保持,(因为偶尔修修图,画画图的)所以自称半个艺术家,这也是我文章里配图比较好的原因,因为是自己画的

大学的熏陶让我对表现力十分执着,我希望通过更好的表述让别人对复杂事物有更好地理解
可以说我学的也不是非常好,因为和主流设计理念不怎么合(我并不怎么想设计已经有的东西)
再加上我的绘画水平也是半吊子,能拿得出手的实在不多,下面两幅凑合看看

2.大学对我的影响

陶冶了情操,炼就一颗对事物广为容纳的心,以及对万物的思考
望远镜,显微镜,文学,数学,哲学我尽量拓宽自己的视野,然后去思考一切的联系
作为一个理科生,我对文学可以说十分热爱,大学可以说是看了一箱书
我对的执着,便是我对境界的执着,创作过很多自认为非常优秀的作品,也获过奖


虽然喜欢文学,但也从未放弃对理性的思考,数学可以说是我离得最近,离我最远的东西
由于算半个设计,高数学得非常浅,深层的高数基本都是自学的(如果这都不算爱)
对数学的热爱也促进了我的分析能力,以致尝试去从理性和感性两方面去思考这个世界


想得多了,必须要记录与总结,为了能更好的表达自己的思想,诗是最佳选择
于是境界一词注定伴我终生,我希望不断突破自己的想象力与瓶颈,用我的语言表达出这个世界
思考事物之间的联系可以说误打误撞以后的编程思想打下很好的基础



三、Android工程师生涯的开端

我把学习编程当做一次远航,想要去见证,海的彼岸是何种风采这远航并非坐船,而是去铸造一座通往海的彼岸之桥。知识的积累便是这座桥的木料,我要通往海的彼岸,同时也要留下一座桥供后人去走。于是记录成了我的习惯,现在看来,记录和整理是一件对coder至关重要的事,文件如此,代码也如此,标记与整理在我看来是一个超重量级的话题。

1.初遇编程

大学中有两次与编程的接触:
第一次是C语言的课程----过了就没有再去深入
第二次是大学想要自学C++----可是没几天就放弃了(感觉作用不大,当时还有更重要的事)
个人一直认为,作为21世纪的青年,不会点编程总感觉对不起自己。



2.从单片机到Android

工作之余,是有些自己的时间的,然后我就广泛发展兴趣,有一阵子,想去玩单片机。然后就买了很多零件,第一次将代码烧录到单片机里,完成一闪一闪的灯时的心情记忆犹新。入门的代码很简单,大学C语言那点底子还是够用的,记得是2017年过年期间,都在玩单片机。然后寄存器,运算放大器,排组,很多传感器模块……进入了我的世界。用电子显示屏和时钟芯片做出了电子时钟之后,本来打算玩Linux开发板的,但是感觉有点贵。想着安卓不就是块生产好的开发板吗?去玩玩Android呗。然后我们就相遇了,

然后一入宫门深似海,从此硬件是路人...

3.我选择Android的几个原因

1).经常用,但对其一无所知,这让我无法忍受,就像有一个华丽的盒子却从未打开过
2).有手机,有电脑,别人能玩,我当然也可以,而且我相信自己的分析力
3).小时候一款叫"地心游记"的手机自带小游戏,怎么找也找不到安卓版,所以...
4).我想让自己的数学知识有些用武之地,毕竟日常只需要初中水平...
5).我喜欢文学,并非什么华丽的辞藻,而是语言本身的表述力
编程作为与计算机交流的语言,其表现力与我的境界追求并不矛盾


四、深入Android所遇到的瓶颈

1、初入Android与第一瓶颈

2017年3月31日 被我标记为自己的编元日,便是我进入Android的日子
只有一点微薄的 C++ 语法支撑(单片机时自学了一点C++)和微薄的单片机硬件常识
就这么轻装上阵,踏入了Android,一开始肯定跟着视屏学,第一个HelloWorld记忆犹新
当时还是用Eclipse,装Java、下软件、装插件和下SDK,当时连Java是什么都不知道
跟着视屏一步一步来,弄了大半天,第一个项目总算跑起来了


说说感想:C++自学了一个月,也就是在控制台和cmd上运算或输出
安卓里一下就可以显示到手机上了,开心和激动,有种I can 的感觉
这种所见即所得心情,是很让人有成就感的,因此与Android"一见倾心"


前期也没有什么学习方法,跟着视屏依葫芦画瓢,类比与修改知道了那语言叫Java,以前一直以为Java是一个小游戏...
也不断发现 C++ 和Java的异同点,感觉Java容易一点,便觉得也没有太大的困难然后思考与总结,表象上大概明白了安卓怎么运行,知道改哪里界面上会有什么改动就这么稀里糊涂的把Android的布局和基本的View过了一遍setOnClickListener一直不明白是干嘛的,只知道:这样写,点击就有效果


"地心游记"一直是我的心结,有了点基础后我找了个数独小游戏的教程看,然后发现那点编程老底完全不够用,第一瓶颈出现了:编程基础以及复杂逻辑的控制薄弱ArrayList,Map,回调...都不知道,即使如此,学到一半了,也硬生生的跟着视频敲完了。
当时有些动摇,这真的hold不住,太复杂了,逻辑控制根本把握不住,而且这也仅是数独而已。我是打算在Android中把Java学会的,有种会10+10之后,自然会1+1的心态,我并没有转战Java,而是挑了一个更大的坑,就是植物大战僵尸,也是跟着视频敲的。现在想想真的挺傻的,用Android版的cocos2d,唯一的收获也许就是对对象.方法名的深刻认知

2、我在突破Android第二层瓶颈时写下:

曾经的安卓对我来说,像一个黑匣。
从我决定打开的那刻,一切已然不同。
它是无数的残片,看上去一无所知,
就像孩子看到万片拼图混杂的心情。
畏惧与兴奋,和期待,
期待拼图完成后是什么样的风采。


我想要见证它的风采,
想要站在更高的层次看清它是什么。
于是我开始向那片海前进,
渡过那片代码的海洋,通往新时代地方。
现在,我拼完了一角,而在这个时刻,
它的宏大已经完全充盈了我的视野。
它也已不再仅是一幅画面,
在我眼前的分明是一个世界,称为境界


三、我是怎么在学习之路上突破瓶颈的?

瓶颈,生活上都会遇到,比如学习、工作、思想,但是这一切并不可怕。想要突破瓶颈的第一道关卡是想把心态调整好,心态是最为重要的。千万不要遇到瓶颈就自暴自弃、放弃抵抗,如果这样,这一道关卡永远都是“死门”,你也永远通不了关。

1、调整心态

提高心理承受能力必须要求我们有一个健康的心理。我们首先要明白一个道理,那就是我们做任何事都存在成功和失败两种结果,以及快乐和痛苦两种选择。很多人的成功是建立在无数次失败的基础上的,有喜怒哀乐才是真正的人生。

良好的心态能让我们在面对困难、挫折时从容不迫,冷静思考...所以我在面对瓶颈时时常会在心里暗示自己一定能行~

2、学习要有系统性

学习要有系统性,一味的死学是达不到任何效果的,如果你在你原来的学习方法上面看不到希望,那不如尝试系统性的学习方法。。。

分享一波我的系统性学习资料,可以说是全方位学习Android最好的资料了~

Java知识点:JVM、String、内部类、多态、抽象和接口、集合框架(Hashmap、Arraylist)、单例、线程、Synchronized、Look锁、动态代理、引用

Android基础知识点:四大组件、View、进程、Bitmap、屏幕适配、消息机制、线程异步、WebView。

Android扩展知识点:ART、Apk优化、Hook、Proguard、架构(MVC/MVP/MVVM)、Jetpack、NDK开发。

Android源码知识点:Leakcanary、Eventbus

设计模式知识点:面向对象六大原则、工厂模式、单例模式、建造者模式、观察者模式、适配器模式、策略模式、代理模式

算法知识点:排序、二叉树、链表、栈和队列、二分、hash表、堆、数组/双指针、字符串处理、动态规划

网络知识知识点:Http(缓存、Https、Http2.0)、TCP(三次握手四次挥手、socket)、类加载器

目录(部分截图):

部分内容(截图):

四、总结

现在,很少有哪个岗位的人像程序员这样需要持续不断的学习,软件开发的技术日新月异,而每一项技术又往往博大精深,如果不持续深入专研学习,肯定是很难掌握的,那就更别谈精通了。

如果你对Android技术不能深刻理解熟练应用,表现出来的水准仅仅是能干活、还行,那很少会有公司愿意为“还行”付出大的代价,只有脱颖而出,才能备受重视

————文章中所展示的《Android系统进阶资料》“——————点击此处加入即可获得”




 

 


推荐阅读
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • Java程序设计第4周学习总结及注释应用的开发笔记
    本文由编程笔记#小编为大家整理,主要介绍了201521123087《Java程序设计》第4周学习总结相关的知识,包括注释的应用和使用类的注释与方法的注释进行注释的方法,并在Eclipse中查看。摘要内容大约为150字,提供了一定的参考价值。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • 本文介绍了一款名为TimeSelector的Android日期时间选择器,采用了Material Design风格,可以在Android Studio中通过gradle添加依赖来使用,也可以在Eclipse中下载源码使用。文章详细介绍了TimeSelector的构造方法和参数说明,以及如何使用回调函数来处理选取时间后的操作。同时还提供了示例代码和可选的起始时间和结束时间设置。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
author-avatar
william浩浩_597
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有