首页 » Web前端 » kanglephp504技巧_2022最新高级框架面试题解析已拿Offer

kanglephp504技巧_2022最新高级框架面试题解析已拿Offer

访客 2024-12-09 0

扫一扫用手机浏览

文章目录 [+]

Maven利用项目工具模型(POM)的观点,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

Maven 除了以程序构建能力为特色之外,还供应高等项目管理工具。
由于 Maven 的缺省构建规则有较高的可重用性,以是常常用两三行 Maven 构建脚本就可以构建大略的项目。
由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发布时利用 Maven,而且公司项目采取 Maven 的比例在持续增长。

kanglephp504技巧_2022最新高级框架面试题解析已拿Offer

Maven的涌现,办理了开拓过程中的jar包升级及依赖的难题。
它可以对项目依赖的jar包进行管理,可以让你的项目保持基本的依赖,打消冗余jar包,并且可以让你非常轻松的对依赖的jar包进行版本升级。
而这些仅仅是Maven最基本的功能,它可以在这根本上对项目进行清理、编译、测试、打包、发布等等构建项目的事情。

kanglephp504技巧_2022最新高级框架面试题解析已拿Offer
(图片来自网络侵删)

可以说,Maven是现在Java社区中最强大的项目管理和项目构建工具,而更加值得光彩的是,这样一个强大的工具,它的利用也是非常大略的。

现在,JavaEE项目利用的开源软件都可以通过Maven来获取,并且,越来越多的公司也开始利用Maven来管理构建项目了。

432.Maven和ANT的差异

1.maven&ant同属apach是盛行的构建工具。

都是为了简化软件开拓而存在的。
但是maven由于自身管理一个项目工具模型(project object model),这个模型实在便是抽象了一个项目的开拓流程,它包含了一个项目的生命周期的各个阶段,并将这个周期固定下来,这也便是约定大于配置。
约定大于配置的意思便是,我maven将项目开拓的各个阶段固定起来了,每个文件的存放位置,每个阶段要天生什么文件、保存为什么格式并且要把它放在什么位置,我都固定好了。
我知道一个软件是怎么开拓出来,如果一个项目要利用maven,可以,但你要遵照我的规则,文件目录不要乱建乱放,只有这样maven才会将源码用起来。
这便是约定大于配置,由于maven已经将流程固定下来了,只要遵守约定,就不须要自己手动去配置了,这将大大地提高开拓效率。
就像是开车一样,只要知道点火、油门、方向、刹车,就可以将车子开东起来(当然出于安全和法律考虑,还是要考驾照的。
),关于车子内部的传动事理,电气事理,工程事理,普通人并不须要理解多少,日常够用就好了。
这也是约定大于配置的一个例子。
配置便是自己造一辆车去开,有必要,有能力,有韶光吗?

2.maven的中心仓库和pom.xml文件。
中心仓库统一存放了开拓用到的各种jar包,要用时只须要添加依赖到pom文件中,maven就会自动下载,当然为了方便一样平常会在本地建一个仓库,减少下载韶光。
pom文件是maven的配置文件,maven便是通过管理pom文件和一些核心插件来管理项目。
当然我前面将maven拟人化了,实在maven是没有智力的,统统都是封装好的流程,只是maven将很多操作隐蔽起来了。

3.ant的build.xml文件。
build文件是ant的配置文件,ant依赖它来实行操作,与maven不同的是ant没有固定一条程序链。
你想要实行什么操作以及操作之间的顺序和依赖关系,都须要手动添加到build文件中,一点一滴都要写清楚,否则ant就不会实行。

4.maven和ant差异

Maven 拥有约定,只要遵守约定,它就知道你的源代码在哪里。
Maven 是声明式的。
你须要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。
Maven 会帮你处理其它的事情。
Maven 有一个生命周期,当你运行 mvn install 的时候被调用。
这条命令见告 Maven 实行一系列的有序的步骤,直达到到你指定的生命周期。
缺陷是运行许多默认目标。

而ant没有约定,项目生命周期,它是命令式的。
所有操作都要手动去创建、支配。
乃至连build.xml文件都须要手动创建。

433.Maven仓库是什么

Maven仓库是基于大略文件系统存储的,集中化管理Java API资源(构件)的一个做事。
仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径。
得益于 Maven 的坐标机制,任何 Maven项目利用任何一个构件的办法都是完备相同的,Maven 可以在某个位置统一存储所有的 Maven 项目共享的构件,这个统一的位置便是仓库,项目构建完毕后天生的构件也可以安装或者支配到仓库中,供其它项目利用。

对付Maven来说,仓库分为两类:本地仓库和远程仓库。

434.Maven的工程类型有哪些?

POM工程

POM工程是逻辑工程。
用在父级工程或聚合工程中。
用来做jar包的版本掌握。

JAR工程

将会打包成jar用作jar包利用。
即常见确当地工程 - Java Project。

WAR工程

将会打包成war,发布在做事器上的工程。
如网站或做事。
即常见的网络工程 - Dynamic Web Project。
war工程默认没有WEB-INF目录及web.xml配置文件,IDE常日会显示工程缺点,供应完全工程构造可以办理。

435.Maven常用命令有哪些?

install

本地安装, 包含编译,打包,安装到本地仓库

编译 - javac

打包 - jar, 将java代码打包为jar文件

安装到本地仓库 - 将打包的jar文件,保存到本地仓库目录中。

clean

打消已编译信息。

删除工程中的target目录。

compile

只编译。
javac命令

deploy

支配。
常见于结合私服利用的命令。

相称于是install+上传jar到私服。

包含编译,打包,安装到本地仓库,上传到私服仓库。

package

打包。
包含编译,打包两个功能。

436.ZooKeeper的浸染是什么?

配置管理

在我们的运用中除了代码外,还有一些便是各种配置。
比如数据库连接等。
一样平常我们都是利用配置文件的办法,在代码中引入这些配置文件。
当我们只有一种配置,只有一台做事器,并且不常常修正的时候,利用配置文件是一个很好的做法,但是如果我们配置非常多,有很多做事器都须要这个配置,这时利用配置文件就不是个好主张了。
这个时候每每须要探求一种集中管理配置的方法,我们在这个集中的地方修正了配置,所有对这个配置感兴趣的都可以得到变更。
Zookeeper便是这种做事,它利用Zab这种同等性协议来供应同等性。
现在有很多开源项目利用Zookeeper来掩护配置,比如在HBase中,客户端便是连接一个Zookeeper,得到必要的HBase集群的配置信息,然后才可以进一步操作。
还有在开源的行列步队Kafka中,也利用Zookeeper来掩护broker的信息。
在Alibaba开源的SOA框架Dubbo中也广泛的利用Zookeeper管理一些配置来实现做事管理。

名字做事

