Javaweb面试题178问
1:html
静态网页技术,骨架,常用标签body,title,head,vedio,a,div,table,form,,input等
2:css
静态网页技术,,渲染,html中可通过link标签引入css,也可直接在head中用style标签直接书写css代码
3:css选择器
标签名,类,id,后代,属性选择器
4:css常用属性
背景,边框,文本,字体等
5:css元素类型
块级元素,行内元素,行内块元素
6:js
静态网页技术,负责动画效果,安全跨平台是js特点,html中可以通过script直接书写js代码,也可以通过script引入外部js文件
7:js数据类型
数值,字符串,布尔,复杂数据类型主要指对象,函数,数组等
js使用var指向任意数据类型且数组长度和类型可变,运算符和分支循环语句和java基本相似,js数组也是用var声明
8:js函数
function 函数名([参数列表]){}
或者var 变量名 =function([参数列表]){函数体}
9:js dom操作
document.getElementById();,createElementById获取,创建元素等
10:js 增删改元素
document.createElement(),创建js对象,parent.appendChild添加子元素,parent.removeChild删除子元素,element.innerHtml获取设置当前元素的html内容
11:jquery
j在html中使用就必须要引入此js函数库文件,可以像css选择器一样获取html元素,jquery提供了相应的函数,text函数,remove函数等
12:文档事件就绪函数
主要原因元素还没加载到就被执行,解决方式将script标签移到body内部,第二个解决方式就是获取元素的代码放在文档事件就绪函数中,$(function(){});,此简化写法是jquery提供的,其他写法不建议
13:jquery选择器
基本选择器,类,id,多元素等,层级选择器,基本过滤选择器
14:jquery元素
append,remove,replaceWith,添加,删除,替换元素
15 jquery常用函数
each,text,show,val,prop设置获取元素属性值,css函数等
16:js,jquery之间相互转换
通过$(js对象)转jquery,或jquery对象[下标]转js
17:tomcat
web服务器,管理和发布web应用,主要目录lib,conf配置文件,webapps管理web资源,logs日志文件,web-inf受保护资源目录,需跳转访问
18;打war包
打包后可以直接修改名称或者web应用在pom文件指定好打包方式
19:Http协议
基本原则一次请求,一次响应,请求包含 请求行,若干请求头,空白行,实体,响应包含状态行,若干响应头,空白行 响应实体
20:请求方式什么时候get提交,什么时候post提交
只有使用表单form,并且metnod明确指定post时才为post,其他都为get
21:get,post提交区别
get采用拼接方式,不利于隐私数据保护,且数据量有限,post数据量更大,适合传输较为隐私的数据
23:servlet
动态web技术,必须要依托web服务器才能运行,作用是对请求进行处理,需要创建servlet接口或者继承子类例如httpservlet,并实现其中方法,然后在web.xml配置servlet对外访问路径,servlet实现方法一般doget,dopost两种,且处理代码相同时可以在doget中调用dopost,分两者分别别对应get或者post请求需要
24:request和reponse
分别为http请求和响应信息的对象,浏览器发请求访问服务器中的某个servelt时服务器会调用servlet中的service方法来处理请求,调用方法之前会创建request和response对象,服务器每次处理请求都谁创建request和reponse对象,请求处理完,响应结束时,再销毁
25:转发,重定向
转发时一次请求一次响应,转发前后地址不改变,且必须是在同一web应用,重定向,两次转发,两次响应,重定向前后地址发生改变,且可以来自不同web应用
26:MySQL
常见的关系型数据库,底层以二维表形式保存数据的库统称关系型数据库,此外常见的oracle,sql server,数据库就是管理和存储数据的仓库,业务开发中基本都是围绕select,update,insert,delete等操作
27:mysql常见函数
min,max,sum,count,now,year,month等
28:mysql数据类型
常用 int bigint,double,char,varchar,date,time,datetime,timestamp等
29:mysql常见的字段约束
主键约束,唯一不为空,非空约束,可重复不为空,唯一约束,唯一但可为空,外键约束,维护两张表之间关系
30:表关系
一对一(双向一对一,商品,价格表),一对多(可以看成单向一对多,部门,员工表),多对多(可以看成双向一对多,角色,权限表),外键分别设在从表,多的一方,和新建第三方关系表,区分记住外键不唯一即可
31:where,having区别
where用于分组之前,对记录筛选过滤,having用于分组之后,对记录进行筛选过滤
32:数据库备份,恢复
mysqldump,source
33:添加外键
foreign key
34:级联更新,级联删除
on update cascade
on delete cascade
35:jdbc
数据库连接技术,和mybatis一样但更加底层,方便我们在开发中,通过Java程序访问数据库,但相比mybatis,需手动导入mysql jar包,需要手写注册驱动,获取连接,传输器,发送sql并返回和处理结果,释放资源等步骤,比较核心的statemment传输器对象和resultSet结果集对象,且在实际开发中statemment父对象的preparedstatement子对象,使用的更多且更加安全,可以有效防止sql注入攻击,原理是先同服务器确定sql骨架,再发参数,这样即使有其他子体,也只会被当文本处理,不会被修改
36:数据库连接池
可以复用,用借完还的这么一个池子,不用每次创建和被关闭连接,常见的数据库连接池c3p0,druid,且所有的连接池都要实现DataSource数据源接口,例如c3p0连接池的使用,导jar包,创建连接池对象,创建c3p0.properfies配置文件,配置连接数据库的基本信息,然后从连接池获取连接对象,用完还回连接池
37:jsp
和servlet都是动态web技术,可以看成一个能写java代码的html,可以解决servlet不适合向浏览器输出完整html页面的问题,且也解决了html无法展示动态数据的问题,
38:jsp指令
page指令,声明jsp的基本属性信息,taglib指令,用于引入jstl标签库或其他标签库
39:jsp标签库
el表达式${将内容输出到当前为止}
jstl标签库,和el配合使用可以大大简化jsp中的大部分java代码,避免混乱
jstl中常用标签 c:set,c:if,c:foreach,添加属性,判断,遍历等
40:maven
安装,配置私服,整合开发工具,企业级java项目开发及依赖管理,添加依赖自动下载,整体更加方便快捷,maven必须要有jdk环境
41:maven三种仓库关系,本地,远程,中央仓库,是依次寻找下载的关系
42:cookie,session
一种会话机制,从浏览器访问服务器开始到结束的一整个过程
cookie是客户端技术,将会话产生的数据存在客户端,cookie基于请求,响应两个头工作,通过响应头将cookie从服务端发送给浏览器,浏览器保存,以后浏览器每次访问服务器,都会通过请求头将cookie信息再带回服务器,服务器获取,从而实现某些功能,例如登录
session是将会话产生数据存在服务器端,服务端技术,是一个域对象,也保存了一个map集合,望session里面存数据,就是将数据保存到session的map集合,setAttribute可以将数据存到session中,getAttribute可以从session中取出来
43:cookie,session区别
一个将数据存在客户端,一个存在服务端,cookie适合存储长期保存但安全性不高数据,记住用户名,30天内自动登录等,session则相反,保存登录状态,保存校验码等
44:mysql数据库事务
事务就是要不全部成功,要不全部失败
45:事务四大特性
原子,一致,隔离,持久
46:事务并发读问题,及解决
脏读,读到了另一事物未提交更新数据,幻读,同一张表两次查询结果不一致,幻读,对统一记录的两次读取结果不一致,
避免这三种问题,提高事务隔离级别来解决,但是级别越高会造成性能越差,默认隔离级别是repeatable read 可防止脏读,不可重复度,serializable,不会有任何并发问题,但是性能最差,一般不推荐
47:mybatis
开源的持久层框架,对jdbc做了进一步封装,不用再花精力去处理注册驱动,创建statement,手动设置参数等jdbc的繁杂过程代码,解决了jdbc要将结果集封装成对象的麻烦,直接通过映射,封装,获取相应的数据,核心配置文件mybatis-config.xml,且可以使用xml,和全注解两种开发模式,前者更方便维护,后者更具开发效率
48:${}占位符,#{}占位符区别,后者用的更多,对sql语句中的参数值进行占位,前者是对sql片段(字符串)进行占位,采用直接拼接的方式,且会不进行转义处理,可能会发生sql注入攻击,前者则不会,且会进行转义处理
49:动态SQL标签
if,where,foreach等
50:mybatis中sql语句中的特殊符号
< < >>等
51:spring
spring核心 ioc aop,也就是管理软件中的对象,优势是简化开发,方便解耦,aop编程和声明式事务的支持,方便集成各种优秀框架等,源码也是学习的范例
srring的架构,持久层,表现层,aop,核心容器ioc(主要bean工厂组件)等
52:耦合,解耦
对象之间依赖关系越高耦合越高,维护成本也越高,反之越低,低耦合开发是主要考虑的,解耦就是降低对象之间的依赖关系
53:Ioc
控制反转就是把创建对象的权利交给框架,例如通过mapper注解,将封装的mybatis数据交给spring管理,并创建映射对象,以供调用,这种创建对象的方式,降低了耦合性
54:创建对象的几种方式
new,instalences,ioc
55:bean对象的单例和多例
可以通过scope属性或注解指定其作用域,常用sinleton单实例和prototype多实例,单实例全局唯一,多实例每次调用都要创建一个新的对象,使用单例或者多例看实际应用中该状态是否会改变,会则多例
56:SpringDI依赖注入
set方法注入,构造方法注入
57:springmvc框架
之前我们用servlet开发,每个请求都要创建一个servlet类过多时会导致问题,且web.xml的配置量太多.不利于开发,在接收数据时也一路按照字符串接收,需要进行大量的复杂处理,且必须要在服务器中运行,具有依赖性,不利于单元测试而springmvc是spring的一个模块,且无需整合,作为一个基于mvc的web框架,可以代替之前的servlet整合开发,但是底层依旧是通过servlet实现的
58:springmvc执行原理
用户发请求到前端控制器-收到后调用处理器映射器-调用controller-service-dao-数据库,-处理器适配器将controlle结果给前端控制器-前端控制器返给视图解析器,解析后再进行渲染,由前端控制器将填充了数据的网页响应给用户
59:html中英文空格
 ,&emsp
