【点击领取】阿里云代金券 | 阿里云优惠券 |阿里云优惠码|云服务器|阿里云|阿里云代金券 – 限时领取1888元阿里云代金券
javascript
【3折购买ECS服务器入口】promotion.aliyun.com/ntms/act/qw…
css
【9块9云服务 学生计划】https://promotion.aliyun.com/ntms/act/campus2018.html?userCode=g6nivc1vhtml
Java虚拟机是一个能够执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成容许应用程序能够运行在任意的平台,而不须要程序员为每个平台单独重写或者是从新编译。Java虚拟机让这个变为可能,由于它知道底层硬件平台的指令长度和其余特性。 java
Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet须要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其余的工具(好比:JavaDoc,Java调试器),可让开发者开发、编译、执行Java应用程序。 linux
自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间作的一个转化。好比:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。c++
答: &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 程序员
答: Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各类集合的搜索、排序、线程安全化等操做
数据库
ready() 函数用于在文档进入ready状态时执行代码。当DOM 彻底加载(例如HTML被彻底解析DOM树构建完成时),jQuery容许你执行代码。使用$(document).ready()的最大好处在于它适用于全部浏览器,jQuery帮你解决了跨浏览器的难题。 编程
JavaScript window.onload 事件和 jQuery ready 函数之间的主要区别是,前者除了要等待 DOM 被建立还要等到包括大型图片、音频、视频在内的全部外部资源都彻底加载。若是加载图片和媒体内容花费了大量时间,用户就会感觉到定义在 window.onload 事件上的代码在执行时有明显的延迟。 windows
另外一方面,jQuery ready() 函数只需对 DOM 树的等待,而无需对图像或外部资源加载的等待,从而执行起来更快。使用 jQuery $(document).ready() 的另外一个优点是你能够在网页里屡次使用它,浏览器会按它们在 HTML 页面里出现的顺序执行它们,相反对于 onload 技术而言,只能在单一函数里使用。鉴于这个好处,用 jQuery ready() 函数比用 JavaScript window.onload 事件要更好些。
未声明的变量是程序中不存在且未声明的变量。若是程序尝试读取未声明变量的值,则会遇到运行时错误。未定义的变量是在程序中声明但还没有给出任何值的变量。若是程序尝试读取未定义变量的值,则返回未定义的值。
$() 函数用于将任何对象包裹成 jQuery 对象,接着你就被容许调用定义在 jQuery 对象上的多个不一样方法。你甚至能够将一个选择器字符串传入 $() 函数,它会返回一个包含全部匹配的 DOM 元素数组的 jQuery 对象。
从我本身的角度来说,能够有3种类型的选择器,以下: 一、基本选择器:直接根据id、css类名、元素名返回匹配的dom元素。 二、层次选择器:也叫作路径选择器,能够根据路径层次来选择相应的DOM元素。 三、过滤选择器:在前面的基础上过滤相关条件,获得匹配的dom元素。
十一、什么是值传递和引用传递?
对象被值传递,意味着传递了对象的一个副本。所以,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并非实际的对象,而是对象的引用。所以,外部对引用对象所作的改变会反映到全部的对象上。
与cgi的区别在于servlet处于服务器进程中,它经过多线程方式运行其service方法,一个实例能够服务于多个请求,而且其实例通常不会销毁,而CGI对每一个请求都产生新的进程,服务完成后就销毁,因此效率上低于servlet。
inal 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示老是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,能够覆盖此方法提供垃圾收集时的其余资源回收,例如关闭文件等。
当进行双等号比较时候: 先检查两个操做数数据类型,若是相同, 则进行===比较, 若是不一样, 则愿意为你进行一次类型转换, 转换成相同类型后再进行比较, 而===比较时, 若是类型不一样,直接就是false.
解释性脚本语言,代码不进行预编译 主要用来向HTML页面添加交互行为 能够直接嵌入HTML页面,但单独写成js文件有利于结构和行为的分离 跨平台性,在绝大多数浏览器支持下,能够在多种平台下运行,linux,windows
null是表示一个空的对象,转为数值为0,undefind表示一个空的原始值,转为数值为NAN undefind指本该有一个值,但却并有定义,null表示没有对象,不该该有值
内存泄露指任何对象在再也不拥有或再也不须要它以后依然存在 setTimeout第一个参数是字符串而不是函数的时候就会形成内存泄露 闭包 控制台日志 循环(两个对象彼此引用且彼此保留)
标记清除:这是js最经常使用的垃圾回收方法,当一个变量进入执行环境时,例如函数中声明一个变量,将其标记为进入环境,当变量离开环境时,(函数执行结束),标记为离开环境 引用计数: 跟踪记录每一个值被引用的次数,声明一个变量,并将引用 类型赋值给这个变量,则这个值的引用次数+1,当变量的值变成了另外一个,则这个值的引用次数-1,当值的引用次数为0的时候,就回收
Iterator可用来遍历Set和List集合,可是ListIterator只能用来遍历List。 Iterator对集合只能是前向遍历,ListIterator既能够前向也能够后向。 ListIterator实现了Iterator接口,并包含其余的功能,好比:增长元素,替换元素,获取前一个和后一个元素的索引,等等。
HashMap和Hashtable都实现了Map接口,所以不少特性很是类似。可是,他们有如下不一样点: HashMap容许键和值是null,而Hashtable不容许键或者值是null。
Hashtable是同步的,而HashMap不是。所以,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。
HashMap提供了可供应用迭代的键的集合,所以,HashMap是快速失败的。另外一方面,Hashtable提供了对键的列举(Enumeration)。 通常认为Hashtable是一个遗留的类。
Enumeration速度是Iterator的2倍,同时占用更少的内存。可是,Iterator远远比Enumeration安全,由于其余线程不可以修改正在被iterator遍历的集合里面的对象。同时,Iterator容许调用者删除底层集合里面的元素,这对Enumeration来讲是不可能的。
HashSet是由一个hash表来实现的,所以,它的元素是无序的。add(),remove(),contains()方法的时间复杂度是O(1)。
另外一方面,TreeSet是由一个树形的结构来实现的,它里面的元素是有序的。所以,add(),remove(),contains()方法的时间复杂度是O(logn)。
垃圾回收不会发生在永久代,若是永久代满了或者是超过了临界值,会触发彻底垃圾回收(Full GC)。若是你仔细查看垃圾收集器的输出信息,就会发现永久代也是被回收的。这就是为何正确的永久代大小对避免Full GC是很是重要的缘由。请参考下Java8:从永久代到元数据区
Java中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常。不受检查的异常不须要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛出这样的异常,而且不受检查的异常能够传播到方法或者是构造函数的外面。相反,受检查的异常必需要用throws语句在方法或者是构造函数上声明。这里有Java异常处理的一些小建议。
throw关键字用来在程序中明确的抛出异常,相反,throws语句用来代表方法不能处理的异常。每个方法都必需要指定哪些异常不能处理,因此方法的调用者才可以确保处理可能发生的异常,多个异常是用逗号分隔的。
不管是否抛出异常,finally代码块老是会被执行。就算是没有catch语句同时又抛出异常的状况下,finally代码块仍然会被执行。最后要说的是,finally代码块主要用来释放资源,好比:I/O缓冲区,数据库链接。
Java语言中一个显着的特色就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候再也不须要考虑内存管理。因为有个垃圾回收机制, Java中的对象再也不有"做用域"的概念,只有对象的引用才有"做用域"。垃圾回收能够有效的防止内存泄露,有效的使用可使用的内存。垃圾回收器一般是做为一个单独的低级别的线程运行,不可预知的状况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或全部对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
wait():使一个线程处于等待状态,而且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM肯定唤醒哪一个线程,并且不是按优先级。
Allnotity():唤醒全部处入等待状态的线程,注意并非给全部唤醒线程一个对象的锁,而是让它们竞争。
PreparedStatements是预编译的,所以,性能会更好。同时,不一样的查询参数值,PreparedStatement能够重用。
CallableStatement用来执行存储过程。存储过程是由数据库存储和提供的。存储过程能够接受输入参数,也能够有返回结果。很是鼓励使用存储过程,由于它提供了安全性和模块化。
像打开关闭数据库链接这种和数据库的交互多是很费时的,尤为是当客户端数量增长的时候,会消耗大量的资源,成本是很是高的。能够在应用服务器启动的时候创建不少个数据库链接并维护在一个池中。链接请求由池中的链接提供。在链接使用完毕之后,把链接归还到池中,以用于知足未来更多的请求。
Servlet生命周期能够分红四个阶段:加载和实例化、初始化、服务、销毁。
当客户第一次请求时,首先判断是否存在Servlet对象,若不存在,则由Web容器建立对象,然后调用init()方法对其初始化,此初始化方法在整个Servlet生命周期中只调用一次。
完成Servlet对象的建立和实例化以后,Web容器会调用Servlet对象的service()方法来处理请求。
当Web容器关闭或者Servlet对象要从容器中被删除时,会自动调用destory()方法。
doGet:GET方法会把名值对追加在请求的URL后面。由于URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目。而且请求中的参数值是可见的,所以,敏感信息不能用这种方式传递。
doPOST:POST方法经过把请求参数值放在请求体中来克服GET方法的限制,所以,能够发送的参数的数目是没有限制的。最后,经过POST请求传递的敏感信息对外部客户端是不可见的。
HTTP响应由三个部分组成:
状态码(Status Code):描述了响应的状态。能够用来检查是否成功的完成了请求。请求失败的状况下,状态码可用来找出失败的缘由。若是Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK。
HTTP头部(HTTP Header):它们包含了更多关于响应的信息。好比:头部能够指定认为响应过时的过时日期,或者是指定用来给用户安全的传输实体内容的编码格式。如何在Serlet中检索HTTP的头部看这里。
主体(Body):它包含了响应的内容。它能够包含HTML代码,图片,等等。主体是由传输在HTTP消息中紧跟在头部后面的数据字节组成的。
cookie是Web服务器发送给浏览器的一块信息。浏览器会在本地文件中给每个Web服务器存储cookie。之后浏览器在给特定的Web服务器发请求的时候,同时会发送全部为该服务器存储的cookie。下面列出了session和cookie的区别:
不管客户端浏览器作怎么样的设置,session都应该能正常工做。客户端能够选择禁用cookie,可是,session仍然是可以工做的,由于客户端没法禁用服务端的session。
在存储的数据量方面session和cookies也是不同的。session可以存储任意的Java对象,cookie只能存储String类型的对象。
HTTP隧道是一种利用HTTP或者是HTTPS把多种网络协议封装起来进行通讯的技术。所以,HTTP协议扮演了一个打通用于通讯的网络协议的管道的包装器的角色。把其余协议的请求掩盖成HTTP的请求就是HTTP隧道。
sendRedirect()方法会建立一个新的请求,而forward()方法只是把请求转发到一个新的目标上。重定向(redirect)之后,以前请求做用域范围之内的对象就失效了,由于会产生一个新的请求,而转发(forwarding)之后,以前请求做用域范围之内的对象仍是能访问的。通常认为sendRedirect()比forward()要慢。
下面列出了使用JSP的优势:
JSP页面是被动态编译成Servlet的,所以,开发者能够很容易的更新展示代码。 JSP页面能够被预编译。 JSP页面能够很容易的和静态模板结合,包括:HTML或者XML,也能够很容易的和产生动态内容的代码结合起来。 开发者能够提供让页面设计者以类XML格式来访问的自定义的JSP标签库。 开发者能够在组件层作逻辑上的改变,而不须要编辑单独使用了应用层逻辑的页面。
【点击领取】阿里云代金券 | 阿里云优惠券 |阿里云优惠码|云服务器|阿里云|阿里云代金券 – 限时领取1888元阿里云代金券