Java程序员最常用的技术有哪些?

haiyicha haiyicha
149
2022-05-11
下面是我本人总结的工作中常用的!不仅仅是技术,还有工作中遇到的问题,使用的工具等! 技术: 多线程:synchonize加锁,forkjoin并行处理框架,java8的parelleStream并行流,线程池Executor,threadlocal本地线程! 设计模式:...

下面是我本人总结的工作中常用的!不仅仅是技术,还有工作中遇到的问题,使用的工具等!

技术:

多线程:synchonize加锁,forkjoin并行处理框架,java8的parelleStream并行流,线程池Executor,threadlocal本地线程!

设计模式:策略模式,适配器模式,修饰器模式,单例模式,工厂方法,建造者模式等等常用的!

微服务:有springcloud和dubbo两种最常用微服务框架,配合eureka,zuul,consul,hystrix等等对服务注册与发现,网关,服务熔断等!

消息队列:最常使用的有redis,kafka,rabbitMQ,activeMQ等,各种模型侧重点不同,性能也不尽相同!

缓存:redis(单线程排除并发干扰),memcache(轻量级,多线程),ehcache(常用做本地缓存)!

文件处理:File常用类,使用OSS工具上传,下载!POI生成pdf等类型文件!

spring:用做对象管理,spring aop用做拦截器(日志,前置处理等),spring mvc成熟的web开发框架,springboot微服务!

mybatis:数据库处理框架,轻量级,可编写动态SQL!

Druid:有着监控,统计等网页显示的数据库连接池框架!

json:轻量级数据传输!

restful:一种服务暴露约定!

slf4j:成熟的日志框架!

netty:编写高性能,高并发服务器模型!

shiro:安全认证框架!

工作流引擎:activiti等!

规则引擎:drools等!

工作处理常遇到的问题:

幂等处理:防止数据重复!

分布式锁:使用场景很多,比如消息重复消费等!

全局唯一id:使用redis,uuid,snowflake等!

死锁:参见我另一个回答!

工具&插件:

maven/gradle:项目构建工具!

svn/git:版本控制工具,git分布式!

jenkins:可视化持续集成工具,可方便自动部署服务!

docker:应用容器引擎,打包应用到环境中提供服务!

eclipse:最常用IDE,有svn,git,maven,findfugs,sonar等插件,方便开发!

postman:模拟各种形式的请求!

axsure RP:原型图查看工具!

navicate-mysql:mysql可视化操作工具!

还有很多东西,一时想不起,希望朋友们添加在评论里,做一个汇总,方便你我他!很多技术分享,敬请关注。。。

从事Java Web开发,具备三年工作经验,我来尝试回答这个问题,供读者参考。Java程序员最常用的技术,从中可以看出Java基础是先决条件,而要从事完整的Java开发,数据库知识,框架开发能力是不可或缺的,而要升职加薪,与之匹配的JVM调优,常见框架和中间件的源码阅读拓展是一大加分项。

首先说Java基础,最简单的语法、语句、使用场景等不必说,常用的类和方法、集合数据结构(如set,list,map)使用常用方法字符串查找、正则匹配等等问题,还有异常处理、文件读写与解析,更高级的的多线程并发处理等,都需要去实践并有一定经验。

接着说数据库,没有数据库的Java开发是无源之水,枯燥而乏味。这里的数据库指数据的载体,常见的mysql、orcale等关系型数据库,用作缓存的redis、memcached等key-value型数据库,用作文档类型存储的hbase,用作搜索引擎的elasticsearch,这些从广义上来说都可以作为数据库,要学会根据不同的业务场景灵活选用。与之相对应的安装、启动、可视化工具等都需要了解,其个别的实现原理和集群同步机制也需要有一定的认识。

再来说说用于Java Web开发的框架,就我所用的、也是被广泛使用的轻量级的开源的Java开发框架,不可不学,不可不会,强大的spring生态圈具备强大的生产力,从Spring MVC到Spring Cloud时不时有令人惊艳的产品,其完备的企业级解决方案受到各个公司的追捧,几乎不约而同的选择spring作为基础框架。在Spring的基础上,Spring Boot+Spring Cloud和Spring MVC+Dubbo,这两条主流的技术栈用到的相关技术也都是常用的内容。

再来说说JVM调优,用到的次数不多,但是面试过程中总会被问到,是一个定薪资水平的重要参考。JVM就是Java虚拟机,与底层架构、操作系统联系紧密。JVM相关知识就与虚拟机、底层相关了,这部分知识包括:JVM内存模型和JVM内存管理,感兴趣的同学可以深入了解。

