![]() |
|
Spaces home Wolfsecond -- loser's re...PhotosProfileFriends | ![]() |
|
June 10 天津人的幽默端午期间回了趟天津,参见朋友的婚礼。 刚下火车,就见一大爷在一辆破面包车前招揽生意 “塘沽——,塘沽——,大哥去塘沽嘛?” 我拒绝了就要走,这时身边走过一个女生,那个大爷忙凑前:“姐姐,去塘沽嘛?” 那女生白了他一眼,嘴里挤出两个字“有病!”,然后抽身而去。 再看那大爷面色紫青,嘴角抽搐,五官都要挤到一块了,然后说出了我们意想不到的话: “说嘛呢?说嘛呢?你看我这像是有病的样子的嘛?这孩子” April 03 程序我会写,瓦工我也会今天早上在公司上厕所,发现马桶抽水坏了。 想要找物业来修,可是等不及了,于是就试着自己修一下,结果居然修好了。 坐在自己的“劳动果实”上,突然发现我也比较有才~~~ March 19 我该守望些什么?January 25 “全盘格”讲个笑话吧: 这几周const很不爽,电脑中毒了,而且中的很厉害,总是杀也杀不净。基本上就是周末发现电脑中毒了——》周六,日格盘——》周一至周五装软件——》然后周末又发现中毒了——》然后再格盘…… const说:完了,废了,废了,这下真得“全格盘”后,才能杀的干净了! 我说:那哪够啊!至少得“格全盘”,那才行! …… const说:恩,说得没错,最后还得来个“全盘格”。 然后我俩都笑得不行了,感觉自己太幽默了。 …… …… …… 感谢各位看完了这个冷笑话。 January 24 IE果然依旧很烂看下面这张图,蓝色的是IE6的,红色的是firefox的。IE6的垃圾回收时间复杂度是O(n)的,firefox基本是O(1)。这只是IE6烂的烂山一角,启动慢,安全漏洞多,开发不友好(firefox有firebug),多得我都懒得敲。 出处:http://pupius.co.uk/log/2007-03-07/ 难怪我们的team leader说,ms的人这几年都干啥了,干了那么多年还不如一个开源的软件,都下岗算了。 可是面对商业政治,我还是无可奈何。仍然有大量的用户“习惯性”的使用IE,程序员仍然要写一些为了兼容IE的非标准、垃圾代码。:) December 24 25元的六头钉开张!昨天终于在一家杂货店里找到了我梦寐以求的软木板。我使用了我从来都擅长的"砍价绝招",以25元买下。 为什么说“梦寐以求”?因为我做梦都想在office里有那么一块木板,上面钉买了我的计划,闪过脑中的话丝,牢骚。。。,呵呵,that's my plan. according to the plan.这样,我就可以在公司里“越狱”。 为什么说“六头钉”?鉴于对老板娘的对我的勒索,没有杀到20元,所以赌气没有买她的2元一盒的按钉。幸运的是,我在office里的抽屉里dig out了6个,不错啊。那就将这个软木板起名为“六头钉”板吧。于是我就将“六头钉”写在板上。恩,不错啊,好名字,恩。正自我欣赏,自我陶醉的时候,我突然发现……我数错了按钉的数目,不是6个!而是7个! 为什么说“为什么说\“[w]+\””? Exception in thread "main" java.lang.StackOverflowError at 25元的六头钉开张.as(25元的六头钉开张.java:9) at 25元的六头钉开张.as(25元的六头钉开张.java:9) …………………………………………………… October 10 灵异事件:取消电梯请点击右键昨天和const做电梯回家,进电梯后不小心点击了十层,我们本想去一层的。银科有些电梯是可以取消所按的电梯的。const就尝试了一下: 左键单击按住?。。。。不行 双击呢?。。。。不行 靠!拖曳呢?。。。。不行 这时我待不住了:“你砸就这么笨呢?还有右键单击你砸不试试呢!?”。这时我换成中指单击按住(左键单击是用的食指),灵异事件发生了,十层的按钮灭了,取消成功了!?。。。。。。 September 26 CodeGenerator--一个我写的代码生成软件CodeGenerator 是基于数据库的代码生成器(目前版本只支持sqlserver环境),可以生成C#和VB两种语言的源代码。该工具基于MVC设计思想,生成开发中需要的 M、C 两层的基础类。用户可以通过向导,轻松地生成基础存储过程、DataRow实体类、DataTable实体类和数据库帮助类。代码清晰,便于维护。Code Generator当前版本是0.642. 该工具100%使用C#编写,目前仍然处于完善中。欢迎大家批评指正! 由于个人的目光短浅,只图眼前利益,CodeGenerator目前只支持sqlserver。 August 30 咦?!b4,又见b4!奇怪了,最近为什么我b4的人越来越多了?就拿const来说吧,本来我们轮着买早餐的。 前天,我自己吃蛋糕,他先我借了2块钱,结果不还了!我也好睁一只眼,闭一只眼了。 昨天,8点40下的车,他愣说还是早点上去吧,结果只买了两块钱的包子(他买单)。晕 今天,8点56下的车,他说算了,还是吃了再上去,结果不但吃了包子,还要喝豆浆!还加蛋!什么?废话,这次当然是我付钱~~~。 你说这种人是不是b4一下? ---__--- !!! August 17 常用正则表达式(Mark)正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 匹配空白行的正则表达式:\n\s*\r 匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> 匹配首尾空白字符的正则表达式:^\s*|\s*$ 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配网址URL的正则表达式:[a-zA-z]+://[^\s]* 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7} 匹配腾讯QQ号:[1-9][0-9]{4,} 匹配中国邮政编码:[1-9]\d{5}(?!\d) 匹配身份证:\d{15}|\d{18} 匹配ip地址:\d+\.\d+\.\d+\.\d+ 匹配特定数字: 匹配特定字符串: 下表是元字符及其在正则表达式上下文中的行为的一个完整列表: 今天我花了一个下午的时间去找一个逗号?!看来真是不要相信任何人的代码。 tapestry这么牛X的东西都是有bug的。 恩,是啊,牛人也是先有卵细胞和精子,然后是胎儿,然后是牛犊子,然后才那啥那啥。。。。 你崇拜他简直是自我封闭神学社会主义者。恩 July 18 谁说Java不用synchronized就锁不死对象哩?如果我们不使用synchronized关键字,还可以进行线程同步吗?能! 首先介绍两个概念,硬件同步原语和CAS。 大多数现代处理器都包含对多处理的支持。当然这种支持包括多处理器可以共享外部设备和主内存,同时它通常还包括对指令系统的增加来支持多处理的特殊要求。特别是,几乎每个现代处理器都有通过可以检测或阻止其他处理器的并发访问的方式来更新共享变量的指令。 支持并发的第一个处理器提供原子的测试并设置操作,通常在单位上运行这项操作。现在的处理器(包括 Intel 和 Sparc 处理器)使用的最通用的方法是实现名为 比较并转换或 CAS 的原语。(在 Intel 处理器中,比较并交换通过指令的 cmpxchg 系列实现。PowerPC 处理器有一对名为“加载并保留”和“条件存储”的指令,它们实现相同的目地;MIPS 与 PowerPC 处理器相似,除了第一个指令称为“加载链接”。) CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在 CAS 指令之前返回该位置的值。(在 CAS 的一些特殊情况下将仅返回 CAS 是否成功,而不提取当前值。)CAS 有效地说明了“我认为位置 V 应该包含值 A;如果包含该值,则将 B 放到这个位置;否则,不要更改该位置,只告诉我这个位置现在的值即可。” 通常将 CAS 用于同步的方式是从地址 V 读取值 A,执行多步计算来获得新值 B,然后使用 CAS 将 V 的值从 A 改为 B。如果 V 处的值尚未同时更改,则 CAS 操作成功。 类似于 CAS 的指令允许算法执行读-修改-写操作,而无需害怕其他线程同时修改变量,因为如果其他线程修改变量,那么 CAS 会检测它(并失败),算法可以对该操作重新计算。清单 3 说明了 CAS 操作的行为(而不是性能特征),但是 CAS 的价值是它可以在硬件中实现,并且是极轻量级的(在大多数处理器中): 基于 CAS 的并发算法称为 无锁定算法,因为线程不必再等待锁定(有时称为互斥或关键部分,这取决于线程平台的术语)。无论 CAS 操作成功还是失败,在任何一种情况中,它都在可预知的时间内完成。如果 CAS 失败,调用者可以重试 CAS 操作或采取其他适合的操作。清单 4 显示了重新编写的计数器类来使用 CAS 替代锁定。 JDK1.5中将这些通往硬件同步原语暴露出来了(sun.misc.Unsafe),对于我们来说真是一大幸事。在大并发环境下,基于锁定的线程同步算法的代价是很昂贵的(这个我就不论证了,n多牛人都拜活过),那么,现在我们就可以写无锁定、无等待的算法了。 如果每个线程在其他线程任意延迟(或甚至失败)时都将持续进行操作,就可以说该算法是无等待的。与此形成对比的是,无锁定算法要求仅某个线程总是执行操作。(无等待的另一种定义是保证每个线程在其有限的步骤中正确计算自己的操作,而不管其他线程的操作、计时、交叉或速度。这一限制可以是系统中线程数的函数;例如下面的代码,如果有 20 个线程,每个线程都执行一次 package concurrent; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import sun.misc.Unsafe; public class NonSynTest{ static class IncMan implements Runnable{ private String fID; public IncMan( String id){ this.fID = id; }public void run(){ try{ NonSynTest.begin.await(); for (int i = 0; i < 2000000; i++){ nosyn.incIndex(); } } catch (InterruptedException e){ } finally{ NonSynTest.end.countDown(); System.out.println("Thread"+fID+" finished!"); } } } static final int threadlen = 20; static CountDownLatch begin = new CountDownLatch(1); static CountDownLatch end = new CountDownLatch(threadlen); static NonSynTest nosyn = new NonSynTest(); private static Unsafe unsafe = null; private static long valueOffset; static{ try{ unsafe = UnsafeTest.getUnsafe(); valueOffset = unsafe.objectFieldOffset(NonSynTest.class .getDeclaredField("index")); } catch (Exception ex){ throw new Error(ex); } } public static void main(String[] args) throws InterruptedException{ ExecutorService exec = Executors.newFixedThreadPool(threadlen); for (int index = 0; index < threadlen; index++){ exec.submit(new IncMan(index+"")); } System.out.println("Game Start"); begin.countDown(); end.await(); exec.shutdown(); System.out.println("Game Over"); System.out.println("Count: "+nosyn.getIndex()); } private int index = 0; public int getIndex(){ return index; } public void incIndex(){ for (;;) { int current = index; int next = current + 1; if(unsafe.compareAndSwapInt(this, valueOffset, current, next)) return; } } } July 13 地上有人掉下的钱,你会捡吗?一毛钱? 切~~一毛钱都懒得我弯腰!
一块钱? 一块钱也太少了吧?!
十块钱? 多丢人啊,叫人看到你贪小便宜,多不好意思?
一百块钱? 是个圈套吧,是不是旁边有个骗子正盯着的。还是不冒这个风险了。
一叠钱? 假钞!绝对是假钞!你当我是傻子啊,这还看不出来?!
结论:无论地上掉了多少钱,都不会有人捡。 July 09 何为形而上?(selfmark)《易经·系辞》:“形而上者谓之道,形而下者谓之器,化而裁之谓之变;推而行之谓之通,举而措之天下之民,谓之事业。”。通常的理解是,大道无形,故旧形而上,器用之物为有形,是为形而下。“形而上学”一词与传统用法中的玄学、理学大体相通,现在则通指我们今天所说的哲学或人文学科,“形而下学”则相当于我们今天所说的自然科学,近代中国学人将西文metaphysics翻译为“形而上学”,在学术上精细的理解和分析一直纷争无定论。 |