最近公司组织了一系列产品经理的培训,为了更好地消化,吸收,决定在此整理所学,记录自己的点滴,供来者参考。
posted @ 2011-12-06 21:24 Perk-Jiang 阅读(4) 评论(0) 编辑
        public void ToExcel(System.Web.UI.Control ctl, string FileName)
        
{
            HttpContext.Current.Response.Charset 
= "UTF-8";
            HttpContext.Current.Response.ContentEncoding 
= System.Text.Encoding.Default;
            HttpContext.Current.Response.ContentType 
= "application/ms-excel";
            HttpContext.Current.Response.AppendHeader(
"Content-Disposition""attachment;filename=" + "" + FileName + ".xls");
            ctl.Page.EnableViewState 
= false;
            System.IO.StringWriter tw 
= new System.IO.StringWriter();
            HtmlTextWriter hw 
= new HtmlTextWriter(tw);
            ctl.RenderControl(hw);
            HttpContext.Current.Response.Write(tw.ToString());
            HttpContext.Current.Response.End();
        }

        
public override void VerifyRenderingInServerForm(Control control)
        
{
            
//base.VerifyRenderingInServerForm(control);
        }

        
protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        
{
            
if (e.Row.RowType == DataControlRowType.DataRow)
            
{
                
//e.Row.Cells[0].Attributes.Add("style", "vnd.ms-excel.numberformat:@");//这里是将要导出到execl里的第一列格式化为字符类型。
                
//e.Row.Cells[3].Attributes.Add("style", "vnd.ms-excel.numberformat:¥#,###.00");//这里是格式化为货币类型。
                e.Row.Cells[4].Attributes.Add("style""vnd.ms-excel.numberformat:@");
                
//1) 文本:vnd.ms-excel.numberformat:@
                
//2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
                
//3) 数字:vnd.ms-excel.numberformat:#,##0.00
                
//4) 货币:vnd.ms-excel.numberformat:¥#,##0.00
                
//5) 百分比:vnd.ms-excel.numberformat: #0.00%
            }

        }
posted @ 2010-11-08 11:02 Perk-Jiang 阅读(123) 评论(0) 编辑

【注释】
兮:语助记号, 相当今口语中的"啊"。加:凌驾。海内。即国内。古人认为中国大陆四周都是海,故此常称国内为海内。故乡:指汉高祖的故乡沛县(今江苏沛县)。安:表示愿望。如何能,怎样才能。猛士:勇士。

