mdtoc start
表现
解决方法
定位问题过程
gdb-python: 搞清楚python程序在做什么
准备gdb
接入gdb
查看线程
查看调用栈
coredump
其他命令
pyrasite: 连接进入python程序
psutil 查看python进程状态
guppy 取得内存使用的各种对象占用情况
无法回收的对象
不可回收对象的例子 🌰
objgraph 查找循环引用
继续阅读 »
迭代器模式是指提供一种方法,顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心内部构造,也可以按顺序访问其中的每个元素。
jQuery中的迭代器
迭代器模式无非就是循环访问聚合对象中的各个元素。比如jQuery中的$.each函数,其中回调函数中的i为当前 索引,n为当前元素,代码如下
$.each([1, 2, 3], function(i, n) {
console.log('当前坐标:' + i);
console.log('当前值:' + n);
});
然而,作为一个合格的前端开发者,我们不应该只是会用,而
继续阅读 »
你可能知道,Javascript语言的执行环境是"单线程"(single thread)。
所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。
more
这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(假死),往往就是因为某一段Javascript代码长时间运行(比如死循环),导致整个页面卡在这个地方,其他任务无法执行。
为了解决这个问题,Javascript语言将任务的执行模式分成两种:同步(Synchronous)和异步(Asynchronous)。
继续阅读 »
本节实现的是使用内建摄像头捕获视频,并显示视频的每一帧以实现视频的播放。
创建摄像头对象
逐帧显示实现视频播放
实现过程
引用
不再赘述,代码如下。
python
import cv2
import numpy
import matplotlib.pyplot as plot
创建摄像头对象
使用opencv自带的VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头,一般就是笔记本的内建摄像头。
python
cap = cv2.VideoCapture(0)
逐帧显示实现视频播放
在while循环中,利用摄像头对象的read()函数读取视频的某帧,并显示,然后等待1个单位时间,如果期间
继续阅读 »
很多时候,我需要写脚本去做一些自动化操作,简单的可以直接写 Shell 脚本,但一些稍复杂的情况,
比如要用到分支语句,循环语句,或者调用一些高级函数,用 Shell 就太费劲了。
我更喜欢用一种完整的语言(比如 Python),调用 Shell 程序并获取它的输出,执行复杂操作。
继续阅读 »
细说Android动画
动画感觉说白了就是一句话
在触发范围内 循环的修改view特点后 使view重新绘制 展示新的效果
所以只要有满足三个条件就能完成一个效果
触发范围
比如给个时间 在范围内做个事,或者是给个滑动距离 手指在范围内跟随滑动做个事。
继续阅读 »
好久之前写过K-Means, 但写的极其丑陋,使用的时候还得用 sklearn.cluster.KMeans 包来干。最近需要手撕k-Means,自己也受不了多重for 循环这么disgusting的方式。sklearn.cluster.KMeans等包加入了相当多细节优化和向量化计算,同时也想能否用 numpy 来原生实现更高效的加速。在网上找了半天,终于看到简洁又高效的numpy 实现 了。
继续阅读 »
链接:Link 耗时:0.139s
前言
这道题的主要思路就是打表,看看Fibonacci数列模n几个一循环。但由于这题给的数太大了,从而在细节上耗了很久。在此记录一下:
var
x: qword;
y: longint;
begin
x := 1<<64-1;
y := 100;
x := x mod y; //报错201
x := x mod qword(y); //正确
end.
Code
var
a,b: qword;
_, n, i, k, cnt: longint;
f: array [1..1000000] of longint;
fun
继续阅读 »
Handler - Message - Looper 说起来也就是这么一回事,Looper实现在Thread中负责不断的循环监听处理Message,要不然Thread运行完就自己关了。当你不需要的时候就可以把Looper关了,线程就自动运行完了。
Message
实现了序列化接口,what区分类型,arg的参数使用简单的整形,obj存储对象,data存储一个bundle,target是一个Handler。剩下的就是搞了个对象池回收Message,所以才会推荐用Message.obtain()来新建,其实就是从回收池里拿东西。
总之没什么好说的。
Looper
``` java
继续阅读 »
Ruby ActiveRecord向数据库的批量写入效率很低:要插入一条记录,你只能先用model的`create`方法构造一个对象,然后保存到数据库;如果你有一批数据要插入,你就要循环调用`create`方法——这一过程可能缓慢到令人难以忍受!
继续阅读 »