??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日韩在线中文字幕第一页,亚洲人成网站影音先锋播放,国产成人精品日本亚洲18图http://www.tkk7.com/obpm/zh-cnSat, 10 May 2025 16:53:57 GMTSat, 10 May 2025 16:53:57 GMT60Apache Http Server与Tomcat实现负蝲均衡和集?/title><link>http://www.tkk7.com/obpm/archive/2011/06/22/352814.html</link><dc:creator>obpm</dc:creator><author>obpm</author><pubDate>Wed, 22 Jun 2011 08:09:00 GMT</pubDate><guid>http://www.tkk7.com/obpm/archive/2011/06/22/352814.html</guid><wfw:comment>http://www.tkk7.com/obpm/comments/352814.html</wfw:comment><comments>http://www.tkk7.com/obpm/archive/2011/06/22/352814.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.tkk7.com/obpm/comments/commentRss/352814.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/obpm/services/trackbacks/352814.html</trackback:ping><description><![CDATA[     摘要: 一、分布式实现原理               如上图所C,主要通过Apache-Server作ؓ(f)中{服务器,实现多个tomcat服务器之间的分布式处理,用户直接hApache-ServerQ然后Apache-Server会将h分发到具体的tomcat-serverQ之...  <a href='http://www.tkk7.com/obpm/archive/2011/06/22/352814.html'>阅读全文</a><img src ="http://www.tkk7.com/obpm/aggbug/352814.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/obpm/" target="_blank">obpm</a> 2011-06-22 16:09 <a href="http://www.tkk7.com/obpm/archive/2011/06/22/352814.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>接口和抽象类的区别(转蝲Q?/title><link>http://www.tkk7.com/obpm/archive/2010/11/07/337451.html</link><dc:creator>obpm</dc:creator><author>obpm</author><pubDate>Sun, 07 Nov 2010 05:57:00 GMT</pubDate><guid>http://www.tkk7.com/obpm/archive/2010/11/07/337451.html</guid><wfw:comment>http://www.tkk7.com/obpm/comments/337451.html</wfw:comment><comments>http://www.tkk7.com/obpm/archive/2010/11/07/337451.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.tkk7.com/obpm/comments/commentRss/337451.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/obpm/services/trackbacks/337451.html</trackback:ping><description><![CDATA[从设计理念层面看abstract class和interface <br /> <br /> 上面主要从语法定义和~程的角度论qCabstract class和interface的区别,q些层面的区别是比较低层ơ的、非本质的。本节从另一个层面:abstract class和interface所反映出的设计理念Q来分析一下二者的区别。作者认为,从这个层面进行分析才能理解二者概늚本质所在?<br /> <br /> 前面已经提到q,abstarct class在Java语言中体C一U承关p,要想使得l承关系合理Q父cdzcM间必d?is a"关系Q即父类和派生类在概忉|质上应该是相同的Q参考文献?〕中有关?is a"关系的大幅深入的论qͼ有兴的读者可以参考)。对于interface 来说则不Ӟq不要求interface的实现者和interface定义在概忉|质上是一致的Q仅仅是实现了interface定义的契U而已。ؓ(f)了便于理解Q下面将通过一个简单的实例q行说明?<br /> <br /> 考虑q样一个例子,假设在我们的问题领域中有一个关于Door的抽象概念,该Doorh执行两个动作open和closeQ此时我们可以通过abstract class或者interface来定义一个表C抽象概念的类型,定义方式分别如下所C: <br /> <br /> 使用abstract class方式定义DoorQ?<br /> <br /> abstract class Door { <br /> abstract void open(); <br /> abstract void close()Q?<br /> } <br /> <br /> <br /> 使用interface方式定义DoorQ?<br /> <br /> <br /> interface Door { <br /> void open(); <br /> void close(); <br /> } <br /> <br /> <br /> 其他具体的Doorcd可以extends使用abstract class方式定义的Door或者implements使用interface方式定义的Door。看h好像使用abstract class和interface没有大的区别?<br /> <br /> 如果现在要求Doorq要h报警的功能。我们该如何设计针对该例子的cȝ构呢Q在本例中,主要是ؓ(f)了展Cabstract class和interface反映在设计理念上的区别,其他斚w无关的问题都做了化或者忽略)Q下面将|列出可能的解决Ҏ(gu)Qƈ从设计理念层面对q些不同的方案进行分析?<br /> <br /> 解决Ҏ(gu)一Q?<br /> <br /> 单的在Door的定义中增加一个alarmҎ(gu)Q如下: <br /> <br /> abstract class Door { <br /> abstract void open(); <br /> abstract void close()Q?<br /> abstract void alarm(); <br /> } <br /> <br /> <br /> 或?<br /> <br /> interface Door { <br /> void open(); <br /> void close(); <br /> void alarm(); <br /> } <br /> <br /> <br /> 那么h报警功能的AlarmDoor的定义方式如下: <br /> <br /> class AlarmDoor extends Door { <br /> void open() { … } <br /> void close() { … } <br /> void alarm() { … } <br /> } <br /> <br /> <br /> 或?<br /> <br /> class AlarmDoor implements Door ?<br /> void open() { … } <br /> void close() { … } <br /> void alarm() { … } <br /> ?<br /> <br /> q种Ҏ(gu)q反了面向对象设计中的一个核心原则ISPQInterface Segregation PricipleQ,在Door的定义中把Door概念本n固有的行为方法和另外一个概?报警?的行为方法؜在了一赗这样引L(fng)一个问题是那些仅仅依赖于Doorq个概念的模块会因ؓ(f)"报警?q个概念的改变(比如Q修改alarmҎ(gu)的参敎ͼ而改变,反之依然?<br /> <br /> 解决Ҏ(gu)二: <br /> <br /> 既然open、close和alarm属于两个不同的概念,Ҏ(gu)ISP原则应该把它们分别定义在代表q两个概늚抽象cM。定义方式有Q这两个概念都用abstract class方式定义Q两个概念都使用interface方式定义Q一个概念用abstract class方式定义Q另一个概念用interface方式定义?<br /> <br /> 昄Q由于Java语言不支持多重承,所以两个概念都使用abstract class方式定义是不可行的。后面两U方式都是可行的Q但是对于它们的选择却反映出对于问题领域中的概念本质的理解、对于设计意囄反映是否正确、合理。我们一一来分析、说明?<br /> <br /> 如果两个概念都用interface方式来定义,那么反映出两个问题Q?、我们可能没有理解清楚问题领域,AlarmDoor在概忉|质上到底是Doorq是报警器?2、如果我们对于问题领域的理解没有问题Q比如:我们通过对于问题领域的分析发现AlarmDoor在概忉|质上和Door是一致的Q那么我们在实现时就没有能够正确的揭C我们的设计意图Q因为在q两个概늚定义上(均用interface方式定义Q反映不Zq含义?<br /> <br /> 如果我们对于问题领域的理解是QAlarmDoor在概忉|质上是DoorQ同时它有具有报警的功能。我们该如何来设计、实现来明确的反映出我们的意思呢Q前面已l说q,abstract class在Java语言中表CZU承关p,而承关pd本质上是"is a"关系。所以对于Doorq个概念Q我们应该用abstarct class方式来定义。另外,AlarmDoor又具有报警功能,说明它又能够完成报警概念中定义的行ؓ(f)Q所以报警概念可以通过interface方式定义。如下所C: <br /> <br /> abstract class Door { <br /> abstract void open(); <br /> abstract void close()Q?<br /> } <br /> interface Alarm { <br /> void alarm(); <br /> } <br /> class AlarmDoor extends Door implements Alarm { <br /> void open() { … } <br /> void close() { … } <br /> void alarm() { … } <br /> } <br /> <br /> <br /> q种实现方式基本上能够明的反映出我们对于问题领域的理解Q正的揭示我们的设计意图。其实abstract class表示的是"is a"关系Qinterface表示的是"like a"关系Q大家在选择时可以作Z个依据,当然q是建立在对问题领域的理解上的,比如Q如果我们认为AlarmDoor在概忉|质上是报警器Q同时又hDoor的功能,那么上述的定义方式就要反q来了?<br /> <br /> 转蝲人员-Nicholas<br /> </ca><!-- 导入 在此 参考资?-><!-- end 参考资?-> <img src ="http://www.tkk7.com/obpm/aggbug/337451.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/obpm/" target="_blank">obpm</a> 2010-11-07 13:57 <a href="http://www.tkk7.com/obpm/archive/2010/11/07/337451.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Swing 可关闭的TabbedPanehttp://www.tkk7.com/obpm/archive/2010/10/24/336027.htmlobpmobpmSun, 24 Oct 2010 08:44:00 GMThttp://www.tkk7.com/obpm/archive/2010/10/24/336027.htmlhttp://www.tkk7.com/obpm/comments/336027.htmlhttp://www.tkk7.com/obpm/archive/2010/10/24/336027.html#Feedback2http://www.tkk7.com/obpm/comments/commentRss/336027.htmlhttp://www.tkk7.com/obpm/services/trackbacks/336027.html


