??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品午夜视频,国产精品亚洲二区在线,亚洲精品偷拍视频免费观看 http://m.tkk7.com/sunfruit/category/7555.html--我相信JAVA能走得更q?QQ:316228067zh-cnFri, 21 Mar 2008 14:57:24 GMTFri, 21 Mar 2008 14:57:24 GMT60Swift GIS--E_、自丅R高?/title><link>http://m.tkk7.com/sunfruit/archive/2008/03/21/187758.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Fri, 21 Mar 2008 09:48:00 GMT</pubDate><guid>http://m.tkk7.com/sunfruit/archive/2008/03/21/187758.html</guid><wfw:comment>http://m.tkk7.com/sunfruit/comments/187758.html</wfw:comment><comments>http://m.tkk7.com/sunfruit/archive/2008/03/21/187758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sunfruit/comments/commentRss/187758.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sunfruit/services/trackbacks/187758.html</trackback:ping><description><![CDATA[<script src="http://221.122.41.10/rmcomserver/ltmap/ltmap.js"></script><script type="text/javascript"> var initMap; var mapListener = new MapListener(); mapListener.onClick = function(geoPoint){ //业务 //pointId, geoPoint, color, size, opacity, caption, captionFontColor, captionBgColor, captionOpacity){ var p = new Point(1, geoPoint, '#0000ff', 10, .6, '试?, '#000000', '#FFFF00', .6); initMap.addPoint(p); } mapListener.onMouseMove = function(geoPoint){ window.status = "lon="+geoPoint.x+"; lat="+geoPoint.y; } function win_load(){ initMap = new initMap('map', '221.122.41.10', '80'); initMap.addPanZoomBar(5, 5); //initMap.addOverviewMap(); //*****初始化地图控刉?**** initMap.addControlPanel(60, 20); initMap.controlPanel.all[0].onclick = function(){initMap.drag();}; initMap.controlPanel.all[1].onclick = function(){initMap.zoomIn();}; initMap.controlPanel.all[2].onclick = function(){initMap.zoomOut();}; initMap.controlPanel.all[3].onclick = function(){initMap.getDistance();}; initMap.controlPanel.all[4].onclick = function(){initMap.onPoint('onPoint1');}; initMap.controlPanel.all[5].onclick = function(){initMap.onRect('onRect1');}; initMap.controlPanel.style.width = '370px'; //************************* } function onPoint1(geoPoint){ var p = new Point(1, geoPoint, '#0000ff', 10, 1, '试?, '#000000', '#FFFF00', .6); initMap.addPoint(p); } function onRect1(geoRect){ var rectArea = new RectArea(1, geoRect, '#00ff00', 0.5, '#0000ff', 1); initMap.addRect(rectArea); } function win_unload(){ initMap.listenerAgent.removeListener(mapListener); } //Ҏ? function addPoint(){ var lon = OpenLayers.Util.getElement('addPointLon').value; var lat = OpenLayers.Util.getElement('addPointLat').value; var geoPoint = new GeoPoint(parseFloat(lon), parseFloat(lat)); var p = new Point(1, geoPoint, '#0000ff', 10, 1, '中文中文中文中文', '#FFFF00', '#00FF00', 1); initMap.addPoint(p); } function deletePoint(){ initMap.deletePoint(1); } function clearPoint(){ initMap.clearPoint(); } //U操? function addLine(){ var str = OpenLayers.Util.getElement('addPolygonPoints').value; var pointArr = str.split(","); var points = new Array(); for(var i = 0; i < pointArr.length; i+=2){ points.push(new GeoPoint(parseFloat(pointArr[i]), parseFloat(pointArr[i+1]))); } var line = new Line(1, points, '#000000', 4, 1); initMap.addLine(line); } function deleteLine(){ initMap.deleteLine(1); } function clearLine(){ initMap.clearLine(); } //圆Ş操作 var regularPolygonFeature; function addCircle(){ lon = OpenLayers.Util.getElement('addCircleLon').value; lat = OpenLayers.Util.getElement('addCircleLat').value; radius = OpenLayers.Util.getElement('addPointRadius').value; var geoCircle = new GeoCircle(parseFloat(lon), parseFloat(lat), parseFloat(radius)); var circleArea = new CircleArea(1, geoCircle, '#00ff00', 0.5, '#0000ff', 1); //alert(circleArea); initMap.addCircle(circleArea); } function deleteCircle(){ initMap.deleteCircle(1); } function clearCircle(){ initMap.clearCircle(); } //矩Ş操作 function addRect(){ var left = OpenLayers.Util.getElement('addRectLeft').value; var top = OpenLayers.Util.getElement('addRectTop').value; var right = OpenLayers.Util.getElement('addRectRight').value; var bottom = OpenLayers.Util.getElement('addRectBottom').value; if(left != null && left != '' && top != null && top != '' && right != null && right != '' && bottom != null && bottom != ''){ var geoRect = new GeoRect(parseFloat(left), parseFloat(top), parseFloat(right), parseFloat(bottom)); var rectArea = new RectArea(1, geoRect, '#00ff00', 0.5, '#0000ff', 1); initMap.addRect(rectArea); } } function deleteRect(){ initMap.deleteRect(1); } function clearRect(){ initMap.clearRect(); } //多边? function addPolygon(){ var str = OpenLayers.Util.getElement('addPolygonPoints').value; if(str != null && str != ''){ var pointArr = str.split(","); var nPoints = new Array(); for(var i = 0; i < pointArr.length; i+=2){ nPoints.push(new OpenLayers.Geometry.Point(parseFloat(pointArr[i]), parseFloat(pointArr[i+1]))); } var polygonArea = new PolygonArea(1, nPoints, '#0000ff', 0.1, '#0000ff', 2); initMap.addPolygon(polygonArea); } } function deletePolygon(){ initMap.deletePolygon(1); } function clearPolygon(){ initMap.clearPolygon(); } //标记和弹出窗? function addMarker(){ var str = OpenLayers.Util.getElement('popupPosition').value; var pointArr = str.split(","); var marker = new Marker(1, new GeoPoint(parseFloat(pointArr[0])-.2, parseFloat(pointArr[1])), 'img/zoom-world-mini.png', 30, 30, '<center><a target="_blank">癑ֺ</a></center>', '试POI1', '#000000', '#DDD', .8, false); initMap.addMarker(marker); var marker2 = new Marker(2, new GeoPoint(parseFloat(pointArr[0]), parseFloat(pointArr[1])), 'img/zoom-world-mini.png', 30, 30, '<center><a target="_blank">癑ֺ</a></center>', '试POI2', '#000000', '#DDD', .8, true); initMap.addMarker(marker2); var marker3 = new Marker(3, new GeoPoint(parseFloat(pointArr[0])+.2, parseFloat(pointArr[1])), 'img/zoom-world-mini.png', 30, 30, '', '试POI3', '#000000', '#DDD', .8, true); initMap.addMarker(marker3); } function deleteMarker(){ initMap.deleteMarker(1); } function clearMarker(){ initMap.clearMarker(); } //弹出H口 function addPopup(){ var str = OpenLayers.Util.getElement('popupPosition').value; if(str != null && str != ''){ var pointArr = str.split(","); var p = new GeoPoint(parseFloat(pointArr[0]), parseFloat(pointArr[1])); var popup = new Popup(1, p, .9, '<center>北京灵图技术有限公?/center><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><center>灵图</center>', 272, 170 , true); initMap.addPopup(popup); } } function deletePopup(){ initMap.deletePopup(1); } function clearPopup(){ initMap.clearPopup(); } function addScale(){ initMap.addScale(); } function getScale(){ var obj = OpenLayers.Util.getElement('scaleId'); obj.value = initMap.getScale(); } function removeScale(){ initMap.removeScale(); } function addPanZoomBar(){ initMap.addPanZoomBar(5, 5); } function removePanZoomBar(){ initMap.removePanZoomBar(); } function addListener(){ initMap.listenerAgent.addListener(mapListener); } function removeListener(){ initMap.listenerAgent.removeListener(mapListener); } function setCenter() { var center = new GeoPoint(106.5220,29.5616); initMap.setCenter(center); } function getCenter(){ alert(initMap.getCenter()); } function addSelectFeature(){ initMap.addSelectFeature(); } function zoomOut(){ initMap.zoomOut(); } function drag(){ initMap.drag(); } function addLonLat(){ initMap.addLonLat(); } function setMapByRect(){ geoRect = new GeoRect(106.4253,29.5725,106.6100,29.4756); initMap.setMapByRect(geoRect); } function setMapByPoints(){ var str = OpenLayers.Util.getElement('addPolygonPoints').value; if(str != null && str != ''){ var pointArr = str.split(","); var nPoints = new Array(); for(var i = 0; i < pointArr.length; i+=2){ nPoints.push(new OpenLayers.Geometry.Point(parseFloat(pointArr[i]), parseFloat(pointArr[i+1]))); } initMap.setMapByPoints(nPoints); } } var floatPopup, floatPopup1, floatPopup2; function addFloatPopup(){ var jsContent = "<strong>W一个弹出窗口内?/strong><br /><center><input type=\"button\" value=\"弹出W二个窗口\" onclick=\"test1()\" /></center>"; floatPopup = new creatPopup('aaa', 200, 230, 244, 386, 'W一个窗?, jsContent); //alert(floatPopup); } function addFloatPopup1(){ var jsContent = "<strong>W一个弹出窗口内?/strong>"; creatPopup('aaa', 400, 430, 244, 386, '试H口', jsContent); } function test1(){ creatPopup('bbb', 100, 130, 440, 250, 'W二个窗?, '<center>内容</center>'); } function closePopup_LP(id){ closeFloatPopup(id); } function zoomIn(){ initMap.zoomIn(); } function zoomOut(){ initMap.zoomOut(); } function getDistance() { initMap.getDistance(); } /*********需要回调的函数**********/ function clearRect(){ initMap.clearRect(); } function eventAgent(evt) { initMap.eventAgent(evt); } /*******************************/ </script> <div style="border-right: black 1px solid; border-top: black 1px solid; border-left: black 1px solid; width: 640px; border-bottom: black 1px solid; height: 480px"> <div class="wiiukmw" id="map" style="width: 100%; height: 100%"></div> </div> <form action="" method="post"> <!-- <input type="text" value="" name="loggers" size="100" /> --><!--<input type=button value='清除' onclick='document.getElementById("loggers").value=""'/ /><br/ /> <textarea rows="5" cols="150" id="loggers"></textarea> --> <table width="1024" border="1"> <tbody> <tr> <td width="152">地图操作</td> <td colspan="2"><input onclick="initMap.drag();" type="button" value="Ud" name="drag" /> <input onclick="initMap.zoomIn()" type="button" value="攑֤" name="zoomIn" /> <input onclick="initMap.zoomOut()" type="button" value="~小" name="zoomOut" />    <input onclick="initMap.getDistance()" type="button" value="距" name="line" /> <input onclick="initMap.getArea()" type="button" value="面" name="polygon" />    <input onclick="setCenter()" type="button" value="设中? name="" /> <input onclick="getCenter()" type="button" value="取中? name="" />    <input onclick="setMapByRect()" type="button" value="讄地图(rect)" name="" /> <input onclick="setMapByPoints()" type="button" value="讄地图(points)" name="" /> </td> </tr> <tr> <td width="152">炏V线</td> <td colspan="2"><input value="106.5220" name="addPointLon" type="text" /> <input value="29.5616" name="addPointLat" type="text" /> <input onclick="addPoint()" type="button" value="加点" /> <input onclick="deletePoint()" type="button" value="删点" /> <input onclick="clearPoint()" type="button" value="清点" />       <input onclick="addLine()" type="button" value="加线" name="" /> <input onclick="deleteLine()" type="button" value="删线" name="" /> <input onclick="clearLine()" type="button" value="清线" name="" /> </td> </tr> <tr> <td rowspan="3">多边?/td> <td>?/td> <td>中心 <input size="12" value="106.5220" name="addCircleLon" type="text" /> <input size="12" value="29.5616" name="addCircleLat" type="text" /> 半径 <input id="addPointRedius" size="12" value="0.09" name="addPointRadius" type="text" /> <input onclick="addCircle()" type="button" value="加圆" name="" /> <input onclick="deleteCircle()" type="button" value="删圆" name="" /> <input onclick="clearCircle()" type="button" value="清圆" name="" /></td> </tr> <tr> <td>矩Ş</td> <td>左上 <input id="addRectLeft" size="12" value="106.4253" name="addRectLeft" type="text" /> <input id="addRectTop" size="12" value="29.5725" name="addRectTop" type="text" /> 右下 <input id="addRectRight" size="12" value="106.6100" name="addRectRight" type="text" /> <input id="addRectBottom" size="12" value="29.4756" name="addRectBottom" type="text" /> <input onclick="addRect()" type="button" value="加矩? name="" /> <input onclick="deleteRect()" type="button" value="删矩? name="" /> <input onclick="clearRect()" type="button" value="清矩? name="" /></td> </tr> <tr> <td width="62">多边?/td> <td width="788"><input id="addPolygonPoints" size="68" value="106.5220,29.5616,106.4253,29.5725,106.5726,29.616" name="addPolygonPoints" type="text" /> <input onclick="addPolygon()" type="button" value="加多边Ş" name="" /> <input onclick="deletePolygon()" type="button" value="删多边Ş" name="" /> <input onclick="clearPolygon()" type="button" value="清多边Ş" name="" /> </td> </tr> <tr> <td width="152">标记(marker)</td> <td colspan="2"><input onclick="addMarker()" type="button" value="加标? name="" /> <input onclick="deleteMarker()" type="button" value="删标? name="" /> <input onclick="clearMarker()" type="button" value="清标? name="" />     <input id="popupPosition" value="106.4230,29.5616" name="popupPosition" type="text" /> <input onclick="addPopup()" type="button" value="加弹出窗? name="" /> <input onclick="deletePopup()" type="button" value="删弹出窗? name="" /> <input onclick="clearPopup()" type="button" value="清弹出窗? name="" />     </td> </tr> <tr> <td width="152">滑动?PanZoomBar)</td> <td colspan="2"><input onclick="addPanZoomBar()" type="button" value="L动条" name="" /> <input onclick="removePanZoomBar()" type="button" value="删滑动条" name="" />   <input onclick="addLonLat()" type="button" value="ȝU度" name="" />   <input onclick="initMap.addOverviewMap()" type="button" value="添鹰? name="" /> <input onclick="initMap.deleteOverviewMap()" type="button" value="删鹰? name="" /> </td> </tr> <tr> <td width="152">比例?scale)</td> <td colspan="2"><input id="scaleId" name="scaleId" type="text" /> <input onclick="getScale()" type="button" value="取比例尺" name="" /> <input onclick="addScale()" type="button" value="L例尺" name="" /> <input onclick="removeScale()" type="button" value="删比例尺" name="" /> </td> </tr> <tr> <td width="152">地图属?/td> <td colspan="2"><input onclick="alert(initMap.getViewSize());" type="button" value="H口大小" name="" /> <input onclick="alert(initMap.getMapSize());" type="button" value="地图大小" name="" /> </td> </tr> <tr> <td width="152">事g</td> <td colspan="2"><input onclick="initMap.drag();addListener()" type="button" value="d监听" name="" /> <input onclick="removeListener()" type="button" value="删除监听" name="" />     <input onclick="initMap.onRect('onRect1')" type="button" value="L" name="" />     <input onclick="initMap.onPoint('onPoint1')" type="button" value="炚w? name="" /> </td> </tr> <tr> <td width="152">其它</td> <td colspan="2"><input onclick="addFloatPopup()" type="button" value="动H口A" name="" /> <input onclick="addFloatPopup1()" type="button" value="动H口B" name="" /> <input onclick="closePopup_LP('aaa')" type="button" value="关闭H口A" name="" /> <input onclick="closePopup_LP('bbb')" type="button" value="关闭H口B" name="" /> </td> </tr> </tbody> </table> </form> <script> //initMap.addOverviewMap(); win_load(); </script> <img src ="http://m.tkk7.com/sunfruit/aggbug/187758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sunfruit/" target="_blank">sunfruit</a> 2008-03-21 17:48 <a href="http://m.tkk7.com/sunfruit/archive/2008/03/21/187758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]Applet上叠加层的解x?非div)http://m.tkk7.com/sunfruit/archive/2007/12/29/171555.htmlsunfruitsunfruitSat, 29 Dec 2007 07:36:00 GMThttp://m.tkk7.com/sunfruit/archive/2007/12/29/171555.htmlhttp://m.tkk7.com/sunfruit/comments/171555.htmlhttp://m.tkk7.com/sunfruit/archive/2007/12/29/171555.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/171555.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/171555.html
    在applet上叠加层?U方?br />     W一Q用iframe的方?br />     W二Q用window.createPopup();方式

    <div></div>的方式我是没有试成功Q无论如何设|,div都在applet的下面,要是哪位实验成功了,l验也共享一?br />
    ׃window.createPopup()主要用于创徏右键菜单Q由于其的一些特性,例如在其他地方点?该window.createPopup()对象消失Q所以叠加层方式使用window.createPopup()q不合适,使用iframe制作叠加层的效果更好更好

    效果囑֦?br />     
    
    演示Q?a >http://www.fruitres.cn/applet.jspQ可以从该演C页直接下蝲js代码Q或者到代码下蝲下?br />     代码下蝲Q?a >http://www.fruitres.cn/servlet/buyproductservlet?tag=single&tag1=info&PRODUCT_ID=1084563770&number=0 
    更多下蝲Q?a >http://www.fruitres.cn/

