js总结(!!!)
js总结(!!!)
简述JavaScript起源 起源于美国的Netscape公司,原名为LiveScript,后改为JavaScript,他是一种脚本语言,用于与浏览器实现对话
JavaScript三大核心 ECMAScript, Web浏览器对于EMCAScript来说是一个寄宿环境,但他并不是唯一的寄宿环境。事实上,还有不计其数的其他环境可以容纳ECMAScript实现。 文档对象模型(Dom,Document Object Model), 如果没有document(文档),DOM也就无从谈起。当创建了一个页面并把它加载到Web浏览器时,DOM就在幕后悄然而生。他根据编写的页面文档创建一个文档对象 浏览器对象模型 (Bom,Browser Object Model), BOM提供了独立于内容的与浏览器窗口进行交互的对象。由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window.
javascript的特点 编写简单 无需编译,直接运行 面向对象的编程语言
JavaScript的运用方式 内部运用:在
结束语随意位置就可以,写入
声明变量:
var name='king'; console.log(name);
常亮赋值:
const PI=3.55; const PI=3.84; console.log(PI);
js最基本的三种输出方式:
console.log('hello king'); document.write('hello king') alert('hello king');
命名规范:
var name='king'; var name1='king'; var name_1='king'; var $name='king';
变量赋值:
var name='king'; var name='queen'; console.log(name); console.log(typeof name);
声明变量与未声明变量:
//1.声明变量不赋值,返回undefined var hename console.log(hename);
//2.直接输出未声明的变量,会报错 console.log(ahflk);
数据类型的转换: number
var num1=10; var num2=16;
string
var str1='king';
boolean
var boo=true; var oo2=false;
undefined
var undef;
1)number + number = number
var num3=num1+num2; console.log(num3);//26 console.log(typeof num3);
2)number + string = string
var str=num1+str1; console.log(str);//10hello console.log(typeof str);
3)number + boolean = number
var boo=num1+boo1; console.log(boo);//11 console.log(typeof boo);
4)number + undefined = number
var und=num1+undef; console.log(und);//NAN console.log(typeof und);
5)string + boolean = string
var stb=str1+boo1; console.log(stb); //kingtrue console.log(typeof stb);
6)string + undefined = string
var sfind=str1+undef; console.log(sfind);/kingundefined console.log(typeof sfind);
数据类型转换减法操作:
var num1 = 10; var str1 = "11"; var str2 = "Hello"; var str3 = "35"; var str4 = "waht";
console.log(num1+str1);//1011 console.log(num1-str1);// -1 console.log(str1+str3);//1135 console.log(str3-str1);//24 console.log(str2-str4);//NaN
运算符-逻辑运算符:
var num = parseInt(prompt("请输入一个数字")); //判断 num 是否在 0~10之间 var result=(num>=0&&num<=10); console.log(num+"在0~10之间吗?"+result);
转换: parseInt();-转换成整数;(没有四舍五入)。
parseFloat();转换为小数;基本不变 如果是0.xx的话可省略小数点前面的0。
Number();转换为number类型最后结果只会是unmber(数字)类型。
toString();转换成字符串最后结果都是字符串(string);。
toFixed();按要求保留小数位数。
a.toFixed();括号里面是保留几位小数不能过于大,有四舍五入的功能。
显示装换 强制转换:
parseInt();转换成整数
var a=5.3;
var b=parseInt(a);
console.log(typeof a);
parseFloat();转换成小数
var a='.33';
var b=parseFloat(a);
cosole.log(b);
console.log(typeof b);
Number();转换成number类型
var a='5';
var b=Number(a);
console.log(b)
console.log(typeof b)
toSting();转换成字符串
var a=3
var b=a.toSting();
console.log(b);
console.log(ty
toFiexd();按要求保留几位小数
var a=14.95;
var b=a.toFixed(1);
console.log(b);
三目运算法:条件+?score>=60?就是条件;
如: (
var score=prompt('成绩')
var result=score>=60?'合格':'不合格';
alert(result); )
满足两个条件(
var sleep=prompt('请输入您的睡眠时间')
var result=sleep>=8?'正常':'不正常';
var result=sleep<=10?'正常':'不正常';
alert(result); )
符号引用:
与(和,且):&&;
或:||
非:! 去与它相反的(如果他是对的用“非”的话就是错的)
有假且(&&)为假,有真或(||)为真意思是
在“和”(&&)里只要有一个是假的那他整个都是假的
在“或”(||)里面有一个是真的那么他全部都是真的
在 和(&&)里面有一个是假的它输出的就是false 在或里面有一个是真的那么他输出的就是true
循环语句:while
var a=1;
while(a<=10){
console.log('GOGOGO');
a++;
}
(1-100)
var a=1;
while(a<=100){
document.write(a);
a++;
}
var a=1;
while(a<=100){
document.write(a++);//++a:偶数;a++:奇数;
a++;
}
模:
var a=1;
while(a<=100){
if(a%2==0){
console.log(a);
};
a++;
};
var a=1;
while(a<=100){
console.log(a);
a+=a=2;
};
for循环语句:
for(1.声明一个(多个)变量;条件;对变量进行操作)
for(var i=1;i<=10; i++){
console.log('hello word');
}
for(var i=1;i<=100; i++){
console.log(i);
}
for(var i=1;i<=100;i++){
if (i%2==0){
console.log(i);
}
}
//奇数:
for(var i=1,sum=0;i<=100;i++){
if(i%2==1){
sum=sum+i;
}
}
console.log(sum);
//偶数:
for(var i=1,sum=0;i<=100;i++){
if(i%2==0){
sum=sum+i;
}
}
console.log(sum);
求出数组中的最大值:
var arr=[1,3,4,2,5];
for(var i=0,sum=arr[0];i<=arr.length;i++){
if(arr[i]>sum){
sum=arr[i];
}
}
console.log(sum);
1.遍历数组,同时声明变量sum并且赋值为数组中的某个元素
2如果数组中的当前元素大于sum,就把数组中的当前元素赋值给sum
3.输出sum
for循环:
//五行星星:
for(var a=1;a<=5;a++){
document.write(' ');
for(var b=1;b<=10;b++){
document.write('*')
}
}
//三角星星:
for(var a=1;a<=5;a++){
document.write(' ');
for(var b=1;b<=a;b++){
document.write('*')
}
}
//99乘法表:
for(var a=1;a<=9;a++){
document.write(' ');
for(var b=1;b<=a;b++){
document.write(b+''+a+'='+(a b)+'\t')
}
}
数组:内存中的一段存储空间,多个变量的集合 创建一个数组(声明)
var arr=[]; 声明了一个空数组
var arr=new Array();
给数组中添加值
var arr=[1,2,3,4,5];
var arr1=['a','b','c','d'];
var arr2=[true,false]
数组中的值不限制数据类型
数组不限制长度
两个特点
1.下标:标识数组中元素的位置,从0开始,递增不重复
2.长度 length
var arr=[1,2,3,4,5,6,7,8,9];
0 1 2 3 4 5 6 7 8
console.log(arr.length)
输出数组中下标为4的值
consolze.log(arr[4])
数组的长度等于最大下标+1
给数组下标为11的位置处添加元素
arr[11]='a'
console.log(arr);
//数组API:
1.String();把数组转换成字符串
var arr=[1,2,3,4,5];
var str=String(arr);
console.log
2.join('拼接符');拼接,最后拼接成的是字符串
如果没有拼接符,默认等于String;
var arr=['h','e','l','l','o'];
var str=arr.join('-');
var str=arr.join('');
var str=arr.join();
console.log(str);
3.const();拼接 结果还为数组
var arr=['a','b','c'];
var arr2=[1,2,3,4,5];
var str=arr.concat(1,2);
var str=arr.concat(arr2);
console.log(str);
4.slice(starti,endi+1);截取
特点:1含头不含尾
2.如果省略第二个参数,默认从starti开始截取到结尾
3.如果一个参数都不写,相当于复制原数组
4.支持负数参数
var arr=['a','b','c','d','e','f','g'];
0 1 2 3 4 5 6
var str=arr.slice(2,5);
var str=arr.slice(2);
var str=arr.slice();
var str=arr.slice(-3,-1);
console.log(str);
5.splice(starti,n);
删除 插入 替换
var arr=['a','b','c','d','e','f'];
0 1 2 3 4 5
删除:
var str=arr.splice(3,2);
插入var str=arr.splice(3,0,'1','2');
替换
var str=arr.splice(3,2,'A','B');
console.log(str);
console.log(arr);
6.翻转
var arr=[1,2,3,4,5];
var str=arr.reverse();
console.log(str);
7.push();给数组末尾添加元素
var arr=[1,2,3,4,5];
var str=arr.push('a',10);
console.log(arr);
pop();删除数组末尾的元素
var arr=[1,2,3,4,5];
var str=arr.pop();
console.log(arr);
unshift();给数组开头添加一个元素
var arr=['a','b','c']
var str=arr.unshift('fff');
console.log(arr);
shift();删除
var arr=[1,2,3,4,5];
var str=arr.shift();
console.log(arr);
//Dom: 操作页面元素(增删改查)
1.查找:
一.通过元素间的关系查找
1)父子关系
parentElement 查找一个元素的父元素
console.log(ceshi.parentElement) //查找id为ceshi的父元素
ceshi.parentElement.style.backgroundColor='#ccf'; //设置ceshi父元素的背景色
children 查找一个元素的所有子元素(输出为数组形式)
console.log(ceshi.children); //查找id为ceshi的所有子元素(!结果为数组形式!)
ceshi.children[2].style.color='#f00';//给ceshi的子元素中下标为2的设字体颜色
var a=ceshi.children; //给ceshi的所有子元素的设置字体颜色
for(var i=0;i
ceshi.children[i].style.backgroundColor='#0f0';
}
console.log(ceshi.children[2].children[0].children[2])
var b=ceshi.children[2].children[0].children[2];
b.style.color='#50f';
firstElementChild 查找一个元素的第一个子元素(输出为原来的形式)
lastElementChild 查找一个元素的最后一个子元素(输出为原来的形式)
// console.log(ceshi.firstElementChild.)
2)兄弟关系
previousElementSibling 前一个兄弟
nextElementSibling 下一个兄弟
//找 阳光的快乐生活
var c=ceshi.firstElementChild.nextElementSibling.children[0].firstElementChild.nextElementSibling;
console.log(c);
c.style.backgroundColor='#00f';
//找 回村的诱惑
var d=ceshi.children[2].previousElementSibling.firstElementChild.lastElementChild;
console.log(d);
d.style.color='#ff0';
找 儿子去哪儿
var e=ceshi.firstElementChild.nextElementSibling.nextElementSibling.firstElementChild.lastElementChild
console.log(e);
e.style.backgroundColor='#0ff';
二.通过HTML查找
1)通过id查找
var ele=document.getElementById('id号'); //只能找到一个
var id=document.getElementById('ceshi');
console.log(id);
id.style.backgroundColor='#f0f';
2)通过class查找
var ele=document.getElementsByClassName('class名'); //可以找到多个 并且返回一个动态集合(数组)
var main=document.getElementsByClassName('main');
console.log(main);
main[0].style.backgroundColor='#ff0';
3)通过标签名查找
var ele=document.getElementsByTagName('标签名') //可以找到多个 并且返回一个动态集合(数组)
var li=document.getElementsByTagName('li');
console.log(li);
for(var i=0;i
li[i].style.color='#c2c';
};
4)通过name属性查找
var ele=document.getElementsByName('name'); //可以找到多个 返回动态集合 (数组)
var uname=document.getElementsByName('uname');
console.log(uname)
三.通过选择器查找
var ele=document.querySelector('选择器'); //只能找到一个
var lia=document.querySelector('#ceshi>li>ul>li:last-child');
console.log(lia);
lia.style.color='#f0f';
var ele=document.querySelectorAll('选择器'); 查找所有 返回动态集合 (数组)
var liall=document.querySelectorAll('.main>li');
console.log(liall);
for(var i=0;i
liall[i].style.backgroundColor='#cf0';
}
//函数:预先定义好的,可以被反复利用的代码块
function fn(){fn 表示函数名
代码
console.log('hello js');
例:
点击
function myFunction(a,b){
alert('hello js');
}
带参数的函数
function myFunction(a,b){
alert(a*b);
}
外链接
var bth=document.getElementById('btn');
bth.onclick=function(){
alert('点击');
}
练习:
div{
width:200px;
height:200px;
background:green;
}
按钮
显示
正则:
1.search
search(/正则/);判断是否包含符合规定的关键词
varstr='you can you up';varstrs=str.search(/you/);//返回关键词的位置varstrs=str.search(/uoy/);//找不到返回-1console.log(strs);
2.match
match(/正则/); 获得所有和正则匹配的关键词
varstr='good good study,Day day up';// var strs=str.match(/d/);varstrs=str.match(/d/gi);console.log(strs);
3.exec
exec();既获得每个关键词的位置又获得每个关键词的内容
varstr='good good study,Day day up';varreg=/day/g;console.log(reg.exec(str));
4.replace
replace(/正则/ig,'替换值'); 替换
varstr='no zuo no die';varstrs=str.replace(/no/ig,'*');console.log(strs);
5.spilit
spilit(/正则/);切割 //切割完返回一个数组
varstr='no,zuo,no,die';varstrs=str.split(/,/);console.log(strs);
js轮播实现:
var banner=document.querySelectorAll('.banner>ul>li>a>img'); var point=document.querySelectorAll('.banner>p>span'); var timer; var i=0;
function play(){
timer=setInterval(function(){
banner[i].style.display='none';
point[i].style.background='#8b8b8b';
i++;
if(i>1){
i=0;
}
banner[i].style.display='block';
point[i].style.background='#ff8800
},2000)
}
play();
//给box添加鼠标移入移出事件
var box=document.querySelector('.banner>ul');
box.onmouseover=function(){
clearInterval(timer);
}
box.onmouseout=function(){ play(); }
//点击圆点切换
for(var j=0;j point[j].index=j; point[j].onclick=function(){ var nu=this.index; for(var b=0;b banner[b].style.display='none'; point[b].style.background='#8b8b8b'; } banner[nu].style.display='block'; point[nu].style.background="#ff8800"; } }
计时器:
css样式
停止一次性定时器 停止永久性定时器 script 一次性定时器
var btn1=document.querySelector('.btn1'); var btn2=document.querySelector('.btn2'); function show(){ console.log('这是一次性定时器'); }//一次性定时器 script 永久性定时器
var timer=setTimeout(show,3000); btn1.onclick=function(){ clearTimeout(timer); }
function print(){ console.log('这是永久性定时器'); } var times=setInterval(print,1000); btn2.onclick=function(){ clearTimeout(times); } instanceof:
var arr=[1,2,3,4,5]; var obj={name:'jack'}; console.log(arr instanceof Array); console.log(obj instanceof Array); 深度克隆: var student={ name:'jack', age:18, friend:['lily','lucy'] } function clone(obj){ var newObj=obj instanceof Array?[]:{}; for(var key in obj){ if(obj[key] instanceof Object){ newObj[key]=clone(obj[key]); }else{ newObj[key]=obj[key]; } } return newObj; }
var newObj=clone(student); student.friend[0]='rose'; console.log(student.friend[0]); console.log(newObj.friend[0]); 事件委托: 事件委托:可以简单第理解为将子集的事件委托给父级来处理 div
按钮1 按钮2
script 第一种写法
var btn1 = document.querySelector(".btn1"); var btn2 = document.querySelector(".btn2"); btn1.addEventListener("click",function(){ console.log(this.innerHTML) }) btn2.addEventListener("click",function(){ console.log(this.innerHTML) }) script 第二种写法
var btnArray = document.querySelectorAll("button"); for(var i = 0;i btnArray[i].addEventListener("click",function(){ console.log(this.innerHTML) }) } 第三种:使用事件委托的方式实现
var box=document.querySelector('.boxs'); box.addEventListener('click',function(event){ var target=event.target; console.log(target.innerHTML); })
仿微博发表评论: 1)css样式 { margin:0; padding:0; } a{ text-decoration: none; } input{ border:0; } li{ list-style: none; } .container{ width:800px; margin:0 auto; / border:1px solid #000;/ padding:20px; } input{ border:1px solid #666; width:100%; height:100px; padding-left:10px; } .content>p{ font-weight: bold; font-size: 20px; padding:10px; } .content>p>span{ font-weight: normal; font-size:14px; margin-left:400px; } .content>button{ width:70px; height:40px; line-height: 40px; background: #e4393c; border-radius: 5px; border:0; font-size: 16px; font-weight: bold; color:#fff; margin-top:10px; margin-left:90%; } .main{ width:100%; border:1px solid #000; overflow: hidden; border-radius: 20px; margin-top:20px; padding:0 10px; } .main>img,.main>p{ float:left; } .main>img{ width:100px; height:100px; } .main>p{ width:500px; height:100px; line-height: 100px; padding-left:50px; / border:1px solid #000;*/ } .main>button{ width:70px; height:40px; line-height: 40px; background: #e4393c; border-radius: 5px; border:0; font-size: 16px; font-weight: bold; color:#fff; float:right; margin-top:30px; } 2)div
3)script 把图片做成随机数
var btn=document.querySelector('.content>button'); btn.onclick=function(){ var inputVal=document.querySelector('.content>input').value; //动态创建元素: //动态创建div var div=document.createElement('div'); div.className='main'; var img=document.createElement('img'); var arr=['img/1.jpg','img/2.jpg','img/3.jpg']; var num=Math.floor(Math.random()*3); img.src=arr[num]; div.appendChild(img); var p=document.createElement('p'); p.innerHTML=inputVal; document.querySelector('.content>input').value=''; div.appendChild(p); var button=document.createElement('button'); button.innerHTML='删除'; button.onclick=function remov(){ this.parentElement.parentElement.removeChild(this.parentElement); } div.appendChild(button); document.querySelector('.container').appendChild(div); } 仿新浪微博发布评论js代码: 1)css样式 .main{ width: 800px; margin:20px auto; } span{ display: inline-block; width: 200px; height: 25px; line-height: 25px; vertical-align: middle; text-align: left; margin-bottom: 10px; } .tag{ font-size: 13px; margin-left: 370px; vertical-align: bottom; text-align: center; margin-bottom: 0; } .text{ width: 750px; height: 180px; margin:0 auto; resize:none; } input{ display: inline-block; width: 80px; height: 50px; background: #E2526F; border: 0; margin-left: 670px; margin-top: 10px; } .creatediv{ width: 675px; height: 80px; border: 1px solid gray; position: relative; margin-top: 10px; padding-left: 75px; } .createinput{ width: 80px; height: 30px; position:absolute; right: 5px; bottom:5px; } .createimg{ width: 50px; height: 50px; position: absolute; top: 15px; left: 15px; } .createdivs{ width:600px; height:50px; position: absolute; top: 15px; left: 85px; } 2)div
3)script var textarea=document.getElementById("text"); var ipt=document.getElementById("ipt"); var txt=document.getElementById("txt"); ipt.onclick=function(){ var txtValue=textarea.value; if(txtValue.length>0){ var divs=document.createElement("div"); var imgs=document.createElement("img"); var ps=document.createElement("p"); var inputs=document.createElement("input"); divs.setAttribute("class","creatediv"); imgs.setAttribute("class","createimg"); ps.setAttribute("class","createdivs"); inputs.setAttribute("class","createinput"); img.src="pic/1.jpg"; input.type="button"; inputs.value="删除"; ps.innerHTML=txtValue; divs.appendChild(imgs); divs.appendChild(ps); divs.appendChild(inputs); if(txt.children.length==0){ txt.appendChild(divs); }else{ txt.insertBefore(divs,get_firstChild(txt)); }
inputs.onclick=function(){
this.parentElement.parentElement.removeChild(this.parentElement)
}
}
} var textarea=document.getElementById("text"); var inputs=document.getElementById("ipt"); var txt=document.getElementById("txt"); ipt.onclick=function(){ var txtValue=textarea.value; if(txtValue.length>0){ var divs=document.createElement("div"); var imgs=document.createElement("img"); var ps=document.createElement("p"); var inputs=document.createElement("input"); divs.setAttribute("class","creatediv"); imgs.setAttribute("class","createimg"); ps.setAttribute("class","createdivs"); inputs.setAttribute("class","createinput"); imgs.src="pic/1.jpg"; inputs.type="butto"; inputs.value="删除"; ps.innerHTML=txtValue; divs.appendChild(imgs); divs.appendChild(ps); divs.appendChild(inputs); if(txt.children.length==0){ txt.appendChild(divs) }else{ txt.appendChild(divs,get_firstChild(txt)); }
inputs.onclick=function(){
this.parentElement
.parentElement
.removeChild(this.parentElement)
}
}
}
更改网页背景色: window.onload=function(){ document.body.bgColor="#000"; 定时器 一秒钟显示一个星星 一秒钟调用star一次 window.setInterval("star()",1000); 25 } 动画主函数: function star(){ //创建图片节点 var imgObj = document.createElement("img"); //添加src属性 imgObj.setAttribute("src","images/lele.jpg"); //添加width属性 getRandom()随机数函数 var width = getRandom(20,120); imgObj.setAttribute("width",width);
添加层叠样式表属性(style属性 行内样式)
var x = getRandom(0,window.innerWidth);
var y = getRandom(0,window.innerHeight);
//设置坐标 x y 为未知数
imgObj.setAttribute("style","position:absolute;left:"+x+"px;top:"+y+"px;");
//添加onclick事件属性
//this 代表当前对象,this是一个对象,只能在函数内使用
imgObj.setAttribute("onclick","removeImg(this)");
//将图片节点,挂载到的父节点下
document.body.appendChild(imgObj);
函数:求随机数函数: function getRandom(min,max){ var random = Math.random()*(max-min)+min; //向下取整 random = Math.floor(random); //返回结果 return random; } 函数:删除节点 function removeImg(obj){ document.body.removeChild(obj); } 动态创建表格: var json='[{"ename":"Tom", "salary":10000, "age":25},{"ename":"John", "salary":11000, "age":28},{"ename":"Mary", "salary":12000, "age":25}]'; var emps=eval(json); var table=document.createElement('table'); var thead=document.createElement('thead'); var tr=document.createElement('tr'); for(var key in emps[0]){ var th=document.createElement('th'); th.innerHTML=key; tr.appendChild(th); } thead.appendChild(tr); table.appendChild(thead); //创建tbody var tbody=document.createElement('tbody'); table.appendChild(tbody); for(var i=0;i var tr=document.createElement('tr'); for(var key in emps[i]){ var td=document.createElement('td'); td.innerHTML=emps[i][key]; tr.appendChild(td); } tbody.appendChild(tr); }
document.getElementById('data').appendChild(table);
一次性定时器:setTimeout 清除一次性定时器用clearTimeout
var timer=setTimeout(show,3000); btn1.onclick=function(){ clearTimeout(timer); } 永久性定时器:setInterval 清除永久性定时器用clearInterval
var times=setInterval(print,1000); btn2.onclick=function(){ clearInterval(times); }
万年历:
1 2 3 4
5
6
7
8
9
10
11
12
Date 对象用于处理日期和时间。
创建 Date 对象的语法:
var myDate=new Date();
Date对象的方法:
Date() //返回当日的日期和时间
getDate() //从 Date 对象返回一个月中的某一天 (1 ~ 31)
getDay() //从 Date 对象返回一周中的某一天 (0 ~ 6)
getMonth() //从 Date 对象返回月份 (0 ~ 11)
getFullyare //从 Date 对象以四位数字返回年份
getHours() //返回 Date 对象的小时 (0 ~ 23)
getMinutes() //返回 Date 对象的分钟 (0 ~ 59)
getSeconds() //返回 Date 对象的秒数 (0 ~ 59)
getMilliseconds() //返回 Date 对象的毫秒(0 ~ 999)
等等有很多对象方法API,可以去w3school官网查找学习
date示例如下: JavaScript代码块
function time() {
var a = new Date(); //获取当前时间
var year = a.getFullYear(); //年
var month = a.getMonth(); //月
var dat = a.getDate(); //日
var day = a.getDay(); //周
var hour = a.getHours(); //时
var min = a.getMinutes(); //分
var sec = a.getSeconds(); //秒
document.write('现在时间' + year + '年' + month + '月' + dat + '日,星期' + day + '\t' + hour + '时' + min + '分' + sec + '秒'); //最后拼接在一块
}
time(); //调用
效果:
当然这个效果是静态的效果并不会动的效果,如果你想要附加给他走起来的效果的得用到定时器,定时器分为:一次定时器setTimeout、永久定时器setInterval;
永久定时器setInterval写法: 注释:设置一个定时器,到达指定时间执行我们的操作,然后定时器并没有停止,以后每隔这么长时间,都重新执行我们的操作
setInterval(function() {
var a = new Date(); //获取当前时间
var year = a.getFullYear(); //年
var month = a.getMonth(); //月
var dat = a.getDate(); //日
var day = a.getDay(); //周
var hour = a.getHours(); //时
var min = a.getMinutes(); //分
var sec = a.getSeconds(); //秒
document.getElementById('date').innerHTML = '现在时间' + year + '年' + month + '月' + dat + '日,星期' + day + '\t' + hour + '时' + min + '分' + sec + '秒'; //最后拼接在一块,输出到指定地点
})
一次定时器setTimeout写法: 注释:设置一个定时器,到达指定的时间,执行我们的操作,定时器停止
setTimeout(function() {
var a = new Date(); //获取当前时间
var year = a.getFullYear(); //年
var month = a.getMonth(); //月
var dat = a.getDate(); //日
var day = a.getDay(); //周
var hour = a.getHours(); //时
var min = a.getMinutes(); //分
var sec = a.getSeconds(); //秒
document.getElementById('date').innerHTML = '现在时间' + year + '年' + month + '月' + dat + '日,星期' + day + '\t' + hour + '时' + min + '分' + sec + '秒'; //最后拼接在一块
},2000) //2000意思就是两秒之后执行操作
一、 认识正则 1、 什么是正则 正则就是一个事物的规则。什么是正则表达式,就是描述事物规则的式子。 2、 正则能帮我们干什么? 1)做表单验证 2)制作QQ表情 3)制作小偷程序 正则就是做字符串的查找、匹配、分割、替换。是字符串方法的升级版。 3 、正则难学吗? 这是一个邮箱的正则表达式 \w+@\w+(.com|.cn|.org|.net){1,3} 对不懂正则规则的人,正则就是一堆乱七八糟的字符串就,正则像医生的字,道士的符,就是天书。只要学习这个规则,其实正则对我们来说就非常简单了。正则非常好学。 4 如何学习正则 学好正则只需要学两个东西 1) 正则表达式:就是描述事物规则的式子 2) 正则函数:没有正则函数,正则表达式就是一堆乱七八糟的字符串,正则表达式要起作用,必须和正则函数一起使用。 二 、正则的基本语法 1 声明一个正则对象 ①用正则构造函数 var patt = new RegExp(‘正则表达式’,’修饰符’); ②使用正则字面量的方式 var patt = /正则表达式(描述事物规则的字符串)/修饰符; 2 正则表达式 正则表达式分四块内容,只要学好这四块,你就可描述任务事物的规则了。 如我们可以定义一个电话号码的规则表达式,这样就可以检查一个字符串是否是电话号码了。 ① 定界符 ,正则中的定界符就是定义正则表达式边界的。符号是 / /,作用就是告诉程序,定界符内的是正则表达式,要按照正则的语法规则进行解析。 ② 原子,自然界中的原子就是组成物质的最小单位。正则中的原子是组成正则表达式的最小单位。原子分三种 (1) 普通原子 (2) 转义符号、特殊符号,常见的转义符号有\n 换行 \r回车 \t 水平制表符 /输出定界符 \”输出双引号。。。。。。 (3) 通配符 \d 表示任意一位数字0-9 \D任意一位非数字 非0-9 \w 表示任意一位数字、字母下划线 \W任意一位非数字字母下划线 \s 表示任意一位空白字符 如空格 \S任意一位非空白字符 \b 表示一个单词的边界 空格 \B表示非单词边界 非空格 ③ 元字符 元字符是修饰原子的,不能单独单独存在 (1)[] 从多个原子中选一个 (2) ^ 如果是出现在[]中,表示取反的意思,一定不能有 (3) ^ 如果出现在正则表达式开头,表示以xxx开头的意思 (4) / 字符串要匹配此表达式,必须满足三个条件 1 字符串以a开头 2 字符串以a结尾 3 字符串只能含一个a /^ a+$/ 字符串要匹配此表达式,必须满足三个条件 1 字符串以a开头 2 字符串以a结尾 3 字符串可以含一个或多个a (5)+ 表示匹配前面的原子一次或多次,大于0次 (6)? 表示匹配前面的原子0次或1次 (7)* 表示匹配前面的原子0次1次或多次,任意次 (8){m} 匹配前面的原子m次 (9){m,} 前面的原子最少出现m次 (10){m,n} 前面的原子最少出现m次,最多出现n次 (11) | 从多分支中选一个 abc|opq|xyz (12) . 表示除了换行符以外的任意符号 (13) .* 匹配任意字符(除换行符)任意多次,这种匹配是贪婪匹配,如果有好几部分满足,取最长符合要求的子串 (14) .*? 不贪婪的匹配任意符号任意多次 (15) ()叫做模式单元 他的几个作用 1 把()中的内容作为整体处理 ab|c a(b|c) 2 ()中的内容会在内存中单独存放一份,方便使用 3通过正则的匹配函数,返回一个数组,数组中下标为0的元素中放的是满足正则规则的子串,下标为1的元素中放的是,第一个()中匹配的内容, 下标为1的元素中放的是,第一个()中匹配的内容,依次类推。 4如果不想匹配括号中的内容 使用(?:) 三元运算符 ④ 修饰符 i 忽略大小写 m 把字符串作为多行对待 g 全局匹配 3 正则函数 分两大类,一类是字符串的正则方法,一类是正则对象的方法 一 字符串的正则方法 string.match() string.search() string.replace() string.split() 二 正则对象的方法 patt.test() patt.exec() patt.complie()
重点、几个例子
点击导航栏内容变
还在打王者LOL呢?国家大事你关心了么? 元芳薛之谦事件你怎么看? 娱乐圈的那点事,潜规则? 淘宝双十一你们是不是又要剁手了?
万年历
1 2 3 4
5
6
7
8
9
10
11
12
js轮播实现
var banner=document.querySelectorAll('.banner>ul>li>a>img'); var point=document.querySelectorAll('.banner>p>span'); var timer; var i=0;
function play(){
timer=setInterval(function(){
banner[i].style.display='none';
point[i].style.background='#8b8b8b';
i++;
if(i>1){
i=0;
}
banner[i].style.display='block';
point[i].style.background='#ff8800
},2000)
}
play();
//给box添加鼠标移入移出事件
var box=document.querySelector('.banner>ul');
box.onmouseover=function(){
clearInterval(timer);
}
box.onmouseout=function(){ play(); }
//点击圆点切换
for(var j=0;j point[j].index=j; point[j].onclick=function(){ var nu=this.index; for(var b=0;b banner[b].style.display='none'; point[b].style.background='#8b8b8b'; } banner[nu].style.display='block'; point[nu].style.background="#ff8800"; } }
....................................................收工
你可能感兴趣的:(js总结(!!!))
Node.js常用知识
UnityGxGameLab+
node.js javascript 前端
Nodejs总结Node.js基础知识,便于定期回顾1、fs文件写入1、require(‘fs’)2、fs.writeFile()3、fs.appendFile()4、fs.createwriteStream()//流式写入ws.write()文件读取1、fs.readFile(‘’,(err,data)=>{})constfs=require('fs')fs.readFile("D:/Node/
Node.js总结
会飛的魚,
node.js
文章目录node的知识点1.node的外层有一个函数2.node全局global3.node的事件循环4.Buffer缓冲器5.简单文件的读写6.流式文件的读写7.原生服务器8.mysql数据库语句9.mysql数据库的连接10.mogodb数据库连接11.express服务器12.http协议简介13.express中的request和response14.中间键的简介15.常用的第三方中间件1
grid---选择数据功能!!
Tang_Monk
Vol低代码开发框架 vue.js vscode c#
目录总结一、步骤1.第一步-新建modelBody组件2.第二步-编写表的扩展js总结新建modelBody组件,编写表的扩展js一、步骤1.第一步-新建modelBody组件复制如下代码修改相关内容编号名称型号搜索添加选择的数据关闭importVolBoxfrom"@/components/basic/VolBox.vue";importVolTablefrom"@/components/bas
12个强大的 JavaScript 动画库,可帮助你提升用户体验
夜空孤狼啸
前端技巧方法 JavaScript javascript ux 开发语言
文章目录12个强大的JavaScript动画库,可帮助你提升用户体验1.Anime.js2.Lottie3.Velocity4.RoughNotation5.Popmotion6.Vivus7.GSAP:GreenStockingAnimationPlatform8.Three.js9.ScrollReveal10.Barba.js11.Mo.js12.Typed.js总结12个强大的JavaSc
Webgl开发输入框兼容问题及开发注意的问题
不为誰而做的程序员_
Unity问题记录 unity javascript 游戏引擎 webgl
Webgl开发输入框【InputField组件】输入中文说明解决方案一通过重写原生的InputField组件来兼容解决方案二通过打包后自己定义JS总结说明 最近一直再搞WEBGL平台的项目,花了好几天解决InputField组件输入中文的问题。在这记录一下避免再次入坑!!!解决方案一通过重写原生的InputField组件来兼容这个方法是在网上找到重写InputField组件的方法来解决。使用也很
前端框架前置学习Node.js(2)npm使用,Node.js总结
Flyoungbuhu
前端框架 学习 node.js
npm-软件包管理器定义npm是Node.js标准的软件包管理器npm仓库中包含大量软件包,使其成为世界上最大的单一语言代码仓,并且可以确定几乎可用于一切的软件包最初是为了下载和管理Node.js包依赖的方式,但其现在已成为前端JavaScript中使用的工具使用:1.初始化清单文件:npminit-y(得到package.json文件,有则略过此命令)2.下载软件包:npmi软件包名称3.使用软
vue怎么显示后台返回的svg图片,svg-captcha生成验证码返给前端,koa+vue+svg-captcha
longlongago~~
node.js vue
提示:html可以直接显示svg图片,但是vue会把后台返回的svg数据当成字符串进行处理,需要把svg数据解析成svg标签,这就需要用到v-html了文章目录前言一、vue如何显示svg二、使用步骤1.vue中Login.vue2.vue中axios.js3.koa中routes.js4.koa中app.js总结前言vue怎么显示后台返回的svg图片,svg-captcha生成验证码返给前端,k
koa踩坑路之--图片上传elementUI中el-upload组件action方式上传
longlongago~~
node.js vue
提示:elementUI中el-upload组件action方式上传文章目录前言一、formData上传图片二、使用步骤1.vue中HelloWorld.vue2.vue中axios.js3.koa中routes.js4.koa中app.js总结前言学习多种方式上传图片—学习文档,大神绕行一、formData上传图片示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的
HTML+CSS+JS总结
想躺平的咸鱼
html javascript css
HTML一、HTML概念和结构1、概念:HTML是超文本标记语言是一种用于创建网页的标准标记语言。可以使用HTML来建立自己的WEB站点,HTML运行在浏览器上,由浏览器来解析。2.结构:head包裹着的头部部分这是主体部分hello,world!二.HTML标签标签的概念一个html文件是由标签和元素组成的HTML标签是由尖括号包围的关键词,比如HTML标签通常是成对出现的,比如和标签对中的第一
JS模块化规范之AMD
阿布爱可乐
前端 javascript 前端 开发语言
JS模块化规范之AMD模块规范AMD(AsynchronousModuleDefinition)概念基本语法AMD实现未使用AMD规范使用require.js总结模块规范AMD(AsynchronousModuleDefinition)概念AsynchronousModuleDefintionCommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。AMD规范则是非同步加载
angularjs总结
跌倒的小黄瓜
AngularJS是一款由Google公司开发维护的前端MVC框架,其克服了HTML在构建应用上的诸多不足,从而降低了开发成本提升了开发效率。特点AngularJS与我们之前学习的jQuery是有一定的区别的,jQuery更准确来说只一个类库(类库指的是一系列函数的集合)以DOM做为驱动(核心),而AngularJS则一个框架(诸多类库的集合)以数据和逻辑做为驱动(核心)。框架对开发的流程和模式做
前端面试题js总结
梦醒了_该正视自己了
javascript 前端 开发语言
实现JavaScript继承原型链继承:这招有点粗糙,适合对象简单的情况。就像大家共用一把刷子一样,得注意别乱动,不然会影响其他人。构造继承:挺直截了当的,通过在子类构造函数中调用父类构造函数。不过有点不足,父类原型上的方法没法继承。实例继承:就是把父类实例当成子类的“学习资料”。方便点,可以调用父类方法,但也只能是“实例方法”。拷贝继承:这就有点暴力,直接把父类的东西都拷贝给子类。适合小规模的数
js总结
清幽子
笔记
js常用事件javaScript是一种基于时间驱动型的编程语言:1.1事件和事件句柄的关系:click,onclick1.2事件句柄通常是某个标签的属性1.3事件发生之后,代码才会执行,事件不发生,不会执行JS代码1.4常见的事件如下:事件事件句柄用法bluronblur元素失去焦点。focusonfocus元素获得焦点。changeonchange域的内容被改变。clickonclick当用户点
初识NODEJS总结
前端千帆
nodejs
初识NODEJS总结初识NODEJS总结一、准备工作命令行窗口二、初识NODEJS三、模块、包和npm1.模块(module)1.what2.why3.how2.包(package)3.npm四、文件系统1.Buffer(缓冲区)2.fs模块3.文件写入4.文件读取初识NODEJS总结一、准备工作命令行窗口命令行窗口,又称小黑屏、CMD窗口、终端、shell常用指令dir列出当前目录下的所有文件c
uniapp H5、小程序、APP端自定义不同运行环境(开发、测试、生产)、自定义条件编译平台、以及动态修改manifest.json值讲解
pixle0
uniapp uni-app 小程序 json
文章目录前言一、自定义条件编译平台是什么?二、新增自定义条件编译平台三、动态设置服务器请求地址四、动态修改manifest.json1.根目录新增文件modifyManifest.js2.vue.config.js引入modifyManifest.js总结示例代码前言企业项目开发流程上一般都要配置多个运行环境(不同的服务器请求地址)。不同环境有不同用途,主要用于区分开发、测试、上线,对应的环境称为
js总结
sinat_33457218
javascript javascript
一、事件1-261、onmousedown定义:onmousedown事件会在鼠标按键被按下时发生2、onmouseup定义:onmouseup事件会在鼠标按键被松开时发生3、onmousemove定义:onmousemove事件会在鼠标指针移动时发生支持该事件的js对象:document但是onmousemove默认情况下没有任何对象的一个事件;因为鼠标移动频繁发生。4、onmouseover定
JS总结(if、switch、do while、while、for语句)以及break continue return的区别
星灭233
JS 知识总结 js javascript
文章目录一、选择(分支)结构:1、if...else语句(条件分支语句):2、switch语句二、循环结构3、while循环语句4、dowhile循环语句5、for循环语句三、循环控制语句循环控制语句之break:循环控制语句之continue:循环控制语句之return:什么是语句?概念:在JS中表达式是短语,语句就是整句或命令。作用:表达式是用来计算个值的,语句是用来发送某条指令。特征:用分号
Web全栈架构师(二)——React学习笔记(3)
讲文明的喜羊羊拒绝pua
前端框架
React学习笔记项目实战资源页面布局用户登录认证商品列表加购物车界面React原理React核心APIJSX自定义实现Reactkreact.jskreact-dom.jskvdom.js总结PureComponentsetStatediff算法diff策略elementdiff项目实战资源AntDesignPro使用:https://pro.ant.design/docs/getting-st
PDFObject.js
负15厘米的爱
使用pdfobject.js实现在线浏览PDFhttps://blog.csdn.net/beyond__devil/article/details/78826826PDFobject.js官方api简易说明https://blog.csdn.net/badgirl_hong/article/details/53139478PDF预览之PDFObject.js总结https://blog.csdn
js总结
陈元1
1.number+string把number转换为string做的字符串拼接2.number+boolean把boolean转为number3.number+underfined结果为NaN(NaN是number类型)4.两个布尔值做运算的true会换为false回转为0以上的叫做隐式转化显示转换/强制转化1.tostring()把任意数据类型转换为字符串类型2.parseInt()转换为整数(不
2018-08-12
My丿飞
一、js总结一js引入js内部执行js外部引入js变量varname="哦";name是变量名变量名前不能加特殊符号和数字值类型原始值Number、String、Boolean、undefined、null数字:unmbervara=1;varb=0.2;字符串:stringvara=“asdjio”;varb='12';只要带双引号或单引号的就是字符串布尔:boolean只有两个值true真fa
每天一个小知识点13(Angularjs总结一)
ly285497997
Angularjs总结一什么是Angularjs完全使用JavaScript编写的客户端技术。同其他历史悠久的Web技术(HTML、CSS和JavaScript)配合使用,使Web应用开发比以往更简单、更快捷。AngularJS主要用于构建单页面Web应用。它通过增加开发人员和常见Web应用开发任务之间的抽象级别,使构建交互式的现代Web应用变得更加简单。AngularJS使开发Web应用变得
使用NVM安装NodeJS总结
mitoo55
nvm node node.js
一、安装nvm下载地址:https://github.com/coreybutler/nvm-windows/releases,目前安装版本为1.1.9注意:1、如果之前电脑中安装了node建议卸载,不卸载也行,安装的时候会提示你是否使用已安装的版本。2、安装前,需确保Symlink文件夹不存在,否则安装看似成功,nvm无法切换版本。3、nodejs文件夹最好在nvm里面,方便设置环境变量。4、n
SSR服务器端渲染(Nuxt.js总结和豆瓣电影项目)
黄庚中
二十二.SSR 十七.React
一.前言开始之前,我们先了解一下普通前端渲染过程:而加了SSR的服务器渲染过程:明显请求次数变少了,速度更快.那接下来隆重介绍服务端渲染什么是服务器端渲染前端渲染:html页面作为静态文件存在,前端请求时后端不对该文件做任何内容上的修改,直接以资源的方式返回给前端,前端拿到页面后,根据写在html页面上的js代码,对该html的内容进行修改。服务端渲染:前端发出请求后,后端在将HTML页面返回给前
SSR服务器端渲染(Next.js总结和豆瓣电影项目)
黄庚中
二十二.SSR 十七.React
一.前言先解释一下Nuxt.js和Next.js虽然只有一个字母之差,但它们是不同的两个服务端渲染框架.什么是Next.js?引用Next中文官网的一句话:Next.js是一个轻量级的React服务端渲染应用框架。Next.js带来了很多好的特性:默认服务端渲染模式,以文件系统为基础的客户端路由(注意:没有专门路由)代码自动分割使页面加载更快以webpack的热替换(HMR)为基础的开发环境使用R
vant-vue 移动端列表下拉刷新下拉加载更多
周 、小闹
vue.js javascript 前端
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、HTML二、JS总结提示:以下是本篇文章正文内容,下面案例可供参考一、使用步骤html代码如下(示例):{{item.name}}{{item.createTime}}JS代码如下(示例):loading:false,finished:false,refreshing:false,DisplayList:[],num:1,
安装npm包的时候报errno: -4048的错。
抡锤最忌讳喊停
Error:EPERM:operationnotpermitted,unlink'D:\5.1.1\angular\node_modules\.staging\@angular\compiler-4b6dd6eb\fesm5\compiler.js总结一下探索出来的解决方案:1.清npm缓存:npmcacheclean--force2.或者用管理员身份打开的命令行安装
js总结(8.数组 02)
隔壁宿舍的王先生
数组024.数组的遍历遍历:一次访问数组中的每个元素索引数组:下标为数字的数组for(vari=0;i
js if()语句后加与不加{}的区别
写完这行代码打球去
# js 编程基础
话不多说直接上图:浏览器控制台执行语句可以看到:if(true)的时,下面的代码都会执行if(false)时,if语句后面最近的一条语句被跳过执行了;MDN官方截图截图那么,在做项目中到底可不可以省略呢?其实在很多插件中都有这种用法,例如随便找一个vue-router.js总结当if(condition)后只有一条语句时,可以直接省略{},但如果有很多语句执行,最好还是加上块语句({…})将这些语
Node.js /webpack DAY6
是柚柚耶
node.js 前端
一、Node.js入门1.什么是Node.js?2.什么是前端工程化?3.Node.js为何能执行JS?4.Node.js安装5.使用Node.js总结6.fs模块-读写文件/***目标:基于fs模块读写文件内容*1.加载fs模块对象*2.写入文件内容*3.读取文件内容*///1.加载fs模块对象constfs=require('fs')//2.写入文件内容fs.writeFile('./text
安装数据库首次应用
Array_06
java oracle sql
可是为什么再一次失败之后就变成直接跳过那个要求
enter full pathname of java.exe的界面
这个java.exe是你的Oracle 11g安装目录中例如:【F:\app\chen\product\11.2.0\dbhome_1\jdk\jre\bin】下的java.exe 。不是你的电脑安装的java jdk下的java.exe!
注意第一次,使用SQL D
Weblogic Server Console密码修改和遗忘解决方法
bijian1013
Welogic
在工作中一同事将Weblogic的console的密码忘记了,通过网上查询资料解决,实践整理了一下。
一.修改Console密码
打开weblogic控制台,安全领域 --> myrealm -->&n
IllegalStateException: Cannot forward a response that is already committed
Cwind
java Servlets
对于初学者来说,一个常见的误解是:当调用 forward() 或者 sendRedirect() 时控制流将会自动跳出原函数。标题所示错误通常是基于此误解而引起的。 示例代码:
protected void doPost() {
if (someCondition) {
sendRedirect();
}
forward(); // Thi
基于流的装饰设计模式
木zi_鸣
设计模式
当想要对已有类的对象进行功能增强时,可以定义一个类,将已有对象传入,基于已有的功能,并提供加强功能。
自定义的类成为装饰类
模仿BufferedReader,对Reader进行包装,体现装饰设计模式
装饰类通常会通过构造方法接受被装饰的对象,并基于被装饰的对象功能,提供更强的功能。
装饰模式比继承灵活,避免继承臃肿,降低了类与类之间的关系
装饰类因为增强已有对象,具备的功能该
Linux中的uniq命令
被触发
linux
Linux命令uniq的作用是过滤重复部分显示文件内容,这个命令读取输入文件,并比较相邻的行。在正常情 况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如 果输入文件用“- ”表示,则从标准输入读取。
AD:
uniq [选项] 文件
说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个
正则表达式Pattern
肆无忌惮_
Pattern
正则表达式是符合一定规则的表达式,用来专门操作字符串,对字符创进行匹配,切割,替换,获取。
例如,我们需要对QQ号码格式进行检验
规则是长度6~12位 不能0开头 只能是数字,我们可以一位一位进行比较,利用parseLong进行判断,或者是用正则表达式来匹配[1-9][0-9]{4,14} 或者 [1-9]\d{4,14}
&nbs
Oracle高级查询之OVER (PARTITION BY ..)
知了ing
oracle sql
一、rank()/dense_rank() over(partition by ...order by ...)
现在客户有这样一个需求,查询每个部门工资最高的雇员的信息,相信有一定oracle应用知识的同学都能写出下面的SQL语句:
select e.ename, e.job, e.sal, e.deptno
from scott.emp e,
(se
Python调试
矮蛋蛋
python pdb
原文地址:
http://blog.csdn.net/xuyuefei1988/article/details/19399137
1、下面网上收罗的资料初学者应该够用了,但对比IBM的Python 代码调试技巧:
IBM:包括 pdb 模块、利用 PyDev 和 Eclipse 集成进行调试、PyCharm 以及 Debug 日志进行调试:
http://www.ibm.com/d
webservice传递自定义对象时函数为空,以及boolean不对应的问题
alleni123
webservice
今天在客户端调用方法
NodeStatus status=iservice.getNodeStatus().
结果NodeStatus的属性都是null。
进行debug之后,发现服务器端返回的确实是有值的对象。
后来发现原来是因为在客户端,NodeStatus的setter全部被我删除了。
本来是因为逻辑上不需要在客户端使用setter, 结果改了之后竟然不能获取带属性值的
java如何干掉指针,又如何巧妙的通过引用来操作指针————>说的就是java指针
百合不是茶
C语言的强大在于可以直接操作指针的地址,通过改变指针的地址指向来达到更改地址的目的,又是由于c语言的指针过于强大,初学者很难掌握, java的出现解决了c,c++中指针的问题 java将指针封装在底层,开发人员是不能够去操作指针的地址,但是可以通过引用来间接的操作:
定义一个指针p来指向a的地址(&是地址符号):
Eclipse打不开,提示“An error has occurred.See the log file ***/.log”
bijian1013
eclipse
打开eclipse工作目录的\.metadata\.log文件,发现如下错误:
!ENTRY org.eclipse.osgi 4 0 2012-09-10 09:28:57.139
!MESSAGE Application error
!STACK 1
java.lang.NoClassDefFoundError: org/eclipse/core/resources/IContai
spring aop实例annotation方法实现
bijian1013
java spring AOP annotation
在spring aop实例中我们通过配置xml文件来实现AOP,这里学习使用annotation来实现,使用annotation其实就是指明具体的aspect,pointcut和advice。1.申明一个切面(用一个类来实现)在这个切面里,包括了advice和pointcut
AdviceMethods.jav
[Velocity一]Velocity语法基础入门
bit1129
velocity
用户和开发人员参考文档
http://velocity.apache.org/engine/releases/velocity-1.7/developer-guide.html
注释
1.行级注释##
2.多行注释#* *#
变量定义
使用$开头的字符串是变量定义,例如$var1, $var2,
赋值
使用#set为变量赋值,例
【Kafka十一】关于Kafka的副本管理
bit1129
kafka
1. 关于request.required.acks
request.required.acks控制者Producer写请求的什么时候可以确认写成功,默认是0,
0表示即不进行确认即返回。
1表示Leader写成功即返回,此时还没有进行写数据同步到其它Follower Partition中
-1表示根据指定的最少Partition确认后才返回,这个在
Th
lua统计nginx内部变量数据
ronin47
lua nginx 统计
server {
listen 80;
server_name photo.domain.com;
location /{set $str $uri;
content_by_lua '
local url = ngx.var.uri
local res = ngx.location.capture(
java-11.二叉树中节点的最大距离
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class MaxLenInBinTree {
/*
a. 1
/ \
2 3
/ \ / \
4 5 6 7
max=4 pass "root"
Netty源码学习-ReadTimeoutHandler
bylijinnan
java netty
ReadTimeoutHandler的实现思路:
开启一个定时任务,如果在指定时间内没有接收到消息,则抛出ReadTimeoutException
这个异常的捕获,在开发中,交给跟在ReadTimeoutHandler后面的ChannelHandler,例如
private final ChannelHandler timeoutHandler =
new ReadTim
jquery验证上传文件样式及大小(好用)
cngolon
文件上传 jquery验证
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery1.8/jquery-1.8.0.
浏览器兼容【转】
cuishikuan
css 浏览器 IE
浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同
问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。
碰到频率:100%
解决方案:CSS里 *{margin:0;padding:0;}
备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符*来设
Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
daizj
shell $# $? 特殊变量
前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。例如,$ 表示当前Shell进程的ID,即pid,看下面的代码:
$echo $$
运行结果
29949
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个
程序设计KISS 原则-------KEEP IT SIMPLE, STUPID!
dcj3sjt126com
unix
翻到一本书,讲到编程一般原则是kiss:Keep It Simple, Stupid.对这个原则深有体会,其实不仅编程如此,而且系统架构也是如此。
KEEP IT SIMPLE, STUPID! 编写只做一件事情,并且要做好的程序;编写可以在一起工作的程序,编写处理文本流的程序,因为这是通用的接口。这就是UNIX哲学.所有的哲学真 正的浓缩为一个铁一样的定律,高明的工程师的神圣的“KISS 原
android Activity间List传值
dcj3sjt126com
Activity
第一个Activity:
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import a
tomcat 设置java虚拟机内存
eksliang
tomcat 内存设置
转载请出自出处:http://eksliang.iteye.com/blog/2117772
http://eksliang.iteye.com/
常见的内存溢出有以下两种:
java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: Java heap space
------------
Android 数据库事务处理
gqdy365
android
使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,如果没有调用setTransactionSuccessful() 方法则回滚事务。事
Java 打开浏览器
hw1287789687
打开网址 open浏览器 open browser 打开url 打开浏览器
使用java 语言如何打开浏览器呢?
我们先研究下在cmd窗口中,如何打开网址
使用IE 打开
D:\software\bin>cmd /c start iexplore http://hw1287789687.iteye.com/blog/2153709
使用火狐打开
D:\software\bin>cmd /c start firefox http://hw1287789
ReplaceGoogleCDN:将 Google CDN 替换为国内的 Chrome 插件
justjavac
chrome Google google api chrome插件
Chrome Web Store 安装地址: https://chrome.google.com/webstore/detail/replace-google-cdn/kpampjmfiopfpkkepbllemkibefkiice
由于众所周知的原因,只需替换一个域名就可以继续使用Google提供的前端公共库了。 同样,通过script标记引用这些资源,让网站访问速度瞬间提速吧
进程VS.线程
m635674608
线程
资料来源:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001397567993007df355a3394da48f0bf14960f0c78753f000 1、Apache最早就是采用多进程模式 2、IIS服务器默认采用多线程模式 3、多进程优缺点 优点:
多进程模式最大
Linux下安装MemCached
字符串
memcached
前提准备:1. MemCached目前最新版本为:1.4.22,可以从官网下载到。2. MemCached依赖libevent,因此在安装MemCached之前需要先安装libevent。2.1 运行下面命令,查看系统是否已安装libevent。[root@SecurityCheck ~]# rpm -qa|grep libevent libevent-headers-1.4.13-4.el6.n
java设计模式之--jdk动态代理(实现aop编程)
Supanccy2013
java DAO 设计模式 AOP
与静态代理类对照的是动态代理类,动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java 反射机制可以生成任意类型的动态代理类。java.lang.reflect 包中的Proxy类和InvocationHandler 接口提供了生成动态代理类的能力。
&
Spring 4.2新特性-对java8默认方法(default method)定义Bean的支持
wiselyman
spring 4
2.1 默认方法(default method)
java8引入了一个default medthod;
用来扩展已有的接口,在对已有接口的使用不产生任何影响的情况下,添加扩展
使用default关键字
Spring 4.2支持加载在默认方法里声明的bean
2.2
将要被声明成bean的类
public class DemoService {