??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV午夜福利精品一区二区,亚洲国产日韩视频观看,亚洲中文字幕成人在线http://m.tkk7.com/yangyi/category/28786.html自强不息zh-cnSat, 10 Jul 2010 04:22:02 GMTSat, 10 Jul 2010 04:22:02 GMT60关于ThreadLocal的内存泄?/title><link>http://m.tkk7.com/yangyi/archive/2010/07/02/325100.html</link><dc:creator>杨一</dc:creator><author>杨一</author><pubDate>Fri, 02 Jul 2010 10:27:00 GMT</pubDate><guid>http://m.tkk7.com/yangyi/archive/2010/07/02/325100.html</guid><wfw:comment>http://m.tkk7.com/yangyi/comments/325100.html</wfw:comment><comments>http://m.tkk7.com/yangyi/archive/2010/07/02/325100.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/yangyi/comments/commentRss/325100.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/yangyi/services/trackbacks/325100.html</trackback:ping><description><![CDATA[ThreadLocal是一UconfinementQconfinement和local及immutable都是U程安全的(如果JVM可信的话Q。因为对每个U程和value之间存在hash表,而线E数量未知,从表象来看ThreadLocal会存在内存泄ԌM代码Q发现实际上也可能会内存泄露?br /> <br /> 事实上每个Thread实例都具备一个ThreadLocal的mapQ以ThreadLocal Instance为keyQ以l定的Object为Value。而这个map不是普通的mapQ它是在ThreadLocal中定义的Q它和普通map的最大区别就是它的Entry是针对ThreadLocal弱引用的Q即当外部ThreadLocal引用为空Ӟmap可以把ThreadLocal交给GC回收Q从而得C个null的key?br /> <br /> q个threadlocal内部的map在Thread实例内部l护了ThreadLocal Instance和bind value之间的关p,q个map有thresholdQ当过thresholdӞmap会首先检查内部的ThreadLocalQ前文说q,map是弱引用可以释放Q是否ؓnullQ如果存在nullQ那么释攑ּ用给gcQ这样保留了位置l新的线E。如果不存在slate threadlocalQ那么double threshold。除此之外,q有两个Z释放掉已l废弃的threadlocal占用的内存,一是当hash法得到的table index刚好是一个null key的threadlocalӞ直接用新的threadlocal替换掉已l废弃的。另外每ơ在map中新Z个entryӞx有和用过的或未清理的entry命中ӞQ会调用cleanSomeSlots来遍历清理空间。此外,当Thread本n销毁时Q这个map也一定被销毁了Qmap在Thread之内Q,q样内部所有绑定到该线E的ThreadLocal的Object Value因ؓ没有引用l箋保持Q所以被销毁?br /> <br /> 从上可以看出Java已经充分考虑了时间和I间的权衡,但是因ؓ|ؓnull的threadlocal对应的Object Value无法及时回收。map只有到达threshold时或dentry时才做检查,不似gc是定时检查,不过我们可以手工轮询查,昑ּ调用map的removeҎQ及时的清理废弃的threadlocal内存。需要说明的是,只要不往不用的threadlocal中放入大量数据,问题不大Q毕竟还有回收的机制?br /> <br /> lgQ废弃threadlocal占用的内存会?中情况下清理Q?br /> 1 threadl束Q那么与之相关的threadlocal value会被清理<br /> 2 GC后,thread.threadlocals(map) threshold过最大值时Q会清理<br /> 3 GC后,thread.threadlocals(map) d新的EntryӞhash法没有命中既有EntryӞ会清?br /> <br /> 那么何时?#8220;内存泄露”?当Thread长时间不l束Q存在大量废弃的ThreadLocalQ而又不再d新的ThreadLocalQ或新添加的ThreadLocal恰好和一个废弃ThreadLocal在map中命中)时? <img src ="http://m.tkk7.com/yangyi/aggbug/325100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/yangyi/" target="_blank">杨一</a> 2010-07-02 18:27 <a href="http://m.tkk7.com/yangyi/archive/2010/07/02/325100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于软g文档Q我的看?/title><link>http://m.tkk7.com/yangyi/archive/2010/06/29/324813.html</link><dc:creator>杨一</dc:creator><author>杨一</author><pubDate>Tue, 29 Jun 2010 10:26:00 GMT</pubDate><guid>http://m.tkk7.com/yangyi/archive/2010/06/29/324813.html</guid><wfw:comment>http://m.tkk7.com/yangyi/comments/324813.html</wfw:comment><comments>http://m.tkk7.com/yangyi/archive/2010/06/29/324813.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/yangyi/comments/commentRss/324813.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/yangyi/services/trackbacks/324813.html</trackback:ping><description><![CDATA[<font style="background-color: #f2f2f2">文档应该包括两大部分Q一部分是清晰的代码l构和注释,比如Concurrent API是q样Q还有一部分是文字文档,包括三个部分:一是开发文档,应该讲架构和功能Q二是烦引文档,详细介绍功能和参敎ͼ三是用户文档Q包括安装和使用说明<br /> <br /> 文档最困难的莫q于版本的一致性,当Y件升U后Q一些obsolete的内容和新的feature很难同步。要是架构发生了变化Q那更困难了。一般document team都不是太_于技术,所以也会生一些问题?br /> <br /> 只能说Q何事物永q都有改q的I间Q但是同样也永远没有辑ֈ完美的程?/font> <img src ="http://m.tkk7.com/yangyi/aggbug/324813.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/yangyi/" target="_blank">杨一</a> 2010-06-29 18:26 <a href="http://m.tkk7.com/yangyi/archive/2010/06/29/324813.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多线E的知识http://m.tkk7.com/yangyi/archive/2010/06/25/324500.html杨一杨一Fri, 25 Jun 2010 11:17:00 GMThttp://m.tkk7.com/yangyi/archive/2010/06/25/324500.htmlhttp://m.tkk7.com/yangyi/comments/324500.htmlhttp://m.tkk7.com/yangyi/archive/2010/06/25/324500.html#Feedback0http://m.tkk7.com/yangyi/comments/commentRss/324500.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/324500.html多线E的优点Q?/strong>
1 多核利用
2 为单个Q务徏模方?
3 异步处理不同事gQ不必盲{?
4 C的UI也需要它
风险Q?/strong>
1 同步变量易错?
2 因资源限制导致线E活跃性问?
3 ?D的性能问题
用途:
框架QUIQBackend
U程安全的本质是什么:
q是线E和锁,q些只是基础l构Q本质是如何控制׃n变量讉K的状?
什么是U程安全Q?/strong>
是U程之间的执?strong>q没?/strong>发生错误Q就是没有发生意?
一个线E安全的cLw封装了对类内部Ҏ和变量的异步hQ调用方无需考虑U程安全问题
无状态的变量LU程安全?
原子性:
完整执行的单元,如不加锁控制Q则会发生竞态条Ӟ如不加锁的懒汉单例模式,或者复合操作?
锁,内在锁,重入Q?/strong>
利用synchronized关键字控制访问单元,同一U程可以重入锁内部,避免了面向对象生的问题。同一变量的所有出现场合应该用同一个锁来控制。synchronized(lock)?
即所有方法都用synchronized控制也不能保证线E安全,它可能在调用时编E复合操作?
z跃性和性能问题Q?/strong>
q大的粒度会Dq个问题Q用锁进行异步控ӞD了线E的序执行?
单和性能是一对矛盾,需要适当的取舍。不能在没有考虑成熟的情况下Qؓ了性能ȝ牲简z性?
要尽量避免耗时操作QIO和网l操作中使用?

杨一 2010-06-25 19:17 发表评论
]]>
Ext Store Filter的实现和问题http://m.tkk7.com/yangyi/archive/2010/06/25/324499.html杨一杨一Fri, 25 Jun 2010 11:16:00 GMThttp://m.tkk7.com/yangyi/archive/2010/06/25/324499.htmlhttp://m.tkk7.com/yangyi/comments/324499.htmlhttp://m.tkk7.com/yangyi/archive/2010/06/25/324499.html#Feedback0http://m.tkk7.com/yangyi/comments/commentRss/324499.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/324499.html 相应圎ͼ当进行store的增删改Ӟ要同时维护两个缓存?
问题
Store包含两个增加Record的方法,即insert和addQ其中的insert没有更新snapshot所以当重新应用filterӞ即data被重新定义时Q在data中用insert新增的记录是无效的?
解决Ҏ
用add不要用insertQ如果用insertQ记得把数据写进snapshot: store.snapshot.addAll(records)

