175:maven命令:
mvn -v //查看maven版本
mvn help:system //打印Java系统属性和环境变量
ping repol.maven.org //检查能否访问公共的maven中央仓库
mvn clean compile //编译项目主代码
mvn clean test //编译项目测试代码
mvn clean package //打包
mvn clean install //将项目输出的jar安装到了Maven本地仓库。
mvn clean deploy //将项目构建输出的构件部署到配置对应的远程仓库
mvn archetype:generate //使用Archetype生成项目骨架
mvn dependency:list //查看当前项目的已解析依赖
mvn dependency:tree //查看当前项目的依赖树
mvn dependency:analyze //分析当前项目的依赖
执行test之前会先执行compile,执行package之前是会先执行test,执行install之前是会先执行compile。
默认打包的jar是不能直接执行的,因为带有main方法的类信息不会添加到manifest中,为了生成可执行的jar文件,需要借助maven-shade-plugin。
175.项目构建方法
Make:Makefile
Ant:build.xml
Maven:pom.xml
176.Windows系统的默认编码是GBK
177.pom.xml中如果不声明依赖范围,那么默认值就是compile,表示该依赖对主代码和测试代码都有效。
groupId:对应项目名称,例如:com.test.project
artifactId:对应模块名称,例如: project-model
178.maven的三种classpath:编译classpath、测试classpath、运行classpath。
Maven的几种依赖范围:
compile:编译依赖范围,对三种classpath都有效。
test:测试依赖范围,只对测试classpath有效。
provided:已提供依赖范围,对于编译和测试classpath有效,典型的例子是servlet-api,运行时由于容器已经提供,所以不需要maven重复引入。
runtime:运行时依赖范围,对于测试和运行classpath有效,典型的例子是JDBC驱动实现。
system:系统依赖范围,对于编译和测试classpath有效,需要使用<systemPath>指定本地jar包路径,会造成构建的不可移植。
import:导入依赖范围,该依赖范围不会对三种classpath产生实际的影响。
179.maven依赖调解:
第一原则:路径最近者优先
第二原则:第一声明者优先
180.maven的排除依赖,exclusion用来排除传递性依赖。
归类依赖:
<properties>
<spring.version>2.5.6</spring.version>
</properties>
181.maven私服管理软件Nexus
182.Maven远程仓库地址
中央仓库:http://repo1.maven.org/maven2
中央仓库的中国镜像:http://maven.net.cn/content/groups/public/
JBoss Maven仓库:http://repository.jboss.com/maven2/
可以在pom.xml文件中使用<repositories>元素声明一个或者多个远程仓库。
使用<distributionManagement>元素将构件部署到远程仓库
183.maven仓库访问的认证信息配置在settings.xml文件中。
184.当maven项目的依赖中包含一个快照版本时,maven在构建项目的时候会自动从仓库中检查依赖模块的最新版本。
185.maven仓库镜像和私服的配置需要在settings.xml文件中进行。
使用镜像仓库时会完全屏蔽被镜像仓库。
186.maven仓库搜索服务:
http://repository.sonatype.org/
http://www.jarvana.com/jarvana/
http://www.mvnbrowser.com
187.pom.xml文件中的
<phase>指定生命周期
<goals>指定要执行的插件目标
188.maven在线插件信息
http://maven.apache.org/plugins/index.html
http://repo1.maven.org/maven2/org/apache/maven/plugins/
maven会区别对待依赖的远程仓库与插件的远程仓库。
189.$(document).ready(function(){
//
})
的简写形式为:
$(function(){
//
})
190.AVL树和红黑树是具有自平衡功能的二叉查找树
多叉树的典型例子就是B树和各种B树的变形树,B树是一种自平衡多叉查找树,常用于文件管理系统和数据库系统。
191.大多数情况下,由于选择策略的短视,贪婪法会错过真正的最优解,得不到问题的真正解。
192.如果你需要在XML中引用一个id,就使用@id/id_name这种语法,如果你需要在XML中定义一个id,就使用@+id/id_name这种语法
193.Android中,dp是密度无关像素的意思,sp是可伸缩像素的意思。如果必须要指定一个固定值,则使用dp来作为单位,指定文字大小的时候使用sp作为单位。
194.ORM(对象/关系数据库映射)的基本映射方式:
(1)数据表映射类
(2)数据表的行映射对象(即实例)
(3)数据表的列(字段)映射对象的属性
PO:persistent object,持久化对象
为了是POJO具备持久化操作的能力, Hibernate采用XML映射文件,即
PO=POJO+XML
195.JNDI是 Java 命名与目录接口(Java Naming and Directory Interface)
196.Hibernate的Session持有一个必选的一级缓存,还有一个可配置的二级缓存。
197.单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
198.jfinal中handler,controller和interceptor的作用和区别
Handler 会接管所有请求,包括静态请求,如 localhost/css/style.css 或者 locahost/img/logo.jpg,并且可以改变请求所指向的资源参数如 String target参数,所以 Handler 具有可以处理更多的事情,例如改变 target 参数做url 伪静态或者 url 重写。 而拦截器只能拦截对 action 的请求,对静态资源的请求是完全无法感知的,并且拦截器无法改变 starget 参数,当拦截发生时,很多事情已经确定了,例如拦截的 controller 和 action 都确定了 Controller是请求希望到达的最终目标,通常只做三件事:接收参数、调用业务、使用业务结果渲染页面。Handler、Interceptor 辅助 Controller 解决切面问题,例如权限验证、事务处理等等。
199.树的常用遍历方法:
先序遍历:列出目录中的文件名
后序遍历:计算目录所占用的磁盘空间大小
中序遍历:表达式数(左,节点,中)
200.二叉查找树:对于树中的每个节点X,它的左子树中所有项的值小于X中的值,而它的右子树中所有项的值大于X中的值。
201.javascript的变量默认是全局变量,如果定义变量时不使用关键字var,即便是在一个函数内定义该变量,它也是全局变量。javascript没有块级作用域
202.javascript中的switch语句和其它编程语言的一个主要区别是用来判断的表达式可以是任意类型。
203.javascript中函数的参数传递方式都是按值传递。
204.浏览器提交遵循HTTP协议的文本,文本由Tomcat接收并解析,封装成HttpServletRequest类型的request对象,同时把输出流封装成HttpServletResponse类型的response对象。
205.HTTP中的referer是指从哪个网页中单击链接到达本页,如果直接输入网址打开的本页面,则为null。
206.Servlet中提供通过getInitParameter(String param)、ServletConfig.getServletConfig()、getInitParameterNames()来获取配置在web.xml中的初始化参数值
207.通过HttpServletResponse.getWriter()获得一个PrintWriter对象,该对象是OutputStream的子类,PrintWriter只能写字符型的数据,如果需要写二进制数据,可以使用HttpServletResponse.getOutputStream()。
208.长下文参数ContextParam对于所有的Servlet都能够读取。
209.无论是GET方式还是POST方式,都可以使用request.getParameter()获取参数值。
210.servlet会在服务器启动或第一次请求该servlet的时候开始生命周期,在服务器结束的时候结束生命周期,无论请求多少次servlet,最多只有一个servlet实例,多个客户端并发请求servlet时,服务器会启动多个线程分别执行该servlet的service()方法。所以servlet不是线程安全的。
服务器加载servlet->servlet构造器->@PostConstruct->init()->Service()->destory()->@PreDestory->服务器卸载servlet
211.使用forward形式跳转servlet时,是服务器端跳转,客户端浏览器的地址不会改变。
当使用redirect跳转servlet时,跳转是在客户端实现的,客户端浏览器实际上请求了2次服务器,第1次获取了重定向状态码与重定向的网址,第2次访问真实地址。
212.如果Tomcat检测到JSP源代码发生了改动,会在下次客户端请求JSP时重新编译JSP,而不需要重启Tomcat.
213.JSP有自己的初始化方法和销毁方法_jspInit()与_jspDestroy().
214.JSP中可以使用<%! %>声明方法与属性(全局变量).
215.Java Bean就是普通的Java类,也被称为POJO类,这种类简单到只有私有的属性与对应的getter方法与setter方法。
216.page、request、session、application的范围是依次增大的,设置为page时,只有本页有效,设置为request时,一个request可以通过forward,include等贯穿于若干JSP页面。
217.JSP有9个内置隐藏对象:out request response config session application page pageContext exception
218.(function(){})表示一个匿名函数。function(arg){...}定义了一个参数为arg的匿名函数,然后使用(function(arg){...})(param)来调用这个匿名函数。其中param是传入这个匿名函数的参数。
需要注意与$(function(){})的区别:$(function(){}) 是 $(document).ready(function(){}) 的简写,用来在DOM加载完成之后执行一系列预先定义好的函数。
219.查看某个网站颁发的cookie很简单,在浏览器地址栏输入:javascript:alert(document.cookie)
220.Session需要使用cookie作为识别标志,Session不能依据HTTP连接来判断是否为同一个客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的cookie,Session依据该cookie来识别是否为同一个用户。
221.分库提高数据库写入能力,分表提高数据库查询能力。
业务拆分+分库分表
222.
数字摘要算法:MD5、SHA-1、十六进制编码、Base64编码。
对称加密算法:DES、3DES、AES
非对称加密算法:RSA
223.对称加密与非对称加密结合使用:对称加密快用来加密较长的文件,非对称加密慢但安全性更高,用来给文件密钥加密。
224.RSA算法原理:将两个大素数相乘十分容易,但反过来想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
225.签名认证是对非对称加密技术和数字摘要技术的综合运用,指的是将通信内容的摘要信息使用发送者的私钥进行加密,然后将密文与原文一起传输给信息的接收者,接收者通过发送者的公钥解密被加密的摘要的信息,然后使用与发动者相同的摘要算法对接收的内容采用相同的方式产生摘要串,与解密的摘要串进行对比,如果相同,则说明接收到的内容是完整的,在传输过程中没有瘦到第三方的篡改,否则说明通信内容已被第三方修改。
常见的数字签名算法:MD5withRSA,SHA1withRSA
226.数字证书通常包含如下内容:
对象的名称(人、服务器、组织)
证书的过期时间
证书的颁发机构
证书颁发机构对证书信息的数字签名
签名算法
对象的公钥。
227.X.509
X.509提供了一种标准的方式,将证书信息规范地存储到一系列可解析的字段当中,X.509 V3是X.509标准目前使用最为广泛的版本。
228.网络用户的数字证书则需要数字证书认证机构(CA)来进行颁发,只有经过CA颁发的数字证书在网络中才具备可认证性。
229.用户在使用数字证书之前必须先安装颁发该证书的根证书,大多数操作系统都会预先安装一些较为权威的证书认证机构的根证书,如VeriSign、GeoTrust等。
230.数字证书管理工具:keytool、OpenSSL
keytool是Java的数字证书管理工具
CSR:数字证书签发申请
231.免费证书认证机构:http://www.cacert.org/
232.OpenSSL包含三个组成部分:SSL协议库、密码算法库、以及各种与之相关的应用程序。