`
wzq6578702
  • 浏览: 781 次
文章分类
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
fastJson保留空值的key
QuoteFieldNames———-输出key时是否使用双引号,默认为true 
WriteMapNullValue——–是否输出值为null的字段,默认为false 
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null 
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null 
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null 
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null
招聘收藏
http://jobs.zhaopin.com/649341722250161.htm?ssidkey=y&ss=201&ff=03
联想:http://www.lenovo.com.cn/product/51047.html
linux设置固定IP:http://www.cnblogs.com/52linux/archive/2012/04/03/2430634.html
互联网公司面试题库:http://www.nowcoder.com/
阿里校招:https://campus.alibaba.com/process.htm
http://tool.oschina.net/apidocs/apidoc?api=jquery
牛客网(BAT题库):http://www.nowcoder.com/
阿里校园招聘:https://campus.alibaba.com/index.htm
杭州胡庆余堂:http://www.hqytgyh.com/
权限系统:https://github.com/ecnice/ecnice-privilege
 计算机软件著作权登记指南:http://www.ccopyright.com.cn/cpcc/bqdj.jsp?fck&columnid=704&articleid=14162
NBA女模:http://sports.qq.com/a/20160505/010542.htm?pgv_ref=aio2015&ptlang=2052#p=1

http://www.itellyou.cn/

维纳斯送花:http://www.vnasi.com/
卡当礼品:http://www.kadang.com/
杭州市西湖区求是路8号 公元大厦西北裙楼:http://www.jobui.com/job/126948594/

http://www.spotty.com.cn/

https://www.91ri.org/15421.html
https://segmentfault.com/a/1190000005799812
http://www.39yst.com/hao123com/201504/258361.shtml

骚女:3065563051
爬虫:https://www.zhihu.com/question/27621722
全息投影公司:http://www.oculus.com/
日本美腿大赛:http://bbs.csdn.net/topics/391987083
MIT论文免费网站: http://dspace.mit.edu/handle/1721.1/49433/search
UFO黑客:加里·麦金农
反重力飞行器:http://c.tieba.baidu.com/p/1354655317?pid=16371693016&see_lz=1
人工智能大会直播:http://special.csdncms.csdn.net/CCAI2016/
物联网:http://www.oschina.net/project/tag/417/iot
《现代传感器技术》 、 《传感器原理及工程应用》、《传感器技术大全》
图像数字水印技术:http://weibo.com/ttarticle/p/show?id=2309614022394841920144
微信小程序制作:http://gold.xitu.io/entry/57e34d6bd2030900691e9ad7

谷歌开发者:https://github.com/google
hadoop课堂:http://www.dajiangtai.com/community/18065.do?origin=csdn-geek
http://hot.ynet.com/3.1/1611/04/11941445.html
jvm:http://www.codeceo.com/article/tag/jvm

hbase:http://hbasefly.com/

开发者头条:https://toutiao.io/about
双重检查锁定与延迟初始化:http://www.infoq.com/cn/articles/double-checked-locking-with-delay-initialization

暗黑帖子:http://bbs.d3.blizzard.cn/forum.php?mod=viewthread&tid=700081&extra=page%3D1

https://www.battlenet.com.cn/sup ... enet/611/747/ticket
机器之心:http://www.jiqizhixin.com/
开源框架:http://blog.longjiazuo.com/archives/2625

人类有可能避免死亡吗?https://www.zhihu.com/question/38665613/answer/89123878?utm_medium=social&utm_source=qq

芯片里面有几千万的晶体管是怎么实现的?
https://www.zhihu.com/question/26998618?utm_medium=social&utm_source=qq

国内有哪些工作环境很赞的互联网公司?
https://www.zhihu.com/question/20215578

tomcat远程调试:
linux下面需要修改catalina.sh,而不是那个catalina.bat

 增加以下这段就可以远程连接服务器的5888端口了

CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5888"

2017上海国际物联网展览会:http://www.cardexpo.cn/ 
http://xidea.online
2017杭州中国人工智能大会:http://ccai.caai.cn/
乌云漏洞搜索:http://wy.hx99.net/
395419781

http://video.tudou.com/v/XMjgyMDI5MTE1Mg==.html?spm=a2h28.8313475.c1.dimg1&t=1&recoid=13736698818874100495&itemid=11590843322942432010&seccateId=10016
查看数据库死锁对象
select l.SESSION_ID, o.name locked_object,
       l.ORACLE_USERNAME,s.SERVER,s.USERNAME,s.OSUSER from v$locked_object l,sys.obj$ o,v$session s 
       where o.obj# = l.OBJECT_ID 
         and s.SID = l.SESSION_ID;
http://xxxxx/index.action?class['classLoader'].resources.dirContext.docBase=/
               You are my word
如果我是源代码【.java】,那么你就是我的编译器【javac】,是你让我蜕变为字节码文件【.class】成为你的类;
如果我是你的类【.class】,那么你就是我的类加载器【ClassLoader】,是你让我成为你的世界【jvm】中的对象【Object】;
如果我是你的对象【Object】,你就是我的堆栈,是你的引导【引用】与给予的内存【new】给予可我存在的意义;
如果我是一个应用【web.xml】,你就是我的容器【tomcat】,因为没有你我无法生存,因为you are my word。
http://fszxyangbin.blog.163.com/blog/static/52861448201322635337118/
http://www.vnasi.cn/GF05840.html
http://edu.csdn.net/huiyiCourse/index
http://www.360doc.com/content/15/1224/19/5316345_522851765.shtml
http://www.vnasi.cn/Goods/flower_express-0-0-0-6-0-272-1.html

http://soclsq.com/index.asp
select_copy
		document.body.onselectstart = function(){
    	
    	if(window.event&&event.srcElement){
    		var jObj = event.srcElement;
    		
    		var objId = jObj.id;
    		objId = objId?objId:"";
    		var idx1 = objId.lastIndexOf("_value");    		
    		var pObjId = idx1==-1?"":objId.substring(0, idx1);
    		var idx2 = pObjId.lastIndexOf("_input");
    		var ppObjId = idx2==-1?"":pObjId.substring(0, idx2);
    		
    		if("1"==jObj.getAttribute("canselall")){
    				return true;
    		}
    		//only canselall class can enable all child dom, cansel only enbale id_value or id_value_input because bug81116  			
    		//direct dom ctrl
    		
    		if("" != pObjId){
    			if("1"==document.getElementById(pObjId).getAttribute("cansel")){
    				return true;
    			}
    		}
    		if("" != ppObjId){
    			if("1"==document.getElementById(ppObjId).getAttribute("cansel")){
    				return true;
    			}    			
    		}
    		return false;
    		
    	}    	
    };
    
    document.body.oncopy= function(){
    	
    	if(window.event&&event.srcElement){
    		var jObj = event.srcElement;
    		
    		var objId = jObj.id;
    		objId = objId?objId:"";
    		var idx1 = objId.lastIndexOf("_value");    		
    		var pObjId = idx1==-1?"":objId.substring(0, idx1);
    		var idx2 = pObjId.lastIndexOf("_input");
    		var ppObjId = idx2==-1?"":pObjId.substring(0, idx2);
    		
    		alert(jObj.innerHTML+" : "+jObj.getAttribute("canselall"));
    		if("1"==jObj.getAttribute("canselall")){
    				return true;
    		}
    		//only canselall class can enable all child dom, cansel only enbale id_value or id_value_input because bug81116  			
    		//direct dom ctrl
    		if("" != pObjId){
    			if("1"==document.getElementById(pObjId).getAttribute("cansel")){
    				return true;
    			}
    		}
    		if("" != ppObjId){
    			if("1"==document.getElementById(ppObjId).getAttribute("cansel")){
    				return true;
    			}    			
    		}
    		return false;
    		
    	}    	
    };
    document.oncontextmenu=function(){event.returnValue = false;};
oracle
oracle\network\ADMIN\tnsnames.ora
#####################(山东敏捷新环境)
SDCRMDB.CHINA.HUAWEI.COM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.163.235.95)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = sdcrmdb)
      (SERVER = DEDICATED)
    )
  )
SQL/Developer
--山东icrm敏捷
tbcs/tbcs@SDCRMDB.CHINA.HUAWEI.COM
为数据库建表时给每个字段加注释的SQL:
comment on column COMMON.VERSION_CHART.CHARTID
  is '特性编码';

<style type="text/css">
body{ padding-bottom:50px;}
.fixed{ position:fixed; left:0px; bottom:0px; width:100%; height:50px; background-color:silver; z-index:9999;}
</style>

	//页面跳转
	public String getLevelFordward(HttpServletRequest request,COperator operator,String tabID,
			String privilegeId,CRewardStandard cPrivilegeScheme) throws Exception
	{
		String forward = "";
		String method = ForwardMap.getActLevelForward(tabID);
		Object[] args = new Object[5];
		args[0] = request;
		args[1] = operator;
		args[2] = tabID;
		args[3] = privilegeId;
		args[4] = cPrivilegeScheme;
		
		Class[] argClass = new Class[] {
				HttpServletRequest.class,
				COperator.class,
				String.class,
				String.class,
				CRewardStandard.class
		};
		Method ms = Class.forName("com.gmcc.boss.product.business.ActivityMgrHelper").getMethod(method, argClass);
					
		forward = (String)ms.invoke(this, args);
		
		
		return forward;
		
	}
	//保存页面的值
	public void saveLevel(HttpServletRequest request,HttpServletResponse response,
			CRewardStandard cPrivilegeScheme,Vector deleteList,String tabId) throws  Exception
	{	
		String method = ForwardMap.getSaveLevelForward(tabId);
		Object[] args = new Object[4];
		args[0] = request;
		args[1] = response;
		args[2] = cPrivilegeScheme;
		args[3] = deleteList;
		Class[] argClass = new Class[] {
				HttpServletRequest.class,
				HttpServletResponse.class,
				CRewardStandard.class,
				Vector.class
		};
			String readOnly = request.getParameter("onlyRead");
			if (!"true".equals(readOnly)) {
				Method ms = Class.forName("com.gmcc.boss.product.business.ActivityMgrHelper").getMethod(method,argClass);
				ms.invoke(this, args);
			}
	}
网站摘要
古代美女长什么样?:http://zhidao.baidu.com/daily/view?id=4157
妇人本质,惟白最难。常有眉目口齿般般入画,而缺陷独在肌肤者。
酥娘一搦腰肢袅,回雪萦尘皆尽妙
似呖呖莺声花外啭,行一步可人怜。解舞腰肢娇又软,千般袅娜,万般旖旎,似垂柳在晚风前。
标准美女大约是《西厢记》里崔莺莺的模样:“恰便是檀口点樱桃,粉鼻儿倚琼瑶。淡白梨花面,轻盈杨柳腰。”又如《红楼梦》里对探春的形容:“削肩细腰,长挑身材,鸭蛋脸面,俊眼修眉,顾盼神飞”。

曹植的《洛神赋》也写到:“其形也,翩若惊鸿,婉若游龙,荣曜秋菊,华茂春松。仿佛兮若轻云之蔽月; 飘飘兮若流风之回雪。”

《红楼梦》里对钗黛二人的外貌描写恰好代表了古典美人的两个典型,宝钗鲜艳妩媚、肌骨莹泽,“脸如银盆,眼同水杏,唇不点而丹,眉不画而横翠。”黛玉却风流袅娜,“两弯似蹙非蹙笼烟眉,一双似喜非喜含情目,态生两靥之愁,娇袭一身之病。泪光点点,娇喘微微。娴静似娇花照水,行动如弱柳扶风。心较比干多一窍,病如西子胜三分。”两人风格不同,但各擅其美。有趣的是,在清代文人的钗黛之争中,黛玉总是获得压倒性的胜利,成了他们心目当中的“理想型”。
http://www.searchtb.com/
http://club.alibabatech.org/index.htm
记事本
http://zhidao.baidu.com/daily/view?id=3832
    parent.parent.parent.tabFlag = "InitStarLevel";//tabFlag是js全局变量
    parent.parent.parent.document.all.saveButton.disabled = true;//saveButton是页面的按钮元素
    document.forms[0].action = "${request.contextPath}/product/publicConditionAction!saveStarLevel.action?ids="+ids;
    document.forms[0].submit();

女人:可以从性格,金钱,外貌来分别,代码工人最大的优点就是如何让系统帮你出报表,而记录女人的这个小程序,也诞生了。
性格:可分为5个等级,自来熟,外向,一般,内向,冰山。
金钱:可分为5个等级,败金,很爱钱,爱钱,正常,无求。
外貌:可分为9个等级,此女只应天上有,女神,美女,一般偏上,一般,一般偏下,恐龙,超级恐龙,恶梦
附加需求。
认识途径,喜欢的礼物,婚否,爱好,学历,职业,清纯度,浪漫度,感情需求等等。
记录你认识的所有女孩的资料作为参考值。而执行任务就像OA的流程一样按类别执行,泡妞记录,约会后写下心得。
http://so.csdn.net/so/search/s.do?q=MySQL+5.6+Reference+Manual%E4%B8%AD%E6%96%87%E7%89%88&t=null&o=null&s=null
在打印日志的路径下搜搜关键字在哪个日志文件中   
 find ./ -name "*.*" |xargs grep "CNGProdCataAtomLogic::RemoveCataNodeForGroupRec invoke"
---
import com.google.common.collect.HashBasedTable;  
HashBasedTable<Integer,Integer,String> table = HashBasedTable.create();  
干细胞疗法2
目前比较热门的干细胞有两种。一是诱导多能干细胞(iPS细胞),它是指通过基因转染技术将某些转录因子导入动物或人的体细胞,使体细胞直接重构为胚胎干细胞细胞样的多潜能细胞。二是间充质干细胞(MSCs细胞),它存在于成人体内许多组织内,如骨、软骨、脂肪、皮肤、肌肉、神经、胰腺等,具有多向分化潜能,具有低免疫原性和向缺血或损伤组织归巢的特征,是再生医学中器官修复的理想种子细胞。

干细胞研究是20世纪90年代以来医学和生物学领域中最引人注目的热点之一。1999年,美国《科学》杂志将干细胞研究评为21世纪最重要的10项科研领域之首。当前,干细胞和再生医学的研究已成为自然科学中最为引人注目的领域,其理论的日臻完善和技术的迅猛发展必将在疾病治疗和生物医药等领域产生划时代的成果,是对传统医疗手段和医疗观念的一场重大革命。

从理论上讲,干细胞可以用于临床细胞移植治疗各种疾病和构建人工组织或器官,其适合的疾病包括:组织坏死性疾病如缺血引起的心肌坏死,退行性病变如帕金森综合征,自体免疫性疾病如风湿性关节炎、糖尿病、骨关节疾病等。但是,这些研究大部分仍处于临床试验阶段,距离成为标准药品、用于临床疾病治疗仍有一段路。目前已经成为常规操作的,只有造血干细胞移植治疗血液系统疾病。

(作者:赵春华;中国医学科学院研究员)
干细胞疗法
干细胞(stem cell)的“干”字,译自英文“stem”,意为“树干”。换言之,干细胞就像树的树干,有了树干就可以长出树杈、树叶,并开花、结果。干细胞有两个重要特征:一是有高度的自我更新或自我复制能力;二是能够分化成多种类型的成熟细胞。所谓自我更新是指由一个干细胞分裂为两个细胞。其中一个细胞仍然保持干细胞的一切生物特性,从而保持身体内干细胞数量相对稳定;而另一个细胞则进一步增殖分化为前体细胞和成熟细胞。
按照不同的标准,干细胞又分为多种类型。比如,按照发育潜能,干细胞分为全能干细胞、多能干细胞、单能干细胞三大类。全能干细胞是指能够发育成具有各种组织器官的完整个体潜能的细胞,如受精卵。多能干细胞具有分化出多种细胞组织的潜能,但不具备发育成完整个体的能力,发育潜能受到一定限制,如胚胎干细胞。单能干细胞是指只能向单一方向分化、产生一种或几种密切相关类型的细胞,如造血干细胞、神经干细胞、心脏干细胞等。

根据干细胞所处的发育阶段,干细胞可分为胚胎干细胞和成体干细胞两大类。胚胎干细胞来自囊胚的内细胞团,是一种高度未分化细胞,具有发育的全能性,能分化出成体动物的所有组织和器官。成体干细胞是对胎儿、儿童和成人组织中存在的多潜能干细胞的统称。与胚胎干细胞相比,成体干细胞来源较广,获取相对容易;源于患者自身的成体干细胞在应用时不存在组织相容性的问题,可避免移植排异反应和使用免疫抑制。同时,成体干细胞致瘤风险很低,所受伦理学争议较少,因此具有广阔的应用前景。
直接插入排序
    /** 
     * 直接插入排序 
     *  
     * @param ts 
     */  
    public static <T extends Comparable<? super T>> void insertionSort(T[] ts) {  
        int x;  
        // 有序区:ts[0]  
        // 无序区:ts[1]到ts[ts.length-1]  
        for (int i = 1; i < ts.length; i++) {  
            T tem = ts[i];  
            // 从数组的ts[i]元素开始,向前(有序区)比较  
            for (x = i; x > 0 && tem.compareTo(ts[x - 1]) < 0; x--)  
                ts[x] = ts[x - 1]; // 如果已排序的元素大于新元素,将该元素移到下一位置  
            ts[x] = tem; // 将 ts[i] 放到正确位置上  
        }  
    }  
不同语言对URL的编解码 不同语言对url的编解码
不同语言对URL的编解码   
语言  URL编码  URL解码  
JavaScript  encodeURIComponent  decodeURIComponent  
Java  URLEncoder.encode(url, "UTF-8")  URLDecoder.(url, "UTF-8")  
网址积累
上面列举了很多有名网站的技术架构 :http://highscalability.com/
说到这里岔开一句找人的时候英语好是一个硬性条件,因为英文不好,可能就不愿意读英文资料,而以分享的深度来看现在英文世界仍然有非常明显的优势,比如highscalability,stackoverflow等。不读这类网站上的内容,眼界就窄,随大流可能都随不好。

maven 错误 sun.misc.BASE64Decoder 是 Sun 的专用 API,可能会在未来版本中删除
<plugin >   
    <groupId > org.apache.maven.plugins </groupId >   
    <artifactId > maven-compiler-plugin </artifactId >   
    <version > 2.3.1 </version >   
    <dependencies >   
        <dependency >   
            <groupId > org.codehaus.plexus </groupId >   
            <artifactId > plexus-compiler-javac </artifactId >   
            <version > 1.8.1 </version >   
        </dependency >   
    </dependencies >   
</plugin > 

http://www.360kan.com/ct/P08mbcPUX4auDD.html  
Caused by: java.io.IOException: CreateProcess error=87

燕山立交桥:K160/119, 直达 ,9公里,53分钟
BRT5 直达,11公里,1小时24分钟

CreateProcess error=87 
http://www.sdjnsi.gov.cn/Article/ShowInfo.jsp?articleid=9237
各位好,

       参保协议每人两份,请大家明天上午过来前台直接领取,社保编号00010004555,三个月之后凭此号码去朝山街人民摄影照相进行医保信息采集,不要去早了,单位名称:北京外企营销顾问有限公司济南分公司,去照相的时候告诉工作人员单位名称和社保编号就可以了,费用10元/人。请大家知悉!

http://zhidao.baidu.com/daily/view?id=3425
http://pan.baidu.com/s/1kTggcb9 密码: 9mfn 
网页内的颜色选择器
<OBJECT id=dlgHelper CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width="0px" height="0px" ></OBJECT>
<span id="qrCodeColor2" style="width:25px;height:20px;background-color: ${twoDimensionCode.qrCodeColor2};border-width: 4px;border-style: outset;" onclick="callColorDlg(this,'2');"></span>

function callColorDlg(obj,flag)
{
	sColor = dlgHelper.ChooseColorDlg();
	 //change decimal to hex
	 
	 sColor = sColor.toString(16);
	 //add extra zeroes if hex number is less than 6 digits
	if (sColor.length < 6) 
	{
	  var sTempString = "000000".substring(0,6-sColor.length);
	  sColor = sTempString.concat(sColor);
	}
	 var qrCodeColor=document.getElementById("twoDimensionCode." + obj.id);
	obj.style.background= sColor;
	qrCodeColor.value=sColor;
}
假分页菜单联动 假分页
 private synchronized  List  pageLogic(List itemList) {
	String curpage = StringUtils.defaultIfEmpty(getRequest().getParameter("curpage"),"");
	   if("".equals(curpage)||itemList.size()==0){
		   curpage = "1";
	   }
	   int countOfItem = itemList.size();
	   int pagesize = 20;
	   int start = (Integer.valueOf(curpage)-1)*pagesize;
	   int end = Integer.valueOf(curpage)*pagesize;
	   int pagecount = (countOfItem%pagesize==0)?(countOfItem/pagesize):((countOfItem/pagesize)+1);
	   if(end>countOfItem){
		   end = ((countOfItem/pagesize)*pagesize)+(countOfItem%pagesize);
	   }
	   if(end<=countOfItem && start<=countOfItem && start<=end){
	   itemList = itemList.subList(start, end);
	   }
	  // getRequest().setAttribute("activity", activity);
	   getRequest().setAttribute("countOfItem", countOfItem);
	   getRequest().setAttribute("curpage", curpage);
	   getRequest().setAttribute("pagecount", pagecount);
	return itemList;
}
function goPage(obj){
		document.getElementsByName("issearch")[0].value="";
		var curpage = showFrameList.document.getElementsByName("curpage")[0].value;
		var countOfItem = showFrameList.document.getElementsByName("countOfItem")[0].value;
		var pagecount = showFrameList.document.getElementsByName("pagecount")[0].value;
		//alert("curpage :"+curpage+"  countOfItem :"+countOfItem +" pagecount :"+pagecount +"\n"+document.getElementsByName("issearch")[0].value);
		if("top"==obj){
			document.getElementsByName("curpage")[0].value="1";
			gopage();
		}else if("pre"==obj){
			if((parseInt(curpage,10)-1)<=0){
				alert("已到首页!");
				return;
			}else{
			document.getElementsByName("curpage")[0].value=parseInt(curpage,10)-1;
			gopage();
			}
		}else if("next"==obj){
			if((parseInt(curpage,10)+1)>(parseInt(pagecount,10))){
				alert("已到尾页!");
				return;
			}else{
			document.getElementsByName("curpage")[0].value=parseInt(curpage,10)+1;
			gopage();
			}
		}else if("tail"==obj){
			document.getElementsByName("curpage")[0].value=parseInt(pagecount,10);
			gopage();
		}else {
			var reg = /^\d+$/;
			if(!reg.test(obj)){
				alert("请输入数字!");
				return;
			}
			if(parseInt(obj,10)<1 || parseInt(obj,10)>(parseInt(pagecount,10))){
				alert("输入页数越界!");
			}else{
				document.getElementsByName("curpage")[0].value=parseInt(obj,10);
				gopage();
			}
		}
	}
	function changeActivityList(){
		var rewardPlanType = document.getElementById("rewardPlanType").value;
		var url = "${request.contextPath}/custsvc/salesaward/rewardActivityAction!chgRewardPlanType.action";    
	    var param = "rewardPlanType=" + rewardPlanType+"&isfromcommonaction=true";
	    var ret = execService(url, param);   
	    if(ret != "")
	    {
	        var activitys = ret.split("@_@");
	        var activityList = document.getElementById("activityList");
	        activityList.options.length=0;
	        var tempoption  = document.createElement("option");
	        tempoption.value="";
	        tempoption.innerHTML="请选择";
	        activityList.appendChild(tempoption);
	        for(var i=0;i<activitys.length;i++){
	        	var activityid = activitys[i].split(";")[0];
	        	var activityname = activitys[i].split(";")[1];
	        	var moption = document.createElement("option");
	        	moption.value = activityid;
    			moption.innerHTML = activityname+"("+activitys[i].split(";")[2]+")";
    			activityList.appendChild(moption);
    		}	
	     }else{
		        alert("没有对应档次!");
		        return;
	     }
	}
String类型的XML格式串解析
String str = 
				"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
                   " <privileges> "+
	                   "<privilege id=\"1\">"+ 
	                   "<name>角色管理</name>  "+
		                   "<urls> "+
			                   "<url>/role/toRole</url>  "+
			                   "<url>/role/toAddRole</url>  "+
			                   "<url>/role/addRole</url>  "+
			                   "<url>/role/toUpdateRole</url>  "+
			                   "<url>/role/updateAction</url>  "+
			                   "<url>/role/deleterole</url> "+
		                   "</urls>"+ 
	                   "</privilege> " +
                   "</privileges> ";
		
		Document doc = DocumentHelper.parseText(str);
		//List<Element> e = doc.selectNodes("//privileges/privilege/name");
		List<Element> e = doc.selectNodes("//privileges/privilege/name");
		System.out.println(e.get(0).getText());
Spring整合Ibatis配置 spring整合ibatis配置
applicationcontext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:util="http://www.springframework.org/schema/util"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
                     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                     http://www.springframework.org/schema/util
                     http://www.springframework.org/schema/util/spring-util-2.5.xsd
                     http://www.springframework.org/schema/context
                     http://www.springframework.org/schema/context/spring-context-2.5.xsd
                     http://www.springframework.org/schema/aop
                     http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
                     ">
	<context:annotation-config></context:annotation-config>
	<context:component-scan base-package="service"></context:component-scan>
	<context:component-scan base-package="dao"></context:component-scan>
	<context:component-scan base-package="action"></context:component-scan>
	
		<bean id="mydataSource"  class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
		<property name="driverClassName">
			<value>oracle.jdbc.driver.OracleDriver</value  >
		</property>
		<property name="url">
			<value>jdbc:oracle:thin:@127.0.0.1:1521:orcl</value>
		</property>
		<property name="username">
			<value>scott</value>
		</property>
		<property name="password">
			<value>operater</value>
		</property>
	  </bean>
	<aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
	 <bean id="sqlMapClient"
		class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocations">
			<list>
			 <value>classpath:sqlMapConfig.xml</value>
			</list>
		</property>
		<property name="dataSource" ref="mydataSource" />
	</bean>
</beans>

sqlmapconfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">

<sqlMapConfig>
	<!--  
	<properties
		resource="examples/sqlmap/maps/SqlMapConfigExample.properties" />
	<settings cacheModelsEnabled="true" enhancementEnabled="true"
		lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"
		maxTransactions="5" useStatementNamespaces="false" />
	
	<transactionManager type="JDBC">
		<dataSource type="SIMPLE">
			<property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver" />
			<property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
			<property name="JDBC.Username" value="scott" />
			<property name="JDBC.Password" value="operater" />
		</dataSource>
	</transactionManager>
	-->
	<sqlMap resource="pojo/User.xml" />
	<sqlMap resource="pojo/Admin.xml" />
</sqlMapConfig>

ibatis批量增加:
	public void saveCfgAdminLogDetail(final List<ProductCfgAdminLogDetail> logDetailList)
	{
		getDictSqlMapClientTemplate().execute(new SqlMapClientCallback(){
            public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException 
            {
                executor.startBatch();
                for(ProductCfgAdminLogDetail adminLogDetail : logDetailList)
                { 
                	executor.insert("common.insertCfgAdminLogDetail",adminLogDetail);
                }
                executor.executeBatch(); 
                return null;
            }
        }
        );
	}
数据库死锁
1. 查看被锁的表
SELECT p.spid, a.serial#, c.object_name, b.session_id, b.oracle_username,
       b.os_user_name
  FROM v$process p, v$session a, v$locked_object b, all_objects c
 WHERE p.addr = a.paddr AND a.process = b.process
       AND c.object_id = b.object_id
       
2. 查看是哪个进程锁的 
SELECT sid, serial#, username, osuser FROM v$session  where osuser = '用户名'

3. 杀掉这个进程  alter system kill session 'sid,serial#';
j在网页上加快捷键
<script type="text/javascript">
	if (document.addEventListener){//如果是Firefox
		document.addEventListener("keypress", fireFoxHandler, true);
	}else{
		document.attachEvent("onkeypress", ieHandler);
	}

	function fireFoxHandler(evt){
		if (evt.keyCode == 13){
			$('#form').submit();
		}
	}

	function ieHandler(evt){
		if (evt.keyCode == 13){
			$('#form').submit();
		}
	}
</script>
记事本&地址
表格隔行换色:tr{background-color: expression((this.sectionRowIndex % 2 == 0) ? "#FeFeFF" : "#F0F0FF");
争分夺秒巧复习,勤学苦练创佳绩、攀蟾折桂,舍我其谁。
http://zhidao.baidu.com/question/515224259.html
http://localhost:port/ngportal/services/bcc/emeNotifyService
日不落:http://bbs.csdn.net/topics/390726695
JS模态与非模态对话框:http://zhidao.baidu.com/question/54914280.html
linux java学习: http://blog.csdn.net/zhangjg_blog 
京东项目 :http://bbs.csdn.net/topics/390737966
Spring MVC: http://bbs.csdn.net/topics/390713163
csdn2013薪资调查报告: http://www.csdn.net/article/2014-03-26/2818997
csdn2014薪资: http://bss.csdn.net/cview/reg/?project_id=859&identy_id=898

https://58.251.153.38:3690/svn/AS_BOSS_UNI_SVN/IpTrace/
https://58.251.153.38:3690/svn/AS_BOSS_UNI_SVN/IpTrace/专项工程配置库/BDPP


private boolean checkFileSize(File file,String filetype,PhoneTerminalSaleMgrDO domain){
        InputStream inputStream = null;
        BufferedImage bi = null;
        try
        {
          if(null!=file){
            inputStream = new FileInputStream(file);
            bi = ImageIO.read(inputStream);
            int width =  bi.getWidth();
            int height =  bi.getHeight();
            if("PortalADPic".equals(filetype)){
                if(width!=790||height!=370){
                    uploadRtnMsg += "首页广告尺寸不符合!"+"\n";
                    return false;
                }
            }
            if("ListIconPic".equals(filetype)){
                if(width!=256||height!=128){
                    uploadRtnMsg+="列表图标尺寸不符合!"+"\n";
                    return false;
                }
            }
            if("DetailPic1".equals(filetype)){
                if(width!=388||height!=388){
                    uploadRtnMsg+="详情页图片1尺寸不符合!"+"\n";
                    return false;
                }
            }
            if("DetailPic2".equals(filetype)){
                if(width!=388||height!=388){
                    uploadRtnMsg+="详情页图片2尺寸不符合!"+"\n";
                    return false;
                }
           }
            if("DetailPic3".equals(filetype)){
                if(width!=388||height!=388){
                    uploadRtnMsg+="详情页图片3尺寸不符合!"+"\n";
                    return false;
                }
           }
           if("DetailPic4".equals(filetype)){
               if(width!=388||height!=388){
                   uploadRtnMsg+="详情页图片4尺寸不符合!"+"\n";
                   return false;
               }
           }
          }
        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
            return false;
        }
        catch (IOException e)
        {
            e.printStackTrace();
            return false;
        }finally{
            try
            {
                if(null!=inputStream){
                inputStream.close();
                }
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }

       return true;
    }

ngdev1.CHINA.HUAWEI.COM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.164.129.41)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ngdev)
      (INSTANCE_NAME = ngdev1)
    )
  )

代码刷新
open的或者<a>中用了target="_blank"的在open的子窗口写
<body onunload="window.opener.location.reload();">
如果是iframe的子窗口写
<body onunload="window.parent.location.reload();">
应该要的是第一个吧,第二个好像没有关闭一说
window.location.reload();

大数据与其他技术的薪资分析:http://www.csdn.net/article/2013-09-29/2817089-big-data-apple-driving-industrys-biggest-salaries

                               _(\_/) 
                             ,((((^`\
                            ((((  (6 \ 
                          ,((((( ,    \
      ,,,_              ,(((((  /"._  ,`,
     ((((\\ ,...钱钱钱,((((   /    `-.-'
     )))  ;'    `"'"'""((((   (      
    (((  /            (((      \
     )) |                      |
    ((  |        .       '     |
    ))  \     _ '      `t   ,.')
    (   |   y;- -,-""'"-.\   \/  
    )   / ./  ) /         `\  \
       |./   ( (           / /'
       ||     \\          //'|
       ||      \\       _//'||
       ||       ))     |_/  ||
       \_\     |_/          ||

ClientAndService和线程池
                                                         Service
package pSocket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Vector;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;

public class Tserver {
	private  ServerSocket ss;
	private  ExecutorService threadpool;
	private BlockingQueue<String> msgQueue;
private Vector<PrintWriter> clients = new Vector<PrintWriter>();;
	public Tserver() {
		try {
			/**
			 * 打开服务器端Socket时要捕获异常 最常见的这里出现的问题就是申请的端口号已经被其他程序占用了
			 * 错误信息中会出现JVM——BIND的信息 这里的端口不是正真意义上的端口,是一个抽象的概念
			 * 我们可以理解为是我们的程序在操作系统上想使用网络通信,而向操作系统注册的一个编号
			 * 将外界发送信息过来时,操作系统就根据信息请求的端口号,将这段信息交给我们的程序去处理
			 */
			this.ss = new ServerSocket(8088);
			threadpool = Executors.newCachedThreadPool();
			//初始化双缓冲队列
			msgQueue = new LinkedBlockingQueue<String>();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		System.out.println("server is start ....");
		System.out.println("waiting for client.... ");
		/*
		 * ss.accept() 该方法用于在8080端口进行等待,等待客户端的连接
		 * 当一个客户端通过IP于端口号连接上时,会返回这个客户端的Socket与其开始通信。
		 * 这个方法就是一盒阻塞的方法,若客户端一直不连接,该方法就一直不能执行完毕
		 */
		Tserver ts = new Tserver();
		ts.start();
	}

	public void start() {
		try {
			while (true) {
				Socket s = ss.accept();
				clients.add(new PrintWriter(s.getOutputStream()));
				System.out.println("one client contact...");
				// new Thread(ts.new Handler(s)).start();
				/**
				 * 将并发执行的任务交给线程池,让线程池分配空线程来运行。线程池在运行完任务后会自动回首
				 */
				threadpool.execute(new Handler(s));
				sendInfoToChientHander handler = new sendInfoToChientHander();
				Thread t = new Thread(handler);
				t.start();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 定义一个线程体,该线程用来并发操作 每一个线程用来与客户端进行交流,获取客户端发来的信息
	 */
	private class Handler implements Runnable {
		Socket client = null;

		public Handler(Socket s) {
			this.client = s;
		}

		public void run() {
			try {
				BufferedReader bf = new BufferedReader(new InputStreamReader(
						client.getInputStream()));
				String info = "";
				while ((info = bf.readLine()) != null) {
					//System.out.println(client.getRemoteSocketAddress()+info);
					//当读取到客户端发来的信息后,就将这条信息放入双缓冲队列,等待被转发
					msgQueue.add(info);
					
/*					for(int i=0;i<clients.size();i++){
						clients.get(i).println(client.getRemoteSocketAddress()+"---"+info);
						clients.get(i).flush();
					}*/
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
//该线程只有一个实例,用于循环读取双缓冲队列中信息,并转发给所有用户
private class sendInfoToChientHander implements Runnable{

	public void run() {
		//1  循环读取双缓冲队列
		while(true){
			int size = msgQueue.size();
			for(int i=0;i<size;i++){
				//从队列中获取一条信息
				String info = msgQueue.poll();
				//转发给所有用户
				for(PrintWriter writer:clients){
					writer.println(info);
					writer.flush();
				}
			}
			//每次将所有信息都转发后停顿一下
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	
}
	
}

                                                 Client
package pSocket;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

public class Tclient {
	private Socket s = null;

	public Tclient() {
		try {
			s = new Socket("127.0.0.1", 8088);
			/**
			 * 192.168.105.105
			 * 172.16.5.109 客户端socket用于来连接服务器 构造参数1 服务器IP 构造方法2:服务器端申请的端口号(8080)
			 */
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		Tclient ts = new Tclient();
		ts.start();
	}
	
	public void start (){
		try {
			getservice hander = new getservice(s);
			Thread t = new Thread(hander);
			t.start();
			PrintWriter op = new PrintWriter(s.getOutputStream());
			// new DataInputStream(System.in).readUTF()
			BufferedReader s = new BufferedReader(new InputStreamReader(
					System.in));
			String info = "";
			while ((info = s.readLine()) != null) {
				op.println(info);
				op.flush();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	private class getservice implements Runnable{
		Socket sc ;
		public getservice(Socket sc){
			this.sc = sc;
		}
		public void run() {
			try {
				BufferedReader bf = new BufferedReader(new InputStreamReader(sc.getInputStream()));
				String info = "";
				while((info=bf.readLine())!=null){
					System.out.println(info);
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
		
	}
}
Socket与ServerSocket
ServerSocket运行在服务端,等待客户连接,
Socket用于连接指定服务器的指定端口,运行在客户端

线程池
当我们需要并发执行任务时,会频繁的创建线程,并在执行任务后销毁线程,因为创建线程和销毁线程的性能开销比较大
,对程序执行的效率影响较高。所以我们使用令一种方式
首先创建一批线程,当有任务需要执行时,取出一个空线程去执行该任务,当任务执行结束后,将线程回收,
等待下次执行任务,这样我们就节省
出创建和销毁线程,从而提高程序的运行效率]
线程池和现实生活中公交总站很相似

 java 中的线程池
 ExecutorService 实现了线程池的功能
创建线程池的方法需要使用线程池工具类Executors
Executors.newCachedThreadPool():不够自动扩容,有过多闲置线程则杀掉,收缩线程池
 创建一个可以根据需要创建线程的线程池
 Executors.newFixedThreadPool(int size)
 创建一个指定大小的线程池,都不销毁

 Executors.newSchedualedThreadPool(int size)
 创建一个指定大小的线程池,可以指定任务一个延迟时间,在超过这个时间后运行任务
 Executors.newSingleThreadExecutor()
 创建一个只有一个线程的Executor

 双缓冲队列
 在存取同步的基础上,可以保证和取可以异步操作。比单缓冲效率要高一些
 
 BlockingDeque类
 双缓冲队列
 
 实现类
 ArrayBlockingQueue
 规定大小的双缓冲队列,其构造方法要求传入一个int值,指定队列长度,存取数据本着先进先出原则
 
 LinkedBlockingQueue
 不定长度的双缓冲队列,队列最大值可以使int最大值,该队列提供
 了一个带有 int值的构造方法,可以变为定长的队列
 
 priorityBlockingQueue:
 类似于LinkedBlockingQueue,但是存取数据不是本着先进先出的原则,
 而是本着自然排序的原则或者在构造方法中传入比较器,按照比较规则存取
 
 SynchronousQueue
 特殊的队列,存取必须满足存一次取一次的顺序
 
 
HTML,CSS,JS笔记
day01
王春梅  email:  wangcm@tarena.com.cn  QQ :1838367529

软件
	可执行的桌面应用程序---.exe
	web 类型的应用程序---B/S 
	手持设备
	分布式
	等

结构
	UI 层----显示和交互
	业务层----JDBC
	数据存储 层----Oracle、IO

Web 类型的应用程序:网站、OA、CRM等
需要的技术:
	客户端技术:浏览器发出请求、显示页面---Web基础

	服务器端技术:侦听、解析、返回页面---JSP+Servlet/PHP/ASP.NET

Web 基础课程:html + CSS + JavaScript
美工:效果图(jpg)/切图/切页面----修改

HTML 课程
一:html 概述和基础语法
	1、html 是一种编写网页的解释性的标记语言,结合 CSS 和 JS 实现功能复杂的页面
	2、解释性:翻译,非编译---代码有错误,可能导致效果错误
	3、标记:用一对 <> 括起来的,显示时候会有特定的效果
		封闭类型:成对出现,也叫双标记,比如 <h1></h1>
		非封闭类型:只有一个标记,也叫单标记,比如 <br />(建议) 或者 <br>
		属性:出现在开始标记里,用空格隔开,属性名称="属性值"或者一对单引号
		
		比如
			<h1 align="center" xx="">sss</h1>
	4、术语:元素----标记



	4、显示页面:用浏览器---IE、Google、Firefox、Opera、Safari

二:html 文档的创建
	1、文档的标准结构
版本信息
<html>
	<head></head>
	<body></body>
</html>
	2、版本:严格型、传统型、框架型
	3、head:页面头元素---包含和页面整体信息相关的内容
		title:为页面定义标题
		meta:元数据
		style:样式
		script:脚本代码
	4、body:文档的主体---各种文本以及各种标记

三:文本标记
	1、特殊文本----转义字符
		空格	 
		<	<
		>	>
	2、标题: h1---h6
		h1---一号标题
	3、段落:p----段落间距
	4、换行:<br />
	5、分组元素:
		<div></div>:独占一行
		<sapn></span>:不会影响原有的布局
	6、块级(block)元素和行内(inline)元素
		块级元素:独占一行的元素,比如 h1/p/div
		行内元素:和其他元素在同一行上,比如 span/a

四:图像和链接
	1、图像标记  <img />
		相对路径:<img src="images/a.jpg" />
		绝对路径:<img src="http://ssss/a.jpg" />
	2、超级链接 <a href="">click me</a>
		<a href="users/login.html"></a>
		href="http://www.xxx."
		target="_blank"
	3、不同页面之间的
	4、同一个页面的不同部分之间的
		<a href="#">XXXx</a>---回到顶端
	5、锚点的定义和使用
		实现选择性的在页面的不同位置之间跳转
		<a name="xxx"></a>---锚点
		<a href="#xxx">To XXX</a>


五:列表: ul ol li
	经常会使用嵌套的列表实现导航菜单
	---配合链接,实现导航目录效果

<ul>
	<li>
		电器
		<ul>
			<li>小家电</li>
			<li>白色家电</li>
		</ul>
	</li>
	<li>
		图书
		<ul>
			<li>考试用书</li>
			<li>儿童读物</li>
		</ul>
	</li>
</ul>


六:表格:显示网格数据、布局
	1、表格的基本结构:自上而下,从左到右
		<table>
		<tr>---table row
		<td>---单元格 table defination
	2、常用的属性
		table:border/width/height/cellspacing/cellpadding
		td:width/height/align/valign
	3、表格的其他
		为表格添加标题: <caption>
		行分组:thead/tbody/tfoot
			复杂分组的时候,可以有多个 tbody
	4、不规则表格:设置 td 的跨行或者跨列
		colspan = "3"---横着
		rowspan = "3"---竖着
	5、表格的嵌套:实现复杂布局时
		table 写在 td 里
	
七:表单

八:浮动框架
王春梅  email:  wangcm@tarena.com.cn  QQ :1838367529

软件
	可执行的桌面应用程序---.exe
	web 类型的应用程序---B/S 
	手持设备
	分布式
	等

结构
	UI 层----显示和交互
	业务层----JDBC
	数据存储 层----Oracle、IO

Web 类型的应用程序:网站、OA、CRM等
需要的技术:
	客户端技术:浏览器发出请求、显示页面---Web基础

	服务器端技术:侦听、解析、返回页面---JSP+Servlet/PHP/ASP.NET

Web 基础课程:html + CSS + JavaScript
美工:效果图(jpg)/切图/切页面----修改

HTML 课程
一:html 概述和基础语法
	1、html 是一种编写网页的解释性的标记语言,结合 CSS 和 JS 实现功能复杂的页面
	2、解释性:翻译,非编译---代码有错误,可能导致效果错误
	3、标记:用一对 <> 括起来的,显示时候会有特定的效果
		封闭类型:成对出现,也叫双标记,比如 <h1></h1>
		非封闭类型:只有一个标记,也叫单标记,比如 <br />(建议) 或者 <br>
		属性:出现在开始标记里,用空格隔开,属性名称="属性值"或者一对单引号
		
		比如
			<h1 align="center" xx="">sss</h1>
	4、术语:元素----标记



	4、显示页面:用浏览器---IE、Google、Firefox、Opera、Safari

二:html 文档的创建
	1、文档的标准结构
版本信息
<html>
	<head></head>
	<body></body>
</html>
	2、版本:严格型、传统型、框架型
	3、head:页面头元素---包含和页面整体信息相关的内容
		title:为页面定义标题
		meta:元数据
		style:样式
		script:脚本代码
	4、body:文档的主体---各种文本以及各种标记

三:文本标记
	1、特殊文本----转义字符
		空格	 
		<	<
		>	>
	2、标题: h1---h6
		h1---一号标题
	3、段落:p----段落间距
	4、换行:<br />
	5、分组元素:
		<div></div>:独占一行
		<sapn></span>:不会影响原有的布局
	6、块级(block)元素和行内(inline)元素
		块级元素:独占一行的元素,比如 h1/p/div
		行内元素:和其他元素在同一行上,比如 span/a

四:图像和链接
	1、图像标记  <img />
		相对路径:<img src="images/a.jpg" />
		绝对路径:<img src="http://ssss/a.jpg" />
	2、超级链接 <a href="">click me</a>
		<a href="users/login.html"></a>
		href="http://www.xxx."
		target="_blank"
	3、不同页面之间的
	4、同一个页面的不同部分之间的
		<a href="#">XXXx</a>---回到顶端
	5、锚点的定义和使用
		实现选择性的在页面的不同位置之间跳转
		<a name="xxx"></a>---锚点
		<a href="#xxx">To XXX</a>


五:列表: ul ol li
	经常会使用嵌套的列表实现导航菜单
	---配合链接,实现导航目录效果

<ul>
	<li>
		电器
		<ul>
			<li>小家电</li>
			<li>白色家电</li>
		</ul>
	</li>
	<li>
		图书
		<ul>
			<li>考试用书</li>
			<li>儿童读物</li>
		</ul>
	</li>
</ul>


六:表格:显示网格数据、布局
	1、表格的基本结构:自上而下,从左到右
		<table>
		<tr>---table row
		<td>---单元格 table defination
	2、常用的属性
		table:border/width/height/cellspacing/cellpadding
		td:width/height/align/valign
	3、表格的其他
		为表格添加标题: <caption>
		行分组:thead/tbody/tfoot
			复杂分组的时候,可以有多个 tbody
	4、不规则表格:设置 td 的跨行或者跨列
		colspan = "3"---横着
		rowspan = "3"---竖着
	5、表格的嵌套:实现复杂布局时
		table 写在 td 里
	
七:表单

八:浮动框架

day02CSS
一、CSS 概述	
	1、CSS 的作用:定义网页的外观,统一的方式,实现内容(数据)和表现(样式)分离

	2、CSS 的基础语法:
		样式属性名称1:值1;样式属性名称2:值2
		width:100px;height:200px;
		提出来定义:
			样式选择器
			{
				样式声明;
			}

	3、CSS 的定义方式:
		方式一:内联方式---CSS 样式定义在 html 元素的 style 属性里---重用性和可维护度不好
		方式二:内部样式表---CSS 样式定义在 head 里的 style 元素里
		方式三:外部样式表---CSS 样式定义在单独的 .css 文件里,html 页面上用 link 引入-----优先推荐使用

		a.html----准备多套样式,类似于皮肤的切换
			s1.css---红色
			s2.css---蓝色
			s3.css--黑白色

	4、特征	css(级联/层叠 样式表)
不重复----并集
重复定义-----优先级
		内联 >  内部或者外部(以最后一次定义的为准,覆盖前面的相同部分)		

二、选择器的定义---决定使用样式声明
	1、元素选择器,如 h1/div/p---以html中标记的名称-----为同一类元素定义样式

	2、样式类
		css:     .name {}
		html:    <任元素 class="name" 
------多种元素相同的样式

	3、分类
		CSS:     input.txt {}
		html:      <input class="txt"
	同一种元素下的细分
		<input type="text" />
		<input type="button" />

	4、ID选择器-----对页面上某个元素的唯一定义
		CSS:     #idvalue {}
		html:    <元素 id="idvalue"

	5、派生选择器---利用html元素的层次关系,选中某种结构下的元素
		CSS:    ul li a{XXX}
		html:  <ul><li><a>...

	6、选择器分组----为n多元素定义相同的样式部分
		CSS:       input,a.link,#title,.s1   {XXX}

	7、伪类----有不同的状态
		:link---未访问过的
		:hover---悬浮,悬停
		:active---按下
		:visited---访问过的
		CSS:	某种选择器:link/hover

三:各种样式属性

四:尺寸
	width
	height
	overflow:visible/hidden/scroll/auto(建议)

五:边框
	border:width style color;---4边框
	border-top:1px solid red;
	border-left:2px dotted blue;

	border-left-width:2px;
	border-left-style:dotted;---线型
	border-left-color:blue;

六、边距
	margin:外边距
		margin:20px;---四个方向		
		margin:10px 20px 30px 40px;
		               top  right  bottom left
		margin:10px 20px;---值复制 上,右

		margin-left:10px;---单个方向的边距
		margin-top:20px;
	padding:内边距
		padding:1/2/4;
		padding-left/right:;
	定义边距,可能导致占用的总面积的增加
	特别的取值:
		margin:10px auto;----居中
		auto:由浏览器自动计算左右的边距
七:背景
	1、背景色: background-color:颜色;---纯色
	2、背景图片:
		background-image:url(images/a.jpg);
		background-repeat:repeat/no-repeat/repeat-x/repeat-y;
		background-position:x y;
		background-attachment:scroll/fixed;--附着方式---取值为fixed,背景图像固定,类似于水印的效果

八:文本
	color
	font-size
	font-family:value1,value2,value3;
	font-weight:normal/bold;
	text-align:left/center/right;
	text-decoration:none/underline;
	text-indent:12px;----仅首行缩进
	line-height:20px;---行高

九:表格
	vertical-align:top/middle/bottom;----td里
	border-collapse:separate/collapse;---边框合并
	border-spacing:10px;---边框之间的边距;
十:光标
	cursor:default/pointer/help/....;---光标
	
十一:浮动
	1、页面默认情况下,采用流布局的模式
	2、设置元素浮动,脱离原有的布局,原有的位置不再保留,后续元素补上
		float:none/left/right;
	3、清除浮动元素带来的影响	
		clear:left/right/both;

十二:显示----元素的显示方式
	每个 html 元素都有其默认的显示方式(块级、行内)
	行内元素:高度和宽度---无效
	块级元素:高度和宽度有效
	display:
		none---不显示,结合js代码实现动态显示效果
		block---块级元素
		inline---行内元素

十三:列表的样式
	list-style-type:none/circle/...;
	list-style-image:url();----使用图片作为列表项的标识

十四:定位

JS
一、javascript 概述---js
	1、是一种基于对象和事件驱动的解释性脚本语言,应用于网页的编程处理
	2、JavaScript、JScript/VbScript----W3C
	3、js的书写方式
		直接写在 onxxx 事件中
		<script>块中,onxxx 事件中调用---当前页面的重用
		js 文件中,页面上先使用 <script src="">引入,onxxx 事件中调用---建议使用

二、基础语法
	1、变量
		声明变量  var 名称 = 值;
		变量的数据类型以赋值为准
		标识符:不以数字开头的数字、字母、下划线和 $ ,不能和保留关键字重名

	2、数据类型
		基本类型:string/number/bool
		特殊类型:null/undefined
		复杂类型:Array/Date/Math/....
		
		String类型:字符串,一对双引号或者一对单引号,特殊字符使用转义符(\x,汉字对应一个 \uxxxx)

	3、基本数据类型之间的转换
		隐式转换:规则
		显式转换:使用转换方法
			parseInt/parseFloat/toString
			NaN----not a number
			isNaN("???")---bool,判断是否可以转化为数值:is not a number("??")---true

	4、运算符与表达式
		if(a == b)-----值
		if(a === b)---严格相等-----值和类型
		三元运算符

	5、流程控制
		默认情况下,顺序执行---改变其执行顺序
		条件:if/else、switch/case
		循环:for、while

三、内置对象的使用
	1、js中的对象:基于对象的语言,灵活的使用各种对象
	2、常用的内置对象:String、Number、Math等
	3、String对象
		创建	var s = "mary";
		属性	var n = s.length;
		方法	var s1 = s.substring(1,3);
			toLowerCase/toUpperCase
			split  1,2,3,4
			substring
			charAt
			indexOf/lastIndexOf
			replace/search/match---结合正则表达式使用、实现对string的操作
			replace(/\d{3}/ ,"*")

		正则表达式:js中,放置在 /中间/
		结合匹配标识用:g(global)i(ignour)m(multiline)
			/gcd/gim

	4、Array 对象
创建数组
	var a1 = new Array(3);
	a1[0] = 12;
	a1[1] = "mary";
	a1[2] = true;
	
	var s2 = [12,"mary",true];//简写方式

	var s3= new Array();
	a3[0] = [10,20];
	a3[1] = [30,40];
属性
	length
方法
	XXX.toString()---使用 , 连接成一个字符串,常用于输出数组的内容显示
	XXX.join("|")----使用 | 连接
	concat----数组的加法
	slice-----数组的截取
	reverse
	sort----默认情况下,按照字符比较
		----按照数值比较,先定义一个用于比较规则的方法,将方法作为参数传给 sort

	5、Math 对象---直接使用不需要new
		属性或者方法: Math.round()

	6、Number 对象
		toString
		toFixed(n)---保留小数点后n位

	7、正则表达式对象
正则表达式本身就是一个纯文本的表达式,用来表示对文本的匹配,比如 \d{3}	[a-z]{2,5}		[a-zA-Z0-9]{4}
不同的语言、环境下,有着不同的应用
js中对于正则表达式的应用:
	一:结合string 的对象方法:replace/search/match
	二:直接使用正则表达式对象的方法
		var  r = /\d{3}/;--r 是一个正则表达式对象
		r.test(string)----bool
		常用于验证界面的录入

	8、Date 对象
		创建 	var r = new Date();--当前
			var r = new Date("2013-12-23");
		方法
			getXXX()--getDate()/getMonth
			setXXX()
			toXXX()---得到某种格式的字符串

	9、方法
		a、定义: function Name(x,y,z)
			{
				return XXX;
			}
		b、重载
js不可以实现传统意义上的重载---js中,只要方法重名,以最后一次定义的为准
	方法中可以使用 arguments 得到传入的参数的数组。模拟实现方法的重载
		c、方法和 Function 对象
		d、使用方法时
方式一:方法,与功能相关----function sss(){}
方式二:方法仅为某个方法里所使用,创建一个 Function对象即可-----适用于方法体简单
	var f = new Function("参数1","参数2","方法体");
	使用匿名函数---适用于方法体复杂
	var f = function(){};

	10、全局函数:所有js的对象均可使用
		parseInt/parseFloat
		isNaN
		decodeURI/encodeURI
xxxx.html?name=mary&age=17&sex=%45%65				eval:传入一个字符串,计算或者执行它
		
四:DHTML 应用 dynamic
	1、什么是 DHTML 应用:动态网页效果
	2、对象模型
		window
			history
			location
			navigator
			screen
			event
			document
		对象模型分为两类:DOM(文档对象模型) 和 BOM(浏览器对象模型)
	3、window 对象
	        对话框
		window.alert()
		window.confirm()
		window.prompt()
	       打开新窗口
		window.open(url,name,配置);
		window.close();
	       定时器相关
		周期性
		window.setInterval(func,time);
		window.clearInterval()
		一次性
		window.setTimeout(func,time);
		window.clearTimeout();
<img style="position:relavtive;left:10px;"
img.src
img.style.left += 10;
		
	4.document对象
		html 页面上的每个内容作为一个节点对象----整个文档是一颗节点树,document 对象代表的整个树,树根
		DOM:文档对象模型
		a、查询---找到文档中的某个节点对象
方法一:document.getElementById("")---通过id找到对象或者null
方式二:根据层次关系来查询
	obj.parentNode
	obj.childNodes---节点的数组
	obj.firstChild/lastChild
方式三:根据标签名称查找
	document.getElementsByTagName("input")---节点的数组
	obj.getElementsByTagName("input")[1]

		b、读取信息或者修改信息----知道节点的类型
方式一:将 HTML 标签对象化
	<input     obj.value/type
	<a	obj.href
	<img	obj.src
方式二:元素中间的文本内容-----innerHTML
	<a>text</a>	obj.innerHTML
方式三:样式
	简单样式
	<p style="color:red;">p text</p>
	obj.style.color = "red";
	obj.style.fontSize = "18pt";
	obj.style.backgroundColor = "silver";
	复杂的样式:建议在 样式表 中先定义好
	obj.className = "";

		c、不知道节点对象的类型时----读取数据?
		obj.nodeName----全大写方式,返回当前元素的标签的名称

		d、增加新节点
第一步:创建新的节点对象
	document.createElement("a/input/p");
	<a></a>  <input />  <p></p>
第二步:设置新对象的各信息
第三步:加入
	xxx.appendChild(newObj);---追加
	xxx.insertBefore(newObj,refNode);

		e、删除	
	XXX.removeChild(obj);
	obj.parentNode.removeChild(obj);

	5、HTML DOM:基于标准的DOM操作,进行封装,以实现代码的简化,比如:
		var obj = new Option("JDBC","1");
		sel.options[1] = obj;
主要讲解两种封装好的元素
select + option

table+tr+td
	DOM方式: createElement(“tr”)
	HTML DOM 方式:
		table.insertRow(index);
		row.insertCell(index);
			
	6、history 对象:当前浏览器窗口的历史访问记录---确实有历史记录
		history.back();
		history.forward();
		history.length;

	7、screen 对象:代表的就是当前屏幕信息--只能读取,不能修改
		var w = screen.width/availWidth;//ok
		screen.width = 123; //error

	8、location 对象:代表的是 URL 地址栏
		实现对 URL的修改,实现从页面去往另一个页面
		location.href = "url";--保留历史访问记录
		location.replace("url");--替换,没有历史
页面间
	<a>----静态
	window.open----一定打开新窗口
	history.xxx()----受限于历史记录
	location.href----保留历史记录
	location.replace()----不保留
	
	9、navigator 对象
		js中,可以循环对象的所有的属性,如下:
for(var p in navigator)//p代表对象的每个属性
{
}
	
	10、event
a、事件分类
	鼠标事件:onclick/onmouseover/onmouseout/ondblclick
	键盘事件:onkeyup/onkeydown
	状态事件:onblur/onfocus/onchange/onload/onunload

b、如何定义事件
	<元素标签中 onxxx = "function();"----静态
	btnObj.onxxx = Function; ----动态

c、事件可以被取消---常用于页面的提交时
	onxxx = "return true;"---默认值,事件触发
	onxxx = "return false;"---事件被取消

d、事件有冒泡机制---当多层元素定义了相同的事件时,事件从最里层开始触发,层层向上

e、event 对象:封装了和当前事件相关的所有信息
	clientX/clientY----事件发生的点
	srcElement/target---源元素对象,引发当前事件的元素
	使用event对象时,可以直接在 html 页面或者js代码中使用 event 关键字获得对象----firefox 除外
	firefox:只能在 html 页面上使用 event ,js 中不可用

浏览器兼容问题:标准,特殊问题特殊处理(event)

五:js中的面向对象基础
	封装、继承、抽象、多态
	封装:对象相关的数据和行为组织起来
	数据:属性
	行为:方法
	1、使用 Object:使用简单,重用性差----适用于简单数据的封装
		var obj = new Object();
		obj.name = "mary";
		obj.age = 18;
		obj.isGra = true;
	2、类似于 创建一个类:使用较为复杂,重用性好---适用于大多数情况下的封装
创建类
	function Student(n,a)
	{
		this.name = n;
		this.age = a;
	}

		var p1 = new Student("mary",18);
		var p2 = new Student("john",20);

	3、为了传递到服务器端:JSON
		var obj = {
			"name":"mary",
			"age":18
		};

var p1 = {};
var p2 = {};
var array = new Array();
array[0] = p1;
array[1] = p2;
js综合联系
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo01.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script type="text/javascript">
function test(){
var str = "javascript网页教程";
alert(str.charAt(12));
alert(str.charCodeAt(12));
alert(str.lastIndexOf("a"));
}
function test2(){
var arr = new Array("sf",45,"wyon","ieui");
var arr01 = new Array(1,45,50,60);
var arr2 = arr.slice(1,5);
alert(arr2[1]);
alert("reverse:"+arr.reverse());
alert("reverse01:"+arr01.reverse());
}
function sort(){
var arr = new Array(2,100,20,1,35,60,15,70);
alert(arr.sort(sortfuc));
alert("default sort:"+arr.sort()); /*默任安字符排序*/
var str = "一,二,三,四,五,六,日";
alert("split:"+str.split(",")[2]);
}
function sortfuc(a,b){
return a-b;
}
function testmatch(){
var str = "f45fgh45f999fhnn365nh145g9g";
var newstr = str.match(/\d+/g);
alert(newstr.toString());
var r = /\d+/;
alert(r.test("5454s67s9999sfv77"));
}
function testdate(){
var d = new Date();
alert("default format:"+d.toString());
var d2 = new Date("2013-08-17");
alert(d2.getFullYear());
alert(d2.getMonth());
alert(d2.getDay());
alert(d2.getDate());
d2.setDate(d2.getDate()+2)
alert("加两天:"+d2.getDate());
alert("--"+d.toLocaleTimeString());
alert("++"+d.toLocaleDateString());
}
function testmath(){
var num = 215.1241654;
alert(num.toFixed(10));
alert(Math.random());
alert(Math.round(num));
}

function testRegExp(){
var s = new RegExp("^[\u4e00-\u9fa5]+$");
alert("汉字匹配"+s.test("所多行负数的看见返回所看得见"));
var reg1 = /^\d{3,6}$/;
alert(reg1.test("4565"));
var reg2 = new RegExp("^[a-zA-Z0-9]{3,6}$");
alert(reg2.test("5jl8"));
}

function fullscaleFuc(){
var str = "http://www.baidu.com";
var r1 = encodeURI(str);
alert("encodeURI:"+r1);
var r2 = decodeURI(r1);
alert("decodeURI:"+r2);
decodeURI();
}
function testeval(){
var str = "100*100";
alert(str);
alert(eval(str));
}
function testarguments(){
var count = arguments.length;
if(count==4){alert(arguments[0]+arguments[1]+arguments[2]+arguments[3])}
}

function testmethod(){
var m = function(x,y){return x+y} ;
alert(m(8,10));
alert(m)
}

function testmethod2(){
var m = new Function("x","y","return x+y");
alert(m(5,5));
alert(m);
/*
function anonymous(x, y) {
    return x + y;
}
*/
}
function testmethod3(){
var arr = new Array(14,10,36,98,74);
var f = function(x,y){return x-y};
alert(arr.sort(f));
}
</script>
  </head>
  
  <body>
<input type="button" onclick="test();" value="click"/>
<input type="button" onclick="test2();" value="clickArray"/>
<input type="button" onclick="sort();" value="sort"/>
<input type="button" onclick="testmatch();" value="testmatch"/>
<input type="button" onclick="testdate();" value="testdate"/>
<input type="button" onclick="testmath();" value="testmath"/>
<input type="button" onclick="testRegExp();" value="testRegExp"/><br/>
<input type="button" onclick="fullscaleFuc();" value="testfullscaleFuc"/>
<input type="button" onclick="testeval();" value="testeval"/>
<input type="button" onclick="testarguments(15,25,69,78);" value="testargumentsOfNum"/>
<input type="button" onclick="testmethod();" value="testmethod"/>
<input type="button" onclick="testmethod2();" value="testmethod2"/>
<input type="button" onclick="testmethod3();" value="testmethod3"/>
  </body>
</html>
JS猜数字
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>homework003.html</title>

		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="this is my page">
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">

		<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
		<script type="text/javascript">
function count(){
var s = document.getElementById("A").value;
var data = new Array();
for(var i=0;i<s.length;i++){
data[i] = s.charAt(i);
}
var result = data.sort();
var count = 0;
var str = "";
alert(result.toString());
for(var i=0;i<result.length;i++){
if(result[i]==result[i+1]){
     ++count ;
   }else{
   str = str+result[i]+":"+(count+1)+",";
   count=0;
   }
}
alert(str);
}

function guess(){
var p = [01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33];
var f = new Array();
	for(var i=0;i<p.length;i++){
	f[i] = false;
	}
var result = new Array();
var indexr = 0;
while((result.length)!=6){
var num = randomNumber(1,34);
if(!f[num]){result[indexr++] = num;f[num] = true;}else{ continue; }
}
var last = randomNumber(1,17);


alert(result.toString()+"|"+last);

function randomNumber(min, max) {
var n = Math.floor(Math.random() * (max - min)) + min;
return n;
}
}
</script>
	</head>

	<body>
		<form>
			<input id="A" type="text" onblur="count();" />
			<input id="B" type="button" onclick="guess();" />
			
		</form>
	</body>
</html>
JS代码
                                                       Day06
function addfile(){
var f = document.getElementsByTagName("form");
var txt = document.getElementById("txt");
var fil = document.createElement("input");
var newtxt = document.createElement("input");
fil.type="file";
newtxt.type = "text";
newtxt.value = 9;
f[0].appendChild(fil);
f[0].appendChild(document.createElement("br"));
f[0].insertBefore(document.createElement("br"),txt);
f[0].insertBefore(newtxt,txt);
}

function addA(){
var f = document.getElementById("f1");
var na = document.createElement("a");
na.href="http://tts6.tarena.com.cn";
na.target = "_blank";
na.innerHTML = "tts6.0";
f.appendChild(document.createElement("br"));
f.appendChild(na);
}

function addbutton(){
var f = document.getElementById("f1");
var btnobj = document.createElement("input");
btnobj.type = "button";
btnobj.value = "click me";
btnobj.onclick=function(){alert("hello");};
f.insertBefore(btnobj,f.lastChild);
}

var array = new Array();
array[0] = ["please select"];
array[1] = ["SE","JDBC","JSP"];
array[2] = ["HTML","CSS","PHP"];
array[3] = ["C#","DO.NET"];
function change(){
	var index = document.getElementById("sel1").selectedIndex;
	var sel2 = document.getElementById("sel2");
	var data = array[index];
	//sel2.length=0;//used offen
while(sel2.childNodes.length>0){
sel2.removeChild(sel2.firstChild);
}
	for(var i=0;i<data.length;i++){
	var newoption = document.createElement("option");
	newoption.innerHTML = data[i];
	sel2.appendChild(newoption);
	}
}

function change(){
	var index = document.getElementById("sel1").selectedIndex;
	var sel2 = document.getElementById("sel2");
	var data = array[index];
	sel2.options.length=0;//used offen
	for(var i=0;i<data.length;i++){
	var newoption = new Option(data[i],i);
	sel2.add(newoption);
	}
}

function ADDROW(){
var t = document.getElementById("t1");
//alert(t.childNodes[0].nodeName+t.childNodes[1].nodeName);
var row = t.insertRow(t.rows.length);
var cell1 = row.insertCell(0);
cell1.style.backgroundColor="silver";
cell1.innerHTML = document.getElementById("txtname").value;
var cell2 = row.insertCell(1);
cell2.style.backgroundColor="pink";
cell2.innerHTML = document.getElementById("txtprice").value;
}

function mhistory(){
history.back();
}
function mlocation(){
//location.href="http://tts6.tarena.com.cn";//retain history logo
//location.replace("http://tts6.tarena.com.cn");//do not retain history logo
var str = "";
for(var p in navigator){//location navigator screen ,use for search cookie
str += p+":"+navigator[p]+"\n";
//alert(navigator.cookieEnabled);
}
alert(str);
}

var str = "";
function cal(eobj){
var obj = eobj.target || eobj.srcElement;
/*火狐浏览器里边event只能用在html代码里边,所以再此处把even作为参数传入,但是又有火狐不支持
rcElement(),它只能支持target,因此要用target属性,但是其他浏览器有不支持target,为灵活处理
用  ||   来处理,也可以用老办法处理 就是利用navigator判断浏览器类型,从而进行分别处理
*/
	if(obj.nodeName == "INPUT" && obj.type == "button"){
		if(obj.value == "="){
		document.getElementById("result").value = eval(str);
		}else if(obj.value!="clear"){
		str += obj.value;
		document.getElementById("result").value = str;
		}else if(obj.value=="clear"){
		clear();
		}
	}
}

function clear(){
str="";
document.getElementById("result").value = "";
}

function testobject(){
var obj = new Object();
obj.name = "mary";
obj.age = 18;
obj.say = new Function("alert('abcdef')");
//测试
alert(obj.name);
alert(obj.age);
obj.say();
}

//定义student
function Student(n,a){
this.name = n;
this.age = a;
	this.introduceself = function(){
	var str = "i am "+this.name+","+this.age+"years old";
	alert(str);
	}
}
//测试
function teststudent(){
var s1 = new Student("mary",18);
var s2 = new Student("john",20);
alert(s1.name);
s1.introduceself();
alert(s2.name);
s2.introduceself();
}

function testjson(){
var obj={
"name":"mary",
"age":18
}
alert(obj.name);
alert(obj.age);
}
                                                    JS以及JS日期联动菜单
var array1 = new Array();
var array2 = new Array();
function ini(){
	for(var i=0;i<=29;i++){
	array1[i] = i+1;
	}
	for(var i=0;i<=30;i++){
		array2[i] = i+1;
	}
}
/**
用到此函数的html代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>homework.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript" language="javascript" src="../js/day06homework.js"></script>
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
  </head>
  <body>
 <select id="y" onchange="changeday();">
 <option>2008</option> 
 <option>2009</option> 
 <option>2010</option> 
 <option>2011</option> 
 <option>2012</option> 
 <option>2013</option>
 </select>年 
  <select id="m" onchange="changeday();">
  <option>1</option> 
  <option>2</option> 
  <option>3</option> 
  <option>4</option> 
  <option>5</option> 
  <option>6</option> 
  <option>7</option> 
  <option>8</option> 
  <option>9</option> 
  <option>10</option> 
  <option>11</option> 
  <option>12</option> 
  </select>月
  <select id="d" >
  <option></option> 
  </select>日<br/>
<form>
<input type = "button" value="ADD" onclick="add();"/><br/>
<table id="t" border="1">
<tr><td>id</td><td>name</td><td>price</td></tr>
</table><br>
<input type="button" value="SAVE" onclick="save();"/>
</form>  
  </body>
</html>
**/
function changeday(){
ini();
var m = document.getElementById("m").selectedIndex;
var y = document.getElementById("y").selectedIndex;
var d = document.getElementById("d");
var ry = document.getElementById("y").options[y].innerHTML;
//alert(ry);
var validy = ((ry%4==0)&(ry%100!=0))|(ry%400==0);
d.options.length = 0;
	if(validy && m == 1){
		for(var i=1;i<=29;i++){
		var newoption = document.createElement("option");
			newoption.innerHTML = i;
			d.appendChild(newoption);
		}
		//31day
	}else if(m==0|m==2|m==4|m==6|m==7|m==9|m==11){
		for(var i=0;i<array2.length;i++){
			var newoption = document.createElement("option");
			newoption.innerHTML = array2[i];
			d.appendChild(newoption);
		}
		//30day
	}else if(m==3|m==5|m==8|m==10) {
		for(var i=0;i<array1.length;i++){
				var newoption = document.createElement("option");
				newoption.innerHTML = array1[i];
				d.appendChild(newoption);
		}
		//28day
	}else if(m==1){
	for(var i=1;i<=28;i++){
		var newoption = document.createElement("option");
			newoption.innerHTML = i;
			d.appendChild(newoption);
		}
	}
}

function add(){
var t = document.getElementById("t");
var row = t.insertRow(t.rows.length);

var cell = row.insertCell(0);
var txt1 = document.createElement("input");
txt1.type="text";
txt1.id = "1";
cell.appendChild(txt1);

var cell = row.insertCell(1);
var txt2 = document.createElement("input");
txt2.type="text";
txt2.id = "2";
cell.appendChild(txt2);

var cell = row.insertCell(2);
var txt3 = document.createElement("input");
txt3.type="text";
txt3.id = "3";
cell.appendChild(txt3);

}

function product(id,name,price){

}

function save(){
var rows = document.getElementsByTagName("tr");
	for(var i=1;i<rows.length;i++){
		var cells = rows[i].childNodes;
			var id = cells[0].getElementsByTagName("input")[0].value;
			var name = cells[1].getElementsByTagName("input")[0].value;
			var price = cells[2].getElementsByTagName("input")[0].value;
			var obj = {"id":id,"name":name,"price":price};
			alert("id:"+obj.id+"\n"+"name:"+obj.name+"\n"+"price:"+obj.price);
	}
}


                                                   杂类dom操作

function clickme() {
	alert("hello word");
	var s1 = "nihao";
	var s2;
	alert(s1);
	alert(s3);
}
function teststr() {
	var s = "a";
	var n = 1;
	var b1 = true;
	var b2 = false;
	alert(s + n);
	alert(s + b1);
	alert(n + b1);
	alert(b1 + b2);
}
function calutor() {
	var s = document.getElementById("input").value;
	if (isNaN(s)) {
		alert("please input numnber");
	} else {
		var data = parseFloat(s);
		alert(data * data);
	}
}
function judgenumber() {
	var s = document.getElementById("tetn").value;
	var data = parseInt(s);
	var result = data > 10 ? "big" : data == 10 ? "yes" : "small";
	alert(result);
}
function add() {
	var result = 0;
	for (var i = 0; i <= 100; i++) {
		result += i;
	}
	alert(result);
}

function replace(){
var str = document.getElementById("replace").value;
var r = str.replace(/fuck/gi,"*");
document.getElementById("replace").value = r;
}

function method01(){
var a1 = new Array(100,500,566);
alert(a1.toString());
var a2 = [521,"mary",true];
alert(a2.join("|"));
}

                                                  DOM联系
function testconfirm(){
window.confirm("are you ok?");
}
//简单的计算器
function cal(str)
{
	//点击的是 = ,计算显示;否则,拼接显示
	if(str == "=") 	{
		var ex = document.getElementById("txtData").value;
		var result = eval(ex);
		document.getElementById("txtData").value = result;
	}
	else 	{
		document.getElementById("txtData").value += str;
	}
}
function showtime(){
var date = new Date();
document.getElementById("timewin").value=date.toLocaleTimeString();
}
var timer;
function starttime(){
timer = window.setInterval(showtime,1000);
}

function stoptime(){
window.clearInterval(timer);
}

var timerout;
function openfunc(){
timerout = window.open("http://tts6.tarena.com.cn");
}
function openwindow(){
window.setTimeout(openfunc,2000);
}
function canclewindow(){
window.clearTimeout(timerout);
}

function testDom(){
var image = document.getElementById("image");
image.src = "../image/admin_out.png";
var p01 = document.getElementById("p01");
p01.innerHTML = "hahaha";
p01.style.color = "red";
p01.style.backgroundColor = "gray";
var tb = document.getElementById("t1");
tb.className = "s1";

var select = document.getElementById("sel");
var count = 0;
for(var i = 0;i<select.childNodes.length;i++)
{
	if(select.childNodes[i].nodeName == "OPTION"){
		count++;
	}
}
alert(count);
}

function validname(){
var name = document.getElementById("name").value;
var nameinfo = document.getElementById("nameinfo");
var reg = /^[a-z]{3,5}$/;
if(reg.test(name)){
	nameinfo.className = "success";
	nameinfo.innerHTML = "success!";
	return true;
	}else{
	nameinfo.className = "fail";
	nameinfo.innerHTML = "fail!";
	return false;
	}
}

function validage(){
var name = document.getElementById("age").value;
var nameinfo = document.getElementById("ageinfo");
var reg = /^\d{2}$/;
if(reg.test(name)){
	nameinfo.className = "success";
	nameinfo.innerHTML = "success!";
	return true;
	}else{
	nameinfo.className = "fail";
	nameinfo.innerHTML = "fail!";
	return false;
	}
}

function validate(){
var r1 = validname();
var r2 = validage();
if(r1&&r2){
alert("save success!");
return true;
}else{
alert("save fail!");
return false;
}
}

function increase(butobj){
var childs = butobj.parentNode.childNodes;
	for(var i=0;i<childs.length;i++){
	var node = childs[i];
		if(node.nodeName == "INPUT" && node.type == "text"){
			var count = parseInt(node.value);
			count++;
		node.value = count.toString();
		}
	}
	caltal();
}
function decrease(butobj){
var childs = butobj.parentNode.childNodes;
	for(var i=0;i<childs.length;i++){
		var node = childs[i];
		if(node.nodeName == "INPUT" && node.type == "text"){
			 var count = parseInt(node.value);
			 if(count>0){
			 		count--;
			 		node.value = count.toString();
			 }
		 }
	}
	caltal();
}

function caltal(){
var t = document.getElementById("table1");
var rows = t.getElementsByTagName("tr");
var total = 0;
	for(var i=1;i<rows.length;i++){
		var cells = rows[i].getElementsByTagName("td");
		var price = cells[1].innerHTML;
		var quanlity = cells[2].getElementsByTagName("input")[1].value;
		var sum = parseFloat(price) * parseFloat(quanlity);
		cells[3].innerHTML = sum.toFixed(2);
		total+=sum;
	}
	document.getElementById("totals").innerHTML = total.toFixed(2);
}
Admin.html(CSS JS)
                                                       HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>demo02.html</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    	<script language="javaScript" src="../js/admin.js"></script>
		<link href="admin.css" type="text/css" rel="stylesheet" />
	</head>
	<body>
		<!--header部分-->
		<div id="header"><img src="../image/logo.png"/><a href="#">退出</a>
		</div>
		<!--navi部分-->
		<div id="navi">
		<ul id="menu">
			<li><a class="index" href="#" ></a></li>
			<li><a class="role" href="#" ></a></li>
			<li><a class="admin" href="#" ></a></li>
			<li><a class="cost" href="#" ></a></li>
			<li><a class="account" href="#" ></a></li>
			<li><a class="service" href="#" ></a></li>
			<li><a class="bill" href="#" ></a></li>
			<li><a class="view" href="#" ></a></li>
			<li><a class="info" href="#" ></a></li>
			<li><a class="passwd" href="#" ></a></li>
		</ul>
		</div>
		<!--主要数据部分-->
		<div id="main">
		<!-- 操作结果提示 -->
		<div id="result" class="fail">
		<span>Save Success!</span>
		<img src="../image/close.png" onclick="closediv();"/>
		</div>
			<!--操作按钮部分-->
			<div id="operater"><input type="button" value="新增"/></div>
			<!--数据表格部分-->
			<div id="dataList">
			<table id="datatable">
			<tr class="tableheader"><td><input type="checkbox" onclick="selectall();" />全选</td><td>管理员</td><td>姓名</td><td>拥有角色</td><td></td></tr>
			<tr>
				<td><input type="checkbox"/></td><td>100</td><td>老三</td><td>角色管理员</td><td>
				<input class="modify" type="button" value="修改"   onclick="modify();"/>	
				<input class="delete" type="button" value="删除"   onclick="del();"/>
			</td>
			</tr>
		  	<tr>
		  	<td><input type="checkbox"/></td><td>101</td><td>光头强</td><td>业务管理员</td><td>
				<input class="modify" type="button" value="修改"   onclick="modify();" />	
				<input class="delete" type="button" value="删除"   onclick="del();"/>
			</td></tr>
			<tr><td><input type="checkbox"/></td><td>102</td><td>宇智波.佑</td><td>超级管理员</td><td>
				<input class="modify" type="button" value="修改"  onclick="modify();"/>	
				<input class="delete" type="button" value="删除"  onclick="del();"/>
			</td></tr>
			<tr><td><input type="checkbox"/></td><td>103</td><td>瘪三</td><td>市场管理员</td><td>
					<input class="modify" type="button" value="修改" onclick="modify();"/>	
					<input class="delete" type="button" value="删除" onclick="del();"/>
			</td></tr>
			<tr><td><input type="checkbox"/></td><td>104</td><td>葛二蛋</td><td>财务管理员</td><td>
				<input class="modify" type="button" value="修改"  onclick="modify();"/>	
				<input class="delete" type="button" value="删除"   onclick="del();"/>
			</td></tr>
			</table>
			</div>
			<!--分页的页码部分-->
			<div id="pages">   
			<table><tr>
			<td>
			<span><a href="#">></a></span>
			<span><a href="#">5</a></span>
			<span><a href="#">4</a></span>
			<span><a href="#">3</a></span>
			<span><a href="#">2</a></span>
			<span><a href="#">1</a></span>
			<span><a href="#"><</a></span>
			</td>
			</tr>
			</table>
			</div>
		</div>
		<!--页脚部分-->
		<div id="footer">
		<p><源自北美的技术,最优秀的师资最真实的企业环境,最实用的实践项目></p>
		<p>版权所有©加拿大IT培训集团公司</p>
		</div>
	</body>
</html>

                                                       CSS
body{
padding:0px;
margin:0px;
background-image:url(../image/body_bg.png);
background-repeat:repeat-x;
color:white;
font-family:temes;
font-size:10pt;
}
div{border:1px solid blue;
margin:0px auto;
}
#main{width:950px;height:410px;
border:5px solid #8ac1db;
background-color:#e8f3f8;
position:relative;
}
#navi{width:100%;height:91px;
background-image:url(../image/navigation.png);
background-repeat:repeat-x;
}
#header,#footer{width:960px;}
#header a{color:white;text-decoration:none;
line-height:61px;margin-right:40px;font-weight:10pt;}
#header a:hover{font-weight:bold;text-decoration:underline;}
#header{height:61px;text-align:right;
background-image:url(../image/top_bg.png);
background-repeat:no-repeat;}
#operater,#dataList,#pages{width:910px;}
#operater{height:30px;}
#dataList{height:340px;}
#pages{height:28px;}
#footer{height:50px; text-align:center;line-height:25px;}
#footer p{margin:0px;padding:0px;clear:right;}
#datatable{
	width:920px;
	background-color:white;
	color:black;
	text-align:center;
	border:1px solid #ccc;
	border-collapse:collapse;
}
#datatable td{
	border:1px solid #ccc;
	height:35px;
}
tr.tableheader{
	background-color:#fbedce;
	font-weight:bold;
	height:40px;
}
#datatable tr:hover{
background-color:#f9f7fd;	
}
#datatable tr.tableheader:hover{
	background-color:#fbedce;
}
input.modify,input.delete{
background-repeat:no-repeat;
background-color:white;
width:60px;
border:0;
background-position:0px 50%;
cursor:pointer;
}
input.modify{
	width:25%;
	background-image:url(../image/modification.png);
}
input.delete{
		width:25%;
		background-image:url(../image/delete.png);
}
/*logo标志*/
#header img{
	float:left;
}
#navi a{
	display:inline;
}
/*导航菜单*/
#menu{
	width:960px;
	list-style-type:none;
	margin:0px auto;
}
#menu li a{
	display:block;
	width:68px;
	height:77px;
}
#menu li{
	float:left;
	margin:0px 14px;
}
a.index{background-image:url(../image/index_out.png);}
a.role{background-image:url(../image/role_out.png);}
a.admin{background-image:url(../image/admin_out.png);}
a.cost{background-image:url(../image/fee_out.png);}
a.account{background-image:url(../image/account_out.png);}
a.service{background-image:url(../image/service_out.png);}
a.bill{background-image:url(../image/bill_out.png);}
a.view{background-image:url(../image/report_out.png);}
a.info{background-image:url(../image/information_out.png);}
a.passwd{background-image:url(../image/password_out.png);}
#operater input{
	background-image:url(../image/btn_bg.png);
	background-repeat:no-repeat;
 margin-left:840px;
  margin-top:4px;
  border:0;
}
#pages table{
			margin:0px auto;
}
#pages table td span a{
	 	color:black;
	 	font-weight:bold;
	 	margin-left:50%;
}
#pages table td span{
 		width:40px;
 		float:right;
}
#pages table td span:hover{
background-color:#cddde4;
border:1px solid #97b9c9;
color:#067db5;
cursor:pointer;
}
#pages table td span:visited{
background-color:white;
border:1px solid #89bdd8;
color:#067db5;
}

#result{
	width:400px;
	height:70px;
	background-color:#fdecec;
	background-repeat:no-repeat;
	background-position:10px 50%;
	position:absolute;
	left:300px;
	top:150px;
	display:none;
}
#result span{
	line-height:70px;
	margin-left:50px;
}
#result img{
	float:right;
}
div.success{
		border:1px solid #f57676;
		background-image:url(../image/ok.png);
		color:#aff6606;
}
div.fail{
		border:1px solid red;
		background-image:url(../image/warning.png);
		color:red;
}

                                                      JS
function modify(){
var div = document.getElementById("result");
div.style.display = "block";
}

function closediv(){
var div = document.getElementById("result");
div.style.display = "none";
}

function del(){
window.confirm("Do you want to delete...");
var fail = document.getElementById("result");
var sp = fail.getElementsByTagName("span")[0];
sp.innerHTML = "delete fail!";
fail.style.display = "block";
}

function selectall(){
var rows = document.getElementById("datatable").getElementsByTagName("tr");
//alert("sdfhk");
if(rows[0].getElementsByTagName("td")[0].getElementsByTagName("input")[0].checked==true){
		for(var i=1;i<rows.length;i++){
			var box = rows[i].getElementsByTagName("td")[0].getElementsByTagName("input")[0];
			if(box.checked=false){
			box.checked=true;
			}else{
			box.checked = true;
			}
		}
	}else{
			for(var i=1;i<rows.length;i++){
			var box = rows[i].getElementsByTagName("td")[0].getElementsByTagName("input")[0];
			if(box.checked=true){
			box.checked=false;
			}else{
			box.checked = false;
			}
		}
	}
}
类加载机制考察题(变态级)
    public class ExA {  
        //private static ExA a = new ExA();  
        static {  
            System.out.println("父类--静态代码块");  
        }  
      
        public ExA() {  
            System.out.println("父类--构造函数");  
        }  
      
        {  
            System.out.println("父类--非静态代码块");  
        }  
      
        public static void main(String[] args) {  
            new ExB();  
        }  
    }  
      
    class ExB extends ExA {  
        //base
        private static ExB b = new ExB(); 
        static {  
            System.out.println("子类--静态代码块");  
        }  
        //02
      
        {  
            System.out.println("子类--非静态代码块");  
        }  
      //01***
        
        public ExB() {  
            System.out.println("子类--构造函数");  
        } 
        //03

    }  
   /*
    * no parent new 
父类--静态代码块
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
-----------------------base
父类--静态代码块
父类--非静态代码块 --
父类--构造函数     --
子类--非静态代码块 --
子类--构造函数    --
子类--静态代码块  
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
-----------------------01***
父类--静态代码块
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
-----------------------02==>03
父类--静态代码块
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
-----------------------03==>02
父类--静态代码块
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
    */
    
springMVCAnnotation
@Controller
@Scope("prototype")
public class LoginController  {

	@RequestMapping(value="/login.do")
	public String  execute(User user,Model model) throws Exception {
		/*
		 * 自动将表单信息封装到User中
		 * model用于向JSP传值
		 */
		if(user.getName().equals("scott")&&user.getPassword().equals("123")){
			model.addAttribute("name",user.getName());
			return "ok"; //ok.jsp
		}else{
			model.addAttribute("error","用户名或密码错误");
			return "login"; //login.jsp
		}
	}

}


@Controller
@Scope("prototype")
public class TologinControler  {

	@RequestMapping(value="/toLogin.do")
	public String execute(){
		
		return "login";//返回视图名
	}
}

XML:
<!-- 开启组件扫描将DAO,Controler扫描进入容器 -->
	<context:component-scan base-package="controler"></context:component-scan>

<!-- 定义请求和Controller组件,采用支持注解的handlemapping,利用注解方式将请求和Controller方法对应 -->
<bean id="handlemapping" 
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
</bean>

<!-- 定义ViewResult 组件-->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

web.xml

<servlet>
	<servlet-name>springmvc</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:applicationContext.xml</param-value>
	</init-param>
	</servlet>
	<servlet-mapping>
	<servlet-name>springmvc</servlet-name>
	<url-pattern>*.do</url-pattern>
	</servlet-mapping>
aop
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	<filter>
	<filter-name>struts</filter-name>
	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
	<filter-name>struts</filter-name>
	<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
	
	<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


	</bean>
	<!-- 采用AOP将日志的loggerBean作用到Action方法上 -->
	<bean id="loggerbean" class="aspect.LoggerBean">
	</bean>
	
<aop:config>
		<!-- 切入点 -->
			<aop:pointcut id="actionpointcut" expression="within(action..*)"/>
				<!-- 方面 -->
			<aop:aspect id="loggeraspect" ref="loggerbean">
			<!-- 通知 -->
				<aop:around pointcut-ref="actionpointcut" method="log"/>
			</aop:aspect>
			<aop:aspect id="exceptionaspect" ref="exceptionbean">
			<aop:after-throwing pointcut-ref="actionpointcut" method="logException" 
			throwing="e" />
			</aop:aspect>
		</aop:config>

public class ExceptionBean {
	static Logger loger = Logger.getLogger(TestLog4j.class);
	public void logException(Exception e) {
		StackTraceElement [] els= e.getStackTrace();
	//System.out.println(els[0]);
		loger.error("==================程序异常记录======================");
		loger.error(new Date().toString()+"记录异常信息");
		loger.error(els[0]);
	}
}

public class LoggerBean {
static	Logger logger = Logger.getLogger(LoggerBean.class);
	//环绕通知
	public Object log(ProceedingJoinPoint pjp) throws Throwable {
		//提取目标组件类型名
		String classname = pjp.getTarget().getClass().getName();
		//获取当前执行的目标组件的方法名
		String methodname = pjp.getSignature().getName();
		String key = classname+"."+methodname;
		String info =  new Date().toString()+ PropertiesUtil.getValue(key);
		System.out.println(info);
		logger.info("=====================访问记录=========================");
		logger.info(info);
		return pjp.proceed(); //执行目标方法
	}
}


注解方式:


@Component
@Aspect//将此对象定义为一个切面
public class ExceptionBean {
	static Logger loger = Logger.getLogger(ExceptionBean.class);
	//定义通知
	@AfterThrowing(pointcut="within(action..*)" ,throwing="e")
	public void logException(Exception e) {
		System.out.println("ExceptionBean...");
		StackTraceElement [] els= e.getStackTrace();
	//System.out.println(els[0]);
		loger.error("==================程序异常记录======================");
		loger.error(new Date().toString()+"记录异常信息");
		loger.error(els[0]);
	}
}


@Component
@Aspect //将该组件定义成方面组件
public class LoggerBean {
static	Logger logger = Logger.getLogger(LoggerBean.class);
	//环绕通知
@Around("within(action..*)")
	public Object log(ProceedingJoinPoint pjp) throws Throwable {
	System.out.println("LoggerBean...");
		//提取目标组件类型名
		String classname = pjp.getTarget().getClass().getName();
		//获取当前执行的目标组件的方法名
		String methodname = pjp.getSignature().getName();
		String key = classname+"."+methodname;
		String info =  new Date().toString()+ PropertiesUtil.getValue(key);
		System.out.println(info);
		logger.info("=====================访问记录=========================");
		logger.info(info);
		return pjp.proceed(); //执行目标方法
	}
}

Global site tag (gtag.js) - Google Analytics