杨一 2010-06-25 19:16 发表评论
]]>
Ext中Combolg的联动封?/title><link>http://m.tkk7.com/yangyi/archive/2010/06/25/324498.html</link><dc:creator>杨一</dc:creator><author>杨一</author><pubDate>Fri, 25 Jun 2010 11:14:00 GMT</pubDate><guid>http://m.tkk7.com/yangyi/archive/2010/06/25/324498.html</guid><wfw:comment>http://m.tkk7.com/yangyi/comments/324498.html</wfw:comment><comments>http://m.tkk7.com/yangyi/archive/2010/06/25/324498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/yangyi/comments/commentRss/324498.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/yangyi/services/trackbacks/324498.html</trackback:ping><description><![CDATA[     摘要: 在Extjs中构造NU联动下拉的ȝ不少Q需定制下拉数据q设定响应事件。通过对Combo集合的封装,无需自己配置ComboQ只需讑֮数据和关联层U,卛_自动构造出一l支持正向和逆向qo的联动下拉ƈ获取其中某一个的实例? 如: 数据Q? Ext.test = {};       Ext.test.lcbdata&nb...  <a href='http://m.tkk7.com/yangyi/archive/2010/06/25/324498.html'>阅读全文</a><img src ="http://m.tkk7.com/yangyi/aggbug/324498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/yangyi/" target="_blank">杨一</a> 2010-06-25 19:14 <a href="http://m.tkk7.com/yangyi/archive/2010/06/25/324498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>前端框架动态组件和代码生成之间的选择http://m.tkk7.com/yangyi/archive/2010/06/25/324497.html杨一杨一Fri, 25 Jun 2010 11:11:00 GMThttp://m.tkk7.com/yangyi/archive/2010/06/25/324497.htmlhttp://m.tkk7.com/yangyi/comments/324497.htmlhttp://m.tkk7.com/yangyi/archive/2010/06/25/324497.html#Feedback0http://m.tkk7.com/yangyi/comments/commentRss/324497.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/324497.html目前L的SSH开发架构中Qؓ减轻开发者工作,便于理开发过E,往往用到一些公׃码和lgQ或者采用了Z模版的代码生成机Ӟ对于后台的DAOQService{因为架构决定,代码生成必不可少Q但是在前端面的实CQ却可以有两U不同的思\Q一U是把配|信息直接封装成更高U别的组建,一U是q行代码生成。请大家讨论一下这两种Ҏ的优劣,q里先抛砖引玉了?

