三月份,我法发现去敦煌非常实惠,于是招贤纳士,最终克服重重阻碍,确定4月19日前往兰州,20日晚从兰州前往敦煌,4月21日和22日在敦煌游览两天并在23日前往嘉峪关,23日晚从嘉峪关到兰州,并于24日晚从兰州返程。
multiprocessing模块用法
由于一些历史原因,我们常用的CPython具有全局解释器锁(GIL)机制,这把全局大锁导致Python的多线程性能非常糟糕,为了解决这个问题,一种方案是使用协程代替多线程,由于自带了yield,Python实现协程相对于C++那种动辄setjmp
或者CPS,抑或利用Linux.ucontext
等基于运行时的组件的方式相比要优雅了一些。不过协程对于IO密集型的程序用处很大,但如果我们想要实现并行,那么使用多进程来取代多线程就是一个必由之路。multiprocessing
和multiprocessing.dummy
是Python下两个常用的多进程和多线程模块。
毕业实习报告
为期五天的毕业实习,我们参观了位于溧水的宁溧城际铁路交通路地铁站TA08标段、苏州虎丘塔、上海青浦区金泽水库、上海石洞口无水处理厂、无锡雪浪山边坡治理工程、南京双子楼及南京眼。
使用tensorflow训练神经网络
tensorflow是一个采用数据流图(data flow graph)的机器学习平台,其特征在于用点和线来表示状态和计算过程。
coq学习笔记
因为没找到比较好的 Coq 中文学习资料,所以主要根据官方 doc和tutorial-nahas等国外的教程来学习。
这篇文章被 deprecated 掉了,详见 Software Foundation 做题的 Notes。
使用deap实现遗传算法
最近在做毕业论文,其中涉及到一项是检验某个为有限元程序优化参数的遗传算法的正确性。
deap是Python上的一个遗传算法库,主要封装了和遗传算法相关的生成population、select、mutant这些相关的操作。比较方便的是deap框架允许自定义个体类型、种群生成方法、评价函数等,所以灵活性比较高
Haskell学习笔记
Channel 9上有个非常好的介绍Haskell和函数式编程的视频,这个视频是根据Programming in Haskell这本书讲述的。Slides和Codes可以在http://www.cs.nott.ac.uk/~pszgmh/上下载,不过后面几章会和实际的课程内容有出入。此外Learn You a Haskell上的教程,以及Wikipedia上有关Haskell的词条也是非常有用的。
相对于其他的一些Haskell的教程,通过这本书/视频进行学习能够了解Haskell的好处以及设计原理
C++右值
C++11标准引入的是右值引用的概念来方便我们操作右值,但右值的概念是在之前的版本中就有的。在引入右值引用概念后,左右值也被分为左值(lvalue)、将亡值(xvalue)、纯右值(prvalue)。其中将亡值和左值合称为泛左值,将亡值和纯右值合称为右值。
- 左值可以形象理解为可以取到地址的值
比如字符串字面量能取到地址,是左值。 - 纯右值例如整型字面量或者求值结果相当于是字面值或者不具名的临时对象
- 将亡值包括类似
T && foo()
函数返回的右值引用或由std::move
强转来的右值引用。
将亡值属于泛左值,又属于右值。属于泛左值是由于将亡值作为右值引用是具名的,这和纯右值如字面量不一样,所以被视为左值。作为右值是由于将亡值具有可移动性。而将亡值之所以又具名又能移动,是因为它要死了。
这些概念的区分涉及到 Value categories,在这里会有简单讨论。
注意类似 T foo()
的函数返回值是纯右值。在使用右值和移动语义时容易产生下面的问题:
- 右值、右值引用之间有什么区别
- 重载决议中右值引用、左值引用、通用引用有什么区别
- 右值、(N)RVO之间的关系是什么
- 移动语义在哪些地方可以提高性能
诸如此类,在本文中详细讲解。
Leetcode解题报告
寒假没事情,在家里刷Leetcode。这里放的是LeetCode解题报告【更新中】,代码在GitHub上,有些被坑的题目会专门写一篇post。
必须先对Leetcode吐个槽,这复杂度卡的真是魔幻,同样的复杂度C++能过,Python就不能过,而且都是卡在最后两三个样例上(不会就最后两三个大数据吧?)
Leetcode上面有题解,不过有时候很奇怪他们算复杂度的时候会强行令某些操作,比如判断字符串是否相等(Problem 14),std::map
查找元素(Problem 1)的复杂度为1,感觉这并不是很严谨的,后来在Google Codejam/Kickstart的官方题解上也看到类似的算法,只能说这是一种计算方式吧。
在刷Leetcode的时候,取得Accepted通常是容易的,但是如果能够翻翻Submissions里面速度靠前的答案,看看人家是怎么在同复杂度下进行常数优化也是很有必要的。
去除reimage repair恶意广告软件
今天发现自己的Chrome上超链接被篡改了,在点击这样的超链接时,会打开一个独立窗口并跳到某个广告页面然后窗口自动消失,并且扩展程序页面chrome://extensions
打不开了。后来发现这是一个叫reimage repair plus的恶意广告软件导致的