最后说说常见框架和中间件的源码阅读拓展,这部分的层次比较高,需要你对JDK源码有所了解,在此基础上看框架和中间件的源码,如Spring源码、Zookeeper的源码等,在读源码的同时,深入了解其实现原理和架构思想,读一些简单的spring-boot-starter,能够写自己常用的starter,这样就说明你读了,并且有所收获。

上面的很多内容都是泛泛而谈,除了这些内容,还有很多没有讲到,比如大数据处理组件Hadoop生态圈、Storm流处理组件、高性能消息服务Kafka等也或多或少需要了解,并具备相应的开发能力。

作者:夕阳雨晴,欢迎关注我的头条号:偶尔美文,主流Java,为你讲述不一样的码农生活。

谢邀~

对于这个问题,我也不太好说Java开发最常用的20%是什么,我就说说自己工作中,最常用的技术有哪些。

Java语言本身

一些Java最常用的包、类:例如String、collections(List/Map/Set)、IO、网络;

常用的库:common库、guava库;这些都值得研究源码;(guava库是有一次我在做接口调用的限流时找到的,大名鼎鼎,只是我孤落寡闻)

多线程:synchronized、lock、volatile、线程池;

JVM:内存模型、内存管理、堆和栈、垃圾回收;

常用的设计模式:工厂、单例、代理、策略、门面、观察者等;不要为了用而用;熟悉设计模式方便阅读其他框架的源码;

JDBC、异常处理、反射、序列化、Annotation、Cache;

熟悉每个Java版本的新特性。

Java框架、软件、工具

这就有些多了,我就说些常用的吧。

Spring的大多数框架,都值得一学。我就把它们放在一类里面了Spring、Spring MVC、Spring boot;

ORM框架:Hibernate、Mybatis、JPA;

各种常用的数据库连接池:DBCP、C3P0、HikariCP、Druid(我们现在用这个);

各种消息队列:我们用到的是RabbitMQ和Kafka;

关系型数据库:这个根据项目来吧,Mysql或Oracle或DB2

非关系型数据库:MongoDB、Redis(可以当做缓存用);

微服务框架:Dubbo或Spring Cloud,我们是用后者,里面的内容非常多;

接口:Restful

安全认证框架:Shiro、Spring Security;

项目构建工具:Maven;

版本控制工具:Git、SVN;

自动化部署:Jenkins;

容器:Docker;

负载均衡:Nginx、LVS;

Devops

想到多少写多少吧;这些基本上覆盖了我工作中常用的技术、框架、软件。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

有两年工作经验的老程序员拥有广阔的技术面,同时在工作过程中也总结出了经常使用的是其中20%的技术。特别是刚刚入门的初级程序员,可能没有那么多能力和时间学习所有的知识点,那么需要掌握的就是这20%的重点技术点,相信面试官也能理解一个新人的技术实力。下面和大家一起讨论一下,java程序员经常使用的其中20%的技术有哪些。

第一、学会一个web服务

J2EE服务器——tomcat、Nginx、httpd等。其实要掌握的也简单那,知道什么文件部署在什么地方,只要会下载,能启动,能知道最直接、最关键的配置文件名字和位置就可以了。其他的服务器的名字了解一下就足够了。

第二、会一个框架

建议你学spring MVC,因为所有的mvc框架都类似,只要坚持学习了MVC,其他的SSH、SSM等是容易借鉴的。作为一名新人在面试的时候可以说你自己擅长的,其他的框架了解一点点原理就行了,但是欠账还是要补上的,虽然说平时用顺手的框架也就那么几个,但是后期还要继续学习。

第三、数据库

mysql关系型数据库就很好,坑浅应用多,最近连集群支持的都很好了,你只要强调一点,数据库,你不是DBA,你还不懂如何调优,如何调执行计划,你只懂增删改查,所以你要学的就是T-SQL,标准是你能手写带条件的增删改查,会复杂语句更好,稍微了解下sql效率方面的问题,为了面试也是可以。MSSQL在国内被鄙视的不行,如果有人叫你弄oracle,那又是太装逼,我身边有一票的5年+程序员,其中有超过一半连oracle的AWR都不会读,有的连数据字典都不知道。

第四、程序方面

jdbc需要了解下,相关的有连接字的写法,如何准备和获取结果,什么是resultset这类东西,当然,数据库连接的关闭和释放也是需要的。