相同点:
配置信息QXML OR 数据?

控g化:
优点Q?
1 易于d公共功能
2 修改配置数据直接生效
3 代码l构清晰Q对开发者友?
~点Q?
1 重组内存中对象结构,性能没有代码生成好(但渲染时间相同)
2 仅能控制lg自n装的配|,不支持个性化修改Q如果配|文件不支持的参敎ͼ则控件不支持
3 必须保证每个控g一个配|?

代码生成Q?
优点Q?
1 性能较好
2 易于定制内容
3 可以只配|一个模版,然后做出多个单的修改
~点Q?
1 不能针对多个面同时d公共功能
2 业务修改需要重新生成代?
3 开发者需要修改自动生成的代码Qƈ需要了解一些底层的实现l构

=====================20091029
代码生成q不能提高工作效率,其是针对复杂的富客L开?
开发组件可提提供一U有效的选项Q但是在q行效率和内存处理上需要细心处?

杨一 2010-06-25 19:11 发表评论
]]>
Javascript工作引擎代码及实例http://m.tkk7.com/yangyi/archive/2009/03/06/258280.html杨一杨一Fri, 06 Mar 2009 09:39:00 GMThttp://m.tkk7.com/yangyi/archive/2009/03/06/258280.htmlhttp://m.tkk7.com/yangyi/comments/258280.htmlhttp://m.tkk7.com/yangyi/archive/2009/03/06/258280.html#Feedback1http://m.tkk7.com/yangyi/comments/commentRss/258280.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/258280.html最q在学习jBPM?/span>JavascriptQ所以按照一些相x念自己写了下面的200行代码的“工作引?#8221;Q工作流理pȝ包含了流E定义,引擎Q及应用pȝ三个主要部分Q下面的代码实现了流E的分支合ƈQ目前只支持一U环节上的迁UR拷贝到htmlQ双d可以跑v来?/span>

 

var workflowDef = {
         start:{
                   fn:
"begin"//对应处理Ҏ可以在内部定义,也可以在外部定义
                   next:[
"task1","task2"]
         },
         end:
"end",
         tasks:[{
                   id:
"task1",
                   fn:
function(){
                            alert(
"执行d一");
                   },
                   before:
function(){
                            alert(
"执行d一?/span>");
                   },
                   after:
function(){
                            alert(
"执行d一?/span>");
                   },
                   next:[
"task4","task5"]
         },{
                   id:
"task2",
                   fn:
function(){
                            alert(
"执行d?/span>");
                   },
                   before:
function(){
                            alert(
"执行d二前");
                   },
                   after:
function(){
                            alert(
"执行d二后");
                   },
                   next:[
"task3"]
         },{
                   id:
"task3",
                   fn:
function(){
                            alert(
"执行d?/span>");
                   },
                   before:
function(){
                            alert(
"执行d三前");
                   },
                   after:
function(){
                            alert(
"执行d三后");
                   },
                   
//定义合ƈ的数?/span>
                   merge: 
3,
                   next:
"EOWF"
         },{
                   id:
"task4",
                   fn:
function(){
                            alert(
"执行d?/span>");
                   },
                   before:
function(){
                            alert(
"执行d四前");
                   },
                   after:
function(){
                            alert(
"执行d四后");
                   },
                   next:[
"task3"]
         },{
                   id:
"task5",
                   fn:
function(){
                            alert(
"执行d?/span>");
                   },
                   before:
function(){
                            alert(
"执行d五前");
                   },
                   after:
function(){
                            alert(
"执行d五后");
                   },
                   next:[
"task3"]
         }]
}

 

 

//////////定义引擎////////////