名字做事这个就很好理解了。
比如为了通过网络访问一个别系,我们得知道对方的IP地址,但是IP地址对人非常不友好,这个时候我们就须要利用域名来访问。
但是打算机是不能是域名的。
怎么办呢?如果我们每台机器里都备有一份域名到IP地址的映射,这个倒是能办理一部分问题,但是如果域名对应的IP发生变革了又该怎么办呢?于是我们有了DNS这个东西。
我们只须要访问一个大家熟知的(known)的点,它就会见告你这个域名对应的IP是什么。
在我们的运用中也会存在很多这类问题,特殊是在我们的做事特殊多的时候,如果我们在本地保存做事的地址的时候将非常未便利,但是如果我们只须要访问一个大家都熟知的访问点,这里供应统一的入口,那么掩护起来将方便得多了。

分布式锁

其实在第一篇文章中已经先容了Zookeeper是一个分布式折衷做事。
这样我们就可以利用Zookeeper来折衷多个分布式进程之间的活动。
比如在一个分布式环境中,为了提高可靠性,我们的集群的每台做事器上都支配着同样的做事。
但是,一件事情如果集群中的每个做事器都进行的话,那相互之间就要折衷,编程起来将非常繁芜。
而如果我们只让一个做事进行操作,那又存在单点。
常日还有一种做法便是利用分布式锁,在某个时候只让一个做事去干活,当这台做事出问题的时候锁开释,立即fail over到其余的做事。
这在很多分布式系统中都是这么做,这种设计有一个更好听的名字叫Leader Election(leader选举)。
比如HBase的Master便是采取这种机制。
但要把稳的是分布式锁跟同一个进程的锁还是有差异的,以是利用的时候要比同一个进程里的锁更谨慎的利用。

集群管理

在分布式的集群中,常常会由于各种缘故原由,比如硬件故障,软件故障,网络问题,有些节点会进进出出。
有新的节点加入进来,也有老的节点退出集群。
这个时候,集群中其他机器须要感知到这种变革,然后根据这种变革做出对应的决策。
比如我们是一个分布式存储系统,有一个中心掌握节点卖力存储的分配,当有新的存储进来的时候我们要根据现在集群目前的状态来分配存储节点。
这个时候我们就须要动态感知到集群目前的状态。
还有,比如一个分布式的SOA架构中,做事是一个集群供应的,当消费者访问某个做事时,就须要采取某种机制创造现在有哪些节点可以供应该做事(这也称之为做事创造,比如Alibaba开源的SOA框架Dubbo就采取了Zookeeper作为做事创造的底层机制)。
还有开源的Kafka行列步队就采取了Zookeeper作为Cosnumer的高下线管理。

437.什么是Znode?

在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据。

Zookeeper底层是一套数据构造。
这个存储构造是一个树形构造,其上的每一个节点,我们称之为“znode”

zookeeper中的数据是按照“树”构造进行存储的。
而且znode节点还分为4中不同的类型。

每一个znode默承认以或许存储1MB的数据(对付记录状态性子的数据来说,够了)

可以利用zkCli命令,登录到zookeeper上,并通过ls、create、delete、get、set等命令操作这些znode节点

438.Znode节点类型有哪些?

答:(1)PERSISTENT 持久化节点: 所谓持久节点,是指在节点创建后,就一贯存在,直到有删除操作来主动打消这个节点。
否则不会由于创建该节点的客户端会话失落效而消逝。

(2)PERSISTENT_SEQUENTIAL 持久顺序节点:这类节点的基本特性和上面的节点类型是同等的。
额外的特性是,在ZK中,每个父节点会为他的第一级子节点掩护一份时序,会记录每个子节点创建的先后顺序。
基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。
这个数字后缀的范围是整型的最大值。
在创建节点的时候只须要传入节点 “/test_”,这样之后,zookeeper自动会给”test_”后面补充数字。

(3)EPHEMERAL 临时节点:和持久节点不同的是,临时节点的生命周期和客户端会 话绑定。
也便是说,如果客户端会话失落效,那么这个节点就会自动被打消掉。
把稳,这里提到的是会话失落效,而非连接断开。
其余,在临时节点下面不能创建子节点。

这里还要把稳一件事,便是当你客户端会话失落效后,所产生的节点也不是一下子就消逝了,也要过一段韶光,大概是10秒以内,可以试一下,本机操作天生节点,在做事器端用命令来查看当前的节点数目,你会创造客户端已经stop,但是产生的节点还在。

EPHEMERAL_SEQUENTIAL 临时自动编号节点:此节点是属于临时节点,不过带有顺序,客户端会话结束节点就消逝。

439.什么是Dubbo?

Dubbo是阿里巴巴公司开源的一个高性能精良的做事框架,使得运用可通过高性能的 RPC 实现做事的输出和输入功能,可以和Spring框架无缝集成。
Dubbo框架,是基于容器运行的.。
容器是Spring。

其核心部分包含:

1. 远程通讯: 供应对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“要求-相应”模式的信息交流办法。

2. 集群容错: 供应基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失落败容错,地址路由,动态配置等集群支持。

3. 自动创造: 基于注册中央目录做事,使做事消费方能动态的查找做事供应方,使地址透明,使做事供应方可以平滑增加或减少机器。

Dubbo能做什么?

1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需大略配置,没有任何API侵入。

2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降落本钱,减少单点。

3. 做事自动注册与创造,不再须要写去世做事供应方地址,注册中央基于接口名查询做事供应者的IP地址,并且能够平滑添加或删除做事供应者。

Dubbo的存在大略来说便是要减小service层的压力。

440.什么是RPC远程过程调用?

远程过程调用协议,它是一种通过网络从远程打算机程序上要求做事,而不须要理解底层网络技能的协议。
RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。
在OSI网络通信模型中,RPC超过了传输层和运用层。
RPC使得开拓包括网络分布式多程序在内的运用程序更加随意马虎。

441.Dubbo中有哪些角色?

registry

注册中央. 是用于发布和订阅做事的一个平台.用于替代SOA构造体系框架中的ESB做事总线的。

发布

开拓做事端代码完毕后, 将做事信息发布出去. 实现一个做事的公开.

订阅

客户端程序,从注册中央下载做事内容 这个过程是订阅.

订阅做事的时候, 会将发布的做事所有信息,一次性下载到客户端.

客户端也可以自定义, 修正部分做事配置信息. 如: 超时的时长, 调用的重试次数等.

Consumer

做事的消费者, 便是做事的客户端.

消费者必须利用Dubbo技能开拓部分代码. 基本上都是配置文件定义.

provider

做事的供应者, 便是做事端.

做事端必须利用Dubbo技能开拓部分代码. 以配置文件为主.

container

容器. Dubbo技能的做事端(Provider), 在启动实行的时候, 必须依赖容器才能正常启动.

默认依赖的便是spring容器. 且Dubbo技能不能分开spring框架.

