- 博客(144)
- 收藏
- 关注

原创 Think code completely
最近在看别人写的代码,发现不少问题。这些问题除了业务错误外,很多逻辑错误都是可以通过状态机分析来发现的。最常见的状态转换模式是 initialize -> use -> [ loop entry] reset/clear/refresh -> use again -> [loop exit] release;这是一个完整的生命周期。或者说Think code with a comp
2012-01-11 16:39:09
490

原创 面向对象OO的重要概念
抽象有很多种,有数据的抽象和过程的抽象。数据的抽象就是从问题领域中提取出一些能反映问题本质的对象;这是面向对象OO的基本功。OO中,在定义类的层次关系时,有几个重要的概念;如果能从抽象的角度来理解他们,有助于设计出更好的架构,能使解决方案更好的模拟/描述问题空间。 Public Inherit: Is-
2011-03-22 22:51:00
564

原创 C++重要知识点
最近在准备c++的考试。真没想到工作之后的单位会组织这种考试,还专门开发了考试系统。慢慢来完善这个帖子吧。希望不会半途而废。 ---------------------------------------------------------------- 从公司的现在的情况来看,跟面向对象相关的继承、虚函数等方面的错误都相对容易找到。而跟memory相关的memory leak、m
2010-09-11 09:56:00
554
原创 秒杀问题分析
互联网大潮下,电商汹涌,交易中的秒杀/超卖成了技术人员经常碰到技术问题。秒杀/超卖首先可以从业务上来解决。比如,先抽奖事后再开奖。如果业务不能避免,那么只能通过技术手段了。第一个方式是利用数据库的事务串行和行级锁,辅以正确的sql语句。比如update resource_tbl set num=num-1 where id=1 AND num>0 这种
2015-05-17 22:19:55
835
转载 why use assertions in code
why?they make debugging easier.The time consuming part of debugging is tracing a problem from the symptom you first notice back to the error in the code. Well written assertions will make the sy
2014-01-21 10:26:03
748
转载 Perl的缘起
Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier.[7]According to Wall, Perl has two slogans. The first is "Th
2014-01-03 10:18:34
741
转载 .net - dispatcher vs thread
Dispatcher Multiple tasks inone thread. you can't update any UI controls from a thread that doesn'town the control. very Visual (Button, Textbox, Combobox, etc.) inherits fromDispacterObjec
2013-12-23 17:18:32
1321
原创 C++ - 数值比较numerical comparison
在工作碰到好几次不同type的integer/value比较出错,导致奇怪的bug。很小的问题,却不容忽视。看几个例子.原来我的想法是他们bitwise level是一样的,这4个比较应该都是true才对。char m_costBasis1;UINT1 m_costBasis2;//define unsigned char UINT1UINT2 l_BasisNum; //d
2013-12-20 14:18:39
945
原创 WPF - MVP模式的几个debug小技巧
WPF的开发,不少都用的是MVP模式(或者修正版的MVPC模式)。这种模式下,很多logic的处理都关联到presenter上。如果为了presenter重用或者logic重用,调试很麻烦。这里分享几个实用的小技巧。#1 加一个TestLogic,把它和你的目标presenter的目标property关联。这样很容易跟踪什么时候这个属性被修改了。#2 替换掉原来的pr
2013-12-03 12:58:44
1572
原创 Windows Cmd几个常用命令
比较常用有where(找到文件path),findstr(字符串查找), dir(文件查找)如果你想查找包含某个字符串的文件,怎么找?findstr /s /c:[string_to_search]如果你想找到包含某个string的文件,而且还模糊的记得文件名的几个字符,怎么找到他们? 当然可以用findstr /s [string_to_search]来找到。更快
2013-11-28 17:36:49
944
原创 c++ - 为什么头文件里只申明不实现
C++为什么不能把函数实现放在头文件里?以前一直觉得这样写不符合规范,因为头文件可能会expose给client,但是实现不应该expose给client。最近偷懒,把实现放在头文件里,发现还有一个c++编译的原因。 Hi.h#pragm once Void Hi() {Printf(“hello”);}a.cpp
2013-08-14 12:32:07
2634
原创 WPF - 几个关键点
第一点,关于binding的。binding功能非常强大,也是wpf的基础之一;数据都靠它。binding使用上的问题,可以看这个帖子 http://blog.youkuaiyun.com/fishhg/article/details/6244986要想binding之后,数据可以同步更新,那么data source必须要么实现了INotifyPropertyChanged接口,要么是Depe
2013-01-17 17:37:13
577
原创 GC陷阱
都说C++的很容易内存泄漏,所以有了GC。有了GC,爸妈再也不用担心我的学习(J)。但是使用GC也有几个大陷阱要注意。 第一个是资源被一直引用。当然都是无意中造成(谁会存心这么做?拉出去突突了)。常见的就是event的handler;有用+=,但是忘了-=。如果handler中有大量资源,而且不再被使用了,也会造成内存“泄露”。还有就是一些static的引用,它们的生命周期一直到a
2013-01-04 17:18:42
477
原创 最好的教程竟是帮助文档
最近在学struts2,上网找了不少资料,就想找个简单明了的,好偷懒。找到不少,都是七拼八凑的,根本不能用,走了不少弯路;最后只能老老实实看struts2的doc。没想到,最好的教程就他自带的doc! 在这里(Apache Struts 2 Documentation >Home > Tutorials > Getting Started),有非常仔细的说明,是很好的入门材料!
2012-12-12 21:13:20
358
转载 [.NET]lambda表达式的优势
委托,如果不追究细节,从表面上来看我们可以将其通俗地理解为一个安全的“函数指针”。当然,这个函数指针其实也是一个对象,有自己的成员,也会封装了被调用方的上下文等等。http://blog.zhaojie.me/2009/08/from-delegate-to-others.html http://blog.zhaojie.me/2009/03/anonymous-method-fa
2012-12-11 13:36:49
522
原创 [.net]threads by new vs. threads of ThreadPool
都是用thread来处理任务,有什么不一样呢? Starting a new thread can be a very expensive operation. The thread pool reusesthreads and thus amortizes the cost. Unless you need a dedicated thread, thethread pool is th
2012-12-11 13:28:06
537
原创 一个有意思的.net应用bug
2012-12-04有一个比较有意思的.net应用的bug。涉及到了.net的几个重要概念。这是一个wpf的应用,使用了第三方的ribbon控件。现象是这样的,一个window关闭之后,相同类型的window被再次打开;此时,window对应的contextual ribbon中行为只跟当前active的window的数据无关联。当前window的改变与contextual r
2012-12-07 15:04:09
422
转载 WPF - 基本要点
如何用Uri来定位一个resourcehttp://msdn.microsoft.com/en-us/library/aa970069(v=vs.100).aspx (Pack URIs in WPF)Xaml基本语法http://msdn.microsoft.com/en-us/library/ms752059.aspx (xaml overview)
2012-09-07 13:20:20
383
转载 C++ freeing static variables referring heap resource
It will have static lifetime and be destroyed after main returns:static std::auto_ptrT> thePointer;Another option is to register your own atexit function:// staticvoid YourClass::fre
2012-08-17 13:16:38
330
原创 useful keyword for MSDN
There are 2 useful key words: tutorial, guide. you can use them to find many usefulquick start information about learning language, Especially in MSDN.Take C# as an example, In MSDN, there are
2012-07-25 13:53:34
335
原创 Why don't structs support inheritance?
假设.net中的struct可以inherit。现有这样的代码:BaseStruct a;SubStruct b; //inherits from BaseStruct, added fields, etc.a = b; //?? expand size during assignment?这会出什么问题?因为struct是value type不是reference type,
2012-07-25 13:10:59
448
原创 如何更有行动力
估计一下完成最高优先级的任务需要多少时间,然后将你的时间划分为各个“冲刺阶段”,每个阶段可能是1周或好几周时间,为你的下一个冲刺阶段安排满足够多的任务。你可能还希望保留一段时间以应对紧急的需求,但其余的都可以提前规划好。这跟敏捷提倡的有点相似,短迭代周期
2012-06-30 20:56:23
1500
原创 VC++运行时的出错信息 不可不仔细读
今天跑了了一个z.exe,但是一跑就出错:Entry Point Not Found!详细信息是"The procedure entry point could not be locateded in the dynamic link library xxx.dll"。这个详细信息中间是一长串由?,@ ,$和不成完整单词的word组成。问了一下对这个功能熟悉的
2012-05-30 17:41:37
484
原创 .Net - C#的引用概念不能没有啊
今天犯了一个低级错误,晕啊!如下面的代码所示, #1不会对Thread的culture有impact,除非用了#2的语句。---------------------------------------------------------------------------------------------------------------------------------------
2012-05-11 17:07:39
345
原创 什么地方必须用reference而不能用pointer
运算符重载以及inline函数。运算符也是一种函数,也应该可以重载;他可以达到code精炼、提高可读性、降低复杂度的目的。
2012-04-02 13:46:24
364
转载 继承与组合(表驱动)
考虑一个事件驱动的模块,这个模块管理很多个用户,每个用户需要处理很多的事件。那么,我们建立的驱动表就不是针对模块了,而是针对用户,应该是用户在某状态下,收到某模块的某事件的处理。我们再假设用户可以分为不同的级别,每个级别对上面的提到的处理又不尽相同。用面向对象的思路,我们可以考虑设计一个用户的基类,实现相同事件的处理方法;根据级别不同,定义几个不同的子类,继承公共的处理,再分别实现不同的处理。
2012-03-16 13:32:27
420
转载 什么是表驱动
普通代码----------------------------------------------------------------------------------------------------------------------------void msg_proc(const char *msg_type, const char *msg_buf){
2012-03-16 13:18:40
994
原创 cross DLL problems
Dll的问题除了version control等问题(blog.youkuaiyun.com/fishhg/article/details/7256931),还有一个cross DLL 问题。why?最简单的情况是,在不同dll里面的new与delete可能被链接到不同的代码,这样也许会造成用一个内存管理的实现去释放另一个内存管理的实现分配的内存,从而带来怪异问题。这是编译和链接的问题。
2012-03-15 20:24:31
1173
原创 股票中关于股份数的几个基本概念
Authorized shares (can issue) = outstanding shares (actually issued) + Treasury | --- = Float (free sold/bought) + Restrictedrefer to link below:http://ww
2012-02-24 18:17:15
763
转载 DLL Hell & .Net Strong Name
What is “DLL Hell”?dependency hellWhy it occurs? Sharing code in a wrong wayincorrect registration: all applications share one registration entryincorrect memory sharing: only one instance l
2012-02-14 10:05:34
560
转载 Top 10 Leadership Qualities
什么是leader?who is able to get others to willingly follow. 哪10个特质呢?They have a vision. they has a clear, vivid picture of where to go, as well as a firm grasp on what success looks like and ho
2012-02-03 16:21:09
1354
原创 算法面试题 - 找出两个单向链表相交的位置
题目: 找出两个单向链表相交的位置 请考虑周全提示: 除了普通情况外,还要考虑环以及2者首尾相连。参考答案:最普通的情况下,可以这样做: 1. 算出两个链表长度。 2. 假设长度差为n,扫描长的链表n个节点。 3. 同时扫描两个链表,碰到第一个相同的就是公共节点。如果有环呢?(别人的方法) 判
2012-02-02 18:08:14
690
转载 c++ - inline放在哪好
Best practice: only in the definition outside the class body. class Foo { public: void method(); ← best practice: don't put the inline keyword here ... }; inline void Foo::method()
2012-01-19 12:58:03
558
转载 为什么印钱是脑残想法
发信人: adminking (水水), 信区: EconForum标 题: Re: 连基本常识都错了Re: 为什么印钱是脑残想法? 解释1发信站: 水木社区 (Wed Jan 11 10:24:53 2012), 站内 中国只有1吨的物资,你印1kw 印1个亿都是1吨物资。。。 底层是多了,他分得东西不多啊,这道理多简单 上层800万 底层200万 印成1亿,上
2012-01-18 18:58:07
644
转载 MFC中BOOL和bool的区别大不大
这个问题,一般都不是问题。 不过细想,还是大有洞天的!什么是BOOL?mfc中是“typedef int BOOL;”两者区别在哪里?首先BOOL的性能更好。用bool来和一个int比较时,会有cast,而BOOL不会有,因为BOOL本身就是一个int。汇编代码上的区别可以参考http://www.codercorner.com/Bools.htm的片段。但是B
2012-01-10 13:33:21
5277
原创 C++中,exit和return有什么不同?
总能看到,但是你知道这两者有什么不同呢?------------------------------------------------------------------------exit() is used to exit the program as a whole. In other words it returns control to the operating sy
2012-01-10 13:06:33
1347
原创 为什么使用if else分支语句不好
为什么使用if else分支语句不好?不是说不能用,而是说在业务逻辑层等比较抽象的地方使用冗长的if else不好。首先能想到的一点就是代码违反了 open close原则(open to extesion & close to modification)。每一次有新的逻辑变动,都需要了解原有代码的逻辑,并在适当的地方增加分支语句。这要求程序员对编写非常完整的逻辑。打个比方,在一个继承
2011-12-09 15:59:08
1379
原创 Three-tier与MVC的不同
先说Three-tier。简单点说, 客户机---应用服务器-----数据服务器典型的情况下有多个db服务器和多个客户端。应用服务器也可以有多个。应用服务器指 对客户端的请求进行分析,平衡,再将其分配给db服务器。对db服务器返回的结果集分析,平衡,发送至不同的客户端。一个最简单的例子: client1,client2发出两个相同的se
2011-12-09 15:18:37
2182
转载 Date Bases for Finance
Securities processing involves the use of multiple date bases. There are two underlying concepts for date bases:contractual terms and accounting control. Understanding them makes the entire topic st
2011-12-09 14:45:05
507
原创 使用STL的vector要留意几点
vector是用于访问的container中的所有元素,而一个list则用于在其中所有位置上进行插入操作。为什么呢?vector的底层实现是一片连续的存储区,像是一个数组。如果元素个数超过现有空间,vector会先分配一块新的、更大的存储区,接着将旧数据copy到新存储区,然后销毁旧存储区,最好释放旧存储区。这就是所谓的“溢出“导致的重分配,有的时候这个代价不小。一旦底层的
2011-10-30 21:13:38
421
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人