上周Java入门内容分享,分享内容如下图,交流的话题由浅入深地进行,下面是分享的下篇,包括框架,架构,职业发展3个内容。
开源框架
开源框架的出现,大大提升了我们开发的效率,十多年前做开发,没有这么多开源的框架。那个时候人们都会去自己封装,基于servlet,基于web.xml,基于J2EE,自己去写一些东西啊,后来呢,出现了EJB,再往后出现了SSH,包括spring,struts2,hibernate,再往后的话,mybatis,springmvc,springboot等spring的这种全家桶也发展了起来,所以说框架在开发过程中,极大地提升了我们的开发效率。
Java后端开发中很重要的一个框架就是spring,它里面的那种分支技术非常多,我们到底用什么,去选择什么技术选型很重要,不同的公司呢,他选择的框架也不一样啊,自己学习的时候呢,去网上了解一下,基本的常用的这种开源框架进行学习就好了。
spring几种依赖注入分别适用什么情况
spring最大的特点就是依赖注入和切面编程。
依赖注入是什么意思呢,就相当于原来我们去创建一个对象,都是自己写代码,自己去new一个对象,用了spring以后,它的依赖注入就可以帮助我们创建对象,由spring来管理对象的创建,这就是他的第一个特性。
另外一个特性就是面向切面的编程(AOP),我们经常使用的场景就是在一个类里面,在一个方法的调用前和调用后,我们想做一些特殊的操作,那么就可以用AOP的方式把它切进去,比如说我在调用某个方法前,想打印一行日志,调用方法之后打印另外一行日志,就可以用这个AOP的技术。
spring的依赖注入一般有三种方式,第一个是接口注入,第二个是setter方法注入,第三个是构造器的注入,我们在开发中一般大家都习惯了,在xml里面做配置啊,把我们的一个been配置好,另外一种方法就是用注解来进行注入。
注解,我们一般用Autowired,它是可以自动装配的;另外一个是Resource,它可以标注在字段和属性的三大方法上,按照我们指定的名称去装配。
mybatis
MyBatis 它其实是基于一个ibatis发展而来的,这个技术比较新,也就是2013年左右出来的,到现在也就五六年的时间。MyBatis是支持定制化 SQL以及高级映射的持久层框架。避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集,可以用配置的方式将普通的Java对象映射成数据库中的记录。
MyBatis 是一个ORM(对象关系映射)的框架,面向对象的开发中,我们去查询数据库,它分装了一些JDBC的操作,方便我们去操作数据库,和hibernate类似,它们都是ORM框架。
springboot
springboot是spring大家族里面的一个优秀的框架,它也是最近比较流行的一个框架。springboot它其实是一些库的集合,它就是为了简化我们的spring配置而生的。
springboot的优点就是可以独立地创建spring的程序,它也不需要我们用容器来把它进行部署,因为它里面内嵌了一些tomcat容器,它也可以简化我们的应用,可以自动的帮我们做一些配置,也不需要那些xml的那些配置。所以呢,我们在开发中使用springboot,可以更高地提高我们的开发效率。
下面给大家看下spring管网,里面有很多技术分支:
https://spring.io/projects/spring-boot
可以从这里进行spring框架大家族的学习。
前后端分离是什么
前后端分离它是现在互联网上比较流行的一种架构,就是说,我们前端的页面和我们后台的一些Java代码分开,前后端分开开发,分开部署。原来的jsp是前后端是没有分离的。
我们现在说的前后端分离,一般会采用H5+后端的开发,或者是安卓+我们后端的一个开发,或者苹果+我们后端的开发,后端开发一般就是Java开发。
那前端和后端,它主要的区分的界面,就是我们的用户界面,给用户展现的页面儿就是前端,后面用户看不着的,那就是后端。前端使用的技术,一般就是html,css,javascript。常用的框架就是jquery,bootstrap,前端和后端的交互,主要用的就是ajax。
高并发与分布式
互联网上两个牛逼的技术就是高并发和分布式。其实呢,当你一个网站上想实现这种高可用和高并发的时候呢,其实你是离不了这种分布式的。秒杀就是一个很好的高并发的场景。
那么首先我们来说一下什么是分布式。原来的一个系统啊,它就是一台机器,这台机器即用作前端部署,又做后端部署,也做数据库的部署。开始我们的访问量小,那么我们一台机器够了。
随着业务的发展,用户访问量的增加,那一台机器是扛不住这种用户访问的压力,那么我们把数据库就会拆出来单独部署,后端的这种Java代码,也就是我们的应用也会独立部署,把用户前端的界面也进行单独部署,那么这样的话,你从一台机器就变成了三台机器,这就是一种分布式。
再往后呢,随着我们业务的发展,我们网站访问的人越来越多,当你的流量越来越大的时候,那么你三台机器也不够了,因为机器的性能有限扛不住了,所以我们需要继续进行分布,扩大机器,从一台变三台,三台变六台......
那么怎么变呢,就出来了集群的模式,比如说我们tomcat这种后端的应用,我原来是一台机器,可以把应用部署到多台机器上,做成应用的集群;那我的数据库,原来是一台机器,那么现在通过数据库的拆分,可以分为主库和从库,主库去做数据库的写入操作,从库去做数据库的读操作,从而来缓解这种前端的访问压力。
随着集群技术的引入,反向代理就出来了,我们常用的反向代理就是Nginx或者LVS。Nginx就是说前面的一个用户的请求,对应到我们后端的tomcat应用。原来一台的话它直接对应上去,现在我有多台机器的话,他需要经过一个代理,确定是去我们的哪台机器上请求和访问,做服务器的负载均衡。
再往后发展分布式就引出了一个微服务,微服务就是把应用做成一个个独立的这种业务模块,去独立部署,分别部署到不同的集群上。这样的话通过分布式的微服务的集群,现在我们的网站能经得住这种大量用户的这种访问。这就是解决了这种高并发的问题,就是同一秒的时刻,大批量的用户进来的时候,我们的网站依然能够对外提供服务。
如何在现有基础上加薪
我们来聊一聊如何来升职加薪,其实这个话题有点儿大,那每个人都想升职加薪,但是在公司里面儿,你一个人的薪水和你体现出的价值是匹配的。那如果想加薪的,势必要体现出你的价值高于你现在的薪水水平,这是我们升职加薪的必要条件。
如果你想加薪,那么你首先应该做的,就是在公司里面要体现出我自己的个人价值,等个人价值得到公司认可的时候呢,就会给你带来升职和加薪。
如果你觉得你在公司的价值其实是远远超过你的薪水,但是老板呢,也没有给你提加薪的时候,你可以找个合适的机会了,去跟他谈一谈啊。有的人说不好意思和领导提加薪,怕被拒绝,很没面子,这里你需要学会争取,做好准备就可以提一下。
在谈之前首先要体现出来你的工作价值,找到合适的机会去谈。当你把一件事情做好了,老板认可的时候呢,这个就是提出你加薪的一个好的时机,那如果你跟他提了,他又没去给你兑现的时候,那么你怎么办呢,就需要找老板进行一次交流。
通过和老板的交流,你可以得到一些认识,比如说,你是自己觉得自己的价值高了,还是说老板也是认可你的价值啊,如果老板认可你的价值,他不给你提薪水的话,那么你其实你就可以去跳槽了。
因为跳槽是程序员加薪的一个很好的一种方法啊,因为一个公司里面,你想加一些加薪水的话,一般它的制度有限,相对困难,那么当你跳槽出去的话,一般都可以有一个30%左右薪水的提升。关于跳槽这一块儿是强烈不建议大家裸辞的。
当你准备跳槽的时候需要要对自己的技术全面的做一下复盘,了解自己,做到知己知彼,跳槽之前可以去搜一下招聘网站,去看看别人对你是一个什么样的要求,从而为你的跳槽做一些准备。
到此,开发经验分享两个部分就聊完了。