最近因为要处理UPnP库所涉及的socket层次抽象,于是专门查看和测试了部分Windows和Unix-like系统中socket用法。总体来说,两者之间相似度很高(毕竟最初Windows上的socket方法就是从Unix系统中移植过去的),但是细节之间的差异也不小。当从Windows向Unix(Linux)系统移植或者从Unix(Linux)系统向Windows移植一个使用了socket的应用时,有些差异可以使用typedef#define等方式来消除,但是有些不同用法却需要对主要代码进行改动。

这里只会记录部分我查看的或测试过的结果。下面是我用于测试的三台主机所用的系统:

  • Microsoft Windows 10 专业版(10586.36)
  • Apple OS X Yosemite(10.10.5)
  • Microsoft Windows 10 专业版(10586.122)

其中两个Windows系统的主机连接到了同一台交换机上;而OS X系统的主机则使用无线网络连接到其中一个Windows系统创建的热点。

Read More

首先声明,这是毕设中要求翻译的一篇论文,原文相关信息如下:

  • 题目:Implementing a DLNA-compliant UPnP AV MediaServer with DVB and RTSP/RTP support.(实现一个DLNA兼容且支持DVB和RTSP/RTP的UPnP AV媒体服务器)
  • 作者:Martin Emrich
  • 上传日期:2009年4月28日
  • 导师:Manuel Gorius,硕士
  • 初审者:Thorsten Herfet,博士,教授
  • 二审者:Philipp Slusallek,博士,教授

本文只为翻译所用,一切版权和许可均归原作者所有

同意声明
我同意将论文的两个版本添加到计算机学院的图书馆,使其向公众开放。

感谢
本论文由英特尔股份有限公司的“数字家庭研究实验室”给予支持。

摘要
在家庭多媒体网络中,目前分布式存储的内容(照片、音乐、视频文件)是与直播电视和电台分离的,即使最近已经开始由IP网络传输。本文描述了一个支持发布内容到家庭网络且可以接收数字视频广播的原型媒体服务器的设计和实现。它遵守DLNA设备互操作指南,以兼容许多现有设备,并通过实时传输协议(RTP)以及HTTP提供到UPnP AV客户端的直播。

Read More

下面的题目是《算法导论(第三版)》中红黑树一章的思考题13-4,主要介绍与分析了Treap树的一些知识和性质。本文也将以原题内容作为线索,通过证明和解答其中的问题,来说明Treap树的主要特点。

有些问题也是比较棘手的,受限于个人能力,因此并无法保证所有证明过程的正确性,而在合适的时机,我将会给出社区讨论链接。

原书中对部分地方配有图片描述,在这里,目前没有添加配图,如果有时间再行补上。

Read More

很久很久以前就说过,要修改博客界面的一些细节样式,但是一直没有去做多少,只是在当前主题上修改了一点小细节(这也主要是因为这个主题基本符合我的要求,所以一直懒得继续修改)。

当前使用主题为Jacman,作者博客在此,顺便附上GitHub链接

这里讲记录所有对Hexo主题的自定义部分,当然,所有的操作都是基于Jacman主题的,因此,有些操作可能并不适用于其它主题

另外,主题安装日期为2015年3月18日,此后并未进行更新过,因此不保证代码和GitHub上最新版一致。也许某些下面提到的修复或者更改已经在上述GitHub链接中添加。

Read More

今天看到了《算法导论(第三版)》第三部分中第十章内容,在10.4节遇到了一个题目,要求在O(n)(即上限渐进时间为线性)时间内非递归遍历二叉树,并且只能使用固定量的额外存储空间。

10.4-5 给定一个n结点的二叉树,写出一个O(n)时间的非递归过程,将该树每个节点的关键字输出。要求除该树本身的存储空间外只能使用固定量的额外存储空间,且在过程中不得修改该树,即使是暂时的修改也不允许。

