十年Java架构学习经验总结:第六点尤为重要
你有没有静下心来思考过:同样是做了x年Java开发,为什么你的技术比别人差很多?为什么别人每月28K你却只有10K?
其实技术水平的高低和个人智商关系不大(毕竟能做Java编程开发大家都不会差),主要和勤奋程度、提升方法有关。
勤奋程度不必多说,全靠自我监督和自制力。在这里我们详细谈谈提升方法,毕竟好的提升方法会让你事半功倍。到底有哪些有效的好方法,能帮助我们进阶成Java高级工程师呢?
下面这3种方法,你应该加以重视:
吃透基础技术
养成良好的阅读源码的习惯
有长期的技术学习规划
下面,我们来一起逐条看看,特别是第 3 个方法。
吃透基础技术
基础技术是各种上层技术共同的基础。吃透基础技术是为了更好地理解程序的运行原理,并基于这些基础技术进化出更优化的产品。很多分布式系统架构,以及高可用、高性能、高并发的解决方案基本都可以在基础技术上找到它们的身影。所以,对基础技术的学习才能够更好地掌握更高维度的技术。
很多人会觉得底层技术博大精深,从语言、编程范式、算法和数据结构、计算机原理、网络、数据库、分布式技术等等,怎么可能有时间去掌握这么多东西呢。这确实需要持续学习的毅力,现在很多技术大牛仍在夯实扩展自己的底层技术,自己就更没有理由忽视这一块了不是吗?
养成良好的阅读源码的习惯
源码阅读,尤其是针对你正在使用的第三方库。千万不要面试的时候,什么源码都未学习过,理由就是业务太忙,更有甚者说“我觉得没用”。
阅读源码要能回答两个问题:要解决什么问题+是如何实现的?大到整个项目,小到一个模块、函数,看的时候都要抱着这两个问题去看。看完了这两个问题能答上来,才是有效。
阅读源码时建议你这么做:
背景调查:看官网介绍、维基百科,了解主要功能,被应用于哪些项目以及基本的使用,掌握这些基本信息
使用框架:至少follow“Get Started”做个小demo(真的有人连API都没调用过,上来就看代码)
尽可能编译调试。能调试的代码,几乎没有看不懂的
了解一些设计模式。这样看到名字里有proxy,builder,factory之类的,就心领神会了
横向分层,纵向分块。代码都是分模块的,有的是core,有的是util,parser之类的,要知道看的是哪一层,哪一块。有的小项目分层不明显也不必强求
注意:要看的不只是语法上的技巧,更重要的是设计上的思路和原理。知易行难,把养成良好的阅读源码习惯提上日程吧!
有长期的技术学习规划
Java进阶之路离不开一个长期学习规划的指引。你可以制定一个系统的学习路线,帮助你全面提升技术水平。当然,对于每个Java程序员来说,几乎都有一个成为架构师的梦想。
以前我一直被公司和技术牵着走,并不是自己在选择技术,而是不自觉地被推到了这个位置上。想想有多少人对于自己将来要从事的职业和技术类型进行过深入思考和比较呢?当我跳出编码后,我开始思考和程序及程序员职业生涯相关的问题,最后发现,影响我们走入今天的困局的竟然是一些我们常常挂在嘴边的话。
今天,就为大家整理一份目前互联网公司最主流的技术选型:
除了这份路线图,还收集了一些关于Java高并发、分布式、JVM、spring源码分析以及性能优化,设计模式等相关的技术资料(电子书)一并分享在我的填坑之路大家庭里(860113481),欢迎大家来里下载学习以及交流讨论。
一。深入内核,直击故障,拒绝蒙圈
二。应用框架 源码解读
站在巨人的肩膀上,收货不一样的视野
三。分布式
成为互联网架构师,你想要的都在这里
四。微服务
你还不知道微服务》那怎么加(zhuang)薪(bi)
五。团队协作
让你的团队开发效率提升十倍的秘密都在这里了
六。B2C商城项目实战
撸起袖子干实事项目经验那点事
欢迎工作一到五年的Java工程师朋友们加入Java填坑之路:860113481 下载电子书学习资料以及视频学习资料!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
4.4管道和中间件介绍「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,谢谢关注。 管道流 我们知道一个管道可以有一个或多个中间件,而中间件的职责是根据HttpContext处理HTTP请求,然后往Response里填充东西,最后完成整个Response的输出。了解管道流机制,就能知道如何利用管道进行拦截,自定义封装中间件等高级操作,所以学习管道流机制对我们编码有质的提高。那么管道数据是如何流通的呢?如下图所示,Request进入Middleware 1,叠加一层逻辑代码到HttpContext(切确说是HttpContext的Response对象),然后调用next()进入到下一个Middleware 2,依次递推,最后所有的逻辑代码叠加完毕后返回前端。 管道实践 IApplicationBuilder构建管道有两种方法,分别是Use和Run方法,他们的区别在下面会谈到。 app.Use方法 这里先了解Use方法的第一个重载,如下图所示,他是一个类型为委托的中间件(middleware)。 这个中间件同时携带一个next的RequestDelegate委托,可以实现调用下一个管道中...
- 下一篇
Redis和编程语言的纠缠
Redis和编程语言的纠缠 前言 Redis是一个开源的底层使用C语言编写的key-value存储数据库。可用于缓存、事件发布订阅、高速队列等场景。而且支持丰富的数据类型:string(字符串)、hash(哈希)、list(列表)、set(无序集合)、zset(sorted set:有序集合) 在单节点服务器我们通常是这样的 随着企业的发展、业务的扩展。面对海量的数据,直接使用MySql会导致性能下降,数据的读写也会非常慢。于是我们就可以搭配缓存来处理海量数据。 于是现在我们是这样的: 上图只是简述了缓存的作用,当数据继续增大我们需要利用主从复制技术来达到读写分离 数据库层直接与缓存进行交互,如果缓存中有数据直接返回客户端,如果没有才会从MySql中去查询。从而减小了数据库的压力,提升了效率。 平时发布了一款新手机,会有抢购活动。同一时间段,服务端会收到很多的下单请求。 我们需要使用redis的原子操作来实现这个“单线程”。首先我们把库存存在一个列表中,假设有10件库存,就往列表中push10个数,这个数没有实际意义,仅仅只是代表10件库存。抢购开始后,每到来一个用户,就从列表中pop...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- 设置Eclipse缩进为4个空格,增强代码规范
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境