防守对手罚球
北京时间12月13日在火箭的前15次罚球中,他们仅仅命中率了1球,全场火箭罚球22罚6中,但是他们还是以80比77击败了活塞。
赛后活塞主帅菲利普-桑德斯赛后自嘲的说:“我们只有一点做的很好,我们在防守对手罚球上面做的很出色。”
Error when executing msi or exe file on 2003
当在Windows 2003 server上安装从其它机器复制得到的MSI, exe文件的时候,系统报错误:Windows cannot access the specified device, path or file
解决方法:改变该文件属性。 点击unblock。
In Windows 2003 when you copy an executable (*.exe) file, the file now has a blocked property. This is a security feature that can easily be resolved by reviewing the file properties and clicking the 'Unblock' button to disable the security feature. In the first image below the 'Unblock' button is present with the text of - 'This file came from another computer and might be blocked to help protect this computer'. Once you click the 'Unblock' button you can now access and run the executable (*.exe) file.
多线程 C#解决方案
与多线程相关的两个常见的需要解决的问题是:临界资源保护和线程间的同步依赖,每一种语言都提供了自己的一套设施(有的语言可能需要借助OS的API)来解决这两个问题,C#提供了更方便灵活的解决方案,首先C#可以允许我们在不同的级别上加锁,也就是说我们可以控制加锁的粒度。其次,C#提供了一套内置的线程安全的容器,方便我们的使用。
一.不同级别(Level)上的同步:
1.object level 同步
对应的class必须从ContextBoundObject继承(同步上下文context,使所有的方法调用能被截获),并且在
class上运用SynchronizationAttribute 。
2.Method level 同步
System.Runtime.CompilerService空间包含的一些属性将影响CLR在运行期间的行为。特性MethodImplAttribute可以用于需要进行同步控制的方法上。
3.code segment level 同步
(1)Monitor类(主要是静态方法)
Monitor.Enter(obj)//获得加在对象obj上的锁
...
Monitor.Exit(obj)//释放锁
//上面两句之间的代码相当于lock(obj){...}
Monitor.TryEnter(obj)//该方法立即返回,如果返回值为false,则接下来不需要Monitor.Exit(obj)。
//以下几个方法用于线程间的交互 ==》 解决同步依赖
Monitor.Wait(obj)//等待脉冲消息。释放对象上的锁并阻塞当前线程,以后只有其它线程调用Pulse或PulseAll时才会给它再次获得锁的机会
Monitor.Pulse(obj)//发射脉冲消息( 只有得到锁后才能发射,而且发射不会自动释放锁)
Monitor.PulseAll(obj)
注意:
(1)Monitor 锁定对象,只能在Enter()和Exit()之间的代码块中调用Wait和Pulse
(2)不能在一个线程中获得锁,而在另一个线程中释放锁。这样会产生锁丢失。 获得锁和释放锁应该在同一个线程中完成。
(3)lock语句
lock(obj)
{
需要进行同步的代码
}
(4)ReaderWriterLock类
实现单写多读程序的锁。
AcquireReaderLock()//当没有写程序线程占用锁时,就可获得锁
AcquireWriterLock()//当没有任何读写程序线程占用锁时,才可获得锁
ReleaseReaderLock()
ReleaseWriterLock()
(5)ManualResetEvent
Set()方法将状态设置为有信号
Reset()将其设置为无信号
WaitOne()将阻塞到其有信号为止,若调用WaitOne的时刻就是有信号的,将不会阻塞
(6)AutoResetEvent
与ManualResetEvent的区别是,AutoResetEvent.WaitOne()会自动改变事件对象的状态,即AutoResetEvent.WaitOne()每执行一次,事件的状态就改变一次。有信号-->无信号;无信号-->有信号
说明:
(1)无论是Monitor还是lock、ReaderWriterLock都只对引用类型的对象有效,因为引用类型的对象有一个隐藏的sync#字段,该字段的作用就是作为加锁的标记。
(2)上述的各种设施中,只有Monitor 和ManualResetEvent/AutoResetEvent 能解决线程间的同步依赖问题,而其它的设施主要用于解决临界资源共享。
4.member level同步
(1)Interlocked类(主要是静态方法)
同步一个由许多线程共享的变量。
Decrement(ref int);//使变量减1
Increment(ref int);//使变量加1
//以上两个方法仅针对类int变量
Exchange(ref object, object);
(2)ThreadStaticAttribute
该特性用于修饰静态变量,被该特性修饰的静态变量在每个线程中都有自己的副本。
二.创建线程安全的对象
Hashtable h = Hashtable.Synchronized(new Hashtable()) ;
ArrayList等容器也提供类似操作。
魔鬼夜访钱钟书先生说
你的识见竟平庸得可以做社论
自传就是别传
财主有布袋似的大肚子表示囊中充实;思想家垂头弯背,形状像标点里的问号,表示对一切发生疑问。
关于理财
满足会带来平庸
Many Moons
最爱NBA之妙语连珠(7)
北京时间11月8日,热火以90比87击败西雅图超音速
超音速的维尔金斯则没有能够投篮,他被哈斯勒姆的防守逼得慌了手脚,最后裁判吹了跳球。赛后维尔金斯表示:“我只是滑了一下,我不知道为什么。我也不能说是场地的原因,但是我滑了一下。”
最爱NBA之妙语连珠(6)
火箭和灰熊06-07赛季常规赛11月7日客场86:80
“能够在对垒同分区对手时取得两场胜利,这是我们迈出的关键一步,”麦蒂赛后说,“不过我有些妒忌巴蒂尔,他能在重回老东家主场时得到球迷们的起立鼓掌,而我重返奥兰多和多伦多时,那里的球迷们都想杀了我。”
“看到巴蒂尔重返孟菲斯并带着胜利离开,我不太高兴,”琼斯说,“但不管怎样,他得到球迷们如此热烈的欢迎,这是我所不能抱怨的,这都是因为过去几年里他对灰熊队的贡献。至于他的为人,这更没有什么好说的。”
最爱NBA之妙语连珠(5)
火箭和爵士06-07赛季常规赛首场 97:107
“这个结果就像脸上被狠狠地揍了一下,”斯内德说,“我们能够做的就是感激。我们在第四节的感激让人印象深刻,如果我们能够从头到尾都这么打,那么一定没有问题。不幸的是我们并没有能够从一开始就这么打。对手拼抢的太凶悍了。”
最爱NBA之妙语连珠(4)
太阳和湖人首轮季候赛首场107:102
除了得分外,托马斯在对科比的防守上也有贡献。终场前科比曾试图在托马斯面前运球上篮,结果被后者击中面部,而且裁判也没有判托马斯犯规。科比赛后对那次漏判颇有微词,他说:“对裁判的执法我不便评论,不过你们只要看看我头上的包,就知道发生了什么。”
就业与学位的笑话一则
到上海火车站的公交线路有哪些?
| 到上海火车站的公交线路有哪些?(转载) | |
|
corpse bride(僵尸新娘)