摘要: 今天一早看到园子首页:模拟谷歌今日使用的css动画(46/7689,27)以及里面《喜欢今天的Google LOGO 玛莎·葛兰姆》对google实现这种特效于是就忍不住研究了一番,主要是详细查看了喜欢今天的Google LOGO 玛莎·葛兰姆上拷贝下来的代码;发现js代码有点繁琐,于是拷下来本地调试了一番,去掉无用的代码,顺便把代码注释一下,比较容易阅读。废话少说,看如下代码(html部分):<div id=hplogo><a href="javascipt:void(0)" target="_blank">阅读全文
posted @ 2011-05-12 10:53 dodohua 阅读(1633) 评论(10) 编辑

我在ireport设计的时候,内嵌有网站logo图和一个条形码,结果调试的时候,图形都无法显示,查了网上资料

才知道是

request.getSession().setAttribute( 
                                         ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, 
                                         jasperPrint);

需要把jasperPrint放入session,这样,ireport的图片显示服务器才能访问jasperPrint对象,显示出相应的图像出来

 

ireport显示外部图片的具体步骤:

1.在web-bin设置ireport图片显示服务:

<servlet>
        <servlet-name>ImageServlet</servlet-name>
        <servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>
    </servlet>

<servlet-mapping>
        <servlet-name>ImageServlet</servlet-name>
        <url-pattern>/servlets/image</url-pattern>
    </servlet-mapping>

2.设置ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTEsession

request.getSession().setAttribute( 
                                         ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, 
                                         jasperPrint);

3.设置图片servlet服务的路径:

exporter.setParameter(
                                    JRHtmlExporterParameter.IMAGES_URI,
                                    "/servlets/image?image=");

posted @ 2011-03-16 17:11 dodohua 阅读(774) 评论(0) 编辑

   今天中午在http://news.ycombinator.com/news看到一篇文章标题:

Saved 10 billion DNS queries per month by disabling DNS Prefetching (pinkbike.com)

       禁用DNS 预读取能节省每月100亿的DNS查询

顿时吸引了我的注意力。

首先作者说了自己最近因为DNS查询数比之前增加了4亿个,逼着要订一个每个月1600美元的DNS查询服务

然后又说了什么叫DNS 预读:

DNS prefetching is a fairly recent (added in Safari 7 months ago) enhancement to all the major browsers. After a page loads, the browser looks at all the hosts in the links on the page and in the background proceeds to issue DNS queries to resolve those hostnames.

大意就是浏览器为了加快域名DNS解析速度,会对网页的所有链接先做域名解析

为了证明是浏览器预读所导致作者网站一个月增加800%的DNS查询,作者一一排除了导致增加DNS查询个数的其它因素:

1.DNS TTLs

2.Lots of links/images on other sites(被其他网站盗链)

3.Misconfigured internal services hitting the DNS

然后用Dynect platform平台得出一个作者网站的DNS各种数据统计图,然后与本网站每秒动态网页生成的次数做对比,发现多处了120的DNS查询;也就是每秒多出120次DNS查询是无意义的

然后终于剑指浏览器的DNS预存取技术

然后举例证明,讲了一大堆反思的话,最后说好在可以使用meta 可以设置禁止DNS的预存。

但是我翻遍整个网站,都没有看看怎么设置DNS,只好查看作者网页的源代码

才发现,禁止的代码:<meta http-equiv="x-dns-prefetch-control" content="off" />(作者说测试过程IE8/9没有DNS预读取行为)

不过,浏览器DNS预读其实也是为了我们点击链接的时候省了解析DNS的时间,算是提速吧;除了作者网站动不动就上百评论链接带来的

DNS查询浪费,平常网站一个页面不超过数十个链接,也就没必要禁止DNS预读了。

刚刚发现关于这篇文章的很多有趣的评论:http://news.ycombinator.com/item?id=2306319

posted @ 2011-03-10 19:29 dodohua 阅读(1881) 评论(4) 编辑

编写java web的程序,不可避免都要处理编码问题,最常见的问题就是中文乱码

大概的思路就是重新编码为gbk或者gb2312,分两种情况

一是get和post形式

二是AJax 形式

第一种:GET和POST,取决于你的页面编码,如果你的页面编码为iso8859_1

使用:String str= new String(req.getParameter("str").toString().getBytes("iso8859_1"), "GBK");

或者    String str= new String(req.getParameter("str").toString().getBytes("iso8859_1"), "GB2312");

但是,这里要注意,必须保证你的页面编码也是iso8859_1的,因为,上面的代码的意思是先将你的字符串变为iso8859_1字节流,

然后再转化为GBK编码,如果你页面传过来的编码是utf-8,那么按照上面的方法就会出现:???乱码

你页面是utf-8的,就要使用如下编码:

String str= new String(req.getParameter("str").toString().getBytes("utf-8"), "GBK");

或者    String str= new String(req.getParameter("str").toString().getBytes("utf-8"), "GB2312");

总之get  post 原则很简单,页面什么编码就转化什么字节流转化编码

第二:Ajax传值

这个比较麻烦,据测试,不同的浏览器有不同的对中文编码,怎么办呢?

