12 2012 档案
摘要:毕业之前在学校用CMS做过两个网站,一个ASP(dedecms)的一个PHP(phhpcms),那时候纯粹兴趣使然做出来还是蛮有成就感的。后来实习,毕业到正式工作到现在有9个多月就一直没有再接触web开发了,一些基础知识也忘记的差不多了。其实刚开始进公司的时候因为我在的项目组属于运营支撑,部门的几个网站也属于我们维护的,我以为我肯定是要先走网页制作这一步的,很多刚毕业的本科生也是从这一步走来的,但说实话很多人包括很多开发自己对web开发都是嗤之以鼻的,再加上调网页是非常繁琐的而又被认为是没什么技术含量的活,可谓吃力不讨好,所以妄自菲薄,自暴自弃乃至最终因为不堪忍受只是弄弄网页而选择跳槽的人不在
阅读全文
摘要:2、线程池线程阻塞上一篇提到我为了防止定时器事件重入而加了锁。某一天我再打开监控页面发现监控频率为27秒的监控项的最后监控时间都停止在了前一天晚上的零点左右。在本机也没有重现这种情况,我觉得可能是偶然现象,但持续观察了几天之后发现持续运行24小时左右这种情况是毕现,更严重的情况是所有的定时器貌似都是跑着跑着跑“累了”就不跑了,而且通过任务管理器查看发现进程创建的线程达到了200多个,至于原因我的第一反应是死锁导致线程池的线程被阻塞(block)了,因为前面我为了防止出现定时器事件重入而加了锁。而当线程池的线程被阻塞,线程池会创建额外的线程。锁和线程同步以前交通不发达村与村之间只有一条马路相连,
阅读全文
摘要:我们是多么希望我们写的代码一直完美的运行下去,但是这个行业的一条真理就是“没有不存在bug的软件”。最近这几个月一有空就打开我写的代码,目的只是为了苦苦寻找各种bug所在,而所有这些bug必定都源于我学艺不精。在这个过程中我发现我是多么的“善变”。截至到目前仍然没确定我干掉了所有bug,但是我得感谢它们和我的“无知”。好了废话到此结束,把我的debug过程和大家分享下。背景这些bug都出自一直在做的一个用在我们系统内部的监控组件,主要用来监控一些组件比如业务接口、sqlserver、redis、mongodb是否运行正常。主要抽象出来有以下几个对象:sqlserver之类抽象为监控对象(Mon
阅读全文
摘要:ServiceStack.Redis是Redis官网推荐的C#客户端(这里下载),使用的人也很多。最近项目中也用到了,网上查了一下使用这个客户端的方法大概有三种:每次访问新建一个连接,使用连接池和使用长连接(可以看这里)。我一开始使用很简单(我用的版本是3.9.32.0)封装了一个RedisHelper类,内部每次访问new一个RedisClient,并每次用完dispose掉。public class RedisHelper : IDisposable { public const string DefaultHost = "localhost"; publ...
阅读全文
摘要:public class InterfaceKey : IComparable { /// <summary> /// 接口名称 /// </summary> public string InterfaceName = string.Empty; /// <summary> /// 产品标识 /// </summary> public string Aid = string.Empty; /// <summary> /// 版本标识 /...
阅读全文
摘要:今天用.net写一个小程序,利用System.Net.Mai通过OutLook发送发送邮件,有两个附件一个是Excel一个是txt,结果奇怪的现象发生了,接收后发现excel附件名称变成了后缀为.dat的乱码,但txt的正常。在网上各种搜都没有解决,结果自己试尽各种格式的名称最终发现原来是名称太长的缘故。
阅读全文