Yi 
= {};
Yi.Utils 
= {};
Yi.Utils.execute 
= function(o){
         
if(typeof o != 'function')
                   eval(o)();
         
else
                   o();
}
//工作类
Yi.Workflow 
= function(workflowDef){
         
this.def = workflowDef;
         
this.tasks = this.def.tasks;
}
//public按照环节id查找查找
Yi.Workflow.prototype.findTask 
= function(taskId){
         
for(var i=0;i<this.tasks.length;i++){
                   
if(this.tasks[i].id == taskId)
                            
return this.tasks[i];
         }
}
//public启动工作?/span>
Yi.Workflow.prototype.start 
= function(){
         
this.currentTasks = [];
         Yi.Utils.execute(
this.def.start.fn);
         
for(var i=0;i<this.def.start.next.length;i++){
                   
this.currentTasks[i] = this.findTask(this.def.start.next[i]);
                   Yi.Utils.execute(
this.currentTasks[i].before);
         }
}
//private
Yi.Workflow.prototype.findCurrentTaskById 
= function(taskId){
         
for(var i=0;i<this.currentTasks.length;i++){
                   
if(this.currentTasks[i].id == taskId)
                            
return this.currentTasks[i];
         }
         
return null;
}
//private
Yi.Workflow.prototype.removeFromCurrentTasks 
= function(task){
         
var temp = [];
         
for(var i=0;i<this.currentTasks.length;i++){
                   
if(!(this.currentTasks[i] == task))
                            temp.push(
this.currentTasks[i]); 
         }
         
this.currentTasks = temp;
         temp 
= null;
}
//public触发当前环节
Yi.Workflow.prototype.signal 
= function(taskId){
         
//只处理当前活动环?/span>
         
var task = this.findCurrentTaskById(taskId);
         
if(task == null){
                   alert(
"工作未{到此环节!");
                   
return;
         }
         
//对于合ƈ的处?/span>
         
if(task.merge != undefined){
                   
if(task.merge != 0){
                            alert(
"工作流转条件不充分!");
                            
return;
                   }
else{
                            Yi.Utils.execute(task.before);
                   }        
         }
         
//触发当前环节
         Yi.Utils.execute(task.fn);
         
//触发后动?/span>
         Yi.Utils.execute(task.after);
         
//下一步如果工作流l束
         
if(task.next === "EOWF"){
                   Yi.Utils.execute(
this.def.end);
                   
delete this.currentTasks;
                   
return;
         }
         
//遍历下一步环?/span>
         
this.removeFromCurrentTasks(task);
         
for(var i=0;i<task.next.length;i++){
                   
var tempTask = this.findTask(task.next[i]);
                   
if(!tempTask.inCurrentTasks)
                            
this.currentTasks.push(tempTask);
                   
if(tempTask.merge != undefined){
                            tempTask.merge
--;
                            tempTask.inCurrentTasks 
= true;
                   }
                   
else
                            Yi.Utils.execute(tempTask.before);
         }
}
//public获取当前的活动环?/span>
Yi.Workflow.prototype.getCurrentTasks 
= function(){
         
return this.currentTasks;
}
//public获取程定义
Yi.Workflow.prototype.getDef 
= function(){
         
return this.def;
}

 

////////应用pȝ///////////////
var wf = new Yi.Workflow(workflowDef);
alert(
"启动工作?/span>");
wf.start();
alert(
"试手工执行d3,q回工作没有流转到q里");
wf.signal(
"task3");
alert(
"分支开?/span>");
alert(
"手工执行d1");
wf.signal(
"task1");
alert(
"手工执行d2");
wf.signal(
"task2");
alert(
"手工执行d4");
wf.signal(
"task4");
alert(
"手工执行d5");
wf.signal(
"task5");
alert(
"手工执行d3");
wf.signal(
"task3");
function begin(){
         alert(
"程开始,该函数在外部定义");
}
function end(){
         alert(
"程l束");
}