sunfruit 2007-12-29 15:36 发表评论
]]>
[原创]使用JAVA开发不规则滚动?/title><link>http://m.tkk7.com/sunfruit/archive/2007/12/29/171481.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Sat, 29 Dec 2007 04:56:00 GMT</pubDate><guid>http://m.tkk7.com/sunfruit/archive/2007/12/29/171481.html</guid><wfw:comment>http://m.tkk7.com/sunfruit/comments/171481.html</wfw:comment><comments>http://m.tkk7.com/sunfruit/archive/2007/12/29/171481.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sunfruit/comments/commentRss/171481.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sunfruit/services/trackbacks/171481.html</trackback:ping><description><![CDATA[    --sunfruit<br /> <br />     在GIS|站上一般都会看C面的滚动条,俗称骨头或是排骨架Q当然这个是WEB方式<br />       <img height="317" alt="" src="http://m.tkk7.com/images/blogjava_net/sunfruit/51ditu.JPG" width="328" border="1" /><br /> <br />     如果是应用程序或是Applet该如何制作呢Q其实也不复杂,只是需要灵z运用Swing的特性,下面是一个Application的demo<br />     <img height="296" alt="" src="http://m.tkk7.com/images/blogjava_net/sunfruit/application.JPG" width="400" border="1" /><br /> <br />     看似复杂Q其实如果理解了也没有什么神U?br /> <br />     下蝲地址Q?a >http://www.fruitres.cn/servlet/buyproductservlet?tag=single&tag1=info&PRODUCT_ID=1342916853&number=0</a><br />     JAVA WEB START演示地址Q?a >http://www.fruitres.cn/useruploadfile/3/1342916853_jnlp.jnlp</a><br />     更多下蝲Q?a >http://www.fruitres.cn/</a><br /> <br /> <img src ="http://m.tkk7.com/sunfruit/aggbug/171481.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sunfruit/" target="_blank">sunfruit</a> 2007-12-29 12:56 <a href="http://m.tkk7.com/sunfruit/archive/2007/12/29/171481.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]使用ArcIMS引擎l制地图基础代码http://m.tkk7.com/sunfruit/archive/2007/11/30/164436.htmlsunfruitsunfruitFri, 30 Nov 2007 15:28:00 GMThttp://m.tkk7.com/sunfruit/archive/2007/11/30/164436.htmlhttp://m.tkk7.com/sunfruit/comments/164436.htmlhttp://m.tkk7.com/sunfruit/archive/2007/11/30/164436.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/164436.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/164436.html
    代码演示了基于ArcIMS开发包q行地图开发的基础Ҏ

    代码不是单独的可执行c,所以只看private void initMap()Ҏ和public BufferedImage render()Ҏ卛_。MapBoundModel不用q可以理解为等同Envelopecd?br />
    在确定以下三个?br />     private String host = "172.17.8.99";
    private int port = 5300;
    private String servicename = "sde";
    讄正确q且调用refresh();Ҏ也没有异常抛出,但是getStream();q回null值得时候,则需要调整AXL文gd<OUTPUT method="stream"/>重新发布Q具体AXL内容h册后下蝲加密附g查看

    查看代码直接下蝲demo文g卛_

    地址Q?a >http://www.fruitres.cn/servlet/buyproductservlet?tag=single&tag1=info&PRODUCT_ID=1257242391&number=0
    更多下蝲Q?a >http://www.fruitres.cn

sunfruit 2007-11-30 23:28 发表评论
]]>
[原创]使用GeoTools引擎l制地图基础代码http://m.tkk7.com/sunfruit/archive/2007/11/30/164435.htmlsunfruitsunfruitFri, 30 Nov 2007 15:27:00 GMThttp://m.tkk7.com/sunfruit/archive/2007/11/30/164435.htmlhttp://m.tkk7.com/sunfruit/comments/164435.htmlhttp://m.tkk7.com/sunfruit/archive/2007/11/30/164435.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/164435.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/164435.html
    Geotools是一个开源的Java GIS工具?可利用它来开发符合标准的地理信息pȝ。Geotools提供了OGC(Open Geospatial Consortium)规范的一个实现来作ؓ他们的开?br />
    代码演示了基于GeoTools开源包q行地图开发的基础Ҏ

    代码不是单独的可执行c,所以只看private void init()Ҏ和public BufferedImage render()Ҏ卛_。MapBoundModel不用q可以理解为等同Envelopecd?br />
直接下蝲demo文g卛_

    下蝲地址Q?a >http://www.fruitres.cn/servlet/buyproductservlet?tag=single&tag1=info&PRODUCT_ID=627152979&number=0
    更多下蝲Q?a >http://www.fruitres.cn

sunfruit 2007-11-30 23:27 发表评论
]]>
[原创]JAVA开发的俄罗斯方块源代码http://m.tkk7.com/sunfruit/archive/2007/09/29/149503.htmlsunfruitsunfruitSat, 29 Sep 2007 03:11:00 GMThttp://m.tkk7.com/sunfruit/archive/2007/09/29/149503.htmlhttp://m.tkk7.com/sunfruit/comments/149503.htmlhttp://m.tkk7.com/sunfruit/archive/2007/09/29/149503.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/149503.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/149503.html
    JAVA开发的俄罗斯方块源代码Q比较简陋,只支持最基本的功能,不过框架清晰Q感兴趣的可以参?br />    
    直接下蝲demo文g卛_

    JDK1.5

    下蝲地址:http://www.fruitres.cn/servlet/buyproductservlet?tag=single&tag1=info&PRODUCT_ID=1925709310&number=0
    更多下蝲:http://www.fruitres.cn/

sunfruit 2007-09-29 11:11 发表评论
]]>
[资料]WINDOWSq_的java串口开发包javacomm20-win32http://m.tkk7.com/sunfruit/archive/2007/09/12/144433.htmlsunfruitsunfruitWed, 12 Sep 2007 03:10:00 GMThttp://m.tkk7.com/sunfruit/archive/2007/09/12/144433.htmlhttp://m.tkk7.com/sunfruit/comments/144433.htmlhttp://m.tkk7.com/sunfruit/archive/2007/09/12/144433.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/144433.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/144433.html     windowsq_串口java开发包javacomm20-win32

    下蝲地址Q?a >http://www.fruitres.cn/servlet/buyproductservlet?tag=single&tag1=info&PRODUCT_ID=994930817&number=0
    更多下蝲Q?a >http://www.fruitres.cn

sunfruit 2007-09-12 11:10 发表评论
]]>
[原创]基本l图演示源代码,l制矩Şhttp://m.tkk7.com/sunfruit/archive/2007/09/03/142259.htmlsunfruitsunfruitMon, 03 Sep 2007 04:46:00 GMThttp://m.tkk7.com/sunfruit/archive/2007/09/03/142259.htmlhttp://m.tkk7.com/sunfruit/comments/142259.htmlhttp://m.tkk7.com/sunfruit/archive/2007/09/03/142259.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/142259.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/142259.html     
    源代码四个文?在这个DEMO中可以看?br />     如何使用2DlgQ如何把JPanel做ؓL使用Q如何用Canvas替代JPanelQ如何设|?Dlg的线?br />
    q个只是针对像入门的新手Q高手就不需要看了,免得扔鸡?br />     

     下蝲地址 http://www.fruitres.cn/servlet/buyproductservlet?tag=single&tag1=info&PRODUCT_ID=1016162856&number=0
     更多工具和文档请?http://www.fruitres.cn/

