﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-JAVA—咖啡馆-随笔分类-【Java知识】</title><link>http://www.blogjava.net/fanyingjie/category/23504.html</link><description>——欢迎访问rogerfan的博客，常来《JAVA——咖啡馆》坐坐，喝杯浓香的咖啡，彼此探讨一下JAVA技术，交流工作经验，分享JAVA带来的快乐！本网站部分转载文章，如果有版权问题请与我联系。</description><language>zh-cn</language><lastBuildDate>Fri, 09 Dec 2016 03:44:14 GMT</lastBuildDate><pubDate>Fri, 09 Dec 2016 03:44:14 GMT</pubDate><ttl>60</ttl><item><title>【转】java实现微信H5支付</title><link>http://www.blogjava.net/fanyingjie/archive/2016/12/07/432059.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Wed, 07 Dec 2016 07:23:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2016/12/07/432059.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/432059.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2016/12/07/432059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/432059.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/432059.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前面做了app微信支付的回调处理，现在需要做微信公众号的支付，花了一天多时间，终于折腾出来了！鉴于坑爹的微信官方没有提供Java版的demo,所以全靠自己按照同样坑爹的文档敲敲敲，所以记录下来，以供自己及后来人参考，不足之处，还请指正。<br><br>首先，我们贴出调用支付接口的H5页面,当然，在这个页面之前，还需要做很多其他的操作，我们一步一步的来。<br><br>坑爹的官方文档给了两个不同的支付接口，在微信公众平台开发中文档的“微信JS-SDK说明文档”中，给出的支付方式是下面被屏蔽的那一部分，而在商户平台的“H5调起支付API”中，又给了一份不同的接口，即下面未屏蔽正常使用的接口。关于坑爹的微信提供了两个不同的支付接口，网上搜索结果也是众说纷纷，所以，只有自己试了。当然，为了简单，我直接试了下面这一种，然后奇迹般的成功了。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2016/12/07/432059.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/432059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2016-12-07 15:23 <a href="http://www.blogjava.net/fanyingjie/archive/2016/12/07/432059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】java二维码生成与解析代码实现</title><link>http://www.blogjava.net/fanyingjie/archive/2015/12/30/428871.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Wed, 30 Dec 2015 02:09:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2015/12/30/428871.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/428871.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2015/12/30/428871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/428871.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/428871.html</trackback:ping><description><![CDATA[<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2px; background-color: #ffffff;">TwoDimensionCode类：二维码操作核心类<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;qrcode;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;java.awt.Color;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.awt.Graphics2D;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.awt.image.BufferedImage;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.io.File;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.io.IOException;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.io.InputStream;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.io.OutputStream;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;javax.imageio.ImageIO;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;jp.sourceforge.qrcode.QRCodeDecoder;<br /><span style="color: #0000FF; ">import</span>&nbsp;jp.sourceforge.qrcode.exception.DecodingFailedException;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;com.swetake.util.Qrcode;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;TwoDimensionCode&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;生成二维码(QRCode)图片<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;content&nbsp;存储内容<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;imgPath&nbsp;图片路径<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;encoderQRCode(String&nbsp;content,&nbsp;String&nbsp;imgPath)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.encoderQRCode(content,&nbsp;imgPath,&nbsp;"png",&nbsp;7);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;生成二维码(QRCode)图片<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;content&nbsp;存储内容<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;output&nbsp;输出流<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;encoderQRCode(String&nbsp;content,&nbsp;OutputStream&nbsp;output)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.encoderQRCode(content,&nbsp;output,&nbsp;"png",&nbsp;7);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;生成二维码(QRCode)图片<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;content&nbsp;存储内容<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;imgPath&nbsp;图片路径<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;imgType&nbsp;图片类型<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;encoderQRCode(String&nbsp;content,&nbsp;String&nbsp;imgPath,&nbsp;String&nbsp;imgType)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.encoderQRCode(content,&nbsp;imgPath,&nbsp;imgType,&nbsp;7);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;生成二维码(QRCode)图片<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;content&nbsp;存储内容<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;output&nbsp;输出流<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;imgType&nbsp;图片类型<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;encoderQRCode(String&nbsp;content,&nbsp;OutputStream&nbsp;output,&nbsp;String&nbsp;imgType)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.encoderQRCode(content,&nbsp;output,&nbsp;imgType,&nbsp;7);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;生成二维码(QRCode)图片<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;content&nbsp;存储内容<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;imgPath&nbsp;图片路径<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;imgType&nbsp;图片类型<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;size&nbsp;二维码尺寸<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;encoderQRCode(String&nbsp;content,&nbsp;String&nbsp;imgPath,&nbsp;String&nbsp;imgType,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;size)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;bufImg&nbsp;=&nbsp;<span style="color: #0000FF; ">this</span>.qRCodeCommon(content,&nbsp;imgType,&nbsp;size);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;imgFile&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;File(imgPath);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;生成二维码QRCode图片</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ImageIO.write(bufImg,&nbsp;imgType,&nbsp;imgFile);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;生成二维码(QRCode)图片<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;content&nbsp;存储内容<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;output&nbsp;输出流<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;imgType&nbsp;图片类型<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;size&nbsp;二维码尺寸<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;encoderQRCode(String&nbsp;content,&nbsp;OutputStream&nbsp;output,&nbsp;String&nbsp;imgType,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;size)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;bufImg&nbsp;=&nbsp;<span style="color: #0000FF; ">this</span>.qRCodeCommon(content,&nbsp;imgType,&nbsp;size);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;生成二维码QRCode图片</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ImageIO.write(bufImg,&nbsp;imgType,&nbsp;output);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;生成二维码(QRCode)图片的公共方法<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;content&nbsp;存储内容<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;imgType&nbsp;图片类型<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;size&nbsp;二维码尺寸<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@return</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;BufferedImage&nbsp;qRCodeCommon(String&nbsp;content,&nbsp;String&nbsp;imgType,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;size)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;bufImg&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Qrcode&nbsp;qrcodeHandler&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Qrcode();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;设置二维码排错率，可选L(7%)、M(15%)、Q(25%)、H(30%)，排错率越高可存储的信息越少，但对二维码清晰度的要求越小</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qrcodeHandler.setQrcodeErrorCorrect('M');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qrcodeHandler.setQrcodeEncodeMode('B');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;设置设置二维码尺寸，取值范围1-40，值越大尺寸越大，可存储的信息越大</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qrcodeHandler.setQrcodeVersion(size);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;获得内容的字节数组，设置编码格式</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">byte</span>[]&nbsp;contentBytes&nbsp;=&nbsp;content.getBytes("utf-8");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;图片尺寸</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;imgSize&nbsp;=&nbsp;67&nbsp;+&nbsp;12&nbsp;*&nbsp;(size&nbsp;-&nbsp;1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bufImg&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;BufferedImage(imgSize,&nbsp;imgSize,&nbsp;BufferedImage.TYPE_INT_RGB);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graphics2D&nbsp;gs&nbsp;=&nbsp;bufImg.createGraphics();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;设置背景颜色</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gs.setBackground(Color.WHITE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gs.clearRect(0,&nbsp;0,&nbsp;imgSize,&nbsp;imgSize);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;设定图像颜色&gt;&nbsp;BLACK</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gs.setColor(Color.BLACK);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;设置偏移量，不设置可能导致解析出错</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;pixoff&nbsp;=&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;输出内容&gt;&nbsp;二维码</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(contentBytes.length&nbsp;&gt;&nbsp;0&nbsp;&amp;&amp;&nbsp;contentBytes.length&nbsp;&lt;&nbsp;800)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">boolean</span>[][]&nbsp;codeOut&nbsp;=&nbsp;qrcodeHandler.calQrcode(contentBytes);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;codeOut.length;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;codeOut.length;&nbsp;j++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(codeOut[j][i])&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gs.fillRect(j&nbsp;*&nbsp;3&nbsp;+&nbsp;pixoff,&nbsp;i&nbsp;*&nbsp;3&nbsp;+&nbsp;pixoff,&nbsp;3,&nbsp;3);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">throw</span>&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Exception("QRCode&nbsp;content&nbsp;bytes&nbsp;length&nbsp;=&nbsp;"&nbsp;+&nbsp;contentBytes.length&nbsp;+&nbsp;"&nbsp;not&nbsp;in&nbsp;[0,&nbsp;800].");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gs.dispose();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bufImg.flush();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;bufImg;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;解析二维码（QRCode）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;imgPath&nbsp;图片路径<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@return</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;decoderQRCode(String&nbsp;imgPath)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;QRCode&nbsp;二维码图片的文件</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;imageFile&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;File(imgPath);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;bufImg&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;content&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bufImg&nbsp;=&nbsp;ImageIO.read(imageFile);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QRCodeDecoder&nbsp;decoder&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;QRCodeDecoder();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;String(decoder.decode(<span style="color: #0000FF; ">new</span>&nbsp;TwoDimensionCodeImage(bufImg)),&nbsp;"utf-8");&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(IOException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Error:&nbsp;"&nbsp;+&nbsp;e.getMessage());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(DecodingFailedException&nbsp;dfe)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Error:&nbsp;"&nbsp;+&nbsp;dfe.getMessage());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfe.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;content;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;解析二维码（QRCode）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;input&nbsp;输入流<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@return</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;decoderQRCode(InputStream&nbsp;input)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;bufImg&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;content&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bufImg&nbsp;=&nbsp;ImageIO.read(input);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QRCodeDecoder&nbsp;decoder&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;QRCodeDecoder();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;String(decoder.decode(<span style="color: #0000FF; ">new</span>&nbsp;TwoDimensionCodeImage(bufImg)),&nbsp;"utf-8");&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(IOException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Error:&nbsp;"&nbsp;+&nbsp;e.getMessage());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(DecodingFailedException&nbsp;dfe)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Error:&nbsp;"&nbsp;+&nbsp;dfe.getMessage());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfe.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;content;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;imgPath&nbsp;=&nbsp;"G:/TDDOWNLOAD/Michael_QRCode.png";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;encoderContent&nbsp;=&nbsp;"Hello&nbsp;大大、小小,welcome&nbsp;to&nbsp;QRCode!"&nbsp;+&nbsp;"\nMyblog&nbsp;[&nbsp;http://sjsky.iteye.com&nbsp;]"&nbsp;+&nbsp;"\nEMail&nbsp;[&nbsp;sjsky007@gmail.com&nbsp;]";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TwoDimensionCode&nbsp;handler&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;TwoDimensionCode();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler.encoderQRCode(encoderContent,&nbsp;imgPath,&nbsp;"png");<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;output&nbsp;=&nbsp;new&nbsp;FileOutputStream(imgPath);<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler.encoderQRCode(content,&nbsp;output);<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(Exception&nbsp;e)&nbsp;{<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("========encoder&nbsp;success");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;decoderContent&nbsp;=&nbsp;handler.decoderQRCode(imgPath);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("解析结果如下：");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(decoderContent);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("========decoder&nbsp;success!!!");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2px; background-color: #ffffff;">TwoDimensionCodeImage&nbsp;类：二维码图片对象</span><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;qrcode;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;java.awt.image.BufferedImage;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;jp.sourceforge.qrcode.data.QRCodeImage;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;TwoDimensionCodeImage&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;QRCodeImage&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;bufImg;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;TwoDimensionCodeImage(BufferedImage&nbsp;bufImg)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.bufImg&nbsp;=&nbsp;bufImg;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;getHeight()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;bufImg.getHeight();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;getPixel(<span style="color: #0000FF; ">int</span>&nbsp;x,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;y)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;bufImg.getRGB(x,&nbsp;y);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;getWidth()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;bufImg.getWidth();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div><img src ="http://www.blogjava.net/fanyingjie/aggbug/428871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2015-12-30 10:09 <a href="http://www.blogjava.net/fanyingjie/archive/2015/12/30/428871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】在JSTL中使用字符串处理函数</title><link>http://www.blogjava.net/fanyingjie/archive/2015/12/19/428734.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Sat, 19 Dec 2015 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2015/12/19/428734.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/428734.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2015/12/19/428734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/428734.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/428734.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 因为在jsf要用到jstl标签，这里做有效的整理。在使用这些函数之前必须在JSP中引入标准函数的声明<br><br><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><br>下面是JSTL中自带的方法列表以及其描述&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2015/12/19/428734.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/428734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2015-12-19 13:48 <a href="http://www.blogjava.net/fanyingjie/archive/2015/12/19/428734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】图文解说：Nginx+tomcat配置集群负载均衡</title><link>http://www.blogjava.net/fanyingjie/archive/2015/03/01/423109.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Sun, 01 Mar 2015 03:18:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2015/03/01/423109.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/423109.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2015/03/01/423109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/423109.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/423109.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 开发的应用采用F5负载均衡交换机，F5将请求转发给5台hp unix服务器，每台服务器有多个webserver实例，对外提供web服务和socket等接口服务。之初，曾有个小小的疑问为何不采用开源的 apache、Nginx软件负载，F5设备动辄几十万，价格昂贵？自己一个比较幼稚的问题，后续明白：F5是操作于IOS网络模型的传输 层，Nginx、apache是基于http反向代理方式，位于ISO模型的第七层应用层。直白些就是TCP UDP 和http协议的区别，Nginx不能为基于TCP协议的应用提供负载均衡。<br><br><br>      了解了二者之间的区别于应用场景，对Nginx产生浓厚的兴趣，阅读张宴的<实战Nginx>（这个85年的小伙子年轻有为羡慕+妒忌），搞 明白了大致原理和配置，Ubuntu10.10，window下对Nginx+tomcat负载均衡做了配置尝试，将全部请求转发到tomcat，并未做 静态，动态分开，图片防盗链等配置。&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2015/03/01/423109.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/423109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2015-03-01 11:18 <a href="http://www.blogjava.net/fanyingjie/archive/2015/03/01/423109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】手机web——自适应网页设计（html/css控制）</title><link>http://www.blogjava.net/fanyingjie/archive/2015/02/13/422901.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Fri, 13 Feb 2015 01:23:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2015/02/13/422901.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/422901.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2015/02/13/422901.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/422901.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/422901.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 就目前形势来看，Web App 正是眼下的一个趋势和潮流，但是，对于Web App的设计可能大家有的不是很了解，下面就将整理好的网页设计的技巧奉献给大家&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2015/02/13/422901.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/422901.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2015-02-13 09:23 <a href="http://www.blogjava.net/fanyingjie/archive/2015/02/13/422901.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】Tomcat内存设置详解</title><link>http://www.blogjava.net/fanyingjie/archive/2014/05/16/413747.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Fri, 16 May 2014 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2014/05/16/413747.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/413747.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2014/05/16/413747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/413747.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/413747.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、常见的Java内存溢出有以下三种：<br><br> <br><br>1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap（堆）溢出<br>JVM在启动的时候会自动设置JVM Heap的值，其初始空间(即-Xms)是物理内存的1/64，最大空间(-Xmx)不可超过物理内存。<br><br>可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap的大小是Young Generation 和Tenured Generaion 之和。<br><br>在JVM中如果98％的时间是用于GC，且可用的Heap size 不足2％的时候将抛出此异常信息。<br><br>解决方法：手动设置JVM Heap（堆）的大小。  <br><br> <br><br>2. java.lang.OutOfMemoryError: PermGen space  ---- PermGen space溢出。<br>PermGen space的全称是Permanent Generation space，是指&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2014/05/16/413747.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/413747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2014-05-16 17:12 <a href="http://www.blogjava.net/fanyingjie/archive/2014/05/16/413747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】JasperReport+iReport高级报表设计实战</title><link>http://www.blogjava.net/fanyingjie/archive/2013/08/29/403433.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Thu, 29 Aug 2013 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2013/08/29/403433.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/403433.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2013/08/29/403433.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/403433.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/403433.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 序言<br>一直以来，报表都是很多项目中一个重要的、不可获取的组成部分。然而其复杂性和专业性又使得程序员不能够也没时间自己设计属于目前手头正在构建的系统的报表模块；即便设计来了又可能由于通用性等原因不能够应用到下一个系统当中，这就导致了报表类库/组件在市场上的火爆。典型的例子就是水晶报表，几乎无处不在。还有一些专门处理中国式报表的组件也陆续出现在软件市场上。然而遗憾的是，他们中的绝大多数都是要收费的--这也无可厚非，毕竟人都是要生存的。所以大多数预算不够充裕的程序员都将目光转向了开源软件，而JasperReport就将是第一个进入他们视线中的佼佼者。<br>然而代码开源不代表我们就可以大大方方的拿来就用了，人家的文档也是要收费的，所以市面上有关于JasperReport的文档虽然也不少，但大多数都集中在简单应用和介绍基本操作的基础之上。对于复杂的报表设计并不能提供良好的帮助。本文将火力集中在相对复杂的报表设计（不包括图片和超连接等对办公系统或过程没有太大用途的页面元素），交叉表的生成等高级报表设计方案。对于那些基本的操作则留给读者自行体会，相信可以为各位解决一些实际问题。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2013/08/29/403433.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/403433.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2013-08-29 10:50 <a href="http://www.blogjava.net/fanyingjie/archive/2013/08/29/403433.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】Jasperreport和iReport使用教程</title><link>http://www.blogjava.net/fanyingjie/archive/2013/08/29/403432.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Thu, 29 Aug 2013 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2013/08/29/403432.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/403432.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2013/08/29/403432.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/403432.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/403432.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.1   简介<br>JasperReport是报表的引擎部分，界面设计是用iReport。为什么选择这两个软件呢？因为这两个软件都是开源的，即免费的(虽然某些文档收费，但是磨灭不了我们使用它的理由)。<br><br>JasperReport是一个报表制作程序，用户按照它制定的规则编写一个XML文件，然后得到用户需要输出的格式文件。它支持输出的文件格式包括PDF，HTML，XML，XLS，CSV等等。<br><br>用JasperReport做报表，可以分为两种方式：<br><br>1、 直接利用程序定义一个报表<br><br>2、 写一个xml文件来描述这个报表，通常需要借助于iReport<br><br>JasperReport做报表时用的都是底层的东西，如线条、静态文本等，底层的好处就是强大、容易控制报表，但缺点就是编写很麻烦。庆幸的是，我们有iReport这个软件，这个软件完全是弥补JasperReport的不足，将底层编写推向可视化，大大的方便了我们。<br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2013/08/29/403432.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/403432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2013-08-29 10:46 <a href="http://www.blogjava.net/fanyingjie/archive/2013/08/29/403432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】spring+velocity+javamail发送模板邮件 </title><link>http://www.blogjava.net/fanyingjie/archive/2013/08/29/403429.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Thu, 29 Aug 2013 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2013/08/29/403429.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/403429.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2013/08/29/403429.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/403429.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/403429.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 有时候当我们注册完的时候系统会提示有一封邮件发送到了你的邮箱，如何做呢？ <br>就要用到spring+velocity+javamail这3个玩意，其实只用了spring，因为其他2个都被spring集成了。 <br>先看代码 &nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2013/08/29/403429.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/403429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2013-08-29 10:19 <a href="http://www.blogjava.net/fanyingjie/archive/2013/08/29/403429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】Java实现屏幕右下角弹出类QQ提示消息</title><link>http://www.blogjava.net/fanyingjie/archive/2013/07/15/401567.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Mon, 15 Jul 2013 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2013/07/15/401567.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/401567.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2013/07/15/401567.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/401567.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/401567.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&nbsp;&nbsp;1import&nbsp;java.awt.BorderLayout;&nbsp;&nbsp;2import&nbsp;java.awt.Color;&nbsp;&nbsp;3im...&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2013/07/15/401567.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/401567.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2013-07-15 10:50 <a href="http://www.blogjava.net/fanyingjie/archive/2013/07/15/401567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java RPC通信机制之SOAP：应用Apache Axis进行Web Service开发</title><link>http://www.blogjava.net/fanyingjie/archive/2011/09/24/359402.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Sat, 24 Sep 2011 02:22:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2011/09/24/359402.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/359402.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2011/09/24/359402.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/359402.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/359402.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: SOAP原意为Simple Object Access Protocol（简单对象访问协议），是一个用于分布式环境的、轻量级的、基于XML进行信息交换的通信协议（SOAP is an XML based protocol used to exchange information throughout a distributed environment）。<br><br>以下是w3c网站上的定义：<br><br>SOAP Version 1.2 (SOAP) is a lightweight protocol intended for exchanging structured information in a decentralized, distributed environment. It uses XML technologies to define an extensible messaging framework providing a message construct that can be exchanged over a variety of underlyi&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2011/09/24/359402.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/359402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2011-09-24 10:22 <a href="http://www.blogjava.net/fanyingjie/archive/2011/09/24/359402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java RPC通信机制之RMI</title><link>http://www.blogjava.net/fanyingjie/archive/2011/09/24/359401.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Sat, 24 Sep 2011 02:21:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2011/09/24/359401.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/359401.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2011/09/24/359401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/359401.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/359401.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在传统的RPC编程接口逐渐淡出人们视线的同时，新的、更便于使用且附加了更多特性的RPC编程接口也不断涌现，CORBA作为分布式对象计算技术的典范，在很长一段时间内极大地吸引了大家的注意，但是由于CORBA规范试图覆盖过多的内容，使得CORBA显得过于复杂，也极大地限制了CORBA的应用范围，本系列将向大家介绍几种轻量级的，更适于在Java开发中使用的RPC编程接口：RMI、XML-RPC、SOAP。<br><br>RMI（Remote Method Invocation）<br>与本系列将介绍的其它两种RPC编程接口不同，RMI（Remote Method Invocation）显得有些老旧，它是在Java-IDL加入J2SE之前被引入的。RMI开发流程与CORBA如出一辙（从出现的时间上无法确定RMI是否是按照CORBA规范定制的），因此，其开发过程相对比较烦琐，但是由于RMI是EJB的基础，因此，它在Java开发中具有十分重要的地位。<br><br>以下是创建远程方法调用的5个步骤：<br><br>1.   定义一个扩展了Remote接口的接口，该接口中的每一个方法必&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2011/09/24/359401.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/359401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2011-09-24 10:21 <a href="http://www.blogjava.net/fanyingjie/archive/2011/09/24/359401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java RPC通信机制之XML-RPC：Apache XML-RPC 3.0开发简介</title><link>http://www.blogjava.net/fanyingjie/archive/2011/09/24/359400.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Sat, 24 Sep 2011 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2011/09/24/359400.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/359400.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2011/09/24/359400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/359400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/359400.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: XML-RPC是一种简单的，轻量级的通过HTTP协议进行RPC通信的规范。本文以Apache XML-RPC 3.0为基础，对XML-RPC的基本原理及Apache XML-RPC 3.0的主要特性进行了讨论和分析。<br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2011/09/24/359400.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/359400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2011-09-24 10:16 <a href="http://www.blogjava.net/fanyingjie/archive/2011/09/24/359400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】电脑端android2.2手机模拟器，打算入手安卓手机的不妨先来尝尝鲜吧</title><link>http://www.blogjava.net/fanyingjie/archive/2011/08/25/357264.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Thu, 25 Aug 2011 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2011/08/25/357264.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/357264.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2011/08/25/357264.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/357264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/357264.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  现在流行安卓系统，鉴于囊中羞涩，买不起手机，所以我就在网上找了个安卓模拟器，特整理了一下，发给大家，对安卓系统感兴趣的朋友不妨拿来解解馋吧。 <br>方法如下： <br>一.安装java JDK 1.6，并配置以下三个环境变量： <br>下载地址 <br>1.添加 <br>变量名：JAVA_HOME <br>变量值：C:\Program Files\Java\jdk1.6.0_10 <br>&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2011/08/25/357264.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/357264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2011-08-25 14:41 <a href="http://www.blogjava.net/fanyingjie/archive/2011/08/25/357264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】tomcat内存设置方法</title><link>http://www.blogjava.net/fanyingjie/archive/2011/01/11/342779.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Tue, 11 Jan 2011 08:57:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2011/01/11/342779.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/342779.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2011/01/11/342779.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/342779.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/342779.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Tomcat内存设置方法<br>windows中大家都知道，JAVA程序启动时都会JVM都会分配一个初始内存和最大内存给这个应用程序。这个初始内存和最大内存在一定程度都会影响程序的性能。比如说在应用程序用到最大内存的时候，JVM是要先去做垃圾回收的动作，释放被占用的一些内存。 <br>   所以想调整Tomcat的启动时初始内存和最大内存就需要向JVM声明，一般的JAVA程序在运行都可以通过中-Xms -Xmx来调整应用程序的初始内存和最大内存:<br>如：java -Xms64m -Xmx128m a.jar.<br>   tomcat的启动程序是包装过的，不能直接使用java -X..... tomcat.*来改变内存的设置。在Tomcat在改变这个设置 <br>有两种方法： <br>1. 适合用%tomcat_home%\bin中的startup.bat脚本启动，需要在环境变量中加上CATALINA_OPTS这个属性 。<br>       如 SET CATALINA_OPTS= -Xms64m -Xmx512m;<br>          ms是最小的，mx是&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2011/01/11/342779.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/342779.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2011-01-11 16:57 <a href="http://www.blogjava.net/fanyingjie/archive/2011/01/11/342779.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】java实现高性能的数据同步</title><link>http://www.blogjava.net/fanyingjie/archive/2010/11/26/339125.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Fri, 26 Nov 2010 06:11:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2010/11/26/339125.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/339125.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2010/11/26/339125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/339125.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/339125.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 首 先在代码与生产库间建立一个Connection，将读取到的数据放在ResultSet对象，然后再与开发库建立一个Connection。从 ResultSet取出数据后通过TestConnection插入到开发库，以此来实现Copy。代码写完后运行程序，速度太慢了，一秒钟只能Copy 一千条数据，生产库上有上亿条数据，按照这个速度同步完要到猴年马月呀,用PreparedStatement批处理速度也没有提交多少。我想能不能用多 线程处理，多个人干活总比一个人干活速度要快。<br>    假设生产库有1万条数据，我开5个线程，每个线程分2000条数据，同时向开发库里插数据，Oracle支持高并发这样的话速度至少会提高好多倍，按照这 个思路重新进行了编码，批处理设置为1万条一提交，统计插入数量的变量使用 java.util.concurrent.atomic.AtomicLong，程序一运行，传输速度飞快CPU利用率在70%~90%，现在一秒钟可 以拷贝50万条记录，没过几分钟上亿条数据一条不落地全部Copy到目标库。&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2010/11/26/339125.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/339125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2010-11-26 14:11 <a href="http://www.blogjava.net/fanyingjie/archive/2010/11/26/339125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】汉语转拼音之pinyin4j</title><link>http://www.blogjava.net/fanyingjie/archive/2010/10/25/336063.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Mon, 25 Oct 2010 02:40:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2010/10/25/336063.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/336063.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2010/10/25/336063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/336063.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/336063.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 汉字转成拼音如果自己实现起来有点麻烦，主要是怕有些汉字转不了，所以就准备使用一个开源的工具Pinyin4j. <br>      pinyin4j是一个支持将中文转换到拼音的Java开源类库，pinyin4j能够根据中文字符获取其对应的拼音，而且拼音的格式可以定制。pinyin4j的主页：http://pinyin4j.sourceforge.net/ <br>      1. 支持简体中文和繁体中文字符； <br>      2. 支持转换到汉语拼音，通用拼音, 威妥玛拼音（威玛拼法）, 注音符号第二式, 耶鲁拼法和国语罗马字； <br>      3. 支持多音字，即可以获取一个中文字符的多种发音； <br>      4. 支持多种字符串输出格式，比如支持Unicode格式的字符ü和声调符号(阴平 "ˉ",阳平"ˊ",上声"ˇ",去声"ˋ")的输出。 <br><br>    为了方便大家使用，我将源文件和jar包一并放上来了，欢迎大家下载。 <br>     废话少说，下面是我建立的一个通用类，有什么不足的地方希望大家指正。 <br>&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2010/10/25/336063.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/336063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2010-10-25 10:40 <a href="http://www.blogjava.net/fanyingjie/archive/2010/10/25/336063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>String.split()方法</title><link>http://www.blogjava.net/fanyingjie/archive/2010/08/05/328059.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Thu, 05 Aug 2010 08:43:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2010/08/05/328059.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/328059.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2010/08/05/328059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/328059.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/328059.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在java.lang包中有String.split()方法，返回是一个数组我在应用中用到一些，给大家总结一下，仅供大家参考：<br><br>1、如果用“.”作为分隔的话，必须是如下写法：String.split("\\."),这样才能正确的分隔开，不能用String.split(".");<br><br>2、如果用“|”作为分隔的话，必须是如下写法：String.split("\\|"),这样才能正确的分隔开，不能用String.split("|");“.”和“|”都是转义字符，必须得加"\\";<br><br>3、如果在一个字符串中有多个分隔符，可以用“|”作为连字符，比如：“acount=? and uu =? or n=?”,把三个都分隔出来，可以用String.split("and|or");使用String.split方法分隔字符串时，分隔符如果用到一些特殊字符，可能会得不到我们预期的结果。 &nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2010/08/05/328059.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/328059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2010-08-05 16:43 <a href="http://www.blogjava.net/fanyingjie/archive/2010/08/05/328059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2使用26 -- Convention插件 </title><link>http://www.blogjava.net/fanyingjie/archive/2010/06/21/324044.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Mon, 21 Jun 2010 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2010/06/21/324044.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/324044.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2010/06/21/324044.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/324044.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/324044.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.1. 设置结果页面路径<br>默认所有的结果页面都存储在WEB-INF/content下，你可以通过设置struts.convention.result.path这个属性的值来改变到其他路径。如：<br><br>Xml代码：<br><br><constant name="struts.convention.result.path" value="/WEB-INF/page" /><br> <br><br> <br><br>则将路径配置到了WEB-INF/page 下。<br><br>1.2. 设置Convention搜索包<br>默认包路径包含action,actions,struts,struts2的所有包都会被struts作为含有Action类的路径来搜索。你可以通过设置struts.convention.package.locators属性来修改这个配置。如：<br><br><constant name="struts.convention.package.locators" value="web,action" /><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2010/06/21/324044.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/324044.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2010-06-21 10:16 <a href="http://www.blogjava.net/fanyingjie/archive/2010/06/21/324044.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>日期操作助手类 </title><link>http://www.blogjava.net/fanyingjie/archive/2010/06/21/324043.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Mon, 21 Jun 2010 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2010/06/21/324043.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/324043.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2010/06/21/324043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/324043.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/324043.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;1/**&nbsp;*//**&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;*&nbsp;日期操作助手类&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;*/&nbsp;&nbsp;&nb...&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2010/06/21/324043.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/324043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2010-06-21 10:15 <a href="http://www.blogjava.net/fanyingjie/archive/2010/06/21/324043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分页助手类</title><link>http://www.blogjava.net/fanyingjie/archive/2010/06/21/324042.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Mon, 21 Jun 2010 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2010/06/21/324042.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/324042.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2010/06/21/324042.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/324042.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/324042.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;1/**&nbsp;*//**&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;*&nbsp;分页操作助手类&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;5public&nbsp;class&nbsp;P...&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2010/06/21/324042.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/324042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2010-06-21 10:13 <a href="http://www.blogjava.net/fanyingjie/archive/2010/06/21/324042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数字操作助手类 </title><link>http://www.blogjava.net/fanyingjie/archive/2010/06/21/324041.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Mon, 21 Jun 2010 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2010/06/21/324041.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/324041.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2010/06/21/324041.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/324041.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/324041.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;1public&nbsp;class&nbsp;NumberHelper&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;Log&nbsp;logger&nbsp;=&nbsp;LogFacto...&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2010/06/21/324041.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/324041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2010-06-21 10:11 <a href="http://www.blogjava.net/fanyingjie/archive/2010/06/21/324041.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】通过分析 JDK 源代码研究 Hash 存储机制</title><link>http://www.blogjava.net/fanyingjie/archive/2010/03/23/316236.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Tue, 23 Mar 2010 01:37:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2010/03/23/316236.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/316236.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2010/03/23/316236.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/316236.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/316236.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员，其中 HashMap 是 Map 接口的常用实现类，HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同，但它们底层的 Hash 存储机制完全一样，甚至 HashSet 本身就采用 HashMap 来实现的。<br>通过 HashMap、HashSet 的源代码分析其 Hash 存储机制<br><br> 集合和引用<br><br>就像引用类型的数组一样，当我们把 Java 对象放入数组之时，并不是真正的把 Java 对象放入数组中，只是把对象的引用放入数组中，每个数组元素都是一个引用变量。<br> <br> <br>实际上，HashSet 和 HashMap 之间有很多相似之处，对于 HashSet 而言，系统采用 Hash 算法决定集合元素的存储位置，这样可以保证能快速存、取集合元素；对于 HashMap 而言，系统 key-value 当成一个整体进行处理，系统总是根据 Hash 算法来计算 key-val&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2010/03/23/316236.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/316236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2010-03-23 09:37 <a href="http://www.blogjava.net/fanyingjie/archive/2010/03/23/316236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 集合框架详解</title><link>http://www.blogjava.net/fanyingjie/archive/2010/03/22/316178.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Mon, 22 Mar 2010 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2010/03/22/316178.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/316178.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2010/03/22/316178.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/316178.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/316178.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: java 集合框架详解 <br>经常会看到程序中使用了记录集，常用的有Collection、HashMap、HashSet、ArrayList，因为分不清楚它们之间的关系，所以在使用时经常会混淆，以至于不知道从何下手。在这儿作了一个小例子，希望有助于帮大家理顺思路。 <br>首先看一下它们的关系： <br>Collection <br>--List：-----------------------以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。 <br>      ---ArrayList <br>      ---LinkedList <br>      ---Vector <br>--Set ：----------------------- 不含有重复的元素 <br>      --- HashSet <br>      --- TreeSet <br>Map <br>      ---HashMap <br>      ---HashTable <br>      ---TreeMap &nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2010/03/22/316178.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/316178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2010-03-22 15:47 <a href="http://www.blogjava.net/fanyingjie/archive/2010/03/22/316178.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】Spring Security 2 配置精讲</title><link>http://www.blogjava.net/fanyingjie/archive/2009/12/18/306574.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Fri, 18 Dec 2009 08:07:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2009/12/18/306574.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/306574.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2009/12/18/306574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/306574.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/306574.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 论坛上看了不少Spring Security的相关文章。这些文章基本上都还是基于Acegi-1.X的配置方式，而主要的配置示例也来自于SpringSide的贡献。 <br><br>众所周知，Spring Security针对Acegi的一个重大的改进就在于其配置方式大大简化了。所以如果配置还是基于Acegi-1.X这样比较繁琐的配置方式的话，那么我们还不如直接使用Acegi而不要去升级了。所以在这里，我将结合一个示例，重点讨论一下Spring Security 2是如何进行配置简化的。 <br><br>搭建基础环境 <br><br>首先我们为示例搭建基本的开发环境，环境的搭建方式，可以参考我的另外一篇文章：http://www.javaeye.com/wiki/struts2/1321-struts2-development-environment-to-build &nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2009/12/18/306574.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/306574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2009-12-18 16:07 <a href="http://www.blogjava.net/fanyingjie/archive/2009/12/18/306574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】java 调用命令 备份mysql数据库 </title><link>http://www.blogjava.net/fanyingjie/archive/2009/08/18/291665.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Tue, 18 Aug 2009 09:38:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2009/08/18/291665.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/291665.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2009/08/18/291665.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/291665.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/291665.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 首先，设置mysql的环境变量（在path中添加%MYSQL_HOME%\bin），重启电脑。   <br>完整代码：   <br>    /**  <br>     * @param args  <br>     */  <br>    public static void main(String[] args) {   <br>        /*  <br>         * 备份和导入是一个互逆的过程。  <br>         * 备份：程序调用mysql的备份命令，读出控制台输入流信息，写入.sql文件；  <br>         * 导入：程序调用mysql的导入命令，把从.sql文件中读出的信息写入控制台的输出流  <br>         * 注意：此时定向符">"和"<"是不能用的  <br>         */  <br>        backup();   <br>        load();   <br>    }   <br>&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2009/08/18/291665.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/291665.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2009-08-18 17:38 <a href="http://www.blogjava.net/fanyingjie/archive/2009/08/18/291665.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】用java实现打印功能</title><link>http://www.blogjava.net/fanyingjie/archive/2009/08/18/291603.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Tue, 18 Aug 2009 01:59:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2009/08/18/291603.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/291603.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2009/08/18/291603.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/291603.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/291603.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 用java实现打印，java.awt中提供了一些打印的API,要实现打印，首先要获得打印对象，然后继承Printable实现接口方法print，以便打印机进行打印，最后用用Graphics2D直接输出直接输出。<br>下面代码实现了简单的打印功能：&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2009/08/18/291603.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/291603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2009-08-18 09:59 <a href="http://www.blogjava.net/fanyingjie/archive/2009/08/18/291603.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】Java NIO原理和使用</title><link>http://www.blogjava.net/fanyingjie/archive/2009/05/31/279213.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Sun, 31 May 2009 07:17:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2009/05/31/279213.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/279213.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2009/05/31/279213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/279213.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/279213.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Java　NIO非堵塞应用通常适用用在I/O读写等方面，我们知道，系统运行的性能瓶颈通常在I/O读写，包括对端口和文件的操作上，过去，在打开一个I/O通道后，read()将一直等待在端口一边读取字节内容，如果没有内容进来，read()也是傻傻的等，这会影响我们程序继续做其他事情，那么改进做法就是开设线程，让线程去等待，但是这样做也是相当耗费资源的。<br><br>Java NIO非堵塞技术实际是采取Reactor模式，或者说是Observer模式为我们监察I/O端口，如果有内容进来，会自动通知我们，这样，我们就不必开启多个线程死等，从外界看，实现了流畅的I/O读写，不堵塞了。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2009/05/31/279213.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/279213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2009-05-31 15:17 <a href="http://www.blogjava.net/fanyingjie/archive/2009/05/31/279213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】关于java产生随机数代码</title><link>http://www.blogjava.net/fanyingjie/archive/2009/05/14/270572.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Thu, 14 May 2009 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2009/05/14/270572.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/270572.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2009/05/14/270572.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/270572.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/270572.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: //根据不同的难度产生随机字母和数字 <br>for(int i=0; readomNumStart.length()<4; i++) { <br>if(difficult == 1) { <br><br>//产生随机的0-9的数字 <br>a = String.valueOf((int)(Math.random() * 10)) ; <br>} &nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2009/05/14/270572.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/270572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2009-05-14 11:40 <a href="http://www.blogjava.net/fanyingjie/archive/2009/05/14/270572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】获取JAVA路径，包括CLASSPATH外的路径</title><link>http://www.blogjava.net/fanyingjie/archive/2009/05/14/270571.html</link><dc:creator>rogerfan</dc:creator><author>rogerfan</author><pubDate>Thu, 14 May 2009 03:39:00 GMT</pubDate><guid>http://www.blogjava.net/fanyingjie/archive/2009/05/14/270571.html</guid><wfw:comment>http://www.blogjava.net/fanyingjie/comments/270571.html</wfw:comment><comments>http://www.blogjava.net/fanyingjie/archive/2009/05/14/270571.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fanyingjie/comments/commentRss/270571.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fanyingjie/services/trackbacks/270571.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 归纳一些网上取JAVA路径的方法： <br><br>注明：如果从ANT启动程序，this.getClass().getResource("")取出来的比较怪，直接用JAVA命令行调试就可成功。 <br>　 <br>得到classpath和当前类的绝对路径的一些方法 <br><br>获得CLASSPATH之外路径的方法： <br>URL base = this.getClass().getResource(""); //先获得本类的所在位置，如/home/popeye/testjava/build/classes/net/ <br>String path = new File(base.getFile(), "../../../"+name).getCanonicalPath(); //就可以得到/home/popeye/testjava/name &nbsp;&nbsp;<a href='http://www.blogjava.net/fanyingjie/archive/2009/05/14/270571.html'>阅读全文</a><img src ="http://www.blogjava.net/fanyingjie/aggbug/270571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fanyingjie/" target="_blank">rogerfan</a> 2009-05-14 11:39 <a href="http://www.blogjava.net/fanyingjie/archive/2009/05/14/270571.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>