??xml version="1.0" encoding="utf-8" standalone="yes"?>
启动Q用都是比较方ѝ可以到http://www.danga.com/memcached/下各U客户api。下载的client有用test。一看就明白?br />呵呵Q真实好东西?br />
-----------------------
呵呵,发现plone中也用它做缓存了.
--------------------------
前几天用了一下,发现在win下面Ҏ出现占用cpu 100Q的情况,不知道什么原?有谁知道?没有别的什么操作,insert/get操作而已.
查找?......
奇怪,plone中ؓ什么不出现Q!Q!
]]>
q样的情况,怿每个做企业系l的开发h员都遇到q,一提vq样的问题,大家只有摆脑袋,喃喃到“简直就是恶梦,太难了?br />^_^Q希望不要勾起你痛苦的回忆)
其实出现q样的情况,大部分是应ؓ需求h员和开发h员对问题的思考模式不同导致的。在业务语言和业务规则向计算a和系l模型{换之间有一个的q程。这个过E必L一个衔接的人和模式来做qg事情?br /> q个角色需要精通业务概念和pȝ实现方式。然后运用分析模式方式把业务概念转换为系l模型概c需求h员理解业务L自觉不自觉的把一些他们认为是常识的思维放进去,但是q部分只是不会出现在需求文中。这需要分析h员不断的和他需求聊天,不但的询问挖掘出来。然后写入概要设计和详细涉及文档中?br />q有需求h员往往在写E序需要处理的逻辑的时候会不自觉的融入人类的思考模式,在其中加入一些智能判断,但是q部分逻辑往往用计机实现比较困难。这需要分析h员的z察能力Q找到客L真正需求,然后转换方式来实现?br />
例如Q有q样一个需求是分析业务数据的。表中有27列,其中aQbQcQdQeQgQpQqQyQz为判断过E中所涉及到的数据,各项之间的关pMؓQb列中的传输系l速决定z列中的最大时隙编受如2?Gpȝ对应的最大时隙编号ؓ16?Q保护)?0gpȝ对应的最大时隙编号ؓ64?2Q保护)?br /> D列ؓ与C列中站点盔R的前向站点,e列ؓ与c列中站点盔R的后向站炏V?br /> G列与p列或q列ؓQ-对应关系Q即唯一的一个端口对应当前传输系l的一个时隙?br /> p列和q列在一行中不同时出现。即同时只有前项旉或后Ҏ隙,两者不同时存在?br /> y列ؓ版本P1代表设计版,2代表工程版。当g列中相同的两个端口对应的z列不同的旉Ӟ以Y列ؓ2的ؓ准?br />
Q一下ؓ客户qx所用的人工分析方式Q?br />分析q程Q?br />1Q首先根据系l名UC??G可以判断出Z列的最大编号ؓ16?Q对z列进行观察后得出最大编号ؓ8。即存在8个时隙,~号分别?~8.
2) c列ؓ“杭环城北\”站点下所有z列的数据观察后可看出z列无5Q?两个旉Q于是初步判断时隙在该站点ؓIK?br />3Qc列ؓ“杭环城北\”所对应的D列前向站点ؓ“州网通”。在z列中查找所有c列ؓ“州网通”所对应的时隙,发现5Q?两个旉~号Q且pQq两列中仅q列有数据Q说明该旉为后向时隙。可得出5Q?两个旉的v始站点ؓ“州网通”。因该时隙对应的Y列均?Q?两个数|Ҏ“各w关系”,仅取Y列数gؓ2的数据ؓ有效数据?br />4Qc列ؓ“杭环城北\”所对应的e列后向站点ؓ“宁波网通”。在z列中查找所有c列ؓ“宁波网通”所对应的时隙,发现5Q?两个旉~号。且pQq两列仅p列有数据Q说明该旉为前向时隙,可得?Q?两个旉的终止站点ؓ“宁波网通”。因该时隙对应的Y列均?Q?两个数据Q根据各wq系,取Y列ؓ2的数据ؓ有效数据?br />l合判断1~4不的判断q程Q可以得出结论:~号?Q?的两个时隙以“州网通”ؓLQ途径“杭环城北\”以“宁波网通”ؓl点
可以看到q个分析q程很不利于计算
Q一下ؓ我的分析方式Q?br />
------推荐的方?br />
-------其他
(未完待箋........)
]]>
对应的规则文?br />
#created on: 2006-6-10
#created by: kebo
package com.sample
import com.sample.Person;
import com.sample.ShopCat;
import com.sample.Product;
import com.sample.Helper;
rule "PRICE_DISCOUT"
salience 2
no-loop true
when
p:Person(c:cat->(c.getTotalPrice()>1000),discout==1)
then
p.setDiscout(0.9);
modify(p);
end
rule "VIP"
salience 3
no-loop true
when
p:Person(type==Person.VIP,discout==1)
then
p.setDiscout(0.7);
modify(p);
end
rule "COMMON"
salience 3
no-loop true
when
p:Person(type==Person.COMMON,discout==1)
then
p.setDiscout(1);
modify(p);
end
rule "PLATINA"
salience 3
no-loop true
when
p:Person(type==Person.PLATINA,discout==1)
then
p.setDiscout(0.85);
modify(p);
end
rule "GOLD"
salience 3
no-loop true
when
p:Person(type==Person.GOLD,discout==1)
then
p.setDiscout(0.9);
modify(p);
end
rule "CONTAIN TV"
salience 1
no-loop true
when
p:Person(c:cat->(Helper.isContainType(c.getProducts(),Product.TV)))
then
p.setDiscout(0.95 * p.getDiscout());
modify(p);
end
解决rule的冲H还是比较麻烦的?/p>
Z么blogjava没有code着色功能呢Q代码脓上去一炚w不好看,唉!
其中循环中的每个元素用item表达.支持普通对?map,list,javabean,如同jstl
目前没有实现的功能嵌套语?不支持控制语句的嵌套(报表中应该不需要如此复杂的功能)和pdf?/p>
基本使用Ҏ?
1:把kebo-0.1.jar
commons-jexl-1.0.jar,
commons-logging.jar,
jxl.jar
log4j-1.2.9.jar攑օclasspath,配置好log4j.xml(也可不配|?
2:代码如下:
OutputStream writer = new FileOutputStream("Book2.xls");//生成的报表文?br /> InputStream is = new FileInputStream("Book1.xls");//报表模板文g
TemplateEngine engine = EngineFactory.createEngine("excel");//创徏excel报表引擎
engine.assertObject("modul",modul);//加入数据
Students s = new Students();
s.setName("东");
s.setAge("23");
engine.assertObject("student",s);
engine.assertObject("employee",modul.get("employee"));
engine.evaluate(is,writer);//执行转换,生成报表
如果各位同学在用当中有问题,请及时反馈给?谢谢.mail:huang.kebo@gmail.com
源码~译,导入到eclipse?直接ant目录下的build.xml卛_
http://www.tkk7.com/Files/kebo/ReportTemplateEngine.rar
|速慢的朋?留下mail.发给你们
字符 | 含义 |
---|---|
\cx | 匚w由x指明的控制字W。例如, \cM 匚w一?Control-M 或回车符。x 的值必Mؓ A-Z ?a-z 之一。否则,?c 视ؓ一个原义的 'c' 字符?/TD> |
\f | 匚w一个换늬。等价于 \x0c ?\cL?/TD> |
\n | 匚w一个换行符。等价于 \x0a ?\cJ?/TD> |
\r | 匚w一个回车符。等价于 \x0d ?\cM?/TD> |
\s | 匚wMI白字符Q包括空根{制表符、换늬{等。等价于 [ \f\n\r\t\v]?/TD> |
\S | 匚wM非空白字W。等价于 [^ \f\n\r\t\v]?/TD> |
\t | 匚w一个制表符。等价于 \x09 ?\cI?/TD> |
\v | 匚w一个垂直制表符。等价于 \x0b ?\cK?/TD> |
特别字符 | 说明 |
---|---|
$ | 匚w输入字符串的l尾位置。如果设|了 RegExp 对象?Multiline 属性,?$ 也匹?'\n' ?'\r'。要匚w $ 字符本nQ请使用 \$?/TD> |
( ) | 标记一个子表达式的开始和l束位置。子表达式可以获取供以后使用。要匚wq些字符Q请使用 \( ?\)?/TD> |
* | 匚w前面的子表达式零ơ或多次。要匚w * 字符Q请使用 \*?/TD> |
+ | 匚w前面的子表达式一ơ或多次。要匚w + 字符Q请使用 \+?/TD> |
. | 匚w除换行符 \n之外的Q何单字符。要匚w .Q请使用 \?/TD> |
[ | 标记一个中括号表达式的开始。要匚w [Q请使用 \[?/TD> |
? | 匚w前面的子表达式零ơ或一ơ,或指明一个非贪婪限定W。要匚w ? 字符Q请使用 \??/TD> |
\ | 下一个字W标Cؓ或特D字W、或原义字符、或向后引用、或八进制{义符。例如, 'n' 匚w字符 'n'?\n' 匚w换行W。序?'\\' 匚w "\"Q?'\(' 则匹?"("?/TD> |
^ | 匚w输入字符串的开始位|,除非在方括号表达式中使用Q此时它表示不接受该字符集合。要匚w ^ 字符本nQ请使用 \^?/TD> |
{ | 标记限定W表辑ּ的开始。要匚w {Q请使用 \{?/TD> |
| | 指明两项之间的一个选择。要匚w |Q请使用 \|?/TD> |
字符 | 描述 |
---|---|
* | 匚w前面的子表达式零ơ或多次。例如,zo* 能匹?"z" 以及 "zoo"? {h于{0,}?/TD> |
+ | 匚w前面的子表达式一ơ或多次。例如,'zo+' 能匹?"zo" 以及 "zoo"Q但不能匚w "z"? {h?{1,}?/TD> |
? | 匚w前面的子表达式零ơ或一ơ。例如,"do(es)?" 可以匚w "do" ?"does" 中的"do" ? {h?{0,1}?/TD> |
{n} | n 是一个非负整数。匹配确定的 n ơ。例如,'o{2}' 不能匚w "Bob" 中的 'o'Q但是能匚w "food" 中的两个 o?/TD> |
{n,} | n 是一个非负整数。至匹配n ơ。例如,'o{2,}' 不能匚w "Bob" 中的 'o'Q但能匹?"foooood" 中的所?o?o{1,}' {h?'o+'?o{0,}' 则等价于 'o*'?/TD> |
{n,m} | m ?n 均ؓ非负整数Q其中n <= m。最匹?n ơ且最多匹?m ơ。例如,"o{1,3}" 匹?"fooooood" 中的前三?o?o{0,1}' {h?'o?'。请注意在逗号和两个数之间不能有空根{?/TD> |
操作W? | 描述 |
---|---|
\ | 转义W?/TD> |
(), (?:), (?=), [] | 圆括号和Ҏ?/TD> |
*, +, ?, {n}, {n,}, {n,m} | 限定W?/TD> |
^, $, \anymetacharacter | 位置和顺?/TD> |
| | “或”操?/TD> |
字符 | 描述 |
---|---|
\ | 下一个字W标Cؓ一个特D字W、或一个原义字W、或一?向后引用、或一个八q制转义W。例如,'n' 匚w字符 "n"?\n' 匚w一个换行符。序?'\\' 匚w "\" ?"\(" 则匹?"("?/TD> |
^ | 匚w输入字符串的开始位|。如果设|了 RegExp 对象?Multiline 属性,^ 也匹?'\n' ?'\r' 之后的位|?/TD> |
$ | 匚w输入字符串的l束位置。如果设|了RegExp 对象?Multiline 属性,$ 也匹?'\n' ?'\r' 之前的位|?/TD> |
* | 匚w前面的子表达式零ơ或多次。例如,zo* 能匹?"z" 以及 "zoo"? {h于{0,}?/TD> |
+ | 匚w前面的子表达式一ơ或多次。例如,'zo+' 能匹?"zo" 以及 "zoo"Q但不能匚w "z"? {h?{1,}?/TD> |
? | 匚w前面的子表达式零ơ或一ơ。例如,"do(es)?" 可以匚w "do" ?"does" 中的"do" ? {h?{0,1}?/TD> |
{n} | n 是一个非负整数。匹配确定的 n ơ。例如,'o{2}' 不能匚w "Bob" 中的 'o'Q但是能匚w "food" 中的两个 o?/TD> |
{n,} | n 是一个非负整数。至匹配n ơ。例如,'o{2,}' 不能匚w "Bob" 中的 'o'Q但能匹?"foooood" 中的所?o?o{1,}' {h?'o+'?o{0,}' 则等价于 'o*'?/TD> |
{n,m} | m ?n 均ؓ非负整数Q其中n <= m。最匹?n ơ且最多匹?m ơ。例如,"o{1,3}" 匹?"fooooood" 中的前三?o?o{0,1}' {h?'o?'。请注意在逗号和两个数之间不能有空根{?/TD> |
? | 当该字符紧跟在Q何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面Ӟ匚w模式是非贪婪的。非贪婪模式可能少的匹配所搜烦的字W串Q而默认的贪婪模式则尽可能多的匚w所搜烦的字W串。例如,对于字符?"oooo"Q?o+?' 匹配单?"o"Q?'o+' 匹配所?'o'?/TD> |
. | 匚w?"\n" 之外的Q何单个字W。要匚w包括 '\n' 在内的Q何字W,请用象 '[.\n]' 的模式?/TD> |
(pattern) | 匚w pattern q获取这一匚w。所获取的匹配可以从产生?Matches 集合得到Q在VBScript 中?SubMatches 集合Q在JScript 中则使用 $0?9 属性。要匚w圆括号字W,请?'\(' ?'\)'?/TD> |
(?:pattern) | 匚w pattern 但不获取匚wl果Q也是说这是一个非获取匚wQ不q行存储供以后用。这在?"? 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 是一个比 'industry|industries' 更简略的表达式?/TD> |
(?=pattern) | 正向预查Q在M匚w pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹?"Windows 2000" 中的 "Windows" Q但不能匚w "Windows 3.1" 中的 "Windows"。预查不消耗字W,也就是说Q在一个匹配发生后Q在最后一ơ匹配之后立卛_始下一ơ匹配的搜烦Q而不是从包含预查的字W之后开始?/TD> |
(?!pattern) | 负向预查Q在M不匹?pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_该匹配不需要获取供以后使用。例?Windows (?!95|98|NT|2000)' 能匹?"Windows 3.1" 中的 "Windows"Q但不能匚w "Windows 2000" 中的 "Windows"。预查不消耗字W,也就是说Q在一个匹配发生后Q在最后一ơ匹配之后立卛_始下一ơ匹配的搜烦Q而不是从包含预查的字W之后开?/TD> |
x|y | 匚w x ?y。例如,'z|food' 能匹?"z" ?"food"?(z|f)ood' 则匹?"zood" ?"food"?/TD> |
[xyz] | 字符集合。匹配所包含的Q意一个字W。例如, '[abc]' 可以匚w "plain" 中的 'a'?/TD> |
[^xyz] | 负值字W集合。匹配未包含的Q意字W。例如, '[^abc]' 可以匚w "plain" 中的'p'?/TD> |
[a-z] | 字符范围。匹配指定范围内的Q意字W。例如,'[a-z]' 可以匚w 'a' ?'z' 范围内的L写字母字符?/TD> |
[^a-z] | 负值字W范围。匹配Q何不在指定范围内的Q意字W。例如,'[^a-z]' 可以匚wM不在 'a' ?'z' 范围内的L字符?/TD> |
\b | 匚w一个单词边界,也就是指单词和空格间的位|。例如, 'er\b' 可以匚w"never" 中的 'er'Q但不能匚w "verb" 中的 'er'?/TD> |
\B | 匚w非单词边界?er\B' 能匹?"verb" 中的 'er'Q但不能匚w "never" 中的 'er'?/TD> |
\cx | 匚w?x 指明的控制字W。例如, \cM 匚w一?Control-M 或回车符。x 的值必Mؓ A-Z ?a-z 之一。否则,?c 视ؓ一个原义的 'c' 字符?/TD> |
\d | 匚w一个数字字W。等价于 [0-9]?/TD> |
\D | 匚w一个非数字字符。等价于 [^0-9]?/TD> |
\f | 匚w一个换늬。等价于 \x0c ?\cL?/TD> |
\n | 匚w一个换行符。等价于 \x0a ?\cJ?/TD> |
\r | 匚w一个回车符。等价于 \x0d ?\cM?/TD> |
\s | 匚wMI白字符Q包括空根{制表符、换늬{等。等价于 [ \f\n\r\t\v]?/TD> |
\S | 匚wM非空白字W。等价于 [^ \f\n\r\t\v]?/TD> |
\t | 匚w一个制表符。等价于 \x09 ?\cI?/TD> |
\v | 匚w一个垂直制表符。等价于 \x0b ?\cK?/TD> |
\w | 匚w包括下划U的M单词字符。等价于'[A-Za-z0-9_]'?/TD> |
\W | 匚wM非单词字W。等价于 '[^A-Za-z0-9_]'?/TD> |
\xn | 匚w nQ其?n 为十六进制{义倹{十六进制{义值必Mؓ定的两个数字长。例如,'\x41' 匚w "A"?\x041' 则等价于 '\x04' & "1"。正则表辑ּ中可以?ASCII ~码? |
\num | 匚w numQ其?num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匚w两个q箋的相同字W?/TD> |
\n | 标识一个八q制转义值或一个向后引用。如?\n 之前臛_ n 个获取的子表辑ּQ则 n 为向后引用。否则,如果 n 为八q制数字 (0-7)Q则 n Z个八q制转义倹{?/TD> |
\nm | 标识一个八q制转义值或一个向后引用。如?\nm 之前臛_?nm 个获得子表达式,?nm 为向后引用。如?\nm 之前臛_?n 个获取,?n Z个后跟文?m 的向后引用。如果前面的条g都不满Q若 n ?m 均ؓ八进制数?(0-7)Q则 \nm 匹配八q制转义?nm?/TD> |
\nml | 如果 n 为八q制数字 (0-3)Q且 m ?l 均ؓ八进制数?(0-7)Q则匚w八进制{义?nml?/TD> |
\un | 匚w nQ其?n 是一个用四个十六q制数字表示?Unicode 字符。例如, \u00A9 匚w版权W号 (?)?/TD> |
正则表达?/TH> | 说明 |
---|---|
/\b([a-z]+) \1\b/gi | 一个单词连l出现的位置 |
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ | 一个URL解析为协议、域、端口及相对路径 |
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/ | 定位章节的位|?/TD> |
/[-a-z]/ | A至z?6个字母再加一?受?/TD> |
/ter\b/ | 可匹配chapterQ而不能terminal |
/\Bapt/ | 可匹配chapterQ而不能aptitude |
/Windows(?=95 |98 |NT )/ | 可匹配Windows95或Windows98或WindowsNT,当找C个匹配后Q从Windows后面开始进行下一ơ的索匹配?/TD> |