sunfruit 2007-09-03 12:46 发表评论
]]>
[原创]Oracle表结构导ZؓHTML工具1.0.4http://m.tkk7.com/sunfruit/archive/2007/07/19/131237.htmlsunfruitsunfruitThu, 19 Jul 2007 03:41:00 GMThttp://m.tkk7.com/sunfruit/archive/2007/07/19/131237.htmlhttp://m.tkk7.com/sunfruit/comments/131237.htmlhttp://m.tkk7.com/sunfruit/archive/2007/07/19/131237.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/131237.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/131237.html Oracle表结构导出成Html面的工?br />
1.0.4
增加了导发器、存储过E、函数的功能Qƈ且修改了不能导出KEYS全部cd的BUG

1.0.3
增加了导出Sequences、View的功能,q且导出界面默认导出到安装文件夹中的export目录?br />
1.0.2
增加了导出KEYS、INDEX的功?br />
1.0.1
增加了导出完毕以后直接点L开文g夏V打开文g的查看方式,q且支持Linux/Win q_

1.0.0
导出为html文gQ导出完毕后直接查看index.html文g卛_。导出的内容包括各个表的名称索引和注释以及表中各个字D늚明细和注?

下蝲地址 http://www.fruitres.cn/servlet/buyproductservlet?tag=single&tag1=info&PRODUCT_ID=942025602&number=0 下蝲版本1.0.4
更多工具和文档请?http://www.fruitres.cn/

sunfruit 2007-07-19 11:41 发表评论
]]>
[原创]通过JAVA改变囄的像素Alpha值实现图片透明http://m.tkk7.com/sunfruit/archive/2007/05/20/118612.htmlsunfruitsunfruitSat, 19 May 2007 16:20:00 GMThttp://m.tkk7.com/sunfruit/archive/2007/05/20/118612.htmlhttp://m.tkk7.com/sunfruit/comments/118612.htmlhttp://m.tkk7.com/sunfruit/archive/2007/05/20/118612.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/118612.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/118612.html    --sunfruit

    讄囄的每个象素AlphaQ得图片透明Q核心代码如?br>
    private void setAlpha(ByteArrayOutputStream os) {
    /**
     * 增加试?br>     * d囄Q绘制成半透明
     */
    try {

      ImageIcon imageIcon = new ImageIcon(os.toByteArray());
      BufferedImage bufferedImage = new BufferedImage(imageIcon.getIconWidth(),imageIcon.getIconHeight()
          , BufferedImage.TYPE_4BYTE_ABGR);
      Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics();
      g2D.drawImage(imageIcon.getImage(), 0, 0,
                           imageIcon.getImageObserver());
      //循环每一个像素点Q改变像素点的Alpha?br>      int alpha = 100;
      for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage.getHeight(); j1++) {
        for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage.getWidth(); j2++) {
          int rgb = bufferedImage.getRGB(j2, j1);
          rgb = ( (alpha + 1) << 24) | (rgb & 0x00ffffff);
          bufferedImage.setRGB(j2, j1, rgb);
        }
      }
      g2D.drawImage(bufferedImage, 0, 0, imageIcon.getImageObserver());
     
      //生成囄为PNG

      ImageIO.write(bufferedImage, "png",  new File(囄路径));
    }
    catch (Exception e) {
      e.printStackTrace();
    }

  }



sunfruit 2007-05-20 00:20 发表评论
]]>
[原创]通过HttpURLConnection如何使用代理服务器连接公|?/title><link>http://m.tkk7.com/sunfruit/archive/2007/03/22/105487.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Thu, 22 Mar 2007 02:41:00 GMT</pubDate><guid>http://m.tkk7.com/sunfruit/archive/2007/03/22/105487.html</guid><wfw:comment>http://m.tkk7.com/sunfruit/comments/105487.html</wfw:comment><comments>http://m.tkk7.com/sunfruit/archive/2007/03/22/105487.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sunfruit/comments/commentRss/105487.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sunfruit/services/trackbacks/105487.html</trackback:ping><description><![CDATA[    --sunfruit<br /><br />    在openConnection之前加上<br />    Properties   prop   =   System.getProperties();<br />    System.getProperties().put("proxySet","true");<br />    // 讄http讉K要用的代理服务器的地址<br />    prop.setProperty("http.proxyHost","xxxxxxx");<br />    // 讄http讉K要用的代理服务器的端口<br />    prop.setProperty("http.proxyPort","xxxxx");<br />    <br />    然后q不像有的脓子说的那h?br />    prop.setProperty("http.proxyUser","xxxxxxxx");<br />    prop.setProperty("http.proxyPassword","xxxxx");<br />    dq样的内Ҏ不行的,而是?username:password"q行base64~码Q具体代码如?br />    String authentication = "username:password";<br />    String encodedLogin = new BASE64Encoder().encode(authentication.getBytes());<br />    httpurlconnection.setRequestProperty("Proxy-Authorization", " Basic " + encodedLogin);<br />    <br />    注意BASE64Encoder().encode(authentication.getBytes());q里不能使用BASE64Encoder().encodeBuffer(authentication.getBytes())否则报错<br />    具体原因参考sun公布的JDK BUG , Bug ID:  4615330  <a >http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4615330</a> <img src ="http://m.tkk7.com/sunfruit/aggbug/105487.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sunfruit/" target="_blank">sunfruit</a> 2007-03-22 10:41 <a href="http://m.tkk7.com/sunfruit/archive/2007/03/22/105487.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]关于JAVAMAIL发送邮件正文是html格式q且昄囄q带有附件的邮g的几点说?/title><link>http://m.tkk7.com/sunfruit/archive/2006/11/09/80070.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Thu, 09 Nov 2006 03:06:00 GMT</pubDate><guid>http://m.tkk7.com/sunfruit/archive/2006/11/09/80070.html</guid><wfw:comment>http://m.tkk7.com/sunfruit/comments/80070.html</wfw:comment><comments>http://m.tkk7.com/sunfruit/archive/2006/11/09/80070.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sunfruit/comments/commentRss/80070.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sunfruit/services/trackbacks/80070.html</trackback:ping><description><![CDATA[    --sunfruit<br />    前一D|间发了一个?a class="titlelink" id="Editor_Results_rprSelectionList_ctl02_Hyperlink1" href="/sunfruit/archive/2006/10/24/77086.html"><font color="#000000">[原创]JAVAMAIL发送邮件正文是html格式q且昄囄q带有附件的邮g</font></a>”的文章Q后来经q深入的使用该功能发现几个要点说明如下:<br />    W一Q正文必ȝ一个添加到Multipart对象?br />    W二QIMGX  X是序P该序号必M1开始,q且只能为数?br />    以上两点~少一炚w不会成功<br />    另:ByteArrayDataSource  q个cd旧的javamail开发包中没有,需要新的javamail开发包<img src ="http://m.tkk7.com/sunfruit/aggbug/80070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sunfruit/" target="_blank">sunfruit</a> 2006-11-09 11:06 <a href="http://m.tkk7.com/sunfruit/archive/2006/11/09/80070.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]JAVAMAIL发送邮件正文是html格式q且昄囄q带有附件的邮ghttp://m.tkk7.com/sunfruit/archive/2006/10/24/77086.htmlsunfruitsunfruitTue, 24 Oct 2006 15:04:00 GMThttp://m.tkk7.com/sunfruit/archive/2006/10/24/77086.htmlhttp://m.tkk7.com/sunfruit/comments/77086.htmlhttp://m.tkk7.com/sunfruit/archive/2006/10/24/77086.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/77086.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/77086.html    --sunfruit
   没有什么说的,源代码如?br />public void sendMail(int id) {
        //数据初始?br />        Transport transport; //发邮件时使用
        String part = GetResource.getXMLValue("mail_port"); //端口
        String mailhost = GetResource.getXMLValue("mail_server"); //服务?br />        String user = GetResource.getXMLValue("mail_user"); //用户?br />        String password = GetResource.getXMLValue("mail_password"); //密码
        String from = GetResource.getXMLValue("mail_from"); //发gmail
        String strname = GetResource.getXMLValue("mail_strname"); //在地址栏上昄的名?/p>

        String to = GetResource.getXMLValue("mail_to"); //收g?br />        String cc = ""; //抄送h
        String bcc = ""; //密送h
        String title = GetResource.getXMLValue("mail_title"); //标题
        byte[] bytes = null;
        try {
            bytes = FileIO.readFile(GetResource.getXMLValue("mail_contentpath")); //正文
        } catch (IOException ex) {
            log.error("",ex);
        }
        String fromat = GetResource.getXMLValue("mail_fromat");

        //获得下蝲需要的key
        byte[] bkeydes=null;
        try {
            bkeydes=FileIO.readFile(GetResource.getXMLValue("附g地址"));
        } catch (IOException ex) {
            log.error("",ex);
        }

        try {
            Properties props = System.getProperties(); //获得pȝ属?br />            props.put("mail.smtp.host", mailhost); //讄SMTPL
            props.put("mail.smtp.auth", "true"); //讄w䆾验证为真Q若n份验证则必须设ؓ?/p>

            //获得邮g会话对象
            Session session = null;

            //需要验?br />            session = Session.getDefaultInstance(props,
                                                 new SmtpAuthenticator(user,
                    password));

            //创徏MIME邮g对象
            MimeMessage mimeMsg = new MimeMessage(session);
            //讄发信?br />            if (strname != null && !strname.equals("")) {
                mimeMsg.setFrom(new InternetAddress(from, strname));
            } else {
                mimeMsg.setFrom(new InternetAddress(from));
            }
            //讄收信?br />            if (!to.equals("")) {
                mimeMsg.setRecipients(Message.RecipientType.TO,
                                      InternetAddress.parse(to));
            }
            //讄抄送h
            if (!cc.equals("")) {
                mimeMsg.setRecipients(Message.RecipientType.CC,
                                      InternetAddress.parse(cc));
            }
            //讄暗送h
            if (!bcc.equals("")) {
                mimeMsg.setRecipients(Message.RecipientType.BCC,
                                      InternetAddress.parse(bcc));
            }
            //讄邮g主题
            sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
//            mimeMsg.setSubject("=?GB2312?B?" + enc.encode(title.getBytes()) +
//                               "?=");
            mimeMsg.setSubject(title, "GBK");
            //讄邮g内容
            //mimeMsg.setText(content, "gb2312");
            //发送日?br />            mimeMsg.setSentDate(new Date());
            /*******************附g begin××××××××××××××××××××××××*/
            BodyPart mbp = null; //正文
            //MimeBodyPart mbp1 = null; //附g

            mbp = new MimeBodyPart();
            //讄邮g正文格式Qhtml/textQ?br />            if (fromat.equals("0") || fromat.equals("")) {
                //普通格?br />                mbp.setText(new String(bytes,"GBK"));
            } else {
                //|页格式
                mbp.setDataHandler(new DataHandler(new String(bytes,"GBK"),
                        "text/html;charset=gb2312"));
            }
            //!!!!注意必须为new MimeMultipart("related"); q样的实例化才能发送html正文昄囄的邮?"related"
            //new MimeMultipart(); q样实例化则不能发送html正文昄囄的邮?只可以发送其他的邮g
            Multipart mp = new MimeMultipart("related");
            if (mbp != null)
                mp.addBodyPart(mbp); //正文

            //附gkey.des
            BodyPart messageBodyPart = new MimeBodyPart();
            ByteArrayDataSource fileds = new ByteArrayDataSource(bkeydes,"application/octet-stream");
            messageBodyPart.setDataHandler(new DataHandler(fileds));
            //解决附g中文问题
            //mbp1.setFileName(fileds.getName(),"gb2312");
            messageBodyPart.setFileName(MimeUtility.encodeWord("key.des", "GB2312", null));
            mp.addBodyPart(messageBodyPart);

            //附g 图标
            messageBodyPart = new MimeBodyPart();
            bytes=FileIO.readFile(GetResource.getXMLValue("img_logo"));
            fileds = new ByteArrayDataSource(bytes,"application/octet-stream");
            messageBodyPart.setDataHandler(new DataHandler(fileds));
            //解决附g中文问题
