个人笔记

1:Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。
这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。
ajax的原生对象就是XmlHttpRequest对象

2:#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,
那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id"
 #方式能够很大程度防止sql注入。一般能用#的就别用$
 
3:j2ee的13种规范:
(1):JDBC (Java Database Connectivity):Java数据库连接
(2):JNDI (Java Naming and DirectoryInterfaces):Java命名和目录接口
(3):EJB (Enterprise Java Beans):企业级Java Beans
(4):RMI (Remote Method Invocation):远程方法调用
(5):JavaIDL/CORBA (Java Interface Definiyion Language/Common Object Request Broker Architecture ):
Java接口定义语言/公用对象请求代理程序体系结构
(6):JSP (Java Server Pages) JSP页面由HTML代码和嵌入其中的Java代码所组成
(7):Servlet  Servlet是一种小型的Java程序,它扩展了Web服务器的功能
(8):XML (Extensible Markup Language)可扩展标记语言 是一种与平台无关的通用数据交换格式。而java也是独立于平台的语言,
他们两个的结合,可以实现一个完美的具有平台独立性的解决方案
(9):JMS (Java MessageService):Java消息服务
(10):JTA (Java Transaction API):Java事务API
(11):JTS:Java Transaction Service,Java事务服务
(12):JavaMail JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。不仅支持SMTP服务器,也支持IMAP服务器
(13):JAF(JavaBeans Activation Framework):JavaBeans活动床架 JAF是一个专用的数据处理框架,它用于封装数据,
并为应用程序访问和操作数据的接口。JFA主要作用在于让Java应用层序知道如何对一个数据源进行查看、编辑和打印等操作

4:System.getProperties().getProperty("user.dir");获取项目路径
this.getClass().getResource("/").getPath();获取容器(tomcat)路径
request.getSession().getServletContext().getRealPath("/") 获取项目webapps的目录

fileName.substring(fileName.indexOf(".") + 1)  截取fileName点号后面的东西

5: parameterMap resultMap。
查询时,我们需要返回类型,即用resultMap;
增改删时,我们需要参数类型,即用parameterMap;

6:window.onload是在页面所有的元素都加载完成后才触发
$(function(){})是在页面的dom结构加载完毕后就触发 dom里的内容不一定都已经加载完成
比如说一个页面有好多图片 而加载这些图片需要一定的时间,window.onload必须得等到全部的图片都加载完成后才能触发
而$(function(){})只要在dom加载完毕之后就会执行 图片不一定已经加载完成

7:dom (1)核心DOM:遍历DOM树、添加新节点、删除节点、修改节点
(2)HTML DOM:以一种简便的方法访问DOM树
(3)XML DOM:准用于操作XML文档


8:charindex和patindex函数常常用来在一段字符中搜索字符或者字符串。如果被搜索的字符中包含有要搜索的字符,
那么这两个函数返回一个非零的整数,这个整数是要搜索的字符在被搜索的字符中的开始位数,
PATINDEX函数支持使用通配符来进行搜索,然而CHARINDEX不支持通佩符
CHARINDEX(’SQL’, ’Microsoft SQL Server’)
这个函数命令将返回在“Microsoft SQL Server”中“SQL”的起始位置,在这个例子中,
CHARINDEX函数将返回“S”在“Microsoft SQL Server”中的位置11。


9:sql中的left和right函数
返回某个被请求部分的左右侧部分
left:取一个字符串的前若干位
select left('abcdefg', 3)
输出: abc


10:“==”比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】 
equal用于比较两个对象的值是否相同【不是比地址】 


11:mkdirs()可以建立多级文件夹, 
mkdir()只会建立一级的文件夹  mkdir创建文件夹,上一级文件夹必须存在

12:x++先赋值在自增   int x= 0,y=0,a;  x=x++; a=++y;  结果是x=0,y=1,a=1


13. jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)
jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.
Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到.
Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,
这个类的Service方法用于生成对客户端的响应。

14:java 为什么用xml 配置文件 因为XML语言具有结构简明清晰、编写高度自由、简单易用等诸多优点。非常适合各种配置信息的描述和设置,所以广泛应用在各种框架的配置文件描述中。
JSON和 XML非常的相似。它们都试图通过建立一种简单,人类可读的格式存储数据

