java程序员最常用的技术有哪些?
谢邀~
对于这个问题,我也不太好说Java开发最常用的20%是什么,我就说说自己工作中,最常用的技术有哪些。
一些J***a最常用的包、类:例如String、collections(List/Map/Set)、IO、网络;
常用的库:common库、gu***a库;这些都值得研究源码;(gu***a库是有一次我在做接口调用的限流时找到的,大名鼎鼎,只是我孤落寡闻)
多线程:synchronized、lock、volatile、线程池;
常用的设计模式:工厂、单例、代理、策略、门面、观察者等;不要为了用而用;熟悉设计模式方便阅读其他框架的源码;
JDBC、异常处理、反射、序列化、Annotation、Cache;
熟悉每个J***a版本的新特性。
计算机基础 :熟练掌握计算机网络、数据结构和算法、操作系统,了解计算机组成原理
Linux : 熟练使用 Linux,有 Linux 下开发的实际经验
J***a:熟练掌握 J***a 基础知识、J***a 并发、JVM,有过 JVM 排查问题和调优的经历
数据库:熟练掌握 mysql 数据库以及常见优化手段(比如索引、SQL 优化、读写分离&分库分表),redis 使用经验丰富 ,熟悉 MongoDB,及oracle数据(存储过程,定时任务)。
搜索引擎 :熟练掌握 Elasticsearch 的使用及原理,熟悉 Solr 的使用
框架:熟练掌握 Spirng boot,spring、Spring MVC、 SpringBoot、MyBatis、JPA、Spring Security 等主流开发框架
分布式:
高并发&高可用 :熟练掌握消息队列 RabbitMQ的使用及原理 、有限流、降级、熔断的实战经验、
工具:熟练掌握 SVN、M***en、Docker
前端:熟悉 jquery,有 React、Vue 的实际开发经验
框架: springboot
数据层: mybatis-plus
缓存数据库:redis
数据库mysql
负载均衡: Nginx
谢邀。我是极客宇文氏,很荣幸回答这个技术含量比较高的问题。
毫无疑问最常用的是lang包,里面包含最基础的最常用J***a类。
***类,比如hashmap,arraylist,这两个封装数据结构几乎是编程必用。
线程类以及线程池相关类,这个不用多说,实现异步,实现线程安全,是个大学问。
缓存:Redis毫无疑问是主流,缓存的使用各种各样,但是最终目的就是提供读取数据的便捷。
负载均衡:Nginx,不接受任何反驳。
MySQL,应用最广的数据库之一,中小型企业基本上都是用MySQL,轻量级数据库,简直为J***a量身打造。
从事J***a Web开发,具备三年工作经验,我来尝试回答这个问题,供读者参考。J***a程序员最常用的技术,从中可以看出J***a基础是先决条件,而要从事完整的J***a开发,数据库知识,框架开发能力是不可或缺的,而要升职加薪,与之匹配的JVM调优,常见框架和中间件的源码阅读拓展是一大加分项。
首先说J***a基础,最简单的语法、语句、使用场景等不必说,常用的类和方法、***数据结构(如set,list,map)使用常用方法字符串查找、正则匹配等等问题,还有异常处理、文件读写与解析,更高级的的多线程并发处理等,都[_a***_]去实践并有一定经验。
接着说数据库,没有数据库的J***a开发是无源之水,枯燥而乏味。这里的数据库指数据的载体,常见的mysql、orcale等关系型数据库,用作缓存的redis、memcached等key-value型数据库,用作文档类型存储的hbase,用作搜索引擎的elasticsearch,这些从广义上来说都可以作为数据库,要学会根据不同的业务场景灵活选用。与之相对应的安装、启动、可视化工具等都需要了解,其个别的实现原理和集群同步机制也需要有一定的认识。
再来说说用于J***a Web开发的框架,就我所用的、也是被广泛使用的轻量级的开源的J***a开发框架,不可不学,不可不会,强大的spring生态圈具备强大的生产力,从Spring MVC到Spring Cloud时不时有令人惊艳的产品,其完备的企业级解决方案受到各个公司的追捧,几乎不约而同的选择spring作为基础框架。在Spring的基础上,Spring Boot+Spring Cloud和Spring MVC+Dubbo,这两条主流的技术栈用到的相关技术也都是常用的内容。
再来说说JVM调优,用到的次数不多,但是面试过程中总会被问到,是一个定薪资水平的重要参考。JVM就是J***a虚拟机,与底层架构、操作系统联系紧密。JVM相关知识就与虚拟机、底层相关了,这部分知识包括:JVM内存模型和JVM内存管理,感兴趣的同学可以深入了解。
最后说说常见框架和中间件的源码阅读拓展,这部分的层次比较高,需要你对JDK源码有所了解,在此基础上看框架和中间件的源码,如Spring源码、Zookeeper的源码等,在读源码的同时,深入了解其实现原理和架构思想,读一些简单的spring-boot-starter,能够写自己常用的starter,这样就说明你读了,并且有所收获。