Java常见的面试问题(技术总结)
程序员文章站
2022-06-05 14:06:26
...
什么是SOA 分布式
集群:就是很多的服务器来实现一种功能,例如mysql,很多的服务器都安装mysql
负载均衡:就是用来调节的,比方说有很多的用户都在访问读取数据,可是读取a服务器的mysql多,而读取别的服务器的mysql就少,负载均衡把访问a的用户转给b一部分,防止a由于访问量过大造成宕机什么的。
分布式:一个系统把不同的服务分开来部署,用户模块,bbs论坛模块,内容模块,支付模块。对服务的访问量很大的时候,单台服务器已经满足不了需求,就把服务分散到几台甚至几十台几百天电脑上
好处:每个模块只负责自己的事情和请求压力,开发人员只负责自己的东西
分布式应用开发简单的说,是指将用户界面、控制台服务、数据库管理三个层次部署在不同的位置上。其中用户界面是客户端实现的功能,控制台服务是一个专门的服务器,数据管理是在一个专门的数据库服务器上实现的。
自我理解:
对项目的客户(用户界面),数据存储(操作数据(服务)),对数据库的操作(数据层) 分离开来,并且可以进行高效的敏捷开发.
分布式,可以对各个模块进行加强(服务器添加(集群处理)),把调用次数比较多的服务,多加服务器,哪些很少使用的服务,可以对它进行一个降低.
hibernate和mybatis的区别
- hibernate 是对SQL进行了高度的封装,它有自己的HQL语句
- mybatis保留了对数据库灵活的操作,需要自己写sql语句
- 他们都是ORM对象映射(数据查询出来以后都是存在pojo类中),使用方法都是大同小异.
hibernate的多个参数如何传递?怎么转换?
- 自己理解 :
- 数组传递,对HQL的语句进行拼接,in()里面的条件通过循环来判断.
- 百度理解:
- 集合(List),session.createSQLQuery(sql).setParameterList(“userIdList”, userIdList).list();
- 创建一个查询对象,并且,直接吧集合传进去即可.(setParameterList)
SpringMVC和struts2 的区别
SpringMVC和struts2区别
实现不同
SpringMVC是通过Servlet来实现的
Struts2是通过拦截器来实现的
Json的转换方式不同
Spring MVC是自动转为json
Struts2是通过插件来转
数据传输不同
SpringMVC是通过参数来传递的
Struts2是通过值栈来传递的,而值栈是个比较庞大的东西
控制器实例不同
SpringMVC是基于方法来实现的
Struts2是基于对象来实现的
SpringMVC从理论上来讲是比Struts2快的
四大域对象
-
ServletContext
生命周期:当WEB应用被加载进容器创建代表整个WEB应用的ServletContext对象,当服务器关闭或WEB应用被移除时,ServletContext对象跟着被销毁。作用范围:整个WEB应用。
在不同Servlet之间转发、读取资源文件
- Request域
1.生命周期:在Service方法调用前由服务器创建,传入service发那个发。整个请求结束,request生命结束。
2.作用范围:整个请求链(请求转发也存在)
3.作用:在整个请求链*享数据,经常用到:在servlet中处理好的数据交给JSP显示,此时参数就可以放在Request域中。 - Session域
1.生命周期:在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。如果服务器非正常关闭,没有到期的session也会跟着销毁。如果调用session提供的invalidate(),可以立即销毁session。
2.作用范围:一次会话。 - PageContext域
1.生命周期:当对JSP的请求开始,当相应结束时销毁。
2.作用范围:整个JSP页面,是四大作用域中最小的一个。
3.作用:获取其他八大隐式对象,可以认为是一个入口对象。获取所有域中的数据
。跳转到其他资源
。
Spring 参数如何传递
- 直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。
- 通过HttpServletRequest接收,post方式和get方式都可以。
- 通过一个bean来接收,post方式和get方式都可以。(也叫模型驱动)
- 通过@PathVariable获取路径中的参数
- 使用@ModelAttribute注解获取POST请求的FORM表单数据
- 用注解@RequestParam绑定请求参数到方法入参
Spring的特征
-
aop(面向切面编程):
- 软件系统分为两个部分:核心关注点和横切关注点
- 业务处理的主要流程是核心关注点
- 与之关系不大的部分是横切关注点
- AOP核心概念
横切关注点
切面(aspect)
连接点(joinpoint)
切入点(pointcut)
通知(advice)
目标对象
织入(weave)
引入(introduction) -
ioc(控制反转):
IOC是一种思想,是一个重要的面向对象编程的体现之一
它是把创建和查找依赖对象的控制器交给了容器,有容器进行注入组合对象,所以对象与对象之间是,低耦合的,便于测试,而且也使得整个体系架构变得更灵活
- 就是对象找依赖并注入,而不是对象自己主动去找
-
IOC依赖注入
- 在控制反转中获取资源的过程叫做依赖注入
-注入有2种,一种是通过xml配置进行构造注入
-还有一种是通过setter注入,就是通过对象的set方法进行注入. - 一般都是在Spring配置文件中,配置bean ,然后交给Spring自动注入,我们拿到对象就可以直接使用.
- 在控制反转中获取资源的过程叫做依赖注入
Spring AOP (动态代理的实现)
Spring MVC执行流程
- 自己理解:
- 客户请求–>前端控制器–>前端控制器找到HandlerAdapter–>HandlerAdapter(处理数据)—>返回视图–>然后渲染视图–>最后返回视图给客户
Struts2的执行流程
Hibernate的执行流程
mybatis的执行流程
ElasticSearch 搭建
ElasticSearch怎么建立索引
ElasticSearch 怎么使用
solr 搭建
solr 怎么建立索引
solr 怎么使用
ActiveMQ 使用
消费者:
生产者:
Dobbo
WebService
String && StringBuffer 的区别,在什么时候使用.
Nginx 负载均衡搭建
Redis的搭建(集群)
Redis 中的5种数据类型
String:key-value(做缓存)
Hash:key-fields-values(做缓存)
SortedSet(zset):有顺序,不能重复
© 著作权归作者所有
转载请保留原链接地址
交流QQ群:799362339