15:代码块分为普通代码块:定义在方法里面的
构造方法代码块:直接定义在类里面的
静态代码块:前面加个static
同步代码块;
使用new对象时候static方法块先执行,先父类在子类;然后是构造方法代码块,再就是构造方法块这里执行方式是先父类的方法块和构造方法块 然后是子类的,具体如下
父类static
子类static
父类方法快
父类构造方法
子类方法快
子类构造方法


static 1:修饰变量,方法  
2 静态代码块  直接在一次,可用于懒汉 单例模式
3 静态内部类  内部类可以直接访问外部类中的成员(包括私有成员),静态内部类智能访问静态成员和方法
4 静态导包  用import static 。。 可导入类的静态方法 
 
16:abstract和static不能共用  有abstract这必然是个抽象类,而抽象类是不能实例化的,它必须通过被继承来实现其中的抽象方法  static能直接调用


17:测试webservice借口:文件-新建-其他 选择webservice client 


18:浏览器缓存  按ctrl+f5,浏览器会直接向目标url发送请求,不会使用缓存数据


19:二维码的json要用单引号,双引号会被转为反斜杠


20:容器对于web.xml的加载过程是context-param >> listener  >> fileter  >> servlet


21 spring-mvc.xml  属于org.springframework.web.servlet.DispatcherServlet   web.xml加载顺序的servlet
配置里面的注释也很详细,在此就不说了,主要是自动扫描控制器,视图模式,注解的启动这三个。


22 spring-mybatis.xml配置文件   web.xml加载顺序的context-param
这个文件就是用来完成spring和mybatis的整合的。这里面也没多少行配置,主要的就是自动扫描,自动注入,配置数据库。


23 <mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。
<mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。


24 Session和Cookie的区别和联系以及Session的实现原理
1、session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。   
    
2、session中保存的是对象,cookie中保存的是字符串。   
    
3、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。
而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。   
    
4、session需要借助cookie才能正常<nobr oncontextmenu="return false;" onmousemove="kwM(3);" 
id="key3" onmouseover="kwE(event,3, this);" style="COLOR: #6600ff; BORDER-BOTTOM: 0px dotted; 
BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" 
onmouseout="kwL(event, this);" target="_blank">工作</nobr>。如果客户端完全禁止cookie,session将失效。


25: build plugins plugin configuration path中设置项目根目录


26:整数默认为int  小数默认为double


27 public > protected > defalut(也就是不写) > private


28 abstract和final不能共存,因为abstract就是要被继承的,而被final修饰的类不可能被继承,所以不可共存


29:class1 = Class.forName("net.xsoftlab.baike.TestReflect");
class2 = new TestReflect().getClass();
class3 = TestReflect.class;

30  StringBuffer是线程安全的  StringBuilder是线程不安全的
HashTable是线程安全的   HashMap是线程不安全的

31:静态内部类:1,就可以将主方法写入到静态内部类中,从而不用为每个Java源文件都设置一个类似的主方法。这对于代码测试是非常有用的
2,无论在成员方法内部还是在其他地方,都只能够引用外部类中的静态的变量,而不能够访问非静态的变量
3,可以独立存在,只能被某一个类使用,不能被其他类依赖就变为静态内部类

32:transient: 你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中


33 instanceof  b instanceof A 如果b是A的一个实例对象  返回true


34:Thread和Runnable实现多线程的区别和联系
联系:1、Thread类实现了Runable接口。2、都需要重写里面Run方法。
区别:1、实现Runnable的类更具有健壮性,避免了单继承的局限。2、Runnable更容易实现资源共享,能多个线程同时处理一个资源。

线程的五个状态: 新建状态 就绪状态 运行状态 阻塞状态 死亡状态

多次start一个线程会出现java.lang.IllegalThreadStateException


35:hashCode()的返回值和equals()的关系如下:
  如果x.equals(y)返回“true”,那么x 和y 的hashCode()必须相等。
  如果x.equals(y)返回“false”,那么x 和y 的hashCode()有可能相等,也有可能不


什么时候会使用hashCode: hashCode是用hashTable的时候为了检索才用的
36:算术操作符
赋值操作符
比较操作符
位操作符

37:缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。
缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。
缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质