60:页面状态码
200请求处理成功,302标识请求的位置不对,404资源找不到,304/307,表示通知浏览器使用缓存,500服务端程序出错
61:http协议
规定了浏览器和服务器之间的通信规则,原理是一次请求,一次响应,服务器只能被动的等待请求,根据请求做出响应
62:servlet生命周期
1,初始化调用init方法,收到请求后调用service方法,来处理请求3:请求结束后,调用destory销毁
63:请求参数
浏览器发送给服务器的数据,不区分请求方式
64:junit单元测试框架
不用创建main及类实例就能执行一个方法,常用注解@Test,before,after
65:sql注入攻击
用户提交表单数据时可能携带一些sql关键字或者特殊字符,导致sql语义被改变,从而执行一些意外的操作,不输入账号密码也能登陆等
66:解决sql注入攻击方式
1;对用户提交的参数进行校验,例如使用正则
2:使用jdbc的preparedstatement
67properties和xml文件区别
都是配置文件,properties只能存放kv形式无法配置有结构的数据,而xml可以存放有结构的数据,但是配置信息多,编写也更加复杂,不如properties整洁,需要通过java程序读取时,也更加方便
68:依赖范围
指定你这个jar包在那个范围才有效,运行时还是什么时候
69:依赖传递
1继承2项目后,1就可以使用2的依赖
70:pojo
用于封装数据的简单java对象
71:为什么使用mybatis
对jdbc实现封装,自带连接池,且修改sql只要修改mapper配置文件,类不需要重新编译,,对查询sql执行后返回的resultset对象,mybatis会帮我们处理,转成java对象
72:mvc设计模式
model,view,controller,数据处理,视图,控制器
73:控制反转
就是把创建对象的权力交给框架,指将对象的创建,初始化,存储,管理都交给了spring容器
74:ioc容器
spring把每一个需要管理的对象称为bean,管理bean的容器称为ioc容器
75:什么是spring的依赖注入
就是创建对象的同时或之后如何给对象的属性赋值
,两种方式set方法注入,构造方法注入,接口注入
76:bean对象的生命周期
都会经历出生,或者,死亡,总结等过程,区别是单实例随着bean对象的销毁而销毁,多实例则在长时间无引用时,由垃圾回收机制回收
77:mybatis执行流程
通过核心配置文件生成sqlsession工厂对象,再基于该对象生成sqlsession对象,通过该实例获取mapper对象并运行mapper映射的sql语句,完成数据库的crud操作和事务提交,然后关闭sqlsession
78:spring中的模式
工厂,单例,代理,bean的创建和作用域就是工厂和单例,aop实现通过代理
79:内存溢出,泄露
运行内存大于实际内存,泄露就是内存被不良占用导致的低效或崩溃等情况
80:nginx
http和反向代理web服务器,内存小,并发强,tomcat并发能力在150-200左右而nginx并发在3-5万每秒,所以nginx主要做反向代理和负载均衡服务器使用
81:反向代理
反向代理就是介于客户端与服务器端,代理客户端的请求并决定发送到那台服务器,有负载均衡的道理在里面,同时也保护了真实的服务器信息
82:跨域
跨域就是访问页面和实际页面,协议,域名,端口有不一致的地方,跨域请求,返回值浏览器不予解析
83:http协议
基于tcp/ip的浏览器与服务器之间通信的规,一次请求一次响应
84:request生命周期
请求开始时创建,请求完毕时销毁
85:ServletContext生命周期
每一个web应用创建后都会产生一个servletcontext对象,该对象随着应用的移除或者服务器关闭而销毁
86:jsp,servlet关系
jsp本质可以说是servlet,因为jsp会被java编译成一个servlet片段,输出执行,jsp适合输出界面,servlet适合控制逻辑,某种角度jsp就是可以写java代码的html,解决html不能输出动态数据,servlet不适合输出完整页面的问题
87:jsp九大隐式对象
request,response,session,application,page,out,exception,config等
88:mysql优化
尽量使用字段不要*,将大的sql分成几个小的sql执行,每隔一一段时间,alert优化表,小表join大表的连接原则,多用explain和profile分析语句,尽量避免使用order by,不用%开头等
89:filter作用
filter过滤器起到过滤作用,filter对象创建前会调用init方法来完成初始化,销毁之前会调用destory方法 执行善后工作,核心doFilter,对访问的请求和响应进行拦截 ,过滤器拦截到对资源的访问时,服务器会自动调用该方法执行过滤代码,我们只要在这个方法中设计过滤器的逻辑代码即可
90:filter生命周期
web应用加载后,会立即创建出对应的所有过滤器对象,调用init初始化,这些过滤器对象驻留在内存中为后续拦截进行服务,每当拦截到资源时,都会导致dofilter方法的执行,,最终直到服务器关闭或web应用移除出容器,随着web的销毁,郭璐琪对象销毁,销毁之前调用destory方法
91:数据库连接池
其实就是一个缓冲池,需要时用,用完还回去,而不是销毁,提高了复用性和整体效率
92:http和https区别
http安全性没有https高,数据传输不进行加密,不利于隐私数据的传输,https是ssl+html的协议构建,可进行加密传输,身份认证的网络协议,比https更加安全
93:servlet的单例问题
通俗说servelt就是供其他程序调用的类,不能独立运行,,servlet只会创建一个servlet实例对象,第一次访问时就会被加载到内存中,此后该实例对各个请求服务,每次情况会调用一次service方法,直到关闭浏览器之后servlet终止,servlet是单例的,所以存在线程安全问题
94:""和null区别
区别是内存中有没有字符串对象,""底层存在这个字符串对象的引用 ,长度0, 且 我们在表单填"",接受的字符串是"",但是存入数据库,查出来的就是nul
95:servlet多线程同步问题
多个用户访问servlet时,会访问唯一的servlet实例中的成员变量,如果对成员变量进行写入操作,就会导致servlet的多线程问题,既数据不一致,解决的方式一个是使用局部变量,局部变量在每个线程中都有各自的实例,第二个就是使用同步代码块synchronized{}
96:request.getparmenter,request.getattribute区别
getparmenter获取的string类型,getattribute获取的object类型,且可以发送,接收对象,而getparmenter只能接收字符串
97:jsp中动静include区别
静态相当于复制,动态能够自动检查北韩文件,进行及时的更新等
98:el表达式的功能及为什么使用
从四大域取数据显示,取出请求参数显示,主要还是获取数据数据比较简单
98:如何防止表单重复提交
使用session技术
99:什么是web容器
给处于其中的应用程序组件像jsp,servlet提供一个环境,组件直接和容器中的变量交互,不必关注其他系统问题
100:j2ee常用设计模式
java中一共23中设计模式,例如factory,builder建造模式,facade门面模式,proxy代理模式,iterator迭代子模式,strategy策略模式
101:web.xml作用
部署控制符,java只要是容器就会存在部署控制符,可以控制整个web组件的状态,也可以配置整个窗口的状态
102:SQL优化,索引范式
三范式,第一范式每列保持原子行,第二范式,每列都和和主键相关,第三范式,每列都和主键直接相关,索引,避免在索引字段上进行计算,或使用not,<>,! =,以及避免使用is null或not null,避免在索引上出现数据类型转换,使用函数,建立索引的列出现空值等
103:ajax原理
相当于在用户和服务器端之间加了一个中间层,使用户操作和服务器响应异化,并且像一些简单的数据验证和数据处理都交给ajax引擎自己操作,只有确定需要读取新数据时再由ajax引擎代为向服务器提交请求
104:xml和html的区别
xml是用户数据格式化,html用于编辑静态网页,且html语法宽松,有大量各类标签
105:js ==和===区别
==代表相同 ===代表严格相同,前者比较,如果不同,会进行一次类型转换,而后者不同则直接false
106:sql优化
查询时尽量不要使用*,sql语句用大写,尽量使用关联查询,left join inner join等 or的查询尽量使用 union/union all代替
107:Tomcat配置,部署优化
内存优化,Tomcat依赖于jvm,可以配置jvm的内存配置,最大连接数配置通常搭配nginx提升tomcat的并发能力
108:cs,bs区别
cs要求操作系统相同,且用户相对固定,适合高度机密的信息系统,且对电脑配置要求高,且每一个客户端都要升级程序,可以采用自动升级,bs则客户端不需要安装和维护,电脑配置要求也不高,对于操作系统没有限制,只要有操作系统和浏览器即可,,最大的有点就是可以在任何地方操作,不需要安装专门的软件
109:request,response,sesson,application区别
客户端向服务端发送求,以及响应请求,session,servlet中通过getsession创建,关闭浏览器session消失,application由服务器创建和销毁
110:request和session取值区别,以及出现乱码的解决
request可以通过getattribute方法取值,也可以通过getparamter,session需要通过request.getsession.getattribute才能取值,request针对的是一次会话,response是整个会话,页面可以通过pageEncoding设置编码
111:spring在ssm中起什么作用
ioc/di依赖注入,把dao依赖注入到service层,service转给控制层,此外就是面向切面编程,bean工厂等
112:spring主要使用了什么模式
工厂模式,单例模式,代理模式
113:starts2 和springmvc区别
starts2入口是filter过滤器,springmvc是servlet,也就是前端控制器,前者只能基于类开发,只能设置多例,后者基于方法开发,可单也可多例
114:mybatis的好处?
把sql语句从java中独立出来,封装了底层的jdbc,api的调用,并且能够将结果集自动转换为javabean的对象,简化了java数据库编程的重复工作,自己编写sql语句,更加的灵活
115:servlet层级结构
http请求常见的有四种,get读取,post保存,put修改,delete删除
开发者自定义的servlet类推荐继承httpservlet,重写doget和dopost
116:jsp
主要负责与用户交互,解决html动态数据和servlet不适合输出一个完整html页面的问题,三件套+java的混合文件,本质jsp引擎会将他翻译成一个servlet文件,然后web容器调用servlet完成响应,这也是为什么说jsp本质就是一个servlet的原因
117:request的常用方法
get/set attribute getparameter
118:http请求状态码
200成功,404资源找不到,400请求类型不匹配,500 java程序抛出异常
119:reponse常用方法
sendredirect 重定向,页面之间的跳转
120:filter
拦截传入的请求和传出的响应,或者以某种方式处理正在客户端和服务端之间交换的数据流,使用时只要实现该接口即可
121:ajax
通俗说就是一种交互方式,异步加载,局部刷新,典型的就是我们在浏览商城时往下拉一点加载一点,就是用的ajax
这样用户体验更好
122:dbutils
将结果集到java对象映射的工具类,完成数据的封装
123:jdbc
提供了面向应用和数据库的api供开发人员和数据库厂商调用,常用api,connection,statement,drivermanger等,整个调用过程加载驱动,只需要加载一次,随后connection获取连接,statement发送执行sql,获取返回结果,执行结果,释放资源
124:线程thread,runnable,callable区别
thread实现run,但是是单继承,runnable也是run但避免了单继承的局限性,runnable的run无返回值,callable重写了call,有返回值且支持泛型
125:线程start和run区别
run不开启线程,只是对象调方法,start开启线程,并让jvm调用run在开启的线程中执行
126:线程相关的基本方法
wait(会释放锁),sleep(不会释放锁),notifty等
127:线程池的关闭
可以通过shutdown和shutdownnow两个方法
128:垃圾收集机制gc
从两方面来说,一方面发现垃圾,像计数算法和根搜索算法,另一方面是清除垃圾,清除算法,整理算法等
129:jvm调优
xmx设置最大可用内存,xms设置可用内存等
130:tcp三次握手
第一次客户端发送syn数据包到服务端,第二次服务端收到后,会应答一个报文,客户端确认收到报文,应答一个报文,双方都确认对方的接受及发送能力正常
131:索引
主要作用提高查询效率和数据库性能,包括普通索引,主键索引等,索引是在mysql的存储引擎innerdb和mylsam层实现的,常见b+树索引,hash索引
132:数据库锁
悲观,乐观,死锁等
133:索引优化
尽量不使用!= <>等符号,同时对使用or 可以用union 或union all代替
134:SQL语句调优
多表连接的字段上可以建立索引,提高效率,优化insert 批量插入语句等,尽量避免子查询,转而join连接查询等
135:mybatis创建步骤
创建sqlsession工厂,并通过工厂创建sqlsession对象,并执行数据库操作,调用commit提交事务,close关闭会话等
136:resultType和resultmap区别
字段和属性名完全一致用resulttype,不一致用resultmap
137:mybatis缓存机制
一级缓存sqlsession级别,二级缓存mapper级别
138:ioc的理解
之前通过new的方式或者instrance的方式创建对象,而现在可以通过ioc,把创建对象的工作交给框架.,对象创建控制权的转移,ioc注入方式set,构造,注解注入等,,ioc一共就是两层,第一层控制反转,第二层di注入,比如我们想在service调用另一个service,直接把它交给spring管理,然后直接调用即可
139:aop
面向切面编程可以看成对面向对象的扩展,比如应用的扩展或维护,会对多个对象产生影响的公共关系或逻辑,就像多个人拉一个横幅,抽取和封装一个aspect可重用模块,,且aop使用的jdk和cglib动态代理,jdk只提供接口代理,不提供代理类,而如果代理类没有实现invonctionHandler接口,默认采用cglib代理,但是某个类如果某个类被标记为final,无法使用cglib,常用的切面场景,自定义事务,异常切面等
140:spring生命周期
创建bean,ioc注入,然后根据相应的实现接口调用相关的类方法,bean不再需要的时候,会先调用destory来清理最后再销毁
141:spring支持bean的作用域有几种
singletion,prototype,request,session等
142:beanfactory和applicationcontext区别
beanfactory是spring最顶层接口,applicationcontio是它的子接口
143:spring框架中都用了那些设计模式
单例,代理,工厂模式
144:spring 事务的实现原理和方式
spring事务本质就是数据库对事物的支持,实现方式主要编程式利用commit,rollback等事务管理方法,,声明式利用注解transactiona,aop配置等
145:spring的通知类型
前置,后置,异常,最终
146:spring常用注解
component,service,controller,autowrite,bean,coamponentscan,transaction,requestbody,configurtion等
147:springmvc
基于mvc设计模式的web框架,可以认为是对servlet的优化,底层的本质实现还是servlet,,简化了配置和我们servlet启动时手写的那六步,且servlet必须要依托服务器进行运行,每次都要重新创建对象,过多时会影响整体性能,而mvc则把访问改为了一个个方法,效率更高
148:springmvc的常用组件
前端控制器,处理器映射器,处理器适配器,处理器,视图解析器,试图等
149:springmvc的执行流程
用户发送请求到前端控制器,前端控制器收到去找处理器映射器,然后返回给前端控制器,前端控制器拿到再找处理器适配器,处理器适配器再找处理器,然后返回给前端控制器再调用视图解析器,然后再视图渲染
150:springmvc常用注解
requestmapping,requestbody,reponsebody等
151:springmvc异常处理方式
可以定义一个全局异常处理类,加controlleradvice注解,里面比如定义一个io异常或service异常等,出现此类问题抛出到这里,并给出提示信息
152:dobbo
分布式服务框架,使用分层方式来架构,模型要不是服务方提供服务,要不消费方提供消费等
153:zookper
小文件存储系统,表现为一个小文件的目录树结构,技能存储数据,也能像目录一样有节点,每个节点存最多1m数据
,节点类型2大类,永久,临时,经常用在统一命名服务,统一配置管理等
154:springboot
就是spring的脚手架,最大优点就是使用各类注解非常方便,而且简化了大量配置,主要就是集中在业务逻辑这块,
155:springmvc常用注解
springbootappliction,springconfigration,mapperscan,service,controlleradvice等
156:soa
面向服务的服务治理架构,服务较多时,为了优化小服务的资源,需要增加一个调度中心实时管理集群容量,最初的服务治理基石是dubbo,与微服务相比,容错小,而且服务关系复杂
157:微服务
微服务就是在分布式上进一步进行了细化拆分,每一个服务都对应唯一的业务,单依职责且互不干扰,自治,也是一系列框架的集合,集成springboot,提供了很多优秀的服务,统一配置中心,网关,负载均衡等,优点基于spring,稳定,且支持springboot,提高了开发效率,,主要用来开发微服务
158:springcloud核心组件
eureka注册中心,ribbon负载均衡,zuul网关等
159:springboot和springcloud的区别
boot是为了解决spring配置多的问题,cloud是为了解决微服务之间协调和配置问题,boot不需要依赖cloud开发,而cloud需要boot的支持
160:cloud和dobbo区别
一个阿帕奇的,一个阿里的,cloud性能更高,dobbo没有网关功能
161:eurka和zookper区别
eurka集群各节点平等,zookper集群节点有主从之分,euraka是主动拉取服务,zk服务是监听机制,一个注册用在cloud中,另一个用在dubbo中
162:redis
可以用作数据库,缓存,中间件,优点就是非阻塞io,且支持事务,持久化,且性能出色,增加缓存可以减轻用户端和服务端的读操作压力,使用redis的主要原因就是高性能和高并发
163:redis数据结构
strng,hash,list,set
164:redis缺点
双写一致性问题,写个删除缓存的接口即可,缓存雪崩问题,使用互斥锁解决,缓存击穿问题也可以使用互斥锁可以解决,并发竞争问题可以使用分布式锁解决
目前分布式锁有三种实现方式,基于redis,基于数据库,基于zookrper
165:redis集群
主从复制,主机与从机数据同步
哨兵机制就是连长挂了下面递补为连长,哨兵机制也是基于主从复制的
166:mq
消息中间件常见的rubbitmq,rockemq,kalka
bubbitmq大量消息积压的时候,性能会急剧下降,rocketmq可以做到毫秒级响应,每秒能处理几十万条数据,kafka面向日志功能比较丰富,性能最高
167:mongDB
文档类型的非关系型数据库,底层格式就是json格式,大于集合,文档,字段这么一个关系且和mysql表现形式虽然不同,但内容基本相同有三个数据库admin,cinfig,local(这个数据库永远不会被复制),常用于网站数据,缓存
168:mongDB的数据类型
null,false/true,数值,日期,正则表达式等
169:反向代理服务器
作用就是反向代理和负载均衡,减轻服务压力
170:正向代理就是直接获取服务内容
171:jwt
对应用户的身份进行校验的标记,如果token泄露就是用https加密
172:spring security
和shrio类似是对用户身份的认证和授权
173:常用的线程安全的类
synchronized,reentryloke,readwriterloke等
174:常用的线程安全的集合
vector,collections.synchronizedlist,hashtable,stack
175:srpingioc的创建过程
简化来说就两步,创建bean,然后di依赖注入
176:aop的实现原理和应用场景
aop就是面向对象的一个扩展,多个对象的公共关系和逻辑,实现aop就是jdk代理和cglib代理,当代理类没有实现invcationhandler接口,默认使用cglib代理,当类被final修饰,不能使用cglib代理
应用场景 异常,bebug调试,事务,缓存,日志等都可以
177:beanfactory和factorybean的区别
beanfactory是spring的最顶级接口,是一个工厂,而factorybean是一个 bean 所有的bean都由bean工厂来管理
178:string底层的实现原理
jdk8底层维护的是char数组,9维护的是byte数组
字符串引用变量会存储会栈中,栈保持先进后出的原则,然后内容存储在队中,建立索引,栈每次根据索引到堆中取值

