随笔分类 - 软件设计
摘要:HMM基本原理Markov链:如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程。马尔可夫链是时间和状态参数都离散的马尔可夫过程。HMM是在Markov链的基础上发展起来的,由于实际问题比Markov链模型所描述的更为复杂,观察到的时间并不是与状态...
阅读全文
摘要:单高斯分布模型SGM高斯密度函数估计是一种参数化模型。有单高斯模型(Single Gaussian Model, SGM)和高斯混合模型(Gaussian mixture model,GMM)两类。类似于聚类,根据高斯概率密度函数(PDF,见公式1)参数的不同,每一个高斯模型可以看作一种类别,输入一...
阅读全文
摘要:Clustering 中文翻译作“聚类”,简单地说就是把相似的东西分到一组,同 Classification (分类)不同,对于一个 classifier ,通常需要你告诉它“这个东西被分为某某类”这样一些例子,理想情况下,一个 classifier 会从它得到的训练集中进行“学习”,从而具备对未知...
阅读全文
摘要:Dynamic Time Warping(DTW)是一种衡量两个时间序列之间的相似度的方法,主要应用在语音识别领域来识别两段语音是否表示同一个单词。1. DTW方法原理在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。而且同一个单词内的不同音素的发音速度也不同,比如有的人会把“A”这个音拖得很长,或者把“i”发的很短。另外,不同时间序列可能仅仅存在时间轴上的位移,亦即在还原位移的情况下,两个时间序列是一致的。在这些复杂情况下,使用传统的欧几里得距离无法有效地求的两个时间序列之间的距离(或者相似性)。DTW通过把时间序列进行延伸和缩短,来计算两个
阅读全文
摘要:Singleton模式是一种非常简单的设计模式,这种模式很常用也很容易被滥用。当你设计应用程序的时候,经常会遇到某些对象在整个程序的生命周期应该仅有一个实例的情况,比如File System,Graphic System,Logging Utility,这时候就可以用到Singleton模式。Sin...
阅读全文
摘要:神经网络概念与适合领域神经网络最早的研究是 40 年代心理学家 Mcculloch 和数学家 Pitts 合作提出的 ,他们提出的MP模型拉开了神经网络研究的序幕。神经网络的发展大致经过 3 个阶段:1947~1969 年为初期,在这期间科学家们提出了许多神经元模型和学习规则,如 MP 模型、HEBB 学习规则和感知器等;60 年代末期至 80 年代中期,神经网络控制与整个神经网络研究一样,处于低潮。在此期间,科学家们做了大量的工作,如 Hopfield 教授对网络引入能量函数的概念,给出了网络的稳定性判据,提出了用于联想记忆和优化计算的途径。1984年,Hiton 教授提出 Bol tzma
阅读全文
摘要:windows下ping程序的实现:使用原始套接字SOCK_RAW,基于IP协议上的ICMP协议来实现,发送的ICMP数据包type为8(请求回复),收到的回复的ICMP数据包type为0,为了判断收到是数据包是本进程发送的。将ICMP包的id设置为本进程的ID。如果使用-r选项,会记录中间经过的r
阅读全文
摘要:socket socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。 socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在
阅读全文
摘要:Windows下一个带有大小限制的并发阻塞队列,实现的比较简单。 主函数调用测试:一个生产者、两个消费者使用这个队列进行测试。
阅读全文
摘要:系统中的所有线程都必须拥有对各种系统资源的访问权,这些资源包括内存堆栈,串口,文件,窗口和许多其他资源。如果一个线程需要独占对资源的访问权,那么其他线程就无法完成它们的工作。反过来说,也不能让任何一个线程在任何时间都能访问所有的资源。如果在一个线程从内存块中读取数据时,另一个线程却想要将数据写入同一
阅读全文
摘要:线程的创建 CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别 CreateThread是Windows的API函数,提供操作系统级别的创建线程的操作,且仅限于工作者线程。不调用MFC和RTL的函数时,可以用CreateThrea
阅读全文
摘要:设计并发队列 上述代码是有效的。但是,请考虑这样的情况:您有一个很长的队列(可能包含超过 100,000 个元素),而且在代码执行期间的某个时候,从队列中读取数据的线程远远多于添加数据的线程。因为添加和取出数据操作使用相同的互斥锁,所以读取数据的速度会影响写数据的线程访问锁。那么,使用两个锁怎么样?
阅读全文
摘要:线程分类 线程按照其调度者可以分为用户级线程和核心级线程两种。 (1)用户级线程 用户级线程主要解决的是上下文切换的问题,它的调度算法和调度过程全部由用户自行选择决定,在运行时不需要特定的内核支持。在这里,操作系统往往会提供一个用户空间的线程库,该线程库提供了线程的创建、调度、撤销等功能,而内核仍然
阅读全文
摘要:进程间通信的目的 数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。资
阅读全文
摘要:The Ethernet header structure is shown in the illustration below: 以太网头部14 bytes Ethernet header structure The IP header structure is as follows: IP头部2
阅读全文
摘要:General Hash Function Source Code:
阅读全文
摘要:创建一个使用wpcap.dll的应用程序 用 Microsoft Visual C++ 创建一个使用 wpcap.dll 的应用程序,需要按一下步骤: 在每一个使用了库的源程序中,将 pcap.h头文件包含(include)进来。 如果你在程序中使用了WinPcap中提供给Win32平台的特有的函数
阅读全文