缓存的范围决定了缓存的生命周期以及可以被谁访问。缓存的范围分为三类。
1 事务范围 缓存只能被当前事务访问。
2 进程范围:缓存被进程内的所有事务共享。
3 集群范围:在集群环境中,缓存被一个机器或者多个机器的进程共享。

什么样的数据适合存放到第二级缓存中?
   1、很少被修改的数据
   2、不是很重要的数据,允许出现偶尔并发的数据
   3、不会被并发访问的数据
   4、参考数据
  不适合存放到第二级缓存的数据?
   1、经常被修改的数据
   2、财务数据,绝对不允许出现并发
   3、与其他应用共享的数据。


负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;
其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。


38;GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
一般来说,包的命名习惯是域名的反过来,加个公司或者个人的名称吧

39: 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准
System.out.println() 这个输出函数 会自动根据参数匹配不同参数的输出函数 这就是重载的好处
析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。
构造函数可以重载

重写: 1,父类与子类之间的多态性,对父类的函数进行重新定义
2,若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。
如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
3,子类函数的访问修饰权限不能少于父类的
重写是为了增强类的重用性和复用性,扩展性;重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西。


40:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。
Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。

41:toString()方法决定了所建对象的表达形式,
equals()方法在需要进行比较时覆盖。
hashCode()在比较时覆盖。
equals:比较的两个对象不愿是同一对象,你就应该实现equals方法,让对象用你认为相等
的条件来进行比较.
toString: 返回代表该对象的一个字串。一般的,toString方法返回该对象?文字描述?的
字串。返回的结果(即字串)该是简明且易读的信息。建议所有继承类覆盖该方法
hashCode:(杂凑码)会根据对象型别、个数及内容等计算出所对应的内存识别值,相同
对象与内容会计算出相同的hashCode。


42:1.heap是堆,stack是栈。
2.stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。
3.stack空间有限,heap的空间是很大的自由区。在Java中,若只是声明一个对象,则先在栈内存中为其分配地址空间,若再new一下,实例化它,则在堆内存中为其分配地址。
4.举例:数据类型 变量名;这样定义的东西在栈区。
如:Object a =null; 只在栈内存中分配空间new 数据类型();或者malloc(长度); 这样定义的东西就在堆区如:Object b =new Object(); 则在堆内存中分配空间

43 :流  读入 写出
输出流: outputSteam 字节输出流 write字符输出流


44:ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。




45 MongoDB  文档相当于行  集合相当于表


H5:#000  黑色  fff 白色
width和height属性只适用于块元素。
margin:0 auto可以使元素居中。
– block:设置元素为块元素 – inline:设置元素为行内元素 
– inline-block:设置元素为行内块元 – none:隐藏元素(元素将在页面中完全消失)

:active    向被激活的元素添加样式。  
:focus    向拥有键盘输入焦点的元素添加样式。
:hover    当鼠标悬浮在元素上方时,向元素添加样式。
:link    向未被访问的链接添加样式。

<script>
document.write("<script type='text/javascript' src='/js/test.js?"+Math.random();+"'></scri"+"pt>");
</script>

tp:for(;;){}
tp:for(;;) 其实是两部分:tp: 是个 label。 后面那个 for(;;) 就是普通的 for 语句,
只不过括号中三个控制条件部分都是空的,
也就是这个 for 循环是个死循环,满足条件 用break跳出循环
 
Date curDate = new Date();
var preDate = new Date(curDate.getTime() - 24*60*60*1000); //前一天
var nextDate = new Date(curDate.getTime() + 24*60*60*1000); //后一天


tr:nth-child(even)  选中偶数行tr

在头部写<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"/>即可,当然是想兼容ie几就写几 
 
- 文档流 < 浮动 < 定位
 
margin-bottom:40px;       /*ff的属性*/
margin-bottom:140px\9;    /* IE6/7/8的属性 */
color:red\0;              /* IE8支持 */
*margin-bottom:450px;     /*IE6/7的属性*/  +margin-bottom:450px;
_color:#ff0000;         /* 只ie6支持 */


#1 { color: #333; } /* FF环境 */ 
* html #1 { color: #666; } /* IE6环境 */ 
*+html #1 { color: #999; } /* IE7环境 */


function Foo() {
    getName = function () { alert (1); };
    return this;
}
Foo.getName = function () { alert (2);};
Foo.prototype.getName = function () { alert (3);};
var getName = function () { alert (4);};
function getName() { alert (5);}


