随笔 - 13  文章 - 0 评论 - 98 trackbacks - 0
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

昵称:hbfly
园龄:5年6个月
粉丝:0
关注:0

搜索

 
 

常用链接

随笔分类

随笔档案

最新评论

阅读排行榜

评论排行榜

推荐排行榜

最新评论

共2页: 1 2 下一页 
Re:基础知识 hbfly 2011-12-22 15:16  
NET中的List<T>非常方便,但是很遗憾得是没有自带更方便的一些排序、查找函数。比如说,Sort()和Find()方法都包含在 List<T>里,但果你想使用,你得自己写函数。这往往会让我们感到不爽。其实这些Sort() Find()方法想要的都只是一个一句话delegate而已。 本文讨论非LINQ的方法,适用于.NET2.0以上平台,主要讨论以下 三个方法: List<T>.Sort() List<T>.Find() List<T>.Exist() 先 看List<T>.Sort()。其定义是:public void Sort( Comparison<T> comparison ) 其 要求传入的参数是Comparison<T> comparison。那看看Comparison<T> comparison 要求传入哪些参数、返回什么样的值。 查阅MSDN后,发现Comparison<T> 要求传入两个T的示例,即t1和t2;返回结果是整数,如果t1t2返回1,和字符串比较的返回方式一样。 于是可以这样设计 delegate: listVideoItems.Sort(delegate(VideoItem v1, VideoItem v2) { return Comparer.Default.Compare(v1.Title, v2.Title); }); 上面 的代码是对实体的Title属性进行排序,采用字符串比较的返回值作为delegate的返回值,呵呵,很简单很巧妙吧^_^ 2. 接下来看看List<T>.Find()和List<T>.Exist() Find()的定义如下: public T Find( Predicate<T> match ) Exist也类似: public bool Exists( Predicate<T> match ) 看出来了吧?呵呵,只要设计好Predicate<T> match 这个参数的delegate,Find()和Exists()这两个函数都可以用了。 查询MSDN发 现,Predicate<T> 要求传入一个T的实体,并返回这个T是不是存在的布尔结果。 非常简单就可以写出: VideoItem video= listVideoItems.Find(delegate(VideoItem v) { return v.Title== xxxxx; }) 以上代码表示按照标题查找实体,当然xxxxx你可以替换成别的,变量和硬代码都可。v.Title == xxxxx 这种方式也可以改为 v.Minutes > 25 或其他,只要能返回布尔结果即可。 同样的delegate也可以 用在Exists()中: bool flag= listVideoItems.Exists(delegate(VideoItem v) { return v.Minutes > 25 ;}) 最后,List<T>当中还有一个非常好用的 FindAll()方法,也相当好用,相信看完本文的朋友马上就能写出delegate来。
楼主这里面有个伪命题,也就是社会统筹部分完全跟自己不相干,你交了也白交,对自己没有好处。 自己退休后的养老金构成是:个人账户+国家统筹,这个国家统筹部分只要是退休人员,所有人得到的钱都是一样。同时也能使发放的养老金不至于贫富分化太厉害
Re:基础知识 hbfly 2011-10-21 17:40  
C#的多线程机制 lock : 锁定特定的代码段 Monitor(Enter/Exit):锁定共享的资源 ThreadPool:利用系统管理线程ThreadPool.QueueUserWorkItem(new WaitCallback(函数名)); Timer:定时启动 Mutex:互斥量用于控制多线程之间的联系
Re:最精简SQL教程,查漏补疑 hbfly 2011-10-21 16:03  
其他: ----简单try catch示例,无法处理错误 begin try select * * from student; end try begin catch exec proc_error_info; end catch go % 替代一个或多个字符 _ 仅替代一个字符 [charlist] 字符列中的任何单一字符 [^charlist] 或者 [!charlist] 不在字符列中的任何单一字符 SELECT * FROM Persons WHERE City LIKE '[ALN]%'
Re:最精简SQL教程,查漏补疑 hbfly 2011-10-21 16:03  
查询优化 得出以上速度的方法是:在各个select语句前加: declare @d datetime set @d=getdate() 并在select语句后加: select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate()) 查询优化器 SARG的定义:用于限制搜索的一个操作,因为它通常是指一个特定的匹配,一个值得范围内的匹配或者两个以上条件的AND连接。形式如下: 列名 操作符 <常数 或 变量> 无法利用索引的sql语句 like% or NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE (WHERE 价格*2>5000)(ABS(价格)<5000)(有计算或函数则无法用索引) 顺序:应先进行表空间的优化(类似磁盘碎片整理),回滚段的优化(回空间分配250M左右.常识),索引优化,再进行查询语句的优化
Re:最精简SQL教程,查漏补疑 hbfly 2011-10-21 15:51  
锁:解决数据并发操作引起的数据不一致 脏读:a事务修改,b读取了,但a回滚了,哎! 级别:row page extent table database 模式:独占(别人不让动)\共享(只读)\更新(限制更新等不限制读取) SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除 SELECT * FROM table WITH (TABLOCKX) 其他事务不能读取表,更新和删除
Re:最精简SQL教程,查漏补疑 hbfly 2011-10-21 14:43  
•(inner) JOIN: 如果表中有至少一个匹配,则返回行 •LEFT JOIN: (左表数据全部显示,右表没对应的显示empty)即使右表中没有匹配,也从左表返回所有的行 •RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 •FULL JOIN: (2表都显示,没有的则empty)只要其中一个表中存在匹配,就返回行
re: 用C#创建各种类型的wave文件 韦恩卑鄙 2009-05-03 16:27  
您在msdn的问题我已经答复 :)