杨一 2009-03-06 17:39 发表评论
]]>
实现Ext表单对checkBoxGroup的统一理http://m.tkk7.com/yangyi/archive/2009/03/04/257762.html杨一杨一Wed, 04 Mar 2009 04:50:00 GMThttp://m.tkk7.com/yangyi/archive/2009/03/04/257762.htmlhttp://m.tkk7.com/yangyi/comments/257762.htmlhttp://m.tkk7.com/yangyi/archive/2009/03/04/257762.html#Feedback0http://m.tkk7.com/yangyi/comments/commentRss/257762.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/257762.html 在Ext中,通过Record对象向FormPanel中的内置对象BasicForm加蝲数据Ӟ采用的是setValuesҎQ而setValuesW一步要通过Record中定义的name使用findFieldҎ扑ֈ表单元素Q遗憄是,l承了Field的checkboxgrouplgq不能正的通过getNameq回自n引用Q所以,需要对getNameҎq行重写Q此外,Z适应我们采用的数据格式,对于该组件的setValueQ被setValues调用Q和getValueQ获取到已加工的数据Q此事后话)也要q行重写。故而对于Ş如:
{     
   xtype: 'checkboxgroup',   
   name: 'biztype',     
   width: 
220,   
   columns: 
3,   
   fieldLabel: '业务cd',   
   items: [     
       {boxLabel: 'cd1', inputValue: '
01'},     
       {boxLabel: 'cd2', inputValue: '
02'},     
       {boxLabel: 'cd3', inputValue: '
03'},     
       {boxLabel: 'cd4', inputValue: '
04'}     
       ]     
 }  

的checkboxgroup定义Q需重写cd下:
 
Ext.override(Ext.form.CheckboxGroup,{    
    
//在inputValue中找到定义的内容后,讄到items里的各个checkbox?nbsp;   
    setValue : function(value){   
        
this.items.each(function(f){   
            
if(value.indexOf(f.inputValue) != -1){   
                f.setValue(
true);   
            }
else{   
                f.setValue(
false);   
            }   
        });   
    },   
    
//以value1,value2的Ş式拼接group内的?nbsp;  
    getValue : function(){   
        
var re = "";   
        
this.items.each(function(f){   
            
if(f.getValue() == true){   
                re 
+= f.inputValue + ",";   
            }   
        });   
        
return re.substr(0,re.length - 1);   
    },   
    
//在FieldcM定义的getNameҎ不符合CheckBoxGroup中默认的定义Q因此需要重写该Ҏ使其可以被BasicForm扑ֈ   
    getName : function(){   
        
return this.name;   
    }   
});

2 通过内置对象basicForm的getValuesҎ可以获取C个form的完整json数据Q但遗憾的事Q这里取到的是dom的raw数据Q类似emptyText的数据也会被q回Q而Field的getValueҎ不存在这个问题,所以如果想要返回一个非raw的json集合Q可以给formpaneld如下ҎQ?br />
getJsonValue:function(){   
    
var param = '{';   
    
this.getForm().items.each(function(f){   
        
var tmp = '"' + f.getName() + '":"' + f.getValue() + '",';   
        param 
+=  tmp;   
    });   
    param 
= param.substr(0,param.length - 1+ '}';   
    
return param;   
}  

q个Ҏ同样适用于上面定义的checkboxgroupQ如此就可以把前后台的数据通过jsonl一h?

杨一 2009-03-04 12:50 发表评论
]]>
关于文本协议中二q制到文本的转码http://m.tkk7.com/yangyi/archive/2008/12/04/244394.html杨一杨一Thu, 04 Dec 2008 07:56:00 GMThttp://m.tkk7.com/yangyi/archive/2008/12/04/244394.htmlhttp://m.tkk7.com/yangyi/comments/244394.htmlhttp://m.tkk7.com/yangyi/archive/2008/12/04/244394.html#Feedback2http://m.tkk7.com/yangyi/comments/commentRss/244394.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/244394.html偶然间注意到一个困C我很久的问题Q那是如果我不通过Socket而通过应用层的某种Z文本的协议,比如SOAPq行通信的话Q?br /> 如何传递二q制的数据呢Q现在SOAQWeb Service{很火,应该会遇到这U问题吧Q?/p>

现在已知的方法可以通过Base64q行~码Q其原理和方法见Q?br /> http://baike.baidu.com/view/469071.htm

q种Ҏ采用了字节中?位进行文本{换,q且在其他论坛上也看C帖子说淘宝的搜烦也采用了q种~码方式q行处理?br /> 但是采用?位进行{换。ƈ且大胆地l出?位{码的法Q见Q?br /> http://www.javaeye.com/topic/286240

不过q种5位的转换会生更多多余的字节Q?位的转码充分利用了现今的可读文本Q可?位却没有Q因??的最公倍数?0Q?br /> 所以当每{?0位即5个字节的二进制数据需?个字节来表示Q这样就多?个字节,费的效率是3/5, ?位{码浪费的效率?br /> 1/3。而且随着字节增多Q{化效率也在下降。可见采?位{码是一U既费I间Q又费效率的解x案。在不增加url长度的情况下充分提高效率Q?位编码是最佳的。如果可以Q意的饿牺牲url长度Q?br /> 可以?-9全部拿出来当做标CQ?-9不会单独出现Q这样一共有10*26 + 26 = 286 U可能还不包括小写字母,
此外q有=Q?Q?什么的臛_256可以~码8位的字节了,q样处理效率提高了?/p>

现在把问题优化一下,人类可读无歧义的文本码有0-9QA-Z,a-z?2?br /> 讑֏出x个作为标志位?62-x) * x + (62 - x) >= 256
解这个二元一ơ方E得?
3.366<=X<=57.634
考虑到编码的文本长度Q取x的最|?4
最优解Q?br /> ?, 1, 2, 3做ؓ标志?br /> 4-9QA-Z, a-z参与~码q与标志位配合实?位字节的文本?br /> 可以看到q种Ҏ的{码效率会比较高,但是I间冗余大?/p>

此外其实可用的文本不?2个,包括感叹L用上后补?4 = 2^6
它的高位?00
那么只要再找C个文本符保存其他三个高位01 10 11可以了
q样的{码空间可以更一些?/p>
xq很不成熟,Ƣ迎大家批评

杨一 2008-12-04 15:56 发表评论
]]>
也谈普元http://m.tkk7.com/yangyi/archive/2008/09/04/226983.html杨一杨一Thu, 04 Sep 2008 07:41:00 GMThttp://m.tkk7.com/yangyi/archive/2008/09/04/226983.htmlhttp://m.tkk7.com/yangyi/comments/226983.htmlhttp://m.tkk7.com/yangyi/archive/2008/09/04/226983.html#Feedback10http://m.tkk7.com/yangyi/comments/commentRss/226983.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/226983.html 弟刚刚参加工作Q也在项目中接触C普元的EOS。普元的q个东西怎么说呢Q就是ؕ用XML然后Spring没做好就变成那个样子的,同时失去了类型的表述Q一部机器要q行装配需要组件和零gQY件应该自上而下Q分而治之,q是上个世纪70q代Q学者们p成的pQ所以关?#8220;银弹”话的唯一l论是—?#8220;没有银弹”?br /> Z么说EOS是没有做好的SpringQ?br /> Spring化了对象的装配,重用Q是建立在面向对象基上的Q是建立在敏h试基上的Q是建立在强cd基础上的Q?br /> 而EOS则是建立在面向过E的基础上的Q徏立在不可试的基上的Q徏立在毫无cd基础上的Q全是StringQ?br /> 然而EOS也有很多的优点(据小弟不完全发现Q:
1QEOS固化的开发流E强制一个team从一U易于维护的l构l织WebQ包括页面,表示层,逻辑层等{。否则的话就需要一个架构师来做U,但仍不易于管理;
2QEOS的画囑֊能让目一斎ͼ?#8220;代码x?#8221;的哲学出发,q些d很好地诠释了代码表述的内容和l构Q给E序的维护带来便利?br /> 3Q相对于OO和J2EE传统开发,EOS易于上手Q学习曲U较短。但是这一Ҏ争议QEOS的知识不具备通用性?br /> lgQ根?-8的关pL则,在某些领域EOS的确有其优点Q但是认为EOS完全“解放”了程序员Q则是不负责ȝ说法?br /> q只是我的个人看法,Ƣ迎大家此话题讨论?

杨一 2008-09-04 15:41 发表评论
]]>
myeclipsehttp://m.tkk7.com/yangyi/archive/2007/12/28/171124.html杨一杨一Fri, 28 Dec 2007 03:39:00 GMThttp://m.tkk7.com/yangyi/archive/2007/12/28/171124.htmlhttp://m.tkk7.com/yangyi/comments/171124.htmlhttp://m.tkk7.com/yangyi/archive/2007/12/28/171124.html#Feedback0http://m.tkk7.com/yangyi/comments/commentRss/171124.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/171124.html微Y和我?span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry">是原始的猎h与猎物之间的关系Q虎与I的关p,最l极的占有。我们这才生是MS的hQ死是MS的鬼?img src ="http://m.tkk7.com/yangyi/aggbug/171124.html" width = "1" height = "1" />

杨一 2007-12-28 11:39 发表评论
]]>
Are you a coder or a programmer?http://m.tkk7.com/yangyi/archive/2007/06/13/123937.html杨一杨一Wed, 13 Jun 2007 11:47:00 GMThttp://m.tkk7.com/yangyi/archive/2007/06/13/123937.htmlhttp://m.tkk7.com/yangyi/comments/123937.htmlhttp://m.tkk7.com/yangyi/archive/2007/06/13/123937.html#Feedback1http://m.tkk7.com/yangyi/comments/commentRss/123937.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/123937.htmlAre you trying to build software that is composed by software components provided by large companies, and still name it a system?
Are you doing the job anybody can do if given enough time to read the technical handbooks and rebuild the system or you have created something?
If you are in the same situation, you are probably a coder instead of a programmer.



杨一 2007-06-13 19:47 发表评论
]]>
My Attitude Toward Linux Shellhttp://m.tkk7.com/yangyi/archive/2007/05/31/121266.html杨一杨一Thu, 31 May 2007 15:08:00 GMThttp://m.tkk7.com/yangyi/archive/2007/05/31/121266.htmlhttp://m.tkk7.com/yangyi/comments/121266.htmlhttp://m.tkk7.com/yangyi/archive/2007/05/31/121266.html#Feedback0http://m.tkk7.com/yangyi/comments/commentRss/121266.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/121266.html

I must be an extremely patient user of Linux, for I have been trying to install all versions of Linux distributions lately, and getting used to the shell commands.

I also read some books on the subject. To be honest, it is true that the command lines are more efficient, and this can be verified by the following calculation:

Suppose a mouse have 3 keys, and the keyboard ten times more. The three key mouse can generate actions 3^2 when clicked 2 times, while the keyborad 30^2. Come on, no matter we clicked the keyboard or the mouse, we just clicked 2 times.



杨一 2007-05-31 23:08 发表评论
]]>
学习Linux有感http://m.tkk7.com/yangyi/archive/2006/11/06/79330.html杨一杨一Mon, 06 Nov 2006 02:20:00 GMThttp://m.tkk7.com/yangyi/archive/2006/11/06/79330.htmlhttp://m.tkk7.com/yangyi/comments/79330.htmlhttp://m.tkk7.com/yangyi/archive/2006/11/06/79330.html#Feedback3http://m.tkk7.com/yangyi/comments/commentRss/79330.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/79330.html 记得很久以前Q曾l看q一帖子说Q?#8220;完全使用 Linux Q脱?/span> Windows ”Q在最q的一个月旉里,我尝试了q种做法。结我不得不_ Linux 如果作ؓ桌面来用的话,q远q没有到辑֮用的E度?/span>

作ؓ开发环境和服务器倒是非常不错的,因此我把 Linux 配置成了一个开发工P而用 Windows 来娱乐?/span>

vi nano emacs anjuta eclipse都是非常好的~辑开发工兗?br />



杨一 2006-11-06 10:20 发表评论
]]>
~程?个原?http://m.tkk7.com/yangyi/archive/2006/10/13/75058.html杨一杨一Fri, 13 Oct 2006 14:03:00 GMThttp://m.tkk7.com/yangyi/archive/2006/10/13/75058.htmlhttp://m.tkk7.com/yangyi/comments/75058.htmlhttp://m.tkk7.com/yangyi/archive/2006/10/13/75058.html#Feedback2http://m.tkk7.com/yangyi/comments/commentRss/75058.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/75058.html
原作|址Qhttp://www.theserverside.com/news/thread.tss?thread_id=42598


