Home

关于吞灯泡问题

之前网上有一个很火的帖子,关于为什么不能吞灯泡的问题[1],还有很多被好奇心害死娃们前仆后继的证明并跟帖[2]。不过最近果壳传出一个视频辟谣,看结果貌似吞灯泡没神马大不了的。 PS:这位哥哥真是很有献身精神和娱乐精神啊。 视频1 吞宝剑吞铁球算个毛,真的猛士敢于吞灯泡 参考文献: [1] 为什么不能吞灯泡(好奇心太强者慎入), [2] 为什么不能吞灯泡(亮点在下面的跟帖),

Read more

基于本地缓存的多表级联操作的实现(C#)

背景:数据库操作中我们经常会遇到级联修改的问题,在之前的一篇文章1里我们探讨了多表级联的一种实现方式,这篇文章我们将探讨另一种实现方式,即通过本地缓存的方式,避免不必要的存储过程。 定义: 事实表:中央表,它包含联系事实与维度表的数字度量值和键。简单说,事实表包括各个维度的ID。 维表:述事实数据表中的数据。维度表包含创建维度所基于的数据。 首先,我们的条件是,级联不是很复杂,存在一张事实表和若干维表,通过单ID将事实表和维表进行级联。思路是:首先本地缓存维表的所有数据,然后将事实表的数据绑定到DataGridView上,将ID列设置为DataGridViewComboBoxColumn,绑定相应的维表,指定值字段和显示字段,让结果自动对应。 举个简单的例子:订单...

Read more

仿QQ、MSN消息提示窗口的实现(C#)

前言:我们在QQ、MSN、飞信等即时通信软件中经常看到消息弹出提示,即屏幕右下角弹出一个消息提示框,然后过一段时间隐去(有时候也不隐去,比如一个艰难的决定)。这种提示方式在消息通信中比弹MessageBox更符合用户习惯,前者往往阻碍用户正常操作。我们尝试在.Net下模拟这种方式。 坦白的说核心代码是某位大牛(John O’Byrne)写的,另一位大牛Patrick Vanden Driessche 修改了部分代码,我在此基础上增加了对多弹框的支持,文后附了原代码和我修改之后的代码。 多弹框的实现部分主要写了一个PlaceManager类每次从0下标开始检测哪个位置可用,然后在这个位置弹出消息提示框,消息提示框隐掉之后再回收这个位置。 考虑到同时弹出两个及两个以上框的几率非常小,...

Read more

“违反并发性: UpdateCommand 影响了预期1条记录中的0条”原因分析

该问题出现在使用DataAdapter自动对DataTable(或DataSet)进行更新的时候,具体情形是:通过界面添加了一条记录,然后调用DataAdapter的Update方法更新了数据,之后又修改或删除了这条记录。 原因网上有很多说法,大部分的分析我感觉是扯淡,其实主要的原因是自增长字段的值没有跟数据库同步1,即前台的记录里添加了一条记录,但是程序不知道自增长的ID字段应该填充多少,用户也不可能指定这个ID,更新了之后数据库自动填充了自增长ID,但是前台对应的DataTable(或DataSet)里却没有同步更新,从而导致DataAdapter不知道根据什么字段来定位修改的记录,因而出错。 具体的解决方法参考1一文中给出了一种方法,即每次插入记录的时候去服务器查询自增长种子...

Read more

关于腾讯12年品牌广告

据说是春晚前的一个广告,拍的挺感人的。腾讯开始走温情路线了,尤其瞄准了老爸老妈这一辈人。不过不得不说还真是挺有效果。 罗永浩(或者是周云蓬)说过:我们这些在外打拼的人,一点点的成绩在父母那里都会被无限的夸大。其实不只是成绩,父母眼里跟我们任何相关的事情都会变得无限重要,虽然这在我们自己看来只是小事。 父母曾经何等意气风发,现在却已两鬓斑白,这事情想起来就心酸。 二十年光阴,想想真不知道是怎么过来的。时间就是如此无情,你意识到沧桑的时候,光阴早已将过往带到记忆里去了,无可挽回。 珍重万千啊。 顺便附一个太平洋保险的广告,温情路线,甚为感人。背景音乐是李健的《爱的四季》。

Read more

张宗昌的搞笑诗

# 来源:天涯 张宗昌,字效坤,山东掖县人,土匪出身,身高1.85米,生得五大三粗却性情刁钻。适逢民国改朝换代,他舞枪弄棒、打家劫舍,拉队伍、抢地盘,侥幸混得一席之地。1925年任山东督办,横征暴敛,贩卖鸦片、勾结日本,成了北洋军阀当中声名最劣的一个,被当作是祸国殃民的军阀样本。 张宗昌有个“狗肉将军”的“美名”,还有一个外号叫“三不知将军”,据鲁迅所说,这三不知是指他不知道自己有多少钱,不知道自己有多少兵,不知道自己有多少姨太太,也就是说他兵多、钱多、女人多,多得他自己也数不清。 张宗昌本人大字不识一斗,却喜欢附庸风雅,主政山东时向清末状元王寿彭学习写诗,还正儿八经地出版了一本《效坤诗钞》。很多人嘲笑张宗昌的诗不像诗,但若要论影响,张宗昌的诗却比当时许多喝了一肚子墨水的诗家写...

Read more

多表级联增删查改操作的实现(C#)

本文背景: 我们经常会遇到这样的问题:从数据库里通过几个表级联查询数据,然后显示到界面上,用户修改了这些级联之后的数据后,如何将数据更新到数据库里去?我们查询的时候完全可以使用视图,但是视图不支持增删查操作。如何实现视图的可更新呢? 本文的实现主要采用了.Net DataTable(和DataSet),使用DataAdapter可更新数据的特性,底层通过存储过程更新数据。逻辑结构如图1所示: 图 1 逻辑结构 基本的想法是: 通过视图进行数据的查询操作,而且这样可以通过SQLServer等工具自动生成视图。 删除,插入和修改分别实现存储过程(或Sql语句),然后构建DataAdapter,将DataAdapter的InsertCommand,UpdateComm...

Read more

对“基于长度和定界符带校验的TCP分包方式”的一些改进

“长度、分隔符加校验的TCP分包设计(C#)”[1]一文提出了一种综合长度和特殊字符定界两种TCP分包方式的新的分包方式,原文给出的实现没有考虑长度字符被分开两次传播的情况,同时原算法没有明确的算法描述,基于多种情况的综合,容易遗漏,这里给出改进后的算法: 如果WaitForLength置位,则拼上原来的字段,凑齐长度字段信息。 如果LeftLength不为0,则判断剩余缓冲区是否包含了报文剩余部分,如果包含则拼合字段,判断结尾是不是结束定界符>,否则拼合剩余缓冲区,LeftLength更新。 找到一个开始定界符,否则拼合剩余缓冲区,等待下次数据到达。 总的来说,就是通过开始定界符标定一个报文的开始,通过长度字段得到报文的结尾位置,通过结尾位置是不是结束定界符...

Read more