Google Python挑战赛:不服,就来!
707
2022-05-30
相信一些非科班的野生程序猿第一次接触编程都是在朋友圈广告中,我当时也是看到了“两周学好python,让你效率翻倍”这样的广告词,然后带着试一试的心态,反正学了又不吃亏,就这样走上这条通往代码森林的路,里面的树都是二叉树。后来看了尚学堂的python400集入门课,逐渐越走越深,发现自己已经被代码的世界深深沉迷,每次写完代码之后的成就感,每次写代码的时候那种“构造世界”的感觉,让我得到不断的心灵满足,后来了解到Java才是当今世界的编码老大,加之想要把代码作为自己未来从事的职业的想法不断坚定,终于走上了Java这条不归路。
作为一个非科班的野生程序猿,我最开始的学习还是有压力的,有各种新的名词,比如class、数据结构、循环、数组、集合、分支、泛型、反射、面向对象等,而且学一遍还真未必能记得住,我学得比较慢,每一次的演示代码我都要重复好几遍,然后各种小地方都要进行“改造”看看能不能有神奇的现象发生(脑洞比较大),比如HelloWord 的第一个程序我还要在println的括号里面写各种字符串尝试,也会想如何打出回车和制表符,又会想,为什么要用“\n”代表回车,“\t”代表tab,而空格却没有对应,后来才明白,因为我要打印一个回车,我不能在print函数里面打一个回车吧,那样会使程序很乱造成很多麻烦,所以用“\n”来代替,而空格在字符串内部并不会有什么不好,所以也就没有某个“\”+某字母 来代表空格,直接在字符串里打出来就好了。还有类中的this关键字也让我刚考试抓破脑袋,后面理解了是对应调用该方法的对象,一切都明朗了,如果你也遇到this、super这一类难理解的问题,唯一的解决方法就是多练,经验多了,自然就会理解,这也是熟能生巧的一种吧。我一直都很欣赏卖油翁里面的一句话:“我亦无它,唯手熟尔”。
但是随着越学越深,这个习惯的结果是小部分的现象自己可以解释,并且这无疑加深了自己对该段代码中所用到的数据结构和方法有了很深的理解;但是很多现象自己也无法解释,于是会去网上查,主要是知乎和CSDN,然后看到了更多的新名词,由于知识储备有限,很多东西都只能强行让自己记住,做了很多的笔记和感想,痛并快乐着,因为我知道,随着我的知识量的增加,我必然可以把这些散乱的知识点连成平面,然后不断增加、修正和改善,我知道我将收获我独一无二的编码知识体系和知识网络。初始入门的时候,Java SE我主要看的是黑马和尚硅谷的课,两者我都看了一遍,当做是复习,也当做是查缺补漏。如果有需要可以直接去B站搜索,和播放量最高的就准没错啦。
入门之后的下一个阶段就是进阶,也就是JavaEE阶段,这一阶段主要学习的就是Java Web、数据结构与算法、设计模式、Maven、SSM(Spring、SpringMVC和MyBatis)框架和项目实战了,另外刷题也是在这一阶段提上日程的。这一阶段也是出现问题最多的阶段,我还依稀记得自己刚开始刷LeetCode题目的时候,连最简单的题目都不会做,脱离了IDEA这个让人变懒的工具后也出现了很多困难,然后看别人的刷题经验视频也只觉得别人好厉害,但是自己学不来,我就开始看标准答案和解题思路,其实就是像刚开始学代码的孩子一样,一个字母一个字母的敲,生怕敲错一个字,敲完一遍之后,理解题解思路,然后理解如何从思路到代码,这样经过了十几道简单题目之后,我开始慢慢独立起来,其中的一些步骤开始脱离题解独立完成,像是一个只能爬和依靠婴儿车的孩子慢慢学会了蹒跚走路,然后开始像阿甘一样奔跑。这种强烈的对比会给人很舒服的感觉,相信你也是如此。直至现在,我已经能基本完成中等难度的题目,正向hard难度的题目进军。
对于框架的几点思考,Java中最优秀的当属Spring框架,但是利用反射结构所构建的框架所提供的的强大功能都是基本知识的延伸,如果没有扎实的JavaSE的功底,怕是也难以理解框架的精髓以及其背后隐藏的种种操作和微妙之处,出现各种异常的情况下也难以理解、定位和解决异常,所以我建议在学习框架之前,可以对着之前的笔记,花半天时间进行复习,然后就去领略各种框架的真正魅力吧。
项目实战方面可以去B站找到非常多的用来练手的项目;同时GitHub也是程序员不可不知的必经之路,作为全球最大的代码托管平台,GitHub上面的代码质量很高,里面的开源项目拿来搞一搞或者增加项目经验也是极好的;CSDN是一个博客平台,里面关于技术、项目和经验的博客也有很多高质量的;知乎也是必备的,虽然被称为“逼乎”,但是里面多如牛毛的技术文档、经验分享和学习目录与推荐,让人直呼“真香”。程序生涯就是这样,不断进步,终生学习,入门到不断熟练,从根本看不懂问题到看一眼就能想到解决方案,这个成长的过程是每个人一生都难以忘记的经历。此外,还要感谢华为云开发者社区,这也是一个学习知识和经验的新领地,目前也在不断强大起来,希望华为云社区可以越办越好,内容越来越丰富,也成为每个程序员的“养心天堂”。
如果想要程序生涯可持续发展,走得更远,作为一个转行程序员来说,抽时间补充计算机基础知识还是很必要的,比如:《计算机组成原理》、《计算机网络》、《操作系统》等基础课程,关于通信知识也需要了解一些基本概念,这里推荐杨波的《大话通信2》。B站视频学习只是方便入门,真正要深入理解编程语言的本质,做一些不那么“搬砖”的话,还需要看书,看经典的书,比如《Effective Java》,《Java编程思想》,《高性能MySQL》,《算法导论》和《数据结构》等经典书籍,学无止境,苦海作舟。
还想提一点建议,对于初学者来说,编码规范也是非常重要的,写一手规范美观的代码不仅可以让你在面试手撕代码的时候让面试官耳目一新,还能让自己在重读自己的代码的时候快速理解,不至于昨天写的代码今天就看不懂了,这里推荐华为编程军规,感兴趣的同学可以去华为云官网了解。保持好奇心和竞争力,不断提升自己,静待花开,等待机会来临时抓住机会,实现自己的价值。
本人入行时间较短,知识量也较少,也想过写一些技术文档,但是觉得自己才疏学浅,并且又是第一次,所以最终决定写这个心得分享类的的博文。本文算是对自己从开始学习编码到目前的一个简要汇总,也是对坎坷心路历程的重新梳理,相信能给各位初学者以基本的引导,如果能引起共鸣那就太棒了。
最后总结几个初学者常用的工具:B站、GitHub、知乎、CSDN、微信公众号、简书以及万能的百度。
新人初到,如有纰漏还希望大家能指出来,我会虚心接受并加以改正,谢谢啦!
【奔跑吧!JAVA】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/265241
Java 数据结构
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。