﻿<?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-叽哩咕噜</title><link>http://www.blogjava.net/wangxunhua/</link><description>君子如玉,上善若水</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 19:03:17 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 19:03:17 GMT</pubDate><ttl>60</ttl><item><title>微信公众号开发中的又一大坑-二次验证域名</title><link>http://www.blogjava.net/wangxunhua/archive/2016/03/18/429718.html</link><dc:creator>叽哩咕噜</dc:creator><author>叽哩咕噜</author><pubDate>Fri, 18 Mar 2016 05:44:00 GMT</pubDate><guid>http://www.blogjava.net/wangxunhua/archive/2016/03/18/429718.html</guid><wfw:comment>http://www.blogjava.net/wangxunhua/comments/429718.html</wfw:comment><comments>http://www.blogjava.net/wangxunhua/archive/2016/03/18/429718.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxunhua/comments/commentRss/429718.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxunhua/services/trackbacks/429718.html</trackback:ping><description><![CDATA[今天又被微信坑了一把.<br /><br />今天微信公众号开发平台在11点55分左右突然访问不了儿童医院和市妇幼的公众号.<br /><br />经过排查:<br />1. 使用这两家医院的APPID不能验证回调,返回"该链接无法访问",同一个地址使用其它家的APPID可以正常访问,我们的服务地址是正常可以访问的.<br /><br />2. 经过观察,微信的授权接口以前正常时是https://open.weixin.qq.com/connect/oauth2/authorize,但今天出问题的两家公众号问题页面地址是:<div>https://sz.open.weixin.qq.com/connect/oauth2/authorize_reply?uuid=013qktTrRd8hYwt0&amp;snsapi_base=on&amp;allow=on&amp;uin=MTg1MDg0OTU2MA%3D%3D&amp;key=919f97a8831ea19f1bb7527946cb904e9190f42e74ee0585f2ca3800c818f923a38122ddd1f06952d4f0d01eae4cb8e8<br />域名变成了sz.open.weixin.qq.com.</div><br />3. 我们一想,如果我们把授权接口域名变成 sz.open.weixin.qq.com会怎么样.奇迹发生了,竟然就可以正常访问了.<br /><br />这个坑就坑在我们如何确认同样是深圳的医院哪家医院会使用不同的授权接口地址呢.,太扯了.<img src ="http://www.blogjava.net/wangxunhua/aggbug/429718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxunhua/" target="_blank">叽哩咕噜</a> 2016-03-18 13:44 <a href="http://www.blogjava.net/wangxunhua/archive/2016/03/18/429718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>加速乐引发的APP通信异常解决处理(2016-03-09)</title><link>http://www.blogjava.net/wangxunhua/archive/2016/03/16/429690.html</link><dc:creator>叽哩咕噜</dc:creator><author>叽哩咕噜</author><pubDate>Wed, 16 Mar 2016 15:09:00 GMT</pubDate><guid>http://www.blogjava.net/wangxunhua/archive/2016/03/16/429690.html</guid><wfw:comment>http://www.blogjava.net/wangxunhua/comments/429690.html</wfw:comment><comments>http://www.blogjava.net/wangxunhua/archive/2016/03/16/429690.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxunhua/comments/commentRss/429690.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxunhua/services/trackbacks/429690.html</trackback:ping><description><![CDATA[情况介绍: 部分APP版本连接端异常<br /><br /><div><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_48" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:02:52</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">已经回滚到今天以前</div></td></tr><tr id="itemId_49"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:03:15</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">问题依旧</div></td></tr></tbody></table></div></div><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_53"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:06:42</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">@晁永康&nbsp;android和ios版的接口地址是否是同一个？</div></td></tr><tr id="itemId_54"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:07:11</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">这个研发才知道</div></td></tr><tr id="itemId_55"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:08:01</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">这个是同一个，刚试了几个版本。一样有问题，可能不是PHP代码上的问题。</div></td></tr><tr id="itemId_56" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:09:43</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">安卓5.0版本是好的。</div></td></tr></tbody></table></div><br /><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_7"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:20:59</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">我们先看一下程序相关日志，看是个性问题还是共性问题，&nbsp;这个问题有点诡异。&nbsp;</div></td></tr><tr id="itemId_8" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">&nbsp;01:21:20</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">5.0.和5.1.0的版本没问题，5.1.1开始以后的版本都打不开。</div></td></tr></tbody></table></div><br /><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_42"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:38:11</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">已经升级到5.2.2&nbsp;果然有问题</div></td></tr><tr id="itemId_43" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:38:15</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">所有调用接口的全部异常</div></td></tr></tbody></table></div><div><div style="font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4; color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:48:27</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden; color: #000000; font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4;">我这边的报错就是：您的网络不给力</div></div><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_2"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:50:45</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">现在APP都是走&nbsp;HTTPS&nbsp;协议了吧?</div></td></tr><tr id="itemId_3" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><br /></td></tr><tr id="itemId_4"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:51:27</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">看nginx的配置&nbsp;，是这样的</div></td></tr></tbody></table></div><br /><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_6"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:54:13</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">是走了HTTPS&nbsp;协议&nbsp;，</div></td></tr><tr id="itemId_7" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">01:55:37</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">现在应该不是代码的问题，&nbsp;怀疑是和加速乐那边&nbsp;有一定的关系，&nbsp;&nbsp;我们先切回到我们的源来访问试试&nbsp;&nbsp;，，&nbsp;</div></td></tr></tbody></table></div><br /><div style="margin-right: 3px;">&nbsp;02:08:19</div><div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden; color: #000000; font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4;">我用&nbsp;Charles&nbsp;抓包看看</div></div><br /><div><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_28"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:09:27</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">先把域名指向我们的源&nbsp;，&nbsp;不走加速乐试试&nbsp;&nbsp;。&nbsp;这个问题比较诡异&nbsp;&nbsp;。</div></td></tr><tr id="itemId_29" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:15:32</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">把域名回源我们再试试吧</div></td></tr></tbody></table></div></div><div><div style="font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4; color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:24:21</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden; color: #000000; font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4;">问题目测解决了</div></div><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_54"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:26:32</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">真是加速乐的问题&nbsp;。<img src="qq://txfile/platformdata:Face/96.gif" title="双击查看原图" alt="" /></div></td></tr><tr id="itemId_55" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">&nbsp;02:26:39</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">是啊</div></td></tr></tbody></table></div><div><div><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_3"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">&nbsp;02:28:11</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">加速乐出过几次问题了吧</div></td></tr><tr id="itemId_4"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:28:16</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">是啊</div></td></tr><tr id="itemId_5"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">&nbsp;02:28:50</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">这个是加速乐的问题了，艹，这么多人浪费了3个小时。</div></td></tr><tr id="itemId_6"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:28:54</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">动态的域名可以不走加速乐，&nbsp;之前我们测试过，&nbsp;CDN&nbsp;对动态的加速效果不会太明显&nbsp;。出了问题比较难排查&nbsp;。</div></td></tr><tr id="itemId_7" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:28:55</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">加速乐云端模式不行，回源模式才行的情况，出了N多次了</div></td></tr></tbody></table></div><div><div><div style="font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4; color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:30:33</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden; color: #000000; font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4;">为什么是5.2版本的android受影响？</div></div><div><div><div style="font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4; color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:42:23</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden; color: #000000; font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4;">&nbsp;&nbsp;&nbsp;两者的包&nbsp;分别发出来&nbsp;大家一起看一下有啥不同&nbsp;。</div></div><div><div><div style="font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4; color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:43:51</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden; color: #000000; font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4;">蓝色的是&nbsp;不走加速了，请求正常。&nbsp;红色打叉的是走加速乐的</div></div><div><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_45" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:45:16</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">可以看里面的</div></td></tr><tr id="itemId_46"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:45:28</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">叉&nbsp;代表请求失败</div></td></tr><tr id="itemId_47"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:45:47</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">就是根本没法请求到nginx来</div></td></tr></tbody></table></div><div><div> <div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_58"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:49:48</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">感觉还是和加速乐那边弄的SSL&nbsp;证书有关</div></td></tr><tr id="itemId_59" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:50:52</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">这个解释不了iphone没问题呀</div></td></tr></tbody></table></div><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_14"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:55:34</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">第三方加速服务只用在静态资源上，这样我们自己的可控性会更好些</div></td></tr><tr id="itemId_15" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:56:01</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">又可以了</div></td></tr><tr id="itemId_16"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:56:15</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">医生端目前也正常了。</div></td></tr></tbody></table></div><div><div style="font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4; color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">02:57:25</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden; color: #000000; font-family: ''; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffedc4;">1、问题临时方案就是切回我们自己的源？2、回滚了那些代码？</div></div></div></div></div><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_28"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">12:00:13</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">昨天的问题加速乐问我们是否代码中是否支持SNI</div></td></tr><tr id="itemId_29" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">12:02:49</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">&nbsp;昨天有一个疑问，&nbsp;安卓平台老的版本没问题，&nbsp;新的版本有问题，&nbsp;我先和你们先确认一下，&nbsp;安卓平台下个人端&nbsp;老版本和新版本&nbsp;的区别，&nbsp;是否老版本采用&nbsp;HttpClient&nbsp;，&nbsp;新版本采用HttpUrlConnection&nbsp;？&nbsp;在Android&nbsp;2.3版本中还增加了一些HTTPS方面的改进，现在HttpsURLConnection会使用SNI(Server&nbsp;Name&nbsp;Indication)的方式进行连接</div></td></tr><tr id="itemId_30"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">12:03:36</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;"><a href="qq://txfile/#">http://blog.csdn.net/jmq_0000/article/details/24921983</a></div></td></tr></tbody></table></div><div><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_34"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">12:16:59</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">&nbsp;也就是说新老版本的协议都是支持SNI？</div></td></tr><tr id="itemId_35"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">&nbsp;12:17:37</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">我们android&nbsp;用的是&nbsp;okhttp&nbsp;这个库吗？</div></td></tr><tr id="itemId_36"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">12:18:50</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">线上版本不是，正在开发的版本有使用。</div></td></tr><tr id="itemId_37" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">12:20:05</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">根据问题的描述，和cdn的推测，我也觉得&nbsp;安卓5.2.2&nbsp;版本不支持&nbsp;sni&nbsp;的可能性比较高。</div></td></tr></tbody></table></div><div><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_41"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">14:57:03</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;"><br />和安卓开发美女联调发现：问题与&nbsp;https&nbsp;访问的方式有相关性。&nbsp;使用新的&nbsp;android&nbsp;客户端接口连接方式，在&nbsp;小米4&nbsp;和&nbsp;nexus&nbsp;5&nbsp;手机均可正常访问加速后的域名。&nbsp;使用目前线上的&nbsp;android&nbsp;客户端接口连接方式，小米4&nbsp;无法访问加速后的域名，nexus&nbsp;5&nbsp;可正常访问加速后的域名。<br /><br />针对目前的情况，线上APP的域名均不采用加速模式，故所有APP均可正常访问。同时，也有开发计划，接下来两三个版本部分功能使用新的接口方式，后面我会再继续联调跟进。</div></td></tr><tr id="itemId_42" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">15:01:37</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">@浅月墨香&nbsp;提供一下目前我们android端使用的API的详细信息，是因为我们为了向前兼容所以使用了老的接口的吗？</div></td></tr><tr id="itemId_43"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">15:02:18</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">这个逻辑我现在还没太搞清楚</div></td></tr></tbody></table></div><div><div><table id="ItemTable" style="font-family: ''; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; word-break: break-all;" width="100%" cellspacing="0"><tbody><tr id="itemId_45" style="background-color: #ffedc4;"><td id="tn" style="font-size: 9pt; border: 1px solid #ffdb8d;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">15:07:18</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">老接口是&nbsp;Apache-HttpClient&nbsp;的连接库，&nbsp;兼容&nbsp;java&nbsp;1.4&nbsp;的。新接口是&nbsp;okhttp&nbsp;，android&nbsp;app&nbsp;比较主流的库</div></td></tr><tr id="itemId_46"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">15:07:52</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">OK，了解了</div></td></tr><tr id="itemId_47"><td id="tn" style="font-size: 9pt; border: 1px solid transparent;"><div style="color: #006efe; padding-left: 10px;"><div style="margin-right: 3px;">15:09:05</div></div><div style="margin-top: 5px; padding-left: 20px; width: 300px; overflow-x: hidden;">@浅月墨香&nbsp;这个信息也同步給医生端的android团队，让他们也做计划升级</div></td></tr></tbody></table></div></div></div></div></div></div></div><br /><br />参考资料: <div><a title="互联网全站HTTPS的时代已经到来" href="http://blog.jobbole.com/78042/">互联网全站HTTPS的时代已经到来</a><br /><a title=" Android 网络编程之---HttpClient 与 HttpURLConnection 共用cookie " href="http://blog.csdn.net/jmq_0000/article/details/24921983"> Android 网络编程之---HttpClient 与 HttpURLConnection 共用cookie </a></div><br /><br /><br /><br /><br /><br /><br /></div></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><div><div></div></div><img src ="http://www.blogjava.net/wangxunhua/aggbug/429690.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxunhua/" target="_blank">叽哩咕噜</a> 2016-03-16 23:09 <a href="http://www.blogjava.net/wangxunhua/archive/2016/03/16/429690.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个性能问题导致的全网崩溃</title><link>http://www.blogjava.net/wangxunhua/archive/2016/03/16/429689.html</link><dc:creator>叽哩咕噜</dc:creator><author>叽哩咕噜</author><pubDate>Wed, 16 Mar 2016 14:15:00 GMT</pubDate><guid>http://www.blogjava.net/wangxunhua/archive/2016/03/16/429689.html</guid><wfw:comment>http://www.blogjava.net/wangxunhua/comments/429689.html</wfw:comment><comments>http://www.blogjava.net/wangxunhua/archive/2016/03/16/429689.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxunhua/comments/commentRss/429689.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxunhua/services/trackbacks/429689.html</trackback:ping><description><![CDATA[今天公司的一个rule项目因为性能问题导致oracle连接过高,导致整个后台崩溃,断网2小时.<br /><br />具体的原因是因为rule的一个验证规则太过复杂,查询业务订单表频繁,导致oracle被拖跨,间接导致运营后台沦陷.<br /><div>rule接口的平均响应时间从之前的几个ms飚升至200ms.</div><br />解决办法: 回滚代码<br /><br />总结:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.当业务量大了之后,可能很小的一部分代码功能都可能导致严重的性能瓶颈.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.性能测试近乎于无<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. 因业务的复杂性,以及服务依赖过多,搭建测试环境复杂,测试过程难度增大.<img src ="http://www.blogjava.net/wangxunhua/aggbug/429689.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxunhua/" target="_blank">叽哩咕噜</a> 2016-03-16 22:15 <a href="http://www.blogjava.net/wangxunhua/archive/2016/03/16/429689.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于改变自已-成为技术领导者</title><link>http://www.blogjava.net/wangxunhua/archive/2016/02/29/429475.html</link><dc:creator>叽哩咕噜</dc:creator><author>叽哩咕噜</author><pubDate>Mon, 29 Feb 2016 05:45:00 GMT</pubDate><guid>http://www.blogjava.net/wangxunhua/archive/2016/02/29/429475.html</guid><wfw:comment>http://www.blogjava.net/wangxunhua/comments/429475.html</wfw:comment><comments>http://www.blogjava.net/wangxunhua/archive/2016/02/29/429475.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxunhua/comments/commentRss/429475.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxunhua/services/trackbacks/429475.html</trackback:ping><description><![CDATA[<h4>&nbsp;&nbsp;&nbsp;&nbsp; 关于改变自己所需要的时间，温伯格的一句话让我印象很深，&#8221;如果你想做某件事情却一直找到不到时间，那多半是你其实不想做&#8221;。想要改变，尤其是自我改变，通常不会像上级布置的任务那样，有明确的压力和期限，所以改变成停留在&#8220;想&#8221;而以。网络上经常可以看到类似的问题：道理我都懂，但就是行动不起来。所以很多人在纠结，希望有什么办法提高行动力。但是在我看来，要解决这个问题，第一步是承认自己其实不想实践这些道理。</h4><p>&nbsp;&nbsp;&nbsp;&nbsp; 如果确认自己想去做这件事情，又苦于找不到时间，温伯格给了三个建议：第一，对已经分配的任务，不要反复纠结；第二，对实现过程中的细节，不要反复纠结；第三，不要让自己的生活被层出不穷的危机所支配。比如对于&#8220;缺乏行动力&#8221;的问题，如果你真的希望提升行动力，应该首先制订计划，制订好计划之后应该按时推行，在这个过程一中可以容忍错误和异常，但不要轻易纠结于计划本身。在实现过程中，不要过分纠结细节，比如学英语，捧着一本书刚看了个开头，就纠结是先学语法呢，还是先背单词，抑或开始纠结是这本书更好一点，还是那本书更好一点。更重析是要想有时间做自己的事情，应当把一切事情保持在&#8220;井然有序&#8221;的状态，哪怕平时需要蕴含更多的时间来维护，这样才不会被各种意外所支配。我曾经见过很多程序员，每天尽忙于改正线上的各种问题甚至乐在其中，却从来不想想怎么让程序保持在&#8220;自主稳定运行&#8221;的状态，还一个劲的报怨&#8220;工作辛苦，生活忙碌&#8221;。也正是因为如此，我才大力提醒程序员要&#8220;横向发展&#8221;，要操心程序运行的整套环境，才能真正把自己解放出来。<br /></p><h5> </h5><img src ="http://www.blogjava.net/wangxunhua/aggbug/429475.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxunhua/" target="_blank">叽哩咕噜</a> 2016-02-29 13:45 <a href="http://www.blogjava.net/wangxunhua/archive/2016/02/29/429475.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>pom.xml中的java.home变量(eclipse默认的java.home变量)</title><link>http://www.blogjava.net/wangxunhua/articles/429000.html</link><dc:creator>叽哩咕噜</dc:creator><author>叽哩咕噜</author><pubDate>Mon, 11 Jan 2016 10:04:00 GMT</pubDate><guid>http://www.blogjava.net/wangxunhua/articles/429000.html</guid><wfw:comment>http://www.blogjava.net/wangxunhua/comments/429000.html</wfw:comment><comments>http://www.blogjava.net/wangxunhua/articles/429000.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxunhua/comments/commentRss/429000.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxunhua/services/trackbacks/429000.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 说说最近发现在的一个问题.关于java.home这个变量本机环境变量:JAVA_HOME = C:\Java\jdk17045eclipse Version: Mars.1 Release (4.5.1)来由0:maven-install时出现这错误:[ERROR] No compiler is provided in this environment. Perhaps you are runni...&nbsp;&nbsp;<a href='http://www.blogjava.net/wangxunhua/articles/429000.html'>阅读全文</a><img src ="http://www.blogjava.net/wangxunhua/aggbug/429000.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxunhua/" target="_blank">叽哩咕噜</a> 2016-01-11 18:04 <a href="http://www.blogjava.net/wangxunhua/articles/429000.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从零开始认识 JasperReport + IReport (JasperReport部分)</title><link>http://www.blogjava.net/wangxunhua/archive/2011/09/09/358358.html</link><dc:creator>叽哩咕噜</dc:creator><author>叽哩咕噜</author><pubDate>Fri, 09 Sep 2011 03:49:00 GMT</pubDate><guid>http://www.blogjava.net/wangxunhua/archive/2011/09/09/358358.html</guid><wfw:comment>http://www.blogjava.net/wangxunhua/comments/358358.html</wfw:comment><comments>http://www.blogjava.net/wangxunhua/archive/2011/09/09/358358.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxunhua/comments/commentRss/358358.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxunhua/services/trackbacks/358358.html</trackback:ping><description><![CDATA[因参与公司南非的项目,需要应用在Linux平台,所以报表改用JasperReport.国内的项目报表还是用FastReport(看来还是结晶啊).<br /><br />废话少说,我从delphi平台转到RCP开发才不过两月时间,以前从未接触过JasperReport.(简称为JR)<br />今天上级要求熟悉JR,为节后国际化报表做准备.以下为我从0开始的一些记录.<br />目的: 力求理解JasterReport的各个概念及之间的关系.熟悉打印报表流程的来龙去脉,主要的调用方法(如加载报表,打印,预览).&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 报表设计器的使用.<br /><br />1. IReport 设计器,就像FastReport一样有这样的设计器.但名字叫IReprot,为安装文件,我安装的版本为<div>&nbsp;&nbsp;&nbsp; iReport-3.0.0-windows-installer.exe,同事传我的,下载地址百度下下就有了.<br />2. JasperReport为一个开发Jar包,就是相当于FastReport的报表控件.<strong><br /></strong><strong style="color: #808080;">3. 初始化JasterReport</strong><br style="color: #808080;" /><div> private static JasperPrint initJasperReport(String fileName,<br /> <div>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Map&lt;String, Object&gt; paramMap, <span style="color: #ff9900;">List data</span>) throws IOException,<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;MalformedURLException, JRException {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; ...<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;InputStream is = fullPathString.toURL().openStream();&nbsp; //这句以上代码都是处理报表文件路径<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <strong>&nbsp;</strong><strong style="color: #ff9900;">JasperReport </strong><strong>jasperReport = (JasperReport) JRLoader.loadObject(is);</strong>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Object[] objArray = <span style="color: #ff9900;">data</span>.toArray();<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //<strong style="color: #ff9900;">JasperReport对象&nbsp; </strong>+ Map对象 + List 对象 =<strong style="color: #ff9900;">JasperPrint对象</strong><div> </div>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; final <strong style="color: #ff9900;">JasperPrint</strong> jasperPrint = <strong><span style="color: #ff9900;">JasperFillManager.</span></strong>fillReport(<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;jasperReport, paramMap, new JRBeanArrayDataSource(objArray));<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return jasperPrint;<br />&nbsp;&nbsp; &nbsp;}<br />   <br />   <strong><span style="color: #808080;">4.查找默认打印机(打印服务).</span></strong><br /><div>public static boolean directPrintByPrintName(final JasperPrint jasperPrint) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (jasperPrint != null) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<strong>PrintService</strong>[] PSs = PrinterJob.lookupPrintServices(); //java.awt.*包.查找所有打印服务.<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;PrintService ps = null;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (PSs != null &amp;&amp; PSs.length &gt; 1&amp;&amp; !Assert.isNull(MzTransParam.PrinterOfSyddyj)) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;for (int i = 0; i &lt; PSs.length; i++) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String sps = PSs[i].toString();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;sps = sps.replace("Win32 Printer : ", ""); //$NON-NLS-1$ //$NON-NLS-2$<br /><div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //MzTransParam.PrinterOfSyddyj 我们系统设置的默认打印机名称.</div>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; if (sps.equalsIgnoreCase(MzTransParam.PrinterOfSyddyj)) {&nbsp; <br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ps = PSs[i];//得到打印服务对象<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;break;<br />&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;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br /><strong><span style="color: #808080;">5.设置打印参数,好多个参数</span></strong><br /><div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (ps != null) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;long start = System.currentTimeMillis();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<strong>PrintRequestAttributeSet </strong>printRequestAttributeSet = new HashPrintRequestAttributeSet();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;printRequestAttributeSet.add(MediaSizeName.ISO_A5);// 处方模板是A5纸&nbsp; 第一个参数对象 &nbsp;&nbsp; <br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<strong>PrintServiceAttributeSet </strong>printServiceAttributeSet = new HashPrintServiceAttributeSet();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;printServiceAttributeSet.add(new PrinterName(ps.getName(),null)); //第二个参数对象<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;final <strong>JRPrintServiceExporter </strong>exporter = new JRPrintServiceExporter(); //关键的对象,其它的对象都是为他服务的<br />&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;exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;exporter.setParameter(JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET,<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;printRequestAttributeSet);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET,<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;printServiceAttributeSet);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG,<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;Boolean.FALSE);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG,<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;Boolean.FALSE);<br /><strong><span style="color: #808080;">6.关键的出场,在线程里导出报表.(打印)</span></strong><br /><div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Thread thread = new Thread(new Runnable() {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public void run() {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {<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;<strong>exporter.exportReport()</strong>; //就这么一句.exporter对象导出报表.<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception ex) {<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;System.err.println(ex.getLocalizedMessage());<br />&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;}<br />&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;thread.start();</div><strong><span style="color: #808080;">7.采用默认打印.</span></strong><br /><div>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; } else { //此处的else接的是5条的if <br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Thread thread = new Thread(new Runnable() {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public void run() {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {<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; //jasperPrint 对象就是JasperPrintManager生成的.参考上面的代码.<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;<strong>JasperPrintManager.printReport</strong>(jasperPrint,false);&nbsp; //这一句应该是默认打印.<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception ex) {<br />&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;}<br />&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;thread.start();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception ex) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return false;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return true;}</div></div></div>未完.<br />   <br />   <br /> </div></div>&nbsp;&nbsp;&nbsp;</div><img src ="http://www.blogjava.net/wangxunhua/aggbug/358358.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxunhua/" target="_blank">叽哩咕噜</a> 2011-09-09 11:49 <a href="http://www.blogjava.net/wangxunhua/archive/2011/09/09/358358.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RCP入门程序的要点.</title><link>http://www.blogjava.net/wangxunhua/archive/2011/08/24/357196.html</link><dc:creator>叽哩咕噜</dc:creator><author>叽哩咕噜</author><pubDate>Wed, 24 Aug 2011 08:09:00 GMT</pubDate><guid>http://www.blogjava.net/wangxunhua/archive/2011/08/24/357196.html</guid><wfw:comment>http://www.blogjava.net/wangxunhua/comments/357196.html</wfw:comment><comments>http://www.blogjava.net/wangxunhua/archive/2011/08/24/357196.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxunhua/comments/commentRss/357196.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxunhua/services/trackbacks/357196.html</trackback:ping><description><![CDATA[关于RCP程序开发,当写第一个Demo时的要点.记录下来.写得粗糙,仅供自己参考<br /><strong>1.&nbsp;&nbsp;&nbsp; Action</strong><br /><div> <div>&nbsp;&nbsp;&nbsp; 1&gt; ApplicationActionBarAdvisor类的makeActions方法用来初始化Action,可以是内部定义的Action,也可以是自己从Action类继承的自定义Action.<br /> &nbsp;&nbsp;&nbsp; 2&gt;从Action类继承的Action重写run方法,这是Action执行时候运行的代码.<br />&nbsp;&nbsp;&nbsp; 3&gt;内置Action 都实现了IWorkbenchAction,用ActionFactory.QUIT.create获得Action.<br /> &nbsp;&nbsp;&nbsp;  3&gt;相比Delphi,JFace的Action类更简单,把他放在menubarManager上,他就变成了一个菜单,把他放在 ToolbarManager上就变成了工具图标.delphi里面一个菜单是一个menuItem + Action组成的.工具栏是Button +  Action组成的.</div> </div><br /><strong>2.&nbsp;&nbsp;&nbsp; 菜单:</strong><br /><div>&nbsp;&nbsp;&nbsp; 1&gt;menubarManager 相当于有主菜单,如文件,编辑等菜单项.menubarManger.add(menubarManager).这样产生二级菜单.<br />&nbsp;&nbsp;&nbsp; 2&gt;menubarManager.add(Action).这样就添加了一个子菜单.<br />&nbsp;&nbsp;&nbsp; 3&gt;fillMenuBar(IMenuManager menuBar) 方法传进来的menuBar就是最顶端的菜单面板.相当于delphi里面添加了一个XPMenu控件,会在form上增加一条菜单面板.menuBar.add(menubarManager),这样添加了一级菜单.<br /><strong><br />3.&nbsp;&nbsp;&nbsp; 工具栏</strong><br />&nbsp;&nbsp;&nbsp; 1&gt;重写fillCoolBar(ICoolBarManager coolBar) 可以添加工具栏.<br />&nbsp;&nbsp;&nbsp; 2&gt;创建一个ToolbarManager实例.就是一个工具栏.可以创建多个.<br />&nbsp;&nbsp;&nbsp; 3&gt;ToolbarManager.add(Action).这样就是添加了一个工具图标.<br />&nbsp;&nbsp;&nbsp; 4&gt;coolBar.add(ToolbarManager),就是在界面上添加一块工具栏,可以增加多块工具栏.</div><strong>4.View社图</strong><br />&nbsp;&nbsp;&nbsp; 1&gt;可以从扩展点配置一个Action: 从plugin.xml的Extension标签,点add,找出views<br />&nbsp;&nbsp;&nbsp; 2&gt;也可以从ViewPart继承一个类.createPartControl方法设置一些初始化工作.<br />&nbsp;&nbsp;&nbsp; 3&gt;View可以理解为Delphi的childwindow,子窗口,可以放各种控件,可以关闭,最大化,最小化.<br />&nbsp;&nbsp;&nbsp; 4&gt;View的显示是依赖一个透视图的.透视图可以理解为不同的View或Editor的组合,就叫透视图.<br />&nbsp;&nbsp;&nbsp; 5&gt;重写Perspective默认透视图createInitialLayout方法,并用layout.addView添加并显示一个视图.当加载默认视图时会加载该View窗口.<br /><br /><strong>5.Editor编辑器</strong><br />&nbsp;&nbsp;&nbsp; 1&gt;Editor类实现了ISaveablePart接口.并绑定了内置的Save Action,SaveAsAction<br />&nbsp;&nbsp;&nbsp; 2&gt;当点击菜单中的保存 Action时会自动调用doSave方法.只要重写doSave方法保存当前的文件即可实现保存.<br />&nbsp;&nbsp;&nbsp; 3&gt;Editor依赖了一个EditorInput类,EditorInput类我理解为像Struts中的ActionForm类一样,用来传递参数给Editor.<br />&nbsp;&nbsp;&nbsp; 4&gt;如果不是需求这种集成编辑器的功能,一般用View可以满足,但是如像QQ聊天这样的编辑框的时候,用Editor开发应该是一个不错的选择.delphi里面像发送消息程序,采用了一个HtmlEdit控件才解决了这个问题.<br />&nbsp;&nbsp;&nbsp; 5&gt;Editor窗口可以用window.getActivePage.openEditor(input, TxtEditor.ID)打开.<img src ="http://www.blogjava.net/wangxunhua/aggbug/357196.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxunhua/" target="_blank">叽哩咕噜</a> 2011-08-24 16:09 <a href="http://www.blogjava.net/wangxunhua/archive/2011/08/24/357196.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FileStream 类实现日志</title><link>http://www.blogjava.net/wangxunhua/archive/2011/08/24/357167.html</link><dc:creator>叽哩咕噜</dc:creator><author>叽哩咕噜</author><pubDate>Wed, 24 Aug 2011 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/wangxunhua/archive/2011/08/24/357167.html</guid><wfw:comment>http://www.blogjava.net/wangxunhua/comments/357167.html</wfw:comment><comments>http://www.blogjava.net/wangxunhua/archive/2011/08/24/357167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxunhua/comments/commentRss/357167.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxunhua/services/trackbacks/357167.html</trackback:ping><description><![CDATA[FileStream类几乎可以处理所有的文件操作.<br /><br />以下为一个日志类,除了配置不太灵活外,挺好用的.<br /><div><div>type<br />&nbsp; TBuffer = array [0..2000] of char;<br />&nbsp; <br />&nbsp; TGameLogFile = class<br />&nbsp; private<br />&nbsp;&nbsp;&nbsp; FFullPath:string;//完整路径,用这个路径来判断当前的打开的日志的大小.<br />&nbsp;&nbsp;&nbsp; FileDate:TDateTime;<br />&nbsp;&nbsp;&nbsp; FFileParth: string; //路径<br />&nbsp;&nbsp;&nbsp; FText: Text;<br />&nbsp;&nbsp;&nbsp; FLogFileStream:TFileStream; <br />&nbsp;&nbsp;&nbsp; FIsCreateToNew: boolean; //是否是每次启动程序都创建新的记录文件 否则就是当天只会有1个文件<br />&nbsp;&nbsp;&nbsp; FIsControlFileSize:Boolean;//是否控制文件大小,true,超出文件大小时,重新创建一个log文件<br />&nbsp; public<br />&nbsp;&nbsp;&nbsp; {带入日志文件存放的目录位置}<br />&nbsp;&nbsp;&nbsp; constructor Create(Iparth: string);<br />&nbsp;&nbsp;&nbsp; destructor Destroy; override;<br />&nbsp;&nbsp;&nbsp; {写入内容即可自动记录}<br />&nbsp;&nbsp;&nbsp; procedure init(Iparth: string);<br />&nbsp;&nbsp;&nbsp; procedure AddLog(Icon: string; const LogLevel: Integer = 0);<br />&nbsp;&nbsp;&nbsp; property IsCreateToNew: boolean read FIsCreateToNew write FIsCreateToNew;<br />&nbsp; end;</div><div>implementation<br />uses StdCtrls;<br />const<br />&nbsp; {分割符号}<br />&nbsp; CSplitStr = '===============================================================';<br />&nbsp; ClogFileName = '.log';<br />{ TGameLogFile }</div><br /><br />procedure TGameLogFile.AddLog(Icon: string; const LogLevel: integer = 0);<br />var<br />&nbsp; txt:string;<br />&nbsp; buffer:TBuffer; //开一个2K的缓存<br />begin<br />&nbsp; try<br />&nbsp;&nbsp;&nbsp; if FIsCreateToNew then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if Date - FileDate &gt;= 1 then&nbsp;&nbsp;&nbsp; //超过一天.强制换掉日志文件<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CloseFile(FText);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; init(FFileParth);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br /><br />&nbsp;&nbsp;&nbsp; if FIsControlFileSize then<br />&nbsp;&nbsp;&nbsp; begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if FLogFileStream.Size &gt; 3 * 1000 * 1000 then&nbsp;&nbsp;&nbsp; //这里的单位是M,有时间改成可配置<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; init(FFileParth); //重新切换一个日志<br />&nbsp;&nbsp;&nbsp; end;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp; StrCopy(buffer,PChar(Icon));<br />&nbsp;&nbsp;&nbsp; FLogFileStream.Write(buffer,Length(Icon));//如果直接write(Icon,Length(Icon)),会产生乱码.<br />&nbsp; except<br />&nbsp;&nbsp;&nbsp; IOResult;<br />&nbsp; end;<br />end;<br /><br />constructor TGameLogFile.Create(Iparth: string);<br />begin<br />&nbsp; FIsCreateToNew := false;<br />&nbsp; FIsControlFileSize := not (FIsCreateToNew xor False);&nbsp; //当FIsCreateToNew为true时,此变量为假<br />&nbsp; FFileParth := Iparth;<br />&nbsp; init(FFileParth);<br />end;<br /><br />//在这里创建一个日志文件<br />procedure TGameLogFile.init(Iparth: string);<br />var<br />&nbsp; Ltep: string;<br />begin<br />&nbsp;if not DirectoryExists(FFileParth) then<br />&nbsp;&nbsp;&nbsp; if not CreateDir(FFileParth) then begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; raise Exception.Create('错误的路径，日志类对象不能被创建');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br />&nbsp;&nbsp;&nbsp; end;<br />&nbsp; if FIsCreateToNew then begin<br />&nbsp;&nbsp;&nbsp; Ltep := FormatDateTime('yyyymmddhhnnss', Now);<br />&nbsp;&nbsp;&nbsp; FileClose(FileCreate(FFileParth + ltep + ClogFileName));<br />&nbsp; end<br />&nbsp; else<br />&nbsp;&nbsp;&nbsp; Ltep := FormatDateTime('yyyymmddhhnnss', Now);<br />&nbsp; if not FileExists(FFileParth + ltep + ClogFileName) then<br />&nbsp;&nbsp;&nbsp; FileClose(FileCreate(FFileParth + ltep + ClogFileName));<br />&nbsp; FileDate := Date;<br />&nbsp; FFullPath := FFileParth + ltep + ClogFileName;<br />&nbsp; //此处改用TFileStream用来控制Log日志文件的大小&nbsp; 2011年8月24日9:28:25 ddz<br />&nbsp; //AssignFile(FText, FFileParth + ltep + ClogFileName);<br />&nbsp; if Assigned(FLogFileStream) then<br />&nbsp;&nbsp;&nbsp;&nbsp; FLogFileStream.Free;<br />&nbsp; //新建日志文件.<br />&nbsp; FLogFileStream := TFileStream.Create(FFullPath,fmCreate&nbsp;&nbsp; &nbsp;or fmShareDenyNone);<br />&nbsp; FLogFileStream.free;<br />&nbsp; //读写日志文件<br />&nbsp; FLogFileStream := TFileStream.Create(FFullPath,fmOpenReadWrite&nbsp;&nbsp; &nbsp;or fmShareDenyNone);<br />end;<br /><br />destructor TGameLogFile.Destroy;<br />begin<br />&nbsp; try<br />&nbsp;&nbsp;&nbsp; if Assigned(FLogFileStream) then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FreeAndNil(FLogFileStream);<br />&nbsp; except<br />&nbsp; end;<br />&nbsp; inherited;<br />end;<br />end.<br /></div><img src ="http://www.blogjava.net/wangxunhua/aggbug/357167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxunhua/" target="_blank">叽哩咕噜</a> 2011-08-24 10:52 <a href="http://www.blogjava.net/wangxunhua/archive/2011/08/24/357167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于"截断字符串或二进制数据"错误</title><link>http://www.blogjava.net/wangxunhua/archive/2011/08/16/356627.html</link><dc:creator>叽哩咕噜</dc:creator><author>叽哩咕噜</author><pubDate>Tue, 16 Aug 2011 06:42:00 GMT</pubDate><guid>http://www.blogjava.net/wangxunhua/archive/2011/08/16/356627.html</guid><wfw:comment>http://www.blogjava.net/wangxunhua/comments/356627.html</wfw:comment><comments>http://www.blogjava.net/wangxunhua/archive/2011/08/16/356627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxunhua/comments/commentRss/356627.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxunhua/services/trackbacks/356627.html</trackback:ping><description><![CDATA[<div>公司一个很古老的系统,忽然出现了一个如下的错误:</div><img alt="" src="http://www.blogjava.net/images/blogjava_net/wangxunhua/未命名.jpg" width="354" height="241" /><br /><br />查看了代码,执行了一个存储过程主要执行了Insert语句. 把几个Insert语句的相关字段的长度一对比发现有长度不相符,更改相关的长度.问题搞定.<img src ="http://www.blogjava.net/wangxunhua/aggbug/356627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxunhua/" target="_blank">叽哩咕噜</a> 2011-08-16 14:42 <a href="http://www.blogjava.net/wangxunhua/archive/2011/08/16/356627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WEB-INF 有关的目录路径问题总结</title><link>http://www.blogjava.net/wangxunhua/archive/2011/06/03/351650.html</link><dc:creator>叽哩咕噜</dc:creator><author>叽哩咕噜</author><pubDate>Fri, 03 Jun 2011 00:03:00 GMT</pubDate><guid>http://www.blogjava.net/wangxunhua/archive/2011/06/03/351650.html</guid><wfw:comment>http://www.blogjava.net/wangxunhua/comments/351650.html</wfw:comment><comments>http://www.blogjava.net/wangxunhua/archive/2011/06/03/351650.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxunhua/comments/commentRss/351650.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxunhua/services/trackbacks/351650.html</trackback:ping><description><![CDATA[<img src="http://www.blogjava.net/images/blogjava_net/wangxunhua/simple.jpg" alt="" border="0" /><br /><br />1. 把页面资源文件只能放在webroot下面,如 CSS,JS,image等.放在WEB-INF下引用不了.像jpetstore也是这样的.<br /><br /><div>2. 页面放在WEB-INF目录下面,这样可以限制访问,提高安全性.如JSP,html</div><br />3.只能用转向方式来访问WEB-INF目录下的JSP,不用采用重定向的方式请求该目录里面的任何资源.如图:index.jsp &gt;&gt;&nbsp; main.jsp<br /><br />4.WEB-INF目录下文件访问资源文件时,可以忽略WEB-INF这一层目录.如main.jsp 要用css目录里的一个css文件.<div>&nbsp;&nbsp;&nbsp; &lt;link rel="stylesheet" type="text/css" href="<strong>css/comm201005faa3.css</strong>" /&gt;这样就行了,从客户端的地址可以看出来<div>&nbsp;&nbsp;&nbsp; 服务器转向main.jsp就是在webroot下面.所以main.jsp和css目录可以讲是同一级目录.<br /><br />5.WEB-INF/oa目录下访问images目录.怎么办呢.&lt;img alt="" src="<strong>images/instpage.gif</strong>"&gt;&lt;/body&gt;还是这这样.<br /><br />6.WEB-INF目录下的文件之间如何访问呢.如在main.jsp用&lt;a href="<strong>oa.do</strong>"&gt;测试OA的路径&lt;/a&gt;访问<br />&nbsp;&nbsp; 像main.jsp有10处链接到WEB-INF目录下的其它页面.那就得有10个转向Action.这个可以用DispatchAction类加参数专门处理转向工作.</div></div><br /><br /><br />&nbsp;&nbsp;&nbsp; 注: 转向方式: 如struts-config文件中配置&lt;forward name="success" path="/WEB-INF/main.jsp" /&gt;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; 或 在Action中写request.getRequestDispatcher("/WEB-INF/main.jsp").forward(request, response);<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 都是服务器读取了该页面内容,并发送到客户端.客户端的地址不变.内容跳转了<br /><br />&nbsp;&nbsp;&nbsp; 重定向方式: 如struts-config文件中配置&lt;forward name="success" path="/WEB-INF/main.jsp" <br /><div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; redirect="true"/&gt; 或在action中response.sendRedirect("/error.jsp");<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 重定向的含义就是服务器把地址发给客户端,让客户端去访问.这种办法显然针对WEB-INF目录是无用功.</div><img src ="http://www.blogjava.net/wangxunhua/aggbug/351650.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxunhua/" target="_blank">叽哩咕噜</a> 2011-06-03 08:03 <a href="http://www.blogjava.net/wangxunhua/archive/2011/06/03/351650.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>