在2.5.3版本的dubbo中, 默认依赖的是spring2.5版本技能. 可以选用spring4.5以下版本.

在2.5.7版本的dubbo中, 默认依赖的是spring4.3.10版本技能. 可以选择任意的spring版本.

monitor

监控中央. 是Dubbo供应的一个jar工程.

紧张功能是监控做事端(Provider)和消费端(Consumer)的利用数据的. 如: 做事端是什么,有多少接口,多少方法, 调用次数, 压力信息等. 客户端有多少, 调用过哪些做事端, 调用了多少次等.

442.Dubbo实行流程什么是?

0 start: 启动Spring容器时,自动启动Dubbo的Provider

1、register: Dubbo的Provider在启动后自动会去注册中央注册内容.注册的内容包括:

1.1 Provider的 IP

1.2 Provider 的端口.

1.3 Provider 对外供应的接口列表.哪些方法.哪些接口类

1.4 Dubbo 的版本.

1.5 访问Provider的协议.

2、subscribe: 订阅.当Consumer启动时,自动去Registry获取到所已注册的做事的信息.

3、notify: 关照.当Provider的信息发生变革时, 自动由Registry向Consumer推送关照.

4、invoke: 调用. Consumer 调用Provider中方法

4.1 同步要求.花费一定性能.但是必须是同步要求,由于须要吸收调用方法后的结果.

5、count:次数. 每隔2分钟,provoider和consumer自动向Monitor发送访问次数.Monitor进行统计.

443.说说Dubbo支持的协议有哪些?

1、Dubbo协议(官方推举协议)

优点:

采取NIO复用单一长连接,并利用线程池并发处理要求,减少握手和加大并发效率,性能较好(推举利用)

缺陷:

大文件上传时,可能涌现问题(不该用Dubbo文件上传)

2、RMI(Remote Method Invocation)协议

优点:

JDK自带的能力。
可与原生RMI互操作,基于TCP协议

缺陷:

偶尔连接失落败.

3、Hessian协议

优点:

可与原生Hessian互操作,基于HTTP协议

缺陷:

需hessian.jar支持,http短连接的开销大

444.Dubbo支持的注册中央有哪些?

1、Zookeeper(官方推举)

优点:支持分布式.很多周边产品.

缺陷: 受限于Zookeeper软件的稳定性.Zookeeper专门分布式赞助软件,稳定较优

2、Multicast

优点:去中央化,不须要单独安装软件.

缺陷:Provider和Consumer和Registry不能跨机房(路由)

3、Redis

优点:支持集群,性能高

缺陷:哀求做事器韶光同步.否则可能涌现集群失落败问题.

4、Simple

优点: 标准RPC做事.没有兼容问题

缺陷: 不支持集群.

445.SessionFactory是线程安全的吗?Session是线程安全的吗,两个线程能够共享同一个Session吗?

答:SessionFactory对应Hibernate的一个数据存储的观点,它是线程安全的,可以被多个线程并发访问。
SessionFactory一样平常只会在启动的时候构建。
对付运用程序,最好将SessionFactory通过单例的模式进行封装以便于访问。
Session是一个轻量级非线程安全的工具(线程间不能共享session),它表示与数据库进行交互的一个事情单元。
Session是由SessionFactory创建的,在任务完成之后它会被关闭。
Session是持久层做事对外供应的紧张接口。
Session会延迟获取数据库连接(也便是在须要的时候才会获取)。
为了避免创建太多的session,可以利用ThreadLocal来取得当前的session,无论你调用多少次getCurrentSession()方法,返回的都是同一个session。

446.Session的load和get方法的差异是什么?

答:紧张有以下三项差异:

1)如果没有找到符合条件的记录, get方法返回null,load方法抛出非常

2)get方法直接返回实体类工具, load方法返回实体类工具的代理

3)在Hibernate 3之前,get方法只在一级缓存(内部缓存)中进行数据查找, 如果没有找到对应的数据则超越二级缓存, 直接发出SQL语句完成数据读取; load方法则可以充分利用二级缓存中的现有数据;当然从Hibernate 3开始,get方法不再是对二级缓存只写不读,它也是可以访问二级缓存的

大略的说,对付load()方法Hibernate认为该数据在数据库中一定存在可以放心的利用代理来实现延迟加载,如果没有数据就抛出非常,而通过get()方法去取的数据可以不存在。

447.Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法有什么差异?

答:Hibernate的工具有三种状态:瞬态、持久态和游离态。
游离状态的实例可以通过调用save()、persist()或者saveOrUpdate()方法进行持久化;脱管状态的实例可以通过调用 update()、0saveOrUpdate()、lock()或者replicate()进行持久化。
save()和persist()将会引发SQL的INSERT语句,而update()或merge()会引发UPDATE语句。
save()和update()的差异在于一个是将瞬态工具变成持久态,一个是将游离态工具变为持久态。
merge方法可以完成save()和update()方法的功能,它的意图是将新的状态合并到已有的持久化工具上或创建新的持久化工具。
按照官方文档的解释:(1)persist()方法把一个瞬态的实例持久化,但是并"不担保"标识符被急速填入到持久化实例中,标识符的填入可能被推迟到flush的韶光;(2) persist"担保",当它在一个事务外部被调用的时候并不触发一个Insert语句,当须要封装一个长会话流程的时候,一个persist这样的函数是须要的。
(3)save"不担保"第2条,它要返回标识符,以是它会立即实行Insert语句,不管是不是在事务内部还是外部。
update()方法是把一个已经更改过的脱管状态的工具变成持久状态;lock()方法是把一个没有更改过的脱管状态的工具变成持久状态。

448.什么是VSFTPD?

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。
vsftpd 是一个 UNIX 类操作系统上运行的做事器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完备免费的、开放源代码的ftp做事器软件,支持很多其他的 FTP 做事器所不支持的特色。

449.什么是Nginx?

Nginx (engine x) 是一个高性能的HTTP和反向代理做事。
Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开拓的,第一个公开版本0.1.0发布于2004年10月4日。

Nginx 是一个很强大的高性能Web和反向代理做事,它具有很多非常优胜的特性:在连接高并发的情形下,Nginx是Apache做事不错的替代品:Nginx在美国是做虚拟主机买卖的老板们常常选择的软件平台之一。

450.Nginx有哪些浸染?

答:http协议代理

搭建虚拟主机

做事的反向代理

在反向代理中配置集群的负载均衡

451.什么是正向代理?

正向代理,意思是一个位于客户端和原始做事器(origin server)之间的做事器,为了从原始做事器取得内容,客户端向代理发送一个要求并指定目标(原始做事器),然后代理向原始做事器转交要求并将得到的内容返回给客户端。
客户端才能利用正向代理。

452.什么是反向代理?