我们可以采用js的encodeURI()进行统一的编码,然后在后台进行统一的解码

对应的java解码代码:

str= java.net.URLDecoder.decode(str, "UTF-8");

当然,因为他是utf-8编码,所以也可以采用第一种get post 介绍的方法解码(据测试,用 String(req.getParameter("str").toString().getBytes("utf-8"), "GB2312")解码js的encodeURI()时,会出现乱码,所以还是老老实实的使用java.net.URLDecoder.decode(str, "UTF-8");)

不好意思,刚刚查了资料,上面讲的Get方式有错:

Tomcat对于GET请求并不会考虑使用request.setCharacterEncoding方法设置的编码,而会永远使用iso-8859-1编码,而这位朋友使用的正好是GET请求,因此,tomcat将会使用iso-8859-1将提交的字节转换成字符串。

所以,对于使用get方式传值的时候,统一使用String str= new String(req.getParameter("str").toString().getBytes("iso8859_1"), "GBK");当然,前提是你服务器是tomcat

posted @ 2011-03-08 16:13 dodohua 阅读(911) 评论(0) 编辑
摘要: 今天在博客园看到一个比较赞的ie插件,可以用于ie6+的javascript调试插件,省得我们调试的时候老写alert那么麻烦:javascript调试工具今天因为一个联动菜单的返回值问题耗费了我整整一天时间,55555............不过问题的出现总是伴随着痛下的决心——忍无可忍的我找到了调试JS的利器:Companion.JS和Microsoft Script Debugger,下面是转载的一些介绍:做web开发的朋友都清楚,js程序的调试是相当郁闷的,因为首先这种语言语法比较灵活,它是一种弱类型的脚本语言,很多错误是无法控制的,这些不谈,最痛苦的是没有什么好的调试工具,现在的情况阅读全文
posted @ 2011-02-28 09:26 dodohua 阅读(649) 评论(2) 编辑
摘要: 我们从页面传参Get和post方法时,一般传参的属性名称都与数据库的字段名对应。如果我们假设页面传参的属性名称与数据库的字段名一一对应,那么我们在后台使用hibernate赋值时,能不能自动匹配参数,而不需要一个参数属性对应一个映射类的手动写代码呢?利用java反射机制可以实现这个原理:伪代码: get 类的所有属性 loop 属性 开启访问权限 匹配request与类属性值 set 类属性值 = request 关闭访问权限 end具体代码:import javax.servlet.http.HttpServletRequest;import java.lang.reflect.Field;阅读全文
posted @ 2011-02-23 18:30 dodohua 阅读(218) 评论(4) 编辑
摘要: 说实话,从.net转jav最难的不是语法,属性,特性等语言方面的问题,而是使用工具习惯,运行编译环境配置,开源包的使用,调试及错误提示等方面就像拦路虎一样阻碍我的开发进程。 首先从使用myeclip...阅读全文
posted @ 2011-02-18 17:32 dodohua 阅读(189) 评论(0) 编辑
摘要: 1.对于以前困扰的java跨域问题,使用jsonp处理跨域的原理:利用远程加载<script>标签,由于加载机制,浏览器会加载和运行这段脚本,这个时候,在src后面传一个callback参数,参数值是在本地的函数值;这个时候远程后台就可以获取到callback里面的值,然后返回"callback值("和客户端参数对应")"给客户端,由于加载完毕,然后就会执行"callback值("和客户端参数对应")"这段代码,相当于调用本地callback值的函数2.spring的原理:实际上是替代服务端如 S s = new S() 实例化类对象,好处是可以分耦,集成管理各个类的分布,这样当类阅读全文
posted @ 2011-02-14 16:28 dodohua 阅读(82) 评论(0) 编辑
摘要: 今天下午百无聊赖,于是上新浪教育去看看世界名校的公开课:http://edu.sina.com.cn/video/open/选了两个系列课程:耶鲁的心理学导论和MIT的算法导论耶鲁的心理学导论,我看了3个半课时,3.5*50=175分钟(大概时间,每节课的时间有所不同);讲课者是:Paul Bloom想起自己在学校学习选修课的时候,不是逃课就是睡觉,原因无他:为了赚学分,枯燥。但是,我却一直看这个系列教程时间长达175分钟!不得不感叹Paul Bloom的讲课技巧。其实,一直以来我都以为心理学都是些和哲学一样的纯理论的东西,但是看了一部分这个教程后,彻底改变我的看法原来心理学很贴近我们的生活,阅读全文
posted @ 2011-01-29 21:22 dodohua 阅读(139) 评论(0) 编辑
摘要: 概述: 现在简要的介绍Jasperreport 是如何工作的,这样你可以更好的理解iReport 是如何帮助Jasperreport 实现前端的工作,其实这些工作在我们看来就是“脏活”,为什么呢?看看下面的资料就知道了: 首先是要有一个XML文件(一般是以jrxml后缀),那么这个XML文件从那里来呢?做什么用呢? 这个XML 文件就是报表的定义文件,整个报表的每一个细节都在这个XML 文件之中定...阅读全文
posted @ 2011-01-28 17:30 dodohua 阅读(2699) 评论(0) 编辑