摘要: 当windows系统下使用System.IO命名空间下的方法,目录长度超过260个字符时,.net framework会抛出LongPathException。查阅相关资料,发现是微软为了安全和系统兼容性做出的限制。 原话是这么说的:The exception that is thrown when a path or file name is longer than the system-defined maximum length. 阅读全文
posted @ 2014-08-22 14:39 夜の魔王 阅读(1304) 评论(0) 推荐(1) 编辑
摘要: 在某网站上看到ThoughtWorks在武汉招人,待遇在本地还算不错,就投递了简历。第二天HR就打开电话,基本了解了一下情况(工作环境不错,男人妹子比例:1:1,双休,六险一金,满一年年假15天,病假8天,月薪1W--2W)。然后立马收到一封:Coding Assignment的笔试题目。网上搜索了一下,发现这个公司还是挺大的,公司面试流程是出了名的繁杂和苛刻。据说有8轮:电话面试=》笔试=》Homework=》结对编程(中午管饭)=》技术面试=》PM面试=》HR Manager的面试=》Boss面谈。了解到武汉这边的主要是做知道华为这样的公司做敏捷开发培训,需要出差,也会有自己公司的一些些代码的需求。这边公司规模也就20几个人。希望对其他想去的童鞋有所帮助。 阅读全文
posted @ 2014-08-18 12:08 夜の魔王 阅读(1695) 评论(8) 推荐(1) 编辑
摘要: 用FormsAuthenticationTicket.Version存储用户角色ID。 一开始还为自己的机智和精巧的设计洋洋得意,而且在安卓手机上运行完全没有问题。但是在IOS上,不管我Version设置为什么值,它的值始终都是2. 很奇怪。根据msdn的解释:如果 FormsAuthenticationTicket 是使用不提供 version 参数的构造函数创建的,则 Version 属性返回 2;否则,Version 属性返回提供给FormsAuthenticationTicket 构造函数的值。 阅读全文
posted @ 2014-08-06 16:47 夜の魔王 阅读(2708) 评论(4) 推荐(1) 编辑
摘要: 我们都知道ASP.net mvc权限控制都是实现AuthorizeAttribute类的OnAuthorization方法。这种方式是比较粗粒度的解决方案,由于是已经将定义好(约定好的)权限hard code带对应的Action上,所以无法实现用户自定义权限控制。基于角色的权限控制系统RBAC(Role Based Access Control)是目前最流行,也是最通用的权限控制系统。对于ASP.NET MVC来说,这套系统很容易实现:Controller下的每一个Action可以看作是一个权限,角色就相当于多个权限的组合。本文就是来探讨这个事情的。 阅读全文
posted @ 2014-08-05 17:09 夜の魔王 阅读(12608) 评论(4) 推荐(15) 编辑
摘要: 利用.net4.0的dynamic特性制造的超级简单的微信SDK 阅读全文
posted @ 2014-06-10 16:17 夜の魔王 阅读(1044) 评论(1) 推荐(1) 编辑
摘要: 特别不喜欢麻烦的一个人,最近碰到了微信开发。下载下来了一些其他人写的微信开发“框架”,但是被恶心到了,实现的太臃肿啦。 最不喜欢的就是把微信返回的xml消息在组装成实体类,所以会比较臃肿,现在都提倡轻量级,所以有什么办法可以避免大量实体类的存在呢。 当然,还有包装的比较繁杂,看完官方API后,再看"框架",让人感觉一头雾水,不够清晰、明了。 阅读全文
posted @ 2014-05-22 16:38 夜の魔王 阅读(7649) 评论(29) 推荐(18) 编辑
摘要: Postgre 的Copy以及9.1版本后的unlogged table 特性可以极大的提升数据插入效率,一个12个字段的b-tree集群索引,15个字段的表,插入速度优化到5000行/秒,查询在500ms。 阅读全文
posted @ 2013-11-18 15:25 夜の魔王 阅读(2564) 评论(0) 推荐(1) 编辑
摘要: 工作中经常涉及任务调度,一直都是采用while(true) => if hitted DO => Thread.Sleep(interval)的模式。但是最近实在是感觉这种实现模式很挫。并且没有考虑到性能问题,需要撞击n次才能命中一次,使用效率不足5%(一百次while循环命中不到5次),但是单方面加大线程睡眠时间又无法保证高准确性和高精度。那有么有其它好的思路:即可以保持高准确性、高精度,又不浪费资源呢? 二、我的思路 上述的短板在于:无目的的线程Sleep,如果我们可以每次恰到好处的Sleep,即线程被唤醒后刚好赶上下一次的任务到来,命中率就是100%了嘛。所以可以这样做:进入While后先安装Scheduler计算出下次的运行时间距离现在还有多久(Interval),然后直接Sleep(Interval),等待线程唤醒后就立即执行下一个既定Task就可以了。那这样做唯一的难点就在于你的Scheduler是否可计算、是否可以计算出下一次的运行时间点。 还好,我碰到的逻辑都还是满足这一点需求的: (1)每隔一段时间执行一次的计划任务; ( 阅读全文
posted @ 2013-11-02 14:26 夜の魔王 阅读(2296) 评论(9) 推荐(2) 编辑
摘要: Python中两种基本的数据结构是序列和映射,序列包含:可变的列表和不可变的元组;而当序列不够用时就出现了映射:字典。列表中的元素是可以变化的,元组里面的元素一旦初始化后就不可更改。列表和元组只是一类元数据的集合体,还不能满足通过名字引用值的数据,故字典就充当了这个功能角色。 阅读全文
posted @ 2013-10-22 22:48 夜の魔王 阅读(26216) 评论(0) 推荐(1) 编辑
摘要: 传统web请求,是显式的向服务器发送http Request,拿到Response后显示在浏览器页面上。这种被动的交互方式不能满足对信息即时性要求高的应用,譬如聊天室、股票交易行情、在线游戏等。Ajax轮询虽然可以解决这个问题,但是会带来增加服务器负担已经带宽浪费,并且这种实现方式不够优雅。而Comet技术就是为此而生的。 本文只探讨基于浏览器的web端服务器推技术。服务器推技术在现实应用中有一些解决方案,主要分两类:一类是需要浏览器额外安装插件,基于套接口传送信息或者是基于RMI、CORBA进行远程调用,另一类则无需浏览器安装任何插件,就是本文着重讲的HTTP长连接技术:Coment。Alex Russell(Dojo Toolkit 的项目 Lead)称这种基于 HTTP 长连接、无须在浏览器端安装插件的“服务器推”技术为“Comet”。 阅读全文
posted @ 2013-09-12 17:03 夜の魔王 阅读(3623) 评论(24) 推荐(3) 编辑