【鉴赏】
    公元前195年,刘邦率兵击破淮南王英布的叛军。西归途径故乡沛县,与父老乡亲宴饮,席间唱出了这首《大风歌》。
    首句气象不凡, 风起云涌, 既是自然景观的客观描述, 又暗喻当时的时代风云, 这句为全篇抒发豪情壮志交待了背景。"威加海内兮归故乡"是说刘邦自己平息叛乱后荣归故里,"威加海内"掩饰不住的是一派得意之情。最后一句却表达了一种深沉的忧虑和激切的希望:大计初定,急需有志有识、有勇有谋之士效忠刘氏王朝、安定四方。全诗气势恢宏、豪迈雄壮,极富帝王气派。
    这是一种楚辞体式的诗歌,节奏明晰有致,音律铿锵,适于歌唱。这正与刘邦做为一个帝王的身份暗合,也与酒酣之际脱口而出的情景相应。历史上的刘邦起兵抗秦,建立西汉,势及四方,这首歌正抒发了他作为一个帝王的雄图伟略和不可一世的英雄气慨。 刘邦作诗不多, 这一首由于凝聚了对故土的热爱和图谋霸业的壮志,气吞山河,因而具有历传千世而不移的魅力。

      刘邦此诗气象宏大,雄奇壮美之势如江河横溢,读来令人荡气回肠。朱熹在《楚辞后语》中赞道:“千载以来,人主之词,亦未有若是壮丽而奇伟者也。呜呼雄哉!”这种壮美具体表现在:
   (一)气势恢宏的魄力美
   整首诗把沧海变桑田、风云激荡的历史演变过程蕴藏在大开大合的意象营造中。“大风”横扫一切,象征了摧枯拉朽历史变迁之力;“飞扬”的“云”衬托出大风的强劲,大有“狂飙为我从天降”之势。“大风”推动了“云”,由云的流动联想到人世的沧桑巨变,仿佛整个世界都被风云所推动。作为主体的诗人刘邦改写了历史,推动了世界的进程,好象整个的世界都在他的掌握之中,一股意气风发的豪迈之气油然而生:这巨变的风云又能奈我何哉?他从风云的奇诡变化中看到了自己的从容镇定,感到了自己的尊严和成就,获得了一种惊心动魄、震撼人心的美感。
    (二)建功立业的成就美
    古人把金榜题名做为自己人生价值的取向和建功立业的标准。而诗人刘邦则完成了中国的统一大业,达到了建功立业的最高峰,确证了人生的最高价值——树立了赫赫帝王之威。于是诗人自然而然吟出了“威加海内兮归故乡”的神来之句。这里的“威”含义丰富:有经过艰苦卓绝的征战取得胜利使征服欲得以满足的自豪感,有终成统一大业之后人生价值得以展示的成功感,有登上帝位之后“天下舍我其谁”的踌躇满志感,有衣锦还乡向乡邻炫耀的自我荣耀感。令世人瞩目的功绩体现出一种催人奋发向上、“男儿当自强”以建功立业的成就美。
     (三)求贤若渴的胸襟美
   “安得猛士兮守四方”句中的“猛士”是富有阳光之气的壮美,是智慧与力量的象征。他不仅仅指在沙场上冲锋陷阵的豪杰猛将,也包括了在和平年代治国安邦的良臣贤士。“打江山易,守江山难”,请贤臣求良将保家卫国是刘邦的迫切所需。但做为一代雄主若没有“海纳百川,有容乃大”的博大胸襟,又岂能让“天下英雄入我彀中”?因此,“安得猛士兮守四方”是刘邦求贤若渴的博大胸襟美的体现
总之,刘邦的《大风歌》来自天成,毫无雕琢之感,充分体现了审美主体、审美客体、审美实践诸要素的紧密融合,把刘邦作为一代雄主的非凡卓绝的人的本质力量表达得淋漓尽致。