试代码Q?

package cn.demo.test;

import java.awt.Component;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.UIManager;

/**
 * Test
 * 
@author Tom
 *
 
*/
public class TestDemo {

    
public static void main(String[] args) {
        
try {
            String feel 
= UIManager.getSystemLookAndFeelClassName();
            UIManager.setLookAndFeel(feel);
        } 
catch (Exception e) {
            e.printStackTrace();
        } 
        
        JFrame frame 
= new JFrame();
        frame.setTitle(
"可关闭Tab试");
        frame.setSize(
300400);
        frame.setLocationRelativeTo(
null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        TabbedPane tabbedPane 
= new TabbedPane();
        tabbedPane.setCloseButtonEnabled(
true);
        tabbedPane.addTab(
"试一"nullnew JLabel("试一"));
        tabbedPane.addTab(
"试?/span>"nullnew JLabel("试?/span>"));
        tabbedPane.addTab(
"试?/span>"nullnew JLabel("试?/span>"));
        tabbedPane.addTab(
"试?/span>"nullnew JLabel("试?/span>"));
        tabbedPane.addTabbedPaneListener(
new TabbedPaneListener(){
            @Override
            
public void allTabsRemoved() {
                
// TODO Auto-generated method stub
                
            }
            @Override
            
public boolean canTabClose(Tab tab, Component component) {
                
// TODO Auto-generated method stub
                return false;
            }
            @Override
            
public void tabAdded(Tab tab, Component component, int index) {
                
// TODO Auto-generated method stub
                
            }
            @Override
            
public void tabRemoved(Tab tab, Component component, int index) {
                
// TODO Auto-generated method stub
                System.out.println("close");
            }
            @Override
            
public void tabSelected(Tab tab, Component component, int index) {
                
// TODO Auto-generated method stub
                
            }
        });
        
        frame.add(tabbedPane);
        frame.setVisible(
true);
    }
    
}

 试效果Q?/p>

     

源码下蝲Q?a title="TabbedPane.rar" href="/Files/obpm/TabbedPane.rar">TabbedPane.rar

发表人: Tom




obpm 2010-10-24 16:44 发表评论
]]>
数据库SQL分页攉http://www.tkk7.com/obpm/archive/2010/10/10/334223.htmlobpmobpmSun, 10 Oct 2010 13:32:00 GMThttp://www.tkk7.com/obpm/archive/2010/10/10/334223.htmlhttp://www.tkk7.com/obpm/comments/334223.htmlhttp://www.tkk7.com/obpm/archive/2010/10/10/334223.html#Feedback1http://www.tkk7.com/obpm/comments/commentRss/334223.htmlhttp://www.tkk7.com/obpm/services/trackbacks/334223.html在数据库层用SQL分页可以很大E度增加q_pȝE序q行速度与效率。本人只是初入手半数据库半程序的开发,所以对数据库研I不深。于是要攉下列代码以作参考,同时也Post出来可以让需要的人参考一下,高手p见笑了。说转蝲说不上,说原创也... 国庆期间在家安的机子跑DB比较困难Q做不了q多试。不q语句或函数斚w本h都仔l看q抄回来的SQL的网里CZQ感觉基本上大同异Q如果有错误查下做相应的修改或百度Google一下应该没什么大问题Q也请多多包c当Ӟ有机会就会对下列SQL做测试,然后会进行修正。至于每个数据库分页在这׃q行qQ只是列Z可用的方法?/p>

##########
# MySQL#
##########

select * from tlk_buginfo limit startPos, pageSize

startPos: 定义当前v始位|?不包括startPos)
pageSize: 每页昄数据的条?/p>

##########
# MSSQL#(2005的row_numberQ暂?000)
##########

1?br /> --q回W?0-40行数?br /> select top 20 * from (select row_number() over (order by EmployeeID) as RowNumber, * from HumanResources.Employee) TableNickname where RowNumber>=20

2?br /> --q回W?0-40行数?br /> select * from (select row_number() over (order by EmployeeID) as RowNumber, * from HumanResources.Employee) TableNickname where RowNumber between 20 and 40

3?br /> --q回W?0-40行数?br /> with OrderedResults as
(select *, ROW_NUMBER() OVER (order by EmployeeID) as RowNumber FROM HumanResources.Employee)
select * from OrderedResults where RowNumber between 20 and 40

