1、如果要跟踪不同页面的内容注入当前的DOM结构,可以将页面中的page容器绑定pagecreate事件,该事件在页面初始化时触发,绝大多是的JQuery Mobile组件都在该事件之后进行一些数据的初始化。
2、将page容器与pagebeforecreate和pagecreate事件进行绑定,在页面执行时,通过绑定的事件跟踪执行的过程
3、示例代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<link href=/blog_article/"Css/jquery.mobile-1.2.0.min.css" rel="Stylesheet" type="text/css"/>
<script src=/blog_article/"Js/jquery-1.8.3.min.js" type"text/javascript"></script>
<script src=/blog_article/"Js/jquery.mobile-1.2.0.min.js" type="text/javascript"></script>
<script type="text/javascript">
$("#e1").live("pagebeforecreate",function(){
alert("正在创建页面");
});
$("#e1").live("pagecreate",function(){
alert("页面创建完成");
});
</script>
</HEAD>
<BODY>
<div data-role="page" id="e1">
<div data-role="header"><h1>创建页面</h1></div>
<div data-role="content">页面创建完成</div>
<div data-role="footer"><h4>@2013 3i studio</h4></div>
</div>
</BODY>
</HTML>
4、效果图预览:
点击确定 创建完成后
把数据保存成一个巨大的数据集不是很常见。例如,用户信息数据频繁更新,所以要保存到关系数据库中。于此同时,web日志以恒定的数据流量增加,直接写到HDFS。这些日志的日常分析过的数据保存在hdfs的某个地方,财务数据存储在加密的仓库中。还有很多例子。。。
(原文are stored someone where in HDFS 貌似应改为 are stored somewhere in HDFS)
数据遍布于各处,本身也很有价值。当我们合起来分析这些数据集时会发现一些有趣的关系。这就是join模式可以使用的地方。Join可以用一个小的引用集合让数据更丰富,或者过滤出或选择出指定的一系列类型。这种使用也有很多。
在RDB中,join操作可以使用简单的命令完成,数据库引擎会处理所有工作。对我们不幸的是,MapReduce中的join不会这么简单。MapReduce每次操作一个键值对,一般来自相同的输入。我们现在会处理至少两个输入数据集而且很可能有不同的结构,所以我们需要知道记录来自哪个数据集,以便正确的处理。一般情况下,join操作之前不会过滤数据,所以一些join操作需要把每个输入的字节都发送到reduce阶段,网络传输较繁重。例如,拿一个1T的数据跟另一个1T的数据做join,至少需要2T的网络流量-而且是在实际的join逻辑之前做的。
基于所有以上复杂的原因,要从几个不同的方式中选出一个最好的方式。由于框架只是简单的分解成map和reduce任务,有很多工作需要手动处理,有很多事情要考虑。当你了解了这些可能性,问题就是什么时候用什么模式。不管用什么MapReduce操作,网络流量都是非常重要的资源,join更会大量的使用它。让网络传输更有效率是值得考虑的,网络优化是这些模式中不同的地方。
下面讲到的每种模式都可以使用其执行inner join或至少一种类型outer join。至于选那个模式,很大程度上取决于数据集的大小,格式,哪种类型的join。另一方面,笛卡尔积也完全不同,但当我们遇到时,总能想办法解决。
本章第一个模式是reduce side join,最基本的,同时使用bloom filter的改进版本。随后,我们讨论两种map端执行join操作的模式:使用分布式缓存或hadoop MapReduce api里的归并特性。最终,我们会看到怎样巧妙的执行笛卡尔积。
对你的情况选择正确类型的join比较困难。注意下面“Applicability”部分的描述。
A Refresher on Joins如果你有深厚的RDB sql背景出身,可以跳过这一部分,对于hadoop初学者来说,join可能有点像外部的东西。
Join很可能是你执行的MapReduce中最复杂的操作之一(我觉得没有之一)。在设计上MapReduce依靠查看每一条记录或隔离分组,非常适合处理巨大数据集,所以join两个非常大的数据集可能不太符合其范例。在分析模式之前,让我们先搞清楚什么是join,还有不同的join类型。
Join是一种基于一个或几个字段,连接两个或两个以上数据集的一种操作,例如所谓的外键。外键是一种关系型表中匹配另一张表的某列的字段。并且是表示表与表之间相互关系的重要手段。用例子说明是最简单的方式了,下面深入研究。
为了简单的解释join类型,使用两个数据集A和B。外键定义为f。不同的join类型分别如表5-1和5-2表示。随后的描述也会用到这两张表
Table 5-1. Table A
Table 5-2. Table B
INNER JOIN
当人们不指定类型,说join时,通常指的是inner join。用这种类型,A表和B表具有相同外键值得记录才被取出来,如果把这个结果放在一张新表里,结果中在A表不在B表,或在B表不在A表的数据都不会出现在新表里。
表5-3 展示了这个结果集。使用userid作为外键。
Table 5-3. Inner Join of A + B on User ID
用户id是3或5的在两个表里都有,所以会出现在最终的表里。用户id是4或9在表A,用户id是8的在表B,但都不在另一个表中,所以被忽略。然而这些记录会出现在下面介绍的类型中join类型中。
OUTER JOIN
外连接跟内连接相似,但只出现在一个表的记录会出现在最终结果表。有三种外连接,他们直接决定哪些没有匹配的记录会出现在最终表里。
左外连接中,左边表里没匹配的记录会出现在最终表里,右边表没有与之对应的记录位置填null值,右外连接相反。全外连接会包含两个表所有的数据
Java读取和修改properties文件
方法说明:
1.Properties getProperties(String filepath):根据路径读取属性文件,返回Properties类;
2.void SaveProperties(Properties prop,String filepath):保存属性到指定路径(如果文件不存在,请先创建File);
3.String getConfigValue(String key):获取指定Key的属性;
4.void setConfigValue(String key,String value):设置指定Key的属性值。
其中方法3,4调用的属性文件为默认的文件,文件名和路径通过CONFIG和LOCATION设置,该文件的位置为工程中的src下,导出jar文件的同级目录下(LOCATION获取)。
下面代码:
public class PropUtils { public static String LOCATION; public static final String CONFIG = "config.properties"; static{ try { String temp = URLDecoder.decode(PropUtils.class.getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8"); LOCATION = temp.substring(1, temp.lastIndexOf('/')); } catch (UnsupportedEncodingException e) { LOCATION = ""; } } /** * @param args * @throws Exception */ public static Properties getProperties(String filepath) throws Exception { Properties prop = new Properties(); FileInputStream fis = new FileInputStream(LOCATION+"/"+filepath); prop.load(fis); return prop; } public static void SaveProperties(Properties prop,String filepath) throws Exception { FileOutputStream fos = new FileOutputStream(LOCATION+"/"+filepath); prop.store(fos, "@author Isea533"); fos.close(); } public static String getConfigValue(String key) { try { Properties properties = getProperties(CONFIG); if(properties.get(key)!=null){ return properties.get(key).toString(); } } catch (Exception e) { System.out.println(e.getMessage()); } return ""; } public static void setConfigValue(String key,String value){ try { Properties properties = getProperties(CONFIG); properties.setProperty(key, value); SaveProperties(properties, CONFIG); } catch (Exception e) { System.out.println(e.getMessage()); } } }