随笔分类 -  .NET

摘要:背景及情况: 周一早上服务巡检发现11点线上有一个中台服务全部宕机下线了 当时服务的情况 查看Tara服务监控,发现服务CPU、内存、连接池等监控都不高。第一波11点40多这一次宕机运维没有抓到dump信息,只有如下图的一个Windows系统错误日志 第二波12点02分左右又一次宕机,这次运维抓到了 阅读全文
posted @ 2022-12-25 20:42 rpoplar 阅读(101) 评论(0) 推荐(0) 编辑
摘要:我们在做一些业务系统的时候,经常会用到一些获取时间段的情况。比如要统计某一周、某月、某年 这样一些时间区间内的一些业务数据。这时候我们就需要获取当前时间段内的一些起止日期。这里分享一个通用的日期辅助类,可以根据传入的日期快速的获取它所在Week、Month、Year的起止日期。 public sta 阅读全文
posted @ 2016-05-15 11:01 rpoplar 阅读(608) 评论(0) 推荐(0) 编辑
摘要:有的时候我们需要为我们的WPF文本框TextBox控件添加一个显示水印的效果来增强用户体验,比如登陆的时候提示输入用户名,输入密码等情形。如下图所示: 这个时候我们除了可以修改TextBox控件的控件模板之外,其实还有一种比较简单的方式来处理。就是为我们的TextBox控件添加一个触发器,当它... 阅读全文
posted @ 2015-06-06 23:14 rpoplar 阅读(7208) 评论(0) 推荐(3) 编辑
摘要:下表列出了按优先级顺序分组的C#运算符。从上到下优先级依次降低,每个组中的运算符具有相同的优先级:优先级类别运算符1基本(x) x.y f(x) a[x] x++ x――new typeof sizeof checked unchecked2单目+ - ! ~ ++x ――x (T)x... 阅读全文
posted @ 2015-05-15 15:43 rpoplar 阅读(324) 评论(0) 推荐(0) 编辑
摘要:1、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0.20)默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数string.Format("{0:C1}",23.15) 结果为:¥23.2 (截取会自动四舍五入)格式化多个Object实例string.Format("市场价:{0:C},优惠价{1:C}",23.15,19.82)2、格式化十进制的数字(格式化成固定的位数,位数不能少于未格 阅读全文
posted @ 2013-07-11 15:27 rpoplar 阅读(365) 评论(0) 推荐(0) 编辑
摘要:在WPF/Silverlight开发中,我们都推荐使用MVVM模式进行开发,便于业务与UI的分离和单元测试。但在Silverlight中对TreeView的处理涉及到对TreeViewItem的相关操作如果用MVVM来实现的话,还是不是那么容易的。因为在微软提供的TreeView控件中并没有包含可以直接对TreeViewItem操作的Attach事件。而且在采用数据绑定的方式下每个TreeViewItem是在根据数据模板的层级关系来自动生成的,因此我们要获取每个TreeViewItem也不是那么容易的。 这里模拟一个需求场景:在MVVM模式下根据对TreeView节点的展开或者关闭来实现节点. 阅读全文
posted @ 2013-01-02 13:31 rpoplar 阅读(808) 评论(0) 推荐(0) 编辑
摘要:silverlight开发中设置某个控件的焦点,如果是在code behind 情况下可以通过直接设定某个控件的focus()方法就可以实现。但是如果我们是用MVVM模式下通过绑定来实现呢?比如这样一个场景,一个登陆页面,需要设定登录名控件TboxLogin(TextBox)默认具有焦点。通过研究发现,TextBox并没有设置Focus的依赖属性,因此,直接绑定是不能实现的,我们只能通过其他方法来实现。 在Silverlight中有个System.Windows.Interactivity.dll的类库,专门用来处理Silverlight交互方面的功能,我们可以通过其中的Behavior来.. 阅读全文
posted @ 2012-12-29 00:24 rpoplar 阅读(742) 评论(0) 推荐(0) 编辑
摘要:在使用XmlSerializer 序列化实体类的时候可能会遇到实体类中含有可空字段序列化的问题,如果我们直接对实体类进行序列化等到的Xml字符后我们查看会发现其中可空字段的xml标记的属性中会加入自动加入很多无用属性。 下面给出一个实例:一个实体类Student 包含一个可空的 int?Age 字段,以及一个XmlSerializer方法。Student 1 public class Student 2 { 3 public string ID 4 { 5 get; 6 set; 7 ... 阅读全文
posted @ 2012-11-07 23:17 rpoplar 阅读(1475) 评论(0) 推荐(0) 编辑
摘要:背景:WPF项目中,经常会处理一个或者多个耗时很久的任务,比如调用服务的数据查询然后把N条数据加载到列表控件。这种情况下如果采用一般的方式同步处理那么WPF的UI就会失去响应,卡死在那个地方,整个系统可能都无法操作,这对用户来说简直就是太不友好了,也得傻傻的等待任务完成才能干其他事件......这个问题的解决方法都是采用多线程来处理,一般是开起一个后台线程去完成这些任务,这样UI线程仍然可以响应用户的其它操作,等待后台把任务处理完毕了在通知UI、通知用户。这样不仅提高了效率、也让系统的体验更好。WPF的WPFToolKit、WPFToolKitExtended里面给我提供了一个BusyIndi 阅读全文
posted @ 2012-10-27 23:38 rpoplar 阅读(2242) 评论(3) 推荐(1) 编辑
摘要:在软件UI界面录入数据时候,为了保证数据的正确、有效、规范性,很多情况下都要验证数据的有效性。比如录入某个人的信息,那么我们就需要对这个人的姓名验证是否为空字符串,年龄是否为有效数字,性别是否为男或女等等。 在WPF开发中,数据的验证和数据绑定结合在一起,实现起来很优雅。我们可以让数据Model(模型)实现IDataErrorInfo接口来实现每个属性的验证逻辑。或者自定义一个继承自ValidationRule的类来实现验证逻辑。然后在Xaml中提供控件的ErrorTemplate模板,就可以得到很好的验证效果。下面提供一个样例代码: 后台数据 1 public class Pers... 阅读全文
posted @ 2012-09-16 12:11 rpoplar 阅读(1121) 评论(0) 推荐(1) 编辑
摘要:静态和动态类型静态语言如C#,C++,Java都是在编译时执行类型检查,与此相反,动态语言如JavaScript,Perl和Ruby都是在运行时执行类型检查。C#最初被设计为基于强壮类型的语言,因为编译器可以确保类型匹配,在开发周期的早期阶段就会发现bug。现在情况发生了变化,在C#中引入了动态类型,你可以无缝地调用不同类型的对象了,如COM和JavaScript。Var和dynamic关键字为了支持动态变量声明,C# 4.0引入了关键字dynamic,在C#中var和dynamic关键字提供了本地类型含义,你不需要在赋值运算符左边指定数据类型,系统会动态绑定正确的类型。但与dynamic关键 阅读全文
posted @ 2012-09-16 00:02 rpoplar 阅读(294) 评论(0) 推荐(0) 编辑
摘要:c#4.0中新特性之一就是:命名参数和可选参数。命名参数:调用方法时,可以不按位置传递参数,而是指定参数的命名来传值;private void Func(string str,int number,bool flag){}对于上面的函数,使用命名参数调用时可以是 Fun(flag:true,number:10,str:“zhangsan”);可选参数:声明方法中的参数时,可以为其设置默认值,那么在调用该方法时,这种可选参数是可以忽略的;必须遵循以下几个原则: 1.可选参数必须有个编译时常量作为其默认值。如果是除String之外的引用类型(包括那个特殊的dynamic类型),默认值只... 阅读全文
posted @ 2012-09-15 23:48 rpoplar 阅读(272) 评论(0) 推荐(0) 编辑
摘要:什么是接口? 接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法不能包含任何实现部分。C#中接口可以包含属性、方法、索引器和事件声明。当某个类实现(implement)某个接口时候,这个类必须实现接口中的所有方法和其他成员。接口不能实例化。什么是抽象类? 抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可以提供非抽象方法。抽象类不能实例化,必须通过继承由派生类实现其抽象方法,因此对抽象类不能使用new关键字,也不能被密封。如果派生类没有实现所有的抽象方法,则该派生类也必须声明为抽象类。另外,实现抽象方法由overriding方法来实现。 接口和抽象 阅读全文
posted @ 2012-04-06 13:57 rpoplar 阅读(261) 评论(0) 推荐(0) 编辑
摘要:在使用AutoMapper进行对象类型映射的时候,有时会面临将一个对象集合,全部转换到一个类型的集合。比如有如下两个类型:public class Name { public string FirstName { get; set; } public string LastName { get; set; } } public class NameDto { public string FirstName { get; set; } public string LastName { get; set; } public string AllName { get; set; } }现在我有一个L 阅读全文
posted @ 2012-02-10 12:40 rpoplar 阅读(1695) 评论(2) 推荐(0) 编辑