名词解释
Posted acuii
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了名词解释相关的知识,希望对你有一定的参考价值。
哨兵
队列
懒加载
JNDI查找机制
Clustering 集群
OLTP
On-Line Transaction Processing,联合事务处理过程,也称为面向交易的处理过程,其基本特征是前台接收的用户数据立即传送到计算机中心进行处理,并且在很短的时间内给出的处理结果,是对用户操作快速响应的方式之一。
MSM
Memcached-Session-Manager,用内存管理session
LAMP
LNMP
Linux + nginx+ MySQL + PHP
cd
Change Directory
pwd
Print Working Directory
C/S
Client/Server 客户/服务器模式
B/S
Brower/Server 浏览器/服务模式
dbcp
DBCP(DataBase Connection Pool)数据库连接池,是java数据库连接池的一种,由Apache开发,通过数据库连接池,可以让程序自动管理数据库连接的释放和断开。
缺省
系统默认状态
SQL注入
所谓SQL注入,就是通过一些含有特殊字符的sql语句发送到服务器欺骗服务器并进行攻击。(特殊字符:or, 单引号,--,空格)
AJAX (Asynchronous javascript and XML)
异步的 JavaScript 和 XML。是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
跨域
浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),所以跨域就出现了。
同域
简单的解释就是相同域名,端口相同,协议相同。同源策略:请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同。
jsonp
jsonp 全称是JSON with Padding,是为了解决跨域请求资源而产生的解决方案,是一种依靠开发人员创造出的一种非官方跨域数据交互协议。
一个是描述信息的格式,一个是信息传递双方约定的方法。
动态页面
动态页面是通过执行asp,php,jsp,.net等程序生成客户端网页代码的网页。
页面静态化
页面静态化,其实就是将动态生成的jsp等页面,变成静态的html页面,让用户直接访问。
好处
1、首先就是访问速度,不需要去访问数据库,或者缓存来获取哪些数据,浏览器直接加载渲染html页即可。所以可以大大的提高访问效率;
2、从网站优化来分析,搜索引擎更喜欢静态的网页,静态网页与动态网页相比,搜索引擎更喜欢静的,更便于抓取,搜索引擎SEO排名更容易提高。
3、从安全角度讲,静态网页不宜遭到黑客攻击,如果黑客不知道你网站的后台、网站采用程序、数据库的地址,静态网页, 更不容易受到黑客的攻击。
4、从网站稳定性来讲,如果程序、数据库出了问题,会直接影响网站的访问,而静态网页就避免了如此情况,不会因为程序等,而损失网站数据,影响正常打开,损失用户体验,影响网站信任度。
SQL语句大小写
一个说法,SQL语句,在执行的时候,是先转化为大写字母然后执行,如果小写转化大写,如果大写,那就可以省一个转化的时间。
另一个说法,SQL语句所有字符都会转化为符号系统,最后构建成AST。SQL执行效率取决于SQL执行器及执行优化器,如何取数据、计算会快。在词法分析阶段是用正则表达式进行提取的,然后变成AST中的符号。所以并不会像回答中所说的做大小写转换。
Session
在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
Tomcat处理http请求的过程
1、用户在浏览器中输入网址localhost:8080/test/index.jsp,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得;
2、Connector把该请求交给它所在的Service的Engine(Container)来处理,并等待Engine的回应;
3、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host;
4、Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理);
5、path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL Pattern为*.jsp的Servlet,对应于JspServlet类;
6、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost(),执行业务逻辑、数据存储等;
7、Context把执行完之后的HttpServletResponse对象返回给Host;
8、Host把HttpServletResponse对象返回给Engine;
9、Engine把HttpServletResponse对象返回Connector;
10、Connector把HttpServletResponse对象返回给客户Browser。
JWT
JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。一个token分3部分,头部(header)、载荷(payload)和签证(signature) 。
前后端分离
前后端分离是一种架构模式,说通俗点就是后端项目里面看不到页面(JSP|HTML),后端给前端提供接口,前端调用后端提供的REST风格接口就行,前端专注写页面(html|jsp)和渲染(JS|CSS|各种前端框架);后端专注写代码就行。前后端分离的核心:后台提供数据,前端负责显示
REST
每个资源都应该有一个唯一的标识;使用标准的方法来更改资源的状态;Request和Response的自描述;资源多重表述;无状态的服务
REST和RPC之间的区别
1、REST强调资源有唯一的URI;而RPC更加强大过程(动词),由统一的接口来调用它们。
2、REST回归HTTP最初的设计;RPC仅仅只是把HTTP作为传输协议来使用。
3、REST是由超文本驱动的;RPC是由方法驱动的。
4、REST强调HTTP通信的语义可见性,通过消息头和标准的HTTP方法来体现;RPC把语义封装在HTTP消息体中。
事务
在事务中的多个操作,要么都成功,要么都失败。
进程(Processor)
启动一个LOL.exe就叫一个进程。接着又启动一个DOTA.exe,这叫两个进程。
线程(Thread)
线程是在进程内部同时做的事情,比如在LOL里,有很多事情要同时做,比如"盖伦” 击杀“提莫”,同时“赏金猎人”又在击杀“盲僧”,这就是由多线程来实现的。
什么是单例?
单例对象的类必须保证只有一个实例存在——这是维基百科上对单例的定义,这也可以作为对意图实现单例模式的代码进行检验的标准。
懒汉式单例
是指指全局的单例实例在第一次被使用时构建。
饿汉式单例
是指全局的单例实例在类装载时构建的实现方式。由于类装载的过程是由类加载器(ClassLoader)来执行的,这个过程也是由JVM来保证同步的,所以这种方式先天就有一个优势——能够免疫许多由多线程引起的问题。
什么时候是类装载时?
不严格的说,大致有这么几个条件会触发一个类被加载:
1、new一个对象时
2、使用反射创建它的实例时
3、子类被加载时,如果父类还没被加载,就先加载父类
4、jvm启动时执行的主类会首先被加载
什么是原子操作(atomic)?
简单来说,原子操作(atomic)就是不可分割的操作,在计算机中,就是指不会因为线程调度被打断的操作。
比如,简单的赋值是一个原子操作:
m = 6; // 这是个原子操作
假如m原先的值为0,那么对于这个操作,要么执行成功m变成了6,要么是没执行m还是0,而不会出现诸如m=3这种中间态——即使是在并发的线程中。
而,声明并赋值就不是一个原子操作:
int n = 6; // 这不是一个原子操作
对于这个语句,至少有两个操作:①声明一个变量n ②给n赋值为6。
这样就会有一个中间状态:变量n已经被声明了但是还没有被赋值的状态。
这样,在多线程中,由于线程执行顺序的不确定性,如果两个线程都使用m,就可能会导致不稳定的结果出现。
什么是指令重排?
简单来说,就是计算机为了提高执行效率,会做的一些优化,在不影响最终结果的情况下,可能会对一些语句的执行顺序进行调整。
比如,这一段代码:
int a ; // 语句1
a = 8 ; // 语句2
int b = 9 ; // 语句3
int c = a + b ; // 语句4
正常来说,对于顺序结构,执行的顺序是自上到下,也即1234。
但是,由于指令重排的原因,因为不影响最终的结果,所以,实际执行的顺序可能会变成3124或者1324。
由于语句3和4没有原子性的问题,语句3和语句4也可能会拆分成原子操作,再重排。
也就是说,对于非原子性的操作,在不影响最终结果的情况下,其拆分成的原子操作可能会被重新排列执行顺序。
冒泡排序
冒泡排序是一种简单的排序算法。将序列中所有元素两两比较,将最大的放在最后面。将剩余序列中所有元素两两比较,将最大的放在最后面。重复第二步,直到只剩下一个数。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
直接插入排序
把新的数据插入到已经排好的数据列中。将第一个数和第二个数排序,然后构成一个有序序列将第三个数插入进去,构成一个新的有序序列。对第四个数、第五个数……直到最后一个数,重复第二步。
直接插入排序(Straight Insertion Sorting)的基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。
希尔排序(递减增量排序算法)
希尔排序是基于插入排序而提出改进方法的排序算法。将数的个数设为n,取奇数k=n/2,将下标差值为k的数分为一组,构成有序序列。再取k=k/2 ,将下标差值为k的书分为一组,构成有序序列。重复第二步,直到k=1执行简单插入排序。
简单选择排序
遍历整个序列,将最小的数放在最前面。遍历剩下的序列,将最小的数放在最前面。 重复第二步,直到只剩下一个数
堆排序
将序列构建成大顶堆。将根节点与最后一个节点交换,然后断开最后一个节点。重复第一、二步,直到所有节点断开。
快速排序
选择第一个数为p,小于p的数放在左边,大于p的数放在右边。递归的将p左边和右边的数都按照第一步进行,直到不能递归。
归并排序
选择相邻两个数组成一个有序序列。选择相邻的两个有序序列组成一个有序序列。重复第二步,直到全部组成一个有序序列。
基数排序
将所有的数的个位数取出,按照个位数进行排序,构成一个序列。将新构成的所有的数的十位数取出,按照十位数进行排序,构成一个序列。
以上是关于名词解释的主要内容,如果未能解决你的问题,请参考以下文章