2016-07-28 Li Shuai
greenlet是Python众多协程实现技术中的一种,eventlet是基于greenlet实现的。而eventlet和libev又是gevent的核心。greenlet的上下文切换清晰易懂,可以结合IO事件循环构建出一些高效的事件处理逻辑。不同于yield类型的上下文切换,greenlet的上下文切换从表现形式上看更纯粹,可以直接switch到另一个greenlet,不用管目标greenlet是否已经在运行,不同greenlet之间处于完全对等的状态,可以相互switch。基于yield实现的协程往往只能切换回自己的直接或间接调用者,要想在嵌套的调用中切换出去是比较麻烦的。本质上是因为yield只能保留栈顶的帧,Python3对 继续阅读 »
2018-05-20 jude
序 这是篇笔记性质的文章,没多少技术含量。 之前一直很少接触 CSS 动画,前段时间刚好做了个相关活动,实现了包含位移、渐现、一次性效果和循环效果的动画。 效果 可以在这里先看一下最终效果。 继续阅读 »
2016-03-03 Oliver Wang
@keyframes 基本写法是一个开始状态和一个结束状态: css @keyframes demo-anim { from { opacity: 1; } to { opacity: 0; } } See the Pen QNbBOy by Oliver (@ochukai) on CodePen. 其中 animation-iteration-count: number or infinite; 可以设置循环次数,infinite为无限次 还可以定义的很详细: ```css @keyframes demo-anim { from { transform: translate 继续阅读 »
2016-06-27 zzyhappyzzy
注意 本文转载自http://nshipster.cn/clang-diagnostics/ 概要 诊断结合了逻辑与分析来得出一个结论。这是最纯粹的科学和工程学,也是人类最有力的推理。 more 在医学界,诊断是通过实验室样本做后盾的本能来判断。而对于工业制造,则是通过在统计和方向都等同应用来诊断产品故障。 对于我们开发者来说,我们通过代码通知后续代码的生产,创建了一个在过去半个世纪里呈几何级数发展的技术的正反馈循环。尤其对于我们的 Objective-C 开发者来说,最有效的诊断来自 Clang。 Clang 是 C / Objective-C 的前端的 LLVM 编译器。它对 Objective-C 的语义和语法有 继续阅读 »
2016-03-11 Li Shuai
延迟绑定 Python闭包函数所引用的外部自由变量是延迟绑定的。 In [2]: def multipliers(): ...: return [lambda x: i * x for i in range(4)] In [3]: print [m(2) for m in multipliers()] [6, 6, 6, 6] 如以上代码: i是闭包函数引用的外部作用域的自由变量, 只有在内部函数被调用的时候才会搜索变量i的值, 由于循环已结束, i指向最终值3, 所以各函数调用都得到了相同的结果。 解决方法: 1) 生成闭包函数的时候立即绑定(使用函数形参的默认值): In [5]: def multip 继续阅读 »
2014-01-15 W.Y.
算法原理 为什么叫鸡尾酒排序?其实我也不知道,知道的小伙伴请告诉我。 其实它还有很多奇怪的名称,比如双向冒泡排序 (Bidirectional Bubble Sort)、波浪排序 (Ripple Sort)、摇曳排序 (Shuffle Sort)、飞梭排序 (Shuttle Sort) 和欢乐时光排序 (Happy Hour Sort)。本文中就以鸡尾酒排序来称呼它。 鸡尾酒排序是冒泡排序的轻微变形。不同的地方在于,鸡尾酒排序是从低到高然后从高到低来回排序,而冒泡排序则仅从低到高去比较序列里的每个元素。他可比冒泡排序的效率稍微好一点,原因是冒泡排序只从一个方向进行比对(由低到高),每次循环只移动一个项目。 以序列(2,3,4 继续阅读 »
2016-06-07 Lu Huang
本节实现的是读取视频,并显示视频的每一帧以实现视频的播放。 创建摄像头对象,指向文件 逐帧显示实现视频播放 实现过程 引用 不再赘述,代码如下。 python import cv2 import numpy 创建视频对象 使用opencv自带的VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头,一般就是笔记本的内建摄像头。 python cap = cv2.VideoCapture("../test.avi") 逐帧显示实现视频播放 在while循环中,利用视频对象的read()函数读取视频的某帧,并显示,然后等待1个单位时间,如果期间检测到了键盘输入q,则退出,即关闭窗口。 pyt 继续阅读 »
2014-10-24 W.Y.
如果用 D3 来构建一个简单的散点图,我们需要创建一些圆点(circle)来展示你的数据。当你发现 D3 并没有提供内置的方法来同时创建多个 DOM 元素时,也许你会感到惊讶,但是,等等,为什么呢? more 当然,你可以使用 append 方法来创建单个元素: js svg.append("circle") .attr("cx", d.x) .attr("cy", d.y) .attr("r", 2.5); 这仅仅是一个圆点,我们需要的是一系列圆点,每个圆点代表一条数据。当然你可以用 for 循环来创建,但开始之前,请看看下面官方例子中的代码: js svg.selectAll("circle") 继续阅读 »
2015-09-28 veryyoung
定时任务是非常常见的需求,比如定期的去汇总数据,定期的清除垃圾等。 Java 提供了很多定时任务的方案,下面简单的列举一下。 more 利用 thread 的sleep 新开一个线程,死循环运行,通过 sleep 的达到定时运行的效果。 public static void main(String[] args) { final long timeInterval = 1000; Runnable runnable = new Runnable() { public void run() { while (true) { 继续阅读 »
2016-09-12 blademainer
这里收藏工作中用到的脚本,也为了防止做重复的搜索工作,同时分享给大家。 more 数组 初始化数组 shell name = (value1 value2 ... valuen) $ A=(a b c d) $ echo ${A[@]} # 输出所有元素 数组去重 shell $ array=($(awk -vRS=' ' '!a[$1]++' <<< ${array[@]})) 取得数组元素的个数 shell $ echo ${#A[@]} 取下标 shell $ echo ${A[1]} # 从1开始 清除元素 shell $ unset A $ echo ${A[@]} 循环取元素 shell $ fo 继续阅读 »