##########
# Oracle#
##########

①采用rownum关键?三层嵌套)
--q回W?-15行数?br /> select * from (select row_.*, rownum num from (select * from tlk_buginfo) row_ where rownum<=15) where num>=5

②采用row_number解析函数q行分页(效率更高)
--q回W?-15行数?br /> select tab.* from (select t.*, row_number() over (order by lastmodified) as num from tlk_buginfo t) tab where num between 5 and 15

##########
# DB2#
##########

select * from (select *, rownumber() over(order by 排序字段 asc ) as rowid  from 表名 )as a where a.rowid >= startPage AND a.rowid <endPage

##########
# Hsqldb#
##########

select LIMIT 0 10 表名


攉资料:(allen)

obpm 2010-10-10 21:32 发表评论
]]>
jbpm4.3APIhttp://www.tkk7.com/obpm/archive/2010/10/08/333933.htmlobpmobpmThu, 07 Oct 2010 16:11:00 GMThttp://www.tkk7.com/obpm/archive/2010/10/08/333933.htmlhttp://www.tkk7.com/obpm/comments/333933.htmlhttp://www.tkk7.com/obpm/archive/2010/10/08/333933.html#Feedback1http://www.tkk7.com/obpm/comments/commentRss/333933.htmlhttp://www.tkk7.com/obpm/services/trackbacks/333933.htmljbpm4.3API(chn)下蝲
(denny)