反向代理(Reverse Proxy)办法是指以代理做事器来接管internet上的连接要求,然后将要求转发给内部网络上的做事器,并将从做事器上得到的结果返回给internet上要求连接的客户端,此时期理做事器对外就表现为一个反向代理做事器。

453.什么是Redis?

答:Remote Dictionary Server(Redis)是一个开源的利用ANSI C措辞编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并供应多种措辞的API。

它常日被称为数据构造做事器,由于值(value)可以是 字符串(String), 哈希(Map), 列表(list), 凑集(sets) 和 有序凑集(sorted sets)等类型。

454.Redis的特点什么是?

1. 支持多种数据构造,如 string(字符串)、 list(双向链表)、dict(hash表)、set(凑集)、zset(排序set)、hyperloglog(基数估算)

2. 支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据规复等操作,较好的防止数据丢失的手段。

3. 支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的主要手段。

单进程要求,所有命令串行实行,并发情形下不须要考虑数据同等性问题。

455.Redis数据类型有哪些?

答:String(字符串)

Hash(hash表)

List(链表)

Set(凑集)

SortedSet(有序凑集zset)

456.Redis中的常用命令哪些?

incr 让当前键值以1的数量递增,并返回递增后的值

incrby 可以指定参数一次增加的数值,并返回递增后的值

incrby 可以指定参数一次增加的数值,并返回递增后的值

decrby 可以指定参数一次递减的数值,并返回递减后的值

incrbyfloat 可以递增一个双精度浮点数

append 浸染是向键值的末端追加value。
如果键不存在则将该键的值设置为value。
返回值是追加后字符串的总长度。

mget/mset 浸染与get/set相似,不过mget/mset可以同时得到/设置多个键的键值

del 根据key来删除value

flushdb 打消当前库的所有数据

hset 存储一个哈希键值对的凑集

hget获取一个哈希键的值

hmset 存储一个或多个哈希是键值对的凑集

hmget 获取多个指定的键的值

hexists 判断哈希表中的字段名是否存在 如果存在返回1 否则返回0

hdel 删除一个或多个字段

hgetall 获取一个哈希是键值对的凑集

hvals 只返回字段值

hkeys 只返回字段名

hlen 返回key的hash的元素个数

lpush key value向链表左侧添加

rpush key value向链表右侧添加

lpop key 从左边移出一个元素

rpop key 从右边移出一个元素

llen key 返回链表中元素的个数 相称于关系型数据库中 select count()

lrange key start end lrange命令将返回索引从start到stop之间的所有元素。
Redis的列表起始索引为0。

lrange也支持负索引 lrange nn -2 -1 如 -1表示最右边第一个元素 -2表示最右边第二个元素,依次类推。

lindex key indexnumber 如果要将列表类型当做数组来用,lindex命令是必不可少的。
lindex命令用来返回指定索引的元素,索引从0开始

如果是负数表示从右边开始打算的索引,最右边元素的索引是-1。

Lset key indexnumber value 是另一个通过索引操作列表的命令,它会将索引为index的元素赋值为value。

sadd key value 添加一个string元素到,key对应的set凑集中,成功返回1,如果元素已经在凑集中返回0

scard key 返回set的元素个数,如果set是空或者key不存在返回0

smembers key 返回key对应set的所有元素,结果是无序的

sismember key value 判断value 是否在set中,存在返回1,0表示不存在或者key不存在

srem key value 从key对应set中移除给定元素,成功返回1,如果value 在凑集中不存在或者key不存在返回0

zadd key score value 将一个或多个value及其socre加入到set中

zrange key start end 0和-1表示从索引为0的元素到末了一个元素(同LRANGE命令相似)

zrange key 0 -1 withscores 也可以连同score一块输出,利用WITHSCORES参数

zremrangebyscore key start end 可用于范围删除操作

ping 测试redis是否链接 如果已链接返回 PONG

echo value测试redis是否链接 如果已链接返回 echo命令后给定的值

keys 返回所有的key 可以加通配

exists key判断string类型一个key是否存在 如果存在返回1 否则返回0

expire key time(s) 设置一个key的过期韶光 单位秒。
韶光到达后会删除key及value

ttl key 查询已设置过期韶光的key的剩余韶光 如果返回-2表示该键值对已经被删除

persist 移除给定key的过期韶光

select dbindex 选择数据库(0-15)

move key dbIndex 将当前数据库中的key转移到其他数据库中

dbsize 返回当前数据库中的key的数目

info 获取做事器的信息和统计

flushdb 删除当前选择的数据库中的key

flushall 删除所有数据库中的所有key

quit 退出连接

457.Redis的配置以及持久化方案有几种?

答:以下两种

RDB办法

AOF办法

458.什么是RDB办法?

答:是RDB是对内存中数据库状态进行快照

RDB办法:将Redis在内存中的数据库状态保存到磁盘里面,RDB文件是一个经由压缩的二进制文件,通过该文件可以还原天生RDB文件时的数据库状态(默认下,持久化到dump.rdb文件,并且在redis重启后,自动读取个中文件,据悉,常日情形下一千万的字符串类型键,1GB的快照文件,同步到内存中的 韶光是20-30秒)

RDB的天生办法:

 1、实行命令手动天生

有两个Redis命令可以用于天生RDB文件,一个是SAVE,另一个是BGSAVE SAVE命令会壅塞Redis做事器进程,直到RDB文件创建完毕为止,在做事器进程壅塞期间,做事器不能处理任何命令要求,BGSAVE命令会派生出一个子进程,然后由子进程卖力创建RDB文件,做事器进程(父进程)连续处理命令要求,创建RDB文件结束之前,客户端发送的BGSAVE和SAVE命令会被做事器谢绝

2、通过配置自动天生

可以设置做事器配置的save选项,让做事器每隔一段韶光自动实行一次BGSAVE命令,可以通过save选项设置多个保存条件,但只要个中任意一个条件被知足,做事器就会实行BGSAVE命令

例如:

save 900 1

save 300 10

save 60 10000

那么只要知足以下三个条件中的任意一个,BGSAVE命令就会被实行

做事器在900秒之内,对数据库进行了至少1次修正

做事器在300秒之内,对数据库进行了至少10次修正

做事器在60秒之内,对数据库进行了至少10000次修正

459.什么是AOF办法?

AOF持久化办法在redis中默认是关闭的,须要修正配置文件开启该办法。

AOF:把每条命令都写入文件,类似mysql的binlog日志

AOF办法:是通过保存Redis做事器所实行的写命令来记录数据库状态的文件。

AOF文件刷新的办法,有三种:

appendfsync always - 每提交一个修正命令都调用fsync刷新到AOF文件,非常非常慢,但也非常安全

appendfsync everysec - 每秒钟都调用fsync刷新到AOF文件,很快,但可能会丢失一秒以内的数据

appendfsync no - 依赖OS进行刷新,redis不主动刷新AOF,这样最快,但安全性就差

