疑惑摘录

1、矩阵相乘

      知道了矩阵相乘的方法,以及多矩阵相乘的最佳顺序。但是矩阵是为何而来呢,什么才能表现出这种数据形式?

      使用矩阵来表示一个矢量图,而图像的反转就会用到矩阵相乘来表示,还有ps中经常用到的拉伸、增强、校正


2、斜扛、反斜扛

      UNIX设计了这种路径分隔法,它使用斜杠:/。由于网络是首先应用在 UNIX 计算机之间的,至今为止,一半以上的网络服务器仍是使用 UNIX 操作系统的,所以网址也沿用了斜杠作路径分隔符。  MS在开发 DOS 2.0 的时候,从 UNIX 中借鉴了这种目录结构,但由于 DOS 中,斜杠已经用来作为命令行参数的标志了(UNIX 中用的是“ - ”符,DOS下 "ipconfig /all"),所以只得使用反斜杠:\ 。

      而反斜扛在C环境下是转义字符。所以MS环境下路径访问需要使用“\\”。linux使用"/"就可以了

3、Linux环境的中文输入法

     在将Linux个的Locale设置为英文的时候,往往不好启动中文输入法。网上的说法也都大多一通抄基本上都是 export XMODIFIERS="xxx"设置这个变量,其实

启动输入法,并激活中文输入主要受LC_CTYPE这个变量的影响,表示语言符号及其分类。将LC_CTYPE设置为zh_CN.UTF-8的时候才能激活中文输入。其他关于Locale的说明特别的的繁琐。


4、TCP连接的建立和终止


TCP建立一个连接要三个分节,终止一个连接要四个分节。大多数的讲解以UNP为主,里面也说到SYN ACK FIN。下图为TCP报文段,SYN 、ACK为控制位


(6) 控制位

6位,用来确定报文段的目的与内容。以下各位1表示有效,从左到右依次为:

URG:表示紧急指针数据段有效。

ACK:表示确认号数据段有效。

PSH:表示报文段请求一次推进操作,该标识要求TCP尽快将数据发送出去,而不要等待后续数据的到来。接收到带有PSH标志的数据段后要尽快处理。

RST:重置连接。本次连接被复位。

SYN:同步序列号,建立连接时使用。

FIN:发送者已经发送完数据,关闭连接时使用


5  临界区域(线程同步)

实际上对 CRITICAL_SECTION 的操作非常轻量,为什么还要加上旋转锁的动作呢?其实这个函数在单cpu的电脑上是不起作用的,只有当电脑上存在不止一个cpu,或者一个cpu但多核的时候,才管用。

如果临界区用来保护的操作耗时非常短暂,比如就是保护一个referencecounter,或者某一个flag,那么几个时钟周期以后就会离开临界区。可是当这个thread还没有离开临界区之前,另外一个thread试图进入此临界区——这种情况只会发生在多核或者smp的系统上——发现无法进入,于是这个thread会进入睡眠,然后会发生一次上下文切换。我们知道contextswitch是一个比较耗时的操作,据说需要数千个时钟周期,那么其实我们只要再等多几个时钟周期就能够进入临界区,现在却多了数千个时钟周期的开销,真是是可忍孰不可忍。

所以就引入了InitializeCriticalSectionAndSpinCount函数,它的第一个参数是指向cs的指针,第二个参数是旋转的次数。我的理解就是一个循环次数,比如说N,那么就是说此时EnterCriticalSection()函数会内部循环判断此临界区是否可以进入,直到可以进入或者N次满。我们增加的开销是最多N次循环,我们可能获得的红利是数千个时钟周期。对于临界区内很短的操作来讲,这样做的好处是大大的。

MSDN上说,他们对于堆管理器使用了N=4000的旋转锁,然后“This gives great performance and scalability in almost all worst-case scenarios.” 可见还是很有用的:-)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值