摘要: 控制一个线程的执行状态一般有两种方法: 1.定义一个执行状态或者一个执行ID; 2.ThreadAbort个人比较习惯用第一种,这样可以保证退出时线程是执行完毕的,能保证业务的完整,几乎不用ThreadAbort。今天改公司的调度器需要用到ThreadAbort,要在Abort之后能通知到被调度者,因此打算是在ThreadAbortException异常中通知。但实现一大半之后才发现,要是被调度者自行catch了ThreadAbortException我就拿不到了,这样我的Abort处理流程是无法触发的,因为时间紧,所以先完成了这个不完美的实现。为了测试问题,我也实现了一个自行catch .. 阅读全文
posted @ 2013-04-12 18:21 二杠 阅读(380) 评论(1) 推荐(0) 编辑
摘要: 最近和IBM在重新做公司的平台,其中涉及多租户问题,之前处理多租户数据隔离时考虑很简单,直接把权限关键字作为每个方法的参数传递给DAO。带来的问题是在编码过程中有部分同事经常会忘记添加,维护也有些麻烦,这次就想着将这个问题给处理掉。IBM给了一个方案,可以将权限关键字写入当前执行线程中,在DAO中再从线程中取出来,但这样限定了UI层跟DAO都只能使用同一个线程,虽然暂时不会有UI层跟DAO线程不一样的情况,但总感觉有些不舒服。之前也一直在考虑是否可以通过一个公共方法来调用DAO,在公共方法中设置权限关键字,但都没有仔细的去想,今天在整理文档时突然想到用泛型不就能完美的解决这个问题么,于是就小实 阅读全文
posted @ 2012-07-23 17:46 二杠 阅读(1463) 评论(5) 推荐(0) 编辑
摘要: 火车票预定助手给大家带来了方便,也有部分朋友选择了转载,以让更多的朋友用到,很感谢这部分朋友。但是又有了一丝担忧,这个工具毕竟是EXE,而且也会涉及到网银、身份证等敏感信息,如果被别有用心的人利用了,可能会对大家的财产带来一定的危险。因此:请转载的朋友务必加上博客园的原随笔地址,下载地址也尽量采用博客园的地址。另外,本人的程序绝对不会记录你的身份证、密码等信息,有能力的朋友可以反编译看我的源码,看我是否有记录身份证和密码信息。要是还不放心,你大可只使用我这个工具做预定,在预定成功后关闭程序后再进行网银的操作,或者预定和付款采用不同的电脑操作。还有,有人对这个软件使用过程中会连接上海的一个IP表 阅读全文
posted @ 2012-01-11 09:08 二杠 阅读(1069) 评论(5) 推荐(1) 编辑
摘要: 问问题的太多了,我一个人回答起来实在精力有限,搞了个QQ群,有问题的来这里问吧,大家也可以分享下订票心得什么的。QQ群:1661459错误说明1.出现下图中错误请安装12306的根证书。2012-1-12 v1.11.修正更新提示可能会被挡住的BUG;2.部分BUG修复;3.功能基本完善完毕,版本号升级为1.1。2012-1-11 20:471.加入常用联系人信息读取;2.更新车站选择下拉控件;3.加入一次购入多张票的逻辑,并可选择常用联系人信息快速填写;4.更改菜单项;5.修复选择在IE中打开新窗口无效的BUG,另外选择挪到左下角。2012-1-11 13:461.修复添加常用联系人乱码问题 阅读全文
posted @ 2012-01-08 12:42 二杠 阅读(14968) 评论(93) 推荐(10) 编辑
摘要: 断断续续的写了两三天,终于在今天完成了,还订到了上海到达州的票。o(∩_∩)o... 阅读全文
posted @ 2012-01-06 20:06 二杠 阅读(651) 评论(3) 推荐(0) 编辑
摘要: 之前在JT/T 808在android上实现时用到了不少类型转换的Helper,现将其公布出来,有需要的朋友拿去用吧。1.常用类型和byte[]互转的ByteHelper;2.BCD码压缩的BCDHelper;3.CRC、XOR的CheckHelper。ByteHelperpackagecom.van.base;importjava.io.UnsupportedEncodingException;publicclassByteHelper{/***@Title:UInt16ToByte2*@Description:TODO(将UInt16转化为byte2)**@paramVal*@return 阅读全文
posted @ 2011-11-18 16:20 二杠 阅读(2150) 评论(1) 推荐(1) 编辑
摘要: 每到年关,火车票总是一票难求,去年差点没买到票回家,看到赶集、58等上有转让票,大喜,遂掏出手机呼叫之,可结果都是已转让。想想原因皆是看到的不及时,被别人捷足先登了。哥们是干什么的,居然从我嘴里抢食,越想越气,便做一工具,实时在赶集上监控着,有新出售票就提醒,几天下来,一张D字头的到手。。。闲扯了几句,下面进入正题。开发这一工具大概思路就是从网页上获取HTML,然后用正则匹配之,匹配出有新数据数据时加入到网格中显示,另外不可能实时盯着这个工具看,必须在有新信息时有提醒,于是我便加了一个声音提醒,一小时内的新信息都加声音提醒。这里遇到两个问题,一是如何从网页上抓取HTML,二是正则匹配问题。关于 阅读全文
posted @ 2011-11-18 15:45 二杠 阅读(5594) 评论(26) 推荐(4) 编辑
摘要: C#中实现POST的方法很多,常用的是WebBrowser、WebClient、HttpWebRequest和HttpWebResponse。1、WebBrowser基本是在DocumentCompleted中分析HtmlDocument ;2、WebClient是对HttpWebRequest和HttpWebResponse的封装,用起来更方便,但是灵活性还是不及HttpWebRequest和HttpWebResponse;3、HttpWebRequest和HttpWebResponse更底层,灵活度更好,不过代码更多,我做了一个简单的封装,将GET改成分段读取,并加入代理、进度条和错误重试 阅读全文
posted @ 2011-11-18 12:42 二杠 阅读(9493) 评论(15) 推荐(2) 编辑
摘要: 闲来无事,把JT/T 808在安卓上实现了一遍。代码逻辑基本由C#移植而来,在异步发送数据上遇到了点麻烦,JAVA要进行异步发送数据貌似得用到NIO,没去研究这个东西,便自己写了一个SocketHelper,发送支持同步和异步模式,接收全是异步方式。同步模式这里不做说明,大家基本都是一个样,简单说说我的异步发送和接收吧。发送流程:首先定义一个缓冲池,发送数据时仅仅是将待发送的数据加入到缓冲池中,再由后台的工作线程从缓冲池中取得待发送数据进行发送。可能某些情况下在数据发送完成时需要做一些处理(比如写日志),便定义了一个发送完成监听,在数据发送完成时触发此事件。接收流程:同样定义了一个接收缓冲池, 阅读全文
posted @ 2011-11-17 15:38 二杠 阅读(4967) 评论(8) 推荐(4) 编辑