Empathy Box在blog中介l了~程应该注意?个问题,q篇文章实际表述了编E时应引h意的很重要的6个思想  阅读全文

杨一 2006-10-13 22:03 发表评论
]]>
开源Y件优于商业Y件吗Q?/title><link>http://m.tkk7.com/yangyi/archive/2006/09/16/70058.html</link><dc:creator>杨一</dc:creator><author>杨一</author><pubDate>Sat, 16 Sep 2006 10:07:00 GMT</pubDate><guid>http://m.tkk7.com/yangyi/archive/2006/09/16/70058.html</guid><wfw:comment>http://m.tkk7.com/yangyi/comments/70058.html</wfw:comment><comments>http://m.tkk7.com/yangyi/archive/2006/09/16/70058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/yangyi/comments/commentRss/70058.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/yangyi/services/trackbacks/70058.html</trackback:ping><description><![CDATA[     摘要: 本文是TheServerSide首页的文章,本文是译文,本文Z一个调查,l合关于开源Y件质量的文章Q发表了作者关于开源Y件质量的一些看?nbsp; <a href='http://m.tkk7.com/yangyi/archive/2006/09/16/70058.html'>阅读全文</a><img src ="http://m.tkk7.com/yangyi/aggbug/70058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/yangyi/" target="_blank">杨一</a> 2006-09-16 18:07 <a href="http://m.tkk7.com/yangyi/archive/2006/09/16/70058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于SOA与Web Services的疑?/title><link>http://m.tkk7.com/yangyi/archive/2006/08/18/64414.html</link><dc:creator>杨一</dc:creator><author>杨一</author><pubDate>Fri, 18 Aug 2006 09:51:00 GMT</pubDate><guid>http://m.tkk7.com/yangyi/archive/2006/08/18/64414.html</guid><wfw:comment>http://m.tkk7.com/yangyi/comments/64414.html</wfw:comment><comments>http://m.tkk7.com/yangyi/archive/2006/08/18/64414.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/yangyi/comments/commentRss/64414.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/yangyi/services/trackbacks/64414.html</trackback:ping><description><![CDATA[    今天忽然惛_一个问题,QPb QIrvice未来的发展势是什么?Z么近两年听到的声韌来越了Q?记得Q4q的时候,WSq是比较火的Q不仅在译֠上学习,q做q一些java和.net的应用Q以后就不怎么用了Q也许是分布式理论受C挑战?QRod果然站在时代的前沿)?br />     许多Q现在最火的SOA里面用到的技术就是Deb QIrvice,可是QIQ是个概念而已Q大厂商d的东西不一定经得v推敲的,正如QP一栗?br /> <br /> |上一介lSOA的文章如是说Q?br /> <br /> <font size="2">面向服务架构QSOAQ的原则 <br /> <br /> Web service已经不再是新婚的娘子。众多企业都已经创徏各种实验性Web Services 目Q事实证明,q项新兴的分布式计算技术确实能够降低集成和开发的成本。另外,一些关键的Web Services标准UL制定Q强安全Qrobust securityQ和理斚w的品也陆箋问世。对于志向远大的企业来说Q他们已l在考虑下一步了?br /> <br /> 对大多数公司来说Q下一步要考虑的不再是点对点的应用Q而是Web services在企业间以及业务伙伴间更为宽q的应用。这U技术的变迁需要更松散耦合、面向基于标准的服务的架构。这样一个架构要求对IT在组l中的角色有新的观点和认识,而不仅仅是一U实现方法。通过对业务的敏捷反应Q企业可以得到实实在在的回报Q而要辑ֈq一点,面向服务架构设计师的角色非常关键。除此之外,潜在的回报更是不可胜敎ͼ分布计算技术能够保证对业务需求够灵zȝ反应Q而这U业务上的敏h是各公司梦寐以求而目前还遥不可及的?br /> <br /> 分布式计将|络上分布的软g资源看作是各U服务。面向服务架构是一U不错的解决Ҏ。但q种架构不是什么新思想QCORBA和DCOM很cMQ但是,q些q去的面向服务架构都受到一些难题的困扰Q首先,它们是紧密耦合的,q就意味着如分布计连接的两端都必遵循同样API的约束。打比方_如果一个COM对象的代码有了更改,那么讉K该对象的代码也必M出相应更攏V其二,q些面向服务架构受到厂商的约束。Microsoft控制DCOM自不必说QCORBA也只是一个伪装的标准化努力,事实上,实现一个CORBA架构Q经帔R是在某个厂商对规范的实现上进行工作?br /> <br /> Web services是在改进DCOM和CORBA~点上的努力。今天应用Web services的面向服务架构与q去不同的特点就在于它们是基于标准以及松散耦合的。广泛接受的标准Q如XML和SOAPQ提供了在各不同厂商解决Ҏ之间的交互性。而松散耦合分布计中的参与者隔d来,交互两边某一方的改动q不会媄响到另一斏V这两者的l合意味着公司可以实现某些Web services而不用对使用q些Web services的客L的知识有M了解。我们将q种Z标准的、松散耦合的面向服务的架构UCؓSOA?a></a></font><br />  <br />     q和当年的宣传WSq没有什么不同,仅仅多了个SQA而已Q?试问今天的架构师Q哪位应用了QPQ哪位涉及了QIQ? 有多成功的案例Q哪位知道这Ҏ术在国的发展情况,有很q泛的应用吗Q还是仅限于QIQ?<br />     真正目中需要SOA思想的那U跨国胦团有几个Q对于在国内最多的中小型应用,暴露服务倒是极危险的事情。不q作为程序员Q学习新技术,新概念实属无奈之?。有些不必要的复杂性干Ch的思维Q让你无法干净利落地做事?br /> <br /> <img src ="http://m.tkk7.com/yangyi/aggbug/64414.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/yangyi/" target="_blank">杨一</a> 2006-08-18 17:51 <a href="http://m.tkk7.com/yangyi/archive/2006/08/18/64414.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于敏捷开发的疑问http://m.tkk7.com/yangyi/archive/2006/08/17/64091.html杨一杨一Thu, 17 Aug 2006 04:43:00 GMThttp://m.tkk7.com/yangyi/archive/2006/08/17/64091.htmlhttp://m.tkk7.com/yangyi/comments/64091.htmlhttp://m.tkk7.com/yangyi/archive/2006/08/17/64091.html#Feedback0http://m.tkk7.com/yangyi/comments/commentRss/64091.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/64091.html q里最大的问题是:XP代码卌计,那就要求每个人都对代码的~写非常熟练Q对团队中每个成员的~程水^要求很高Q然而这和相对较的目l费Q及短暂的项目周期难以协调?br /> 更ؓ可怕的是,目中的人员职责不明Q没有明的负责人,而由没有软g开发和理l验的hd?br />