默认并推举每秒刷新,这样在速率和安全上都做到了兼顾

AOF数据规复办法

做事器在启动时,通过载入和实行AOF文件中保存的命令来还原做事器关闭之前的数据库状态,详细过程:

载入AOF文件

创建仿照客户端

从AOF文件中读取一条命令

利用仿照客户端实行命令

循环读取并实行命令,直到全部完成

如果同时启用了RDB和AOF办法,AOF优先,启动时只加载AOF文件规复数据

460.什么是全文检索?

答:什么叫做全文检索呢?这要从我们生活中的数听说起。

我们生活中的数据总体分为两种:构造化数据和非构造化数据。

1)构造化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。

2)非构造化数据:指不定长或无固定格式的数据,如邮件,word文档等。

非构造化数据又一种叫法叫全文数据。

按照数据的分类,搜索也分为两种:

1)对构造化数据的搜索:如对数据库的搜索,用SQL语句。

2)对非构造化数据的搜索:如利用windows的搜索也可以搜索文件内容,

全文检索: 便是一种将文件中所有文本与检索项匹配的笔墨资料检索方法。
全文检索首先将要查询的目标文档中的词提取出来,组成索引,通过查询索引达到搜索目标文档的目的。
这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。

461.什么是Lucene?

Lucene是一个高效的,基于Java的全文检索库。

Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完全的全文检索引擎,而是一个全文检索引擎的架构,Lucene的目的是为软件开拓职员供应一个大略易用的工具包,以方便的在目标系统中实现全文检索的功能,或者因此此为根本建立起完全的全文检索引擎。
Lucene是一套用于全文检索和征采的开源程序库,由Apache软件基金会支持和供应。
Lucene供应了一个大略却强大的运用程序接口,能够做全文索引和征采。
在Java开拓环境里Lucene是一个成熟的免费开源工具。
就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。

462.什么是Solr?

答:Solr是一个独立的企业级搜索运用做事器,它对外供应类似于Web-service的API接口。

Solr是一个高性能,采取Java开拓,基于Lucene的全文搜索做事器。
同时对其进行了扩展,供应了比Lucene更为丰富的查询措辞,同时实现了可配置、可扩展并对查询性能进行了优化,并且供应了一个完善的功能管理界面,是一款非常精良的全文检索引擎。

文档通过Http利用XML 加到一个搜索凑集中。
查询该凑集也是通过http收到一个XML/JSON相应来实现。
它的紧张特性包括:高效、灵巧的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,供应一套强大Data Schema来定义字段,类型和设置文本分析,供应基于Web的管理界面等。

463.Solr是由哪两个部分构成?

答:如下两个部分

Solr的web做事

Solr的索引库

464.什么是正排索引?

正排索引因此文档的ID为关键字,索引文档中每个字的位置信息,查找时扫描索引中每个文档中字的信息直到找出所有包含查询关键字的文档。

但是在查询的时候需对所有的文档进行扫描以确保没有遗漏,这样就使得检索韶光大大延长,检索效率低下。

只管正排索引的事情事理非常的大略,但是由于其检索效率太低,除非在特定情形下,否则实用性代价不大。

465.什么是倒排索引?

对数据进行剖析,抽取出数据中的词条,以词条作为key,对应数据的存储位置作为value,实现索引的存储。
这种索引称为倒排索引。

当solr存储文档时,solr会首先对文档数据进行分词,创建索引库和文档数据库。
所谓的分词是指:将一段字符文本按照一定的规则分成多少个单词。

466.什么是ActiveMQ?

ActiveMQ是一种开源的,实现了JMS1.1规范的,面向(MOM)的中间件,为运用程序供应高效的、可扩展的、稳定的和安全的企业级通信。
ActiveMQ利用Apache供应的授权,任何人都可以对实在当代码进行修正。

ActiveMQ的设计目标是供应标准的,面向的,能够超过多措辞和多系统的运用集成通信中间件。

ActiveMQ实现了JMS标准并供应了很多附加的特性。
这些附加的特性包括,JMX管理(java Management Extensions,即java管理扩展),主从管理(master/salve,这是集群模式的一种,紧张表示在可靠性方面,当主中介(代理)涌现故障,那么从代理会替代主代理的位置,不至于使系统瘫痪)、组通信(同一组的,仅会提交给一个客户进行处理)、有序管理(确保能够按照发送的次序被接管者吸收)。
优先级(优先级高的先被投递和处理)、订阅的延迟吸收(订阅在发布时,如果订阅者没有开启连接,那么当订阅者开启连接时,中介将会向其提交之前的,其未处理的)、吸收者处理过慢(可以利用动态负载平衡,将多数提交到处理快的吸收者,这紧张是对PTP所说)、虚拟吸收者(降落与中介的连接数目)、成熟的持久化技能(部分须要持久化到数据库或文件系统中,当中介崩溃时,信息不会丢失)、支持游标操作(可以处理大)、支持的转换、通过利用Apache的Camel可以支持EIP、利用镜像行列步队的形式轻松的对行列步队进行监控等。

467.做事的运用处景有哪些?

答:如下3个场景都可以利用做事

1、异步处理

2、运用的解耦

3、流量的削峰

468.什么是JMS?

JMS(Java Messaging Service)是Java平台上有关面向中间件的技能规范,它便于系统中的Java运用程序进行交流,并且通过供应标准的产生、发送、吸收的接口,简化企业运用的开拓。

469.JMS有哪些模型?

答:JMS机制紧张分为两种模型:PTP模型和Pub/Sub模型。

1、PTP模型:(Point to Point 对点模型) 每一个通报给一个消费者,担保通报给消费者,且不会同时被多个消费者吸收。
如果消费者暂时不在连接范围内,JMS会自动担保不会丢失,直到消费者进入连接,将自动投递。
因此,JMS须要将保存到永久性介质上,例如数据库或者文件。

2、Pub-Sub模型:(publish-subscription 发布者订阅者模型)每个主题可以拥有多个订阅者。
JMS系统卖力将的副本传给该主题的每个订阅者。

如果希望每一条都能够被处理,那么该当利用PTP模型。
如果并不哀求都必须被消费者吸收到的情形下,可利用pub-sub模型。
Pub-Sub模型可以在一对多的广播时利用。

470.什么是JsonP?

Jsonp(JSON with Padding) 是 json 的一种"利用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。

471.什么是跨域?

跨域是指一个域(网站)下的文档或脚本试图去要求另一个域(网站)下的资源。

472.什么是同源策略?

同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,现在所有支持JavaScript 的浏览器都会利用这个策略。
如果短缺了同源策略,浏览器很随意马虎受到XSS、CSFR等攻击。
所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源

473.什么是MyCat?

