建立: element.cloneNode() : 克隆元素./ document.createElement('div') 建立元素. 添加: element.appendChild() 追加子元素. / element.innerHTML = element 设置内部元素./element.insertBefore() 在某元素前,添加新节点. 移除: parentElement.removeChild( 子element ) / 子element.parentNode.removeChild( 子element): 父元素删除子元素. 查找: document.getElementById() / document.getElementsByTagName() / document.getElementsByName() / element.childNodes/element.parentNode / element.nextSibling
1.元素的内边距在边框和内容区之间。控制该区域最简单的属性是 padding 属性。 2.围绕在元素边框的空白区域是外边距。设置外边距会在元素外建立额外的“空白”。设置外边距的最简单的方法就是使用 margin 属性,这个属性接受任何长度单位、百分数值甚至负值。
js中: 主要经过原型属性,实现对象的初始化成员定义. 并能够经过原型链实现对象的成员继承.
jquery中: 提供了扩展插件的继承方法: $.extend(); 其中底层源码实现:也是经过prototype原型完成继承功能.css
1.BOM对象模型: window.location.history.document. 2.DOM对象模型:document为根对象. 所获取到的form对象等网页元素.四种分类: document对象. Element对象.attribute对象.event对象. 3.内置系统对象模型:Array,Math等. 4.自定义对象模型:var obj1 = { 属性: 值, 函数名: function(){ } };
简单方式:
function quchong(array){
var temp = []; //一个新的临时数组
for(var i = 0; i < array.length; i++){
if(temp.indexOf(array[i]) == -1){
temp.push(array[i]);
}
}
return temp;
}html
var aa = [1,2,2,4,9,6,7,5,2,3,5,6,5];
temp = quchong(aa);
alert("去重结果为:"+temp);前端
注: 还有其余更加高效方法.java
构建flexbox容器:
html:
<div class="flex-container">
<div class="flex-item ">A</div>
<div class="flex-item ">B</div>
<div class="flex-item ">A</div>
<div class="flex-item ">B</div>
</div>mysql
css:
.flex-container{
display:flex;
width:600px;
height:230px;
background-color: #ccc;
}
.flex-item{
background-color:blue;
width: 100px;
margin: 5px;
}jquery
备注:
属性1:
flex-direction属性,它的取值为row,column,column-reverse,row-reverse,默认值是row
默认以上容器为横向排列,设置该属性则纵向排列: flex-direction:columncss3
属性2:
justify-content属性,对齐方式,能够取值为flex-start,flex-end,center,space-between,space-around
两端对齐: justify-content:space-betweenes6
其余属性...面试
注: ES6是即将到来的新版本JavaScript语言的标准,一种新的 "语法糖".
第一点:
原JS代码:
var a = {
f1: function() {ajax
}
};
a.f1();
新es写法:
var a = {
f1() { // 省略function关键字.
}
};
a.f1();
第二点:
原js写法:
function A{
属性: 值,
函数名: function(){
}
}
新es6写法:
class A { //能够直接定义A类.
f1(name) {
this.name = name;
}
f2() {
}
}
var a = new A();
a.f2();
第三点:
只导入该脚本中的逻辑代码执行,不导入其内部对象:
import './module1.js';
导入单个或多个对象到当前页面中:
import obj1 from './module1.js';
import {obj1, obj2} from './module1.js'
其余特性 ....
跨域请求(跨服务器): 默认js将不支持.
$.ajax({
//跨域请求类型声明:
dataType: 'jsonp',
//jsonp的值自定义,若是使用jsoncallback,那么服务器端,要返回一个jsoncallback的值对应的对象.
jsonp: 'jsoncallback',
//要传递的参数,没有传参时,也必定要写上
data: null,
});
注:该种方式: 将生成http://主机请求地址?jsoncallback=jsonp1354505244726&_=1354505244742
相似生成一个跟踪编号,跟踪两个服务器之间的请求过程.
原理:
数据库链接池的基本原理是在内部对象池中维护必定数量的数据库链接,并对外暴露数据库链接获取和返回方法。如:
外部使用者可经过getConnection 方法获取链接,使用完毕后再经过closeConnection 方法将链接返回,注意此时链接并无关闭,而是由链接池管理器回收,并为下一次使用作好准备。
好处:
1. 资源重用
2. 更快的系统响应速度
3. 一种资源分配手段
4. 统一的链接管理,避免数据库链接泄漏
经常使用的链接池:
Druid(阿里的一款,维护,日志记录与监控都很是好).
c3p0,dbcp传统使用的.
1.FULLTEXT全文索引:目前只有MyISAM引擎支持
使用: 能够在CREATE TABLE ,ALTER TABLE ,CREATE INDEX.
限制: 目前只有 CHAR、VARCHAR ,TEXT 列上能够建立全文索引
好处: 为了解决WHERE name LIKE “%zhang%"这类针对文本的模糊查询效率较低的问题
2.HASH索引: key-value特性.
特色:
Hash 索引仅仅能知足"=","IN"和"<>"查询,不能使用范围> / < 查询。
Hash 索引在任什么时候候都不能避免表扫描。
3.B-tree树状索引:
在 Innodb里,主要是primary key主键形态.
4.惟一索引:设置unique index.
5.复合索引: 同时设置多列为index 索引形态.
建议: 对于BTREE这种Mysql默认的索引类型,具备广泛的适用性
索引使用注意规则:
建议: 如下条件相反的字段则不适合设置索引.
第1、在常常须要搜索的列上,能够加快搜索的速度;
第2、在做为主键的列上,强制该列的惟一性和组织表中数据的排列结构;
第3、在常常用在链接的列上,这些列主要是一些外键,能够加快链接的速度;
第4、在常常须要根据范围进行搜索的列上建立索引,由于索引已经排序,其指定的范围是连续的;
第5、在常常须要排序的列上建立索引,由于索引已经排序,这样查询能够利用索引的排序,加快排序查询时间;
第6、在常用在WHERE子句中的列上面建立索引,加快条件的判断速度。
Mysql :
数值函数:
POW(x,y) : x的y次方.
RAND() : 随机数0-1.
ROUND(x) : 四舍五入,取整.
日期函数:
Adddate( date1 , n ) : 将date1日期,加上n天数.注:能够为负数.
curdate()/ current_date(): 当前日期.yyyy-MM-dd
curtime()/current_time(): 当前时间: hh:mm:ss
current_timestamp() /now(): 当前日期时间: yyyy-MM-dd hh:mm:ss
date( “yyyy-MM-dd” ) : 将字符串转换为mysql中的日期对象.
datediff(date1 , date2) : 计算date1-date2 = 日期天数差.
Date_format( date1 , format2 ) : 将日期格式化.格式:%y-%m-%d
字符函数: concat(str1 , str2 ... ) : 拼接字符串.
find_in_set( ch1 , str2 ): 查找str2中ch1的位置.
insert(str1,start , len ,str2): 将str1中的strart-len的位置换成str2.
upper(str1) : 转换字符str1所有为大写.
Lower(str1) : 转换字符str1所有为小写.
trim(str1) : 去除字符串str1 的先后空格.
Substring(str1 , start , length)/substr( str1 , start , length ): 提取str1中的start-length.
Oracle:
字符函数:
CONCAT(X,Y)
trim()
REPLACE(X,old,new)
SUBSTR(X,start[,length])
数值函数:
POWER(3,4)3的4次幂
ROUND(X),四舍五入。
TRUNC(x),直接截取,不四舍五入
日期函数:
ADD_MONTHS(d,n) d日期上加上n月.
EXTRACT(fmt FROM d),提取日期中的特定部分。
fmr为:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND
转换函数:
TO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日" HH24:MI:SS')当前系统时间,转换为指定日期格式字符串返回.
TO_DATE(X,[,fmt]) : 转换为日期对象.
TO_NUMBER(X,[,fmt]) : 转换为数值.
聚合函数(与mysql相同)等其余函数 ...
事务支持
MyISAM不支持事务,而InnoDB支持
可移植性、备份及恢复
MyISAM:数据是以文件的形式存储,跨平台的数据转移中会很方便
InnoDB:免费的方案能够是拷贝数据文件、备份 binlog,或者用 mysqldump,在数据量达到几十G的时候就废了.
锁支持:
MyISAM:只支持表级锁,用户在操做myisam表时,select,update,delete,insert语句都会给表自动加锁
InnoDB:支持事务和行级锁,是innodb的最大特点. 可是InnoDB的行锁,只是在WHERE的主键是有效的,非主键的WHERE都会锁全表的
表主键
MyISAM:容许没有任何索引和主键的表存在,索引都是保存行的地址。
InnoDB:若是没有设定主键或者非空惟一索引,就会自动生成一个6字节的主键(用户不可见)
CURD操做
MyISAM:若是执行大量的SELECT,MyISAM是更好的选择。
InnoDB:若是你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表
外键
MyISAM:不支持
InnoDB:支持
DELETE语句执行删除的过程是每次从表中删除一行.事务中该操做方便回滚.
TRUNCATE TABLE 则一次性地从表中删除全部的数据并不把单独的删除操做记录记入日志保存,删除行是不能恢复的。执行速度快.
drop 不针对数据删除.针对数据表结构删除.
TRUNCATE索引和表的占用空间将恢复到初始化大小.
delete操做不会减小表或索引所占用的空间
drop语句将表所占用的空间全释放掉。
注:以上总结:删除速度特色: drop > truncate > delete