obpm 2010-10-08 00:11 发表评论
]]>
HTML 5 正在改变 WebQ?/title><link>http://www.tkk7.com/obpm/archive/2010/10/07/333919.html</link><dc:creator>obpm</dc:creator><author>obpm</author><pubDate>Thu, 07 Oct 2010 13:46:00 GMT</pubDate><guid>http://www.tkk7.com/obpm/archive/2010/10/07/333919.html</guid><wfw:comment>http://www.tkk7.com/obpm/comments/333919.html</wfw:comment><comments>http://www.tkk7.com/obpm/archive/2010/10/07/333919.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/obpm/comments/commentRss/333919.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/obpm/services/trackbacks/333919.html</trackback:ping><description><![CDATA[HTML5 是近十年?Web 标准最巨大的飞跃。和以前的版本不同,HTML 5 q仅仅用来表示 Web 内容Q它的命是?Web 带入一个成熟的应用q_Q在q个q_上,视频Q音频,图象Q动画,以及同电(sh)脑的交互都被标准化。尽?HTML 5 的实现还有很长的路要赎ͼ?HTML 5 正在改变 Web?br /> HTML 最q的一ơ升U是1999q?2月发布的 HTML 4.01。自那以后,发生了很多事。最初的览器战争已l结束,Netscape 灰飞烟灭QIE5 作ؓ(f)赢家后来又发展到 IE6, IE7到IE8。Mozilla Firefox ?Netscape 的死C诞生Qƈ跃居W二位。苹果和 Google 各自推出自己的浏览器Q而小家碧玉的 Opera 仍然嘤嘤嗡嗡地活着Qƈ以推?Web 标准为己命。我们甚臛_手机和游戏机上有了真正的 Web 体验Q感?OperaQiPhone 以及 Google 已经推出?Android?br /> 然而这一切,仅仅?Web 标准q动变得更加混ؕQHTML 5 和其它标准被束之高阁Q结果,HTML 5 一直以来都是以草案的面目示人?br /> 于是Q一些公司联合v来,成立了一个叫?Web Hypertext Application Technology Working Group QWeb 文本应用技术工作组 - WHATWGQ?的组l,他们重新拣?HTML 5。这个组l独立于 W3CQ成员来?MozillaQ?KHTML/Webkit 目l,GoogleQAppleQOpera 以及微Y。尽?HTML 5 草案不会在短期内获得认可Q但 HTML 5 ȝ得以延箋?br /> HTML 5 带来什么?以下?HTML 5 草案中最Ȁ动h心的部分Q?br /> 全新的,更合理的 TagQ多媒体对象不再全部绑定在 object ?embed Tag 中,而是视频有视频的 TagQ音频有音频?Tag。本地数据库。这个功能将内嵌一个本地的 SQL 数据库,以加速交互式搜烦Q缓存以及烦引功能。同Ӟ那些ȝ Web E序也将因此L(fng)匪浅。不需要插件的富动甅RCanvas 对象给览器带来直接在上面l制矢量囄能力Q这意味着我们可以q Flash ? SilverlightQ直接在览器中昄囑Ş或动甅R一些最新的览器,除了 IEQ已l开始支?Canvas。浏览器中的真正E序。将提供 API 实现览器内的编辑,拖放Q以及各U图形用L(fng)面的能力。内容修?Tag 被剔除Q而?CSS。理ZԌHTML 5 是培育新 Web 标准的土壤,让各U设惛_他的l织者之间分享,?HTML 5 目前仍处于试验阶Dc?br /> Mozilla 的技术副总裁 Mike Shaver _HTML 5 是一个被寄予厚望的概念,它既? WHATWG l织的实验田Q又?W3C 的标准之路?br /> Shaver 认ؓ(f)QMozilla 的兴和 WHATWG 实验相吻合,Mozilla ?HTML 5 工作l中非常z跃Q我们对一些早期的l则q行实验q将成熟的结果提?W3C?br /> 在过ȝ几年QMozilla 随着各种出现的新标准Q推出多个富有前L的目Q包? PrismQ一个用于离U运?Web E序的系l,以及 WeaveQ一个数据存储框架?br /> Shaver _HTML 5 q动肇始于对 W3C 的不耐烦QW(xu)eb 标准中的很多q展都因 W3C 重点从 HTML 转移?XML 而停滞不前?br /> 很多Z XML 架构的新技术被设计出来替代 HTMLQShaver _q不是一条正的道\Qh们不应象黑瞎子掰玉米把样一Ҏ(gu)一边丢?br /> HTML 5 的新实验?Firefox 以及 Z Webkit ?Safari ?Chrome 览器中逐渐得到强化Q但仍有不少问题?br /> Chrome 的开发?Darin Fisher _Chrome 仍在襁褓中时Q就不得不面临几个问题,管使用的是最新的 WebkitQHTML 5 的本地数据库功能?Chrome 的初期版本中q没有实现。因?Chrome 的沙机制和 Webkit 的数据库功能有冲H?br /> 而由?Chrome 属于U密开发,Chrome 的开发h员也不便参与 Webkit 的开发?br /> 我们要想保守 Chrome 的秘密,无法参?Webkit C֌。Fisher _我们很希望可以在某些斚wl?Webkit 以帮助,我们拥有众多l验丰富的开发者,我们很想知道Z目前遇到的挑战ƈ乐意提供帮助?br /> 随着 Chrome 的发布,Fisher 说他的团队成员有时会?Webkit 的h一起吃饭,有些人私下里q成了好朋友。Fisher Uͼ他们q切地想同其?Webkit 开发组一起工作解决离U数据库的问题?br /> Chrome 里面q包含Google 的开?Gears 技术,用来实现?HTML 5 cM的离U功能?br /> Gears 可以看作已有 API 的替代品QFisher _HTML 5 Ҏ(gu)览器来说是非常好的东西Q但l大多数用户q用旧览器。Gears 可以让那些旧览器也获得q样?APIQ我们正在ؓ(f) HTML 5 ?API 提供兼容?br /> Gears 兼容性非常好Q它正成为将 HTML 5 带向Z桌面的另外一条途径?br /> 目前Q绝大多数工作由 AppleQMozilla, Opera, Google 以及 Trolltech 展开。微软在q什么?IE 因其?Web 标准的迟钝而闻名,更不要说 HTML 5。但 IE8 可能会做出改变?br /> 微Y IE q_?WHAT 工作l主?Chris Wilson 在邮件中Uͼ我们希望我们现在开始的工作可以?HTML 工作l创Z套测试系l。Wilson _IE 开发组仍然?HTML 5 的一些提议感到担忧。我觉得工作l的所有成员都会承认我们还有很多事要做?br /> 目前处于 Beta 版的 IE9Q已l包?HTML 5 的诸多新功能。它拥有一个跨文档消息pȝQ本地存储,以及一些离U事件来网l的中断。但q有些功能还未提上议E,?Canvas?br /> HTML 5 非常庞大Q仍处在开发阶D,我认为浏览器厂商应当快达成一_而每个浏览器的具体实现时间可以自己选择。Web 开发者和览器厂商会同意 Wilson 的下面这句话Q这切无疑是一个激动h心的时刻Q我们希望看?Web 成ؓ(f)新的应用q_? <div>HTML5写的例子(IE9或google览器才有效?Q?br />   <div><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><strong style="word-wrap: break-word; line-height: 24px; ">Google Gravity</strong></span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><br style="word-wrap: break-word; line-height: 24px; " /> </span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><a target="_blank" style="word-wrap: break-word; text-decoration: none; color: #0066cc; line-height: 24px; ">http://mrdoob.com/projects/chromeexperiments/google_gravity/<img src="http://www.tkk7.com/images/blogjava_net/obpm/google.jpg" border="0" alt="" /></a></span></div> <div><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><strong style="word-wrap: break-word; line-height: 24px; ">BallDropping</strong></span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><br style="word-wrap: break-word; line-height: 24px; " /> </span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><a target="_blank" style="word-wrap: break-word; text-decoration: none; color: #0066cc; line-height: 24px; ">http://balldroppings.com/js/</a></span> </div> <div><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><strong style="word-wrap: break-word; line-height: 24px; ">Animated Harmonograph</strong></span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><br style="word-wrap: break-word; line-height: 24px; " /> </span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><a target="_blank" style="word-wrap: break-word; text-decoration: none; color: #0066cc; line-height: 24px; ">http://hernan.amiune.com/labs/harmonograph/animated-harmonograph.html</a></span></div> <div><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><strong style="word-wrap: break-word; line-height: 24px; ">Canopy</strong></span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><br style="word-wrap: break-word; line-height: 24px; " /> </span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><a target="_blank" style="word-wrap: break-word; text-decoration: underline; color: #0066cc; line-height: 24px; ">http://onecm.com/projects/canopy/</a></span> </div> <div><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><strong style="word-wrap: break-word; line-height: 24px; ">Ball Pool</strong></span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><br style="word-wrap: break-word; line-height: 24px; " /> </span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><a target="_blank" style="word-wrap: break-word; text-decoration: none; color: #0066cc; line-height: 24px; ">http://mrdoob.com/projects/chromeexperiments/ball_pool/</a></span></div> <div><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><strong style="word-wrap: break-word; line-height: 24px; ">Browser Ball</strong></span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><br style="word-wrap: break-word; line-height: 24px; " /> </span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><a target="_blank" style="word-wrap: break-word; text-decoration: none; color: #0066cc; line-height: 24px; ">http://experiments.instrum3nt.com/markmahoney/ball/parent.html</a></span></div> <div><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><strong style="word-wrap: break-word; line-height: 24px; ">Wavy Scrollbars</strong></span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><br style="word-wrap: break-word; line-height: 24px; " /> </span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><a target="_blank" style="word-wrap: break-word; text-decoration: none; color: #0066cc; line-height: 24px; ">http://the389.com/experiment/</a></span></div> <div><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><strong style="word-wrap: break-word; line-height: 24px; ">Twitch</strong></span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><br style="word-wrap: break-word; line-height: 24px; " /> </span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><a target="_blank" style="word-wrap: break-word; text-decoration: none; color: #0066cc; line-height: 24px; ">http://reas.com/twitch/window0.html</a></span></div> <div><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><strong style="word-wrap: break-word; line-height: 24px; ">Colorscube</strong></span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><br style="word-wrap: break-word; line-height: 24px; " /> </span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><a target="_blank" style="word-wrap: break-word; text-decoration: none; color: #0066cc; line-height: 24px; ">http://www.canvasdemos.com/2009/04/03/colorscube/</a></span></div> <div><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><strong style="word-wrap: break-word; line-height: 24px; ">InterNetris</strong></span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><br style="word-wrap: break-word; line-height: 24px; " /> </span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><a target="_blank" style="word-wrap: break-word; text-decoration: none; color: #0066cc; line-height: 24px; ">http://internetris.net/</a></span></div> <div><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><strong style="word-wrap: break-word; line-height: 24px; ">CanvasPaint</strong></span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><br style="word-wrap: break-word; line-height: 24px; " /> </span><span style="border-collapse: collapse; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 24px; "><a target="_blank" style="word-wrap: break-word; text-decoration: none; color: #0066cc; line-height: 24px; ">http://canvaspaint.org/</a></span></div> <div>HTML5学习(fn)资料Q?/div> <div>http://www.chinabyte.com/bang/html5/</div> <div>攉资料:(denny) </div> </div> <img src ="http://www.tkk7.com/obpm/aggbug/333919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/obpm/" target="_blank">obpm</a> 2010-10-07 21:46 <a href="http://www.tkk7.com/obpm/archive/2010/10/07/333919.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBPM4.3数据表结构说明(转蝲Q?/title><link>http://www.tkk7.com/obpm/archive/2010/09/16/332229.html</link><dc:creator>obpm</dc:creator><author>obpm</author><pubDate>Thu, 16 Sep 2010 11:51:00 GMT</pubDate><guid>http://www.tkk7.com/obpm/archive/2010/09/16/332229.html</guid><wfw:comment>http://www.tkk7.com/obpm/comments/332229.html</wfw:comment><comments>http://www.tkk7.com/obpm/archive/2010/09/16/332229.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/obpm/comments/commentRss/332229.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/obpm/services/trackbacks/332229.html</trackback:ping><description><![CDATA[首先Q在jbpm4中,程定义相关的部|信息就存在<span style="color: red">JBPM4_DEPLOYMENT</span>?span style="color: red">JBPM4_DEPLOYPROP</span>?span style="color: red">JBPM4_LOB </span>(存放当发布一个png和xml文g后的程定义后的记录)。中?<br /> <br /> <span style="color: red">JBPM4_HIST_PROCINST</span>?span style="color: red">JBPM4_HIST_ACTINST</span>两张表中Q分别存攄是process Instance、Activity Instance的历史记录,Activity Instance是指程定义中各个步骤:task descition{存放Process Instance、Activity Instance历史记录的表有了Q那他们的当前记录存在什么地方呢Q这需要弄清楚jBPM的另外几个概c一般而言Q在jBPM中,“a process instance is the root of a tree of executions”。因此,当一个流E实例SplitZ个ƈ行步骤的时候,?span style="color: red">JBPM4_EXECUTION</span>表中有三笔相关记录Q一W是代表程实例的Root ExecutionQ另外两W是关于上述两个q行步骤的Child Execution?<br /> <br /> 此外Q在jbpm中,Activity的种cL很丰富的Q可以是Control Flow ActivitiesQ如sub-processQdecision{,也可以是Automatic ActivityQ如java、script、sql{,其中需要h来参与完成的Activity被称为TaskQ待办Q务放?span style="color: red">JBPM4_TASK</span>表中Q而历史Q务放?span style="color: red">JBPM4_HIST_TASK</span>表中?<br /> <br /> 对一个Task而言Q它可能会有多个Participation(swim lane 同样会有多个Participation)QParticipation的种cLCandidate、client、owner、Replaced Assignee和viewerQ而具体的Participation既可以是单一用户Q也可以是用L(fng)QParticipation的信息存攑֜<span style="color: red">JBPM4_PARTICIPATION</span>中?<br /> <br /> Swim Lane是一URuntime Process RoleQ通过Swim LaneQ多个Task可以一ơ分配到同一Actorw上Q存放这些信息是?span style="color: red">JBPM4_PARTICIPATION</span>?<br /> <br /> <span style="color: red">JBPM4_ID_GROUP</span>?span style="color: red">JBPM4_ID_MEMBERSHIP</span>?span style="color: red">JBPM4_ID_USER</span>q是基本的权限控Ӟ关于用户认证斚wq是自己开发一套,q个功能太简单了Q难以满需求?<br /> <br /> <span style="color: red">JBPM4_JOB</span>存放的是Timer的定义?<br /> <br /> <span style="color: red">JBPM4_PROPERTY</span>q是jbpm引擎参数表?<br /> <br /> <span style="color: red">JBPM4_VAR</span>表存放流E(f)时变量,当流E实例结束后Q表中内Ҏ(gu)除?<br /> <br /> <span style="color: red">JBPM4_HIST_VAR</span>表存攑֎史(f)时变量,但是jbpm4好像q没有对q张表进行利用?<br /> <br /> <span style="color: red">JBPM4_HIST_DETAIL</span>表保存变量变更记录?<br /> <br /> <br /> <br /> 了解jbpm4.3以上q?8张表后,我们应该在流E运行中Q详l观察jbpm是如何对q些表进行操作,以及q行什么样的操作的?<br /> <br /> 发布一个流E定义后Q?<br /> <br /> <span style="color: red">JBPM4_DEPLOYMENT</span>新增一条记?<br /> <br /> <span style="color: red">JBPM4_DEPLOYPROP</span>新增三条记录 <br /> <br /> <span style="color: red">JBPM4_LOB</span>新增两条记录 <br /> <br /> <br /> <br /> 开始一个流EstartProcessInstanceByKey后: <br /> <br /> <span style="color: red">JBPM4_EXECUTION</span>新增一条记?<br /> <br /> <span style="color: red">JBPM4_TASK</span>新增一条记?<br /> <br /> <span style="color: red">JBPM4_HIST_PROCINST</span>?span style="color: red">JBPM4_HIST_ACTINST</span>分别新增一条记?<br /> <br /> <span style="color: red">JBPM4_HIST_TASK</span>新增一条记?<br /> <br /> <br /> <br /> 当执行taskService.setVariables(task.getId(), map);Ӟ<span style="color: red">JBPM4_VARIABLES</span>中添加变量记?br />  <br /> 转蝲人员QNicholas <img src ="http://www.tkk7.com/obpm/aggbug/332229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/obpm/" target="_blank">obpm</a> 2010-09-16 19:51 <a href="http://www.tkk7.com/obpm/archive/2010/09/16/332229.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZRBAC的权限设计模?/title><link>http://www.tkk7.com/obpm/archive/2010/09/14/331967.html</link><dc:creator>obpm</dc:creator><author>obpm</author><pubDate>Tue, 14 Sep 2010 05:30:00 GMT</pubDate><guid>http://www.tkk7.com/obpm/archive/2010/09/14/331967.html</guid><wfw:comment>http://www.tkk7.com/obpm/comments/331967.html</wfw:comment><comments>http://www.tkk7.com/obpm/archive/2010/09/14/331967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/obpm/comments/commentRss/331967.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/obpm/services/trackbacks/331967.html</trackback:ping><description><![CDATA[<p align="center"><strong>权限分析文档</strong> <p>ZRBAC的权限设计模型: <p><strong>1 </strong><strong>RBAC </strong><strong>介绍</strong> <p>RBAC 模型作ؓ(f)目前最为广泛接受的权限模型?<p>NIST QThe National Institute of Standards and TechnologyQ美国国家标准与技术研IQ标准RBAC模型?个部件模型组成,q?个部件模型分别是基本模型RBAC0QCore RBACQ、角色分U模型RBAC1QHierarchal RBACQ、角色限制模型RBAC2QConstraint RBACQ和l一模型RBAC3QCombines RBACQ?sup>[1]</sup>。RBAC0模型如图1所C?<p><img border="0" alt="clip_image001.jpg" src="http://www.tkk7.com/images/blogjava_net/anwenhao/clip_image001.jpg" width="482" height="144"><br>图表 1 RBAC 0 模型 <p>l <strong>RBAC0 </strong><strong>定义了能构成一个RBAC控制pȝ的最的元素集合</strong> <p>在RBAC之中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素Q权限被赋予角色,而不是用P当一个角色被指定l一个用hQ此用户拥有了该角色所包含的权限。会话sessions是用户与Ȁzȝ角色集合之间的映。RBAC0与传l访问控制的差别在于增加一层间接性带来了灉|性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展?<p>l <strong>RBAC1 </strong><strong>引入角色间的l承关系</strong> <p>角色间的l承关系可分Z般承关pd受限l承关系。一般承关pM要求角色l承关系是一个绝对偏序关p,允许角色间的多ѝ而受限承关pdq一步要求角色承关pL一个树(wi)l构?<p>l <strong>RBAC2 </strong><strong>模型中添加了责Q分离关系</strong> <p>RBAC2 的约束规定了权限被赋予角色时,或角色被赋予用户?以及当用户在某一时刻ȀzM个角色时所应遵循的强制性规则。责dd括静态责dd动态责dR约束与用户-角色-权限关系一起决定了RBAC2模型中用L(fng)讉K许可?<p>l <strong>RBAC3 </strong><strong>包含了RBAC1和RBAC2</strong> <p>既提供了角色间的l承关系Q又提供了责ddpR?<p>建立角色定义表。定出当前系l中角色?<p>因ؓ(f)有承的问题Q所以角色体现出的是一个树(wi)形结构?<p><img border="0" alt="test.bmp" src="http://www.tkk7.com/images/blogjava_net/anwenhao/%E6%9C%AA%E5%91%BD%E5%90%8D1.bmp" width="603" height="407"> <p><strong>2 </strong><strong>权限设计Q?/strong> <p>配置资源以及资源的操?Q?q里资源可以定义Z个通用的资源模型。提供通用的资源统一接口?<p>数据?ER 图: <p><img border="0" alt="clip_image002.gif" src="http://www.tkk7.com/images/blogjava_net/anwenhao/clip_image002.gif" width="553" height="322"> <p>关系图: <p><img border="0" alt="clip_image003.gif" src="http://www.tkk7.com/images/blogjava_net/anwenhao/clip_image003.gif" width="553" height="419"> <p><img border="0" alt="未命?bmp" src="http://www.tkk7.com/images/blogjava_net/anwenhao/%E6%9C%AA%E5%91%BD%E5%90%8D.bmp" width="603" height="739"> <p><strong>3 </strong><strong>分析Q?/strong> <p>Ҏ(gu)以上的类关系囑֒ER囑֏以看出。整个权限可以抽象ؓ(f)五个对象l成?<p><strong>OrgBean : </strong><strong>用于描述org模型?/strong> <p><strong>Role </strong><strong>Q?用于描述角色?/strong> <p><strong>Permission </strong><strong>Q?用于描述权限?/strong> <p><strong>Resource </strong><strong>Q?用于描述资源?/strong> <p><strong>Operation </strong><strong>Q?用于描述操作?/strong> <p><strong></strong> <p><strong>其中Permission中有Resource , Operation 的聚合,资源和操作组成权限?/strong> <p><strong>Role </strong><strong>?Permission 都有自包含。因计到权限的ѝ?/strong> <p><strong>资源Resource 也可能出C颗树(wi)形结构,那资源也要有自包含?/strong> <p><strong></strong> <p><strong>思想 </strong><strong>:</strong> <p>权限pȝ的核心由以下三部分构成: 1. 创造权限, 2. 分配权限Q?3. 使用权限Q然后,pȝ各部分的主要参与者对照如下: 1. 创造权?-Creator 创造, 2. 分配权限 - Administrator 分配Q?3. 使用权限 - User Q?<p>1. Creator 创?Privilege Q?Creator 在设计和实现pȝ时会划分Q一个子pȝ或称为模块,应该有哪些权限。这里完成的?Privilege 与Resource 的对象声明,q没有真正将 Privilege 与具?Resource 实例联系在一P形成 Operator ?<p>2. Administrator 指定 Privilege ?Resource Instance 的关?。在q一步, 权限真正与资源实例联pd了一P 产生?Operator QPrivilege Instance Q?Administrator 利用 Operator q个基本元素Q来创造他理想中的权限模型。如Q创Ԍ创徏用户l,l用L(fng)分配用户Q将用户l与角色兌{等 ... q些操作都是?Administrator 来完成的?<p>3. User 使用 Administrator 分配l的权限M用各个子pȝ?Administrator 是用P在他的心目中有一个比较适合他管理和l护的权限模型。于是,E序员只要回{一个问题,是什么权限可以访问什么资源,也就是前面说?Operator 。程序员提供 Operator 意味着l系l穿上了盔甲?Administrator 可以按照他的意愿来建立他所希望的权限框?可以自行增加Q删除,理 Resource ?Privilege 之间关系。可以自行设定用?User 和角?Role 的对应关pR?( 如果?Creator 看作?Basic 的发明者, Administrator 是 Basic 的用者,他可以做一些脚本式的编E?) Operator 是这个系l中最关键的部分,它是一个纽带,一个系?Programmer Q?Administrator Q?User 之间的纽带?<p><strong></strong> <p><strong>4 </strong><strong>权限API</strong> <p><strong> getPermissionByOrgGuid(String orgGuid )</strong> <p>通过传入一个org的Guid Q?拿到当前q个org对象都具有那些访问权限?<p><strong> getSourcePermissionByOrgGuid(String orgGuid , String resouceGuid)</strong> <p>通过传入一个org的Guid ?一个资源的Guid Q?q回改Org对当前这个资源的讉K权限?<p><strong>getPermissionByResourceGuid(String resource)</strong> <p>通过传入一个资源的Guid Q?得到当前资源下都有那些权限定义?<p><strong>havingHeritPermission(String orgGuid , String resouceGuid) : Boolean</strong> <p>传入一个orgGuidQ?资源GUID Q查看改OrgGuid下对资源是否有向下承的权限。这里承是资源的ѝ即对父栏目有权限,可以l承下去对父栏目下的子栏目同h权限?<p><strong>havingPermission(String orgGuid , String resourceGuid) : Boolean</strong> <p>判断某OrgҎ(gu)一资源是否用权限?<p>以上是粗_度的权限API ?以下为细_度的权限: <p><strong>getOperationByPermission(String permissionGuid)</strong> <p>通过permission 的Guid 得到该permission 的所有有效操作?<p><strong>getOperationByGuid(String permissionGuid , String resourceGuid)</strong> <p>通过permision的Guid Q?资源的Guid 得到该资源下所有的有效操作?<p><strong>screeningOpreationByGuid (String permissionGuid , String resourceGuid , String orgGuid)</strong> <p>通过permission Q?resource Q?org的Guid 得到改Org对这一资源的有效操作?<p><strong>hasOperation(String operationGuid) : boolean</strong> <p>通过传入的operationGuid q回是否h操作权限?<p><strong>5 </strong><strong>权限的实玎ͼ</strong> <p>1 Q表单式认证Q这是常用的Q但用户到达一个不被授权访问的资源Ӟ Web 容器发 <p>Z?html 面Q要求输入用户名和密码?<p>2 Q用 Filter 防止用户讉K一些未被授权的资源Q?Filter 会截取所?Request/Response Q?<p>然后攄一个验证通过的标识在用户?Session 中,然后 Filter 每次依靠q个标识来决定是否放?Response ?<p>q个模式分ؓ(f)Q?<p>Gatekeeper Q采?Filter 或统一 Servlet 的方式?<p>Authenticator Q??Web 中?JAAS 自己来实现?<p>Filter 拦截只是拦截该用h否有讉Kq个面Q或q一资源的权限。真正做到显C后拦截是在应用E序内部d?<p>做显C拦截提供API Q?标签q两U方?<p>  <p>转蝲人员QHappy <p><b>原文地址</b> <a >http://blog.csdn.net/huanghanzzz2006/archive/2006/12/04/1429666.aspx</a> <img src ="http://www.tkk7.com/obpm/aggbug/331967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/obpm/" target="_blank">obpm</a> 2010-09-14 13:30 <a href="http://www.tkk7.com/obpm/archive/2010/09/14/331967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flex4中文帮助文档下蝲http://www.tkk7.com/obpm/archive/2010/09/03/330678.htmlobpmobpmFri, 03 Sep 2010 00:50:00 GMThttp://www.tkk7.com/obpm/archive/2010/09/03/330678.htmlhttp://www.tkk7.com/obpm/comments/330678.htmlhttp://www.tkk7.com/obpm/archive/2010/09/03/330678.html#Feedback104http://www.tkk7.com/obpm/comments/commentRss/330678.htmlhttp://www.tkk7.com/obpm/services/trackbacks/330678.htmlflex4帮助文档大小?4M(|页?Q上传不了。需要该文档的,L(fng)下你的邮地址?br /> 115׃n地址Q?br /> http://u.115.com/file/f8c22d4e48
flex4api.zip   提取码:f8c22d4e48