类和抽象类和接口的关系搞清楚,继承和实现搞清楚,重载重写搞清楚这些都是基本概念。

由于java主要是B/S结构,无论是集成还是自己的前后端,你都要看一下http,整个http的生命周期是什么?存在哪些步骤和不同的application负责哪个阶段,相关的有几个request和response实体,包含什么是session了解下。

业务逻辑的话,上手仔细写几个例子就好了

第五、IDE

你总逃不过eclipse和几个大厂的东西。要用简单易用的,别花太多时间在这个上面。

第六、设计模式

你要稍微看一下,了解什么是设计模式,你大可以老实说,你根本刚入行,只是粗通工厂模式和单粒,其他的需要在工作中学习,这样既不会显得完全不懂,也不会出什么纰漏。

第七、前端

前端不需要了解太多,JSP+JS就足够了。jsp上有个容易忽视的基础点:tag到底是什么如何处理。jsp的生命周期这些也最好看一下。

基础的devops稍微了解下, git的代表,github可以注册一个账号,搞清楚本地repo和远程repo之间的关系即可。SVN更为简单一点。

Maven也要学习一下,主要是pom文件的几个主要的部分,尤其是depedency。

code smells方面手写万把行代码。自己有个感觉,不用去刻意背javadoc。

其他相关 RELEVANT MATERIAL
我是小白,想学爬虫、js,有什么好的建议吗?

我是小白,想学爬虫、js,有什么好的建议吗?

haiyicha haiyicha
978
2022-05-11
什么是爬虫 爬虫是一个很有意思的东西,对个人而言,我们可以通过爬虫,获取我们感兴趣的内容,包括文字小说,图片,视频,对企业来说,我们可以通过爬虫,获取行业有价值的信息,假如我们从事淘宝客,我们可以通过爬虫,API调用等方式,及时,迅速,大批量的获取推广链接商品等,其实说......
初中生学啥技术有前途?

初中生学啥技术有前途?

haiyicha haiyicha
678
2022-05-11
初中毕业后,你是有很多选择的。 除了继续读高中,你可以选择读中专(或中等职业技术学校),也可以选择读技校。读中专和技校都可以使你学到一技之长,为今后择业打下良好基础。而且,读中等职业技术学校还可以参加另一种渠道的高考,进入大学深造。 不建议初中毕业就直接参加工作,那样对......
鲁班开发者平台有哪些案例?

鲁班开发者平台有哪些案例?

haiyicha haiyicha
737
2022-05-11
现在,鲁班软件推出活动,注册即可享受鲁班开发者平台的30天免费使用,同时,鲁班开发者平台可广泛应用于应用场景,例如:智慧工地,基于Motor开发工地可视化平台,打通云端、PC端、Web端以及BIM数据流,承载地形和BIM模型数据;智慧工地web版,园区工地第三施工段,使......
讯飞学习机学习英语怎么样?

讯飞学习机学习英语怎么样?

haiyicha haiyicha
573
2022-05-11
很不错哦,主要是科大讯飞有一个很强大的语音交互技术,这个技术在英语学习里面,让你在对话交流和发音上都能够进步更快。......
想学习重庆小面技术,不加盟只学技术,怕上当,有学过的朋友哪儿好呢?

想学习重庆小面技术,不加盟只学技术,怕上当,有学过的朋友哪儿好呢?

haiyicha haiyicha
286
2022-05-11
重庆小面技术培训有很多家,没有几家做的好的,其实重庆小面的特色就是肥肠小面,此肥肠要做到香,糯,软,弹。没有实力的技术是很难做到的,还有就是重庆小面的秘制红油。一般的技术是搞不定的。我建议还是到鼎味鲜小吃培训学习下。味道比较正宗,老师教的认真。还免费技术升级!......
女儿马上一年级了,是否应该去学一些跆拳道之类的防身术?

女儿马上一年级了,是否应该去学一些跆拳道之类的防身术?

haiyicha haiyicha
746
2022-05-11
适当的练习防身是有必要。 安全的需求是人类的本能,虽然法律社会已经很安全,但是幼小的儿童在日常生活中还没有学会处理人与人之间的复杂情感,有些甚至是简单粗暴的方式,他们这个阶段更多的是一些原始办法处理问是。这也是校园欺凌事件一直都有发生的缘故之一。 跆拳道只注重腿法,忽视......
评论 SAY SOMETHING
年度爆文