2016年3月24日

并发思想提炼(2)(Lock free,轮询及线程池)

摘要: 8. 告别Lock 不是一直说Lock比较麻烦危险吗,那就不要好了。其实有一个Lock free的方法。 首先引入一个概念——原子变量。在这种变量上的操作是原子操作(atomic operation)。原子操作就是说这个操作要么都完成,要么都不完成,部分完成是不行的。就像物理化学中的原子一样,借用不 阅读全文

posted @ 2016-03-24 09:02 甘木 阅读(1926) 评论(0) 推荐(4) 编辑

2016年3月15日

并发思想提炼(1)(理解并发,避免死锁)

摘要: 并发思想提炼(1)(理解并发,避免死锁) 一直做服务器后端和基础组件平台开发,常常用到并发,故简单放些干货,一来算是总结,二来希望后人少走弯路, 写到哪儿算哪儿,不定期更新。 1. Introduction 先来明白一些概念。Concurrency并发和Multi-thread多线程不同 你在吃饭的 阅读全文

posted @ 2016-03-15 13:52 甘木 阅读(3040) 评论(9) 推荐(10) 编辑

2012年4月4日

[图文并茂]WPF边学边做,图片流览器(二)

摘要: 本此内容本文首先介绍了该程序所能用到的WPF容器,然后布局界面提取图片。最后展示成果和提出下一步将要研究的问题。1 WPF容器2 布局界面3 取文件夹图片4 成果展示5 总结和提问1 WPF容器容器是装对象的东西,本次讲解一类型可以排列对象的容器。WPF的Panel可以用来排列对象,我们把对象放入其中,WPF就能自动为之排列位置。System.Windows.Control.Panel是一个抽象类,所以我们不能直接使用<Panel/>的Xaml格式。其中Panel.Children是一个UIElementCollection,包含需要排列的各Item。Panel有不少派生类,我们可 阅读全文

posted @ 2012-04-04 14:58 甘木 阅读(4058) 评论(5) 推荐(3) 编辑

2012年3月10日

WPF边学边做,图片浏览器(一)

摘要: 目录:引言程序原型界面WPF简介新建一个WPF程序WPF中标签和类的对应关系载入图片结语引言.Net体系有3个很重要的Foundation:WPF、WF、WCF,最近希望创建一个使用WPF的图像查看器,遂学习了相关知识,在实现该程序的过程中琢磨了大量的WPF知识,不敢独享。故写于此供各位大大参考和指点。程序原型界面初始想法就是这样,然后让我们开始做起来把,别看它貌似功能较少,但是用到的方法技巧可不简单。接下来我准备做一个系列,记录自己在做这个程序的时候的心得和学习历程,算是一个总结,也是抛砖引玉。对于想学习WPF的朋友也可以跟着做,这样一来有了成果,二来也学到了知识,一举两得。本教程仅针对改图 阅读全文

posted @ 2012-03-10 18:03 甘木 阅读(4582) 评论(3) 推荐(7) 编辑

2012年2月4日

破坏Private

摘要: 先看一段代码static void Main ( ){ var test1 = new Test1(); test1.Property1=3; Console.ReadKey ( );}class Test1{ private int Property1 { get; set; }}test1.Property1=3;必定编译错误。private有访问级别的限制。代码修改后static void Main ( ){ var test1 = new Test1(); Type type1=test1.GetType(); PropertyInfo pi=type1.GetPrope... 阅读全文

posted @ 2012-02-04 16:34 甘木 阅读(1581) 评论(2) 推荐(2) 编辑

2011年8月14日

小心!Struct陷阱

摘要: 最近编码时遇到了一个问题,先看一个程序:static void Main ( string[ ] args ){ MyValueType mv = new MyValueType ( b: 2.3 ); object objMv = mv; Console.WriteLine ( mv ); Console.WriteLine ( objMv );/* Step1 */ ( (MyValueType) objMv ).Method1 ( 3.4 ); Console.WriteLine ( objMv );/* Step2 */ ( (IMyValueType) mv ).Method1 ( 阅读全文

posted @ 2011-08-14 15:05 甘木 阅读(1640) 评论(4) 推荐(5) 编辑

2011年7月30日

as是is的语法糖,但is有as所没有的功能[C#]

摘要: 在C#中,我们可以使用is as操作符来判断某数据类型和其它指定类型的关系1. 用is运算符验证基础类型C#允许在继承链中向下转型,所以如果DerivedClass派生自BaseClass,那么DerivedClass a; a is BaseClass返回true2. 用as而不是强制转换as运算符在某些情况下能代替强制转换操作,我们推荐使用as而不是以前的强制转换,因为普通的强制转换如果失败,会抛出一个需要处理的异常;但是as转换如果失败,仅是把转换结果变为null,而不是抛出一个异常。3. as是is的语法糖下面两段代码是一个效果1 Foo f = x as Foo;2 3 var te 阅读全文

posted @ 2011-07-30 14:40 甘木 阅读(2742) 评论(16) 推荐(4) 编辑

2011年7月17日

dynamic设计动态类 (C# 4.0)

摘要: dynamic介绍:前言:最近公司某项目中类型定义不能在编译期间确定,表结构为动态可变类型。有参考C#4.0最新特性,故成此作。1.dynamic和vardynamic是C#4.0新增关键字,和以前动态确定类型的关键字var还是有所不同,以下是区别dynamicvar类型确定时机可推迟到运行期确定数据类型在编译期必须确定数据类型类型改变与否同一dynamic参数可以,针对不同的类型编译期一旦确定了参数类型,则不能改变了函数声明函数声明时参数dynamic是可用的函数声明参数不能使用var总结:var类型修饰的参数需要能在编译时确定参数类型,而dynamic可推迟到运行时确定;如果var不能确定 阅读全文

posted @ 2011-07-17 16:36 甘木 阅读(2146) 评论(2) 推荐(3) 编辑

导航

点击右上角即可分享
微信分享提示