百科问答小站 logo
百科问答小站 font logo



Java程序员,最常用的20%技术有哪些? 第1页

  

user avatar   chao-li-11 网友的相关建议: 
      

再次更新一波,也是近一段时间以来不断学习和思考的感悟。不过这一次跟技术栈无关,纯讲心法。(2017-2-11)

1、基本的数据结构和算法真的非常重要:不管你做过多少项目或者是熟悉多少框架和工具,面试和考察一个人还是大部分停留在基本功上。所以,在每天工作开发之余,应保证一定的时间段不断去打磨自己的基本功:保证每天一俩道算法题,尝试去探索java每一个数据结构的实现原理,最后通过技术博客记录自己的成长与收获。

2、用框架的同时尽量去探索底层的源码实现,比如Spring,每次看源码都会有不一样的收获。从而使得自己在使用框架开发时不至于太被动。即使是在面试的时候,面试官也不会希望你对框架的理解仅仅停留在使用上。

--------------------------

更新...(2016-10-10)

我居然把庞大的Spring家族给忘了...实际上是基本上每天都在用的额,以下再补充几点重要的知识:

9、Spring系列:我不说Spring MVC 还是Spring Boot等具体名词,因为spring真的是个庞大的生态圈额(Cloud、NoSql、Redis等等)。虽然Spring Mvc比较火,但是对于微服务的开发我建议使用Spring Boot,而且Spring Boot势头确实猛啊...能够把开发效率之少提升一个档次...

10、Jersey:Spring Boot +Jersey 这俩个构成完美的服务接口Resultful开发组合。Jersey是Resultful开发框架,这个也是微服务开发的基础,使用也很简单方便,尤其是可以在其上自己封装请求的过滤层。

11、zuul: 应用层上的网关实现,通过Spring Boot组合使用,构成微服务体系的基本架构,原理图如下:

12、掌握一款开源的分析和搜索引擎 Elasticsearch or Solr。业务相关,为了将基础数据整理给数据做分析,最近在学ES,所以比较推荐,是一款分布式的开源搜索引擎。关键是spring boot还集成了这俩个了有木有。 这些都是目前在用的算是比较时髦的技术吧...不过啊,用轮子的感觉是永远跟在别人屁股后面走,所以在使用的同时,多看看技术的实现原理,深入源代码,然后自己尝试在其上封装自己想要的功能或者干脆单独造个轮子。以上只是说熟练使用事实上每一项都要熟练掌握原理太难,但是现在的发展速度...谁能快速且熟练地使用好工具,在某种程度上其实也是走在了前面。

13、数据库也忘了,mysql作为java工程师的高频面试考点居然也忘了...嗯,mysql在java中还是王道,所以对mysql的理解也不能仅仅停留在简单的使用上。InnoDB作为使用率最高的存储引擎,应该对其进行深入的探索。推荐书籍:《Mysql技术内幕 InnoDB存储引擎》

原答案分割线...

------------------------------------

作为一个提供分布式服务接口的java工程师,需要熟练具备以下技能点:

1、java基本语法:最好能偶尔使用java8 lambda简化代码逻辑,google的guava库等等

2、docker基本使用:如今越来越多的公司选择将服务部署在docker上,构成独立的服务云平台,而且docker操作和资源调度分配很爽的。

3、消息队列:kafka、rabbitmq、notify、metamq等等,消息队列作为处理高吞吐量,不计较及时结果的应用场景的工具非常受欢迎。所采用的实际应用手法就是消息队列+补偿机制。

4、zookeeper或Etcd:这俩种都是分布式服务提供服务的注册中心,通过它们可以实现多服务多机器部署且实现负载均衡。

5、RPC:远程调用的场景使用越来越广泛,特别在分布式服务中更加离不开它。它能使多个服务间的调用如同调用本地方法一样简便。针对RPC的实现使用较为广泛的有Thrift、protobuffer等。

6、Netty:是一个高性能、异步事件驱动的NIO框架。能为RPC提供高性能的调用

7、git和maven等项目管理及依赖包管理的工具,这是协作开发的基础。

8、Redis:差点忘了这个必知必会的技能...Redis作为高性能的内存数据库,基本覆盖了访问量大的服务缓存。当然memcached前几年用的也居多,不过功能可被Redis替代。除了缓存也可以提供分布式锁机制。




  

相关话题

  为什么我学个JAVA就已经耗尽所有,而有些人还能同时学习多门语言? 
  自学编程这条路我能继续走下去吗? 
  为什么大部分程序员都喜欢用黑色界面? 
  c#中没有友元类那么这种设计是否不太合理,如何修改才能得到更好的方案? 
  面向对象编程中, 接口既然不能直接描述方法, 要他有何用? 
  脚本语言是必然趋势,在开发成本面前,其他都是浮云。现在的问题是,把解释语言转成编译语言的转换器,如Java的JIT compiler,你认为最近Facebook开源的JIT PHP编译器及虚拟机,是否可以提供这种可能性? 
  为何部分程序员从不使用 break 或 continue 语句? 
  能否清晰明了的讲解一下系统架构师,项目经理,系统分析师之间的差异区别? 
  这篇博文c#比JAVA慢这么多 为什么? 
  Java 为什么不采用 360 垃圾清理来进行垃圾回收呢? 

前一个讨论
所谓「忘记」,是大脑没有储存,还是有储存但检索不到?
下一个讨论
湄公河大案如果被杀的是美国、欧盟成员国、俄罗斯、以色列的公民,这些国家会有什么行动?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利