在我看来,作为一个合格的程序员,掌握一门语言只是最基本的要求。除此之外,基础知识扎实,了解主流技术框架,有快速学习的能力也很重要。语言是帮助你实现想法的工具,对于一个程序员来说,最重要的是语言背后的想法,需要通过长期的基础积累和经验积累才能获得。
大二开始接触编程,到现在已经五年了。这五年,我走了很多弯路,踩了很多坑。至此,我通过接受阿里的offer,达到了人生之一阶段的目标。我和大家分享一下我这五年踩过的坑。希望你能少走弯路,在科技的道路上越走越远。
回到主题,我认为Java的学习过程可以分为三个阶段:
#之一阶段目标:夯实基础。
在你开始接触Java之前,你应该先等等,因为你需要做的之一件事是在计算机方面打下坚实的基础,而不是直接学习语言。当我做越来越多的项目时,我越来越感觉到计算机基础对程序员的重要性。就像武术家反复练习“马步”和达芬奇画鸡蛋。短期内,基本功的练习不会产生立竿见影的效果。也许这个过程会很无聊,但我们不能短视。从长远来看,程序员基本功的扎实程度决定了程序员的技术道路能走多远,走多长。
所以我觉得,如果时间允许,花半年甚至一年的时间学习基本功也不算太多。学习任何技术都一样。我们需要能够承受孤独。学习基本功的过程必然是枯燥的,但却对我们未来的发展有着深远的影响。所以我们一定要耐得住寂寞,善于耐得住寂寞,稳如程序员的之一步。
计算机基础主要有五门课程:操作系统、计算机 *** 、数据结构、算法和数据库。学习这些基础课程需要多少时间,取决于你目前的状态。如果你是计算机专业的学生,还在读大一大二,请珍惜课堂上的每一次机会。听老师讲一遍,自己再学一遍,有问题和老师沟通。这样的机会真的很难得,可以做,可以珍惜。
如果你不是计算机专业的学生,很容易做到,调动你的情报搜集能力,去你身边的名牌大学的计算机专业。我的学校离NTU很近,所以很多学生溜进NTU蹭周志华的机器学习。去了之后发现200人的教室坐满了人,所以都是同道中人来蹭课。
如果你即将找到工作,你应该更加关注这些基础课程。现在互联网公司非常重视学生的基本功,因为学校里做的项目大部分在面试官眼里只能算是“玩具”(PS: Big Brother除外),所以项目经验只能算是你的加分项,基本功是之一位的。
#第二阶段目标:精通Java
作为一名Java程序员,必须精通Java这种吃饭的语言。因为下班后,每天最常联系的是Java,其次是你的女朋友(当然,如果你有女朋友,就跑路)。所谓“精通”,就是你不仅要知道如何使用Java,还要了解它背后的原理,也就是你要“知道它是什么,为什么”。例如,我们都知道使用关键字new可以创建一个对象,但这远远不够。我们还需要知道对象创建过程是怎样的。对象创建后存储在哪里?什么时候被GC回收?只有理解了背后的原理,才能写出更高质量、更高性能的代码。
当然,学习Java不是一步到位的过程。它可以分为两个阶段。之一阶段是先用Java,也就是你只需要知道它是什么。当你熟悉了Java的所有语法和API之后,就可以用几个项目来练手了。这个项目可以帮助你加深对基本语法和API的理解。当你对Java有了一些项目经验和自己的见解,那么你就可以深入到Java背后的原理,也就是开始“知其所以然”的过程。你需要学习JVM,了解Java的内存模型、内存管理、垃圾收集和类加载机制。你需要学习并发编程,知道如何在保证线程安全的前提下提高程序的处理速度。您还需要尝试阅读JDK源代码,了解在Java容器中使用什么数据结构,以及在什么业务场景下选择什么数据结构。PS:Java的整体架构见上图。
学习Java确实是一个漫长的过程,只有你的时间、耐心和思考才能慢慢打开Java世界的大门。
#第三阶段目标:培养快速适应新技术的能力。
我觉得一个程序员的水平不是用他擅长多少种技术和框架来衡量的,而是看他有没有快速学习的能力。因为现在的技术一个接一个的涌现,技术更新迭代的速度远远超过我们学习的速度。因此,快速学习的能力尤为重要。当你有了一定的计算机基础,你就可以有意识地锻炼自己的能力。你如何锻炼?让我们分享一下我的学习经验。
我认为任何技术都遵循“2-8原则”,即在一个技术的整个架构中,最核心、最重要的部分可能只占该技术整个架构的20%,剩下的80%相对较小。因此,如果我们需要在相对较短的时间内快速上手一项新技术,那么最重要的是找出这项技术中20%的核心知识点,并首先理解并彻底理解它们。所以你可以马上使用这项技术。然后剩下的80%的知识点可以在项目的空窗口慢慢添加。过了这么一段时间,这项技术的整个架构都会被我们掌握。
在这个阶段,你可以开始接触一些应用层技术,比如Spring和MyBati。
s、Shiro……学习这些技术更好的办法就是理论结合实践,以项目驱动的方式去学习。毕竟编程是一项熟能生巧的技术,多多动手能加深你对技术的理解,多多思考也能提高你编码的能力,两者相辅相成。并且在学习这些技术的过程中,可以有意识地采用这种『2-8原则』学习 *** ,培养自己快速学习的能力。举个栗子,如果你正要做的这个项目需要使用Spring,那么你首先要做的就是要花点时间,找到、并且找准Spring中最为核心的20%知识点――Ioc和AOP(这些信息可以通过大牛的博客、Spring的官网获得)。OK,那么Spring其他的技术先不用管,你要做的就是先把Ioc和AOP这两个概念搞懂,包括它们的使用方式、背后的思想。(PS:学习技术更好的途径就是看它的官网,然而官网一般都是英文,对于英文比较捉鸡的同学可以看一些大牛的博客、或者视频教程)当把这两个概念搞懂之后,Spring基本就可以为我们所用。接下来,我们可以利用项目的空窗期把Spring剩余80%的知识点慢慢地补充,这样一段时间后,Spring的整个体系结构就被我们掌握。然而在这整个过程中,还会涉及到你的信息搜索能力、信息理解能力,这些软实力都需要你通过大量的练习慢慢积累。所以,少年,抓紧时间,赶紧行动吧。
> 对了,在这里说一下,我目前是在职Java开发,如果你现在正在学习Java,了解Java,渴望成为一名合格的Java开发工程师,在入门学习Java的过程当中缺乏基础入门的视频教程,可以关注并私信我:01。获取。我这里有最新的Java基础 *** 视频教程。
Facebook母公司Meta被欧盟罚款1700万欧元(约合1900万美元),原因是它未能阻止Facebook平台在2018年发生的一系列数据泄露事件,违反了欧盟的隐私规则。 Meta在欧盟的主要隐私监管机构爱尔兰数据保护委员会表示,他们发现Facebook“未能采取适当的技术和组织措施”。 20...
Google 今天发布了第 3 个紧急更新,修复了存在于 Chrome 浏览器中的另一个零日漏洞。周四,Google 面向 macOS、Windows 和 Linux 发布了 Chrome 100.0.4898.127 更新,会在未来几天内完成部署。 本次更新修复了追踪为 CVE-2022-1364...
Hackernews 编译,转载请注明出处: 据观察,一个利益熏心的黑客正在部署一个全新的针对 Oracle Solaris 系统的 rootkit,目的是ATM机网络,并在不同银行使用伪造的卡进行未经授权的现金提款。 威胁情报和事件应急公司 Mandiant 正在追踪名为 UNC2891的组织,...
近日,应用交付领域(ADN)全球领导者F5公司发布了一项安全警告,其研究团队监测到一个关键漏洞正在被积极利用。漏洞的追踪代码为CVE-2022-1388,CVSS 3.0评分为9.8,危险等级非常高。该漏洞允许未经身份验证的网络攻击者执行任意系统命令,执行文件操作,并禁用BIG-IP上的服务。 根...
在现在跟黑客直接对抗之时,美国政府官员正在为另一个更长期的威胁做准备:攻击者现在正在收集敏感的加密数据并希望他们能在未来的某个时候将其解锁。这种威胁来自于量子计算机,它的工作方式跟我们今天使用的经典计算机非常不同。 它们使用的不是由1和0组成的传统比特,而是可以同时代表不同数值的量子比特。量子计算...
微软今天宣布,它将默认阻止5个Office应用程序中VBA宏脚本的执行,这是近年来影响最大的变化之一。从2022年4月初开始,Access、Excel、PowerPoint、Visio和Word用户将不能在他们从互联网上下载的不受信任的文件中启用宏脚本。 安全研究人员多年来一直要求作出这一改变,这将...