MyCat是目前最盛行的基于java措辞编写的数据库中间件,是一个实现了MySQL协议的做事器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL做事器通信,也可以用JDBC协议与大多数主流数据库做事器通信,其核心功能是分库分表。
合营数据库的主从模式还可实现读写分离。

MyCat是基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、精良的架构和性能以及浩瀚成熟的利用案例使得MyCat变得非常的强大。

MyCat发展到目前的版本,已经不是一个纯挚的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL办法的存储,未来还会支持更多类型的存储。
而在终极用户看来,无论是那种存储办法,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降落开拓难度,提升开拓速率。

474.什么是纵向切分/垂直切分?

便是把原来存储于一个库的数据存储到多个库上。

由于对数据库的读写都是对同一个库进行操作,以是单库并不能办理大规模并发写入的问题。

例如,我们会建立定义数据库workDB、商品数据库payDB、用户数据库userDB、日志数据库logDB等,分别用于存储项目数据定义表、商品定义表、用户数据表、日志数据表等。

优点

1)减少增量数据写入时的锁对查询的影响。

2)由于单表数量低落,常见的查询操作由于减少了须要扫描的记录,使得单表单次查询所需的检索行数变少,减少了磁盘IO,时延变短。

缺陷:

无法办理单表数据量太大的问题。

横向切分/水平切分

把原来存储于一个表的数据分块存储到多个表上。
当一个表中的数据量过大时,我们可以把该表的数据按照某种规则,进行划分,然后存储到多个构造相同的表,和不同的库上。

例如,我们userDB中的userTable中数据量很大,那么可以把userDB切分为构造相同的多个userDB:part0DB、part1DB等,再将userDB上的userTable,切分为很多userTable:userTable0、userTable1等,然后将这些表按照一定的规则存储到多个userDB上。

优点:

1)单表的并发能力提高了,磁盘I/O性能也提高了。

2)如果涌现高并发的话,总表可以根据不同的查询,将并发压力分到不同的小表里面。

缺陷:无法实现表连接查询。

475.简述Tomcat,Apache,JBoss和WebLogic的差异和联系

答:Apache:环球运用最广泛的http做事器,免费,出自apache基金组织

Tomcat:运用也算非常广泛的web 做事器,支持部分j2ee,免费,出自 apache基金组织

JBoss:开源的运用做事器,比较受人喜好,免费(文档要收费)

weblogic:该当说算是业界第一的app server,全部支持j2ee1.4(收费)

JBoss也支持j2ee

JBoss和WebLogic都含有Jsp和Servlet容器,也就可以做web容器,

JBoss和WebLogic也包含EJB容器,是完全的J2EE运用做事器

tomcat 只能做jsp和servlet的container

476.以下可以实现负载均衡的是()

A.

nagios

B.

Jenkins

C.

nginx

D.

docker

剖析:答案: C Nginx是一款轻量级的Web 做事器/反向代理做事器及电子邮件(IMAP/POP3)代理做事器,并在一个BSD-like 协议下发行。
其特点是霸占内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页做事器中表现较好,中国大陆利用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等

477.Tomcat/ WebSphere/WebLogic的浸染和特点

浸染:

Tomcat:目前运用非常广泛的免费web做事器,支持部分j2ee。

WebSphere:是IBM集成软件平台。
可做web做事器,WebSphere供应了可靠、灵巧和健壮的集成软件。

Weblogic:是美国bea公司出品的一个基于j2ee架构的中间件。
BEA WebLogic是用于开拓、集成、支配和管理大型分布式Web运用、网络运用和数据库运用的Java运用做事器。

特点(差异):

1)价位不同:Tomcat的是免费的;WebLogic与WebSphere是收费的,而且价格不菲。

2) 开源性不同:Tomcat的是完备开源的,而其他两个不是。
WebLogic与WebSphere都是对业内多种标准的全面支持,包括JSB、JMS、JDBC、XML和WML,使Web运用系统履行更大略,且保护投资,同时也使基于标准的办理方案的开拓更加简便。

3) 扩展性的不同:WebLogic和WebSphere都因此其高扩展的架构体系有名于业内,包括客户机连接的共享、资源 pooling以及动态网页。

4)运用范围的差异:Tomcat 是一个小型的轻量级运用做事器,在中小型系统和并发访问用户不是很多的场合下被普遍利用,是开拓和调试JSP 程序的首选。
WebLogic和WebSphere是商业软件,功能完好强大,紧张运用于大型企业的大型项目。

5)安全性问题差异:由于Tomcat是开源的,以是它们的安全性相对来说比较低,万一运用做事器本身有什么漏洞,你是没办法向Apache索赔的。
而WebLogic和WebSphere其容错、系统管理和安全性能已经在环球数以千记的关键任务环境中得以验证。

478.B/S和C/S的含义及其差异

C/S构造,即Client/Server(客户机/做事器)构造,通过将任务合理分配到Client端和Server端,降落了系统的通讯开销,可充分利用两端硬件环境上风。
早期软件系统多以此作为首选设计标准。

B/S构造,即Browser/Server(浏览器/做事器)构造,是随着Internet技能的兴起,对C/S构造的一种变革或者改进的构造。
在这种构造下,用户界面完备通过WWW浏览器实现,一部分事务逻辑在前端实现,但是紧张事务逻辑在做事器端实现,节约了开拓本钱,便于软件掩护。

差异

1、C/S是建立在局域网的根本上的。
B/S是建立在广域网的根本上的,但并不是说B/S构造不能在局域网上利用。

2、B/S业务扩展大略方便,通过增加页面即可增加做事器功能。
C/S的客户端还须要安装专用的客户端软件,不利于扩展。

3、B/S掩护大略方便。
开拓、掩护等险些所有事情也都集中在做事器端,当企业对网络运用进行升级时,只需更新做事器真个软件就可以,这减轻了异地用户系统掩护与升级的本钱

4、B/S相应速率不及C/S;

5、B/S用户体验效果不是很空想

479.说说你对容器的理解

容器也是 java 程序,它的紧张浸染是为运用程序供应运行环境。
容器用来接管安全性、并发性、事务处理、交流到赞助存储器和其它做事的任务

以tomcat为例:Tomcat是一个后台做事进程,其它的servlet(相称于DLL)是在Tomcat容器内运行,Broswer只与Tomcat通迅; Tomcat接管browser的要求,经由一系列动作(如果是静态网页,那么装载,按http协议形成相应流;如果是动态的如JSP,那就要调用JDK 中的servlet.jsp接口,阐明形成静态网页,按http协议天生相应流发送回browser)后,形成静态网页,返回相应。

480.为什么要利用连接池?

•传统的数据库连接办法

一个连接工具对应一个物理连接

每次操作都打开一个物理连接,

利用完都关闭连接,造成系统性能低下。

•连接池技能

客户程序得到的连接工具是连接池中物理连接的一个句柄,调用连接工具的close()方法,物理连接并没有关闭,数据源的实现只是删除了客户程序中的连接工具和池中的连接工具之间的联系.