//            messageBodyPart.setFileName("fruitrsource_touming.jpg");
//            messageBodyPart.setHeader("Content-ID", "fruitrsource_touming");
            messageBodyPart.setFileName("1.jpg");
            //!!!!注意q里?<IMG1>" 带有括?而在正文的html里面则是src="cid:IMG1"
            messageBodyPart.setHeader("Content-ID", "<IMG1>");
            mp.addBodyPart(messageBodyPart);

            // d Multipart到Message?br />            mimeMsg.setContent(mp);
            mimeMsg.saveChanges();
            transport = session.getTransport("smtp");
            transport.connect(mailhost, Integer.parseInt(part), user, password);
            //发送邮?br />            //transport.send(mimeMsg, mimeMsg.getAllRecipients());
            //transport.send(mimeMsg);
            transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());
            //System.out.println("mail send!");
            transport.close();

        }

        catch (Exception e) {
            e.printStackTrace();

        }
    }

class SmtpAuthenticator extends Authenticator {
        //SMTPw䆾验证
        public SmtpAuthenticator(String username, String password) {
            this.username = username;
            this.password = password;
        }

        public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(this.username, this.password);
        }

        String username = null;
        String password = null;
    }



sunfruit 2006-10-24 23:04 发表评论
]]>
[原创]利用囄的像素RGBD原图像的JAVA应用http://m.tkk7.com/sunfruit/archive/2006/10/23/76830.htmlsunfruitsunfruitMon, 23 Oct 2006 13:28:00 GMThttp://m.tkk7.com/sunfruit/archive/2006/10/23/76830.htmlhttp://m.tkk7.com/sunfruit/comments/76830.htmlhttp://m.tkk7.com/sunfruit/archive/2006/10/23/76830.html#Feedback1http://m.tkk7.com/sunfruit/comments/commentRss/76830.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/76830.html    --sunfruit
    JAVA~写的用像素RGBD原图像的ҎQ代码如?br />    public class ImageData {

    private int[][] idata=null;

    public ImageData() {
        readImageData();
        writeImageData();
    }

    private int[][] readImageData()
    {
        try {
            //imagedata的键值就是一个存储了囑փ像素RGB值得文本文g
            RandomAccessFile randomAccessFile = new RandomAccessFile(new File(GetResource.getXMLValue("imagedata")),"r");
            long filesize=randomAccessFile.length();
            long filepointer=0;
            DynArrayInt dynArrayInt=null;
            ArrayList arrayList=new ArrayList();
            int n1=0;
            while(filesize>filepointer)
            {
                filepointer=randomAccessFile.getFilePointer();

                String str1=randomAccessFile.readLine();
                if(str1!=null)
                {
                    String[] str2=str1.split(" ");
                    String[] str3=str2[1].split(",");
                    dynArrayInt=new DynArrayInt();
                    for(int i=0;i<str3.length;i++)
                    {
                        if(!str3[i].equals(""))
                        {
                            int pix = Integer.parseInt(str3[i], 16);
                            dynArrayInt.addInt(pix);
                        }
                    }
                    if(n1==0)
                        n1=dynArrayInt.getSize();
                    arrayList.add(dynArrayInt);
                }
            }

            idata=new int[arrayList.size()][dynArrayInt.getSize()];
            for(int i=0;i<idata.length;i++)
            {
                 DynArrayInt dynArrayInt1=(DynArrayInt)arrayList.get(i);
                for(int j=0;j<idata[i].length;j++)
                {
                    idata[i][j]=dynArrayInt1.getInt(j);
                }
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return idata;
    }

    private void writeImageData()
    {
        BufferedImage bufferedImage=new BufferedImage(idata[0].length,idata.length,BufferedImage.TYPE_INT_RGB);
        for(int i=0;i<idata.length;i++)
        {

            for(int j=0;j<idata[i].length;j++)
            {
                bufferedImage.setRGB(j,i,idata[i][j]);
            }
        }
        Random random=new Random(System.currentTimeMillis());
        String ext="jpg";
        String filepath = System.getProperty("java.io.tmpdir") + random.nextInt(99999) + "." + ext;
        try {
            ImageIO.write(bufferedImage, ext,  new File(filepath));
            System.out.println("文g已经生成Q\lؓ" + filepath);
        }
        catch (IOException ex) {
            ex.printStackTrace();
        }

    }

    public static void main(String[] args) {
        ImageData imagedata = new ImageData();
    }
}

其中?#8220;GetResource”Q?#8220;DynArrayInt”定义c,GetResource得功能就是解析获取properties文g的内容,DynArrayInt是一个整形动态数l,可以在以前的文章里获?#8220;DynArrayInt”的源代码,所谓的囑փ的像素值就是如下数?br />px1 44525b,44555d,475a61,47585d,44555a,46575c,44575d,43565c,42575e,43585f,445960,435962,435964,425861,425861,41585e,3f555e,3e545f,3d5261,3c5162,3d4f59,3d4f59,3f515b,40525c,40525c,40525c,40525c,3f515b,3f515b,3f4f5a,3f4f5c,40505d,3f515f,3f515f,3d5060,3c4f5f,3b505f,3a4e58,3e525e,3e525e,3d5060,415466,3f5264,405363,405460,41555f,42575d,42575e,43585f,445862,445862,445864,445864,445866,445866,415760,435962,445a63,455b66,455b66,445a67,455b68,485d6c,4c626f,4d636e,4e646f,4d636c,4b616a,51686e,536a70,566d73,5c7378,6f7c7a,7c8987,86908f,8d9796,8e9696,949a9a,969c9c,9ca2a2,a1a3a1,a8aaa8,aeb1ac,b2b5b0,b9bcb7,c5c8c2,cccfc9,ced1c9,d6d9d1,d5d8d3,d7dad5,dadbd5,dcddd7,dcdbd4,ddddd3,e0ddd4,e0ddd4,deddd6,deddd6,deddd6,dfded7,dfded7,e0dfd8,e0dfd8,e0dfd8,e0dfd8,e3dfd9,e3dfd9,e3dfd9,e3dfd9,e4e0da,e4e0da,e4e0da,e5e1db,e5e1db,e2e1da,e2e1da,e3e2db,e3e2db,e4e3dc,e4e3dc,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e6e5de,e6e5de,e6e5de,e6e5de,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e4e1d8,e5e2d9,e5e2d9,e4e1d8,e2dfd6,e3e0d7,e2dfd6,e1ded5,e1ded5,e2dfd6,e2dfd6,e2dfd6,e2dfd6,e1ded5,e1ded5,e1ded5,e1ded5,e1ded5,dedad4,dedad4,dcdbd4,dcdbd4,dbdcd4,dbdcd4,d9dcd4,d9dcd4,dedad4,dedad4,ddd9d3,ddd9d3,dbd7d1,dbd7d1,dcd8d2,dcd8d2,dbd7d1,d5d8d0,d5d8d0,d7d8d0,d7d8d0,d7d6cf,d9d5cf,d9d5cf,d9d5cf,d6d5ce,d6d5ce,d6d5ce,d6d5ce,d6d5ce,d6d5ce,d6d5ce,d5d4cd,d5d4cd,d5d7cc,d5d7cc,d5d7cc,d5d7cc,d4d6cb,d4d6cb,d5d7cc,d5d7cc,d5d7cc,d2d7d0,d2d7d0,d3d6d0,d3d6d0,d4d5cf,d4d5cf,d5d4cf,d5d4cf,d5d4cf,d5d4cf,d5d4cf,d5d4cf,d4d3ce,d4d3ce,d4d3ce,d4d3ce,d4d3ce,d0d3cb,d2d3cb,d3d2cb,d6d0cb,d6d0cb,d4d3cc,d3d4cc,d2d5cd,d3d2ce,d3d2ce,d3d2ce,d3d2ce,d3d2ce,d3d2ce,d3d2ce,d3d2ce,d3d2ce,d0d3cb,d0d3cb,d2d3cb,d2d3cb,d3d2cb,d3d2cb,d5d1cb,d5d1cb,d2d1cc,d2d1cc,d2d1cc,d2d1cc,d2d1cc,d2d1cc,d2d1cc,d2d1cc,d2d1cc,d1d0c9,d1d0c9,d2d1ca,d2d1ca,d3d2cb,d3d2cb,d3d2cb,d3d2cb
px0 44525b,44575e,465b62,485a5a,455757,46585a,44575b,42555b,41565d,435761,445862,445a63,435966,435964,42595f,42595e,40575c,3f5560,3d5263,3c5066,3a4c58,3b4d59,3d4f5b,3e505a,40525c,40525c,40535a,3f5259,3f5259,3f5057,3f5057,405158,3f5259,3f5259,3d515b,3c505a,3b515c,3a4e5a,3e5260,3e5260,3d5060,415468,3f5266,3f5262,405462,405460,42575d,42575e,43585f,435761,41555f,425662,445864,465a68,465a68,415760,425861,445a63,445a65,445a65,465c69,475d6a,475c6b,44596a,485d6e,4c6373,4d6474,4a616f,4b6472,4b6472,496270,4c6573,5f6c6e,677476,6f7c7e,798587,818a8d,899295,8f969a,91989c,949895,9a9e9b,9ea39d,a1a6a0,a9aea8,aeb3ac,babfb8,c0c5bc,ccd1c8,cfd2cd,d2d5d0,d5d6d0,d7d8d2,dcdbd4,ddddd3,e0ddd4,e0ddd4,deddd6,deddd6,deddd6,dfded7,dfded7,e0dfd8,e0dfd8,e0dfd8,e0dfd8,e3dfd9,e3dfd9,e3dfd9,e3dfd9,e4e0da,e4e0da,e4e0da,e5e1db,e5e1db,e2e1da,e2e1da,e3e2db,e3e2db,e4e3dc,e4e3dc,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e6e5de,e6e5de,e6e5de,e6e5de,e5e4dd,e5e4dd,e5e4dd,e5e4dd,e4e1d8,e4e1d8,e4e1d8,e3e0d7,e2dfd6,e2dfd6,e2dfd6,e1ded5,e1ded5,e2dfd6,e2dfd6,e2dfd6,e2dfd6,e1ded5,e1ded5,e1ded5,e1ded5,e1ded5,ddd9d3,ddd9d3,dbdad3,dbdad3,dadbd3,dadbd3,d8dbd3,d8dbd3,dedad4,dedad4,ddd9d3,ddd9d3,dad6d0,dbd7d1,dcd8d2,dcd8d2,dbd7d1,d5d8d0,d5d8d0,d5d8d0,d7d8d0,d6d7cf,d7d6cf,d7d6cf,d9d5cf,d6d5ce,d6d5ce,d6d5ce,d6d5ce,d6d5ce,d6d5ce,d6d5ce,d5d4cd,d5d4cd,d6d8cd,d6d8cd,d6d8cd,d6d8cd,d4d6cb,d4d6cb,d5d7cc,d5d7cc,d5d7cc,d3d8d1,d3d8d1,d4d7d1,d4d7d1,d4d5cf,d4d5cf,d5d4cf,d5d4cf,d5d4cf,d5d4cf,d5d4cf,d5d4cf,d4d3ce,d4d3ce,d4d3ce,d4d3ce,d4d3ce,d0d3cb,d2d3cb,d3d2cb,d6d0cb,d7d1cc,d4d3cc,d4d5cd,d2d5cd,d4d2d1,d4d2d1,d4d2d1,d4d2d1,d4d2d1,d3d1d0,d3d1d0,d3d1d0,d3d1d0,d0d3cb,d0d3cb,d2d3cb,d2d3cb,d3d2cb,d3d2cb,d5d1cb,d5d1cb,d3d2cd,d3d2cd,d3d2cd,d3d2cd,d3d2cd,d2d1cc,d2d1cc,d2d1cc,d2d1cc,d1d0c9,d1d0c9,d2d1ca,d2d1ca,d4d3cc,d4d3cc,d4d3cc,d4d3cc
以上数据表示囑փ有两行像素,每一行有260个像素组成,每个像素的RGB值就?4525b



sunfruit 2006-10-23 21:28 发表评论
]]>
用URLConnection或是HttpURLConnectioncMPOST或是GET方式提交保持Session的解军_?/title><link>http://m.tkk7.com/sunfruit/archive/2006/09/01/67098.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Fri, 01 Sep 2006 06:21:00 GMT</pubDate><guid>http://m.tkk7.com/sunfruit/archive/2006/09/01/67098.html</guid><wfw:comment>http://m.tkk7.com/sunfruit/comments/67098.html</wfw:comment><comments>http://m.tkk7.com/sunfruit/archive/2006/09/01/67098.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sunfruit/comments/commentRss/67098.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sunfruit/services/trackbacks/67098.html</trackback:ping><description><![CDATA[    --sunfruit<br>    当通过URLConnectionW一ơ和服务器发起POST或是GETh以后Q通过getHeaderFieldҎ获得SessionIDQ具体方法ؓQ?br>    String session_value=getHeaderField("Set-Cookie");<br>    W二ơ发起POST或是GETh的时候需要把刚才获得的SessionID攄在请求的头部然后再提交,q样p服务器就会认为是同一个Sessionh了,具体Ҏ为:<br>    setRequestProperty("Cookie", session_value);<br><br>    如果取得Set-Cookie的值比较长Q取值到分号前即??JSESSIONID=575F7196EDB52825D288F4061C66BC29;<br>    <br>    q样实C保存session向服务器提交h <img src ="http://m.tkk7.com/sunfruit/aggbug/67098.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sunfruit/" target="_blank">sunfruit</a> 2006-09-01 14:21 <a href="http://m.tkk7.com/sunfruit/archive/2006/09/01/67098.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转发]Java虚拟机的深入研究http://m.tkk7.com/sunfruit/archive/2006/07/21/59470.htmlsunfruitsunfruitFri, 21 Jul 2006 10:14:00 GMThttp://m.tkk7.com/sunfruit/archive/2006/07/21/59470.htmlhttp://m.tkk7.com/sunfruit/comments/59470.htmlhttp://m.tkk7.com/sunfruit/archive/2006/07/21/59470.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/59470.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/59470.html

