DOM1级主要定义的是HTML和XML文档的底层结构。DOM2级和DOM3级在这个结构基础上引入了更多的交互能力,也支持更高级的XML特性。为此DOM2级和DOM3级分为了很多的模块(模块直接具有某种关联),分别描述了DOM的某个非常具体的子集。这些模块如下:
DOM2级核心:在1级核心基础上构建,为节点添加了更多属性和方法;
DOM2级视图:为文档定义了基于样式信息的不同视图;
DOM2级事件:说明了如何使用事件与DOM文档交互;
DOM2级样式:定义了如何以编程方式来访问和改变CSS样式信息;
DOM2级遍历和范围:引入了遍历DOM文档和选择其特定部分的新接口;
DOM2级HTML:在1级HTML基础上构建,添加了更多的属性、方法和新接口。
DOM变化
DOM2级和DOM3级的目的在于扩展DOM API,以满足操作XML的所有需求,同时提供更好的错误处理级特性检测能力。
通过下列代码来确定浏览器是否支持这些DOM模块:
var supportsDOM2Core = document.implementation.hasFeature("Core","2.0");
var supportsDOM3Core = document.implementation.hasFeature("Core","3.0");
var supportsDOM2HTML = document.implementation.hasFeature("HTML","2.0");
var supportsDOM2Views = document.implementation.hasFeature("Views","2.0");
var supportsDOM2XML = document.implementation.hasFeature("XML","2.0");
针对XML命名空间的变化
< xhtml:html xmlns:xhtml ="http://www.w3.org/1999/xhtml" >
< xhtml:head >
< xhtml:title > Example XHTML pagexhtml:title >
xhtml:head >
< xhtml:body xhtml:class ="home" >
Hello world!
xhtml:body >
xhtml:html >
样式
访问元素的样式
对于使用短横线(例如:background-image)的css属性名,必须将其转换为驼峰 大小写形式,才能通过JavaScript来访问。如下:
var myDiv = document.getElementById('myDiv');
myDiv.style.backgroundColor = 'red';
myDiv.style.width = '200px';
myDiv.style.height = '200px';
myDiv.style.border = '1px solid #ccc';
其中一个不能直接转化的css属性为float 。由于float为JavaScript的保留字,因此不能作为属性名。“DOM2级样式”规范规定对象上相应的属性名应该是cssFloat 。除了IE浏览器,其它浏览器都支持这个属性。而IE支持的是styleFloat 。
DOM样式属性和方法
“DOM2级样式”规范为style对象定义了一些属性和方法,常用:
cssText :通过它可以访问到style特性中的css代码。
length :应用给元素的css属性的数量。
getPropertyValue(propertyName) :返回给定属性的字符串值。
item(index) :返回给定位置的css属性的名称。
removeProperty(propertyName) :从样式中删除给定的属性。
setProperty(propertyName,value,priority) :将给定的属性设置为相应的值,并加上优先权标志(“important”或者一个空字符串)。
var myDiv = document.getElementById('page1');
myDiv.style.cssText = "display:block;width:300px;background:red;color:#fff;"
console.log(myDiv.style.cssText); // display: block; width: 300px; background: red; color: rgb(255, 255, 255);
设置cssText 是为元素应用多项变化最快捷的方式,因为可以一次性的应用所有变化。
var myDiv = document.getElementById('page1');
var i,len,prop,value;
for (i =0, len = myDiv.style.length; i < len; i++){
prop = myDiv.style[i]; // 或者 myDiv.style.item(i)
value = myDiv.style.getPropertyValue(prop);
console.log(prop + ":" + value);
}
myDiv.style.removeProperty( 'font-size');
计算的样式
虽然style对象能够提供支持style特性的任何元素的样式信息,但它不包含从其它样式表层叠而来并影响当前元素的样式信息。“DOM2级样式”增强了document.defaultView ,提供了getComputedStyle() 方法。这个方法接收两个参数:要取得计算样式的元素和一个伪元素字符串 (例如":after")。如果不需要伪元素,那么第二个参数可以为null。getComputedStyle() 方法返回一个CSSStyleDeclaration对象(与style属性的类型相同),其中包含当前元素的所有计算的样式。
var myDiv = document.getElementById('page1');
var computedStyle = document.defaultView.getComputedStyle(myDiv,null );
console.log(computedStyle.width);
console.log(computedStyle.backgroundColor);
IE不支持getComputedStyle()方法,但是在IE中,每个具有style属性的元素还有一个currentStyle 属性。这个属性是CSSStyleDeclaration的实例,包含当前元素全部计算后的样式。
var myDiv = document.getElementById('page1');
var computedStyle = myDiv.currentStyle;
console.log(computedStyle.width);
console.log(computedStyle.backgroundColor);
操作样式表
CSSStyleSheet 类型表示的是样式表。应用于文档的所有样式表是通过document.styleSheets 集合来表示的。
var sheet = null ;
for (var i =0, len = document.styleSheets.length; i < len; i++){
sheet = document.styleSheets[i];
console.log(sheet.href);
}
上面例子是获取每一个样式表的href属性。
不同浏览器的document.styleSheets返回的样式表不同,DOM规定了一个包含CSSStyleSheet对象的属性,名叫sheet ,除了IE浏览器,其它浏览器都支持;IE支持的是styleSheet 属性。在不同浏览器取得样式表对象,代码如下:
function getStyleSheet(element){
return element.sheet || element.styleSheet;
}
// 取得第一个link元素引入的样式表
var link = document.getElementsByTagName('link')[0];
var sheet = getStyleSheet(link);
console.log(sheet);
得到的结果如下图:
这里的getStyleSheet()返回的样式表对象和document.styleSheets集合中的样式表对象相同。
元素大小
1.偏移量
offsetHeight :元素在垂直方向上占用的空间大小,以像素计算。包括元素的高度、(可见的)水平滚动条的高度、上边框高度和下边框高度。
offsetWidth :元素在水平方向上占用的空间大小,以像素计算。包括元素的宽度、(可见的)垂直滚动条的宽度、左边框宽度和右边框宽度。
offsetLeft :元素的左外边框至包含元素的左内边框之间的像素距离。
offsetTop :元素的上外边框至包含元素的上内边框之间的像素距离。
其中offsetLeft和offsetTop属性跟包含元素有关,包含元素的引用保存在offsetParent 属性中。offsetParent属性不一定与parentNode的值相等。
例如,
元素的offsetParent是作为其祖先元素的元素,因为是在DOM层次中距最近的一个具有大小的元素。如下图:
计算某个元素在页面上的偏移量,如下代码分别取得元素的左和上偏移量 :
function getElementLeft(element){
var actualLeft = element.offsetLeft;
var current = element.offsetParent;
while (current !== null ){
actualLeft += current.offsetLeft;
current = current.offsetParent;
}
return actualLeft;
}
function getElementTop(element){
var actualTop = element.offsetTop;
var current = element.offsetParent;
while (current !== null ){
actualTop += current.offsetTop;
current = current.offsetParent;
}
return actualTop;
}
var myDiv = document.getElementById('page1');
console.log(getElementLeft(myDiv));
console.log(getElementTop(myDiv));
2.客户区大小
元素的客户区大小,指的是元素内容及其内边距所占据的空间大小。有关客户区大小的属性有两个:clientWidth和clientHeight。
clientWidth :元素内容区宽度加上左右内边距宽度(因此滚动条占据的空间不计算在内)。
clientHeight :元素内容区高度加上上下内边距高度(因此滚动条占据的空间不计算在内)。
如图所示描述:
例如:要确认浏览器视口大小,可以使用document.documentElement 或document.body (IE7之前的版本中)的clientWidth和clientHeight。
function getViewPort(){
if (document.compatMode == 'BackCompat'){ // IE7浏览器之前
return {
width:document.body.clientWidth,
height:document.body.clientHeight
}
} else { // 标准浏览器 document.compatMode 为CSS1Compat
return {
width:document.documentElement.clientWidth,
height:document.documentElement.clientHeight
}
}
}
var result = getViewPort();
console.log(result.width);
console.log(result.height);
3.滚动大小
滚动大小,指的是包含滚动内容的元素的大小。有的元素(例如元素),即使没有执行任何代码也能自动添加滚动条;但另外一些元素,需要通过设置css的overflow属性进行设置才能滚动。以下有四个跟滚动相关的属性:
scrollHeight :在没有滚动条的情况下,元素内容的总高度。
scrollWidth :在没有滚动条的情况下,元素内容的总宽度。
scrollLeft :被隐藏在内容区域左侧的像素数。通过设置这个属性可以改变元素的滚动位置。
scrollTop :被隐藏在内容区域上方的像素数。通过设置这个属性可以改变元素的滚动位置。
其中scrollHeight和scrollWidth主要用于确定元素内容的实际大小。比如带有垂直滚动条的页面总高度为document.documentElement.scrollHeight 。
对于不包含滚动条的页面而言,scrollWidth和scrollHeight与clientWidth和clientHeight之间的关系并不十分清晰。在这种情况下,基于document.documentElement查看这些属性会在不同浏览器之间发现一些不一致的问题,如下描述:
Firefox中这两组属性始终是相等的,但大小代表的是文档内容区域的实际尺寸,而非视口的尺寸。
Opera、Safari3.1及更高版本、Chrome中的这两组属性是有差别的,scrollWidth和scrollHeight等于视口大小,而clientWidth和clientHeight等于文档内容区域的大小。
IE(标准模式)中的这两组属性不相等,其中scrollWidth和scrollHeight等于文档内容区域的大小,而clientWidth和clientHeight等于视口的大小。
在确定文档的总高度时(包括基于视口的最小高度时),必须取得scrollWidth/scrollHeight 和clientWidth/clientHeight 中的最大值,才能在跨浏览器的环境中得到精确的结果。下面代码:
var docHeight = Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight);
var docWidth = Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth);
注意,运行在混杂模式下的IE,需要用document.body替换document.documentElement。
检测元素是否位于顶部,不是就将其滚到顶部:
function scrollToTop(element){
if (element.scrollTop != 0){
element.scrollTop = 0;
}
}
4.确定元素的大小
每个元素有getBoundingClientRect ()方法,这个方法返回一个矩形对象。包含4个属性:left、top、right和bottom。这些属性给出了元素在页面中相对于视口的位置。但是浏览器的实现稍有不同,IE8及更早版本认为文档的左上角坐标为(2,2),而其它的浏览器包括IE9把(0,0)作为起点坐标。下面实现一个跨浏览器兼容的getBoundingClientRect版本:
function getBoundingClientRect(element){
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
if (element.getBoundingClientRect){
if (typeof arguments.callee.offset != 'number'){
var temp = document.createElement('div');
temp.style.cssText = "position:absolute;top:0;left:0;";
document.body.appendChild(temp);
arguments.callee.offset = - temp.getBoundingClientRect().top - screenTop;
document.body.removeChild(temp);
temp = null ;
}
var rect = element.getBoundingClientRect();
var offset = arguments.callee.offset;
return {
left:rect.left + offset,
right:rect.right +offset,
top:rect.top + offset,
bottom:rect.bottom + offset
};
} else {
var actualLeft = getElementLeft(element);
var actualTop = getElementTop(element);
return {
left:actualLeft - scrollLeft,
right:actualLeft + element.offsetWidth - scrollLeft,
top:actualTop - screenTop,
bottom:actualTop + element.offsetHeight - scrollTop
};
}
}
范围
为了让开发人员更方便的控制页面,“DOM2级遍历和范围”模块定义了“范围”(range)接口。通过范围可以选择文档中的一个区域,而不必考虑节点的界限(选择在后台完成,对用户是不可见的)。在常规的DOM操作不能更有效地修改文档时,使用范围往往可以达到目的。但IE以专有的方式实现了自己的范围特性。
DOM中的范围
DOM2级在Document类型中定义了createRange() 方法。在兼容DOM的浏览器中,这个方法属于document对象。使用hasFeature或者直接检测该方法。如下代码:
var supportsRange = document.implementation.hasFeature("Range","2.0");
var alsoSupportsRange = (typeof document.createRange == 'function');
如果浏览器支持范围,就可以使用createRange()来创建DOM范围,如下所示:
var range = document.createRange();
每个范围由一个Range类型的实例表示,这个实例拥有很多的属性和方法。下列属性提供了当前范围在文档中的位置信息。
startContainer :包含范围起点的节点(即选区中第一个节点的父节点)。
startOffset :范围在startContainer中的起点的偏移量。如果startContainer是文本节点、注释节点、CDATA节点,那么startOffset就是范围起点之前跳过的字符数量。否则,startOffset就是范围中第一个子节点的索引。
endContainer :包含范围终点的节点(即选区中最后一个节点的父节点)。
endOffset :范围在endContainer中终点的偏移量(与startOffset遵循相同的取值规则)。
commonAncestorContainer :startContainer和endContainer共同的祖先节点在文档树中位置最深的那个。
在把范围放到文档中特定的位置时,这些属性都会被赋值。
1.用DOM范围实现简单选择
要使用范围来选择文档中的一部分,最简单的方式是使用selectNode() 和selectNodeContents() 。这两个方法都接受一个参数,即一个DOM节点,然后使用该节点的信息来填充范围,其中selectNode()方法选择整个节点,包括其子节点;而selectNodeContents()方法则只选择节点的子节点。如下例子:
< body >
< p id ="p1" >< b > Hellob > world!p >
< script type ="text/javascript" >
var range1 = document.createRange();
var range2 = document.createRange();
var p1 = document.getElementById( ' p1 ' );
range1.selectNode(p1);
range2.selectNodeContents(p1);
script >
body >
2.用DOM范围实现复杂选择
要创建复杂的范围就得使用setStart() 和setEnd() 方法。这两个方法都接受两个参数:一个参照节点和一个偏移量值。
3.操作DOM范围中的内容
deleteContents() :从文档中删除范围所包含的内容。
extractContents() :从文档中移除范围选区,跟deleteContents()的方法的区别在于会返回范围的文档片段。
cloneContents() :创建范围对象的一个副本。
4.插入DOM范围中的内容
insertNode()
surroundContents()
5.折叠DOM范围
6.比较DOM范围
7.复制DOM范围
8.清理DOM范围
ranage.detach();
range = null ;
你可能感兴趣的:(《JavaScript高级程序设计》笔记:DOM2和DOM3(十二))
美易官方:盘前道指期货涨0.5%,游戏驿站跌逾15%
美股投资
财经 人工智能 大数据 新浪微博 微信 微信公众平台 百度 金融
在股市开盘前的交易时段,道指期货上涨了0.5%,而游戏驿站(GameStop)的股价却出现了大幅下跌,跌幅超过15%。这一市场动态引发了投资者的广泛关注,也反映了当前股市的复杂性和不确定性。美股股指期货周三盘前走强,交易员为季度末的再平衡做准备。本周因假期而缩短,美国将公布关键通胀数据。道指期货涨0.5%,标普500指数期货涨0.6%,纳指期货涨0.5%。德国DAX指数涨0.4%,英国富时100指
2023-02-16
执剑饮烈酒
1、开心点,反正谁也别想活着离开这个世界。——朱德庸2、我一直以为爱的反义词是不爱,直到现在我才明白,爱的反义词是遗忘。——《寻梦环游记》3、人生的最高境界是佛为心,道为骨,儒为表,大度看世界。技在手,能在身,思在脑,从容过生活。——南怀瑾4、如果一个民族沦落到,只剩下把升官发财当成最终目标和追求的时候,那么这个民族就危险了,一旦金钱和权利成了唯一的信仰,那将是悲哀的。——鲁迅5、人和人如果不在一
【Python】一文详细介绍 py格式 文件
高斯小哥
Python基础【高质量合集】 python 新手入门 学习
【Python】一文详细介绍py格式文件个人主页:高斯小哥高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程希望得到您的订阅和支持~创作高质量博文(平均质量分92+),分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)文章目录一、py格式文件简介二、如何创建和编辑py格式文件三、如何运行py
《昼颜》里的日本女人:相遇要万种风情,分手要残忍绝情
迷影咖啡
作者:迷之菌子神奇菇迷影咖啡:一本正经做烘焙,胡说八道聊电影漫天萤火虫消散之时良宵就将过去,人们也说含苞待放的花蕾总会开了又谢,因紧紧相拥而面红耳赤的躯体,便是我们经历过这热爱的证明。夫妻关系介绍《昼颜》是2014年电视剧《昼颜:工作日下午三点的恋人们》的续集,故事发在电视剧情节结束的三年后,讲述了已经恢复独身的纱和偶然与曾经的出轨对象北野重逢后再次陷入感情漩涡的故事。《昼颜》制作灵感源自利佳子在
Android和IOS应用开发-Flutter应用让屏幕在 app 运行期间保持常亮的方法
江上清风山间明月
Flutter android ios flutter KeepAlive 屏幕常亮 wakelock 熄屏
文章目录Flutter应用让屏幕在app运行期间保持常亮的方法方法一:使用系统插件方法二:使用Widgets注意事项Flutter应用让屏幕在app运行期间保持常亮的方法在Flutter开发中,可以使用以下两种方法让屏幕在app运行期间保持常亮:方法一:使用系统插件Flutter社区中已经有很多相关插件可供使用,比如wakelock:https://pub.dev/packages/wakeloc
我喝醉了,但是与你无关
Z先生的日记本
2019年04月10号晚上我和一个朋友喝酒了,彻彻底底的喝醉了,喝到短片,事后我问L,我说我喝醉了之后,都发生了什么,L没有告诉我详情,但是跟我说了大致,他说我跟他一直聊天,说自己小的时候的事,说自己爸妈的事,说自己现在过得很苦可能,确实是喝醉了酒,才会毫无防备的跟其他人说这些吧。L还说感觉我过得很苦,很心疼。醉了酒之后还哭了,想想还真是丢人一年前,在宿舍也有一瓶红酒,那是舍友出去拉赞助时候,友商
Flink中的SQL Client和SQL Gateway
BigDataMLApplication
flink flink sql gateway
Flink中的SQLClient和SQLGateway对比目录定义基本原理适用场景主要区别常用运维命令示例官方链接正文1.定义SQLClient:FlinkSQLClient是一种用于提交和执行FlinkSQL语句的命令行界面或图形界面工具。SQLGateway:FlinkSQLGateway是一个独立的服务,它允许客户端通过RESTfulAPI将SQL查询提交到Flink集群。2.基本原理SQL
通俗易懂:MySQL中如何设置只读实例并确保数据一致性?
大龄下岗程序员
mysql java mysql spring
在MySQL中设置只读实例主要应用于构建高可用性和扩展性的数据库环境,通常是为了分担读取负载或者用于备份和灾难恢复。以下是创建MySQL只读实例并确保数据一致性的基本步骤:1.创建并配置只读实例-主从复制设置-首先,你需要有一个主数据库实例(Master)负责接收所有的写操作。-创建一个或多个从数据库实例(Slave),并将它们配置为主数据库的复制品。这通常通过设置主从复制(Replication
拼多多纸巾推荐:品质与性价比的完美结合
氧惠帮朋友一起省
拼多多纸巾推荐拼多多纸巾返现怎么做在我们的日常生活中,纸巾已经成为不可或缺的用品。无论是在家庭、办公室还是旅途中,纸巾都是我们随时随地需要的物品。随着电商平台的兴起,越来越多的人选择在网上购买纸巾。其中,拼多多作为国内知名的电商平台之一,以其独特的社交电商模式和实惠的价格吸引了大量用户。今天,我们就来探讨如何在拼多多上选择品质优良、性价比高的纸巾,以及如何通过一些小技巧来获取更多的优惠。一、品质与
5月8日盘前提示:维持短期可以操作到下周二左右的判断,重个股轻指数
九命_猫妖
大盘:消息面。取消境外投资者额度限制,这个长线利好股市,短期影响不大,因为3000亿额度只用了1/3。额度本来就够用。走势看,昨天缩量横盘,走的还算中规中矩,近期一直弱势的次新股走势较强,前期强势股京威股份、光大嘉宝等跌停,由此判断市场还是存量博弈的市场,震荡是市场的主基调。维持短期可以操作到下周二左右的判断。下周后半段震荡回调的概率较高。思路:短期重个股轻指数行业和个股:物联网行业有利好,关注下
word字号和mathtype磅值关系及批量修改
小铁匠-Ma
office小技巧 经验分享
word字号和mathtype磅值关系及批量修改1.字号与磅值关系字号「八号」对应磅值5字号「七号」对应磅值5.5字号「小六」对应磅值6.5字号「六号」对应磅值7.5字号「小五」对应磅值9字号「五号」对应磅值10.5字号「小四」对应磅值12字号「四号」对应磅值14字号「小三」对应磅值15字号「三号」对应磅值16字号「小二」对应磅值18字号「二号」对应磅值22字号「小一」对应磅值24字号「一号」对应
现在的婚姻是: 高彩礼和诸多要求让感情越来越淡漠
朦蒙哒
很多人搞不明白为什么现在的人对婚姻的质量要求那么高可就是维持不了多久时间,有不少人的婚姻是用礼金堆起来的,但恰恰是这些人最容易夫妻感情出问题导致离婚收场。现在的婚姻让年轻人失望,年轻人为什么对婚姻失望甚至没了渴望,无非就是这几个原因01彩礼高了感情淡了我们都知道,结婚要的高彩礼把很多年轻人给搞怕了,搞得很多年轻人都不敢结婚生子了,可以说彩礼高了让很多男女都失去了真感情,就算能在一起也只是男人需要老
美团自动配送车2024春季招聘 | 社招专场
美团技术团队
关于美团自动配送团队美团自动配送以自研L4级自动驾驶软硬件技术为核心,与美团即时零售业务结合,形成满足公开道路、校园、社区、工业园区等室外全场景下的自动配送整体解决方案。美团自动配送团队成立于2016年,团队成员来自于Waymo、Cruise、Pony.ai、泛亚等自动驾驶行业头部公司,自动驾驶技术团队博士占比高达30%,依靠视觉、激光等传感器,实时感知预测周围环境,通过高精地图定位和智能决策规划
读思001 ‖ 变负能为正能,变压力为动力
你不懂夜的黑
今天起开始写一个言说文集连载,重点为读写思考收获和感想,也收录生活和工作中开悟到的点滴,仍然是一个碎片式的思考积累。希望这样的思考能启迪我的生活智慧,开悟我的思想境界,也算是一个修心的过程吧。这个连载不定期更新,重在积累生活和工作中的随思碎思,或许也是一厢情愿的一个梦。也或许这个梦是我坚持说下去的一个重要理由。读思001变负能为正能,变压力为动力1从来没有一种哲学能解决一切问题,也从来没有一种药能
新网师的精神肤色(幕布笔记)
悦读书香
王子老师的《极简100小妙招》收到已经几天了,之前大概的浏览了全书,今天起给自己定了一个计划,必须每天学习极简小妙招里面的一个妙招,并加以运用。一、今天要打卡什么内容因有完成每天学习极简小妙招的计划,所以今天晚饭吃的比较简单,草草吃完以后带着小宝到广场溜达一圈,急忙赶回来学习极简小妙招。再重看的时候不知道自己要学点什么,打卡哪一招,感觉哪个都简单,就看这一环节像王子老师说的“一看就会”,但做这一环
信任
饮冰伊乔
随着社会的发展,微信和支付宝交易给人们带来了极大的方便,越来越多的人出门都只选择拿一部手机即可,方便安全,可昨天我就遇到了一件比较尴尬的事。昨天傍晚,我从公司出来,感觉有点饿,决定索性吃了饭再回去,来到去过几次的一个店里,如往常一样叫了餐,当时店里吃饭的不多,老板麻利的先去做了,正要扫微信付账的时候发现手机没电了,迷之尴尬,我只好跟老板说不用做了,手机没电了,我身上又没现金,付不了帐了。老板娘很热
《对我而言危险的他》:“假千金”归来,携手神秘霸总共破迷局
入骨影评
由樊治欣李墨之主演的都市悬疑爱情剧《对我而言危险的他》在网上平台一次性播出全集。虽然是个小成本网剧,呈现出来的效果却十分有诚意。剧中从车祸到坠海、再到徒手灭火等惊险场面都是实景拍摄和主演们的无替身上场。说起樊治欣这个名字可能大家都不熟悉,但提起他演过的剧,大家都不陌生。饰演过《暗格里的秘密》中的学长苏柏从的樊治欣在这部剧中饰演霸总严星呈,即便同样戴着眼镜,却给人不一样的观感。该剧主要讲述了女主沈漫
男人请珍惜十六七岁陪在你身边的女孩吧
小朋友嘿哈
你相信那种从校服到婚纱的爱情吗。01朋友阿伟18岁的时候就是一混混,放学不是和这个学校的学生约架,就是那个小弟被欺负了要为此出头,溜冰场上看谁不顺眼,一个字:打。当然,放学蹲点泡妞是常事,看到这个学生妹浓妆艳抹,搭讪,看到那个前凸后翘的,搭讪。阿伟也不例外,他说:“我当时和几个兄弟在学校后门的小卖部抽烟,姗姗背着双肩背包,扎着马尾辫,看到我们几个混混有些害怕的低着头快步走过我们面前,那时候我在想啊
学习JavaEE的日子 Day32 线程池
A 北枝
学习JavaEE 学习 java-ee java 线程池
Day32线程池1.引入一个线程完成一项任务所需时间为:创建线程时间-Time1线程中执行任务的时间-Time2销毁线程时间-Time32.为什么需要线程池(重要)线程池技术正是关注如何缩短或调整Time1和Time3的时间,从而提高程序的性能。项目中可以把Time1,T3分别安排在项目的启动和结束的时间段或者一些空闲的时间段线程池不仅调整Time1,Time3产生的时间段,而且它还显著减少了创建
花气袭人知昼暖
柒侠传
花气袭人知昼暖高一七班黄韵熹37号花袭人,原名花珍珠,位列金陵十二钗又副册中的第二位。“袭人”这一称呼源于“花气袭人知昼暖”这一诗句,是宝玉给起的。想起来便觉得暖融融的,一如花袭人温柔的笑容。但花袭人着实是令人又爱又怕的角色。第二十一回的回目将她赞作“贤袭人”,脂砚斋在一旁批道“当得起”。花袭人对宝玉的确是一片真心。她为劝宝玉收敛他那成日在大观园里与姐姐妹妹“厮混”的性子,假借家人赎回的机会,软语
你之所以胖,可能是因为小时候发生这件事!还不赶快甩锅
周围_5d19
通常,我们认为,“肥胖”主要是由于饮食不节制、不经常运动等等因素引起的。但最近,我国学者开展的一项针对6到18岁儿童青少年、随访长达十年的代谢综合征研究结果,在权威国际期刊发表。研究发现,儿童的肥胖和超重与睡眠密切相关,儿童、青少年时期睡眠不好,成人后也更容易患心血管疾病。那么,为什么儿童青少年睡眠不足会导致肥胖呢?今天就带大家一探究竟。儿童青少年肥胖的现状如何?近日,一项刊载在医学权威期刊《柳叶
淘宝天猫38节活动时间和玩法,2024年焕新周满减优惠多少
小小编007
在2024年,淘宝天猫平台即将迎来一年一度的38节活动,这是广大消费者们翘首以待的购物狂欢节。在这篇文章中,我们将为您详细解读淘宝天猫38节活动的时间安排和玩法,以及2024年焕新周的满减优惠力度。一、淘宝天猫38节活动时间2024年淘宝天猫38节活动将于2月28日正式启动,持续至3月8日,为期10天。活动期间,消费者们可以尽情享受各种优惠折扣、满减活动以及限时秒杀,尽情释放购物热情。2024淘宝
感恩日志
圆施
张新丽2019年8月16日感恩日志:1.感恩天地滋养万物;感恩国家恩惠护佑;感恩父母养育深恩。2.感恩尊重为平台源头付出的所有人事物。3.感恩红斌、孙萍清晨7点开车来接我和小姨去安宁渠采摘。4.感恩小姨和小姨夫亲自采摘还带我们去瓜地品尝,第一次这么吃好甜啊,忘掉了炎热消了暑,拍下了瞬间,分享着快乐,带给大家。4.感恩整理收拾好小姨给大家利用午休蒸苞米。5.感恩去接爸妈参加沙龙。6.感恩祝福两位伙伴
llama.cpp 编译安装@Ubuntu
skywalk8163
项目实践 人工智能 llama ubuntu linux 人工智能
在Kylin和Ubuntu编译llama.cpp,具体参考:llama模型c语言推理@FreeBSD-CSDN博客现在代码并编译:gitclonehttps://github.com/ggerganov/llama.cppcdllama.cppmkdirbuildcdbuildcmake..cmake--build.--configRelease#可选安装makeinstall#或可选添加路径ex
黔东南——苗年(一)
非常道yw
苗年是雷山县苗族同胞最隆重的民族传统节日,也是苗族人一年中庆祝丰收和最重要的祭祀性的日子,更是雷山苗族一年里劳作的结束和欢乐的开始。如同汉族的春节。节日期间,各村寨都要举行跳芦笙、篮球赛、斗牛、赛马、斗鸟、铜鼓舞、篝火晚会等民间传统娱乐活动。苗年也是最集中地展示苗族服饰、银饰、手工艺美术等有形文化的节日,时间大都在农历十月。苗族认为,一年只有热、冷两个季节,热季和冷季交替的农历十月,既是热季的结束
SpringMVC设置全局异常处理器
水岸齐天
java spring
文章目录背景分析使用@ControllerAdvice(@RestControllerAdvice)+@ExceptionHandler实现全局异常全局异常处理-多个处理器匹配顺序存在一个类中存在不同的类中对于过滤器和拦截器中的异常,有两种思路可以考虑背景在项目中我们有需求做一个全局异常处理,来规范所有出去的异常信息。参考:官方文档分析首先ControllerAdvice(RestControll
为什么说仪式和习惯非常重要?
章鱼老师zy
这是章鱼姐第【40】篇原创文章,日更计划第【37/100】天。阅读张萌萌姐【精力管理手册】第【6/7】章。一阅读摘要这一章萌姐讲到了习惯的重要性,为什么说养成一个习惯很重要?如何养成一个好习惯?如何建立自己的仪式感?二金句精力管理最重要的是产生什么效果。当你想做却没有动力去做一件事情时,你就应该把它养成习惯。习惯可以帮我们创造稳定框架。对于那些特别考验意志的事情,我们应该先行后思。三思考题,萌姐讲
安神的投资札记——指数跟踪周报(20220602)
echo安神
本周关键词:缩表上周调整过后,本周又反弹了。最近创业板好活跃,跌的时候跌得凶,涨的时候也涨得猛。底部特征明显。上证50,0.99%;沪深300,2.21%;中证100,1.85%;中证500,3.03%;深证100,3.71%;创业板指数,5.85%;中证1000,3.75%。美联储6月1日开启缩表,每月总计减持475亿美元美国国债和MBS(抵押贷款支持证券),并将在3个月后提高缩表上限至每月95
细水长流的日子之二百五十二(一点一点慢慢长大)
独一无二的小茶叶
2021-10-22今天小妹妹刚来,见到放在桌篓子里晾着的薰青豆,想要吃,给她拿个小碗装了点,我正在厨房收拾,嘱咐她自己去坐在小椅子上吃,她却一屁股坐在厨房门口的地板上吃起来不小心打翻了,就直接趴在地板上一粒一粒地捡拾。口渴了,自己去把奶瓶里剩下的奶喝掉,然后到厨房门口将奶瓶提给我让我洗干净,把手伸的很长,边小嘴巴里说哇哇,我不让她的小脚跨进厨房半步,怕自己有时没看好出现意外,她牢牢记着,脚绝对不
社交电商是什么意思通俗的说
氧惠好项目
社交电商是目前电商发展的一个非常热门的领域,它将传统的电商和社交媒体相结合,让用户可以在社交平台上完成购物、支付等操作。社交电商不同于传统电商,它更加注重用户的社交性和互动性,通过社交媒体的传播,吸引用户关注,让产品能够更加快速地传播。京东密令红包:最爱领红包828红包多多148今天给大家分享我长期在做的副业,也在这里赚到人生第3桶金!氧惠APP佣金高,资质靠谱,各大应用市场均可搜索使用。【氧惠】
数据采集高并发的架构应用
3golden
.net
问题的出发点:
最近公司为了发展需要,要扩大对用户的信息采集,每个用户的采集量估计约2W。如果用户量增加的话,将会大量照成采集量成3W倍的增长,但是又要满足日常业务需要,特别是指令要及时得到响应的频率次数远大于预期。
&n
不停止 MySQL 服务增加从库的两种方式
brotherlamp
linux linux视频 linux资料 linux教程 linux自学
现在生产环境MySQL数据库是一主一从,由于业务量访问不断增大,故再增加一台从库。前提是不能影响线上业务使用,也就是说不能重启MySQL服务,为了避免出现其他情况,选择在网站访问量低峰期时间段操作。
一般在线增加从库有两种方式,一种是通过mysqldump备份主库,恢复到从库,mysqldump是逻辑备份,数据量大时,备份速度会很慢,锁表的时间也会很长。另一种是通过xtrabacku
Quartz——SimpleTrigger触发器
eksliang
SimpleTrigger TriggerUtils quartz
转载请出自出处:http://eksliang.iteye.com/blog/2208166 一.概述
SimpleTrigger触发器,当且仅需触发一次或者以固定时间间隔周期触发执行;
二.SimpleTrigger的构造函数
SimpleTrigger(String name, String group):通过该构造函数指定Trigger所属组和名称;
Simpl
Informatica应用(1)
18289753290
sql workflow lookup 组件 Informatica
1.如果要在workflow中调用shell脚本有一个command组件,在里面设置shell的路径;调度wf可以右键出现schedule,现在用的是HP的tidal调度wf的执行。
2.designer里面的router类似于SSIS中的broadcast(多播组件);Reset_Workflow_Var:参数重置 (比如说我这个参数初始是1在workflow跑得过程中变成了3我要在结束时还要
python 获取图片验证码中文字
酷的飞上天空
python
根据现成的开源项目 http://code.google.com/p/pytesser/改写
在window上用easy_install安装不上 看了下源码发现代码很少 于是就想自己改写一下
添加支持网络图片的直接解析
#coding:utf-8
#import sys
#reload(sys)
#sys.s
AJAX
永夜-极光
Ajax
1.AJAX功能:动态更新页面,减少流量消耗,减轻服务器负担
2.代码结构:
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
.... AJAX script goes here ...
创业OR读研
随便小屋
创业
现在研一,有种想创业的想法,不知道该不该去实施。因为对于的我情况这两者是矛盾的,可能就是鱼与熊掌不能兼得。
研一的生活刚刚过去两个月,我们学校主要的是
需求做得好与坏直接关系着程序员生活质量
aijuans
IT 生活
这个故事还得从去年换工作的事情说起,由于自己不太喜欢第一家公司的环境我选择了换一份工作。去年九月份我入职现在的这家公司,专门从事金融业内软件的开发。十一月份我们整个项目组前往北京做现场开发,从此苦逼的日子开始了。
系统背景:五月份就有同事前往甲方了解需求一直到6月份,后续几个月也完
如何定义和区分高级软件开发工程师
aoyouzi
在软件开发领域,高级开发工程师通常是指那些编写代码超过 3 年的人。这些人可能会被放到领导的位置,但经常会产生非常糟糕的结果。Matt Briggs 是一名高级开发工程师兼 Scrum 管理员。他认为,单纯使用年限来划分开发人员存在问题,两个同样具有 10 年开发经验的开发人员可能大不相同。近日,他发表了一篇博文,根据开发者所能发挥的作用划分软件开发工程师的成长阶段。
初
Servlet的请求与响应
百合不是茶
servlet get提交 java处理post提交
Servlet是tomcat中的一个重要组成,也是负责客户端和服务端的中介
1,Http的请求方式(get ,post);
客户端的请求一般都会都是Servlet来接受的,在接收之前怎么来确定是那种方式提交的,以及如何反馈,Servlet中有相应的方法, http的get方式 servlet就是都doGet(
web.xml配置详解之listener
bijian1013
java web.xml listener
一.定义
<listener>
<listen-class>com.myapp.MyListener</listen-class>
</listener>
二.作用 该元素用来注册一个监听器类。可以收到事件什么时候发生以及用什么作为响
Web页面性能优化(yahoo技术)
Bill_chen
JavaScript Ajax Web css Yahoo
1.尽可能的减少HTTP请求数 content
2.使用CDN server
3.添加Expires头(或者 Cache-control) server
4.Gzip 组件 server
5.把CSS样式放在页面的上方。 css
6.将脚本放在底部(包括内联的) javascript
7.避免在CSS中使用Expressions css
8.将javascript和css独立成外部文
【MongoDB学习笔记八】MongoDB游标、分页查询、查询结果排序
bit1129
mongodb
游标
游标,简单的说就是一个查询结果的指针。游标作为数据库的一个对象,使用它是包括
声明
打开
循环抓去一定数目的文档直到结果集中的所有文档已经抓取完
关闭游标
游标的基本用法,类似于JDBC的ResultSet(hasNext判断是否抓去完,next移动游标到下一条文档),在获取一个文档集时,可以提供一个类似JDBC的FetchSize
ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
白糖_
ORA-12514
今天通过Oracle SQL*Plus连接远端服务器的时候提示“监听程序当前无法识别连接描述符中请求服务”,遂在网上找到了解决方案:
①打开Oracle服务器安装目录\NETWORK\ADMIN\listener.ora文件,你会看到如下信息:
# listener.ora Network Configuration File: D:\database\Oracle\net
Eclipse 问题 A resource exists with a different case
bozch
eclipse
在使用Eclipse进行开发的时候,出现了如下的问题:
Description Resource Path Location TypeThe project was not built due to "A resource exists with a different case: '/SeenTaoImp_zhV2/bin/seentao'.&
编程之美-小飞的电梯调度算法
bylijinnan
编程之美
public class AptElevator {
/**
* 编程之美 小飞 电梯调度算法
* 在繁忙的时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层。
* 所有乘客都从一楼上电梯,到达某层楼后,电梯听下来,所有乘客再从这里爬楼梯到自己的目的层。
* 在一楼时,每个乘客选择自己的目的层,电梯则自动计算出应停的楼层。
* 问:电梯停在哪
SQL注入相关概念
chenbowen00
sql Web 安全
SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
首先让我们了解什么时候可能发生SQ
[光与电]光子信号战防御原理
comsci
原理
无论是在战场上,还是在后方,敌人都有可能用光子信号对人体进行控制和攻击,那么采取什么样的防御方法,最简单,最有效呢?
我们这里有几个山寨的办法,可能有些作用,大家如果有兴趣可以去实验一下
根据光
oracle 11g新特性:Pending Statistics
daizj
oracle dbms_stats
oracle 11g新特性:Pending Statistics 转
从11g开始,表与索引的统计信息收集完毕后,可以选择收集的统信息立即发布,也可以选择使新收集的统计信息处于pending状态,待确定处于pending状态的统计信息是安全的,再使处于pending状态的统计信息发布,这样就会避免一些因为收集统计信息立即发布而导致SQL执行计划走错的灾难。
在 11g 之前的版本中,D
快速理解RequireJs
dengkane
jquery requirejs
RequireJs已经流行很久了,我们在项目中也打算使用它。它提供了以下功能:
声明不同js文件之间的依赖
可以按需、并行、延时载入js库
可以让我们的代码以模块化的方式组织
初看起来并不复杂。 在html中引入requirejs
在HTML中,添加这样的 <script> 标签:
<script src="/path/to
C语言学习四流程控制if条件选择、for循环和强制类型转换
dcj3sjt126com
c
# include <stdio.h>
int main(void)
{
int i, j;
scanf("%d %d", &i, &j);
if (i > j)
printf("i大于j\n");
else
printf("i小于j\n");
retu
dictionary的使用要注意
dcj3sjt126com
IO
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
user.user_id , @"id",
user.username , @"username",
Android 中的资源访问(Resource)
finally_m
xml android String drawable color
简单的说,Android中的资源是指非代码部分。例如,在我们的Android程序中要使用一些图片来设置界面,要使用一些音频文件来设置铃声,要使用一些动画来显示特效,要使用一些字符串来显示提示信息。那么,这些图片、音频、动画和字符串等叫做Android中的资源文件。
在Eclipse创建的工程中,我们可以看到res和assets两个文件夹,是用来保存资源文件的,在assets中保存的一般是原生
Spring使用Cache、整合Ehcache
234390216
spring cache ehcache @Cacheable
Spring使用Cache
从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的
当druid遇上oracle blob(clob)
jackyrong
oracle
http://blog.csdn.net/renfufei/article/details/44887371
众所周知,Oracle有很多坑, 所以才有了去IOE。
在使用Druid做数据库连接池后,其实偶尔也会碰到小坑,这就是使用开源项目所必须去填平的。【如果使用不开源的产品,那就不是坑,而是陷阱了,你都不知道怎么去填坑】
用Druid连接池,通过JDBC往Oracle数据库的
easyui datagrid pagination获得分页页码、总页数等信息
ldzyz007
var grid = $('#datagrid');
var options = grid.datagrid('getPager').data("pagination").options;
var curr = options.pageNumber;
var total = options.total;
var max =
浅析awk里的数组
nigelzeng
二维数组 array 数组 awk
awk绝对是文本处理中的神器,它本身也是一门编程语言,还有许多功能本人没有使用到。这篇文章就单单针对awk里的数组来进行讨论,如何利用数组来帮助完成文本分析。
有这么一组数据:
abcd,91#31#2012-12-31 11:24:00
case_a,136#19#2012-12-31 11:24:00
case_a,136#23#2012-12-31 1
搭建 CentOS 6 服务器(6) - TigerVNC
rensanning
centos
安装GNOME桌面环境
# yum groupinstall "X Window System" "Desktop"
安装TigerVNC
# yum -y install tigervnc-server tigervnc
启动VNC服务
# /etc/init.d/vncserver restart
# vncser
Spring 数据库连接整理
tomcat_oracle
spring bean jdbc
1、数据库连接jdbc.properties配置详解 jdbc.url=jdbc:hsqldb:hsql://localhost/xdb jdbc.username=sa jdbc.password= jdbc.driver=不同的数据库厂商驱动,此处不一一列举 接下来,详细配置代码如下:
Spring连接池  
Dom4J解析使用xpath java.lang.NoClassDefFoundError: org/jaxen/JaxenException异常
xp9802
用Dom4J解析xml,以前没注意,今天使用dom4j包解析xml时在xpath使用处报错
异常栈:java.lang.NoClassDefFoundError: org/jaxen/JaxenException异常
导入包 jaxen-1.1-beta-6.jar 解决;
&nb