原创人员Qdenny



obpm 2010-09-03 08:50 发表评论
]]>
flex囄剪切CZ--预览、保存到本地、保存到服务?附源?http://www.tkk7.com/obpm/archive/2010/09/01/330501.htmlobpmobpmWed, 01 Sep 2010 01:55:00 GMThttp://www.tkk7.com/obpm/archive/2010/09/01/330501.htmlhttp://www.tkk7.com/obpm/comments/330501.htmlhttp://www.tkk7.com/obpm/archive/2010/09/01/330501.html#Feedback6http://www.tkk7.com/obpm/comments/commentRss/330501.htmlhttp://www.tkk7.com/obpm/services/trackbacks/330501.html
效果图:






flex代码:

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()" xmlns:local="astion.*">
 
<mx:Script>
  
<![CDATA[
   import mx.controls.Image;
   import mx.graphics.ImageSnapshot;
   import flash.net.FileReference;
   import mx.graphics.codec.JPEGEncoder;
   import mx.managers.PopUpManager;
   import mx.containers.TitleWindow;
   import mx.controls.Alert;
   import mx.events.CloseEvent;
   import mx.core.IFlexDisplayObject;
   import mx.utils.*;
   import mx.core.Application;
   import astion.Dot;
   import astion.ScaleBox;
   
   public static const LINE_WIDTH:Number = 1;//~放Ҏ(gu)宽度
   private var file:FileReference;
   public var IMAGE_URL:String="http://localhost:8080/cutPicuter/aa/aa.jpg";
   private var loader:Loader;
   private var bmp:Bitmap;
            private var stream:URLStream;
            public var realPath:String="D:\myWorkSpace\cutPicuter\WebRoot\aa\aa.jpg";
   
   //初始化数?br />    private function init():void{
    this.loader = new Loader();
                this.stream = new URLStream();
                this.loader.contentLoaderInfo.addEventListener(Event.COMPLETE,this.onComplete);
                this.loader.load(new URLRequest(encodeURI(this.IMAGE_URL)));//解决中文q
                this.stream.load(new URLRequest(encodeURI(this.IMAGE_URL)));
                this.stream.addEventListener(Event.COMPLETE,this.onLoaded);
   }
   private function onLoaded(e:Event):void
            {                                
                var bytearray:ByteArray = new ByteArray();    
                this.stream.readBytes(bytearray);
                
                if(this.stream.connected)
                    this.stream.close();
                    
                this.loader.loadBytes(bytearray);
            }
            private function onComplete(e:Event):void
            {
                try
                {
                    this.bmp = this.loader.content as Bitmap;
                    var showImage:Image= new Image();
                    showImage.source=this.loader.content;
                    canvas.addChild(showImage);
                    canvas.setChildIndex(box,1);
                    canvas.setChildIndex(showImage,0);
                }
                catch(e:Error)
                {
                    
                }
            }
   
   //截图Q显C羃N择?br />    private function doCapture():void{
    box.x = 100;
    box.y = 100;
    box.visible = true;
   }
   
   //获取~放选择框内的图?br />    private function getImg():BitmapData{
    //截取整个区域
    box.scaleEnable = false;
    var bmp:BitmapData = ImageSnapshot.captureBitmapData(canvas);
    box.scaleEnable = true;
    
    //矩Ş截取区域                
                var re:Rectangle = new Rectangle(box.x+LINE_WIDTH,box.y+LINE_WIDTH,box.boxWidth-LINE_WIDTH,box.boxHeight-LINE_WIDTH); 
                var bytearray:ByteArray = new ByteArray();   
                //截取出所选区域的像素集合                        
                bytearray = bmp.getPixels(re); 
                
                
                var imgBD:BitmapData = new BitmapData(box.boxWidth-LINE_WIDTH,box.boxHeight-LINE_WIDTH);       
                //当前的bytearray.position为最大长度,要设Z0开始读?nbsp;      
                bytearray.position=0;            
                var fillre:Rectangle = new Rectangle(0,0,box.boxWidth-LINE_WIDTH,box.boxHeight-LINE_WIDTH);
                //截取出的像素集合存在新的bitmapdata里,大小和截取区域一?br />                 imgBD.setPixels(fillre,bytearray);
                
                return imgBD;
   }
   
   //预览囄
   private function doScan():void{
    var t:TitleWindow = new TitleWindow();
    t.showCloseButton=true;
    t.addEventListener(CloseEvent.CLOSE,closeWindow);
    t.width = box.boxWidth+t.getStyle("borderThickness");
    t.height =box.boxHeight+t.getStyle("borderThickness")+t.getStyle("headerHeight");
    var img:Image = new Image();
    img.width = box.boxWidth;
    img.height = box.boxHeight; 
    img.source = new Bitmap(getImg());
    t.addChild(img);
    PopUpManager.addPopUp(t,this,true);
    PopUpManager.centerPopUp(t);
   }
   
   private function closeWindow(e:CloseEvent):void{            
                var t:TitleWindow = e.currentTarget as TitleWindow;                    
                PopUpManager.removePopUp(t);                
            }
            
            //保存囄到本?br />    private function downloadPicture():void{
    file=new FileReference();
    file.addEventListener(Event.COMPLETE,downloadComplete);
    file.save(new JPEGEncoder(80).encode(getImg()),"default.jpg");
   }
   
   private function downloadComplete(event:Event):void{
    Alert.show("成功保存囄到本圎ͼ","提示");
   }
   
   //保存囄到服务器卌盖原来的囄
   private function save():void{
    Alert.show("是否保存剪切囄Q?,"提示",3, this, function(event:CloseEvent):void {
          if (event.detail==Alert.YES){
           var request:URLRequest = new URLRequest("http://localhost:8080/cutPicuter/servlet/FileManagerSaveFileServlet?realPath="+encodeURIComponent(StringUtil.trim(realPath)));
     request.method=URLRequestMethod.POST;
     request.contentType = "application/octet-stream";
     request.data = new JPEGEncoder(80).encode(getImg());
     var loader:URLLoader = new URLLoader();
     loader.load(request);
     loader.addEventListener(Event.COMPLETE,saveResult);

          }});
   }
   
   private function saveResult(event:Event):void{
    Application.application.reLoadFolderFiles(realPath.substr(0,realPath.lastIndexOf("\\")));
    Alert.show("保存剪切囄成功","提示");
   }
  
]]>
 
