html元素代码原样显示,而不解析为dom结构

碰到的问题:
title中存在html代码,在浏览器中会被直接解析成为dom元素,希望是原样显示code才行;

转码修改前

转码修改前


转码修改后

转码修改后


实现方法:

//html元素原样显示,而不解析为dom结构
function escapeHtml(unsafe) {
    return unsafe
         .replace(/&/g, "&")
         .replace(/</g, "&lt;")
         .replace(/>/g, "&gt;")
         .replace(/"/g, "&quot;")
         .replace(/'/g, "&#039;");
 }

JS调用:

var title = Base64.decode(video.title);
title = escapeHtml(title);
if(title.length > 24){
   title = title.substring(0,10);
}

http://stackoverflow.com/questions/6234773/can-i-escape-html-special-chars-in-javascript

Java源代码阅读

1、技术基础
在阅读源码之前,我们要有一定程度的技术基础的支持。
假如你从来都没有学过Java,也没有其它编程语言的基础,上来就啃《Core Java》,那样是很难有收获的,尤其是《深入Java虚拟机》这类书,或许别人觉得好,但是未必适合现在的你。
比如设计模式,许多Java源码当中都会涉及到。再比如阅读Spring源码的时候,势必要先对IOC,AOP,Java动态代理等知识点有所了解。
2、强烈的求知欲
强烈的求知欲是阅读源码的核心动力!
大多数程序员的学习态度分为如下几个层次:
完成自己的项目就可以了,遇到不懂的地方就百度一下。
不仅做好项目,还会去阅读一些和项目有关的书籍。
除了阅读和项目相关的书籍之外,还会阅读一些IT行业相关的书籍。
平时会经常逛逛GitHub,找一些开源项目看看。
阅读基础框架、J2EE规范、源码。
大多数程序员的层次都是在第一层,到第五层的人就需要有强烈的求知欲了。
3、足够的耐心
通过阅读源码我们可以学习大佬的设计思路,技巧。还可以把我们一些零碎的知识点整合起来,从而融会贯通。总之阅读源码的好处多多,想必大家也清楚。
但是真的把那么庞大复杂的代码放到你的眼前时,肯定会在阅读的过程中卡住,就如同陷入了一个巨大的迷宫,如果想要在这个巨大的迷宫中找到一条出路,那就需要把整个迷宫的整体结构弄清楚,比如:API结构、框架的设计图。而且还有理解它的核心思想,确实很不容易。
刚开始阅读源码的时候肯定会很痛苦,所以,没有足够的耐心是万万不行的。
如何读Java源码:
团长也是经历过阅读源码种种痛苦的人,算是有一些成功的经验吧,今天来给大家分享一下。
如果你已经有了一年左右的Java开发经验的话,那么你就有阅读Java源码的技术基础了。
1、建议从JDK源码开始读起,这个直接和eclipse集成,不需要任何配置。
可以从JDK的工具包开始,也就是我们学的《数据结构和算法》Java版,如List接口和ArrayList、LinkedList实现,HashMap和TreeMap等。这些数据结构里也涉及到排序等算法,一举两得。
面试时,考官总喜欢问ArrayList和Vector的区别,你花10分钟读读源码,估计一辈子都忘不了。
然后是core包,也就是String、StringBuffer等。 如果你有一定的Java IO基础,那么不妨读读FileReader等类。
建议大家看看《Java In A Nutshell》,里面有整个Java IO的架构图。Java IO类库,如果不理解其各接口和继承关系,则阅读始终是一头雾水。
Java IO 包,我认为是对继承和接口运用得最优雅的案例。如果你将来做架构师,你一定会经常和它打交道,如项目中部署和配置相关的核心类开发。
读这些源码时,只需要读懂一些核心类即可,如和ArrayList类似的二三十个类,对于每一个类,也不一定要每个方法都读懂。像String有些方法已经到虚拟机层了(native方法),如hashCode方法。
当然,如果有兴趣,可以对照看看JRockit的源码,同一套API,两种实现,很有意思的。
如果你再想钻的话,不妨看看针对虚拟机的那套代码,如System ClassLoader的原理,它不在JDK包里,JDK是基于它的。JDK的源码Zip包只有10来M,它像是有50来M,Sun公司有下载的,不过很隐秘。我曾经为自己找到、读过它很兴奋了一阵。
2、Java Web项目源码阅读
步骤:表结构 → web.xml → mvc → db → spring ioc → log→ 代码
① 先了解项目数据库的表结构,这个方面是最容易忘记的,有时候我们只顾着看每一个方法是怎么进行的,却没有去了解数据库之间的主外键关联。其实如果先了解数据库表结构,再去看一个方法的实现会更加容易。
② 然后需要过一遍web.xml,知道项目中用到了什么拦截器,监听器,过滤器,拥有哪些配置文件。如果是拦截器,一般负责过滤请求,进行AOP等;如果是监听器,可能是定时任务,初始化任务;配置文件有如 使用了spring后的读取mvc相关,db相关,service相关,aop相关的文件。
③ 查看拦截器,监听器代码,知道拦截了什么请求,这个类完成了怎样的工作。有的人就是因为缺少了这一步,自己写了一个action,配置文件也没有写错,但是却怎么调试也无法进入这个action,直到别人告诉他,请求被拦截了。
④ 接下来,看配置文件,首先一定是mvc相关的,如springmvc中,要请求哪些请求是静态资源,使用了哪些view策略,controller注解放在哪个包下等。然后是db相关配置文件,看使用了什么数据库,使用了什么orm框架,是否开启了二级缓存,使用哪种产品作为二级缓存,事务管理的处理,需要扫描的实体类放在什么位置。最后是spring核心的ioc功能相关的配置文件,知道接口与具体类的注入大致是怎样的。当然还有一些如apectj等的配置文件,也是在这个步骤中完成。
⑤ log相关文件,日志的各个级别是如何处理的,在哪些地方使用了log记录日志。
⑥ 从上面几点后知道了整个开源项目的整体框架,阅读每个方法就不再那么难了。
⑦ 当然如果有项目配套的开发文档也是要阅读的。
3、Java框架源码阅读
当然了,就是Spring、MyBatis这类框架。
在读Spring源码前,一定要先看看《J2EE Design and Development》这本书,它是Spring的设计思路。注意,不是中文版,中文版完全被糟蹋了。
想要阅读MyBatis的源码就要先了解它的一些概念,否则云里来雾里去的什么也不懂。有很多人会选择去买一些书籍来帮助阅读,当然这是可取的。那么如果不想的话,就可以去官网查看它的介绍(MyBatis网站:http://www.mybatis.org/mybatis-3/zh/getting-started.html),团长也是按照官网上面的介绍来进行源码阅读的。团长认为MyBatis的亮点就是管理SQL语句。
总结
没有人一开始就可以看得懂那些源码,我们都是从0开始的,而且没有什么捷径可寻,无非就是看我们谁愿意花时间去研究,谁的求知欲更强烈,谁更有耐心。阅读源码的过程中我们的能力肯定会提升,可以从中学到很多东西。在我们做项目的时候就会体现出来了,的确会比以前顺手很多。
原文:https://blog.csdn.net/fygu18/article/details/81295187

一分钟教你识别程序员

地铁上有两个人,面红耳赤地争论玛莎拉蒂和兰博基尼哪个性能更好,突然中关村就到了,他们像农民工赶春运似的挤下了车,没错!他们很可能就是传说中的程序员!

HDFS在百度的使用

HDFS在百度的使用:
建议在火狐下查看
[crocodoc width=”700″ height=”500″]

漫游世界建筑群

从俄罗斯西北边陲的基日岛的木结构教堂,到埃及西奈的圣凯瑟琳修道院……这些建筑是如何体现我们人类的意愿、天赋和信念的呢?
BBC巨制《漫游世界建筑群》把世界各地的建筑物被戏剧性的罗列在一起,尽管建筑风格迥异,它们之间竟有着意想不到的联系。
漫游世界建筑群.第一集:

漫游世界建筑群.第二集:

漫游世界建筑群.第三集:

漫游世界建筑群.第四集:

漫游世界建筑群.第五集:

漫游世界建筑群.第六集:

漫游世界建筑群.第七集:

漫游世界建筑群.第八集:

[NHK纪录片]大英博物馆

大英博物馆–英国国家博物馆(British Museum),又名不列颠博物馆,位于英国伦敦新牛津大街北面的大罗素广场,成立于1753年,1759年1月15日起正式对公众开放,是世界上历史最悠久、规模最宏伟的综合性博物馆,也是世界上规模最大、最著名的博物馆之一。博物馆收藏了世界各地的许多文物和珍品,藏品之丰富、种类之繁多,为全世界博物馆所罕见。英国国家博物馆拥有藏品600多万件。由于空间的限制,还有大批藏品未能公开展出。
[NHK纪录片]大英博物馆(1):人类文明的开始:

[NHK纪录片]大英博物馆(2):法老王的荣耀:

[NHK纪录片]大英博物馆(3):壮丽的帕德嫩神殿:

[NHK纪录片]大英博物馆(4):佛教艺术的起源:

[NHK纪录片]大英博物馆(5):沙漠中的宝藏:

[NHK纪录片]大英博物馆(6):神秘的太阳帝国:

利用iframe解决跨域问题

利用iframe解决跨域问题

iframe跨域

iframe跨域


该图要解决的问题说明如下:
在AAA.com域名下的index.htm页面中内嵌了BBB.com域名下的一个页面index.htm,正常情况下iframe内部的index.htm页面是无法访问父页面index.htm中的任何dom对象或者js函数的,因为跨域,但我们经常又需要做一些参数回传的事情怎么办呢?以上的这种实现方式就很好的解决了这个问题;
解决方案的关键优雅之处在于:浏览器虽然会禁止js跨域访问页面中的对象,但对于iframe的层级关系引用并没有做限制,即parent仍然可用;该方案就是利用了2层内嵌iframe、使用第二级iframe中的页面与parent.parent的页面是同域名的关系,从而避免跨域问题实现两个页面间相关数据的传递,本质上就是利用parent.parent实现对父父页面中js的回调!
A域下的页面 enter.jsp

<script type="text/javascript" src="<%=basePath%>userindex/js/ui/jquery.js"></script>
<script type="text/javascript">
function process(par){
	//种cookie
	var strs = par.split("="); //字符分割
	setCookie("cookiename",strs[1],'d30');
}
//程序代码
function setCookie(name,value,time)
{
    var strsec = getsec(time);
    var exp = new Date();
    exp.setTime(exp.getTime() + strsec*1);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString()+";path=/;domain=youku.com";
}
function getsec(str)
{
   var str1=str.substring(1,str.length)*1;
   var str2=str.substring(0,1);
   if (str2=="s")
   {
        return str1*1000;
   }
   else if (str2=="h")
   {
       return str1*60*60*1000;
   }
   else if (str2=="d")
   {
       return str1*24*60*60*1000;
   }
}
</script>
<iframe id="aframe" src="http://www.BBB.com/getCookie.jsp" width="320" height="240"></iframe>

B域下的页面:getCookie.jsp

<script type="text/javascript" language="javascript">
	function getCookie(c_name){
		if(document.cookie.length>0){
		   c_start=document.cookie.indexOf(c_name + "=");
		   if(c_start!=-1){
		     c_start=c_start + c_name.length+1;
		     c_end=document.cookie.indexOf(";",c_start);
		     if(c_end==-1) c_end=document.cookie.length;
		     //alert(unescape(document.cookie.substring(c_start,c_end)));
		     return unescape(document.cookie.substring(c_start,c_end));
		   }
		}
	}
	(function(){
		 //动态创建iframe,利用iframe的src传递cookie值
		 var ifr = document.createElement("IFRAME");
		 document.body.appendChild(ifr);
		 ifr.src = 'http://www.AAA.com/pass.jsp?p='+getCookie("yktk");
	})();
</script>

A域下的页面:pass.jsp

<script type="text/javascript" src="<%=basePath%>userindex/js/ui/jquery.js"></script>
<script type="text/javascript">
(function(){
	//获取iframe的src中的参数
	var paramUrl = window.location.search;
	//调用iframe中的A域中的process方法,把参数传入,完成跨域
	parent.parent.process(paramUrl);
})();
</script>

参考资料: http://blog.csdn.net/sfdev/article/details/5807045