•数据库连接的建立及关闭是耗费系统资源的操作,在大型运用中对系统的性能影响尤为明显。
为了能重复利用数据库连接工具,缩短要求的相应韶光和提高做事器的性能,支持更多的客户,应采取连接池技能.

481.数据库连接池的事理

数据库连接池的事理

传统连接办法:

首先调用Class.forName()方法加载数据库驱动,

然后调用DriverManager.getConnection()方法建立连接.

连接池技能:

连接池办理方案是在运用程序启动时就预先建立多个数据库连接工具,然后将连接工具保存到连接池中。

当客户要求到来时,从池中取出一个连接工具为客户做事。

当要求完成时,客户程序调用close()方法,将连接工具放回池中.

对付多于连接池中连接数的要求,排队等待。

运用程序还可根据连接池中连接的利用率,动态增加或减少池中的连接数。

482.MVC模式及其优缺陷

一、MVC事理

MVC是一种程序开拓设计模式,它实现了显示模块与功能模块的分离。
提高了程序的可掩护性、可移植性、可扩展性与可重用性,降落了程序的开拓难度。
它紧张分模型、视图、掌握器三层。

1、模型(model)它是运用程序的主体部分,紧张包括业务逻辑模块和数据模块。
模型与数据格式无关,这样一个模型能为多个视图供应数据。
由于运用于模型的代码只需写一次就可以被多个视图重用,以是减少了代码的重复性

2、视图(view) 用户与之交互的界面、在web中视图一样平常由jsp,html组成

3、掌握器(controller)吸收来自界面的要求 并交给模型进行处理 在这个过程中掌握器不做任何处理只是起到了一个连接的浸染

二、MVC的优点

1、降落代码耦合性。
在MVC模式中,三个层各施其职,以是如果一旦哪一层的需求发生了变革,就只须要变动相应的层中的代码而不会影响到其他层中的代码。

2、有利于分工互助。
在MVC模式中,由于按层把系统分开,那么就能更好的实现开拓中的分工。
网页设计职员可进行开拓视图层中的JSP,而对业务熟习的职员可开拓业务层,而其他开拓职员可开拓掌握层。

3、有利于组件的重用。
如掌握层可独立成一个能用的组件,表示层也可做成通用的操作界面。
可以为一个模型在运行时同时建立和利用多个视图。

三、MVC的不敷之处

1、增加了系统构造和实现的繁芜性。
对付大略的界面,严格遵照MVC,使模型、视图与掌握器分离,会增加构造的繁芜性,并可能产生过多的更新操作,降落运行效率。

2、视图与掌握器间的过于紧密的连接。
视图与掌握器是相互分离,但确实联系紧密的部件,视图没有掌握器的存在,其运用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

3、视图对模型数据的低效率访问。
依据模型操作接口的不同,视图可能须要多次调用才能得到足够的显示数据。
对未变革数据的不必要的频繁访问,也将危害操作性能。

4、目前,一样平常高等的界面临象或布局器不支持模式。
改造这些工具以适应MVC须要和建立分离的部件的代价是很高的,从而造成MVC利用的困难。

483.MVC模式完身分页功能的基本思路是什么?

1)页面提交页码(第几页)到Servlet中

2)Servlet吸收到页码后,将页码通报给分页工具类(PageBean)

3)Servlet中调用Service层传入PageBean工具

4)Service层调用DAO层传入PageBean工具

5)Servlet中得到查询出来的数据,并setAttrivute保存

6)在页面中得到(getAttribute)数据,遍历输出

484.常用的Web容器

答: Unix和Linux平台下利用最广泛的免费HTTP做事器是Apache做事器,而Windows平台的做事器常日利用IIS作为Web做事器。
选择Web做事器应考虑的成分有:性能、安全性、日志和统计、虚拟主机、代理做事器、缓冲做事和集成运用程序等。
下面是对常用做事器的简介:

IIS:Microsoft的Web做事器产品为Internet Information Services。
IIS 是许可在公共Intranet或Internet上发布信息的Web做事器。
IIS是目前最盛行的Web做事器产品之一,很多著名的网站都是建立在IIS的平台上。
IIS供应了一个图形界面的管理工具,称为Internet做事管理器,可用于监视配置和掌握Internet做事。
IIS是一种Web做事组件,个中包括Web做事器、FTP做事器、NNTP做事器和SMTP做事器,分别用于网页浏览、文件传输、新闻做事和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很随意马虎的事。
它供应ISAPI(Intranet Server API)作为扩展Web做事器功能的编程接口;同时,它还供应一个Internet数据库连接器,可以实现对数据库的查询和更新。

Kangle:Kangle Web做事器是一款跨平台、功能强大、安全稳定、易操作的高性能Web做事器和反向代理做事器软件。
此外,Kangle也是一款专为做虚拟主机研发的Web做事器。
实现虚拟主机独立进程、独立身份运行。
用户之间安全隔离,一个用户出问题不影响其他用户。
支持PHP、ASP、ASP.NET、Java、Ruby等多种动态开拓措辞。

WebSphere:WebSphere Application Server是功能完善、开放的Web运用程序做事器,是IBM电子商务操持的核心部分,它是基于Java的运用环境,用于建立、支配和管理Internet和Intranet Web运用程序,适应各种Web运用程序做事器的须要,范围从大略到高等直到企业级。

WebLogic:BEA WebLogic Server是一种多功能、基于标准的Web运用做事器,为企业构建自己的运用供应了坚实的根本。
各种运用开拓、支配所有关键性的任务,无论是集成各种系统和数据库,还是提交做事、跨Internet协作,Weblogic都供应了相应的支持。
由于它具有全面的功能、对开放标准的屈服性、多层架构、支持基于组件的开拓,基于Internet的企业都选择它来开拓、支配最佳的运用。
BEA WebLogic Server在使运用做事器成为企业运用架构的根本方面一贯处于领先地位,为构建集成化的企业级运用供应了稳固的根本,它们以 Internet的容量和速率,在连网的企业之间共享信息、提交做事,实现协作自动化。