</mx:Script>
 
<mx:HBox x="0" y="0">
        
<mx:LinkButton label="剪裁" click="doCapture();" icon="@Embed('assets/cut.png')"/>
        
<mx:LinkButton label="预览" click="doScan();" icon="@Embed('assets/ok.png')"/>
        
<mx:VRule height="22"/>
        
<mx:LinkButton label="保存"  click="save()"  icon="@Embed('assets/save.png')"/>
        
<mx:LinkButton label="另存? click="downloadPicture();" icon="@Embed('assets/saveAs.png')"/>
    
</mx:HBox>
 
<mx:Canvas id="canvas" y="23" x="1">
 
<local:ScaleBox id="box" visible="false" y="0" x="0" width="100" height="100"/>
 
</mx:Canvas>
</mx:Application>



java代码Q?br />

 

package com;


import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class FileManagerSaveFileServlet
 
*/
public class FileManagerSaveFileServlet extends HttpServlet {
 
 
private int len=0;//处理?/span>
 private int mm=0;//重命?/span>
 private String fileName="";//文g原名
 private String extName="";//文g扩展?/span>
 private String tempFileName="";//文g名加扩展?/span>
 
 
public void doGet(HttpServletRequest request, HttpServletResponse response)    
 
throws ServletException, IOException {    
 processRequest(request, response);    
 }    
   
 
public void doPost(HttpServletRequest request, HttpServletResponse response)    
  
throws ServletException, IOException {    
 processRequest(request, response);    
 }    
 
 
public void processRequest(HttpServletRequest request, HttpServletResponse response)

    
throws ServletException, IOException {
  request.setCharacterEncoding(
"utf-8");
  String realPath
=request.getParameter("realPath");
  
//System.out.println("FMSFS-->realPath:"+realPath);
  response.setContentType("application/octet-stream");
  InputStream is 
= request.getInputStream();
  
try {
  
int size = 0;
  
byte[] tmp = new byte[100000];
  
  tempFileName
=realPath.substring(realPath.lastIndexOf("\\")+1);//切割获得文g名加扩展?/span>
  fileName=tempFileName.substring(0,tempFileName.lastIndexOf("."));//切割获得文g?br />   //保获得真实的文件名如:1(1)可以获得真实?,
  if(fileName.indexOf("(")!=-1){
   fileName
=fileName.substring(0,fileName.indexOf("("));
  }
  
  extName
=tempFileName.substring(tempFileName.lastIndexOf("."));//切割获得扩展?br />   
  
//调用递归Ҏ(gu)
  fileName+=reNameFile(realPath.substring(0,realPath.lastIndexOf("\\")+1),fileName,extName);
  
// 创徏一个文件夹用来保存发过来的囄Q?/span>
  File f = new File(realPath.substring(0,realPath.lastIndexOf("\\")+1)+fileName+extName);
  DataOutputStream dos 
= new DataOutputStream(new FileOutputStream(f));
  
while ((len = is.read(tmp)) != -1) {
  dos.write(tmp, 
0, len);
  size 
+= len;
  }
  dos.flush();
  dos.close();
  } 
catch (IOException e) {
  e.printStackTrace();
  }
 }
 
 
//递归来重命名文g?/span>
 String str="";
 
public String reNameFile(String realPath,String filename,String extName){
  File file 
=new File(realPath+"\\"+filename+extName);
  str
="";
        
if(file.exists()){
         mm
++;
         str
="_"+mm;
         reNameFile(realPath,fileName
+str,extName);
        }
else{
         
if(mm!=0){
      str
="_"+mm;
         }
        }
  
return str;
 }
}

 


 

源码: flex囄剪切CZ


原创人员QDenny



obpm 2010-09-01 09:55 发表评论
]]>
վ֩ģ壺 պ伤Ƶ߲| AVһϵ| þþƷëƬѹۿ| hƵѹۿ| 㽶߹ۿ| ޾Ʒ߹ۿƵ| պþ| | ߹ۿ| AVѲ| þþ99Ʒѹۿ| 9i9ƷѾþ| ʮ˽Ļվ| ޾Ʒٸ30P| ҹƷ| ޾ƷŮɫ| AV뾫Ʒɫҹ| Ļ| avҹƷһ| ԲƵ | ۺר| ޲AVӰƬ߲| øѹۿ| ѻɫëƬƵ| ߲ѲavƬ| ˬָ߳ëƬѿ| 18ڵվ| ëƬa߹ۿ67194| 91Ѳˬ˿| ӰԺѹۿ| ԻȫƵվ| ޹ƷƵ| 97Ƶ| ƵѲ| ɫƬѹۿ| 츾ӰƬ| ëƬ18ŮëƬƵδ| ѲСƵ| ³˿Ƭһۿ| ŮڵƵվ| Ʒѹۿ|