Menu Sidebar
Menu

Others

2017年展望

近于而立之年, 一些回首和展望. 从前读过冯唐的一首诗,名为《可遇不可求的事》,就当个引子吧 可遇不可求的事 冯唐 后海有树的院子 夏代有工的玉 此时此刻的云 二十来岁的你 就从这个’诗’, 先来聊聊冯唐这个人: 写过很多’诗’, 这个引号是一定要的. 因为其中很多的, 已经远远不能用俗来形容了, 不过这并不影响受欢迎的程度, 究其原因, 一个是因为范冰冰那个电影, 另一个是因为他是北京人. 如果一个其他地方的人, 看这首诗, 也许只会理解成: 后海有树的院子很贵, 夏代有工的玉也很贵, 进而理解妹纸也是可遇不可求的. 不过作为北京人, 我其实越发觉得, 这些东西之所以可遇不可求,不是因为钱的问题, 而是因为已经不存在了,或者说存在的意义已经不重要了. 回首往事, 我能记得的, 也只有: 2000年, 伴随着千禧年的钟声和千年虫的困扰, 我在南京, 这个有五座长江大桥,一座隧道的城市, 在南京邮电和南工大的合作下, 跟随一个小组在做中国最大的国家性互联网工程: 南北互联. 2001年, 我在天安门的人流中, 欢庆着申奥成功. 2008年, 我在机场看着北京奥运会开幕式, 离开北京, 前往美国. 这一晃就是8年, 2016年, 我在纽约参议院, 见证川普的逆袭. 还有, 2016年, 我认识了她. 2017, 我而立之年, […]

俺曾见金陵玉殿莺啼晓,秦淮水榭花开早,谁知道容易冰消。眼看他起朱楼,眼看他宴宾客,眼看他楼塌了。这青苔碧瓦堆,俺曾睡风流觉,将五十年兴亡看饱。那乌衣巷不姓王,莫愁湖鬼夜哭,凤凰台栖枭鸟。残山梦最真,旧境丢难掉,不信这舆图换稿。诌一套《哀江南》,放悲声唱到老 孔尚任《桃花扇》

CAS (Compare-and-Swap) 以及相关问题

CAS (Compare-and-Swap) 是一种硬件上, 实现非锁同步的一种方法. 这种方法比传统的blocked方法在硬件上实现, 效率高而且内存命中率高. CAS实现的是一种先验的赋值方法, 即: 给出一个当前值v, 当想改变这个当前值的时候, 一个线程需要进行先验操作, 以当前线程为观察者, 查看改变对象是否是当前线程中期待的对象的值. 如果是才去改变它.  整个行为并非通过锁住线程实现的, 而在硬件上, 访问一个内存片段上的速度远远快于在更高层锁住当前线程的速度. 所以CAS被认为是比所要快速的实现原子化操作的方法之一.CAS 和 CAS2 被用在了Java自带的AtomicInteger, AtomicBoolean, AtomicReference上. 这些变量都是可以常常用作判断线程进行状态的flag. 传统的关键字volatile只保证了变量的visibility, 却缺乏了accessibility. 而使用Java自带的原子变量, 可以更有效的, 快速的解决并发的实际问题. 一个CAS的赋值操作, 由一个pair组成: (expectedCurrentValue, newValue). 当赋值实现了CAS的变量一个新值的时候, 先验当前值是否等于expectedCurrentValue, 如果等于, 则赋newValue, 否则返回CAS变量的值, 这样, 通过比较返回的值, 就可以知道是否赋值成功. 通过以上的CAS, 延伸出了ConcurrentStack (Treiber, 1986), Non-blocking Queue (Michael and Scoot, 1996) 等non-blocking的数据结构. 这些数据结构因为更贴近硬件操作并且是线程安全的, 所以在新的JVM中, 很多Concurrent的数据结构都使用了这种CAS的思想. 但是设计一个CAS的数据结构, 需要充分理解数据结构在并发下的state机制, […]

安装CHelper插件在Intellij IDEA中.

不知道什么是Intellij IDEA的,用Eclipse的可以自行离去了. CHelper是一个能把Topcoder,Codeforces, Google Code Jam的题拿到本地做, 然后在本地提交的一个插件, 是Egor Kulikov(大牛)编写并维护(维护个毛线…)的. 以前需要去Google Code里下载, 然后调试, 非常繁复. 现在Egor把CHelper做进了一个插件, 使安装非常简单, 也不需要配置什么环境变量了.具体步骤如下: 在Intellij(我用的是商业版)的主页面(非Project页面)里, 选下面的Configure -> Plugins. 选Browse repositories.搜CHelper, 下载, 重启Idea. 在工具栏空白处点右键:, 选Customize Menus and Toolbars 双击Main Toolbar, 然后添加一个Separator: 点到新建的Separator, 然后选Add After,在Plug-ins中找到CHelper, 然后把下面几个都加进去. 点击Edit Project Setting (那个小齿轮), 然后如下设置: 这样对Local Tasks就可以了, 我的目录结构:  如果你玩Topcoder, 需要在Topcoder中的Options -> Editor Preferences中, 选CHelper做Default. 使用CHelper做题时: 如果用Topcoder, 点击, 然后选SRM的题就可以了, 不要忘记编译完后, 需要点击提交. […]

Newer Posts

书脊

这青苔碧瓦堆, 俺曾睡风流觉, 将五十年兴亡看饱.

December 2022
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031