技术开发
kwiner
这个作者很懒,什么都没留下…
展开
-
一些不必要使用多线程的场合
在开发的过程经常需要处理这样一个情况: 进行一个比较耗时的操作, 例如从网络上下载一个大文件, 或者从数据库中读上万条记录, 如果不采取一些优化措施直接进行操作的话, 在执行操作的过程中, 窗口消息循环就会被阻塞掉, 这时, 用户在窗口上进行点击、或者移动窗口等操作均会无效,用户甚至会误以为程序死掉了。为了解决这种情况,即在耗时的操作正在执行的过程中,让用户仍旧可以流畅地操作窗口,原创 2006-09-14 16:37:00 · 2026 阅读 · 0 评论 -
.NET技术初探2 - 中间语言的引入与新语言C#的诞生
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty原创 2009-10-20 19:29:00 · 781 阅读 · 0 评论 -
.NET技术初探 - 为什么要学习.NET?
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Fon原创 2009-10-14 21:58:00 · 1222 阅读 · 0 评论 -
程序员还应该掌握哪些技能
最近公司在讨论如何通过培训来提高开发人员技能,我觉得除了编程工具的熟悉运用,以及对算法和系统的掌握外,下列的一些技能也是现代开发人员应该要提升的技能: 1. 设计模式 --- 熟悉常用的设计模式,并了解你所用的软件包中提供了哪些设计模式。2. 面向对象的程序设计 --- 熟悉面向对象的程序设计思想,掌握面向对象的各种设计原则,例如单一职责原则、开放-封闭原则等等。原创 2009-09-19 09:07:00 · 802 阅读 · 0 评论 -
一段LINUX下常用的多线程程序代码
好久没有更新BLOG了,最近在做语音识别和语音合成方面的工作,粘一段自已写的用得比较多的LINUX多线程代码,做个记录,方面以后查阅吧。代码的作用是,主线程负责将要处理的数据放入队列,另外一个新线程负责处理队列中的数据,如果没有数据新线程将睡眠等待,有新数据到来时主线程会唤醒新线程,就这么简单。。。随手写的程序,存在问题希望能告诉我:)#include #include #in原创 2008-10-22 14:22:00 · 994 阅读 · 0 评论 -
整理把文档写好的一些guide line
整理把文档写好的一些guide line,这些都是我工作过程中一些笔记,希望对大家有用。。。---------------------------------------------------------------------------------------写文档之前把目录结构定下来在写文档之前,通常已知道文档应该需要包含哪些内容,所以应先把目录结构写好,并给到Review人员原创 2008-04-13 20:31:00 · 913 阅读 · 0 评论 -
享受 UNIX操作系统设计 一书
一口气把>一书读完了,这一口气大概是从06年6月开始呼入,于07年4月才呼出,哈哈。 看完这本书非常受益,首先,解答一些朋友和同事的疑问,看这本书并不是为了研究LINUX内核才看的,当然,为了更好地理解UNIX和 LINUX系统,以及更好地理解操作系统是一个原因之一。更重要的是,通常阅读此类书藉,可以学习到超级大师们的软件设计方法,以及他们面对各种编程技术 难题时命使用的对策,软件开原创 2007-04-28 11:55:00 · 3107 阅读 · 1 评论 -
今天遇到一个由于内存访问越界而引起的bug
今天对前几天的程序进行了一些修改, 运行时程序出现段错误, 用gdb调试一下, 通过查看调用堆栈,得知段错误是由于调用了一个队列的成员函数 isQueueEmpty 引起的, isQueueEmpty函数的作用是用来判断队列是否为空的, 看了一下isQueueEmpty 的定义,发现isQueueEmpty 函数体只有一条语句: template bool TQueue::isQue原创 2006-10-25 09:43:00 · 1840 阅读 · 0 评论 -
用QSocket来操作Linux命名管道
今天使用QSocket来操作命名管道时出现了一些小插曲,调试花了一些时间,写下来作一个笔记: 这里所说的命名管道是指FIFO,当打开一个FIFO的时候,通常会出现以下情况: a. 不使用O_NONBLOCK标志时,只读open要阻塞到某个其它进程为写而打开它为止 b. 不使用O_NONBLOCK标志时,只写open要阻塞到某个其它进程为读而打开它为止 c. 如果在open的时候指定原创 2006-10-22 10:45:00 · 2777 阅读 · 0 评论 -
一个可以验证两个内存块绝不重叠的断言
验证两个内存块绝不重叠的断言, 用在像memcpy函数这样的场合最适合不过了, 因为在两个重叠的内存块之间拷贝数据, 结果是没有意义的, void memcpy(void* pvTo, void* pvFrom, size_t size){ assert(pbTo>=pbFrom+size || pbFrom>=pbTo+size); ...}上面的断言很巧妙,只用了一条语句,原创 2006-10-22 10:39:00 · 983 阅读 · 0 评论 -
关于检查scanf的返回值
很多人在使用scanf的时候都不会去检查它的返回值, 包括我在这之前也没有去注意它, 如果你方便去翻翻c语言的教科书, 估计也很难找到有检查scanf的例子或代码段, 至少我还没有见过, 当然, 书上的代码毕竟只是一个练习, 和真正用于产品级别的代码有很大的差别。 一个偶然的机会, 让我注意到检查scanf返回值的重要性, 写下来和大家分享一下:) 下面是一个最简单不过的scanf原创 2006-10-08 16:58:00 · 2843 阅读 · 2 评论 -
浅尝python
借网上的一幅图: 如何调用Linux命令下面代码演示了调用一个shell命令, 其中,命令的输出会存储到result变量中, 而命令的返回值,则存储到exitcode中,由此可见,调用shell命令还是很方便的:import commandsexitcode,result = commands.getstatusoutput('dir')print "exitcode: %原创 2013-03-26 11:40:31 · 3508 阅读 · 0 评论