j2ee培训(java自学要学习多长时间)
资讯
2023-11-21
463
1. j2ee培训,java自学要学习多长时间?
想要成为一名Java程序员,你需要具备基本的J2EE技术(JSP、Servlet、Java语言)、SSH(Struts、Spring、Hibernate)框架开发、一定的数据库设计能力和数据库使用经验、熟悉Web开发技术(比如html+css+Javascript,会ajax更好)。
1.多动手实践,不能因为有些内容比较简单,就觉得自己一定能够做到。很多时候,你明明知道这个问题有哪些步骤,该如何处理,然而在实际操作的过程中却无从下手。
2.多转变自我的思维,在编程的过程中,我们面对的是机器,而不是人。在编程的过程中,我们最好是把自己当成一台机器,减少跳跃性的操作来降低出错的可能。
3.多与技术人才交流,在实际学习的过程中,会遇到各种各样的问题,在这些问题中,绝大多数的问题都是靠书本无法解决的,你还需要多与技术人才交流,自己积极主动的去解决。
如果你是零基础学习Java的话,可以选择专业的学习方式,你就可以从零到一学好Java开发知识。当然,除了系统完整的零基础Java学习路线之外,你还需要一个专业负责的老师指导,这样在遇到问题时就可以及时解决。
2. Java工程师到底是做什么的?
1、Java是什么?
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
Java百度百科介绍:https://baike.baidu.com/item/Java/85979
2、Java工程师到底是做什么的?
Java工程师,直白点来说,就好比你在做家具时,需要在模板上弄些花纹,但是需要一个工具来做花纹,Java也是一样,它只是一个工具。Java应用可以说是无处不在,它的用途就是完成软件的设计,开发,测试,修改bug等工作,包括业务需求的沟通,功能模块详细设计,业务功能实现与单元测试,系统维护等等。
Java工程师岗位职责:
负责客户端APP产品中服务器后端的工程设计,架构设计以及开发工作
研究业界最新技术及其应用,解决创新研发过程中的关键问题和技术难点
根据项目任务计划按时完成软件编码和单元测试工作
按照开发流程编写相应模块的设计文档
与产品经理、测试工程师、其他团队沟通合作,保证产品研发工作的质量和进度
协调或指导团队里其它开发人员的工作。
一种主流后端语言编程经验:Java,或Scala,或Node.js,或Python
精通主流Web应用开发框架(Spring,Play!,Express,Django,等等);熟悉SOA和Web Services(REST,SOAP)系统框架;熟悉主流应用服务器(Tomcat,JBoss,Apache,Nginx,等)
精通数据库设计和性能优化;熟悉主流RDBMS和NoSQL数据库(MySQL,MongoDB,Memcached,Redis等),以及数据库编程(SQL, JDBC, iBatis,OpenJPA, 等)
熟悉常用工程工具:Jenkins, Maven/Sbt/Npm/Ant,Git/SVN,Eclipse/IntelliJ,等等
熟悉设计模式,熟练掌握面向对象编程和事件驱动编程风格
有热情,酷爱技术,有良好的计划、沟通、组织协调能力、语言表达能力;较强的逻辑分析能力和应变能力;良好的团队合作精神
当今,处处都能见到Java的身影,美国大型太空项目中,也使用了Java来开发控制系统和相关软件,如此广泛的应用范围也造就了Java工程师的辉煌。
3、Java工程师就业方向有哪些?
(1)Java与电子商务
电子商务是当今的热门话题,然而传统的编程语言难以胜任电子商务系统,电子商务要求程序代码具有基本的要求:安全、可靠、同时要求能与运行于不同平台的机器的全世界客户开展业务。
Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的语言。
(2)Java 企业级应用开发
Java EE是目前开发企业级Web应用的主流框架技术,在当今企业级项目开发中与微软公司的MS.NET一起构成两大核心框架技术。Java EE的主流应用服务器和集成开发工具。
主要内容包括JavaEE框架核心结构、应用服务器、集成开发工具、Servlet组件编程、请求处理编程、响应处理编程、会话跟踪编程、ServletContext对象和应用、过滤器编程、器编程、JSP、EL和JSTL、JNDI服务基础和编程、JDBC服务编程、JavaMail编程和JavaEE MVC式架构应用。
(3)Java网站建设
近几年来,网站建设业务一直呈快速上升势头,行业市场越来越大。就国内情况而言,沿海发达省市比中西部省市市场需求要大,业务普及工作也很到位,许多行业形成了竞相建设企业网站,开展网络营销的局面。新技术的应用将促使企业网站建设更具魅力。
Java编程语言,.net技术和服务器CDN技术也将使网站结构更紧密,访问更流畅,更能适应新的要求。但是以目前的市场分析Java做网站成本太高,对硬件要求比较高,中小企业会放弃,但是像大企业还是比较喜爱Java技术。
(4)Java游戏编程
对于游戏开发来说,由于涉及到比较复杂的情况,开发过程很多时候是一个不断修改的过程,可以方便的修改游戏内容是十分关键的。
对于很多游戏引擎来说,都有自己编写的脚本解释器,用来解释一些自定义的游戏脚本语言(一般为命令式脚本,比如moveplayer(intx,int y),playersmile()之类的东西),另一些则提供了例如lua和rubby等的脚本语言来访问游戏引擎。
由于其虚拟机特性,Java本身就可以用来编写游戏脚本,目前也有例如beanshellgroovy等脚本语言可以方便的无缝的和Java语言进行交互,这些都极大的方便了Java游戏编程。
4、Java工程师职业方向
1、成为管理人员,例如产品研发经理,技术经理,项目经理等继续;
2、二是技术工作之路,成为高级软件工程师、需求工程师等。
Java软件工程师一般月薪范围在6000-10000元,远远超过了应届毕业生月薪2500元的平均水平。通常来说,有一年工作经验的Java高级软件工程师的薪酬大致在年薪10—13万左右。
Java就业方向:可以从事JSP网站开发、Java编程、Java游戏开发、Java桌面程序设计,以及其他与Java语言编程相关的工作。可进入电信、银行、保险专业软件开发公司等从事软件设计和开发工作。
整个互联网在不断发展,Java技术也在不断进步,Java应用会越来越广泛,人才需求当然也不会止步于当前,未来优秀Java工程师将成为市场争抢的资源。所以,你还有什么理由不学Java呢?
3. 厦门渊亭信息科技有限公司怎么样?
挺好的。
厦门渊亭科技有限公司是一家专注于数据智能、致力于“行业+数据智能”解决方案的创新型公司。
本着“价值发现、利用、创新”的理念,公司自主研发了通用知识图谱技术工具(DataExa-Sati认知智能平台)、自动化AI中台(DataExa-Insight人工智能中台)、DataExa-Maya 智能问答平台、DataExa-Kamala 自然语言处理平台、DataExa-Rama搜索平台等一系列数据智能产品,主要技术涉及知识图谱、图计算、大数据、机器学习(深度学习)、自然语言处理、J2EE、微服务、大数据可视化、前端开发等,将数据服务提升到知识服务。
4. 怎样学习Java?
感谢邀请。
我自己也是一名软件开发工程师,目前在杭州某电子商务公司进行中间件软件的开发。职业生涯中用过C++,C#,Java,Python,Go等语言,使用最多的也是Java语言。接下来我就谈谈我对Java开发的一些理解,谈一下我是怎么学习Java的吧,希望能对想学习Java的有些帮助,能够抛砖引玉就很开心了。
Java语言学习Java语言之前,先来认识一下Java语言吧,这样对我们学习会有好处。
Java是一门面向对象编程语言,即经常说的OOP(Object Oriented Programming)。说起面向对象编程,大部分人在大学时应该都学过了C++语言,C++是很经典的面向对象语言。Java吸收了C++的OOP思想,同时也摒弃了C++中一些难以理解的元素,比如指针,多继承等。所以,Java语言同时具有了功能强大和简单易用的优点。
JVM说起Java,就不得不说Java的一个很重要的特性了,那就是JVM(Java Virtual Machine)。Java语言一经发布就收到了巨大的关注和欢迎,一门新的语言,能够迅速流行,肯定是在某些方面有着巨大的进步。尤其是在老前辈C,C++面前。
JVM是Java语言和同时代语言相比的一个重大突破。Java的口号是“Write Once, Run everywhere”。用Java语言编写的应用,只需编写一次,可以在各个平台运行,包括Window,Linux,Mac等。简言之,Java应用可以跨平台。目前有很多的跨平台语言,但是在当时,这可谓是一个巨大的突破。使用Java语言可以极大的减少跨平台应用的开发成本,收广大开发者和企业的欢迎。
JVM是如何做到跨平台呢?软件是运行在操作系统之上的,而不同的操作系统的内核,系统API都是不同的。这也导致了不同操作系统的软件不能在其他系统上直接运行。比如Windows的exe文件在Mac上无法运行。Mac的app软件在Windows上也无法运行。
计算机系统软件体系结构采用一种层的结构,有人说过一句名言:
计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决JVM也是采用了这种方法。即Java代码不是编译成可在各平台直接运行的二进制文件,而是编译为一种Class文件。Class文件运行在JVM中,JVM负责将Class文件翻译成各平台的二进制文件。通过引入JVM中间层,Java应用实现了跨平台功能。
JVM工作原理如下图所示:
在学习Java的时候,要记住Java的JVM特性。这样对后续的Java学习很有好处,比如后面我将要提到的动态代理,AOP等特性。
Java开发环境搭建知道了Java的JVM原理之后,搭建Java开发环境就很简单了。不同的操作系统上需要安装平台相关的Java开发工具,即常说的JDK,或JRE。
JDK = JRE + 开发工具。JRE是Java应用的运行时环境,是必须的。JDK包含了JRE和开发工具(比如调试,日志,监控等)。安装Java有两种方式:
安装文件安装:手动去Oracle官网下载安装文件,进行安装。
包管理工具安装:在Mac平台推荐使用Homebrew安装;Linux上使用apt-get或yum来安装。
Java IDE推荐工欲善其事必先利其器一个好的开发工具,能为我们提升效率。
Java IDE有很多,比较主流的有Eclipse和IntelliJ IDEA。强烈推荐IntelliJ IDEA,比Eclipse要强大很多,唯一的缺点是IntelliJ IDEA完整功能是收费的。不过,作为日常开发,社区办已经足够强大,满足我们的需求了。如果想使用IntelliJ IDEA商业版,可以购买,获得更好的体验。
另外,如果资金不足,可以去网上找找破解版本,作为学习使用。不过,还是推荐使用正版软件哦。Java一些容易混淆的概念我是从C#转Java的。C#是微软闭环的一个开发语言,刚开始接触Java时,还没开始写代码,就已经被Java各种概念弄的晕头转向。接下来我就理清一下那些容易混淆的概念。
Java1.6和Java6:关于Java的版本,经常看到Java 1.6和Java6的说法。其实Java 1.6和Java6是同样的版本,只是叫法不一样。目前在使用的版本一般都是Java 6或以上了。
Java SE,Java EE,Java ME:是很早的时候提出来的一些概念,现在基本已废弃了,其实可以不用关注了。但我还是简单说明一下吧,Java SE:Java Standard Edition,可以认为是Java的核心。Java EE:Java Enterprise Edittion:Java企业版,基于Java SE,添加了一些企业开发的特性,用于开发企业级的大项目。Java ME:Java Mobile Edition:移动端开发版本。现在基本没有这样的区分了,在Oracle下载Java时,也只有Java SE。Java SE就是Java。
J2EE:J2EE就是Java EE。这个概念也基本被废弃了。不用太关心。
Apache:Apache是一个开源软件基金会,也是一款Web服务器,同时还是一种武装直升机。。。。
学Java即学习Java的生态这是我自己感触最深的一点,学习Java最重要的就是要学习Java的生态。这也是刚学习Java时,大部分人比较迷茫的。学习其他语言时,主要的精力可能在学习语言本身。而学习Java,将会需要花费大量的精力来学习Java生态中的各个组件,类库,框架,产品等。当然Java语言本身也是很重要的,需要花很多时间来学习。下面我就列一下Java常用的组件吧:
Tomcat:Web容器。用于运行Java的Web应用。
Jetty:Web容器。
Maven:项目构建工具。大多数的项目都是使用maven构建的。
Gradle:角色同Maven,是Maven的下一代,升级版。但市场普及度不如Maven。
Spring:Java中最常用的框架。几乎所有的项目都会使用。我会在后面单独介绍。
Mysql:数据库。Java应用一般选择Mysql作为数据库。
Mybatis:数据库访问框架,简化数据库访问。
Netty:网络通信组件。简化网络编程。
log4j:Log for Java的缩写,一款日志框架。
junit:Java Unit的缩写,Java的单元测试框架。
Apache Commons:Apache提供的通用功能的类库。比如字符串处理,集合处理等。
上面列出的是现在使用比较多的框架,一些过时了的比如Structs,Hibernate就不列举了。框架太多了,一些过时的就不要去学习了,不要迷失在眼花缭乱的框架中。有时间可以慢慢了解。
SpringSpring框架,是目前Java生态中最重要,也是使用最广的一个框架了。Spring框架由最初提供的一些核心功能,发展到今天,已经是一个非常完整的生态了。
Java是一个大生态,Spring是这个大生态中的另一个大生态。为什么Spring如此重要,Spring提供了什么功能呢?
Spring最重要,最核心,最有价值的地方其实就两点:
IoC:Inverse of Control,控制反转。
AOP:Aspect Orentied Programming,面向切面编程。
什么是IoC?我第一次接触IoC时,我是一脸蒙圈的,我问了隔壁搞了一年多Java的哥们,什么是IoC,他噼里啪啦和我说了一通,什么解耦,依赖注入,Bean。完了我说,这个IoC有什么关系。
IoC是什么?如果要好理解,先从IoC这三个字母说起,Inverse of Control,控制反转。
那就要解释什么是控制反转了。我们来看下面这两段代码:
MysqlDB是Mysql数据库操作实现类
public class UserRepository {
private MysqlDB db;
public void insert(User user) {
db.insert(user);
}
}
IDB是一个接口,可能有Mysql,Oracle,Mondo等实现。
public class UserRepository {
private IDB db;
public void insert(User user) {
db.insert(user);
}
}
这两段代码的唯一区别就是一个使用了MysqlDB,一个使用了IDB。他们都是UserRepository的依赖。UserRepository依赖他们来实现数据库操作。
使用MysqlDB的代码中,UserRepository自己控制它依赖的组件是什么,是很明确的MysqlDB。注意这里出现了控制的字眼哦。
使用IDB的代码中,UserRepository自己不能控制它依赖的组件是什么,可能是MysqlDB,可能是OracleDB,也可能是MondoDB。
本来UserRepository依赖谁是它自己控制的,这也是绝大部分其他语言和Java代码使用的方式。但是使用IDB的代码中,控制权不在UserRepository自己这里,而是有外部来控制的。这个外部可能是其他类,可能是其他框架,总之,不是UserRepository自己。这就是控制反转。
所以,控制反转说的主要是类之间的依赖关系。当一个类将它依赖的一个具体类,变成一个抽象的接口时,这是控制反转的表现形式。那控制反转有什么好处呢?
还是以上面的例子举例:UserRepository真实想要的功能其实是“保存数据”,而不是“保存数据到Mysql”。可能今天使用Mysql,但某天发现数据量大了,需要迁移到Oracle获取更大的吞吐量,也可能使用Nosql的Mongo实现更灵活的弱Schema存储。如果使用具体的MysqlDB,代码就和MysqlDB耦合了,一旦更换了数据库,所有依赖MysqlDB的地方的代码都需要改。而采用IDB的方式,代码是不用修改的。是解耦的。而且使用接口还有个好处是,我们可以基于抽象的接口生成动态代理,来实现更高级的功能。也就是动态给Java类添加功能。
关于IoC下面的图解释的比较清楚:
图一中四个齿轮是互相啮合在一起,在软件的角度上,就是类互相耦合。
图二中四个齿轮不是啮合在一起的,而是通过IoC容器连接在一起,是解耦的。
还记得前面引用的那句话吗?
计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决IoC也是通过引入了额外的IoC容器来解决类之间的耦合问题。
图一
图二
AOPAOP:面向切面编程。我们可以看上面的图。向下的三个箭头是3个业务逻辑处理工程。他们处理了各自不同的逻辑。同时这3个业务处理都有打印日志和安全的问题。那么我们可以把这些通用的逻辑提取到一个公共的地方。就是AOP中的切面。日志和安全是两个切面,这两个切面是可以横切多个业务处理逻辑的。
使用AOP可以将一些公共的代码从各个业务类中剥离到切面中,提高系统的可维护性和扩展性。
Java进阶有了上面这些基础之后,基本算是Java入门了,开发基本的功能是可以了。接下来是一些进阶的推荐:
Java多线程编程。
Netty网络编程。
JVM调优,排查问题。
Spring MVC,Spring Boot。
RPC框架使用:Dubbo,Spring Cloud,gRPC。
消息中间件的使用。可以看看RocketMQ源码来学习。
容器:Docker,k8s等。(这个不是Java特有的,但是未来的趋势,值得学习)
以上就是我关于学习Java的一些思路吧,更多是从我自己的真实经历出发,希望能给大家一些参考吧。能力有限,有错误之处,还请大家帮着指正。
5. 想学点JAVA的知识?
谢邀。
我从08年毕业到目前一直从事java软件开发,让我来谈谈软件行业现状以及如何尽快入门从事软件开发。
一,要学习什么内容以及如何才能从事相关开发工作
首先软件开发设计语言较多,但市面上java语言较主流,这跟其语言移植性、面向对象等特性息息相关。
要说java开发,这个涵盖范围就很广泛,但从工种来说,一些大的软件公司都是分前台UI设计和后台开发,但这个不是绝对的,大部分研发人员都是这两者都可以做,只不过侧重点不同,如果没有什么基础,我建议你学习的内容有:
1,j2se,j2se是java的基础部分,纯后台的语言基础知识,比如:面向对象、io输入输出流、线程、socket网络编程等等。这部分知识很关键,可以从网上找视频学习资料,记得,一定是视频资料,一边听一边练习编码。
2,无需学习java桌面编程,因为现在桌面程序基本没有市场,现在都是web应用,不需要把时间浪费在这方面。
3,j2ee,前面说的j2se,这个只是开胃菜,仅仅是个基础,重点在j2ee的知识点的学习,因为工作后你发现仅纯后台的开发很少,j2ee你需要学习的东西就很多了,具体列举如下:
servlethtml/jspjavascriptcss(仅仅了解,无需重点学习)当这些你掌握了之后,需要学习目前常用的一些框架:
springmvcstruts2,1.x版本较老,可不学Mybatis jquery这是工作中,从事web开发必须要掌握的知识点,当然这中间还有很多零碎的东西,如果:tomcat、myeclipse、db、svn等等,
二、如何学习、如何快速入门
我的建议是,如果手头宽裕,可以考虑报培训机构,这个费用较高,大概半年2万左右,培训效果挺不错,因为我去过培训机构招聘过,鱼龙混杂,但也有优秀的。
如果你有这方面的基础,我的建议是自学,因为我也是自学的,刚毕业有半年是从事软件维护工作,后来通过网上找学习资料,转行做了软件开发,整个过程比较艰辛,但要坚持,很多人坚持不下来但觉理解费劲就放弃了。
三,it行业发展趋势
未来不好说,但目前来说,it行业还是比较吃香,相对其他行业工资待遇要高很多,尤其是互联网、物联网、大数据,人工智能、电子商务人才缺口大,待遇方面很不错。
最后,感谢你认真阅读,如果对这个行业不清楚的、还需要进一步了解,可以在下方评论留言,或私信我都可以。
6. 有人觉得IT行业门槛低吗?
我想题主所说的IT行业,指的是其中的开发工程师吧?我是一名经过培训入行的软件工程师,到目前已经工作了将近8个年头了,我认为IT行业门槛低是相对于过去来说的,通过培训确实可以实现行业入门,但是想要百尺竿头更进一步,还是要下苦功的。下面我就谈谈我的看法吧,如果有表述不准确的地方,欢迎各位童鞋指正,如有遗漏,欢迎补充。
门槛变低先来谈一谈门槛吧。任何行业都有一定的门槛,软件开发也不例外。随着编程语言越来越简单,各种中间件和开源库的成熟程度和性能的不断提升,开发人员可以不用过多的关注很多与业务无关的技术细节。基于这种技术红利,从业的门槛而确实比多年前要低了很多,但仅仅是相对过去而言。
一、编程语言门槛在降低
从时间维度来看,编程语言共分为三个阶段。
(一) 第一代语言:机器语言。我们都知道计算机其实很“傻”,只认识0和1,因此第一代的编程语言就是由0和1构成的机器语言。用0/1编程的问题非常明显,难理解、效率低、易出错、维护困难等等。面对一堆乱七八糟的纸带,很难将其和IT挂起钩,可想而知机器语言的入门难度有多高!
(二)第二代语言:汇编语言。因为机器语言编程的困难,伟大的工程师们创造了汇编语言,汇编语言通过易于人们理解和记忆的特定字母代替指令,这样理解和阅读的难度就大大降低了。这样就需要有专门的“翻译”将特定的字母翻译成计算机可识别的0/1,编译器就是在这个阶段诞生的。虽说汇编语言使用了人类相对好识别的方式来表示0/1,但是依旧存在易出错、难维护、效率低的问题。在大学期间学习微机原理时曾经学习过汇编语言,确实非常的晦涩难懂。不是还流行那么一句顺口溜么:微机原理闹危机,随机过程随机过,实变函数学十遍,汇编语言不会编。(三)第三代语言:高级语言。高级语言又分面向过程语言和面向对象语言。C语言是面向过程变成语言中的佼佼者,同期的其他语言基本已经被抛弃了,但是C语言一直沿用了下来,至今仍然在占据着TIOBE编程语言榜单的重要位置(难道在给C语言起名字的时候就有C位一说么?);而面向过程语言中的佼佼者就是C++和Java,尤其是Java语言,凭借其开源及优秀的可移植性,占据着很大的市场。在高级语言时期,编程语言的语法更加的友好,可读性和可维护性更强,使得语言的学习难度进一步的降低。而Java作为面向对象语言中的佼佼者,还接管了让人头疼的指针和内存管理工作(其实是JVM的能力),使得其学习难度进一步的降低。
此外,脚本语言也逐渐流行起来。火爆的Python和Go都出现在了TIOBE的TOP20榜单中。
编程语言的不断“革命”,其实就是编程语言学习门槛在不断降低的有力证明,因为大家总是更喜欢简单且高效的事物。
二、强大的公共组件支持
现在的软件开发离不开各种组件(中间件、应用级框架等),组件为我们的开发提供了很多的便利条件,让我们的程序员能够将更多的精力投入到业务逻辑上。我们不妨设想一下,如果没有了框架和中间件,即使有Java这种高级语言的存在,想快速构建一个系统也是非常困难的。为了能够更加直观的体会到组件的发展,我将结合我从业以来应用级框架的发展情况进行介绍。
(一)J2EE。这是一个Java官方牵头制定,并得到广泛认可的企业级规范。在这套规范中,我们可以通过servlet组件来很便捷的处理WEB请求,使用jsp组件对页面进行动态的渲染,使用JDBC与数据库建立良好的交互。J2EE不需要开发者关注传输层协议(这部分工作由WEB中间实现),仅需要关注应用层实现即可,但是基于Servlet/jsp进行开发还是比较繁琐的。我来简单介绍下使用Servlet/jsp进行开发的一些基本流程,童鞋们可以感受一下。
创建web项目;
编写
web.xml
文件(web.xml
是J2EE的核心配置文件,也是应用和中间件连接的桥梁);编写Filter、Servlet;
编写Jsp动态页面;
打成war包,并提交到web中间件上。
主要的工作在第3步,在开发过程中需要考虑字符集、线程安全问题,还需要手动获取请求参数、手动写出应答数据,程序最终需要发布到web中间件上来运行。
(二)SSH,这是Spring+Struts2+Hibernate的简写。SSH很好的落地了MVC模式,由Struts2负责业务控制层处理,HIbernate封装对数据库的操作,Spring负责解耦以及整个项目的整合。相对于Servlet/jsp来说,SSH确实要在编码方面简化了不少,不再需要人工的获取参数,也不需要“写死”依赖到代码中,繁琐的数据库事务也被AOP接管。虽然相对Servlet来说少了不少开发工作量,但是超多的配置文件和jar包的依赖成了开发人员的负担,曾经有些开发人员戏称自己为配置工程师~。
(三)SSM,Spring+SpringMVC+MyBatis的简写。简单而安全的SpringMVC代替了Struts2(繁琐且频繁有漏洞),轻量高效的MyBatis代替了Hibernate(框架比较重,问题也比较多)。注解的出现,使得项目的配置内容大幅度减少。于此同时,Maven也流行了起来,可以比较方便的管理项目的第三方依赖。
(四)SpringBoot,SpringBoot的优秀可以通过其流行程度来证明。在SpringBoot中内嵌了web容器,并且提供了丰富的plugin,可以让项目以jar包的方式运行。此外,对依赖jar包的管理也更加简单,在其他方面也提供了一站式服务的能力。
综合java主流的应用级框架的发展情况来看,虽然都是基于J2EE标准,但是从开发、配置、管理、运维等方面都在不断的进行提升,应用框架将很多与业务无关的技术细节进行了处理,开发人员只需要关注相应的业务实现即可。
可见,随着语言门槛的不断降低,应用框架及相关组件日益成熟,IT从业的门槛是相对(过去)较低的。
培训速成我们需要对入门有一个相对客观的定义,我认为入门的标准为:具备独立承担开发任务的能力(有师父带的那种不算)。现阶段对开发人员的最低(入门级,外包公司能卖人头的那种。大厂、独角兽、互联网等等尖端的先不计算在内)要求主要包括四个方面(行业/公司还会有其他要求):
语言,需要熟练掌握语言的语法(编译都过不去的不能要)
API,需要熟悉常见的API(String、Date、IO、BIO等)
框架,SSM、SpringBoot(应用层面必须掌握)
数据库,基本增删改查、关联查询要掌握
单从以上四点来看,几乎所有java培训班提供的课程安排都是能覆盖到的,但是,从我参加培训的情况以及后续从培训机构招聘的情况来看,学员之间的差距还是非常大的,差不多满足2/8原则吧(毕竟培训班是商业化机构)。
因此,“靠培训就可以入门”有点绝对了,培训就是学习的过程,一定会有差异,除了自身的努力之外,还要看老天爷赏不赏饭。所以,报班还是要理性一些。另外,选择培训机构也要谨慎(有些培训机构会存在学员毕业直接成讲师的情况),一定要试听!
培训速成是适用于老天爷赏饭并且自身还非常努力的同学的!
程序员是一个需要持续学习的职业,IT也是一个需要持续学习的行业,入门不是目的,走下去才是目的,只有持续学习才能在这条路上走的更远!与君共勉!
我是一名程序员,更多精彩请关注:空心小窝头7. 如何系统的学习Spring?
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。我这里会分享一些学习Spring Boot的方法和干货,包括基础到进阶,按照本文的学习路线将会事半功倍,避免大家走了弯路导致浪费了大量时间,详见下文。
一. Spring Boot 是什么
我们刚开始学习 JavaWeb 的时候,使用 Servlet/JSP 做开发,一个接口搞一个 Servlet ,很头大,后来我们通过隐藏域或者反射等方式,可以减少 Servlet 的创建,但是依然不方便。再后来,我们引入 Struts2/SpringMVC 这一类的框架,来简化我们的开发 ,和 Servlet/JSP 相比,引入框架之后,生产力确实提高了不少,但是用久了,又发现了新的问题,即配置繁琐易出错,要做一个新项目,先搭建环境,环境搭建来搭建去,就是那几行配置,不同的项目,可能就是包不同,其他大部分的配置都是一样的。Java 总是被人诟病配置繁琐代码量巨大,这就是其中一个表现。那么怎么办?Spring Boot 应运而生,Spring Boot 是 Pivotal 团队在 2013 年开始研发的一个基于 Spring 的全新框架,试图将 Spring 中臃肿的配置进行简化,使 Java 开发更加轻量与快速,这个框架非常活跃,官方也非常重视。Spring Boot 主要提供了如下功能:为所有基于 Spring 的 Java 开发提供方便快捷的入门体验。开箱即用,有自己自定义的配置就是用自己的,没有就使用官方提供的默认的。提供了一系列通用的非功能性的功能,例如嵌入式服务器、安全管理、健康检测等。绝对没有代码生成,也不需要XML配置。Spring Boot 的出现让 Java 开发又回归简单,因为确确实实解决了开发中的痛点,因此这个技术得到了非常广泛的使用,大概从 2017 年年初开始,Spring Boot 基本上面试必问,现在流行的 Spring Cloud 微服务也是基于 Spring Boot,因此,所有的 Java 工程师都有必要掌握好 Spring Boot。从 Spring Boot 诞生的过程中,我们可以看到:Spring Boot 并非另起炉灶,而是在现有的 Spring 框架的基础上整出来的,它把 Spring 中繁琐的配置进行了简化。Spring Boot 降低了 Spring 家族的使用门槛,使新手更易上手 Spring 框架。既然 Spring Boot 不是另起炉灶,那么 Spring Boot 学习要不要跳过 SSM 呢?听松哥来分析。二. 要不要跳过 SSM
这是很多人问我的一个问题,我的建议是:不要。Spring Boot 基于 Spring,简单且容易上手,很多人想当然的跳过 SSM 直接上 Spring Boot。但是当我们细究 Spring Boot 中的自动化配置、条件注解、Java 配置等东西时,实在找不出太多新鲜玩意,Java 配置是 Spring3 开始提供的,条件注解 也是 Spring 中的东西,很多很多,都是 Spring 中就有的,只不过这些东西在 Spring Boot 时代大放异彩。也就是说,即使你跳过了 SSM 直接去学习 Spring Boot,实际上还是在学习 Spring 中的东西,那既然这样,我们还不如坐下来,老老实实把 Spring 过一遍。各个领域的开发工程师其实都会面临类似的问题,学习了一些优秀的封装框架之后,还有没有必要去学习底层?当然有必要!因为底层的东西可以让你深刻的理解你目前用的这个东西,也能让你在出问题时快速解决掉问题。其实无论你想搞什么技术,都要有牢固的基础知识,这些牢固的基础知识就像肥沃的土壤,可以孕育出各种不同技术方向的牛人,基础掌握好了,学什么框架都快。今天你跳过 SSM 直接学了 Spring Boot,假如有一天 Spring Boot 不行了,Pivotal 团队又基于 Spring 框架搞了一个新的框架出来,那你是不是又要去学一遍?但是如果你一开始就掌握了 Spring 的各种用法,无论基于它搞出来什么样的框架,你都能快速上手。更进一步,如果你研究透了 Spring 中的 AOP、Ioc/DI,你会发现很多框架大同小异,核心思想就是这些东西,那么你在学习 Spring 之外的框架,就会容易很多。三. 都要学哪些?
那么 Spring Boot 学习都要学哪些东西呢?我这里列举了一个进阶路线:最基础的当然是 Spring/SpringMVC 相关的东西了。搭配各种页面模板的使用,例如 Jsp/Thymeleaf/Freemarker/Groovy Templates 等。和各种 SQL 数据库的整合,以及一些常见的数据持久化框架,例如 JdbcTemplate、MyBatis、Jpa 等。和各种 NoSQL 数据库的整合,例如 Redis、MongoDB、Elasticsearch 等。搭配安全管理相关的知识点,例如 Spring Security、Shiro 等。缓存的使用,例如 JCache、Ehcache 等。和消息中间件的搭配整合,如 ActiveMQ、RabbitMQ、Kafka 等。数据校验/定时任务/邮件发送等。各种监控的使用。结合 WebSocket 的使用。Spring Cloud 中相关组件。...上面这些只是我列出来的一些比较常见的技术点,每个技术点都还可以延伸出很多其他的东西,大家可以结合自己的情况,按照顺序一个一个来学,这里边还涉及到很多第三方的框架,例如 Redis、MongoDB、RabbitMQ 等,Spring Boot 的出现只是让这些组件在和 Spring 家族的产品整合时变得更加方便,但是并不会简化这些组件原本的用法,所以,该学 Redis、该学 MongoDB、该学 RabbitMQ 等等,还是一个不能少。以 Redis 为例,学会了 Redis,学会了 Spring 整合 Redis,再回过头来看 Spring Boot 整合 Redis,那简直太 easy 了。当然,学习 Spring Boot 最终我们还是奔着快速开发和微服务去的,所以,像 Docker、Spring Cloud 等技术,也是需要去了解一下的。四. 学习方法
1课程式学习:
主要多见于大学生、毕业找工作去培训学校或者自己在网络课程中学习的。课程式学习很有必要,能够获得稳定的知识结构,打下良好的基础。2.碎片化时间学习
碎片化学习主要是利用课余时间,多见于上班族,课余利用上下班、晚上时间、周末时间来实现学习。3.强化学习
这是个非常行之有效的方法,又可以叫魔鬼式训练、封闭式训练,在集中的时间内,人很容易突破自我极限,达到一种前所未有的高度。4.项目式学习
就是项目上的需求,要求你用到 Spring Boot 来实现某个业务功能,而且有时间限制,要求你在某年某月某日完成,没办法,只能硬着头皮干下去。这种有收益、有目标、还动力的机会确实是人生中难得的,如果你喜欢这个目标,你可以立马扑上去。5.随用随学
比如项目中用到mql,那么搜索下罗相关的知识,搭建demo测试用例,然后在项目中实践。哪种方式更为适合,需要根据各个人的情况来看项目评估如下:有人带着你学习看着你学习>自己学习项目学习>非项目学习强化学习>非强化学习五. 学习资源
【入门-基础】
Spring Boot 快速入门Spring Boot 基础f="">微服务构建: Spring Boot【入门-缓存】
>SpringBoot 中应该怎样使用 Redisef="">Redis 事务在 SpringBoot 中的应用href="">优化 Redis 的使用策略【入门-实践】
3分钟快速搭建Spring Boot开发环境Spring Boot 最佳实践(一)快速入门Spring Boot 最佳实践(二)集成Jsp与生产环境部署Spring Boot 最佳实践(三)模板引擎FreeMarker集成Spring Boot 最佳实践(四)模板引擎Thymeleaf集成Spring Boot 最佳实践(五)Spring Data JPA 操作 MySQL 8【进阶-Web进阶】
Spring Boot统一异常处理Spring Boot Web 应用性能优化基于Spring Boot快速开发RESTful风格API接口【进阶-实例】
基于Spring Boot实现图片上传/加水印一把梭操作Spring Boot日志框架实践Spring Boot 集成 MyBatis和 SQL Server实践Spring Boot中使用定时任务Spring Boot 一分钟拥有支付宝支付功能六. 学完Spring Boot基础之后如何进阶提升?
1.springsession实战
Spring Session 是Spring家族中的一个子项目,它提供一组API和实现,用于管理用户的session信息,它把servlet容器实现的httpSession替换为spring-session,专注于解决 session管理问题,Session信息存储在Redis中,可简单快速且无缝的集成到我们的应用中。2.RabbitMQ
RabbitMQ是流行的开源消息队列系统,用erlang语言开发,RabbitMQ是AMQP(高级消息队列协议)的标准实现。采用该技术,我们可以实现异步处理、流量削峰、系统解耦。3.Nginx实战应用
国内有大量网站使用Nginx,比如:百度、京东、新浪、网易、腾讯、淘宝等。由于在日常工作中,我们不可避免地要接触和使用这样一款高性能的web服务器,所以我们非常有必要学习和掌握Nginx。4.FastDFS详解
FastDFS为互联网量身定制,简单、灵活、高效,采用C语言开发,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。。我觉的学好Spring Boot主要还是得有一个持续性学习的态度,然后结合我上面的从Spring Boot基础到进阶,一直坚持不懈的学习下去,百分百会精通Spring Boot的!本文分享自华为云社区《【云驻共创】Spring Boot要如何学习?》,作者:黎燃。
本站涵盖的内容、图片、视频等数据系网络收集,部分未能与原作者取得联系。若涉及版权问题,请联系我们删除!联系邮箱:ynstorm@foxmail.com 谢谢支持!
1. j2ee培训,java自学要学习多长时间?
想要成为一名Java程序员,你需要具备基本的J2EE技术(JSP、Servlet、Java语言)、SSH(Struts、Spring、Hibernate)框架开发、一定的数据库设计能力和数据库使用经验、熟悉Web开发技术(比如html+css+Javascript,会ajax更好)。
1.多动手实践,不能因为有些内容比较简单,就觉得自己一定能够做到。很多时候,你明明知道这个问题有哪些步骤,该如何处理,然而在实际操作的过程中却无从下手。
2.多转变自我的思维,在编程的过程中,我们面对的是机器,而不是人。在编程的过程中,我们最好是把自己当成一台机器,减少跳跃性的操作来降低出错的可能。
3.多与技术人才交流,在实际学习的过程中,会遇到各种各样的问题,在这些问题中,绝大多数的问题都是靠书本无法解决的,你还需要多与技术人才交流,自己积极主动的去解决。
如果你是零基础学习Java的话,可以选择专业的学习方式,你就可以从零到一学好Java开发知识。当然,除了系统完整的零基础Java学习路线之外,你还需要一个专业负责的老师指导,这样在遇到问题时就可以及时解决。
2. Java工程师到底是做什么的?
1、Java是什么?
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
Java百度百科介绍:https://baike.baidu.com/item/Java/85979
2、Java工程师到底是做什么的?
Java工程师,直白点来说,就好比你在做家具时,需要在模板上弄些花纹,但是需要一个工具来做花纹,Java也是一样,它只是一个工具。Java应用可以说是无处不在,它的用途就是完成软件的设计,开发,测试,修改bug等工作,包括业务需求的沟通,功能模块详细设计,业务功能实现与单元测试,系统维护等等。
Java工程师岗位职责:
负责客户端APP产品中服务器后端的工程设计,架构设计以及开发工作
研究业界最新技术及其应用,解决创新研发过程中的关键问题和技术难点
根据项目任务计划按时完成软件编码和单元测试工作
按照开发流程编写相应模块的设计文档
与产品经理、测试工程师、其他团队沟通合作,保证产品研发工作的质量和进度
协调或指导团队里其它开发人员的工作。
一种主流后端语言编程经验:Java,或Scala,或Node.js,或Python
精通主流Web应用开发框架(Spring,Play!,Express,Django,等等);熟悉SOA和Web Services(REST,SOAP)系统框架;熟悉主流应用服务器(Tomcat,JBoss,Apache,Nginx,等)
精通数据库设计和性能优化;熟悉主流RDBMS和NoSQL数据库(MySQL,MongoDB,Memcached,Redis等),以及数据库编程(SQL, JDBC, iBatis,OpenJPA, 等)
熟悉常用工程工具:Jenkins, Maven/Sbt/Npm/Ant,Git/SVN,Eclipse/IntelliJ,等等
熟悉设计模式,熟练掌握面向对象编程和事件驱动编程风格
有热情,酷爱技术,有良好的计划、沟通、组织协调能力、语言表达能力;较强的逻辑分析能力和应变能力;良好的团队合作精神
当今,处处都能见到Java的身影,美国大型太空项目中,也使用了Java来开发控制系统和相关软件,如此广泛的应用范围也造就了Java工程师的辉煌。
3、Java工程师就业方向有哪些?
(1)Java与电子商务
电子商务是当今的热门话题,然而传统的编程语言难以胜任电子商务系统,电子商务要求程序代码具有基本的要求:安全、可靠、同时要求能与运行于不同平台的机器的全世界客户开展业务。
Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的语言。
(2)Java 企业级应用开发
Java EE是目前开发企业级Web应用的主流框架技术,在当今企业级项目开发中与微软公司的MS.NET一起构成两大核心框架技术。Java EE的主流应用服务器和集成开发工具。
主要内容包括JavaEE框架核心结构、应用服务器、集成开发工具、Servlet组件编程、请求处理编程、响应处理编程、会话跟踪编程、ServletContext对象和应用、过滤器编程、器编程、JSP、EL和JSTL、JNDI服务基础和编程、JDBC服务编程、JavaMail编程和JavaEE MVC式架构应用。
(3)Java网站建设
近几年来,网站建设业务一直呈快速上升势头,行业市场越来越大。就国内情况而言,沿海发达省市比中西部省市市场需求要大,业务普及工作也很到位,许多行业形成了竞相建设企业网站,开展网络营销的局面。新技术的应用将促使企业网站建设更具魅力。
Java编程语言,.net技术和服务器CDN技术也将使网站结构更紧密,访问更流畅,更能适应新的要求。但是以目前的市场分析Java做网站成本太高,对硬件要求比较高,中小企业会放弃,但是像大企业还是比较喜爱Java技术。
(4)Java游戏编程
对于游戏开发来说,由于涉及到比较复杂的情况,开发过程很多时候是一个不断修改的过程,可以方便的修改游戏内容是十分关键的。
对于很多游戏引擎来说,都有自己编写的脚本解释器,用来解释一些自定义的游戏脚本语言(一般为命令式脚本,比如moveplayer(intx,int y),playersmile()之类的东西),另一些则提供了例如lua和rubby等的脚本语言来访问游戏引擎。
由于其虚拟机特性,Java本身就可以用来编写游戏脚本,目前也有例如beanshellgroovy等脚本语言可以方便的无缝的和Java语言进行交互,这些都极大的方便了Java游戏编程。
4、Java工程师职业方向
1、成为管理人员,例如产品研发经理,技术经理,项目经理等继续;
2、二是技术工作之路,成为高级软件工程师、需求工程师等。
Java软件工程师一般月薪范围在6000-10000元,远远超过了应届毕业生月薪2500元的平均水平。通常来说,有一年工作经验的Java高级软件工程师的薪酬大致在年薪10—13万左右。
Java就业方向:可以从事JSP网站开发、Java编程、Java游戏开发、Java桌面程序设计,以及其他与Java语言编程相关的工作。可进入电信、银行、保险专业软件开发公司等从事软件设计和开发工作。
整个互联网在不断发展,Java技术也在不断进步,Java应用会越来越广泛,人才需求当然也不会止步于当前,未来优秀Java工程师将成为市场争抢的资源。所以,你还有什么理由不学Java呢?
3. 厦门渊亭信息科技有限公司怎么样?
挺好的。
厦门渊亭科技有限公司是一家专注于数据智能、致力于“行业+数据智能”解决方案的创新型公司。
本着“价值发现、利用、创新”的理念,公司自主研发了通用知识图谱技术工具(DataExa-Sati认知智能平台)、自动化AI中台(DataExa-Insight人工智能中台)、DataExa-Maya 智能问答平台、DataExa-Kamala 自然语言处理平台、DataExa-Rama搜索平台等一系列数据智能产品,主要技术涉及知识图谱、图计算、大数据、机器学习(深度学习)、自然语言处理、J2EE、微服务、大数据可视化、前端开发等,将数据服务提升到知识服务。
4. 怎样学习Java?
感谢邀请。
我自己也是一名软件开发工程师,目前在杭州某电子商务公司进行中间件软件的开发。职业生涯中用过C++,C#,Java,Python,Go等语言,使用最多的也是Java语言。接下来我就谈谈我对Java开发的一些理解,谈一下我是怎么学习Java的吧,希望能对想学习Java的有些帮助,能够抛砖引玉就很开心了。
Java语言学习Java语言之前,先来认识一下Java语言吧,这样对我们学习会有好处。
Java是一门面向对象编程语言,即经常说的OOP(Object Oriented Programming)。说起面向对象编程,大部分人在大学时应该都学过了C++语言,C++是很经典的面向对象语言。Java吸收了C++的OOP思想,同时也摒弃了C++中一些难以理解的元素,比如指针,多继承等。所以,Java语言同时具有了功能强大和简单易用的优点。
JVM说起Java,就不得不说Java的一个很重要的特性了,那就是JVM(Java Virtual Machine)。Java语言一经发布就收到了巨大的关注和欢迎,一门新的语言,能够迅速流行,肯定是在某些方面有着巨大的进步。尤其是在老前辈C,C++面前。
JVM是Java语言和同时代语言相比的一个重大突破。Java的口号是“Write Once, Run everywhere”。用Java语言编写的应用,只需编写一次,可以在各个平台运行,包括Window,Linux,Mac等。简言之,Java应用可以跨平台。目前有很多的跨平台语言,但是在当时,这可谓是一个巨大的突破。使用Java语言可以极大的减少跨平台应用的开发成本,收广大开发者和企业的欢迎。
JVM是如何做到跨平台呢?软件是运行在操作系统之上的,而不同的操作系统的内核,系统API都是不同的。这也导致了不同操作系统的软件不能在其他系统上直接运行。比如Windows的exe文件在Mac上无法运行。Mac的app软件在Windows上也无法运行。
计算机系统软件体系结构采用一种层的结构,有人说过一句名言:
计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决JVM也是采用了这种方法。即Java代码不是编译成可在各平台直接运行的二进制文件,而是编译为一种Class文件。Class文件运行在JVM中,JVM负责将Class文件翻译成各平台的二进制文件。通过引入JVM中间层,Java应用实现了跨平台功能。
JVM工作原理如下图所示:
在学习Java的时候,要记住Java的JVM特性。这样对后续的Java学习很有好处,比如后面我将要提到的动态代理,AOP等特性。
Java开发环境搭建知道了Java的JVM原理之后,搭建Java开发环境就很简单了。不同的操作系统上需要安装平台相关的Java开发工具,即常说的JDK,或JRE。
JDK = JRE + 开发工具。JRE是Java应用的运行时环境,是必须的。JDK包含了JRE和开发工具(比如调试,日志,监控等)。安装Java有两种方式:
安装文件安装:手动去Oracle官网下载安装文件,进行安装。
包管理工具安装:在Mac平台推荐使用Homebrew安装;Linux上使用apt-get或yum来安装。
Java IDE推荐工欲善其事必先利其器一个好的开发工具,能为我们提升效率。
Java IDE有很多,比较主流的有Eclipse和IntelliJ IDEA。强烈推荐IntelliJ IDEA,比Eclipse要强大很多,唯一的缺点是IntelliJ IDEA完整功能是收费的。不过,作为日常开发,社区办已经足够强大,满足我们的需求了。如果想使用IntelliJ IDEA商业版,可以购买,获得更好的体验。
另外,如果资金不足,可以去网上找找破解版本,作为学习使用。不过,还是推荐使用正版软件哦。Java一些容易混淆的概念我是从C#转Java的。C#是微软闭环的一个开发语言,刚开始接触Java时,还没开始写代码,就已经被Java各种概念弄的晕头转向。接下来我就理清一下那些容易混淆的概念。
Java1.6和Java6:关于Java的版本,经常看到Java 1.6和Java6的说法。其实Java 1.6和Java6是同样的版本,只是叫法不一样。目前在使用的版本一般都是Java 6或以上了。
Java SE,Java EE,Java ME:是很早的时候提出来的一些概念,现在基本已废弃了,其实可以不用关注了。但我还是简单说明一下吧,Java SE:Java Standard Edition,可以认为是Java的核心。Java EE:Java Enterprise Edittion:Java企业版,基于Java SE,添加了一些企业开发的特性,用于开发企业级的大项目。Java ME:Java Mobile Edition:移动端开发版本。现在基本没有这样的区分了,在Oracle下载Java时,也只有Java SE。Java SE就是Java。
J2EE:J2EE就是Java EE。这个概念也基本被废弃了。不用太关心。
Apache:Apache是一个开源软件基金会,也是一款Web服务器,同时还是一种武装直升机。。。。
学Java即学习Java的生态这是我自己感触最深的一点,学习Java最重要的就是要学习Java的生态。这也是刚学习Java时,大部分人比较迷茫的。学习其他语言时,主要的精力可能在学习语言本身。而学习Java,将会需要花费大量的精力来学习Java生态中的各个组件,类库,框架,产品等。当然Java语言本身也是很重要的,需要花很多时间来学习。下面我就列一下Java常用的组件吧:
Tomcat:Web容器。用于运行Java的Web应用。
Jetty:Web容器。
Maven:项目构建工具。大多数的项目都是使用maven构建的。
Gradle:角色同Maven,是Maven的下一代,升级版。但市场普及度不如Maven。
Spring:Java中最常用的框架。几乎所有的项目都会使用。我会在后面单独介绍。
Mysql:数据库。Java应用一般选择Mysql作为数据库。
Mybatis:数据库访问框架,简化数据库访问。
Netty:网络通信组件。简化网络编程。
log4j:Log for Java的缩写,一款日志框架。
junit:Java Unit的缩写,Java的单元测试框架。
Apache Commons:Apache提供的通用功能的类库。比如字符串处理,集合处理等。
上面列出的是现在使用比较多的框架,一些过时了的比如Structs,Hibernate就不列举了。框架太多了,一些过时的就不要去学习了,不要迷失在眼花缭乱的框架中。有时间可以慢慢了解。
SpringSpring框架,是目前Java生态中最重要,也是使用最广的一个框架了。Spring框架由最初提供的一些核心功能,发展到今天,已经是一个非常完整的生态了。
Java是一个大生态,Spring是这个大生态中的另一个大生态。为什么Spring如此重要,Spring提供了什么功能呢?
Spring最重要,最核心,最有价值的地方其实就两点:
IoC:Inverse of Control,控制反转。
AOP:Aspect Orentied Programming,面向切面编程。
什么是IoC?我第一次接触IoC时,我是一脸蒙圈的,我问了隔壁搞了一年多Java的哥们,什么是IoC,他噼里啪啦和我说了一通,什么解耦,依赖注入,Bean。完了我说,这个IoC有什么关系。
IoC是什么?如果要好理解,先从IoC这三个字母说起,Inverse of Control,控制反转。
那就要解释什么是控制反转了。我们来看下面这两段代码:
MysqlDB是Mysql数据库操作实现类
public class UserRepository {
private MysqlDB db;
public void insert(User user) {
db.insert(user);
}
}
IDB是一个接口,可能有Mysql,Oracle,Mondo等实现。
public class UserRepository {
private IDB db;
public void insert(User user) {
db.insert(user);
}
}
这两段代码的唯一区别就是一个使用了MysqlDB,一个使用了IDB。他们都是UserRepository的依赖。UserRepository依赖他们来实现数据库操作。
使用MysqlDB的代码中,UserRepository自己控制它依赖的组件是什么,是很明确的MysqlDB。注意这里出现了控制的字眼哦。
使用IDB的代码中,UserRepository自己不能控制它依赖的组件是什么,可能是MysqlDB,可能是OracleDB,也可能是MondoDB。
本来UserRepository依赖谁是它自己控制的,这也是绝大部分其他语言和Java代码使用的方式。但是使用IDB的代码中,控制权不在UserRepository自己这里,而是有外部来控制的。这个外部可能是其他类,可能是其他框架,总之,不是UserRepository自己。这就是控制反转。
所以,控制反转说的主要是类之间的依赖关系。当一个类将它依赖的一个具体类,变成一个抽象的接口时,这是控制反转的表现形式。那控制反转有什么好处呢?
还是以上面的例子举例:UserRepository真实想要的功能其实是“保存数据”,而不是“保存数据到Mysql”。可能今天使用Mysql,但某天发现数据量大了,需要迁移到Oracle获取更大的吞吐量,也可能使用Nosql的Mongo实现更灵活的弱Schema存储。如果使用具体的MysqlDB,代码就和MysqlDB耦合了,一旦更换了数据库,所有依赖MysqlDB的地方的代码都需要改。而采用IDB的方式,代码是不用修改的。是解耦的。而且使用接口还有个好处是,我们可以基于抽象的接口生成动态代理,来实现更高级的功能。也就是动态给Java类添加功能。
关于IoC下面的图解释的比较清楚:
图一中四个齿轮是互相啮合在一起,在软件的角度上,就是类互相耦合。
图二中四个齿轮不是啮合在一起的,而是通过IoC容器连接在一起,是解耦的。
还记得前面引用的那句话吗?
计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决IoC也是通过引入了额外的IoC容器来解决类之间的耦合问题。
图一
图二
AOPAOP:面向切面编程。我们可以看上面的图。向下的三个箭头是3个业务逻辑处理工程。他们处理了各自不同的逻辑。同时这3个业务处理都有打印日志和安全的问题。那么我们可以把这些通用的逻辑提取到一个公共的地方。就是AOP中的切面。日志和安全是两个切面,这两个切面是可以横切多个业务处理逻辑的。
使用AOP可以将一些公共的代码从各个业务类中剥离到切面中,提高系统的可维护性和扩展性。
Java进阶有了上面这些基础之后,基本算是Java入门了,开发基本的功能是可以了。接下来是一些进阶的推荐:
Java多线程编程。
Netty网络编程。
JVM调优,排查问题。
Spring MVC,Spring Boot。
RPC框架使用:Dubbo,Spring Cloud,gRPC。
消息中间件的使用。可以看看RocketMQ源码来学习。
容器:Docker,k8s等。(这个不是Java特有的,但是未来的趋势,值得学习)
以上就是我关于学习Java的一些思路吧,更多是从我自己的真实经历出发,希望能给大家一些参考吧。能力有限,有错误之处,还请大家帮着指正。
5. 想学点JAVA的知识?
谢邀。
我从08年毕业到目前一直从事java软件开发,让我来谈谈软件行业现状以及如何尽快入门从事软件开发。
一,要学习什么内容以及如何才能从事相关开发工作
首先软件开发设计语言较多,但市面上java语言较主流,这跟其语言移植性、面向对象等特性息息相关。
要说java开发,这个涵盖范围就很广泛,但从工种来说,一些大的软件公司都是分前台UI设计和后台开发,但这个不是绝对的,大部分研发人员都是这两者都可以做,只不过侧重点不同,如果没有什么基础,我建议你学习的内容有:
1,j2se,j2se是java的基础部分,纯后台的语言基础知识,比如:面向对象、io输入输出流、线程、socket网络编程等等。这部分知识很关键,可以从网上找视频学习资料,记得,一定是视频资料,一边听一边练习编码。
2,无需学习java桌面编程,因为现在桌面程序基本没有市场,现在都是web应用,不需要把时间浪费在这方面。
3,j2ee,前面说的j2se,这个只是开胃菜,仅仅是个基础,重点在j2ee的知识点的学习,因为工作后你发现仅纯后台的开发很少,j2ee你需要学习的东西就很多了,具体列举如下:
servlethtml/jspjavascriptcss(仅仅了解,无需重点学习)当这些你掌握了之后,需要学习目前常用的一些框架:
springmvcstruts2,1.x版本较老,可不学Mybatis jquery这是工作中,从事web开发必须要掌握的知识点,当然这中间还有很多零碎的东西,如果:tomcat、myeclipse、db、svn等等,
二、如何学习、如何快速入门
我的建议是,如果手头宽裕,可以考虑报培训机构,这个费用较高,大概半年2万左右,培训效果挺不错,因为我去过培训机构招聘过,鱼龙混杂,但也有优秀的。
如果你有这方面的基础,我的建议是自学,因为我也是自学的,刚毕业有半年是从事软件维护工作,后来通过网上找学习资料,转行做了软件开发,整个过程比较艰辛,但要坚持,很多人坚持不下来但觉理解费劲就放弃了。
三,it行业发展趋势
未来不好说,但目前来说,it行业还是比较吃香,相对其他行业工资待遇要高很多,尤其是互联网、物联网、大数据,人工智能、电子商务人才缺口大,待遇方面很不错。
最后,感谢你认真阅读,如果对这个行业不清楚的、还需要进一步了解,可以在下方评论留言,或私信我都可以。
6. 有人觉得IT行业门槛低吗?
我想题主所说的IT行业,指的是其中的开发工程师吧?我是一名经过培训入行的软件工程师,到目前已经工作了将近8个年头了,我认为IT行业门槛低是相对于过去来说的,通过培训确实可以实现行业入门,但是想要百尺竿头更进一步,还是要下苦功的。下面我就谈谈我的看法吧,如果有表述不准确的地方,欢迎各位童鞋指正,如有遗漏,欢迎补充。
门槛变低先来谈一谈门槛吧。任何行业都有一定的门槛,软件开发也不例外。随着编程语言越来越简单,各种中间件和开源库的成熟程度和性能的不断提升,开发人员可以不用过多的关注很多与业务无关的技术细节。基于这种技术红利,从业的门槛而确实比多年前要低了很多,但仅仅是相对过去而言。
一、编程语言门槛在降低
从时间维度来看,编程语言共分为三个阶段。
(一) 第一代语言:机器语言。我们都知道计算机其实很“傻”,只认识0和1,因此第一代的编程语言就是由0和1构成的机器语言。用0/1编程的问题非常明显,难理解、效率低、易出错、维护困难等等。面对一堆乱七八糟的纸带,很难将其和IT挂起钩,可想而知机器语言的入门难度有多高!
(二)第二代语言:汇编语言。因为机器语言编程的困难,伟大的工程师们创造了汇编语言,汇编语言通过易于人们理解和记忆的特定字母代替指令,这样理解和阅读的难度就大大降低了。这样就需要有专门的“翻译”将特定的字母翻译成计算机可识别的0/1,编译器就是在这个阶段诞生的。虽说汇编语言使用了人类相对好识别的方式来表示0/1,但是依旧存在易出错、难维护、效率低的问题。在大学期间学习微机原理时曾经学习过汇编语言,确实非常的晦涩难懂。不是还流行那么一句顺口溜么:微机原理闹危机,随机过程随机过,实变函数学十遍,汇编语言不会编。(三)第三代语言:高级语言。高级语言又分面向过程语言和面向对象语言。C语言是面向过程变成语言中的佼佼者,同期的其他语言基本已经被抛弃了,但是C语言一直沿用了下来,至今仍然在占据着TIOBE编程语言榜单的重要位置(难道在给C语言起名字的时候就有C位一说么?);而面向过程语言中的佼佼者就是C++和Java,尤其是Java语言,凭借其开源及优秀的可移植性,占据着很大的市场。在高级语言时期,编程语言的语法更加的友好,可读性和可维护性更强,使得语言的学习难度进一步的降低。而Java作为面向对象语言中的佼佼者,还接管了让人头疼的指针和内存管理工作(其实是JVM的能力),使得其学习难度进一步的降低。
此外,脚本语言也逐渐流行起来。火爆的Python和Go都出现在了TIOBE的TOP20榜单中。
编程语言的不断“革命”,其实就是编程语言学习门槛在不断降低的有力证明,因为大家总是更喜欢简单且高效的事物。
二、强大的公共组件支持
现在的软件开发离不开各种组件(中间件、应用级框架等),组件为我们的开发提供了很多的便利条件,让我们的程序员能够将更多的精力投入到业务逻辑上。我们不妨设想一下,如果没有了框架和中间件,即使有Java这种高级语言的存在,想快速构建一个系统也是非常困难的。为了能够更加直观的体会到组件的发展,我将结合我从业以来应用级框架的发展情况进行介绍。
(一)J2EE。这是一个Java官方牵头制定,并得到广泛认可的企业级规范。在这套规范中,我们可以通过servlet组件来很便捷的处理WEB请求,使用jsp组件对页面进行动态的渲染,使用JDBC与数据库建立良好的交互。J2EE不需要开发者关注传输层协议(这部分工作由WEB中间实现),仅需要关注应用层实现即可,但是基于Servlet/jsp进行开发还是比较繁琐的。我来简单介绍下使用Servlet/jsp进行开发的一些基本流程,童鞋们可以感受一下。
创建web项目;
编写
web.xml
文件(web.xml
是J2EE的核心配置文件,也是应用和中间件连接的桥梁);编写Filter、Servlet;
编写Jsp动态页面;
打成war包,并提交到web中间件上。
主要的工作在第3步,在开发过程中需要考虑字符集、线程安全问题,还需要手动获取请求参数、手动写出应答数据,程序最终需要发布到web中间件上来运行。
(二)SSH,这是Spring+Struts2+Hibernate的简写。SSH很好的落地了MVC模式,由Struts2负责业务控制层处理,HIbernate封装对数据库的操作,Spring负责解耦以及整个项目的整合。相对于Servlet/jsp来说,SSH确实要在编码方面简化了不少,不再需要人工的获取参数,也不需要“写死”依赖到代码中,繁琐的数据库事务也被AOP接管。虽然相对Servlet来说少了不少开发工作量,但是超多的配置文件和jar包的依赖成了开发人员的负担,曾经有些开发人员戏称自己为配置工程师~。
(三)SSM,Spring+SpringMVC+MyBatis的简写。简单而安全的SpringMVC代替了Struts2(繁琐且频繁有漏洞),轻量高效的MyBatis代替了Hibernate(框架比较重,问题也比较多)。注解的出现,使得项目的配置内容大幅度减少。于此同时,Maven也流行了起来,可以比较方便的管理项目的第三方依赖。
(四)SpringBoot,SpringBoot的优秀可以通过其流行程度来证明。在SpringBoot中内嵌了web容器,并且提供了丰富的plugin,可以让项目以jar包的方式运行。此外,对依赖jar包的管理也更加简单,在其他方面也提供了一站式服务的能力。
综合java主流的应用级框架的发展情况来看,虽然都是基于J2EE标准,但是从开发、配置、管理、运维等方面都在不断的进行提升,应用框架将很多与业务无关的技术细节进行了处理,开发人员只需要关注相应的业务实现即可。
可见,随着语言门槛的不断降低,应用框架及相关组件日益成熟,IT从业的门槛是相对(过去)较低的。
培训速成我们需要对入门有一个相对客观的定义,我认为入门的标准为:具备独立承担开发任务的能力(有师父带的那种不算)。现阶段对开发人员的最低(入门级,外包公司能卖人头的那种。大厂、独角兽、互联网等等尖端的先不计算在内)要求主要包括四个方面(行业/公司还会有其他要求):
语言,需要熟练掌握语言的语法(编译都过不去的不能要)
API,需要熟悉常见的API(String、Date、IO、BIO等)
框架,SSM、SpringBoot(应用层面必须掌握)
数据库,基本增删改查、关联查询要掌握
单从以上四点来看,几乎所有java培训班提供的课程安排都是能覆盖到的,但是,从我参加培训的情况以及后续从培训机构招聘的情况来看,学员之间的差距还是非常大的,差不多满足2/8原则吧(毕竟培训班是商业化机构)。
因此,“靠培训就可以入门”有点绝对了,培训就是学习的过程,一定会有差异,除了自身的努力之外,还要看老天爷赏不赏饭。所以,报班还是要理性一些。另外,选择培训机构也要谨慎(有些培训机构会存在学员毕业直接成讲师的情况),一定要试听!
培训速成是适用于老天爷赏饭并且自身还非常努力的同学的!
程序员是一个需要持续学习的职业,IT也是一个需要持续学习的行业,入门不是目的,走下去才是目的,只有持续学习才能在这条路上走的更远!与君共勉!
我是一名程序员,更多精彩请关注:空心小窝头7. 如何系统的学习Spring?
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。我这里会分享一些学习Spring Boot的方法和干货,包括基础到进阶,按照本文的学习路线将会事半功倍,避免大家走了弯路导致浪费了大量时间,详见下文。
一. Spring Boot 是什么
我们刚开始学习 JavaWeb 的时候,使用 Servlet/JSP 做开发,一个接口搞一个 Servlet ,很头大,后来我们通过隐藏域或者反射等方式,可以减少 Servlet 的创建,但是依然不方便。再后来,我们引入 Struts2/SpringMVC 这一类的框架,来简化我们的开发 ,和 Servlet/JSP 相比,引入框架之后,生产力确实提高了不少,但是用久了,又发现了新的问题,即配置繁琐易出错,要做一个新项目,先搭建环境,环境搭建来搭建去,就是那几行配置,不同的项目,可能就是包不同,其他大部分的配置都是一样的。Java 总是被人诟病配置繁琐代码量巨大,这就是其中一个表现。那么怎么办?Spring Boot 应运而生,Spring Boot 是 Pivotal 团队在 2013 年开始研发的一个基于 Spring 的全新框架,试图将 Spring 中臃肿的配置进行简化,使 Java 开发更加轻量与快速,这个框架非常活跃,官方也非常重视。Spring Boot 主要提供了如下功能:为所有基于 Spring 的 Java 开发提供方便快捷的入门体验。开箱即用,有自己自定义的配置就是用自己的,没有就使用官方提供的默认的。提供了一系列通用的非功能性的功能,例如嵌入式服务器、安全管理、健康检测等。绝对没有代码生成,也不需要XML配置。Spring Boot 的出现让 Java 开发又回归简单,因为确确实实解决了开发中的痛点,因此这个技术得到了非常广泛的使用,大概从 2017 年年初开始,Spring Boot 基本上面试必问,现在流行的 Spring Cloud 微服务也是基于 Spring Boot,因此,所有的 Java 工程师都有必要掌握好 Spring Boot。从 Spring Boot 诞生的过程中,我们可以看到:Spring Boot 并非另起炉灶,而是在现有的 Spring 框架的基础上整出来的,它把 Spring 中繁琐的配置进行了简化。Spring Boot 降低了 Spring 家族的使用门槛,使新手更易上手 Spring 框架。既然 Spring Boot 不是另起炉灶,那么 Spring Boot 学习要不要跳过 SSM 呢?听松哥来分析。二. 要不要跳过 SSM
这是很多人问我的一个问题,我的建议是:不要。Spring Boot 基于 Spring,简单且容易上手,很多人想当然的跳过 SSM 直接上 Spring Boot。但是当我们细究 Spring Boot 中的自动化配置、条件注解、Java 配置等东西时,实在找不出太多新鲜玩意,Java 配置是 Spring3 开始提供的,条件注解 也是 Spring 中的东西,很多很多,都是 Spring 中就有的,只不过这些东西在 Spring Boot 时代大放异彩。也就是说,即使你跳过了 SSM 直接去学习 Spring Boot,实际上还是在学习 Spring 中的东西,那既然这样,我们还不如坐下来,老老实实把 Spring 过一遍。各个领域的开发工程师其实都会面临类似的问题,学习了一些优秀的封装框架之后,还有没有必要去学习底层?当然有必要!因为底层的东西可以让你深刻的理解你目前用的这个东西,也能让你在出问题时快速解决掉问题。其实无论你想搞什么技术,都要有牢固的基础知识,这些牢固的基础知识就像肥沃的土壤,可以孕育出各种不同技术方向的牛人,基础掌握好了,学什么框架都快。今天你跳过 SSM 直接学了 Spring Boot,假如有一天 Spring Boot 不行了,Pivotal 团队又基于 Spring 框架搞了一个新的框架出来,那你是不是又要去学一遍?但是如果你一开始就掌握了 Spring 的各种用法,无论基于它搞出来什么样的框架,你都能快速上手。更进一步,如果你研究透了 Spring 中的 AOP、Ioc/DI,你会发现很多框架大同小异,核心思想就是这些东西,那么你在学习 Spring 之外的框架,就会容易很多。三. 都要学哪些?
那么 Spring Boot 学习都要学哪些东西呢?我这里列举了一个进阶路线:最基础的当然是 Spring/SpringMVC 相关的东西了。搭配各种页面模板的使用,例如 Jsp/Thymeleaf/Freemarker/Groovy Templates 等。和各种 SQL 数据库的整合,以及一些常见的数据持久化框架,例如 JdbcTemplate、MyBatis、Jpa 等。和各种 NoSQL 数据库的整合,例如 Redis、MongoDB、Elasticsearch 等。搭配安全管理相关的知识点,例如 Spring Security、Shiro 等。缓存的使用,例如 JCache、Ehcache 等。和消息中间件的搭配整合,如 ActiveMQ、RabbitMQ、Kafka 等。数据校验/定时任务/邮件发送等。各种监控的使用。结合 WebSocket 的使用。Spring Cloud 中相关组件。...上面这些只是我列出来的一些比较常见的技术点,每个技术点都还可以延伸出很多其他的东西,大家可以结合自己的情况,按照顺序一个一个来学,这里边还涉及到很多第三方的框架,例如 Redis、MongoDB、RabbitMQ 等,Spring Boot 的出现只是让这些组件在和 Spring 家族的产品整合时变得更加方便,但是并不会简化这些组件原本的用法,所以,该学 Redis、该学 MongoDB、该学 RabbitMQ 等等,还是一个不能少。以 Redis 为例,学会了 Redis,学会了 Spring 整合 Redis,再回过头来看 Spring Boot 整合 Redis,那简直太 easy 了。当然,学习 Spring Boot 最终我们还是奔着快速开发和微服务去的,所以,像 Docker、Spring Cloud 等技术,也是需要去了解一下的。四. 学习方法
1课程式学习:
主要多见于大学生、毕业找工作去培训学校或者自己在网络课程中学习的。课程式学习很有必要,能够获得稳定的知识结构,打下良好的基础。2.碎片化时间学习
碎片化学习主要是利用课余时间,多见于上班族,课余利用上下班、晚上时间、周末时间来实现学习。3.强化学习
这是个非常行之有效的方法,又可以叫魔鬼式训练、封闭式训练,在集中的时间内,人很容易突破自我极限,达到一种前所未有的高度。4.项目式学习
就是项目上的需求,要求你用到 Spring Boot 来实现某个业务功能,而且有时间限制,要求你在某年某月某日完成,没办法,只能硬着头皮干下去。这种有收益、有目标、还动力的机会确实是人生中难得的,如果你喜欢这个目标,你可以立马扑上去。5.随用随学
比如项目中用到mql,那么搜索下罗相关的知识,搭建demo测试用例,然后在项目中实践。哪种方式更为适合,需要根据各个人的情况来看项目评估如下:有人带着你学习看着你学习>自己学习项目学习>非项目学习强化学习>非强化学习五. 学习资源
【入门-基础】
Spring Boot 快速入门Spring Boot 基础f="">微服务构建: Spring Boot【入门-缓存】
>SpringBoot 中应该怎样使用 Redisef="">Redis 事务在 SpringBoot 中的应用href="">优化 Redis 的使用策略【入门-实践】
3分钟快速搭建Spring Boot开发环境Spring Boot 最佳实践(一)快速入门Spring Boot 最佳实践(二)集成Jsp与生产环境部署Spring Boot 最佳实践(三)模板引擎FreeMarker集成Spring Boot 最佳实践(四)模板引擎Thymeleaf集成Spring Boot 最佳实践(五)Spring Data JPA 操作 MySQL 8【进阶-Web进阶】
Spring Boot统一异常处理Spring Boot Web 应用性能优化基于Spring Boot快速开发RESTful风格API接口【进阶-实例】
基于Spring Boot实现图片上传/加水印一把梭操作Spring Boot日志框架实践Spring Boot 集成 MyBatis和 SQL Server实践Spring Boot中使用定时任务Spring Boot 一分钟拥有支付宝支付功能六. 学完Spring Boot基础之后如何进阶提升?
1.springsession实战
Spring Session 是Spring家族中的一个子项目,它提供一组API和实现,用于管理用户的session信息,它把servlet容器实现的httpSession替换为spring-session,专注于解决 session管理问题,Session信息存储在Redis中,可简单快速且无缝的集成到我们的应用中。2.RabbitMQ
RabbitMQ是流行的开源消息队列系统,用erlang语言开发,RabbitMQ是AMQP(高级消息队列协议)的标准实现。采用该技术,我们可以实现异步处理、流量削峰、系统解耦。3.Nginx实战应用
国内有大量网站使用Nginx,比如:百度、京东、新浪、网易、腾讯、淘宝等。由于在日常工作中,我们不可避免地要接触和使用这样一款高性能的web服务器,所以我们非常有必要学习和掌握Nginx。4.FastDFS详解
FastDFS为互联网量身定制,简单、灵活、高效,采用C语言开发,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。。我觉的学好Spring Boot主要还是得有一个持续性学习的态度,然后结合我上面的从Spring Boot基础到进阶,一直坚持不懈的学习下去,百分百会精通Spring Boot的!本文分享自华为云社区《【云驻共创】Spring Boot要如何学习?》,作者:黎燃。
本站涵盖的内容、图片、视频等数据系网络收集,部分未能与原作者取得联系。若涉及版权问题,请联系我们删除!联系邮箱:ynstorm@foxmail.com 谢谢支持!