07 2011 档案
摘要:值类型是不可以被赋值为null的,但有时候我们却需要简单的值类型被设置为null, 比如一个查询界面上有很多的查询条件,查询条件可以使用也可以留空,这是从UI收集查询参数信息传递到后台执行查询的时候,我们如果约定某个参数为 null时,就认为用户没有使用该查询参数。 第一,它是一个结构类型,值类型 其实下面的这个变量声明就是可为空的值类型 int? number = 100; 但是number是真的值类型吗,我们使用typeof(int?)看看他的类型吧, System.Nullable`1[System.Int32] Nullable<T>的声明如下: public struct
阅读全文
摘要:sql中的某个字段用“,”分隔数据,需要获取数据的时候直接把“,”拆分成数据,获得一个数据的list。例如:需要查询某字段是否包含一个值,111是否存在于1111,2111,1112,1121,1113这个字段中。因为根据“,”逗号分开,要求的答案是:不在字段中。 用传统的like '%111%',显然不合适,这样虽然111不存在但是依然能查到该条记录。所以应该用以下语句实现:select * from Table where ','+columA+',' like '%,111,%'。实际就是把字段填上一个逗号然后在比较。如果你
阅读全文
摘要:有次帮某人发spam,找人来填调查。写了个自动评论的脚本,但是发出一定数量的评论之后就会遭遇验证码,于是决定破解之。 思路也是一般的转化切割比对,成功率不是很高,不过重试几次也是可以用的。 虽然已经控制好了频率,不过最后还是被管理员发现了,直接封了帐号(好在是临时注册的),再注册再封,后来干脆封IP,于是不得不给我的vps换了个ip(也好在是免费的),杯具。 闲话休说,言归正题。 首先是需要取得验证码的样本,以作训练特征之用。而要取得验证码,首先要模拟登录的请求: usr = 'xx' psw = 'oo' resp = urllib2.urlopen('
阅读全文
摘要:找了 很久都发现不出问题,最后终于发现原来是微软的一个BUG 用HttpWebRequest发送请求,附上了CookieContainer(CookieContainer里面确定已经包含了所有需要的 Cookie),但是当发送请求后某些Cookie并没有发送出去,调试了两天,一直觉得是请求的网站设了什么古怪的限制,使请求老是发送不成功,最后用 SocketSniff抓包发现少发送了几个Cookie(因为这些cookie涉及到几个子域名),检查CookieContainer,里面确实有这 几个Cookie,最后只好反编译HttpWebRequest,在类CookieModule里发现方法OnSe
阅读全文
摘要:CookieContainer has a bug on handling domain name here https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=478521 and Microsoft decided not to fix it in .NET 2.0/3.0/3.5. I want to inspect the problem and want to do my own hack to solve this issue in .NET earlier than 4.
阅读全文
摘要:近日研究了 Sina CAS 的登陆过程,发现其实 sina 的 sso 实现了 yale-CAS 并且添加一丁点新的东西,基本认证过程交互流程仍然未变。其独创的一点是实现了 Ajax 单点登陆,算是比较牛。实现原理是 iframe+ javaScript 回调函数。 一,初级 SSO 初级的 SSO ,就是在同一个顶级域名下,通过种入顶级域名的 Cookie ,来实现统一登陆。例如: 单点登陆地址: sso.xxx.com/login.jsp 应用 1 : web1.xxx.com/login.jsp 应用 2 : web2.xxx.com/login.jsp 应用 3 : web3.xxx
阅读全文
摘要:如何快速生成100万不重复的8位编号收藏最近在论坛看到有人问,如何快速生成100万不重复的8位编号,对于这个问题,有几点是需要注意的:1.如何生成8位随机数,生成的数越随机,重复的可能性当然越小2.控制不重复3.考虑性能针对这个问题,我写了如下的示例来解决,希望能为有这类需求的人提供指导生成100万条8位不重复数据的示例中USEtempdbGO--创建测试表CREATETABLEtb(idchar(8))--创建用于自动过滤重复值的唯一索引CREATEUNIQUEINDEXIX_tbONtb(id)WITHIGNORE_DUP_KEYGO--测试数据插入的处理时间,记录开始处理的时间点DECL
阅读全文