JavaScript的类型转换javascript
JavaScript是一种无类型语言,类型转换分为显式转换和隐式转换php
隐式转换css
经过运算符进行转换,在一些运算中,Javascript也会进行自动类型转换html
显式转换java
经过手动进行类型转换,Javascript提供了如下转型函数:node
转换为数值类型:Number(mix)、parseInt(string,radix)、parseFloat(string)
转换为字符串类型:toString(radix)、String(mix)
转换为布尔类型:Boolean(mix)程序员
JavaScript的原型与继承ajax
Js全部的函数都有一个prototype属性,这个属性引用了一个对象,简称原型,javascript中的继承是经过原型链来体现的,访问一个对象的属性时,先在基本属性中查找,若是没有,再沿着__proto__这条链向上找,这就是原型链。算法
B.prototype = new A();,此时B.prototype.constructor就是构造对象A,随后使用B.prototype.constructor = B;将B原型的构造器从新指向B构造函数在进行原型继承后,要进行修正操做。spring
JavaScript的闭包
闭包函数相似于Java等OO语言中的getter和setter函数,即由于变量做用域的缘由,在函数外部没法读取函数内的局部变量。闭包就是可以读取其余函数内部变量的函数。父对象的全部变量,对子对象都是可见的,反之则不成立。闭包就是将函数内部和函数外部链接起来的一座桥梁。
因为闭包会使得函数中的变量都被保存在内存中,内存消耗很大,在IE中可能致使内存泄露。解决方法是,在退出函数以前,将不使用的局部变量所有删除。 闭包会在父函数外部,改变父函数内部变量的值。
HTTP中Get和Post
get是从服务器上获取数据,post是向服务器传送数据。
GET请求,请求的数据会附加在URL以后,以?分割URL和传输数据,多个参数用&链接。POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。
即GET请求的数据会暴露在地址栏中,而POST请求则不会。
对于GET,特定的浏览器和服务器对URL的长度有限制。所以,在使用GET请求时,传输数据会受到URL长度的限制。数据量不能大于2KB
对于POST,因为不是URL传值,理论上是不会受限制的,可是实际上各个服务器会规定对POST提交数据大小进行限制,理论上,IIS4中最大量为80KB,IIS5中为100KB。
POST的安全性比GET的高。在FORM提交的时候,若是不指定Method,则默认为GET。
JavaScript事件绑定
IE的attachEvent()
elemObject.attachEvent("eventName", functionReference);
eventName 参数的值是表示事件名称的字符串,好比onclick(含on)。functionReference 参数是一个不带括号的函数引用
W3C DOM 的addEventListener()
nodeReference.addEventListener("eventType", listenerReference, captureFlag);
用 W3C DOM 规范中的行话来讲,addEventListener() 方法为指定的结点注册了一个事件,表示该结点但愿处理相应的事件。
第一个参数是一个声明事件类型的字符串,好比click,mousedown。(不含on)
第二个参数能够和早些时候描述过的函数引用一样对待。
第三个参数则是一个Boolean值,指明该结点是否以DOM中的捕捉模式来侦听事件。
JavaSciprt事件冒泡以及目标元素。
事件冒泡: 当一个元素上的事件被触发的时候,好比说鼠标点击了一个按钮,一样的事件将会在那个元素的全部祖先元素中被触发。这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。
目标元素: 任何一个事件的目标元素都是最开始的那个元素,而且它在咱们的元素对象中以属性的形式出现。使用事件代理的话咱们能够把事件处理器添加到一个元素上,等待一个事件从它的子级元素里冒泡上来,而且能够很方便地得知这个事件是从哪一个元素开始的。
JavaScript图片轮播
1.全局变量等
定义初始index,图片总数
2.自动切换定时器处理
设置自动切换时间,自动切换后修改index
3.为左右箭头添加事件处理
滑入清除定时器,滑出则重置定时器,根据curIndex进行上/下一个图片处理
4.为右下角的li 按钮绑定事件处理
用css来隐藏img,用siblings而不是先hide所有在fadein,使用siblings来处理这样的状况速度会比较快。简单来说siblings就是除开当前显示的这个之外的全部统计图片所有fadeOut
JavaScript网页前进和后退的代码
前进: history.forward();=history.go(1);
后退: history.back();=history.go(-1);
cookie和session的区别
一、cookie数据存放在客户的浏览器上,session数据放在服务器上。
二、cookie不是很安全,别人能够分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
三、session会在必定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。
四、单个cookie保存的数据不能超过4K,不少浏览器都限制一个站点最多保存20个cookie。
CSS 优先级法则
1.、 选择器都有一个权值,权值越大越优先,当权值相等时,后出现的样式表设置要优于先出现的样式表设置;
二、 创做者的规则高于浏览者:即网页编写者设置的CSS 样式的优先权高于浏览器所设置的样式;
三、继承的CSS 样式不如后来指定的CSS 样式,在同一组属性设置中标有“!important”规则的优先级最大
CSS选择器
浏览器兼容性问题
javascript兼容性问题
一、在标准的事件绑定中绑定事件的方法函数为 addEventListener,而IE使用的是attachEvent
二、事件处理中很是有用的event属性得到亦不相同,标准浏览器是做为参数带人,而ie是window.event方式得到,得到目标元素ie为e.srcElement 标准浏览器为e.target
三、而后在ie中是不能操做tr的innerHtml
四、而后ie日期函数处理与其它浏览器不大一致,好比: var year= new Date().getYear(); 在IE中会得到当前年,可是在firefox中则会得到当前年与1900的差值。
五、得到DOM节点的方法有所差别,其得到子节点方法不一致。
css兼容性问题
一、不一样浏览器的标签默认的外补丁和内补丁不一样,解决方案:用通配符*来设置各个标签的内外补丁是0。
二、div的垂直居中问题 vertical-align:middle; 将行距增长到和整个DIV同样高 line-height:200px; 而后插入文字
三、margin加倍的问题 设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决方案是在这个div里面加上 display:inline;
Ajax是什么
ajax是异步的 JavaScript 和 XML。经过在后台与服务器进行少许数据交换,AJAX 可使网页实现异步更新。这意味着能够在不从新加载整个网页的状况下,对网页的某部分进行更新。
Ajax的交互模型
1--启动 获取XMlHttpRequest对象
2--open 打开url通道,并设置异步传输
3--send 发送数据到服务器
4--服务器接受数据并处理,处理完成后返回结果
5--客户端接收服务器端返回
同步和异步的区别
同步:脚本会停留并等待服务器发送回复而后再继续
异步:脚本容许页面继续其进程并处理可能的回复
Ajax跨域的解决方法
若是在A网站中,咱们但愿使用Ajax来得到B网站中的特定内容,若是A网站与B网站不在同一个域中,那么就出现了跨域访问问题。
IE对于跨域访问的处理是,弹出警告框,提醒用户。若是用户将该网站归入可信任网站,或者调低安全级别,那么这个问题IE就不会在提醒你。
FireFox等其它非微软的浏览器遇到跨域访问,则解决方案统一是拒绝访问
几个可行的方案:
一、Web代理的方式。
二、on-Demand方式
三、iframe方式。
四、用户本地转储方式
什么是PHP
超级文本预处理语言 Hypertext PreProcessor,是一种用来开发动态网站的服务器端脚本语言。
PHP字符串翻转
echo strrev($a);
PHP支持多继承吗?
不支持。PHP中只容许单继承,父类能够被一个子类用关键字“extends”继承。
echo(),print(),print_r()的区别
echo是PHP语句, print和print_r是函数,语句没有返回值,函数能够有返回值
echo输出一个或者多个字符串
print()只能打印出简单类型变量的值(如int,string)
print_r() 能够打印出复杂类型变量的值(如数组,对象)
在PHP中如何定义常量
使用define () 来定义常量,好比define (“Newconstant”, 30);
语句include和require的区别,如何避免屡次包含同一文件
require是无条件包含,也就是若是一个流程里加入require,不管条件成立与否都会先执行require
include有返回值,而require没有(可能由于如此require的速度比include快) 包含文件不存在或者语法错误的时候require是致命的,include不是
使用 require_once() 和 include_once()能够避免屡次包含同一文件以免函数重定义,变量从新赋值等问题。 返回值和include() 相同。若是文件已被包含,本函数返回 TRUE。
HTTP协议1.0及1.1的区别,并简单说下HTTP协议
HTTP,超文本传输协议。它定义了浏览器和服务器的通讯规则。HTTP协议是基于TCP/IP的TCP协议上,如今万维网使用的是HTTP1.1版本,其特色包括,C/S模式,请求简单(GET/POST/HEAD),灵活(能够传输任何类型的数据HTML、XML、JSON、自定义等),无链接(每次链接只处理一个请求,从发出请求到收到200状态为止断开链接),无状态。
HTTP协议主要包括,响应消息格式、请求消息格式、状态码知识点。
什么是MVC?
MVC,即Model(数据层),View(视图层),Controller(控制层)。
PHP中的MVC模型是一种有效将代码分红三层的管理办法,
Model表示着应用中的数据信息
View负责将应用中的数据信息展示出来
Controller控制着如何将数据信息读出。
Spring MVC工做原理
1. 客户端请求提交到DispatcherServlet
2. 由DispatcherServlet控制器查询一个或多个HandlerMapping,找处处理请求的Controller
3. DispatcherServlet将请求提交到Controller
4. Controller调用业务逻辑处理后,返回ModelAndView
5. DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
6. 视图负责将结果显示到客户端
为何要用Spring
一、Spring能很好的与各大框架进行集成
二、建立对象时,若是咱们不用spring须要用工厂模式来建立,这个spring至关于工厂模式已经帮咱们作了建立对象的功能(IOC、依赖注入)。
三、在用Hibernate的时候,若是不用spring每次都要写事务的提交代码,有了spring能够经过AOP帮助咱们管理事务
四、面向切面编程(AOP)在要记录日志的时候添加一条记录后须要在数据里同时添加一条添加成功了或失败的记录,那么就能够用Spring的Aop来处理,虽然不用Aop也能作可是不用Spring的Aop就会写不少重复的代码。
Spring中的IOC和AOP
IOC依赖注入,即用接口编程,在程序中不出现new关键字,用接口来命名引用,而后经过某种方式把接口的某个实现类的实例注入到引用里,从而实现接口与具体实现类的松耦合。
AOP面向方面的编程,即,是一种编程技术,它容许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。
Spring bean生命周期
实例化——填充属性——
调用BeanNameAware的setBeanName()方法
调用BeanFactoryAware的setBeanFactory()方法
调用ApplicationContextAwar的setApplicationContext()方法
调用BeanPostprocessore的预初始化方法
调用InitialzingBean的afterPropertiesSet()方法
调用定制的初始化方法——调用Beanprocessors的后初始化方法——
bean可使用——容器关闭——
调用DisposableBean的destroy()方法——
调用定制的销毁方法——结束
1. BeanFactoyPostProcessor实例化
2. Bean实例化,而后经过某些BeanFactoyPostProcessor来进行依赖注入
3. BeanPostProcessor的调用.Spring内置的BeanPostProcessor负责调用Bean实现的接口: BeanNameAware, BeanFactoryAware, ApplicationContextAware等等,等这些内置的BeanPostProcessor调用完后才会调用本身配置的BeanPostProcessor
4. Bean销毁阶段
SSH整合
SSH:Struts(表示层)+Hibernate(持久层)+Spring(业务层)
Struts是一个表示层框架,主要做用是界面展现,接收请求,分发请求。
Hibernate是一个持久层框架,它只负责与关系数据库的操做。
Spring是一个业务层框架,是一个整合的框架,可以很好地黏合表示层与持久层。
Spring的事务管理
事务就是对一系列的数据库操做进行统一的提交或回滚操做,若是插入成功,那么一块儿成功,若是中间有一条出现异常,那么回滚以前的全部操做。这样能够防止出现脏数据,防止数据库数据出现问题。
开发中为了不这种状况通常都会进行事务管理。Spring中也有本身的事务管理机制,通常是使用TransactionMananger进行管理,能够经过Spring的注入来完成此功能。
数据库链接池
开源数据库链接池主要有c3p0、dbcp、proxool三种
DBCP是Apache上的一个 java链接池项目,也是 tomcat使用的链接池组件。因为创建数据库链接是一个很是耗时耗资源的行为,因此经过链接池预先同数据库创建一些链接,放在内存中,应用程序须要创建数据库链接时直接到链接池中申请一个就行,用完后再放回去。dbcp没有自动的去回收空闲链接的功能。
各类排序算法的比较
二叉树
1.在二叉树的第I层上至多有2i-1个结点。
2.深度为k的二叉树至多有2k-1个结点(k>=1)
3.在任意一个二叉树中,度为0的结点老是比度为2的结点多一个;
4.具备n 个结点的二叉树,其深度至少为[log2n]+1。
B树平衡多路查找树
1.全部非叶子结点至多拥有两个儿子(Left和Right);
2.全部结点存储一个关键字;
3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;
4.全部的叶子结点都位于同一层。
搜索:从根结点开始,若是查询的关键字与结点的关键字相等,那么就命中;
不然,若是查询关键字比结点关键字小,就进入左儿子;若是比结点关键字大,就进入
右儿子
Dijkstra 算法
在无向图 G=(V,E) 中,假设每条边 E[i] 的长度为 w[i],找到由顶点 V0 到其他各点的最短值。
把顶点集合V分红两组:
1.S:已求出的顶点的集合(初始时只含有源点V0)
2.V-S=T:还没有肯定的顶点集合
将T中顶点按递增的次序加入到S中,保证:
1.从源点V0到S中其余各顶点的长度都不大于从V0到T中任何顶点的最短路径长度
2.每一个顶点对应一个距离值