Java虚拟机的深入研究

作者:刘学?

1  Java技术与Java虚拟?

说vJavaQh们首先想到的是Java~程语言Q然而事实上QJava是一U技术,它由四方面组? Java~程语言、JavacL件格式、Java虚拟机和Java应用E序接口(Java API)。它们的关系如下图所C:

?  Java四个斚w的关p?

q行期环境代表着Javaq_Q开发h员编写Java代码(.java文g)Q然后将之编译成字节?.class文g)。最后字节码被装入内存,一旦字节码q入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的{换成机器码执行。从上图也可以看出Javaq_由Java虚拟机和Java应用E序接口搭徏QJava语言则是q入q个q_的通道Q用Java语言~写q编译的E序可以q行在这个^C。这个^台的l构如下图所C:

在Javaq_的结构中, 可以看出QJava虚拟?JVM) 处在核心的位|,是程序与底层操作pȝ和硬件无关的关键。它的下ҎUL接口Q移植接口由两部分组成:适配器和Java操作pȝ, 其中依赖于^台的部分UCؓ适配器;JVM 通过UL接口在具体的q_和操作系l上实现Q在JVM 的上ҎJava的基本类库和扩展cd以及它们的APIQ?利用Java API~写的应用程?application) 和小E序(Java applet) 可以在Q何Javaq_上运行而无需考虑底层q_, 是因ؓ有Java虚拟?JVM)实现了程序与操作pȝ的分,从而实CJava 的^台无x?

那么到底什么是Java虚拟?JVM)呢?通常我们谈论JVMӞ我们的意思可能是Q?

  1. 对JVM规范的的比较抽象的说明;
  2. 对JVM的具体实玎ͼ
  3. 在程序运行期间所生成的一个JVM实例?

对JVM规范的的抽象说明是一些概늚集合Q它们已l在书《The Java Virtual Machine Specification》(《Java虚拟范》)中被详细地描qCQ对JVM的具体实现要么是软gQ要么是软g和硬件的l合Q它已经被许多生产厂商所实现Qƈ存在于多U^C上;q行JavaE序的Q务由JVM的运行期实例单个承担。在本文中我们所讨论的Java虚拟?JVM)主要针对W三U情况而言。它可以被看成一个想象中的机器,在实际的计算Z通过软g模拟来实玎ͼ有自己想象中的硬Ӟ如处理器、堆栈、寄存器{,q有自己相应的指令系l?

JVM在它的生存周期中有一个明的dQ那是q行JavaE序Q因此当JavaE序启动的时候,׃生JVM的一个实例;当程序运行结束的时候,该实例也跟着消失了。下面我们从JVM的体pȝ构和它的q行q程q两个方面来对它q行比较深入的研I?

2  Java虚拟机的体系l构

刚才已经提到QJVM可以׃同的厂商来实现。由于厂商的不同必然DJVM在实C的一些不同,然而JVMq是可以实现跨^台的Ҏ,q就要归功于设计JVM时的体系l构了?

我们知道Q一个JVM实例的行Z光是它自q事,q涉及到它的子系l、存储区域、数据类型和指oq些部分Q它们描qCJVM的一个抽象的内部体系l构Q其目的不光规定实现JVM时它内部的体pȝ构,更重要的是提供了一U方式,用于严格定义实现时的外部行ؓ。每个JVM都有两种机制Q一个是装蝲h合适名U的c?cL是接?Q叫做类装蝲子系l;另外的一个负责执行包含在已装载的cL接口中的指oQ叫做运行引擎。每个JVM又包括方法区、堆、Java栈、程序计数器和本地方法栈q五个部分,q几个部分和c装载机制与q行引擎机制一L成的体系l构图ؓQ?


?  JVM的体pȝ?

JVM的每个实例都有一个它自己的方法域和一个堆Q运行于JVM内的所有的U程都共享这些区域;当虚拟机装蝲cL件的时候,它解析其中的二进制数据所包含的类信息Qƈ把它们放到方法域中;当程序运行的时候,JVM把程序初始化的所有对象置于堆上;而每个线E创建的时候,都会拥有自己的程序计数器和Java栈,其中E序计数器中的值指向下一条即被执行的指令,U程的Java栈则存储U程调用JavaҎ的状态;本地Ҏ调用的状态被存储在本地方法栈Q该Ҏ栈依赖于具体的实现?

下面分别对这几个部分q行说明?

执行引擎处于JVM的核心位|,在Java虚拟范中Q它的行为是由指令集所军_的。尽对于每条指令,规范很详l地说明了当JVM执行字节码遇到指令时Q它的实现应该做什么,但对于怎么做却a之甚。Java虚拟机支持大U?48个字节码。每个字节码执行一U基本的CPUq算,例如,把一个整数加到寄存器,子程序{Uȝ。Java指o集相当于JavaE序的汇~语a?

Java指o集中的指令包含一个单字节的操作符,用于指定要执行的操作,q有0个或多个操作?提供操作所需的参数或数据。许多指令没有操作数,仅由一个单字节的操作符构成?

												虚拟机的内层循环的执行过E如? 
do{ 
取一个操作符字节; 
Ҏ操作W的值执行一个动? 
}while(E序未结?

				
				

׃指opȝ的简单?使得虚拟机执行的q程十分?从而有利于提高执行的效率。指令中操作数的数量和大是由操作符军_的。如果操作数比一个字节大,那么它存储的序是高位字节优先。例?一?6位的参数存放时占用两个字?其gؓ:

W一个字?256+W二个字节字节码?

指o一般只是字节对齐的。指令tableswitch和lookup是例?在这两条指o内部要求强制?字节边界寚w?

对于本地Ҏ接口Q实现JVMq不要求一定要有它的支持,甚至可以完全没有。Sun公司实现Java本地接口(JNI)是出于可UL性的考虑Q当然我们也可以设计出其它的本地接口来代替Sun公司的JNI。但是这些设计与实现是比较复杂的事情Q需要确保垃圑֛收器不会那些正在被本地Ҏ调用的对象释放掉?

Java的堆是一个运行时数据?cȝ实例(对象)从中分配I间Q它的管理是由垃圑֛收来负责?不给E序员显式释攑֯象的能力。Java不规定具体用的垃圾回收法,可以Ҏpȝ的需求用各U各L法?

JavaҎZ传统语言中的~译后代码或是Unixq程中的正文D늱伹{它保存Ҏ代码(~译后的java代码)和符可。在当前的Java实现?Ҏ代码不包括在垃圾回收堆中,但计划在来的版本中实现。每个类文g包含了一个JavacL一个Java界面的编译后的代码。可以说cL件是Java语言的执行代码文件。ؓ了保证类文g的^台无x?Java虚拟范中对类文g的格式也作了详细的说明。其具体l节请参考Sun公司的Java虚拟范?

Java虚拟机的寄存器用于保存机器的q行状?与微处理器中的某些专用寄存器cM。Java虚拟机的寄存器有四种:

  1. pc: JavaE序计数器;
  2. optop: 指向操作数栈端的指针;
  3. frame: 指向当前执行Ҏ的执行环境的指针Q?
  4. vars: 指向当前执行Ҏ的局部变量区W一个变量的指针?

在上qCpȝ构图中,我们所说的是第一U,即程序计数器Q每个线E一旦被创徏拥有了自己的程序计数器。当U程执行JavaҎ的时候,它包含该U程正在被执行的指o的地址。但是若U程执行的是一个本地的ҎQ那么程序计数器的值就不会被定义?

Java虚拟机的栈有三个区域:局部变量区、运行环境区、操作数区?

局部变量区

每个JavaҎ使用一个固定大的局部变量集。它们按照与vars寄存器的字偏U量来寻址。局部变量都?2位的。长整数和双_ֺ点数占据了两个局部变量的I间,却按照第一个局部变量的索引来寻址?例如,一个具有烦引n的局部变?如果是一个双_ֺ点?那么它实际占据了索引n和n+1所代表的存储空?虚拟范ƈ不要求在局部变量中?4位的值是64位对齐的。虚拟机提供了把局部变量中的D载到操作数栈的指?也提供了把操作数栈中的值写入局部变量的指o?

q行环境?

在运行环境中包含的信息用于动态链?正常的方法返回以及异常捕捉?

动态链?/b>

q行环境包括Ҏ向当前类和当前方法的解释器符可的指?用于支持Ҏ代码的动态链接。方法的class文g代码在引用要调用的方法和要访问的变量时用符受动态链接把W号形式的方法调用翻译成实际Ҏ调用,装蝲必要的类以解释还没有定义的符?q把变量讉K译成与q些变量q行时的存储l构相应的偏Ud址。动态链接方法和变量使得Ҏ中用的其它cȝ变化不会影响到本E序的代码?

正常的方法返?/b>

如果当前Ҏ正常地结束了,在执行了一条具有正类型的q回指o?调用的方法会得到一个返回倹{执行环境在正常q回的情况下用于恢复调用者的寄存?q把调用者的E序计数器增加一个恰当的数?以蟩q已执行q的Ҏ调用指o,然后在调用者的执行环境中l执行下厅R?

异常捕捉

异常情况在Java中被UCError(错误)或Exception(异常),是Throwablecȝ子类,在程序中的原因是:①动态链接错,如无法找到所需的class文g。②q行旉,如对一个空指针的引用。程序用了throw语句?

当异常发生时,Java虚拟机采取如下措?

  • 查与当前Ҏ相联pȝcatch子句表。每个catch子句包含其有效指令范?能够处理的异常类?以及处理异常的代码块地址?
  • 与异常相匚w的catch子句应该W合下面的条?造成异常的指令在其指令范围之?发生的异常类型是其能处理的异常类型的子类型。如果找C匚w的catch子句,那么pȝ转移到指定的异常处理块处执行;如果没有扑ֈ异常处理?重复L匚w的catch子句的过E?直到当前Ҏ的所有嵌套的catch子句都被查过?
  • ׃虚拟ZW一个匹配的catch子句处l执?所以catch子句表中的顺序是很重要的。因为Java代码是结构化?因此d以把某个Ҏ的所有的异常处理器都按序排列C个表?对Q意可能的E序计数器的?都可以用U性的序扑ֈ合适的异常处理?以处理在该程序计数器g发生的异常情c?
  • 如果找不到匹配的catch子句,那么当前Ҏ得到一?未截获异?的结果ƈq回到当前方法的调用?好像异常刚刚在其调用者中发生一栗如果在调用者中仍然没有扑ֈ相应的异常处理块,那么q种错误被传播下去。如果错误被传播到最层,那么pȝ调用一个缺省的异常处理块?

操作数栈?

机器指o只从操作数栈中取操作?对它们进行操?q把l果q回到栈中。选择栈结构的原因?在只有少量寄存器或非通用寄存器的机器(如Intel486)?也能够高效地模拟虚拟机的行ؓ。操作数栈是32位的。它用于l方法传递参?q从Ҏ接收l果,也用于支持操作的参数,q保存操作的l果。例?iadd指o两个整数相加。相加的两个整数应该是操作数栈顶的两个字。这两个字是由先前的指o压进堆栈的。这两个整数从堆栈弹出、相?q把l果压回到操作数栈中?

每个原始数据cd都有专门的指令对它们q行必须的操作。每个操作数在栈中需要一个存储位|?除了long和double?它们需要两个位|。操作数只能被适用于其cd的操作符所操作。例?压入两个intcd的数,如果把它们当作是一个longcd的数则是非法的。在Sun的虚拟机实现?q个限制由字节码验证器强制实行。但?有少数操?操作Wdupe和swap),用于对运行时数据行操作时是不考虑cd的?

本地Ҏ栈,当一个线E调用本地方法时Q它׃再受到虚拟机关于l构和安全限制方面的U束Q它既可以访问虚拟机的运行期数据区,也可以用本地处理器以及Mcd的栈。例如,本地栈是一个C语言的栈Q那么当CE序调用C函数Ӟ函数的参C某种序被压入栈Q结果则q回l调用函数。在实现Java虚拟机时Q本地方法接口用的是C语言的模型栈Q那么它的本地方法栈的调度与使用则完全与C语言的栈相同?

3  Java虚拟机的q行q程

上面对虚拟机的各个部分进行了比较详细的说明,下面通过一个具体的例子来分析它的运行过E?

虚拟机通过调用某个指定cȝҎmain启动Q传递给main一个字W串数组参数Q指定的类被装载,同时链接该类所使用的其它的cdQƈ且初始化它们。例如对于程序:

												class HelloApp 
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!"); 
		for (int i = 0; i < args.length; i++ )
		{
			System.out.println(args[i]);
		}
	}
}

				
				

~译后在命o行模式下键入Q?java HelloApp run virtual machine

通过调用HelloApp的方法main来启动java虚拟机,传递给main一个包含三个字W串"run"?virtual"?machine"的数l。现在我们略q虚拟机在执行HelloApp时可能采取的步骤?

开始试图执行类HelloApp的mainҎQ发现该cdƈ没有被装载,也就是说虚拟机当前不包含该类的二q制代表Q于是虚拟机使用ClassLoader试图Lq样的二q制代表。如果这个进E失败,则抛Z个异常。类被装载后同时在mainҎ被调用之前,必须对类HelloApp与其它类型进行链接然后初始化。链接包含三个阶D:验,准备和解析。检验检查被装蝲的主cȝW号和语义,准备则创建类或接口的静态域以及把这些域初始化ؓ标准的默认|解析负责查主cd其它cL接口的符号引用,在这一步它是可选的。类的初始化是对cM声明的静态初始化函数和静态域的初始化构造方法的执行。一个类在初始化之前它的父类必须被初始化。整个过E如下:


?Q虚拟机的运行过E?

4  l束?

本文通过对JVM的体pȝ构的深入研究以及一个JavaE序执行时虚拟机的运行过E的详细分析Q意在剖析清楚Java虚拟机的机理?



sunfruit 2006-07-21 18:14 发表评论
]]>
[原创]Oracle Spatial新驱动的查询记录实例http://m.tkk7.com/sunfruit/archive/2006/07/20/59202.htmlsunfruitsunfruitThu, 20 Jul 2006 07:28:00 GMThttp://m.tkk7.com/sunfruit/archive/2006/07/20/59202.htmlhttp://m.tkk7.com/sunfruit/comments/59202.htmlhttp://m.tkk7.com/sunfruit/archive/2006/07/20/59202.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/59202.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/59202.html--sunfruit
    Oracle的空间数据库的操作驱动更CQ新的驱动适用于Oracle8.0或以上,新驱动在Ҏ据库的操作上面和原有的驱动差别比较大Q不q有一点:使用变得单了
    建立I间数据库和建立I间索引的步骤就略过了,那些|上有很多例子,而且实现方式上面也没有变化,下面列出查询I间数据库记录的代码Q?br />
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.spatial.geometry.JGeometry;
import java.sql.PreparedStatement;
import oracle.sql.STRUCT;
import java.sql.Connection;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author sunfruit
 * @version 1.0
 */