刘邦在战胜项羽后,成了汉朝的开国皇帝。这当然使他兴奋、欢乐、踌躇满志,但在内心深处却隐藏着深刻的恐惧和悲哀。这首《大风歌》就生动地显示出他的矛盾的心情。

    他的得以战胜项羽,是依*许多支部队的协同作战。这些部队,有的是他的盟军,本无统属关系;有的虽然原是他的部属,但由于在战争中实力迅速增强,已成尾大不掉之势。项羽失败后,如果这些部队联合起来反对他,他是无法应付的。因此,在登上帝位的同时,他不得不把几支主要部队的首领封为王,让他们各自统治一片相当大的地区;然后再以各个击破的策略把他们陆续消灭。在这过程中, 不免遇到顽强的抵抗。公元前一九六年,淮南王英布起兵反汉;由于抢英勇善战,军势甚盛,刘邦不得不亲自出征。他很快击败了英布,最后并由其部将把英布杀死。在得胜还军途中,刘邦顺路回了一次自己的故乡-沛县(今属江苏省),把昔日的朋友、尊长、晚辈都召来,共同欢饮十数日。一天酒酣,刘邦一面击筑,一面唱着这一首自己即兴创作的《大风歌》;而且还慷慨起舞,伤怀泣下(见《汉书·高帝纪》)。

    假如说项羽的《垓下歌》表现了失败者的悲哀,那么《大风歌》就显示了胜利者的悲哀。而作为这两种悲哀的纽带的,则是对于人的渺小的感伤对第一句“大风起兮云飞扬”,唐代的李善曾解释说:“风起云飞,以喻群雄竞逐,而天下乱也。”(见汲古阁本李善注《文选》卷二十八)这是对的。“群雄竞逐而天下乱”,显然是指秦末群雄纷起、争夺天下的情状。“群雄竞逐”的“雄”,《文选》的有些本子作“凶”。倘原文如此,则当指汉初英布等人的反乱。但一则这些反乱乃是陆续发动的,并非同时并起,不应说“群凶竞逐”;再则那都是局部地区的反乱,并未蔓延到全国,不应说“天下乱”。故当以作“雄”为是。下句的“威加海内兮归故乡”,则是说自己在这样的形势下夺得了帝位,因而能够衣锦荣归。所以,在这两句中,刘邦无异坦率承认:他之得以“威加海内”,首先有赖于“大风起兮云飞扬”的局面。但是,正如风云并非人力所能支配,这种局面也不是刘邦所造成的,他只不过运道好,碰上了这种局面而已。从这一点来说,他之得以登上帝位,实属偶然。尽管他的同时代人在这方面都具有跟他同样的幸运,而他之缍获得成功乃是*了他的努力与才智;但对于刘邦这样出身于『底屋的人来说,若不是碰上如此的时代,他的努力与才智又有多少用处呢?所以,无论怎么说,他之得以当皇帝,首先是*机运,其次才是自己的努力与才智。他以当进的人对之根本无能为力的自然界的风云变化,来比喻把他推上皇帝宝座的客观条件,至少是不自觉地显示了他的某种心理活动的吧!

    姑不论刘邦把他的这种机运看作是上天的安排抑或是一种纯粹的偶然性,但那都不是他自己所能决定的。换言之,最大限度地发挥自己的才智;但这一切到底有多大效果,还得看机运。作为皇帝,要保住天下,必须有猛士为他守卫四方,但世上有没有这样的猛士?如果有,他能否找到他们并使之为自己服务?这就并非完全取决于他自己了。所以,第三句的“安得猛士兮守四方”,既是希冀,又是疑问。他是希望做到这一点的‘但真的做得到吗?他自己却无从回答。可以说,他对于是否找得到捍卫四方的猛士,也即自己的天下是否守得住,不但毫无把握,而且深感忧虑和不安。也正因此,这首歌的前二句虽显得踌躇满志,第三句却突然透露出前途未卜的焦灼和恐惧。假如说,作为失败者的项羽曾经悲慨于人定无法胜天,那么,在胜利者刘邦的这首歌中也响彻着类似的悲音,这就难怪他在配合着歌唱而舞蹈时,要“慷慨伤怀,泣数行下”(《汉书·高帝纪》)了。

posted @ 2009-12-16 10:24 Perk-Jiang 阅读(383) 评论(0) 编辑

好工作是适合自己的工作。

好的人生需要不懈的努力。

起步的高低,不会影响到人的一生。

给自己一个承诺。

 

posted @ 2009-04-07 12:22 Perk-Jiang 阅读(25) 评论(0) 编辑

 

通过嵌入公钥并使用私钥签名,可以生成强名称(strong name)的程序集。强名称程序集由4部分进行标识:名称、版本、区域性和公钥。与之相对的,我们可以把没有嵌入公钥和使用私钥签名的程序集称之为弱名称(weak name)程序集(这个术语是Jffery Richter创造的)。强名称程序集与弱名称程序集相比,有以下特点:

  • 强名称程序集可以保证唯一性。公/私密钥对是由发行者自行生成的,是唯一的,保证了程序集的标识不会重复。
  • 强名称程序集可以防篡改。强类型程序集使用私钥对自己进行了签名,这样在被加载时可以检查程序集是否被修改。
  • 强名称程序集可以实施版本策略。对于弱名称程序集,引用它的程序不会关心它的版本,而对于强类型的程序集来说,引用它的程序会被绑定到特定版本的程序集上,如果使用新版本的强名称程序集替换旧版本,会导致程序无法运行。(当然还可以使用配置文件对强名称程序集进行重定向)。
  • 强名称程序集可以部署到GAC中。GAC指全局程序集缓存,这是一个公共目录,放在此处的程序集可以被本机任意一个程序所引用。弱名称程序集无法部署到此处。不同版本的相同程序集还可以同时存在于GAC中。
  • 强名称程序集只能引用强名称程序集。弱名称程序集可以引用强名称程序集,也可以引用弱名称程序集,但强名称程序集只能引用强名称程序集。
  • 强名称程序集支持并行执行。并行(side-by-side)执行是指程序同时引用了多个版本的同名程序集,这样在运行时,会有多个版本的同名程序集被加载和同时执行。通常不建议使用。