杨一 2006-08-17 12:43 发表评论
]]>
Google建立与sourceforge, java.netҎ的开源资源库http://m.tkk7.com/yangyi/archive/2006/08/03/61513.html杨一杨一Thu, 03 Aug 2006 07:05:00 GMThttp://m.tkk7.com/yangyi/archive/2006/08/03/61513.htmlhttp://m.tkk7.com/yangyi/comments/61513.htmlhttp://m.tkk7.com/yangyi/archive/2006/08/03/61513.html#Feedback1http://m.tkk7.com/yangyi/comments/commentRss/61513.htmlhttp://m.tkk7.com/yangyi/services/trackbacks/61513.html
Google在FAQ上说? Google意识到对开源项目开发者而言Q有多种的选择未尝不是一件好事?q个开源资源库软g资源的储?邮g列表讨论和bugq踪.

需要说明的是google资源寚w择了具备一定的合适许可证的知名项目(比如sourceforge上的目来提供下载)。站炚w用SVNq行理?br />
您对google的新丑֊有何高见呢?

杨一 2006-08-03 15:05 发表评论
]]>
վ֩ģ壺 AVվ߹ۿ| ѹۿһëƬa| ŷ޾Ʒ| վѹۿ| ޳aƬ߹ۿʦ| 츾AV| ѸӰƬһ| AVרߵӰ| ɫtvվѿ| AVҹƬ| 91Ʒȫѹۿ߲ | ӰƵѹۿ| һ| ˬָ߳Ƶ| Ժ޺Ժ߹ۿ| AVһ| ѹۿhƬ| þþ뾫Ʒպý| 67194ֻѹۿ| ༤ۺ͵ͼ| վѹۿ| ޳a߹ۿ| þ99ȾƷѹۿ| Ƶһ߹ۿ| ڵƵվ| ҹӰԺþþƷѿһ | ëƬƵ| רëƬ߳ˮ | þ㽶߿| avƬþ| ѹ˸Ƶվ| ĻһƵ| ۺϼ| AVҹҹþ| ssswwwձվƬ| ޵ӰĻ| վ߹ۿ| һaëһaƵ| ޹˾Ʒ벥 | ߹ۿ| 99߹ۿƵ|