自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 457

原创 面向对象OO的重要概念

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

2011-03-22 22:51:00 530

原创 C++重要知识点

最近在准备c++的考试。真没想到工作之后的单位会组织这种考试,还专门开发了考试系统。慢慢来完善这个帖子吧。希望不会半途而废。 ---------------------------------------------------------------- 从公司的现在的情况来看,跟面向对象相关的继承、虚函数等方面的错误都相对容易找到。而跟memory相关的memory leak、m

2010-09-11 09:56:00 524

原创 秒杀问题分析

互联网大潮下,电商汹涌,交易中的秒杀/超卖成了技术人员经常碰到技术问题。秒杀/超卖首先可以从业务上来解决。比如,先抽奖事后再开奖。如果业务不能避免,那么只能通过技术手段了。第一个方式是利用数据库的事务串行和行级锁,辅以正确的sql语句。比如update resource_tbl set  num=num-1 where id=1 AND num>0   这种

2015-05-17 22:19:55 752

转载 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 675

转载 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 671

转载 .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 1280

原创 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 873

原创 WPF - MVP模式的几个debug小技巧

WPF的开发,不少都用的是MVP模式(或者修正版的MVPC模式)。这种模式下,很多logic的处理都关联到presenter上。如果为了presenter重用或者logic重用,调试很麻烦。这里分享几个实用的小技巧。#1  加一个TestLogic,把它和你的目标presenter的目标property关联。这样很容易跟踪什么时候这个属性被修改了。#2   替换掉原来的pr

2013-12-03 12:58:44 1521

原创 Windows Cmd几个常用命令

比较常用有where(找到文件path),findstr(字符串查找), dir(文件查找)如果你想查找包含某个字符串的文件,怎么找?findstr /s /c:[string_to_search]如果你想找到包含某个string的文件,而且还模糊的记得文件名的几个字符,怎么找到他们? 当然可以用findstr /s [string_to_search]来找到。更快

2013-11-28 17:36:49 707

原创 c++ - 为什么头文件里只申明不实现

C++为什么不能把函数实现放在头文件里?以前一直觉得这样写不符合规范,因为头文件可能会expose给client,但是实现不应该expose给client。最近偷懒,把实现放在头文件里,发现还有一个c++编译的原因。 Hi.h#pragm once Void Hi() {Printf(“hello”);}a.cpp

2013-08-14 12:32:07 2505

原创 WPF - 几个关键点

第一点,关于binding的。binding功能非常强大,也是wpf的基础之一;数据都靠它。binding使用上的问题,可以看这个帖子 http://blog.csdn.net/fishhg/article/details/6244986要想binding之后,数据可以同步更新,那么data source必须要么实现了INotifyPropertyChanged接口,要么是Depe

2013-01-17 17:37:13 547

原创 GC陷阱

都说C++的很容易内存泄漏,所以有了GC。有了GC,爸妈再也不用担心我的学习(J)。但是使用GC也有几个大陷阱要注意。 第一个是资源被一直引用。当然都是无意中造成(谁会存心这么做?拉出去突突了)。常见的就是event的handler;有用+=,但是忘了-=。如果handler中有大量资源,而且不再被使用了,也会造成内存“泄露”。还有就是一些static的引用,它们的生命周期一直到a

2013-01-04 17:18:42 406

原创 最好的教程竟是帮助文档

最近在学struts2,上网找了不少资料,就想找个简单明了的,好偷懒。找到不少,都是七拼八凑的,根本不能用,走了不少弯路;最后只能老老实实看struts2的doc。没想到,最好的教程就他自带的doc! 在这里(Apache Struts 2 Documentation >Home > Tutorials > Getting Started),有非常仔细的说明,是很好的入门材料!

2012-12-12 21:13:20 328

