Java面试2

1、Spring

1、概念
Spring框架由7个定义明确的模块组成,所有的Spring模块都是在核心容器上构建的,定义了Bean是如何创建、配置、管理的,这些模块会为你构建应用服务的框架,例如Aop和持久性;
2、7个模块
(1)核心容器:通过依赖的注入特征来实现容器对bean的管理;
(2)context模块:核心模块的BeanFactory使Spring成为一个容器,而上下文模块使它成为一个框架;
(3)AOP模块:是Spring面向切向编程的基础,Spring的AOP模块也将元数据编程引入了Spring。使用Spring的元数据支持,你可以为你的源代码增加注释,指示Spring在何处以及如何应用切面函数。
(4)jdbc抽象和dao模块:Spring的JDBC和DAO模块抽取了重复代码,可以保持数据库访问代码干净简洁,并且可以防止因关闭数据库资源失败而引起的问题。
(5)对象/关系映射集成模块;
(6)web模块:建立于context模块之上,提供了一些面向服务的支持
(7)MVC框架:MVC框架使用IoC对控制逻辑和业务对象提供了完全的分离

2、SpringMVC

1.概念
MVC是model、view、controller的缩写,MVC是Application开发的设计模式;
model:是应用程序的主体部分;
view:是应用程序中负责生成用户界面的部分;
controller:是根据用户的输入,控制用户界面数据的显示及更新model对象状态的部分,即商业逻辑、界面显示、数据分离;
2.SpringMVC的运行原理
注意,整个过程是从一个http请求开始:
(1)tomcat启动加载时解析web.xml,进而找到springMVC的前端总控制器DispacherServlet,并且通过DispacherServlet来加载相关的配置文件;
(2)DispacherServlet接受到客户端请求,找到对应的handlerMapping,根据映射规则,找到对应的处理器(handler);
(3)调用相应的处理器的处理方法,处理请求后,返回一个model and view;
(4)DispacherServlet得到ModelAndView中的视图对象,找到合适的viewResolver(视图解析器),根据视图解析器的配置,DispacherServlet将显示的数据传给相应的视图,最终显示给用户;
​

3、mybatis

主要特点:小巧、方便、高效、简单、直接、半自动
优点:
1.数据库自动连接绑定
2.更为细致的sql优化,减少查询字段
缺点:
1.框架简陋,底层数据库查询要自己写,工作量大
2.二级缓存机制不佳

4、SpringBoot

特点:开发速度快,启动速度快
根据Maven构建里面的starter依赖,如web项目的的qidong器是web-starter,就道要构建的项目类型,并且会把相关的依赖搭建好
以web项目为例:
web项目会把spring、springMVC以及json转换还有tomcat这些依赖jar包准备好,启动项目时,用SpringBoot:run启动,此时会找到唯一的一个main方法运行,在main方法里面使用SpringApplication启动应用;
涉及到的注解:
@componentScan:扫描包
@EnableAutoconfig:启动自动配置
@RestController:是@controller和ResponseBody的结合,会将返回的数据转成json@RequestMappping,依然是进行路由的EnableScheduling启用调度器进行注解扫描;
springBoot项目可以脱离xml配置,框架会根据你的pom依赖帮你准备好所有的东西,并且是用了很多默认配置,若想改掉默认配置,可以在resource-->application.properties属性文件;根据要求修改

5、SpringCloud

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

6、redis

1、redis是一种内存型、非关系型数据库;
2、redis数据会储存到硬盘上;
3、redis(持久化)保存数据采用rdb(快照形式,快照是采用的一种机制保存,这种机制保存可以在里面配置配置,隔多久保存多少数据,数据保存到硬盘上去,当redis启动的时候,硬盘上的数据会写到数据库中,这种方法大量提高了数据的存储和读取的效率,性能会受到一定的影响,因为会占用cpu去保存快照操作)
4、Redis保存数据的另外一种方式是AOF集群方式,使每个服务器都有对方服务器的数据,避免rdb类似的快照保存机制,从而减少内存占用,还有是达到了高可用;

7、solr

采用Java开发,基于Lucene的全文搜索服务器,有扩展的地方有面向抽象编程的地方(如分词器,查询);提供了更为丰富的查询(如过滤器);可和hadoop整合,提供了一个完善的功能管理界面,是一款非常优秀的全文检索引擎;
服务器占用一个接口来提供服务,作用是提供缓存
Solr是一个企业级搜索应用服务器,他对外提供了类似于web Service的API接口,用户可以通过http请求,向搜索引擎服务提供一定格式的xml文件,生成索引,也可以通过Http G solr J操作查找请求(也可以通过json格式提交),并且得到xml文件的返回结果;

8、elasticSearch

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题及可能出现的更多其它问题。

9、dubbo

dubbo有两个概念,一个提供服务方,一个消费方,同时也叫提供服务者和消费者,zookeeper就是dubbo的服务中心;第一,服务方编写真正的实现,把接口和vo对象打包成jar包,为消费者提供依赖,编写完真正实现后我们的需要注册到zookeeper的服务中心;第二,消费者连接zookeeper注册相应的地址引用相关的interface,这就使用zookeeper和dubbo的简易流程;
使用zookeeper和dubbo的优点:
如APP服务端,pc端,后台和红包系统都要进行用户查询,而且每一个查询都会连接数据库有重复代码的工作,此时要进行优化,若不同模块的单独开发,实现的方式实现的逻辑不同导致结果不一致,这样就可以使用dubbo服务,各个模块之间都可以使用,直接操作的是service接口而不是api接口。

10、zookeeper

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,

11、Kafka

Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache定级项目。Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。

12、RabbitMQ

RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。基于AMQP协议实现,支持多种场景,社区活跃量大。高性能,高可用,支持海量数据。

13、ActiveMq

传统的消息队列,使用Java语言编写。基于JMS(Java Message Service),采用多线程并发,资源消耗比较大。支持P2P和发布订阅两种模式,如果使用java语言开发项目,可以考虑使用activeMQ。

 

14、mysql

1、增
insert into 表 (列名,列名...) values (值,值,值...)
insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)
insert into 表 (列名,列名...) select (列名,列名...) from 表

2、删
delete from 表
delete from 表 where id=1 and name='alex'

3、改
update 表 set name = 'alex' where id>1

4、查
(1)普通查询
select * from 表
select * from 表 where id > 1
select nid,name,gender as gg from 表 where id > 1
(2)模糊查询
select * from 表 where name like 'ale%'  - ale开头的所有(多个字符串)
select * from 表 where name like 'ale_'  - ale开头的所有(一个字符)
(3)分组查询
select num from 表 group by num
select num,nid from 表 group by num,nid
select num,nid from 表  where nid > 10 group by num,nid order nid desc
select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid select num from 表 group by num having max(id) > 10 特别的:group by 必须在where之后,order by之前
(4)连表查询
select a.*,b.* from a inner join b on a.id=b.parent_id(内连接)

5、连接数
mysql的默认连接数是100.最大可连接16384
怎么配置最大连接数:
修改Mysql配置文件my.ini或my.cnf的参数max_connections,将其max_connections=10000,然后重启mysql即可

16、tomcat

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0

17、mycat

Mycat是一个强大的数据库中间件,不仅仅可以用作读写分离、以及分表分库、容灾备份,而且可以用于多租户应用开发、云平台基础设施、让你的架构具备很强的适应性和灵活性,借助于即将发布的Mycat智能优化模块,系统的数据访问瓶颈和热点一目了然,根据这些统计分析数据,你可以自动或手工调整后端存储,将不同的表映射到不同存储引擎上,而整个应用的代码一行也不用改变。

18、Nginx

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值