public class SdoSelect {
  public SdoSelect() {
  }
  public static void main(String[] args) {
    String driver = "oracle.jdbc.driver.OracleDriver";
    String url = "jdbc:oracle:thin:@172.16.75.200:1521:starmap";
    String uid = "hmbst";
    String psw = "hmbst";
    Connection conn = null;
    PreparedStatement ps=null;
    try {
      Class.forName(driver);
      conn = DriverManager.getConnection(url, uid, psw);

      JGeometry jGeometry=new JGeometry(41884696,14377039,42884696,14477039,0);
      STRUCT obj =jGeometry.store(jGeometry,conn);
      String sql = "SELECT * FROM POISDO p WHERE sdo_filter(p.gshape,?,'querytype=window')='TRUE'";
      ps = conn.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
      ps.clearParameters();
      ps.setObject(1, obj);
      // 插入点地物记?br />      ResultSet rs=ps.executeQuery();
      while(rs.next())
      {
        STRUCT st = (oracle.sql.STRUCT)rs.getObject("gshape");
        JGeometry j_geom = JGeometry.load(st);
        double[] dou=j_geom.getPoint();
        String buff="";
        for(int i=0;i<dou.length;i++)
        {
          buff=buff+String.valueOf((int)dou[i])+"   ";
        }
        System.out.println(buff);
      }
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
    finally
    {
      if(conn!=null)
      {
        try {
          conn.close();
        }
        catch (SQLException ex) {
          ex.printStackTrace();
        }
      }
      if(ps!=null)
      {
        try {
          ps.close();
        }
        catch (SQLException ex) {
          ex.printStackTrace();
        }
      }

    }
  }

}

表POISDO的结构如?br />create table poi (
  id INTEGER,
  gname VARCHAR2(256),
  gshape MDSYS.SDO_GEOMETRY);



sunfruit 2006-07-20 15:28 发表评论
]]>
[原创]Oracle Spatial新驱动的d记录实例http://m.tkk7.com/sunfruit/archive/2006/07/20/59198.htmlsunfruitsunfruitThu, 20 Jul 2006 07:25:00 GMThttp://m.tkk7.com/sunfruit/archive/2006/07/20/59198.htmlhttp://m.tkk7.com/sunfruit/comments/59198.htmlhttp://m.tkk7.com/sunfruit/archive/2006/07/20/59198.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/59198.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/59198.html    --sunfruit
    Oracle的空间数据库的操作驱动更CQ新的驱动适用于Oracle8.0或以上,新驱动在Ҏ据库的操作上面和原有的驱动差别比较大Q不q有一点:使用变得单了
    建立I间数据库和建立I间索引的步骤就略过了,那些|上有很多例子,而且实现方式上面也没有变化,下面列出d一条空间数据库记录的代码:

import java.sql.*;
import oracle.sql.*;
import oracle.spatial.geometry.JGeometry;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class SdoAdd {
  public static void main(String[] args) {
    String driver = "oracle.jdbc.driver.OracleDriver";
    String url = "jdbc:oracle:thin:@172.16.75.200:1521:starmap";
    String uid = "hmbst";
    String psw = "hmbst";
    Connection conn = null;
    PreparedStatement ps=null;
    try {
      Class.forName(driver);
      conn = DriverManager.getConnection(url, uid, psw);
     
      JGeometry jGeometry=new JGeometry(41884696,14377039,0);
      STRUCT obj =jGeometry.store(jGeometry,conn);
      String sql =
          "insert into POISDO values(seq_poi_id.nextval,?,?)";
      ps = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
      ps.clearParameters();
      ps.setString(1, "我的?);
      ps.setObject(2, obj);
      // 插入点地物记?br />      ps.executeUpdate();
      conn.commit();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
    finally
    {
      if(conn!=null)
      {
        try {
          conn.close();
        }
        catch (SQLException ex) {
          ex.printStackTrace();
        }
      }
      if(ps!=null)
      {
        try {
          ps.close();
        }
        catch (SQLException ex) {
          ex.printStackTrace();
        }
      }

    }
  }
}

表POISDO的结构如?br />create table poi (
  id INTEGER,
  gname VARCHAR2(256),
  gshape MDSYS.SDO_GEOMETRY);



sunfruit 2006-07-20 15:25 发表评论
]]>
[转脓]JAVA截取当前屏幕生成囄的代?/title><link>http://m.tkk7.com/sunfruit/archive/2006/06/27/55319.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Tue, 27 Jun 2006 05:57:00 GMT</pubDate><guid>http://m.tkk7.com/sunfruit/archive/2006/06/27/55319.html</guid><wfw:comment>http://m.tkk7.com/sunfruit/comments/55319.html</wfw:comment><comments>http://m.tkk7.com/sunfruit/archive/2006/06/27/55319.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.tkk7.com/sunfruit/comments/commentRss/55319.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sunfruit/services/trackbacks/55319.html</trackback:ping><description><![CDATA[ <p>import java.awt.Dimension; <br />import java.awt.Rectangle; <br />import java.awt.Robot; <br />import java.awt.Toolkit; <br />import java.awt.image.BufferedImage; <br />import java.io.File; </p> <p>import javax.imageio.ImageIO; </p> <p>/******************************************************************* <br /> * 该JavaBean可以直接在其他Java应用E序中调用,实现屏幕?拍照" <br /> * This JavaBean is used to snapshot the GUI in a  <br /> * Java application! You can embeded <br /> * it in to your java application source code, and us <br /> * it to snapshot the right GUI of the application <br /> * @see javax.ImageIO <br /> * @author liluqun ([email]liluqun@263.net[/email]) <br /> * @version 1.0 <br /> * <br /> *****************************************************/ </p> <p>public class GuiCamera <br />{   <br />    private String fileName; //文g的前~ <br />    private String defaultName = "GuiCamera"; <br />    static int serialNum=0; <br />    private String imageFormat; //囑փ文g的格?<br />    private String defaultImageFormat="png"; <br />    Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); </p> <p>    /**************************************************************** <br />     * 默认的文件前~为GuiCameraQ文件格式ؓPNG格式 <br />     * The default construct will use the default  <br />     * Image file surname "GuiCamera",  <br />     * and default image format "png" <br />     ****************************************************************/ <br />    public GuiCamera() { <br />      fileName = defaultName; <br />      imageFormat=defaultImageFormat; <br />     <br />    } </p> <p>    /**************************************************************** <br />     * @param s the surname of the snapshot file <br />     * @param format the format of the  image file,  <br />     * it can be "jpg" or "png" <br />     * 本构造支持JPG和PNG文g的存?<br />     ****************************************************************/ <br />    public GuiCamera(String s,String format) { <br />     <br />      fileName = s; <br />      imageFormat=format; <br />    } <br />     <br />    /**************************************************************** <br />     * 对屏q进行拍?<br />     * snapShot the Gui once <br />     ****************************************************************/ <br />    public void snapShot() { <br />     <br />      try { <br />      //拯屏幕C个BufferedImage对象screenshot <br />        BufferedImage screenshot = (new Robot()).createScreenCapture(new <br />            Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight())); <br />        serialNum++; <br />        //Ҏ文g前缀变量和文件格式变量,自动生成文g?<br />        String name=fileName+String.valueOf(serialNum)+"."+imageFormat; <br />        File f = new File(name); <br />        System.out.print("Save File "+name); <br />      //screenshot对象写入囑փ文g <br />        ImageIO.write(screenshot, imageFormat, f); <br />        System.out.print("..Finished!\n"); <br />      } <br />      catch (Exception ex) { <br />        System.out.println(ex); <br />      } <br />    } </p> <p>    public static void main(String[] args) <br />    { <br />        GuiCamera cam= new GuiCamera("d:\\Hello", "png");// </p> <p>        cam.snapShot(); <br />    } <br />}</p> <img src ="http://m.tkk7.com/sunfruit/aggbug/55319.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sunfruit/" target="_blank">sunfruit</a> 2006-06-27 13:57 <a href="http://m.tkk7.com/sunfruit/archive/2006/06/27/55319.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>全文索技术概q?/title><link>http://m.tkk7.com/sunfruit/archive/2006/04/05/39276.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Tue, 04 Apr 2006 16:20:00 GMT</pubDate><guid>http://m.tkk7.com/sunfruit/archive/2006/04/05/39276.html</guid><wfw:comment>http://m.tkk7.com/sunfruit/comments/39276.html</wfw:comment><comments>http://m.tkk7.com/sunfruit/archive/2006/04/05/39276.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/sunfruit/comments/commentRss/39276.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sunfruit/services/trackbacks/39276.html</trackback:ping><description><![CDATA[--sunfruit<br /><br />        最q?font color="#000000">做了一个资料管理Y件用来管理日常资料,~写好了基本功能以后L感觉q个软g~少了什么,是的Q是全文索,没有全文索功能,q个理软g用到最后也一定对于查找资料相当困难,于是加紧赶工加上了作为基本功能的全文索?br />        有h了解索技术,而且也不是什么高深技术,我也不班门弄斧,是把原理大概介l一下,感兴的朋友也可以自己尝试编写一下?br />        全文索技术其实就是用I间换时?-用硬盘空间换取检索时间?br />        首先需要字索引Q要惛_立字索引需要字库,q个字库其实是每一个汉字,大概6000个汉字左叛_Q再加上a-zQA-ZQ?-9Q基本上可以作为字索引的字库了Q然后就是利用字库生成字索引?br />        生成字烦引的原来是以字库ؓ基础Qؓ字库里面的每一个字做烦引,在每一个文章里面做匚wQ把一个文章里面所有的匚w的位|记录下来,举个例子Q比如字库里面的"?Q如果现在要建立"?的烦引,那么要遍历所有要做烦引的文章Q把所有的"?的位|要记录下来Q当然要可以区分位置是哪个文章的Q要不然h一堆,没有意义了[因ؓ最后检索烦引的最l目的是要定位出文章的ID]Q这样就形成了字索引。依此类推,所有汉字的字烦引,索引建立完成了<br />        索烦引,q个是关键的关键Q速度是否快,全看q里Q当然烦引徏立的合理与否也能影响索速度QD个例子:比如要查?业务"q个关键词,<br />        首先在字索引中查??: 在文件号11111 中的位置?1Q?0Q?9  在文件号11112 中的位置?2Q?3Q?5<br />         然后在字索引中查??: 在文件号11111 中的位置?2Q?6Q?00  在文件号11112 中的位置?7Q?9Q?0<br /><br />        l过计算会得到命中的文g号ؓ 11111 Q因Z务必M|号码要q箋的出现才命?br /><br />        大概的思\是q样<br />       当然索技术还会有词烦引技术,Ҏ字烦引可以进一步生成词索引Qƈ且有切词技术。。。就不多说了<br />       <br />        那个资料理软g的DEMO下蝲地址 <a href="/sunfruit/archive/2006/04/01/38625.html">http://m.tkk7.com/sunfruit/archive/2006/04/01/38625.html</a><br />        DEMO的界面样式如?br />        索界?br />        <img height="243" alt="Shell00.jpg" src="http://m.tkk7.com/images/blogjava_net/sunfruit/Shell00.jpg" width="515" border="0" /><br />        ȝ?br />        <img height="344" alt="Shell01.jpg" src="http://m.tkk7.com/images/blogjava_net/sunfruit/Shell01.jpg" width="563" border="0" /><br /><br />        注意Q用全文检索的时候,首先要生成烦引[在工兯单栏里面]Qƈ且不能重复生成同一个文章的索引Q而只能重新生成,q个在生成的时候有选项Q因为如果重复生成那么在字烦引里面就会重复记录,到时候检索的时候就会检索出来多个同L文章?br /></font><img src ="http://m.tkk7.com/sunfruit/aggbug/39276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sunfruit/" target="_blank">sunfruit</a> 2006-04-05 00:20 <a href="http://m.tkk7.com/sunfruit/archive/2006/04/05/39276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]资料理软ghttp://m.tkk7.com/sunfruit/archive/2006/04/01/38625.htmlsunfruitsunfruitSat, 01 Apr 2006 09:05:00 GMThttp://m.tkk7.com/sunfruit/archive/2006/04/01/38625.htmlhttp://m.tkk7.com/sunfruit/comments/38625.htmlhttp://m.tkk7.com/sunfruit/archive/2006/04/01/38625.html#Feedback19http://m.tkk7.com/sunfruit/comments/commentRss/38625.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/38625.html--sunfruit

      整天和电脑打交道Q信息资料随着旉的推UMU篏的越来越多,直到从资料里面找到所需的资料越来越难,于是q写了一个资料管理YӞ用于理日常资料
      
      说明Q?br>            数据库:在数据的存储斚wZ方便Q用了Access
            JDK Q用的JDK版本?.5

      相关说明Q?br>            正本的保存:׃正文包含囄和样式,所以采取了正文的文档对象序列化到数据库中的方式进行保存和d
            附g的保存:和正文的保存方式一?br>            
      ׃涉及的功能比较多Q所以只是实C最基本的功能,其他的功能逐步d和完善,软g的界面样式如?br>      注:数据索功能已l完成[使用全文索技术实现]
      Shell01.jpg

      自从JDK1.5的推出,JAVA的界面风格比原来漂亮多了

      demo下蝲地址Q?a >http://www.fruitres.cn/useruploadfile/4/1473814960_demo.rar 
      演示地址Q?a >http://www.fruitres.cn/useruploadfile/4/1473814960_jnlp.jnlp

      使用q程中发现问题欢q指正和交流
      



sunfruit 2006-04-01 17:05 发表评论
]]>
[技巧]使用java web start发布applicationE序已经q行了数字签名,但是讉Kq是不能讉K用户的IOpȝ解决办法http://m.tkk7.com/sunfruit/archive/2006/03/14/35211.htmlsunfruitsunfruitTue, 14 Mar 2006 04:27:00 GMThttp://m.tkk7.com/sunfruit/archive/2006/03/14/35211.htmlhttp://m.tkk7.com/sunfruit/comments/35211.htmlhttp://m.tkk7.com/sunfruit/archive/2006/03/14/35211.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/35211.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/35211.html
其实解决办法很简?BR>
首先保证q行了正的数字{֐

然后使用java web start 发布application一定会有jnlp文gQ关键就在这?BR>
在jnlp文g里面d
  <security>
   <all-permissions/>
  </security>
q几行就可以了,当用h行了app的时候,会弹出提C框提示用户是否信Qxxx证书Q当用户选择信Q以后可以访问本地系l了

sunfruit 2006-03-14 12:27 发表评论
]]>
[JAVA]使用JAVA的数字签?/title><link>http://m.tkk7.com/sunfruit/archive/2006/03/14/35209.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Tue, 14 Mar 2006 04:20:00 GMT</pubDate><guid>http://m.tkk7.com/sunfruit/archive/2006/03/14/35209.html</guid><wfw:comment>http://m.tkk7.com/sunfruit/comments/35209.html</wfw:comment><comments>http://m.tkk7.com/sunfruit/archive/2006/03/14/35209.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sunfruit/comments/commentRss/35209.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sunfruit/services/trackbacks/35209.html</trackback:ping><description><![CDATA[--sunfruit<BR><BR>在用java web start发布Applicationq有在网上面发布Applet的时候如果不q行数字{֐Q那么会有安全别的限制Qƈ且在E序界面的最下面会有Application window 的字P很是不爽Q只要是q行了数字签名这些苦恼就没有了,而且也可以访问用L本地IOpȝQ下面就说一下如何进行数据签?BR><BR>其实{֐q程很简单,JDK自n有工具可以q行{֐Q下面的q程?xxxx 表示该内Ҏ自定义的<BR><BR>W一部生?keystore 文g<BR>keytool -genkey -keystore xxxx.keystore -alias xxxx  例如[keytool -genkey -keystore sunfruit.keystore -alias sunfruit]<BR>q个q程比较J琐Q要填写好几内容,比如生成的keystore文g?sunfruit.keystore ,下面需要?BR><BR>W二步进行数据签名,呵呵Q快?BR>jarsigner -keystore sunfruit.keystore xxxx.jar sunfruit<BR>命o行中的xxxx.jar是要q行{֐的jar文g<BR><BR>W二步进行完毕以后,jar文g已l签名完毕了Q可以用,当然q有一些其他的功能Q比如导出cer文g<BR>keytool -export -keystore sunfruit.keystore -alias sunfruit -file sunfruit.cer<BR><BR>单吧Q其实签?-是q么?img src ="http://m.tkk7.com/sunfruit/aggbug/35209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sunfruit/" target="_blank">sunfruit</a> 2006-03-14 12:20 <a href="http://m.tkk7.com/sunfruit/archive/2006/03/14/35209.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[JAVA]使用HttpURLConnectionq行POST方式提交http://m.tkk7.com/sunfruit/archive/2006/03/13/35048.htmlsunfruitsunfruitMon, 13 Mar 2006 07:47:00 GMThttp://m.tkk7.com/sunfruit/archive/2006/03/13/35048.htmlhttp://m.tkk7.com/sunfruit/comments/35048.htmlhttp://m.tkk7.com/sunfruit/archive/2006/03/13/35048.html#Feedback5http://m.tkk7.com/sunfruit/comments/commentRss/35048.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/35048.html--sunfruit

用HttpURLConnectionq行Post方式提交Q下面给Z个例?BR>
    URL url = null;
    HttpURLConnection httpurlconnection = null;
    try
    {
      url = new URL("http://xxxx");

      httpurlconnection = (HttpURLConnection) url.openConnection();
      httpurlconnection.setDoOutput(true);
      httpurlconnection.setRequestMethod("POST");
      String username="username=02000001";
      httpurlconnection.getOutputStream().write(username.getBytes());
      httpurlconnection.getOutputStream().flush();
      httpurlconnection.getOutputStream().close();
      int code = httpurlconnection.getResponseCode();
      System.out.println("code   " + code);

    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
    finally
    {
      if(httpurlconnection!=null)
        httpurlconnection.disconnect();
    }

其中HttpURLConnection中的addRequestPropertyҎQƈ不是用来dParameter 的,而是用来讄h的头信息Q比如:
       setRequestProperty("Content-type","text/html");
       setRequestProperty("Connection",   "close");
       setRequestProperty("Content-Length",xxx);

当然如果不设|的话,可以走默认|上面的例子中没有进行相兌|,但是也可以正执?/P>

sunfruit 2006-03-13 15:47 发表评论
]]>
JAVA在已有图片上面画图报错UnsupportedOperationException的解军_?/title><link>http://m.tkk7.com/sunfruit/archive/2006/03/11/34818.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Sat, 11 Mar 2006 05:56:00 GMT</pubDate><guid>http://m.tkk7.com/sunfruit/archive/2006/03/11/34818.html</guid><wfw:comment>http://m.tkk7.com/sunfruit/comments/34818.html</wfw:comment><comments>http://m.tkk7.com/sunfruit/archive/2006/03/11/34818.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sunfruit/comments/commentRss/34818.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sunfruit/services/trackbacks/34818.html</trackback:ping><description><![CDATA[--sunfruit<BR><BR>  前一D|间写了一?A href="/sunfruit/archive/2006/02/20/31631.html">[原创]JAVA中图片上叠加文字的方?/A>,本来q方面的例子在网l上面很多,而且当时写的时候也没有遇到什么问题,所以也没有什么感觉要注意的地?BR>  昨天׃一些原因需要在一个已有的囄上面ȝQ然后再昄出来Q感觉上?A href="/sunfruit/archive/2006/02/20/31631.html">[原创]JAVA中图片上叠加文字的方?/A>很类|也就没当回事按照自己的思\写了,很容易想到读取已存在的图片内容然后生?BR>  ImageIcon imageIcon=new ImageIcon(bytes);    对象然后生成<BR>  Image image=imageIcon.getImage();    对象Q这个时候只要是从image实例里面获得Graphics对象可以对囄q行~辑了但是下面这步却报错?BR>  Graphics g =image.getGraphics(); //q步抱错QUnsupportedOperationException: getGraphics() not valid for images created with createImage(producer)<BR>  怎么调试都不行,于是google一把,发现遇到q个问题的h不少Q解军_法是不能从Image对象获得GraphicsQ而是要从BufferedImage对象获得GraphicsQ于是调整思\代码修改ؓ<BR>  BufferedImage bufferedImage=new BufferedImage(imageIcon.getIconHeight(),imageIcon.getIconWidth(),BufferedImage.TYPE_INT_RGB);<BR>  Graphics2D g=(Graphics2D)bufferedImage.getGraphics();q次试通过可以获得Graphics对象?BR><BR>  q里说明一点:Graphics g =image.getGraphics(); q一步如果是从Java的图形组仉面获得的Image对象Q然后获得Graphics对象׃会有问题<BR>  在已有的囄上面d的完整例子见Q?A href="/sunfruit/archive/2006/03/11/34808.html">[原创]JAVA在已有图片上面画囄实例</A><img src ="http://m.tkk7.com/sunfruit/aggbug/34818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sunfruit/" target="_blank">sunfruit</a> 2006-03-11 13:56 <a href="http://m.tkk7.com/sunfruit/archive/2006/03/11/34818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]JAVA在已有图片上面画囄实例http://m.tkk7.com/sunfruit/archive/2006/03/11/34808.htmlsunfruitsunfruitSat, 11 Mar 2006 04:39:00 GMThttp://m.tkk7.com/sunfruit/archive/2006/03/11/34808.htmlhttp://m.tkk7.com/sunfruit/comments/34808.htmlhttp://m.tkk7.com/sunfruit/archive/2006/03/11/34808.html#Feedback0http://m.tkk7.com/sunfruit/comments/commentRss/34808.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/34808.html--sunfruit