Apache:目前Apache仍旧是天下上用得最多的Web做事器,市场霸占率约为60%旁边。
天下上很多著名的网站都是Apache的产物,它的成功之处紧张在于它的源代码开放、有一支强大的开拓团队、支持跨平台的运用(可以运行在险些所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。

Tomcat:Tomcat是一个开放源代码、运行Servlet和JSP的容器。
TomcatServer实现了Servlet和JSP规范。
此外,Tomcat还实现了Apache-Jakarta规范而且比绝大多数商业运用软件做事器要好,因此目前也有不少的Web做事器都选择了Tomcat。

Nginx:读作"engine x",是一个高性能的HTTP和反向代理做事器,也是一个IMAP/POP3/SMTP代理做事器。
Nginx是由Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开拓的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD容许证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的花费而有名。

485.Java Web开拓的Model 1和Model 2分别指的是什么?

答:Model 1因此页面为中央的Java Web开拓,只适宜非常小型的运用程序,Model 2是基于MVC架构模式的运用,这一点在前文的口试题中已经详细讲解过了。

486.说说什么是框架:

框架(framework)是一个框子--》指约束性,也是一个架子--》指支撑性IT语境中的框架,特指为办理一个开放性问题而设计的具有一定约束性的支撑构造,在此构造上可以根据详细问题扩展、按插更多的组成部分,从而更迅速和方便地架构完全的办理问题的方案。

1)框架本身一样平常不完全到可以办理特定问题,但是可以帮助您快速办理特定问题:

没有框架所有的事情都从零开始做,有了框架,为我们供应了一定的功能。
我们就可以在框架的根本上开拓,极大的办理了生产力。

不同的框架,是为理解决不同领域的问题,一定要为理解决问题才去学习框架。

2)框架天生便是为了扩展而设计的

3)框架里面可以为后续的组件供应很多赞助性、支撑性的方便易用的实用工具(utilities),也便是框架时常配套一些帮组办理某类问题的库(libraries)或工具(tools).

在java中便是一系列的jar包,实在质便是对jdk功能的扩展。

487.大略说一下MVC框架?

是为理解决传统MVC模式(jsp+servlet+javabean)一些问题而涌现的框架

传统MVC模式模式问题:

1) 所有的Servlet和Servlet映射都要配置在web.xml中,如果项目太大,web.xml就太弘大并且不能实现模块化管理。

2)Servlet的紧张功能便是接管参数、调用逻辑、跳转页面,比如像其他字符编码、文件上传等功能也要写在Servlet中,不能让Servlet紧张功能而须要做处理一些特例。

3)接管参数比较麻烦

(String name = request.getParameter(“name”)),不能通过model接管,只能单个吸收,吸收完成后转换封装model。

4)跳转页面办法比较单一(forward,redirect),并且当我们的页面名称发生改变时须要改变Servlet源代码。

现在比较常用的MVC框架:

webwork

Struts

Struts2

SpringMVC

488.大略讲一下struts2的实行流程

一个要求在struts2框架中处理大概分为一下几个步骤:

1)客户浏览器发送一个指向Servlet容器(例如Tomcat)的要求

2)这个要求经由一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对付Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)

3)接着FilterDispatcher(StrutsPrepareAndExecuteFilter)被调用,FilterDispatcher讯问ActionMapper来决定这个请是否须要调用某个Action

4)如果ActionMapper决定须要调用某个Action,FilterDispatcher把要求的处理交给ActionProxy

5)ActionProxy通过Configuration Manager讯问框架的配置文件,找到须要调用的Action类

6)ActionProxy创建一个ActionInvocation的实例。

7)ActionInvocation实例利用命名模式来调用,在调用Action的过程前后,涉及到干系拦截器(Intercepter)的调用。

8)一旦Action实行完毕,ActionInvocation卖力根据struts.xml中的配置找到对应的返回结果。
返回结果常日是(但不总是,也 可 能是其余的一个Action链)一个须要被表示的JSP或者FreeMarker的模版。
在表示的过程中可以利用Struts2 框架中继续的标签。
在这个过程中须要涉及到ActionMapper

489.Struts2中的拦截器,你都用它干什么?

java里的拦截器是动态拦截Action调用的工具,它供应了一种机制可以使开拓者定义一个action实行的前后实行的代码,也可以在一个action实行前阻挡其实行,同时也供应了一种可以提取action中可重用部分的办法。

在AOP(Aspect Oriented Programming)中拦截器用于在某个方法或字段被访问之前,进行拦截后在之前或之后加入某些操作

1)struts2中的功能(参数处理、文件上传、字符编码等)都是通过系统拦截器实现的

2)当然我们也可以自定义拦截器,进行可插拔配置,可以实行Action的方法前后,加入干系逻辑完成业务。

利用场景:

1)用户登录判断,在实行action的前面判断是否已经登录,如果没有登录的就跳转登录页面。

2)用户权限判断,在实行action的前面判断是否具有,如果没有权限就给出提示信息。

3)操作日志...

490.大略讲一下SpringMVC的实行流程?

491.大略说一下struts2和springMVC有什么不同

492.说一下Spring中的两大核心

493.讲一下Spring的事务的传播特性

494.什么是ORM 495.Hibernate工具的状态

496.先容一下Hibernate的缓存

497.大略讲一下webservice利用的场景

498.大略先容一下activity?

499.什么是MyBatis?

500.Mybatis是如何进行分页的?分页插件的事理是什么?

501.MyBatis与Hibernate有哪些不同?

502.简述Mybatis的Xml映射文件和Mybatis内部数据构造之间的映射关系?

503.什么是MyBatis的接口绑定,有什么好处?

504.Mybatis能实行一对一、一对多的关联查询吗?都有哪些实现办法,以及它们之间的差异?

505.MyBatis里面的动态Sql是怎么设定的?用什么语法?

506.利用MyBatis的mapper接口调用时有哪些哀求?

507.Mybatis是如何将sql实行结果封装为目标工具并返回的?都有哪些映射形式?

508.MyBatis接口绑定有几种实现办法,分别是怎么实现的?

509.MyBatis实现一对一有几种办法?详细怎么操作的?

510.什么情形下用表明绑定,什么情形下用xml绑定?

511.MyBatis的好处是什么?

所有的口试题目都不是一成不变的,特殊是像一线大厂,上面的口试题只是给大家一个借鉴浸染,最紧张的是给自己增加知识的储备,防患未然。
末了给大家分享Spring系列的学习条记和口试题,包含spring口试题、spring cloud口试题、spring boot口试题、spring教程条记、spring boot教程条记、最新阿里巴巴开拓手册(63页PDF总结)、2022年Java口试手册。
一共整理了1184页PDF文档。
私信博主(777),祝大家更上一层楼!


标签:

相关文章

大数据时代下的信息革命,洞察与启示

随着互联网技术的飞速发展,大数据已经成为新时代的标志性产物。它不仅改变了我们的生活,更深刻地影响着社会的方方面面。本篇文章将基于本...

Web前端 2024-12-16 阅读0 评论0

php文本域乱码技巧_php运行文件乱码

以下三种字符集设置为同等,即可办理运行php文件后涌现乱码的问题。1、PHP编辑器的字符集以Zend Studio作为PHP程序的...

Web前端 2024-12-16 阅读0 评论0

php获取文件上传技巧_php的文件上传

这里首先声明一下这一章的内容比较多,比较难,你要抱着和自己去世磕的态度。细微之处不放过,多敲多练是王道。 学习就像爬山,得一步一步...

Web前端 2024-12-16 阅读0 评论0