随笔(2014.6)

1. tcp也可能阻塞,什么Precator都是可以阻塞的,在异步情况下,如果有阻塞的地方例如(Onclose地方),整个程序可能会阻塞,而底层连接如果建立起来用netstat可以看出连接建立,但是不会回调OnConnect,这些相当于事件,如果一个地方阻塞,后面的就要排队等待。

 

2. 数据如果是全靠变数据上报,可能会有数据丢失。造成丢失的原因不是连接问题,而是上报的阈值的问题,当变化数据小于某个阈值可能不上报数据。其实感觉即使设置成最小的变化上报,也比轮训查询的好,毕竟设备的精确度有限,一个温度最多也就精确到0.01吧。

 

3. 连接第三方设备一直连接不上,连接的恶心的参数的ip竟然是uint,用wairshark抓包看,根本没有tcp去连接想要的ip,在cmd下,找到进程id,在用netstat看,tcp的状态是SYN_Send,也就是说程序确实有连接一个ip,但是看地址,原来是反的,a.b.c.d 给解释成了d.c.b.a,用的ace下ACE_INET_Addr设置的ip,然后用get_ip_address()来获得这个ip对应的uint。  看看这个函数的注释: /// Return the 4-byte IP address, converting it into host byte order.而设备给的sdk是以太网字节序。32位的字节序转换宏。

#define BigtoLittle32(A) ((((uint32)(A) & 0xff000000) >> 24) | \
 (((uint32)(A) & 0x00ff0000) >> 8) | \
 (((uint32)(A) & 0x0000ff00) << 8) | \
 (((uint32)(A) & 0x000000ff) << 24))

 

4. 用户需求与功能需求
“软件需求包括三个不同的层次—业务需求、用户需求和功能需求—也包括非功能需求,用户需求。用户需要在应用系统中实现什么东西,为实现这个目标,需要用户提供的全部的详细的业务说明,业务流程,表格样式等。 功能需求。将用户需求归类分解为计算机可以实现的子系统和功能模块,用设计语言描述和解释用户的需求,以达到可以指导程序设计的目的。”

业务需求应该是描述整个系统是干什么用的,给谁用的。基本进入一个项目这个需求早就就定了,平时接触的也就是用户需求与功能需求,用户需求是从用户角度出发,我要这个软件系统能完成我的什么业务,要特别注意的是,用户基本不懂软件工程,所以用户提供的就是他们的流程说明,平时用的表格什么的,然后在把用户需求转化为功能需求,功能需求一般对应着软件的模块。

http://baike.baidu.com/link?url=yBAz0pZ7DjqikcmtL8fdGhLRNFap54npUvfNGenfFA6RC0tO7sPXAjUfRiPQtAal
http://www.uml.org.cn/RequirementProject/201111282.asp

 

5. vc6下使用dynamic_cast要在工程C++选项卡下的C++ language下,选中Enable RTTI,否则会抛出异常。dynamic_cast失败指针为空,健壮性较强。

 

6. 调试一个模块,一个插件,运行没有异常,调试有异常,而且只有在插件中调试,模块中有异常,在模块中进入调试,哪里都没有异常。原因是工程文件配置问题,调试不进去说明调试的插件不对!插件生成路径错误。


 

7. firebird的execute block用法,使用这个可以让数据库连续执行几条sql语句:

http://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25-execblock.html

Some clients, especially those allowing the user to submit several statements at once, may require you to surround the EXECUTE BLOCK statement with SET TERM lines, like this:

set term #;
execute block (...)
as
begin
  statement1;
  statement2;
end
#
set term ;#
In Firebird's isql client you must set the terminator to something other than “;” before you type in the EXECUTE BLOCK statement. Otherwise isql, being line-oriented, will try to execute the part you have entered as soon as it encounters the first semicolon.

 

8.编译器提示错误,error C2259,可能是类的父类有纯虚函数没有实现。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值