介:JAVA在已有图片上面画囄实例Q下面的E序在已有的囄上面M一个蓝色的方块

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import java.util.Random;
import java.io.IOException;
import java.io.File;
 
public class ImageTest {
  public ImageTest() throws Exception {
    String ext="png";
    FileInputStream in = new FileInputStream("已有囄的\?);
    byte[] bytes = new byte[in.available()];
    in.read(bytes);
    in.close();
    Random random=new Random(System.currentTimeMillis());
   
    ImageIcon imageIcon = new ImageIcon(bytes);
   
    BufferedImage bufferedImage=new BufferedImage(imageIcon.getIconHeight(),imageIcon.getIconWidth(),BufferedImage.TYPE_INT_RGB);
    Graphics2D g=(Graphics2D)bufferedImage.getGraphics();
    g.setColor(Color.blue);
    g.drawRect(5,5,5,5);
    g.fillRect(5,5,5,5);
    g.drawImage(imageIcon.getImage(),0,0,imageIcon.getIconHeight(),imageIcon.getIconWidth(),imageIcon.getImageObserver());
 
    String filepath = System.getProperty("java.io.tmpdir") + random.nextInt(99999) + "." + ext;
    try {
      ImageIO.write(bufferedImage, ext,  new File(filepath));
      System.out.println("文g已经生成Q\lؓ" + filepath);
    }
    catch (IOException ex) {
      ex.printStackTrace();
    }
 

  }
 
  /**
   * @param args
   */
  public static void main(String[] args) throws Exception {
    new ImageTest();
  }
 
}


sunfruit 2006-03-11 12:39 发表评论
]]>
[原创]JAVA中图片上叠加文字的方?/title><link>http://m.tkk7.com/sunfruit/archive/2006/02/20/31631.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Mon, 20 Feb 2006 05:36:00 GMT</pubDate><guid>http://m.tkk7.com/sunfruit/archive/2006/02/20/31631.html</guid><wfw:comment>http://m.tkk7.com/sunfruit/comments/31631.html</wfw:comment><comments>http://m.tkk7.com/sunfruit/archive/2006/02/20/31631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sunfruit/comments/commentRss/31631.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sunfruit/services/trackbacks/31631.html</trackback:ping><description><![CDATA[<P>    --sunfruit<BR>    <BR>    JDK:1.3.x以上<BR>    功能:下面是一个简单在囄上面叠加文字的方法,有朋友如果有q方面的问题Q就起个了解的作?BR><BR>    代码如下:<BR><BR>import java.io.IOException;<BR>import javax.imageio.ImageIO;<BR>import java.io.File;<BR>import java.awt.Font;<BR>import java.awt.Graphics2D;<BR>import java.awt.Color;<BR>import java.awt.image.BufferedImage;<BR>import java.util.Random;</P> <P>/**<BR> * <p>Title: 囄叠加文字c?lt;/p> <BR> * <p>Description: </p> <BR> * <p>Copyright: Copyright (c) 2005</p> <BR> * <p>Company: </p><BR> * @author sunfruit<BR> * @version 1.0<BR> */<BR>public class ImageAddWord {<BR>    Random random=new Random(System.currentTimeMillis());<BR>    <BR>    BufferedImage buffImage=null;</P> <P>    Graphics2D g=null;</P> <P>    public ImageAddWord(int width, int height) {<BR>        buffImage=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);<BR>    }</P> <P>    public ImageAddWord()<BR>    {<BR>        this(32,32);<BR>    }<BR>    <BR>    /**<BR>     * 囄生成Ҏ,如果需要在已有的图片叠加文?需要先调用g.drawImageҎ图片绘?再将文字l制<BR>     * @param str String 文字内容<BR>     * @param ext String 文g后缀?png或是jpg<BR>     */<BR>    public void drawWord(String str,String ext)<BR>    {<BR>        g=buffImage.createGraphics();<BR>        /**<BR>         如果要在已有的图片叠加文?q里调用g.drawImage()该方?l制囄,酌情L下面的方?BR>         */<BR>        g.setColor(Color.WHITE);//在已有的囄叠加文字?该方法酌情添?BR>        g.fillRect(0, 0, buffImage.getWidth(), buffImage.getHeight());//在已有的囄叠加文字?该方法酌情添?BR>        g.setColor(Color.BLACK);//讑֮文字颜色<BR>        g.drawString(str,0,12);</P> <P>        String filepath=System.getProperty("java.io.tmpdir") +random.nextInt(99999)+"." + ext;<BR>        try {<BR>            ImageIO.write(buffImage, ext,<BR>                          new File(filepath));<BR>            System.out.println("文g已经生成Q\lؓ"+filepath);<BR>        } catch (IOException ex) {<BR>            ex.printStackTrace();<BR>        }<BR>    }</P> <P>    public void setFont(Font font)<BR>    {<BR>        g.setFont(font);<BR>    }</P> <P>    public static void main(String[] args) {<BR>        ImageAddWord imageAddWord=new ImageAddWord(132,16);<BR>        String str="A B C";<BR>        imageAddWord.drawWord(str,"png");</P> <P>    }</P> <P>}</P><img src ="http://m.tkk7.com/sunfruit/aggbug/31631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sunfruit/" target="_blank">sunfruit</a> 2006-02-20 13:36 <a href="http://m.tkk7.com/sunfruit/archive/2006/02/20/31631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]JAVA桌面E序启动的预昄口实?/title><link>http://m.tkk7.com/sunfruit/archive/2006/02/19/31556.html</link><dc:creator>sunfruit</dc:creator><author>sunfruit</author><pubDate>Sun, 19 Feb 2006 13:53:00 GMT</pubDate><guid>http://m.tkk7.com/sunfruit/archive/2006/02/19/31556.html</guid><wfw:comment>http://m.tkk7.com/sunfruit/comments/31556.html</wfw:comment><comments>http://m.tkk7.com/sunfruit/archive/2006/02/19/31556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sunfruit/comments/commentRss/31556.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sunfruit/services/trackbacks/31556.html</trackback:ping><description><![CDATA[ <p>--sunfruit </p> <p>    用JAVA~写的桌面程序启动的预显H口实例</p> <p>    介:<br />        E序启动会预先显CZ个预昄口,ȝ序启动完毕后预显H口关闭<u><font color="#0000ff"><br /></font></u><br />    Ƣ迎大家提意见,交流</p> <p>   下蝲地址<br />    说明Qapprun.jar可以直接q行 src中是源代?br />    <a href="/Files/sunfruit/apprunmodel.rar">http://m.tkk7.com/Files/sunfruit/apprunmodel.rar</a><a href="/Files/sunfruit/comm.rar"></a><a href="/Files/sunfruit/apprunmodel.rar"></a></p> <img src ="http://m.tkk7.com/sunfruit/aggbug/31556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sunfruit/" target="_blank">sunfruit</a> 2006-02-19 21:53 <a href="http://m.tkk7.com/sunfruit/archive/2006/02/19/31556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]java的web开发模式下限制用户同时多次dhttp://m.tkk7.com/sunfruit/archive/2006/02/19/31531.htmlsunfruitsunfruitSun, 19 Feb 2006 10:09:00 GMThttp://m.tkk7.com/sunfruit/archive/2006/02/19/31531.htmlhttp://m.tkk7.com/sunfruit/comments/31531.htmlhttp://m.tkk7.com/sunfruit/archive/2006/02/19/31531.html#Feedback2http://m.tkk7.com/sunfruit/comments/commentRss/31531.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/31531.html    开发web相关E序的时候L要遇到限制用户不能用同一个帐号同时多ơ登录的问题Q我从三个方向对q样的问题做了监?BR>    1Q用L录以后点L销推出
    2Q用L击IE?X 关闭里IEH口
    3Q用Lsessionq期
    只要是监控了以上三点Q就能满绝大部分的要求Q以上是一个思\Q有一个缺P是如果客户机突然断电,那么只有sessionq期了以后才能登录,q个地方是一个缺陗?/P>

    下面l出具体的实C码,如果大家有更好的办法Q欢q交,共同q步
   
    http://sunfruit.bokee.com/inc/session.rar
    附g说明 :
    1.工程使用JB做的Q用了log4jQlog4j的包在工E的WEB-INF的LIB文g夹内Q取出后重新引用?
    2.可以直接发布war包,直接可以试



sunfruit 2006-02-19 18:09 发表评论
]]>
[原创]JAVA~写的用手Z口发送短信的E序http://m.tkk7.com/sunfruit/archive/2006/02/19/31530.htmlsunfruitsunfruitSun, 19 Feb 2006 10:08:00 GMThttp://m.tkk7.com/sunfruit/archive/2006/02/19/31530.htmlhttp://m.tkk7.com/sunfruit/comments/31530.htmlhttp://m.tkk7.com/sunfruit/archive/2006/02/19/31530.html#Feedback29http://m.tkk7.com/sunfruit/comments/commentRss/31530.htmlhttp://m.tkk7.com/sunfruit/services/trackbacks/31530.html    用JAVA~写的用手Z口发送短信的E序

    功能介:
        手机通过串口与电脑连接以后,可以用该E序发送短?BR>        如果是红外连接那么可以用红外模拟串口的软gq行转换卛_
        U外模拟串口的Y件下载地址http://heart5.chinap4.com/moto388/connect/ircomm2k/download.html
    Ƣ迎大家提意见,交流

   可以直接q行的程序下载地址Q环境配|参考包中的txt
   http://m.tkk7.com/Files/sunfruit/comm.rar

    源代码下载地址
    http://m.tkk7.com/Files/sunfruit/comm_src.rar



sunfruit 2006-02-19 18:08 发表评论
]]>
վ֩ģ壺 vƬ߹ۿڵ| ޳avӰԺ| ¹͵Ʒվ| AvרDVD | ޾Ʒվ| ѵɬɬƵ߲| ߿Ƭ˳Ƶ | ޿һ24鶹| ȫѹɫһ| þþùƷר| 99|| avƬ߹ۿ| ѾƷԲ| һһ߹ۿƵ| ߹ۿ| ޹þþۺ| ˸Ƶ| ձĻѿ| ҹһ| ޾ƷҾþþþþ| Ʒv߹ۿ| 18ڵվ | ۺɫһ| Ƭѿ| þùƷ| ëƬһ| һëƬ| AVרAV԰| ֻùۿ| ŮƵȫ| 99ƵоƷƵѹۿ| ëƬһƵѲ| һƷ| ޳վ| պվ | ëƬ18ŮëƬƵδ | ۺɫ߾Ʒ| ˾þô߽ӰԺ| A޾VƷ| avŷղһ| Ů18һëƬѹۿ|