//答案:
Foo.getName();//2
getName();//4
Foo().getName();//1
getName();//1
new Foo.getName();//2
new Foo().getName();//3
new new Foo().getName();//3

变量声明提升:即所有声明变量或声明函数都会被提升到当前函数的顶部。

1、声明函数 function fn1(){}

2、创建匿名函数表达式  var fn1=function (){} 注意采用这种方法创建的函数为匿名函数,即没有函数name


3、创建具名函数表达式 创建一个变量,内容为一个带有名称的函数var fn1=function xxcanghai(){};
具名函数表达式的函数名只能在创建函数内部使用

4、Function构造函数 可以给 Function 构造函数传一个函数字符串,返回包含这个字符串命令的函数,此种方法创建的是匿名函数。


5、自执行函数
(function(){alert(1);})();
(function fn1(){alert(1);})();

js事件的三个阶段  捕获  目标  冒泡


DOM2级事件模型中规定了事件流的三个阶段:捕获阶段、目标阶段、冒泡阶段,低版本IE(IE8及以下版本)不支持捕获阶段


捕获事件流:Netscape提出的事件流,即事件由页面元素接收,逐级向下,传播到最具体的元素。


冒泡事件流:IE提出的事件流,即事件由最具体的元素接收,逐级向上,传播到页面。

IE和W3C不同绑定事件解绑事件的方法有什么区别,参数分别是什么,以及事件对象e有什么区别
绑定事件:
W3C:target.addEventListener(event, listener, useCapture);
event —— 事件类型;listener —— 事件触发时执行的函数;useCapture —— 指定事件是否在捕获或冒泡阶段执行,为true时事件句柄在捕获阶段执行,为false(默认false)时,事件句柄在冒泡阶段执行。

IE:target.attachEvent(type, listener);
type - 字符串,事件名称,含“on”,比如“onclick”、“onmouseover”、“onkeydown”等。 listener —— 实现了 EventListener 接口或者是 JavaScript 中的函数。




事件的委托(代理 Delegated Events)的原理以及优缺点:


委托(代理)事件是那些被绑定到父级元素的事件,但是只有当满足一定匹配条件时才会被挪。这是靠事件的冒泡机制来实现的,


优点是:


(1)可以大量节省内存占用,减少事件注册,比如在table上代理所有td的click事件就非常棒 


(2)可以实现当新增子对象时无需再次对其绑定事件,对于动态内容部分尤为合适


缺点是:


事件代理的应用常用应该仅限于上述需求下,如果把所有事件都用代理就可能会出现事件误判,即本不应用触发事件的被绑上了事件。


css的作用 1:修饰文字和图片 2:排版和布局

width和height的幅面大小 是不包括  margin padding 和border的

页面导入样式时,使用link和@import有什么区别?
1: link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;
2: 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
3: import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;


闭包就是能够读取其他函数内部变量的函数。

javascript的同源策略是指一段脚本只能读取来自于同一来源的窗口和文档的属性,这里的同一来源指的是主机名、协议和端口号的组合


gulp.task(),gulp.src(),gulp.dest(),gulp.watch()

在英文输入法下,所有浏览器都遵循以下三个事件:
keydown: 当用户按下任意键时触发,而且按住不放的话,会重复触发此事件。
keypress:当用户按下字符键时触发,而且按住不放的话,会重复触发此事件。按下Esc键也会触发这个事件,Safari3.1之前的版本按下非字符键时也触发。

keyup: 当用户释放键时触发。只有在触发keyup事件才能获得修改后的文本值。

在中文输入法下,浏览器之间则表现得不一致,主要情况如下:
IE,Chrome,Safari:触发keydown和keyup, 不触发keypress。
Firefox:首次按下按键时触发keydown,不触发keypress。在停止输入法并改变文本框内容(如按下回车或者空格键)后会触发keyup。

Opera:keydown, keypress和keyup都不触发。

jquery.pagination.js  jquery分页插件

值传递  仅仅传递的是值  也就是值得一个copy  string int Integer  这些类型
引用传递,传递的是内存地址,修改后会改变内存地址对应储存的值。
我们需要注意的是一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值,这句话相当重要,这是按值调用与引用调用的根本区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值