您好 如果您要作 byte 的缓存 只要用 new queue<byte>(1024*n) 就好了
n 是缓存大小 不需要用 stream
queue的本质是一个数组内的循环队列 只要缓存没有溢出 这个模型可以支持一个写入进程和一个读出进程而完全不需要上锁


另外 向您推荐 LinkList<byte[]> 这个夜能做到 queue 一样的先进先出 我个人推荐用这个 因为可以和“按秒写入”方式兼容 您不一定需要以byte为单位的写入 可能每次要写一个内存快 这样 <byte[]> 可以轻松胜任
查了一下,lz居然跟我一个公司
看截图.可以肯定以下:
楼主的VS不是处于调试期,所以控制台是独立运行的.与VS里的代码没有任何关联!也就是控制台窗口运行的代码有可能根本就不是现VS窗口里看到的代码(比如旧代码或其它代码程序).所以想出什么效果都可以.
我觉得应该不是楼主写的,可能是楼主离开了电脑一会儿,有其它同事过来敲了这些字,祝他节日快乐。所以楼主也不知情。
Datatime.tostring()
re: c#彩蛋 控制台程序今天自动出现merry christmas 色狼,表调戏骚妇 2008-12-25 21:55  
因为楼主开了两个VS!后面的故事鬼去想哈~
楼主你这块大烧饼(哈哈)——你在微软工作。。。直接问他们不就得了?!~
晕死。。。
@沛沛
@Jickie
你们俩真是太强了,本来我还怕这帖子被人认为有点哗众取宠,感谢两位增加技术含量,
郑重声明:我真的没有任何特别操作,只是简单执行了一下程序,也没重写console类。17楼也出一次,我这里也是再执行一次就不出现了,见鬼了,不过,我到真有点信1-2-3的推断了
#17楼 58.209.71.* 2008-12-25 11:35 路人甲@1225 [未注册用户]
我也出现了,就一次而已
不知道楼主是否也是采用了我上面说的这个方法呢?
--引用--------------------------------------------------
CJK674: 我这个算不算???人格保证我的图片是真的,呵呵,请高人告诉我这是怎么出来的<br />
<img alt="" src="/images/cnblogs_com/chenjink674/QQ截图未命名.gif" /><br />

--------------------------------------------------------
运行控制台后,在Main入口的最前面设置一个断点,
启动调试,当程序运行到设置好的断点停留下来的时候,
在监视里面输入代码“ Console.WriteLine(Happy Birthday ! Tony!)”,这个时候监视器运行结果“表达式没有值”,
接着让程序跳过节点继续执行,在控制太上就会出现你说的结果了...
呵呵~~
有意思....
后边的提示符
当然楼主是把他的静态类Console隐藏起来了