部分理解需要联系上下文,比如说关键字是前文定义的一个树的结点通常具有的结构,包括一个关键字key、一个左孩子结点指针leftChild、一个右孩子结点指针rightChild以及一个父结点指针parent,另外带有可选的卫星数据。

Read More

最近开始看《算法导论(第三版)》这本书,在第4章讲解分治策略的时候,举了一个例子:最大子数组问题(4.1节),简单来说,就是在一个给定的数组中,找出一个非空连续子数组,使这个数组中元素的总和最大,我们称这样的子数组为最大子数组

在书中讲解分析了两种解决方法,一种就是最容易想到的暴力求解方法,另一种自然就是主题相关的分治法;然后在结束的时候,提到了可以实现一种更快速的线性时间的算法,这里将给出我的思路(原书这里描述有误,不知道是作者/译者笔误还是印刷错误)。

Read More

几个月之前就想过,在 OS X 上配置一下Hexo,方便偶尔更新一下文章什么的,只是这么长时间了一拖再拖,总是在做着各种其它的事情,甚至Mac都很久没打开过了……

题外话:Mac的设计抛开不说,配合OS X用起来体验也不错,重点是续航,这都最少一个多月没开,现在开了,电量还有60%多,所有的App状态都还是之前合盖时候的状态。

顺便也得说一下,OS X上应用是少了一点,但是能用的基本都是布局很精美,也许部分是系统的一贯主题特色,而Retina屏幕的显示效果也是相当赞的。当然,用的也不多,除了系统那个Finder是个真尴尬的东西之外,基本其它的都感觉不错,比如现在正在用来编辑此文的MacDown,除了主题差了一点,各种显示效果是真的不错,文本编辑起来也是很舒服。

扯远了,继续上文。最近准备弄弄C++,所以又打开了Mac,当然不是说Windows上面做不了开发,毕竟Visual Studio不是吹的,只是这次有点问题,一个依赖的项目在Windows上编译有问题,使用MinGW+Clion一直编译不通过,连接失败;然后我想着到OS X上试试,结果稍微改了一下CMakeLists.txt文件,就通过编译成功执行了。于是将项目搬到了Mac上面。

然后昨天又弄了一下,又将Minecraft给弄到OS X上面跑了,这下也基本可以单用OS X一阵子了,所以才有了标题所说的,想着准备把Hexo也弄过来了。这次也就没再往下拖延了。

Read More

今天无意间谈到了UWP应用中为数据绑定新引入的一个XAML标记:{x:Bind},对于这个新的标记的作用和原理,网上的一般说法都是:

相比较传统的{Binding}方式,{x:Bind}的效率更高,因为{x:Bind}的数据绑定发生编译期间,绑定工作在编译时期就已经完成了,所以我们在使用{x:Bind}的时候,需要一个明确的数据类型(按:这也符合强类型语言的特点)。

这些也都基本说的过去,相对于传统的{Binding}方式,这种类型严格的绑定行为,最起码也可以减少对象装箱和拆箱行为的性能损耗,而至于其它的由于强类型带来的可以优化的地方,就要看编译器的行为了。

但是基本上也就到此为止了,大部分关于{x:Bind}的说明文章,接下来就是将示例,陈述简单的用法,不说讲解一下{x:Bind}的实现方式,就连深入一点的用法,比如双向绑定等都没有提到多少。

这里别说那些示例中写了个Mode=TwoWay就是双向绑定了,如果双向绑定这么简单,那在传统的{Binding}方式中又为什么要弄个INotifyPropertyChanged接口,还要弄个叫依赖属性的东西出来?

Read More

记录一些开发过程中遇到的问题,或者疑惑的地方,在记录的时候,还没有解决或者找到原因,也许会在以后的时间里去验证和解决。如果知道了原因所在,也会及时更新并记录下来。

就当是一个历史的记忆,也避免日后在重复同样的问题。

最近更新时间:2015年11月14日

Read More