下面来研究一下如何生成强名称的程序集。首先,使用SN.exe创建一个密钥文件:

sn.exe -k MyKey.snk

生成的文件包含了公钥和私钥的内容。我们可以查看公钥的内容,私钥是不允许查看的,所以要先将公钥提取出来。仍然是使用SN.exe:

sn -p MyKey.snk MyPublicKey.snk

sn -tp MyPublicKey.snk

前一个命令将密钥文件中的公钥提取出来,放到 MyPublicKey.snk 文件中;后一个命令用于显示该文件中的公钥和公钥标记(Public key token),显示的内容可能如下(每个人生成的都不同):

Microsoft (R) .NET Framework Strong Name Utility  Version 3.5.21022.8
Copyright (c) Microsoft Corporation.  All rights reserved.

Public key is
0024000004800000940000000602000000240000525341310004000001000100757c8b7854ffcb
4763250746c094e45db0c715214415fb01bd178f3374224c1292dbbc9dddfb6af7de1766888464
1a39fbea9d0bee001c093b228400aa39c0db5724fc11c221bd2c7442a30ef26c076b1bb0f559ce
7955572b4174125494a593c199d968019323483e72d5bdb93d96af14ccfeb0c5d4af6ea191d226
e6812db5

Public key token is 337642649f453c2c

公钥标记是公钥的64位散列值,用于简化对公钥的引用。

第二步是创建强名称程序集。我们可以在源文件中使用AssemblyKeyFileAttribute,但在编译时会产生警告,建议使用命令行选项来代替此特性。所以此处使用csc.exe:

csc /t:library /keyfile:MyKey.snk MyType.cs

运行后得到 MyType.dll ,我们可以显示其中包含的公钥标记,看是否和上面的相同:

sn -Tp MyType.dll

显示内容如下:

Microsoft (R) .NET Framework Strong Name Utility  Version 3.5.21022.8
Copyright (c) Microsoft Corporation.  All rights reserved.

Public key is
0024000004800000940000000602000000240000525341310004000001000100757c8b7854ffcb
4763250746c094e45db0c715214415fb01bd178f3374224c1292dbbc9dddfb6af7de1766888464
1a39fbea9d0bee001c093b228400aa39c0db5724fc11c221bd2c7442a30ef26c076b1bb0f559ce
7955572b4174125494a593c199d968019323483e72d5bdb93d96af14ccfeb0c5d4af6ea191d226
e6812db5

Public key token is 337642649f453c2c

由此可见,公钥的内容确实嵌入到了程序集当中。除此之外,程序集的全部内容经过散列编码后,还使用密钥进行了签名,也嵌入到了程序集中。

这样我们就得到了一个强名称程序集。如果有程序引用了该程序集,会记录由以下内容标识的程序集:

MyType, Version=1.0.3087.28686, Culture=neutral, PublicKeyToken=337642649f453c2c

这些内容唯一的标识了一个强名称程序集,由于公钥太长,这里只引用了公钥标记。当程序运行时,CLR 会根据这些内容去搜寻程序集,只有完全匹配的程序集才会被加载,即便是版本的细微差别都不会忽略。如果没有找到,或者找到的程序集不匹配,都会产生异常。

posted @ 2009-02-07 13:12 Perk-Jiang 阅读(165) 评论(0) 编辑
posted @ 2009-01-22 13:03 Perk-Jiang 阅读(10) 评论(0) 编辑
posted @ 2008-08-21 09:25 Perk-Jiang 阅读(64) 评论(0) 编辑
posted @ 2008-06-02 14:24 Perk-Jiang 阅读(61) 评论(0) 编辑
posted @ 2008-05-30 11:26 Perk-Jiang 阅读(288) 评论(0) 编辑
posted @ 2008-05-28 14:14 Perk-Jiang 阅读(384) 评论(0) 编辑