web前端--知识点,笔记叠加(javascript,jquery,html5+css3.0,ajax)
用原生js直接派发一个事件
如:300毫秒后,直接派发一个resize事件
setTimeout(()=> {
window.dispatchEvent(new Event('resize'))
}, 300)
css3渐变应用linear-gradient
z-index: 990;
height: 100%;
width: 100%;
position: absolute;
left: -20px;
background: linear-gradient(to bottom, #e82424, rgba(255,255,255,0), rgba(255,255,255,0), #337ab;
background: -webkit-linear-gradient(to bottom, #e82424, rgba(255,255,255,0), rgba(255,255,255,0), #337ab;
background: -moz-linear-gradient(to bottom, #e82424, rgba(255,255,255,0), rgba(255,255,255,0), #337ab;
background: -ms-linear-gradient(to bottom, #e82424, rgba(255,255,255,0), rgba(255,255,255,0), #337ab;
图例为上下渐变,也可设为左右渐变,改为 left 即可
linear-gradient(to left, #fff, rgba(255,255,255,0), rgba(255,255,255,0), #fff;
html5屏幕旋转事件 onorientationchange
// 判断屏幕是否旋转 function orientationChange() {
switch (window.orientation) {
case 0:
alert("肖像模式 0,screen-width: " + screen.width + "; screen-height:" + screen.height);
break;
case -90:
alert("左旋 -90,screen-width: " + screen.width + "; screen-height:" + screen.height);
break;
case 90:
alert("右旋 90,screen-width: " + screen.width + "; screen-height:" + screen.height);
break;
case 180:
alert("风景模式 180,screen-width: " + screen.width + "; screen-height:" + screen.height);
break;
}
}; // 添加事件监听 addEventListener('load', function () { //orientationChange();
window.onorientationchange = orientationChange; // 如果是app应用,正常可能还会结合window.onresize
// window.onorientationchange = window.onresize = function() {你要做什么的代码}
});
页面实现ios原生流畅滚动加回弹效果实现代码
.parent {
-webkit-backface-visibility: hidden;
-webkit-transform: translate3d(0, 0, 0);
} .parent ul {
-webkit-overflow-scrolling: touch;
overflow-scrolling: touch;
overflow: auto;
}
滚动条美化代码
.listWrap::-webkit-scrollbar-track {
background-color: transparent
} .listWrap::-webkit-scrollbar {
width: 4px
} .listWrap::-webkit-scrollbar-thumb {
border-radius: 4px;
background-color: #ccc
} .listWrap::-webkit-scrollbar-thumb:hover {
background-color: #aaa
}
js的隐含参数(arguments,callee,caller)使用方法
arguments 该对象代表正在执行的函数和调用它的函数的参数。
Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。
Arguments是一个类似数组但不是数组的对象,//alert(arguments instanceof Object);
说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。
还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表,而且不能显式创建 arguments对象。
arguments对象只有函数开始时才可用。
function ArgTest(a, b){
this.numargs = arguments.length; // 获取被传递实参参数的数值。
this.expargs = ArgTest.length; // 获取期望形参参数的数值。
} new ArgTest(888,'sfsd',6666)
//得
ArgTest {numargs: 3, expargs: 2}
arguments.callee
arguments.callee
返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。callee属性是
arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性,
arguments.length是实参长度,arguments.callee.length是形参长度,由此可以判断调用时形参长度是否和实参长度一致。 function calleeLengthDemo(arg1, arg2) {
console.log(arguments.length)
//arguments.callee()//会陷入死循环无限调用自身calleeLengthDemo
}
functionName.caller
caller
返回一个对函数的引用,该函数调用了当前函数。
functionName.caller
functionName 对象是所执行函数的名称。
说明
对于函数来说,caller属性只有在函数执行时才有定义。
如果函数是由顶层调用的,那么 caller包含的就是 null function callerDemo() {
if (callerDemo.caller) {
var a= callerDemo.caller.toString();
alert(a);
} else {
alert("this is a top function");
}
}
function handleCaller() {
callerDemo();
}
//直接在外面调用callerDemo()则caller为null
JavaScript构造函数详解
function
Person( name){
this
.name =name;
}
var
p1=
new
Person(
'John'
);
等同于:
function
person(name ){
Object obj =
new
Object();
obj.name =name;
return
obj;
}
var
p1= person(
"John"
);
.因为构造函数也是函数,所以可以直接被调用,但是它的返回值为undefine,此时构造函数里面的this对象等于全局this对象。this.name其实就是创建一个全局的变量name。
在严格模式"use strict";下,当你补通过new 调用Person构造函数会出现错误。
也可以在构造函数中用Object.defineProperty()方法来帮助我们初始化:
function
Person( name){
Object.defineProperty(
this
,
"name"
{
get :
function
(){
return
name;
},
set:
function
(newName){
name =newName;
},
enumerable :
true
,
//可枚举,默认为false
configurable:
true
//可配置
});
}
var
p1=
new
Person(
'John'
);
6.在构造函数中使用原型对象
//比直接在构造函数中写的效率要高的多
Person.prototype.sayName=
function
(){
console.log(
this
.name);
};
但是如果方法比较多的话,大多人会采用一种更简洁的方法:直接使用一个对象字面形式替换原型对象,如下:
Person.prototype ={
sayName :
function
(){
console.log(
this
.name);
},
toString :
function
(){
return
"[Person "
+
this
.name+
"]"
;
}
};
这种方式非常流行,因为你不用多次键入Person.prototype,但有一个副作用你一定要注意:
使用字面量形式改写了原型对象改变了构造函数的属性,因此他指向Object而不是Person。这是因为原型对象具有一个constructor属性,这是其他对象实例所没有的。当一个函数被创建时,它的prototype属性也被创建,且该原型对象的constructor属性指向该函数。当使用对象字面量形式改写原型对象时,其constructor属性将被置为泛用对象Object.为了避免这一点,需要在改写原型对象的时候手动重置constructor,如下:
Person.prototype ={
constructor :Person,
sayName :function(){
console.log(this.name);
},
toString :function(){
return
"[Person "
+ this.name+
"]"
;
}
};
再次测试:
p1.constructor===Person
true
p1.constructor===Object
false
p1 instanceof Person
true
语法:
Object.defineProperty(obj, prop, descriptor)
参数说明:
obj:必需。目标对象
prop:必需。需定义或修改的属性的名字
descriptor:必需。目标属性所拥有的特性针对属性,我们可以给这个属性设置一些特性,比如是否只读不可以写;是否可以被for..in或Object.keys()遍历。
给对象的属性添加特性描述,目前提供两种形式:数据描述和存取器描述。
Object.defineProperty(obj,"newKey",{
value:"hello",
writable:true,
enumerable:true,
configurable:true
});
console.log( obj.newKey ); //hello
设置的特性总结:
value: 设置属性的值
writable: 值是否可以重写。true | false
enumerable: 目标属性是否可以被枚举。true | false
configurable: 目标属性是否可以被删除或是否可以再次修改特性 true | false
存取器描述
当使用存取器描述属性的特性的时候,允许设置以下特性属性:
var obj = {};
Object.defineProperty(obj,"newKey",{
get:function (){} | undefined,
set:function (value){} | undefined
configurable: true | false
enumerable: true | false
});
注意:当使用了getter或setter方法,不允许使用writable和value这两个属性
在特性中使用get/set属性来定义对应的方法。
var obj = {};
var initValue = 'hello';
Object.defineProperty(obj,"newKey",{
get:function (){
//当获取值的时候触发的函数
return initValue;
},
set:function (value){
//当设置值的时候触发的函数,设置的新值通过参数value拿到
initValue = value;
}
});
//获取值
console.log( obj.newKey ); //hello
//设置值
obj.newKey = 'change value';
console.log( obj.newKey ); //change value
注意:get或set不是必须成对出现,任写其一就可以。如果不设置方法,则get和set的默认值为undefined
instanceof 运算符的常规用法
在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 "object"。ECMAScript 引入了另一个 Java 运算符 instanceof 来解决这个问题。
通常来讲,使用 instanceof 就是判断一个实例是否属于某种类型。例如:
清单 1. instanceof 示例
var oStringObject = new String("hello world");
console.log(oStringObject instanceof String); // 输出 "true"
清单 2. instanceof 常规用法
// 判断 foo 是否是 Foo 类的实例
function Foo(){}
var foo = new Foo();
console.log(foo instanceof Foo)//true
清单 3. instanceof 在继承中关系中的用法
// 判断 foo 是否是 Foo 类的实例 , 并且是否是其父类型的实例
function Aoo(){}
function Foo(){}
Foo.prototype = new Aoo();//JavaScript 原型继承
var foo = new Foo();
console.log(foo instanceof Foo)//true
console.log(foo instanceof Aoo)//true
ES6 新API
Object.assign()
const data = Object.assign({}, commonParams, {
songmid: 'sdfs',
platform: 'yqq'
})
new Promise()
if (this.lyric) {
return Promise.resolve(this.lyric)
}
return axios.get(url, {
params: data
}).then((res)=> {
return Promise.resolve(res.data)
})
return new Promise((resolve, reject) => {
originJsonp(url, option, (err, data) => {
if (!err) {
resolve(data)
} else {
reject(err)
}
})
})
class ES6语法-新建一个类
class Song {
constructor({id, mid, singer, name, album, duration, image, url}) {
this.id = id
this.mid = mid
this.singer = singer
this.name = name
this.album = album
this.duration = duration
this.image = image
this.url = url
} getLyric() {
if (this.lyric) {
return Promise.resolve(this.lyric)
} return new Promise((resolve, reject) => {
getLyric(this.mid).then((res) => {
if (res.retcode === ERR_OK) {
//this.lyric = Base64.decode(res.lyric)
resolve(res)
} else {
reject('no lyric')
}
})
})
}
}
调用Song类
return new Song({
id: musicData.songid,
mid: musicData.songmid,
singer: filterSinger(musicData.singer),
name: musicData.songname,
album: musicData.albumname,
duration: musicData.interval,
image: `https://y.gtimg.cn/music/photo_new/T002R300x300M000${musicData.albummid}.jpg?max_age=2592000`,
url: `http://ws.stream.qqmusic.qq.com/${musicData.songid}.m4a?fromtag=46`
})
Array.findIndex(function(value, index, arrayObj){})
function findIndex(list, song) {
return list.findIndex(item=> { //返回符合条件的下标ID
return item.id === song.id
})
}
通过charCodeAt值大小,sort方法给字母按顺序排序
var ret = ['a':'66666','c':'erwwe','b':8220,'d':9999]
ret.sort((a, b)=>{
return a.title.charCodeAt(0) - b.title.charCodeAt(0) // a ,b ,c ,d
})
jsonp数据去多余字符
var ret = 'MusicJsonCallback({"retcode":0,"code":0,"subcode":0,"lyric":"W3RpOuWRiueZveaw"})'
if (typeof ret === 'string') {
var reg = /^\w+\(({[^()]+})\)$/
var matches = ret.match(reg)
if (matches) {
ret = JSON.parse(matches[1])
}
}
字符模版中,函数传值之 --- 转义传值 \' 中间要传的值 \'
_htm +=
'<a id="cutId00'+i+'" href="javascript:;" class="countShowHide ub ub-ac ub-ver"\
onclick="saveIsHas(\''+e.processid+'\')">\
<div class="apply_list_img"><img src="../img/gonePer.png"/></div>\
<p>'+e.name+'</p>\
</a>';
函数传参列表,获取方法arguments的使用
function arg(){
var str = '总共传了'+arguments.length+'个参数\n';
for(var i=0;i<arguments.length;i++){
str += '第'+(i+1)+'个参数值:'+arguments[i]+'\n';
}
alert(str);
}
arg('Mrzou博客','PHP博客','WEB博客');
//总共传了3个参数
//第1个参数值:Mrzou博客
//第2个参数值:PHP博客
//第3个参数值:WEB博客
修改placeholder字体颜色的hack
::-webkit-input-placeholder{color:#d8d8d8;}
:-ms-input-placeholder{color:#d8d8d8;}
::-moz-placeholder{color:#d8d8d8;}
:-moz-placeholder{color:#d8d8d8;}
在textarea文本输入区内想要换行,输入<br/>显示<br/>,输入w3school.com.cn提供的%OD%OA方法也不行,输入/r/n显示/r/n。
解决方法:输入
即可成功换行。
html5 multiple可接受多个值的文件上传字段,可实现select项目列表多选:
<form action="demo_form.asp" method="get">
Select images: <input type="file" name="img" multiple="multiple" />
<input type="submit" />
</form>
<select v-model="selected" multiple>
<option selected>A</option>
<option>B</option>
<option>C</option>
</select>
input type="datetime-local"使用方法
<input type="datetime-local" id="myLocalDate" value="2014-06-01T10:55:33"> <p>点击按钮来获得 datetime 字段的本地日期和时间。</p> <button onclick="myFunction()">试一下</button> <p id="demo"></p> <script>
function myFunction() {
var x = document.getElementById("myLocalDate").value;
document.getElementById("demo").innerHTML = x;
}
</script>
new1、去除IE10+浏览器文本框后面的小叉叉
只需下面一句就ok了
input::-ms-clear {
display: none;
}
设置文本不能被选择
-webkit-user-select: none;/*设置文本不能被选择会倒致苹果系统input无法输入文字*/
一个div元素,要让其可编辑,也就是可读写,contenteditable
属性是最常用方法,做前端的基本上都知道。
但是,知道CSS中有属性可以让普通元素可读写的的同学怕是就少多了。
1、contenteditable 属性规定是否可编辑元素的内容
<p contenteditable="true"
>这是一段可编辑的段落。请试着编辑该文本。</p>
2、主角亮相:user-modify.
支持属性值如下
user-modify: read-only;
user-modify: read-write;
user-modify: write-only;
user-modify: read-write-plaintext-only;
其中,write-only
不用在意,当下这个年代,基本上没有浏览器支持,以后估计也不会有。read-only
表示只读,就是普通元素的默认状态啦。然后,read-write
和read-write-plaintext-only
会让元素表现得像个文本域一样,可以focus
以及输入内容
Q1、-webkit-appearance: none;可移除 input, select, textarea button的默认样式,如select可去掉右边的小箭头
Q2、p:last-of-type{color: #56a79e;} 这样可以找到最后一个指定类型的元素
p:nth-last-of-type(2){color: blue;} 这样可以把倒数第二个<p></p>里面的内容变成蓝色
Q3、用 var img =new Image(); img.src = url;创建一个Image对象,可实现图片的预下载
complete 属性可返回浏览器是否已完成对图像的加载,alert(document.getElementById("img").complete
) 返回 true or false
用jquery $('<img />') set方法可以创建一个img元素,与new相同,也可以实现预加载即可使用onload方法,监测其是否加载完
接下来,贴上一段代码:
// 图片延迟替换函数
not() 从匹配元素集合中删除元素。
is() 根据选择器、元素或 jQuery 对象来检测匹配元素集合,如果这些元素中至少有一个元素匹配给定的参数,则返回 true。
function lazy_img() {
var lazy = $('.lazy-bk');
lazy.each(function () {
var self = $(this),
srcImg = self.attr('data-bk');
$('<img />').on('load', function () {
if (self.is('img')) {
self.attr('src', srcImg)
} else {
self.css({
'background-image': 'url(' + srcImg + ')',
'background-size': 'cover'
})
}
}).attr("src", srcImg);
self.removeClass('lazy-bk');
})
}
1、强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览;
<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
2、iphone设备中的safari私有meta标签,它表示:允许全屏模式浏览;
3、iphone的私有标签,它指定的iphone中safari顶端的状态条的样式;
4、告诉设备忽略将页面中的数字识别为电话号码
<meta content="telephone=no" name="format-detection" />
5、Android中禁止自动识别页面中的邮件地址,iOS中不会自动识别邮件地址;
<meta content="email=no" name="format-detection" />
6、渐变(这个在做按钮的时候很常用)
element{
background-image: -moz-linear-gradient(top, #2288cc, #389de2); /* Firefox */
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #389de2), color-stop(1, #2288cc)); /* Saf4+, Chrome */
}
7、去掉手持设备点击时出现的透明层 (一般会在头部做格式化)
a,button,input{
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-tap-highlight-color: transparent; /* For some Androids */
}
8、当用户点击链接离开本页时,弹出一个消息框:
$(window).unload(function(){
alert("Goodbye!");
});
9、/*循环滚动*/
$("button").click(function(){
$("h3").eq(0).appendTo('p');
$("h3").eq(0).remove();
});
10、//js判断手机访问跳转到手机站 第一种方法
function browserRedirect() {
var sUserAgent= navigator.userAgent.toLowerCase();
var bIsIpad= sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs= sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp= sUserAgent.match(/midp/i) == "midp";
var bIsUc7= sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc= sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid= sUserAgent.match(/android/i) == "android";
var bIsCE= sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM= sUserAgent.match(/windows mobile/i) == "windows mobile";
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
window.location.href= '手机网站地址';
} else {
window.location= '电脑网站地址';
}
}
browserRedirect();
//js判断手机访问跳转到手机站 第二种方法
if(navigator.platform.indexOf('Win32')!=-1){
//pc
//window.location.href="电脑网址";
}else{
//shouji
window.location.href="手机网址";
}
$.parseJSON(response)用于把数据转换成JSON格式;
disabled(禁用)属性设定<input type="submit" disabled />在Js中设定,值为true and false;不用加双引号,作用是禁用某个元素,比如input submit会变成灰色无法点击。
如:document.getElementsByTagName('input')[0].disabled=true/false;
在Jquery中使用:$("#removeButton").removeAttr("disabled");//要变成Enable,JQuery只能这么写
$("#removeButton").attr("disabled","disabled");//再改成disabled
/*html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }此为全网页限制黑白色css代码*/
background:transparent;/*设置背景默认为透明*/
/*用css渐变滤镜实现背景渐变效果和透明效果*/
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cc090909',endColorstr='#cc090909')!important; /* IE6,IE7 */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#cc0f0c0c',endColorstr='#cc0f0c0c')"!important; /* IE8 */
background-image: -moz-linear-gradient(rgba(0,0,0,0.8) 100%, rgba(0,0,0,0.8) 100%); /*firefox*/
background-image: -webkit-linear-gradient(rgba(0,0,0,0.8) 100%, rgba(0,0,0,0.8) 100%); /*chrome*/
/*判断浏览器是否支持 placeholder*/
$(function(){
if(!placeholderSupport()){ // 判断浏览器是否支持 placeholder
$('[placeholder]').focus(function() {
var input = $(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
input.removeClass('placeholder');
}
}).blur(function() {
var input = $(this);
if (input.val() == '' || input.val() == input.attr('placeholder')) {
input.addClass('placeholder');
input.val(input.attr('placeholder'));
input.css({'color':'#555'});
}
}).blur();
};
})
function placeholderSupport() {
return 'placeholder' in document.createElement('input');
}
/*获取浏览器的类型和名称*/
function isIE(){
return navigator.appName.indexOf('Microsoft Internet Explorer')=="-1"?false:true;
}//通过获取浏览器内核来判断浏览器的类型Netscape与Microsoft Internet Explorer---《用于区分火狐内核和IE内核的浏器》
var isIE8=navigator.userAgent.toUpperCase().indexOf("MSIE8.0")=="-1"?false:true;
//判断是否是IE8.0浏览器《这个用法通过获取浏览器的名字清楚的判断是哪种浏览器》用时,----indexOf对大小写敏感,没找到返回值 "-1" --------
/*
下面介绍下 js获取客户端浏览器信息
Navigator 对象包含有关浏览器的信息。js就是通过Navigator的属性获取客户端浏览器信息
Navigator 对象属性:
属性
描述
appCodeName 返回浏览器的代码名。
appMinorVersion 返回浏览器的次级版本。
appName 返回浏览器的名称。
appVersion 返回浏览器的平台和版本信息。
browserLanguage 返回当前浏览器的语言。
cookieEnabled 返回指明浏览器中是否启用 cookie 的布尔值。
cpuClass 返回浏览器系统的 CPU 等级。
onLine 返回指明系统是否处于脱机模式的布尔值。
platform 返回运行浏览器的操作系统平台。
systemLanguage 返回 OS 使用的默认语言。
userAgent 返回由客户机发送服务器的 user-agent 头部的值。
userLanguage 返回 OS 的自然语言设置。
*/
web前端--知识点,笔记叠加(javascript,jquery,html5+css3.0,ajax)的更多相关文章
- Web前端开发神器--WebStorm(JavaScript 开发工具) 8.0.3 中文汉化破解版
WebStorm(JavaScript 开发工具) 8.0.3 中文汉化破解版 http://www.jb51.net/softs/171905.html WebStorm 是jetbrains公司旗 ...
- Web前端学习笔记之JavaScript、jQuery、AJAX、JSON的区别
官网的英文解释: javascript和jQuery有点关系,js是一种脚本语言,主要用于客户端,现在主要用于实现一些网页效果. jquery是js的一个库,你可以认为是对js的补充,提供了很多方便易 ...
- Web前端新人笔记之了解Jquery
与javaScript相比,Jquery更简洁.浏览器的兼容性更强,语法更灵活,对xpath的支持更强大.一个$符就可以遍历文档中各级元素.例:在页面上有一个无序列表,我们需要将所有列表项中的文本内容 ...
- 【前端】Web前端学习笔记【1】
... [2015.12.02-2016.02.22]期间的学习笔记. 相关博客: Web前端学习笔记[2] 1. JS中的: (1)continue 语句 (带有或不带标签引用)只能用在循环中. ( ...
- web前端开发笔记(1)
一.HTML标签书写有哪些规范? 页面编码. 文档声明. 关键字与描述. 行内元素不能包含块级元素. a标签不能嵌套a标签. 标签名和属性必须用小写字母书写,属性必须加引号,标签必须闭合,单标签页必 ...
- 【前端】Web前端学习笔记【2】
[2016.02.22至今]的学习笔记. 相关博客: Web前端学习笔记[1] 1. this在 JavaScript 中主要有以下五种使用场景 在全局函数调用中,this 绑定全局对象,浏览器环境全 ...
- Web前端学习笔记(001)
....编号 ........类别 ............条目 ................明细....................时间 一.Web前端学习笔记 ...
- web前端面试试题总结---javascript篇
JavaScript 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol(创建后独一无二且不可变的 ...
- web前端学习笔记
web前端学习笔记(CSS盒子的定位) 相对定位 使用相对定位的盒子的位置常以标准流的排版方式为基础,然后使盒子相对于它在原本的标准位置偏移指定的距离.相对定位的盒子仍在标准流中,它后面的盒子仍以标准 ...
随机推荐
- Emmet语法
子代:> 如:div>ul>li <div> <ul> <li> </li> </ul> </div> 兄弟: ...
- 测试你是否和LTC水平一样高
Problem Description 大家提到LTC都佩服的不行,不过,如果竞赛只有这一个题目,我敢保证你和他绝对在一个水平线上!你的任务是:计算方程x^2+y^2+z^2= num的一个正整数解. ...
- ava SE ---逻辑运算符
java中有4个逻辑运算符:&与,&& 逻辑与,| 或,|| 逻辑或这些运算符要求操作数和结果值都是布尔型. a&&b a||b 1) 逻辑与& ...
- Android 高级UI设计笔记14:Gallery(画廊控件)之 3D图片浏览
1. 利用Gallery组件实现 3D图片浏览器的功能,如下: 2. 下面是详细的实现过程如下: (1)这里我是测试性代码,我的图片是自己添加到res/drawable/目录下的,如下: 但是开发中不 ...
- ResultSet几种类型的区别
TYPE_FORWARD_ONLY: 默认方式,结果集不能滚动,游标只能向前移动,从第一行移动到最后一行.结果集中的内容与底层数据库生成的结果有关,即生成的结果与查询有关. TYPE_SCROLL_I ...
- JS 获取WEB请求路径
function getRealPath(){ //获取当前网址,如: http://localhost:8083/myproj/view/my.jsp var curWwwPa ...
- UML类图中的六大关系:泛化、实现、依赖、关联、聚合、组合关系
UML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 1.泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并 ...
- 转:自建CDN防御DDoS(1, 2, 3)infoq
本文中提到的要点: 1. 针对恶意流的应对方法与策略.(基本上,中级的,顶级的) 2. IP分类的脚本 3. 前端proxy工具的选择与使用. 4. 开源日志系统的选择与比较. (http:/ ...
- 多线程的练习----妖,等待唤醒,代码重构,lock到condition
× 目录 [1]需求 [2]妖的出现和解决 [3]等待唤醒 [4]代码重构 [5]改成Lock Condition ------------------------------------- 1,需求 ...
- Android 联系人字母排序(仿微信)
现在很多APP只要涉及到联系人的界面,几乎都会采取字母排序以及导航的方式.作为程序猿,这种已经普及的需求还是需要学习的,于是小生开始了在网上默默的学习之路,网上学习的资料质量参差不齐,不过也有很不错的 ...