
随笔
文章平均质量分 78
ysu108
这个作者很懒,什么都没留下…
展开
-
随笔(2013.12)
1.ACE的单例,只是一个模块内的单例,并不是一个进程中的单例,这里模块指的是一个dll文件,或者主程序中,如果在主线程调用ACE的对象管理器来获得单例,在在dll中调用获得单例是不同的2.可以先写测试用例,在写代码,这样可以对需求有更了解。不知道如何写用例,不知道如何测试,肯定是对需求不了解。3.代码重构也可以分步来重构,不是非要一下子全都推翻。可以一开始通过增加一些类,把类间蜘蛛网的关原创 2014-01-02 15:45:39 · 718 阅读 · 0 评论 -
随笔(2015.3)
1. firdbird 系统表相关可以参考http://blog.youkuaiyun.com/paluo/article/details/6208126 , 想修改一个表字段的编码方式,直接用alter table device alter "device_name" varchar(1000) character set gbk;方式不可以,说什么有完整性约束,用下面这个方式就可以了:原创 2015-04-01 11:16:00 · 537 阅读 · 0 评论 -
随笔(2015.2)
1.序列化可以实现远程过程调用,远程过程调用都是通过对象序列化?2.反射机制可以让系统开放.3.equals比较的是两个对象里面数值是否一样,==比较的是这两个包装类引用是否指向同一对象4.垃圾回收并不能强制执行,只能通过接口建议执行。why?,虽然垃圾回收机制会对系统造成一定的影响,但是对于目前硬件的处理能力而言,相对于没有垃圾回收5.垃圾回收是标记被引用的对象,用排除的方法来找原创 2015-08-10 13:59:07 · 548 阅读 · 0 评论 -
随笔(2015.7)
1. "We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nic原创 2015-08-10 13:57:21 · 585 阅读 · 0 评论 -
随笔(2015.08)
对于程序,需要考虑每个函数的返回错误,是否需要对错误处理。分布式事务强一致性的尽量避免。分布式事务有X/Open组织提出的分布式事务的规范XA,XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。分布式事务分为两阶段提交与一阶段提交,两阶段提交对一致性要求较强,(XA规范为两阶段提交)但对系统消耗较大。第原创 2015-08-28 16:51:39 · 465 阅读 · 0 评论 -
随笔(2015.09)
在一些关键的函数,例如回调过来开始处理的函数,流程逻辑一定要清楚,不要掺杂太多的逻辑处理,一定要短而且要清楚表达逻辑的走向。函数名字最好动词开始,把里面最主要的逻辑表达清楚,不要试图说明所有的动作,要抓住懂点。想写出扩展性强、容易理解的程序,写完后代码会变多,类会变多,方法会变多,变相增加了一部分工作量,但程序流程清楚(结构化编程),变化时改动小(抽象变化)。很多东西有共通的道理,如何让程序高原创 2015-09-30 16:56:31 · 426 阅读 · 0 评论 -
随笔(2015.10)
1.在一些关键的函数,例如回调过来开始处理的函数,流程逻辑一定要清楚,不要掺杂太多的逻辑处理,一定要短而且要清楚表达逻辑的走向。 2.函数名字最好动词开始,把里面最主要的逻辑表达清楚,不要试图说明所有的动作,要抓住懂点。 3.想写出扩展性强、容易理解的程序,写完后代码会变多,类会变多,方法会变多,变相增加了一部分工作量,但程序流程清楚(结构化编程),变化时改动小(抽象变化)。 4.很多东西有共原创 2015-10-23 16:49:59 · 535 阅读 · 0 评论 -
学习&思考&创新
2015年最后一天,做一点不同的总结。有些道理其实绝大多数人都知道,但是每个人理解都会有不一样,认知程度也不一样;而且知道是一回事,做是另外一回事;真正优秀的人不但深刻认知,而且能够坚持于行动。一年下来坚持的也就算是写博客,想一想去年的计划,什么学习这个又搞那个,脑子里很清楚,但很多甚至都没有开始。关于学习什么是理想的工作?繁忙的工作不一定能够提高一个人的能力,如果工作中的事情对于自己来说是没有任何原创 2015-12-31 16:44:27 · 877 阅读 · 0 评论 -
随笔(2015.12)
多线程调试问题。 遇到了cpu使用率过高的bug(双核cpu,有一个进程占一直用50%)。 多线程一般不要直接调试,因为可能会跟实际多线程运行不一样,毕竟调试时会阻塞当前线程。比较好的做法是:在代码中加输出log,然后运行程序,根据产生的log来分析。但这次涉及到使用第三方的sdk,怀疑可能是sdk中的线程有问题。问题定位方法有: 1)代码走查。直接用赵老师的话,“while里面要么调用阻塞函原创 2015-12-31 16:46:51 · 578 阅读 · 0 评论 -
随笔(2015.11)
在一些关键的函数,例如回调过来开始处理的函数,流程逻辑一定要清楚,不要掺杂太多的逻辑处理,一定要短而且要清楚表达逻辑的走向。函数名字最好动词开始,把里面最主要的逻辑表达清楚,不要试图说明所有的动作,要抓住懂点。想写出扩展性强、容易理解的程序,写完后代码会变多,类会变多,方法会变多,变相增加了一部分工作量,但程序流程清楚(结构化编程),变化时改动小(抽象变化)。很多东西有共通的道理,如何让程序高原创 2015-12-03 19:11:10 · 679 阅读 · 0 评论 -
随笔(2016.05)
使用新的库函数和方法的时候也要考虑下其异常情况与使用情况,例如对于内存的操作,使用memcpy、memset等操作比使用不熟悉的第三方库给可靠。 ps:任何方法都有使用的情况,如果不区分其使用的背景和上下文,可能与期望差之千里。代码的可测试性与健壮性一样,是一个非常重要的指标。而且不光是整个功能的测试,最好能够从类的方法、到功能、到模块,都有测试的代码与之对应。STM,ATM,OTN,MPLS原创 2016-06-02 17:13:44 · 440 阅读 · 0 评论 -
短迭代、演化、螺旋上升、多维数据
演化是一个长期的过程,螺旋上升是说事务发展的普遍规律,同时蕴含着否定之否定的过程。一开始说演化,最开始想到是恒星的演化,时间漫长。一个大的系统通常说是“演化”,例如淘宝网站的架构,不是一开始就这么复杂,而是从简单的模型慢慢演化而来。“凡事都有一个过程”,对于软件来说,还挺靠谱。对于软件来说,演化一般是说的大的版本的演化。往往受制于用户需求(满足即可)、硬件配置、网络等因素。对于软件,演化还有另外一层原创 2016-08-05 16:49:10 · 1135 阅读 · 0 评论 -
随笔(2015.1)
1.序列化可以实现远程过程调用,远程过程调用都是通过对象序列化?2.反射机制可以让系统开放.3.equals比较的是两个对象里面数值是否一样,==比较的是这两个包装类引用是否指向同一对象4.垃圾回收并不能强制执行,只能通过接口建议执行。why?,虽然垃圾回收机制会对系统造成一定的影响,但是对于目前硬件的处理能力而言,相对于没有垃圾回收5.垃圾回收是标记被引用的对象,用排除的方法来找原创 2015-02-25 14:47:43 · 665 阅读 · 0 评论 -
随笔(2014.12)
1. 虚拟内存,cpu分时,i/o等设计的目的是为了让程序员使用更容易,也就是“易用性”更强,为达到这样的目的,他们设计的出发点有一个——让每个进程看起来是独自享有硬件的,不必关心其他的进程。这样,在进程运行的时候,就可以放心的开启线程不必关系是否cpu被占用了,可以放心的new一块内存,不必关心是否这内存被别人用了。这样设计不仅是从易用性上考虑,也是从安全方面考虑,尤其是虚拟内存的设计,当一个进原创 2014-12-25 11:19:15 · 571 阅读 · 0 评论 -
随笔(2013.9)
1.FireBird使用IBExpert软件可以管理Firdbird数据库,其中打开后有一下几个tag,Domains,这个其实是用户自定义类型,和它的名字域关系不大,还有一个Generators,这个也是比较特殊的,是线程安全的计数器,可以使用成一个自增加的id,还有一个UDFs,这个从名字上可以看出来,叫做用户自定义函数。2.动态加载dll文件ace中有ACE_DLL类可以原创 2013-10-10 10:19:03 · 1023 阅读 · 0 评论 -
随笔(2013.8)
2013/8/81.session的作用:一直以为已连接套接字的句柄就可以表示一次会话了,但是在一个链接的套接字上可能存在很多次的会话,例如一个问答,如果没有session,而且双方都是异步设计的,那么可能第一个会话的请求回来第二次会话的应答。2.对于线程的设计:要找到耗费系统处理时间的地方,能使用单线程就不要使用多线程。同样一个问题,接收网络信息、解析消息、处理消息,可以设计多个线程处理原创 2013-08-08 15:33:11 · 752 阅读 · 0 评论 -
随笔(2014.1)
1. 设备更新,主动推送模式更好,不仅效率高(否则客户端要开线程定时查询),而且容易扩展。当消息需要经过很多查询流程的时候更为明显,如果一个查询经过很多服务器(处理者)才送到真正要查询的设备接入服务器,那么如果查询的人很多,不仅网络流量大,而且设备接入服务器负担大(所有查询都要亲自处理)。如果做成主动推送(订阅者)模式,那么,当设备有变化的时候,经过服务器,推送到客户端(查询者)直接打交道的服务器原创 2014-02-12 14:07:29 · 678 阅读 · 0 评论 -
随笔(2014.2)
1. 不要跨dll使用stl模板类微软的解释:Most classes in the Standard C++ Libraries use static data members directly or indirectly. Since these classes are generated through template instantiation, each executable原创 2014-02-28 16:57:20 · 743 阅读 · 0 评论 -
随笔(2014.4)
1.不是所有设备都适合自动寻址,如果一个设备没有显示器,没有键盘接口,那么如果自动寻址失败,这个设备就可能再也找不到了。这也是有些设备比如路由器的ip固定死了为192.1.1.1的原因。2.sip协议中之所以有1xx的回复是因为有响铃业务的需求,在去连接一个需要可能长时间响应的服务器,一般不会定下一个固定的等待时间等待服务器响应,服务器回定时回送一些“响铃”消息告诉连接的人在继续等待。原创 2014-05-17 09:44:10 · 660 阅读 · 0 评论 -
随笔(2014.6)
1. tcp也可能阻塞,什么Precator都是可以阻塞的,在异步情况下,如果有阻塞的地方例如(Onclose地方),整个程序可能会阻塞,而底层连接如果建立起来用netstat可以看出连接建立,但是不会回调OnConnect,这些相当于事件,如果一个地方阻塞,后面的就要排队等待。2. 数据如果是全靠变数据上报,可能会有数据丢失。造成丢失的原因不是连接问题,而是上报的阈值的问题,当变化数据小于某原创 2014-06-21 10:45:06 · 806 阅读 · 0 评论 -
随笔(2014.8)
1. 系统设计要找到瓶颈,“合适才是最好的”,一个系统不可能各个方面都面面俱到,根据业务不同,情况不同,可以定制设计。而且有的设计方法不是采用了就一定会有提高,例如读写分离。2. 紧耦合简单的业务往往都放在中心,例如告警与告警联动业务,设备管理与告警联动,另外一些特殊业务放在客户端,中心处理比较通用的业务3. c++单元测试框架googletest 一个关于软件测试的博客,详细介绍了Goo原创 2014-08-30 16:31:29 · 667 阅读 · 0 评论 -
随笔(2014.7)
1. DSQL, ESQL, PSQL DSQL概念不大确定,(DSQL语言难道是在iSQL工具下运行的么)ESQL可以参考百度百科,简单来说是可以在其他高级语言例如C语言中直接写SQL语句,然后用另外一个工具去编译这个C语言,听着就麻烦,大型工程编译岂不是很麻烦,一般是直接用特定数据库提供的接口去执行特定的语句。PSQL应该就是存储过程中的,还有一个iSQL,是用工具直接访问数据库原创 2014-07-23 09:58:37 · 947 阅读 · 0 评论 -
随笔(2014.9)
1. 智能指针问题都可以在代码中使用引用记数的方式替代掉,如果待删除的对象同时最多只被一个对象回调,那么可以用一个flag来表示“计数”,对象请求发送后与回调后改变这个标志位。2. time_t表示1970年0点到现在的秒数。3. 对于异步消息的问题,可能出现一种恶性循环情况,当服务器处理不了很多请求的时候,如果客户端定时发送异步请求那么服务器的未处理请求就会越来越多,而客户端获取到的请求原创 2014-09-26 14:27:27 · 597 阅读 · 0 评论 -
随笔(2014.10)
1. dynamic_cast 使用的时候,类继承关系B继承自A,C继承自B,那么A可以dynamic_cast为B也可以dynamic_cast为C。2. 一些情况会有模板和多态都可以适用的情况,一般来说使用模板的效率会高于多态,模板是编译器决定,而多态是运行时候决定,但是使用模板从代码书写和使用上都回比多态复杂,而且如果开始使用模板,后面涉及到继承的地方都要使用模板,代码影响较大。http原创 2014-11-21 11:14:24 · 738 阅读 · 0 评论 -
博文博客推荐汇总
突然发现csdn官方博客上有这样一个分类,自己也保存下原创 2014-06-21 15:10:19 · 1341 阅读 · 0 评论 -
随笔(2016.11)
使用新的库函数和方法的时候也要考虑下其异常情况与使用情况,例如对于内存的操作,使用memcpy、memset等操作比使用不熟悉的第三方库给可靠。 ps:任何方法都有使用的情况,如果不区分其使用的背景和上下文,可能与期望差之千里。代码的可测试性与健壮性一样,是一个非常重要的指标。而且不光是整个功能的测试,最好能够从类的方法、到功能、到模块,都有测试的代码与之对应。设计交底。开发前,应对系统设计相原创 2016-11-09 22:51:29 · 650 阅读 · 0 评论