转载 [.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 486

原创 [.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 494

原创 一个有意思的.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 395

转载 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 349

转载 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 290

原创 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 305

原创 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 416

原创 如何更有行动力

估计一下完成最高优先级的任务需要多少时间,然后将你的时间划分为各个“冲刺阶段”,每个阶段可能是1周或好几周时间,为你的下一个冲刺阶段安排满足够多的任务。你可能还希望保留一段时间以应对紧急的需求,但其余的都可以提前规划好。这跟敏捷提倡的有点相似,短迭代周期

2012-06-30 20:56:23 1449

原创 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 388

原创 .Net - C#的引用概念不能没有啊

今天犯了一个低级错误,晕啊!如下面的代码所示, #1不会对Thread的culture有impact,除非用了#2的语句。---------------------------------------------------------------------------------------------------------------------------------------

2012-05-11 17:07:39 313

原创 什么地方必须用reference而不能用pointer

运算符重载以及inline函数。运算符也是一种函数,也应该可以重载;他可以达到code精炼、提高可读性、降低复杂度的目的。

2012-04-02 13:46:24 340

转载 继承与组合(表驱动)

考虑一个事件驱动的模块,这个模块管理很多个用户,每个用户需要处理很多的事件。那么,我们建立的驱动表就不是针对模块了,而是针对用户,应该是用户在某状态下,收到某模块的某事件的处理。我们再假设用户可以分为不同的级别,每个级别对上面的提到的处理又不尽相同。用面向对象的思路,我们可以考虑设计一个用户的基类,实现相同事件的处理方法;根据级别不同,定义几个不同的子类,继承公共的处理,再分别实现不同的处理。

2012-03-16 13:32:27 388

转载 什么是表驱动

普通代码----------------------------------------------------------------------------------------------------------------------------void msg_proc(const char *msg_type, const char *msg_buf){

2012-03-16 13:18:40 894 2

原创 cross DLL problems

Dll的问题除了version control等问题(blog.csdn.net/fishhg/article/details/7256931),还有一个cross DLL 问题。why?最简单的情况是,在不同dll里面的new与delete可能被链接到不同的代码,这样也许会造成用一个内存管理的实现去释放另一个内存管理的实现分配的内存,从而带来怪异问题。这是编译和链接的问题。

2012-03-15 20:24:31 1124

原创 股票中关于股份数的几个基本概念

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 716

转载 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 531

转载 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 1250 1

原创 算法面试题 - 找出两个单向链表相交的位置

题目:   找出两个单向链表相交的位置   请考虑周全提示:  除了普通情况外,还要考虑环以及2者首尾相连。参考答案:最普通的情况下,可以这样做:  1. 算出两个链表长度。  2. 假设长度差为n,扫描长的链表n个节点。  3. 同时扫描两个链表,碰到第一个相同的就是公共节点。如果有环呢?(别人的方法)  判

2012-02-02 18:08:14 654

转载 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 523

转载 为什么印钱是脑残想法

发信人: 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 615

转载 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 5096

原创 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 1308

原创 为什么使用if else分支语句不好

为什么使用if else分支语句不好?不是说不能用,而是说在业务逻辑层等比较抽象的地方使用冗长的if else不好。首先能想到的一点就是代码违反了 open close原则(open to extesion & close to modification)。每一次有新的逻辑变动,都需要了解原有代码的逻辑,并在适当的地方增加分支语句。这要求程序员对编写非常完整的逻辑。打个比方,在一个继承

2011-12-09 15:59:08 1318

原创 Three-tier与MVC的不同

先说Three-tier。简单点说,                   客户机---应用服务器-----数据服务器典型的情况下有多个db服务器和多个客户端。应用服务器也可以有多个。应用服务器指 对客户端的请求进行分析,平衡,再将其分配给db服务器。对db服务器返回的结果集分析,平衡,发送至不同的客户端。一个最简单的例子:  client1,client2发出两个相同的se

2011-12-09 15:18:37 2126

转载 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 475

原创 使用STL的vector要留意几点

vector是用于访问的container中的所有元素,而一个list则用于在其中所有位置上进行插入操作。为什么呢?vector的底层实现是一片连续的存储区,像是一个数组。如果元素个数超过现有空间,vector会先分配一块新的、更大的存储区,接着将旧数据copy到新存储区,然后销毁旧存储区,最好释放旧存储区。这就是所谓的“溢出“导致的重分配,有的时候这个代价不小。一旦底层的

2011-10-30 21:13:38 392

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除