Java程序员如何清楚的认知自己的Java基础知识?
这是个泛型的问题,无有标准的答案,作为一名JavaEE开发者,起码理解会运用spring,struts,hibernate,mybati,servlet,html,jsp,restful,mq。作为一名大数据开发者,起码要理解并会运用hadoop,zookeeper,hbase,spark。作为一名架构开发者,起码要知道缓存、分布式,jvm参数优化,gc减负,各种数据结构用法,设计模式,压力测试,最好知道一些OS层面的某些限制。作为一名运维,起码要知道安全防御,各种容器中间件部署,OS层面上的东西肯定要知道,最好知道密码学一点。
这么多东西,很难说清那里是基础。
如何以java为主体,html和数据库为辅开发一个简单的博客系统?
这样一点不简单,直接用现成的比较简单,可以用wordpress。
如果只是自己用于记录的话,还是用别人的博客系统比较好,博客园简书之类的,要想少一些限制,可以用githubpage+jekyll。
真要自己撸代码写个简单的博客不难,就是知识跨度大一些,前端html + css + js,后端java nginx mysql linux服务器购买域名购买等等,如果只是mvc还行,要是前后端分离mvvm还要会更多的工具和框架,又更麻烦了,如果你不是个全栈,真的不推荐。
作为Java程序员,该如何度过自身的瓶颈期?
关于Java程序员如何突破自身的瓶颈期,我谈谈自己的看法。
在工作中突破瓶颈
首先我有一个观点,可能和很多人的想法不太一样。
大家应该看到过很多这样的说法:“工作八个小时是为了生活,下班后的N个小时是为了更好的生活,建议大家下班后如何如何”,我是不太赞成这样的说法的,我认为:
不反对下班之后花时间研究技术,但是更重要的是上班的八个小时;
“完成工作甚至超水平完成工作”,对技术能力的提高,是非常明显的,比你自学要明显的多;
工作的时候适当的有些压力,效果更好。
所以我认为,Java程序员如何度过和图片自身的瓶颈,还是以工作为主,工作以外的努力为辅。
超水平的完成本职工作
有些人不明白这个“超水平”是什么意思,反正都是完成本职工作,这还有水平的高低么?其实很多时候,程序员不是只把代码写好了就行的,还包括很多方面:
代码执行效率如何,当数据量大的时候程序运行速度怎么样;
未来需求有变化的时候,代码是否容易扩展(也要防止过度设计);
开发过程中的一些重复性工作,是否可以使用工具或框架实现,等等等等;
一定要思考,现在的工作如何能做的更好。
尝试更多的工作
如果一个程序员常年累月的只做一项工作,会很快遇到瓶颈期,那么最好的方法是超水平完成本职工作之后,尝试做更多的工作。如果你是个初级Java程序员,那么你可以:
比如在项目中负责更多的功能模块,从整体上把握项目;
把自己工作中做的好的部分,分享出来;
可以负责一些非技术类的工作,比如需求沟通,虽然和技术无关,但是会对你沟通、业务能力有提高;
如果你不知道需要做哪些工作,那么就看看比你级别高的程序员、项目经理、架构师在做什么工作。
最后,还是得利用工作以外的时间,辅助你突破职业成长的瓶颈期,在工作过程中发现自己在哪些方面有缺陷,那就花时间恶补一下吧。我之前为了弥补数据库方面的不足,还花钱报了一个培训班,按照DBA的标准培训了一番。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
其实要把目标放大点,只谈技术岗发展的话可以到技术总监,这时候给自己的定位就不要是JAVA程序员,好像再高级也就会JAVA。任何一个有规模的系统都不是靠一种语言能解决的,作为总监,必须了解至少每一类语言熟悉一种:
1,汇编语言
2,编译型语言,如C/C++
3, 基于语言运行时的语言:JAVA,C#
4' 解释型语言:javascript, python
5, 脚本语言:shell, powerscript
这些常用语言还是要会的,更多的可参考
再就是基础了,网络基础,操作系统,数据结构与算法,软件工程等。
再往复杂了就是系统架构设计了,或者往深了某一方面研究精了,如高可用,高并发,高性能计算,大数据,人工智能等,突破语言本身的提升。
首先要把自己的定位考虑清楚,目标是不是程序员。