我在这里把整个过程展示出类,

@CJK674
真不知道你那咋做的,
@沛沛
重写console类也实现不了后面出现输入提示符呀,这也是大伙怀疑我是自己输入的原因
其实他的电脑被我远程控制了,另外我告诉大家一个事情,我发现楼主昨天看了黄
看这是不是解:
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace Test
 7 {
 8     class Program
 9     {
10         static void Main(string[] args)
11         {
12             Console.WriteLine(System.DateTime.Now.ToString());
13             Console.ReadKey();
14         }
15     }
16 
17 
18     static class Console
19     {
20         public static void WriteLine(string s)
21         {
22             System.Console.WriteLine(s);
23             System.Console.WriteLine("merry christmas!");
24 
25 
26         }
27         public static void ReadKey()
28         {
29             System.Console.ReadKey();
30         }
31     }
32 }
哦买疙瘩

老婆,快出来看上帝


我这个算不算???人格保证我的图片是真的,呵呵,请高人告诉我这是怎么出来的

@Jickie 不是这么做的,呵呵,一般人会很难想到的,我昨天刚刚在某个群里做做这个演示.这个是执行好的结果,我没有在执行时做任何的手工干预
@1-2-3
强,
re: c#彩蛋 控制台程序今天自动出现merry christmas G yc {Son of VB.NET} 2008-12-25 13:39  
对 编译出来 内容感兴趣了~~

楼主,做什么的?难道是MSN 开发团队的?

PS。不是你们机器集体被遥控了吧?
@xiaopohai_long
@大家
我真的不是闲的忽悠大家,这现象只出现了一次,我每天上班第一件事就是运行这程序。
我自己再找原因吧,暂时就算是给大家的小小礼物吧,不过找到原因我会给大家解释
嗯,根据我名侦探柯南的分析,是这样滴:楼主编译,运行,突然有点那啥,就去了趟WC,这时楼主的同事就在那里输入了圣诞快乐,等楼主回来……
--引用--------------------------------------------------
xiaopohai_long: 首先楼主为了给大家送来祝福,谢谢了。可是这个不好玩的啊。。。

大家看看Console.Read()函数,会接受用户的输入,如果你输入了Merry Christmas! 这个现象就出现了。呵呵。。。。只能说楼主很有心思,不过有点骗人。。。哈哈
--------------------------------------------------------


被楼主巧妙的转移了注意力....可以说楼主成功了......
Console.Read()
楼主自己输地
如果你说的话是事实的话,请告诉我们你机器的环境?把后面的Console.Read()方法去掉还会有吗?
@过路者
我晕,我真没闲的和大家打哑谜,
我的英语已经烂到christmas都要查字典才会写。肯定不是自己输入的
只可能是早上没睡醒。。。。,
人格保证以下说的是真的,呵呵,请高人告诉我这是怎么出来的
1)代码中没有任何输出的merry christmas
2)附上运行时的源文件,方便大家看IL
楼主只保证了这两点,却没有保证不输入merry christmas,哈哈


@rexzhou
看起来的确像输入光标
后面有光标。
首先楼主为了给大家送来祝福,谢谢了。可是这个不好玩的啊。。。

大家看看Console.Read()函数,会接受用户的输入,如果你输入了Merry Christmas! 这个现象就出现了。呵呵。。。。只能说楼主很有心思,不过有点骗人。。。哈哈
楼主的人格确定没问题么?

呵呵.开个玩笑.
@楼主去死吧
忽略你吧,还被你熏了。
搭理你吧,还懒得和你一般见识,

你纯粹没事找抽型
楼主不要在这放屁
问题是怎么才能重现,无法重现那谁相信啊
哈哈,有意思
哈哈,有意思
騙人滴!
@颜斌
客串,园子里好多弟兄都在外包公司吧,有机会咱也组织个联谊会
哈哈 你是在微软工作吧 我看到你的alias了
吓胡扯
@路人甲@1225
真的吗?我也就一次呀,抓图了吗?
共2页: 1 2 下一页