登录
首页 » Others » 基于FPGA的MP3音乐播放器设计

基于FPGA的MP3音乐播放器设计

于 2020-12-06 发布
0 229
下载积分: 1 下载次数: 2

代码说明:

课程设计做的音乐播放器,内置mif文件中存了3首歌曲,分别为《世上只有妈妈好》、《祝你生日快乐》、《两只老虎》。能够实现播放/暂停、上一首、下一首功能

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 华为培训套装-成功的项目管理(包括16个经典案例).rar
    【实例简介】华为培训套装-成功的项目管理(包括16个经典案例)
    2021-11-28 00:37:06下载
    积分:1
  • 视频中背景建模目标检测综述(北京大学)
    基于视频的移动目标检测是一个重要且有挑战性的任务,在许多应用中都起到相当关键的作用。本次论文研读围绕该主题展开,深入阅读了十余篇论文,在本文总结了视频中移动目标检测的一些主要方法及各自的优劣。报告接下来的部分组织如下:第二节介绍一般问题的陈述及典型的应用,第三节与第四节分别介绍基于像素的移动目标检测方法与基于区域的移动目标检测方法,第五节进行简单的讨论与总结。2问题陈述及应用一般而言移动目标检测并不单独地构成应用,而是作为一个组件出现在许多实际的应用之中。故移动目标检测的具体要求随着应用的改变而有很大的不同。例如对足球场上球员及足球的检测与跟踪就和对视频中用户手势的跟踪有所不同,前者的关键在于如何应对复杂的光照变化有效提取运动物体,后者的难点则在于如何从整个躯休大范围的运动背景中将手势的运动识别并提取出来。尽管不同的应用可能提出不同的技术上的要求,但是相当一部分这类问题还是可以在同一的框架下进行探讨和比较的。以下就是本文讨论范围内一般问题的陈述( Figure1):a.高层次的模型一般具有检测、跟踪、识别三个模块,其中识别模块并不必须b.检测模块可细分为移动日标区域检测与移动目标分组,其中前者是这个模块能够顺利工作的保证,其日的是将各帧内移动日标所在的区域标出该模型的输入为连续的视频,输出为跟踪的物体(即轨迹)或分类的物体,DetectioTrackingbackgroundObject detectionMatching usingFramescolor texture andTrackedsubtractionusing contoursmotion featuresobiectsGr。 up handling(merging andlittonFigure1系统框架图中即为一个典型的流程图,其中省略了分类模块并把运动目标区域检测规定为背景差分方法。该模型的典型应用场景是室内外的视频监视分析( Figure2),特别是交通数据的分析。另外体育运动视频(如足球或台球)的分析也能在该模型下解决。Figure2移动目标检测的典型应用:视频监控本文讨论的就是这样一个系统之中移动目标检测部分内容,并且将重点放在了如何判定移动目标区域的部分。这是这样的系统中的最初的处理,对于之后的处理能否获得有效的信息至关重要。该内容主要涉及两个问题:如何提取运动的前景,及如何建立一个良好的背景模型。后者一般并不是应用任务中所要求完成的,但往往是用以提取运动前景很好辅助工具,将新的一帧“减去”背景即可获得移动前景,故同时具有这两个步骤的方法也被称为“背景差分”,是移动目标检测中的一大类主流方法,本报告中涉及的大部分方法即属于这一类3基于像素的移动目标检测31均值-阈限方法均值-阈限( Figure3)的基本思路是计算每个像素的平均值和标准差作为它的背景模型Mean 2*Avg DiffMean”Mean-2*Avg DiffFigure3均值-國限方法4图中为某视频中单个像素在一定时间内不断更新得到的平均值和平均差值3,该像素处在天空的位置,在一段时问后有人的手挥过该区域,可以看到由于前景目标明显不如背景中的天空明亮,所以可以很容易将其分辨出来实际上均值-阈限方法就是赋予视频中每个像素一个统计上的背景模型,例如高斯分布模型4。每个点需要两个参数来衡量:均值与方差。后面将看到,许多更先进的棊于像素的移动目标检测方法其实无非采用了更复杂的分布模型来描述每个像素32阴影去除及三高斯模型简单的帧差值或均值-阈限方法在很多应川中都面临一个很严重的问题:阴影。在某些光照条件下,移动物体产生的阴影相对背景具有非常显著的差别从而被识别成了前景,有时这些阴影比物体本身还人,并且导致原本独立的运动物体连接在一起无法分割。一种简单的思路是放弃使用灰度值进行背景建模,而采用颜色信息从而将阴影的移动去除掉。这类方法需要一条假设:移动目标投射到路面上的阴影主要改变了该位置的亮度而对色度没有大的影响°。部分情况下确实可以承认该假设。在不同的颜色模型下有不同提取亮度信息的方式。在HSV等空间中这个任务尤为简单,因为亮度本身就是一个独立的分量,所以在该分量以外的维度上进行背景建模与差分就能消除一定的阴影。如果在常用的RGB颜色空间中,亮度的提取就稍微复杂倒。Figure4RGB空间中的亮度与色度3类似标准差的作用,但是计算更快捷。C.R. Wren, A Azarbayejani, T. Darrell, and A P Pentland "pfinder Real-Time Tracking of the human body lEEETrans. Pattern Analysis and Machine Intelligence, vol. 19, no. 7, pp. 780-785, July 1997J.M. Alvarez, A Lopez, and r Baldrich, " Illuminant-Invariant Model-Based Road Segmentation",IEEE IntelligentVehicles Symposium, June 20085将一个像素的颜色值在RGB三维空间中表示( Figure4),背景建模就是确定了穿过原点的一条色度直线,所有在该直线上的颜色都认为是背景色。当前颜色相对参考颜色(背景)的亮度分量a1由最小化下式给出:φ(a;)=(l1-c1E)2a2表示该像素当前值相对参考背景色的相对亮度。如果其值为1则代表亮度相同,大于1代表比背景更亮,小于1代表比背景更培当前颜色到色度直线的垂直距离就表小色度的偏离:CD1=‖l2-aE1‖(3)利用色度与亮度的偏离值就可以将新的颜色值分为四个类别Forground: CDi> IcD or ai> Alow, elseM()Back ground:aτa2else(4)ShadowelseHighlightotherwise其中CD2与a分别代表均一化之后的两个偏离分量。这些方强烈依赖于上面提到的假设:阴影仅仅改变背景亮度而不改变色度。但是这个假设实际上并不总是有效,很多时候还需要更复杂的方法达到去除阴影,鉴别真正移动目标的目的。三高斯模型4就是针对去除阴影的考虑提出的。这个模型中采用三个高斯分布相结合( Figure5)对各像素进行建模。三个高斯成分分别为:道路、运动前景及阴影。这三个成分组合成为了完整的混合模型(b)和印甲品f叫intersity valeFigure5三个高斯分布相结合6此方法之后面临的主要问题是如何通过一定时间的学习获得每个高斯分布的参数从而建立有效的模型。相关文献中提出采用EM算法( ExpectationMaximization Algorithm)进行学习。EM算法是一个迭代的算法,通过有限步的迭代就能够获得较好的模型估计。一般而言,为了从一个数据集中获得该数据集满足的混合分布,可以采用最大后验概率估计的方法进行估计,但是这样的方法需要关于每个数据分类的信息(即每个值属于哪个类别)。然而在移动目标检测过程中往往都是无监督的学习从而不可能获得这样的分类信息,而只能自动设定个预先的分类,然后通过迭代不断改进,这就是EM算法的基本思路另外,由于各点的数据是不断改变的,于是采川原始的EM算法对每一帧都进行重复的迭代既不必要也不现实,可以采用EM算法的一个变种:增量EM算法33高斯混合模型(GMM331背景建虞在某些场景之下,采用三个高斯分布的混合模型仍然无法有效地描述复杂的现实环境,于是髙斯混合模型四被提出了。高髙斯混合模型采用类似3.2中三个髙斯模型的思路,希望采用多个高斯分布相结合的方法来描述环境。与前面的模型不同的是,现在高斯分布的个数不是固定的一个或三个了,而是随着各个像素实际的需要动态地进行设定。另外该方法也放弃采用费时的EM算法而采用更快捷的方式进行背景建模与更新。假设已知像素(xo,y)在过去一段时间中的颜色值或灰度值{X1,…,X}={(xo,yo,):1≤i≤t(5)若由K个高斯分布的高斯混合模型对该像素进行建模,则新观察到一个颜色值或灰度值的概率为P(x1)=)o*n(x,,E(6)在RGB等彩色空间中为了简化计算可以采用如下公式k,t7)A Dempster, N. Laird, and D. Rubin, "Maximum Likelihood from Incomplete Data via the EM algorithm", Journalof the Royal Statistical Society, pp. 1-38, 1977这个公式假设了各个颜色分量是相互独立的。尽管事实并不如此,但这样计算在保留充分的精确性的同时大大降低了计算复杂性。这样每个像素就采用κ个峰的髙斯混合模型完成了建模。剩余的问题同样是如何对模型中的各个参数进行估计,以及如何判别前景。3.3.2背景更新背景更新大致有这几个步骤:a.每一个新的值都与所有K个高斯分布进行匹配,直到找到充分吻合的分布(判断方式与均值-阈限方法类似)b.若新的值与所有K个分布都不接近,则将K个分布中权值最小的一个替换成一个新的分布,该分布以新的值为均值,并且具有很高的初始方差和很低的初始权重;C.若新的值与某个分布充分接近,则认为其属于该分布并更新各个分布的权值及参数Ort=(1-aOKt-1+aM(8)=(1-p)ut-1+p·X(9)=(1-p)21+p(X-1)(x-2)(10)here(kok(11)其中(8)式中Mkt对于匹配上的分布唯1,对于其他分布为0α表示适应性的强弱,α越大,给予新的值的权重越大,也就适应得越快;(9)式(10)式仅针对匹配上的分布,而其他分布的参数保持不表3.3.3前景检测运动前景的检测主要有以下几个步骤a.对所有的高斯分布按照ω/σ进行从大到小的排序;b.取前B个高斯分布,满足B= argminkT(12)k=其中T表示背景应该占的比重,如果T取得较小则类似于前面介绍的均值阈限模型,T取得较大则允许背景有更丰富的特性,如随风摆动的树叶或水面的波纹等等。C.如果当前出现的新的值并不符合这B个高斯分布,则认为是运动的前景,否则认为是背景。34非参数模型341背景建模为了能够更快速地适应变化的背景,并且保证对移动物体的敏感性,马里兰大学A. Elgammal等人提岀采用非参数的模型四对各个像素进行建模。该方法并不指定确切模型形式,而釆用核旳数来利用历史薮据建立模型。在釆用高斯核的情况下,一个颜色出现的概率’∑K(x-x∑∏1(13)2这样实际上就是对考虑范围内所有的历史值都建立一个高斯分布,并利用所有这些分布对当前值进行分析。由于高斯分布的假设,故(x1+1-x1)~N(0272),于是可以估计方差(14)0.68V2其中m是|x+1-xl的中位数。号外由于在这种方法下需要大量计算核函数的值,故可以预先计算出一定精度的核函数数据表,通过查表的方法大大加快计算的速度。实验表明这样的方法在一般的PC机上是可以达到实时的计算要求的。34.2减少错误检测为了降低由于局部抖动(如树叶抖动、摄像机抖动)带来的错误检测,该方法利用了一定的区域信息。原先的P(x1)现在改用Pm(x代替PN(t= maxyEN(x)Prix Byy(15)此处N(x)指该像索周围的一个小区域,B指像素y对应的背景模型。这样就充分降低了由于小范围抖动导致的错误检测。7该式成立仍然需要假设各个颜色分量相互独京。9该方法需要维护两个背景模型:长期模型及短期模型。其中短期的模型是为了能够快速适应变化的背景而提出的,仅利用相当短的一段历史值建立模型,另外该模型采用选择更新机制(仅对判定属于背景的值进行更新);长期的模型在相当长的时间内通过盲更新机制(对所有值进行更新)获得。两个模型判定结果的交集能够进一步降低错误的检测,但同时也去除了部分实际上是移动目标的部分。最终采用的策略为:所有由短期模型检测出来,并且与两个模型判定结果交集相邻的像素被视作运动的前景3.4.3去除阴景这个方法同样提到了去除阴影的问题( Figure6)采用RGB颜色模型的一个变种表示颜色:RBR+G+B·9=R+G+Bb=R+G+B′(16)s=RtG+B(17)令A为某个像素在一定时间内的取值,而定义B如下B={x1|x∈A≤≤阝(18)其含义就是该像素过去的背景取值中与当前值亮度接近的值的集合利用B中的值在(r,g)二维空间上进行上述的背景建模及前景检测,就能很有效地消除检测的阴影。Figure6非参数模型下的阴影去除4基于区域的移动目标检测从上面的介绍的方法来看,建立的背景模型越来越复杂:高斯分布的个数从一个到三个,再到K个,再到每个历史值各一个。这样的背景模型已经具有了高度的复杂性,但是在有些应用环境下效果仍然并不理想。反思一下这些方法的特点,仅仅利用各个像素的独立信息而没有考虑像素之间的关联性是键的原因。其实在3.42中采用方法实际上已经开始尝试以局部区域作为考虑问题的范围,
    2020-12-03下载
    积分:1
  • 张澄波的综合孔径雷达
    张澄波的综合孔径雷达比较老的版本,但是很基础,逻辑简单明了
    2020-12-11下载
    积分:1
  • c++笔试面试之网络和多线
    该文档是我总结的c++笔试面试通常会问的一些问题。另外可以从我的资源目录下找c++数据结构与算法,c++笔试面试基础两部分材料,综合这三个材料一起看,我相信大家一定尽快找到工作。ClientServerFIN WAIT 1IFIN MCLOSE WAITack M+1FIN WAIT 2LAST ACKFIN NTIME WAITACK=1 ack=K+CLOSEDm由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送个FIN来终止这·方向的连接,收到个FIN只是意味着这方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此第一次挥于Client发送个HN,用来关闭 Client到 Server的数据传送, Client进入 FIN WA1状第二次挥手Server收到FIN后,发送一个ACK给 Clien,确认序号为收到序号+1(与SN相同,一个FIN占用一个序号), Server进入 CLOSE WAIT状态。第三次挥手Server发送一个FIN,用来关闭 Server到 Client的数据传送, Server进入 LAST ACK状态。第四次挥手Client收到FIN后, Client进入 TIME WAIT状态,接着发送一个ACK给 Server,确认序号为收到序号+1, Server进入CL0SED状态,完成四次挥手。5.tcp为什么建立连接是三次握手,而关闭连接却是四次挥手呢?当主杋A确认发送完数据且知道B已经接受完了,想要关闭发送数据口(当然确认信号还是可以发),就会发FN给主机B;主机B收到A发送的F⊥N,表示收到了,就会发送ACK回复;但这是B可能还在发送数据,没有想要关闭数据口的意思,所以FⅣN与ACK不是同时发送的,而是等到B数据发送完了,才会发送FIN给主机A:;A收到B发米的FIN,知道B的数据也发送完∫,回复ACK,A等待2MSL以后,没有收到B传来的任何消息,知道B已经收到自己的ACK了,A就关闭链接,B也关闭链接了。6.TCP头大小,包含字段?TCP协议头最少20个字节,包括TCP的源端口,目的端口,序列号,应答号等等。7.tcp与udp的区别?为什么TCP要叫做数据流?1).基于连接与无连接2).对系统资源的要求(TCP较多,UDP少)3).UDP程序结构较简单4).流模式与数据报模式5).TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证6).TCP有拥塞控和流量控制,UDP没有TCP提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丟弃重复数据,检验数据,沇量控制等功能,保证数据能从端传到另·端UDP是一个简单的面向数据报的运输层协议。∪DP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。山于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快8使用udp和tcp进程网络传输,为什么tcp能保证包是发送顺序,而udp无法保证?因为TCP发送的数据包是按序号发送,有确认机制和丢失重传机制,而udp是不可靠的发送机制,发送的对应端口的数据包不是按顺序发送的。9tcp三次握手的, accept发生在三次握手哪个阶段?三次握手:C--->SYNK>ACK K+1 SYN JC->ACK]+1DONELclient的 connect引起3次握于server在 socket,bind, listen后,阻塞在 accept,三次握手完成后, accept返回一个fd,TCP服务器端sackettTC客户端bindosten)connecto建立连接阻寒直到有客户端连接请求数据writereadr处理请求回应数据readr结束连接readr yclose10.流量控制和拥塞控制的实现机制数据的传送与接收过程当中很可能出现收方来不及接收的情况,这时就需要对发方进行控制,以免数据丢失。流量控制是一种解决发送端与接收方吞吐量不匹配问题的机制。网络拥瘧现象是指到达通信了网中杲部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个冈络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿即出现死锁现象。拥塞控制是处理网络拥塞现象的一种机。11.滑动窗口的实现机制滑动窗凵机制是tcp流量控制的一种机制。滑动窗口分为发送窗凵和接收窗口,发送窗口会根据接受窗口返回的ack中的大小来确定发送数据多少,如果ack返回可接受为零时,发送窗口不发送数据,然后启动定时器,一定时间内给接收端发送探测报文。为了传递效率提扃,发送数据吋会尽量次发送多个字节,这里会通过算法控制接收窗口发送窗口接收窗口取决发送窗口取决于对于本段应用端接收窗囗应用应用接收窗口取决发送窗口取决于对于本段应用端接收舍口发送窗口接收窗口字节流方向窗囗关联方问发送窗口中的四个概念:已发送并收到确认;凵发送但未收到确认;允许发送但未发送;不允许发送。每次成功发送完数据后,发送窗口都会根据接受窗口返冋的ack大小来调整窗口大小后浩前沿前移收缩前移A的发送窗凵=20E区图国时国时网國國回回区画乎图已发送井不允许发送收到确认允许发送的序号B期望收到的序号图5-15根据B给出的窗口值,A构造出自己的发送窗口12. linux的五种I0模式/异步模式1)同步阻塞I/O2)同步非阻塞I/O(只能阻塞个io)3)同步I/O复用模型(可以阻塞多个i,用一个进程/线程调用多个io,其实是复用进稈/线程)4)同步信号驱动I/O5)异步I/O模型3.网络编程设计模式, reactor/ proactor/半同步半异步模式?reactor模式:同步阻塞I/O模式,注册对应读写事件处理器,等待事件发生进而调用事件处理器处理事件。 proactor模式:异步I/O模式。 Reactor和 Proactor模式的主要区别就是真正的读取和写入操作是有谁来完成的, Reactor中需要应用程序自己读取或者写入数据, Proactor模式中,应用程序不需要进行实际读写过程。Reactor是:主线程往epo‖l核上注册 socket读事件,上线程调用 epoll_wait等待 socket上有数据可读,当 socket上有数据可读的时候,主线程把 socket可读事件放入请求队列。睡眠在请求队列上的某个工作线程被唤醒,处理客户请求,然后往epo‖!内核上注册 socket写请求事件。主线程调用 epoll_wait等待写请求事件,当有事件可写的时候,主线程把 socket可写事件放入请求队刎。睡眠在请求队列上的工作线程被唤醒,处理客户请求。Proactor主线程调用 aio read函数向内核注册 socket上的读完成事件,并告诉内核用广读缓冲区的位置,以及读完成后如何通知应用程序,主线程继续处理其他逻辑,当 socket上的数据被读入用户缓冲区后,通过信号告知应用程序数据已经可以使用。应用程序预先定义好的信号处理凼数选择一个工作线程来处理客户请求。工作线程处理完客户请求之后调用ao wrⅰte函数向内核注册 socke写完成事件,并告诉内核写缓冲区的位置,以及写完成时如何通知应用程序。主线程处玛其他逻辑。当用户缓存区的数据被写入 socket之后内核向应用程序发送一个信号,以通知应用程序数据已经发送完毕。应用程序预先定义的数据处理函数就会完成工作。半同步半异步模式上:层的任务(如:数据库查询,文件传输)使用同步IO模型,简化了编写并行程序的难度而底层的任务(如网络控制器的中断处理)使用异步I/O模型,提供了执行效率14.1inux下io多路复用的方案 select、poll、epol1的区别select:利用一个数组结构(最大1024)来存储需要检测的描述符,每次调用需要清空数组结构后重新存入新的描述符文件,然后遍历需要操作的描述符。可以用仨检测单个描述符可以理解为拉取pol:也是利用数组结构存储,但是没有描述符个数限制,而且每次调用时不需要清空存储描述符结构数组。可以用于检测大量描述符的情况。可以理解为拉取epoll:是 select/po!的升级版本,它的机制是可以监视大量的描述符,当有需要连接时将改描述符存放到队列中,而epol只监视和执行队列中即可。可以用于大量并发连接中只有少量活跃的情况。可以理解为推送http://blog.csdnnet/lookatthestars/article/details/5210877315.epo11哪些触发模式,有啥区别?(必须非常详尽的解释水平触发和边缘触发的区别,以及边缘触发在编程中要做哪些更多的确认epo‖有EPoL和 EPOLLET两种触发模式,LT是默认的模式,ET是高速"模式。LT模式下,只要这个fd还有数据可读,每次 epoll_wait都会返回它的事件,提醒用户稈序去操作,而在ET(边缘触发)模式中,它只会提示一次,直到下次再有数据流入之前都不会再提小」,无论fd中是否还有数据可读。所以在ET模式下,read一个fd的时候一定要把它的 buffer读光,也就是说一直读到read的返回值小于请求值。也就是说在LT模式的情况下‘定要确认收发的数据包的 buffer是不是足够大如果收发数据包大小大于 buffer的大小的时侯就可能会出现数据丢失的情况。16. Boost.asio、 libevent、1ibev简介。Boost.asio是一个跨平台的C++库,用于网络和底层I/0编程,可以在I/0对象(如socket)上执行同步和异步操作。 boost.asio的跨平台性原理是在win系统(支持I0CP)linux系统(支持epo11)。 boost:asio将整个异步平台抽象成 boost::asio: lo service,用work控制 1o service生命周期,通知它是否结束,只要对象work( 1o servi ce)存在,10 service就不会结束。利用 buffer类存储数据libevent是一个C语言与的网络库,官方主要支持的是类 linux操作系统,最新的版本添加了对 windows的I0CP的支持由于I0CP是异步I0,与 linux下的POL模型, EPOLL型,还有 freebsd的 KQUEUE等这些同步模型在用法上完全不一致,所以使用方法也不样,就好比ACE中的 Reactor和 Proactor模式一样,使用起来需要转变思路。如果对性能没有特别的要求,那么使用 Libevent中的 select模型来实现跨平台的操作, select模型可以橫跨 windows, linux,unix, solaris等系统。libel是一个C语言写的,只支持1inux系统的库,我以前研究的时候只封装了EPOL模型,不知道现在的新版有没有改进。使用方法类似 libevent,但是非常简洁,代码量是最少的一个库,乜貮几千行代码。显然这样的代码跨平台肯定是无法支持的了,如果你只需要在1inux下面运行,那用这个库也是可以的。17. connect可能会长时间阻塞,怎么解决?1.使用定时器;(最常用也最有效的·种方法2.采用非阻塞模式:设置非阻塞,返回之后用 select检测状态18. keepalive是什么东西?如何使用?keepalive,是在TCP中一个可以检测死连接的机制。1).如果主机可达,对方就会响应ACK应答,就认为是存活的。2).如果可达,但应用程序退岀,对方烑发RST应答,发送TCP撤消连接。3).如果可达,但应用程序崩溃,对方就发FIN消息。4).如果对方主杋不响应ack,rst,继续发送直到超时,就撤消连接。默认二个小时。19. socket什么情况下可读?1. socket接收缓冲区中己经接收的数据的字节数大于等于 socket接收缓冲区低潮限度的当前值;对这样的 socket的读操作不会阻塞,并返回一个大于0的值(准备好读入的数据的字节数)2连接的读一半关闭(即:接收到对方发过来的FIN的TCP连接)并且返回03.s0cket收到了对方的 connect请求已经完成的连接数为非0这样的 socket处于可读状态;4.异常的情况下 socket的读操作将不会阻塞,并且返同一个错误(-1)。20. socket编程,如果 client断电了,服务器如何快速知道?使用定时器(适合有数据流动的情况);使用sock吐t选项SO_ KEEPALIVE(适合没有数据流动的情况);1)、自己编写心跳包程序,简单的说就是自己的程序加入一条线程,定时向对端发送数据包,看是否有ACK,根据ACK的返回情况来管理连接。此方法比较通用,般使用业务层心跳处理,灵活可控,但改变了现有的协议2)、使用TCP的 keepalive机制,∪NX网络编程不推荐使用SO_ KEEPALIVE米做心跳检测。keepalive原理:TCP内嵌有心跳包,以服务端为例,当 serve检测到超过一定时间(/proc/sys/net/ipv4/tcp_ keepalive_ time7200即2小时)没有数据传输,那么会向client端发送一个 keepalive packet21.如果 select返回可读,结果只读到0字节,什么情况?某个套接字集合中没有准备好,可能会 select内存用 FD CLR清为0.22.网络中,如果客户端突然掉线或者重启,服务器端怎么样才能立刻知道?若客户端掉线或者重新启动,服务器端会收到复位信号,每一种tcp/ip得实现不一样,控制机制也不·样。23.TTL是什么?有什么用处,通常那些工具会用到它?ping? traceroute? ifconfig?netstat?TTL是 Time to live,每经过一个路由就会被减去一,如果它变成0,包会被丢掉。它的主要目的是防止包在有回路的网络上死转,浪费网络资源。ping和 traceroute用到它。24请说出http协议的优缺点1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务吋,只需传送请求方法和路径,通信速度很快。3.灵活:HTTP允许传输任意类型的数据对象。4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断廾连接。采用这种方式可以节省传输时间。5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,导致每次连接传送的数据量增大。缺点就是不够安全,可以使用hps完成使用25大规模连接上来,并发模型怎么设计Epol1+线程池(epo11可以采用 libevent处理)26.tcp怎么做到不丢包。TCP提供超时重发(每一个seq后都有ack,计时时间到后重发seq),丢重复数据(通过判断seq和ack的大小,如果seq比ack小说明发过了),检验数据(通过tcp的伪首部),流量控制(利用滑动窗口实伣流量控制)等功能,保证数据能从一端传到另一端。27.TCP的确认重发机制A发—B/a向b发送数据B确认-A//b收到数据后发送给a确认包A-在重发数据中将发送成功的数据删掉28.I0CP和epo1l的联系与区别?联系:两者都是高效的io模型,都是基于事件驱动。区别:TOCP用在 Windows上,epo11用在1inux上;IQCP本质是异步非阻塞的,而epo1l是同步非阻塞的;1OCP是当事件完成时再通知,而 epoll是当事件满足处理要求是通知处理。boost中的asio网络模块的跨平台性原理是在win系统(支持IOCP),1inuκ系统(支持epollhttps://yg.aliyun.com/articles/53621进程与线程1.进程之间的通信无名管道:单向通信,只能亲戚关系才能传递,般用在父了进程之间有名管道:单向通信,可以用在任意两个进程之间通信。信号量:是一种计数器,主要用于资源共亨,用在多个进程或者进程内多个线程之间同步手段共享内存:一个进程创建共多个进程使用,和信号一起使用在进程同步与通信。信号:比较复朵的·种通信。套接字:消息队列:客服信号传递信息少,管道缓冲区受限。2.线程同步临界区,互斥对象,事件,信号量3.多线程和多进程的区别1)进程数据是分丌的:共享复岽,需要用IPC,同步简单;多线程共享进程数据:共享简单,同步复杂2)进程创建销毁、切换复杂,速度慢:线程创建销毁、切换简单,速度快3)进程占用内存多,CPU利用率低;线程占用内存少,CPU利用率高4)进程编程简单,调试简单;线程编程复杂,调试复杂5)进程间不会相互影响;线程个线程挂掉将导致整个进程挂抻6)进程适应于多核、多机分布;线程适用于多核线程所私有的:线程jd、寄存器的值、栈、线程的优先级和调度策略、线程的私有数据、信号屏蔽字、ero变量。4.多线程锁的种类有哪些?a.互斥锁( mutex)b.递归锁C.自旋锁d.读写锁5.自旋锁和互斥锁的区别?白旋锁中当锁被其他线程占用时,其他线程并不是睡眠状态,而是不停的消耗CPU,获取锁;互斥锁则不然,保持睡眠,直到互斥锁被释放溦活。自旋锁,递归调用容易造成死锁,对长时间才能获得到锁的情况,使用自旋锁容易造成CPU效率低,只有内核可抢占式或SMP情况下才真正需要自旋锁6.多线程程序架构,线程数量应该如何设置?应尽量和CPU核数相等或者为CPU核数+1的个数7.有一个计数器,多个线程都需要更新,会遇到什么问题,原因是什么,应该如何做?如何优化?有可能一个线程更新的数据已经被另外一个线程更新了,更新的数据就会出现异常,可以加锁,保证数据史新只会被一个线程完成
    2020-11-27下载
    积分:1
  • 模仿保卫萝卜的塔防类游戏 android studio
    模仿保卫萝卜的塔防类游戏 android studio编写塔防 游戏 保卫萝卜 代码 surfaceview保卫三贱客:一款模仿保卫萝卜的塔防类游戏,完整项目,内有源码和apk安装包。对于游戏开发初学者会有借鉴作用。游戏是可以玩的,有声音。安装包在Sanjianketafangappuildoutputsapk使用android studio打开项目。Eclipse打开的话可能麻烦一点注意事项:1,不要点击设置,因为没有写里面的相关功能2,点击怪物会抖动,发出声音3,点击主页(选择怪物界面左上角房子样子的)按钮会返回主页4,金钱数据会保存在内存中,如果没钱了,把内
    2021-05-06下载
    积分:1
  • 128X64 LCD字模提取软件,有各种模式,可做16*16、32*32点阵的字模提取
    一款很强大的字幕提取软件,可用于各种模式的LED和LCD的字模提取。
    2020-07-04下载
    积分:1
  • 银行家算法(C语言实现源文件)
    利用C语言实现操作系统中的银行家算法(话说说的这么清楚还需要多少描述吗?额,我这个是老师亲自验收通过的!)
    2020-12-01下载
    积分:1
  • 毕业设计-基于springboot框架的宿舍管理系统设计及实现
    本科毕业设计,基于springboot框架的宿舍管理系统设计及实现。项目功能完备,文档资料等齐全。
    2020-12-04下载
    积分:1
  • labview控制步进电机的
    用labview开发的控制步进电机程序,进行实时控制电机-Developed using LabVIEW to control stepper motor procedures, real-time control of motor
    2020-12-06下载
    积分:1
  • 用MATLAB生成OFDM信号
    文件包含了OFDM发送端信号生成的MATLAB代码和相应的课程报告
    2020-12-04下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载