- 博客(81)
- 资源 (2)
- 收藏
- 关注
原创 使用go进行json序列化和反序化时,该过程可能不可逆
使用golang进行json序列化时需要注意,该序列化过程可能不可逆,而且没有错误抛出。今天用go导出一批数据时,我按照以前python的习惯,将一条条数据json序列化后,输出到文件中去。bys, err := json.Marshal(obj)fmt.Fprintln(file, string(bys)))然后在测试导出文件的可用性发现基本一个string类型的数据跟原来的不太一样。...
2019-07-02 20:22:28
1227
原创 实现不重启服务的情况下改变tornado的工作进程数
要实现不重启服务的情况下改变tornado 的进程数,那得先理解tornado是怎么管理多进程的。 其实很简单,主要看process.py的fork_processes函数,了解子进程的创建过程。首先启动子进程。根据传入的进程数依次启动调用start_child函数fork一个进程,如果在子进程的上下文中,则改变全局变量task_id,并且返回task_id,退出fork_processes...
2018-05-11 11:20:53
1785
原创 使用epoll实现异步IO
看了几天tornado的源码,终于理解了异步IO的基本模型。简单来说就是在一个大循环中,处理事件监听和事件处理,关键点是所有IO操作都设置成非阻塞的模式,然后由事件循环监听。用epoll来实现一个简易版的EventLoop。 如下:from select import epollclass EventLoop(): def __init__(self): s...
2018-04-28 18:14:46
1522
原创 不得不注意tornado多进程部署的副作用
tornado多进程启动时,采用的是fork的方式。 一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。 子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父...
2018-04-16 11:01:59
6626
原创 python日志重复打印
Python日志重复打印问题用Python的logging模块记录日志时,出现了重复输出日志的问题。这里我是把logger封装了一层:def init_logger(log_name, file_log_level=logging.DEBUG, stream_log_level=logging.INFO, max_bytes=200 * 1024 * 1...
2018-03-14 11:15:21
3920
原创 大文件多路归并排序
背景: 一堆小文件,每个文件中有10^6行的数字,要求将这些小文件合并成一个有序的文件。实现思路: 先将每个小文件整理成有序,可以用多进程来处理。 同时打开排完序的文件(打开的文件数受限于系统允许打开文件数,ulimit -a 查看,ulimit -n 修改可允许打开文件数),维护一个堆,堆中元素为{文件描述符,当前偏移量,当前行值},以当前行值比较。
2018-01-05 17:52:36
2136
原创 python字典的遍历顺序
定义一个字典,输出遍历结果a={"a":"1", "b":"1", "c":"1", "d":"1"}for i in a: print i,#输出顺序为:a,c,b,dprint a#输出:{'a': '1', 'c': '1', 'b': '1', 'd': '1'}可以看到定义的键顺序为a, b, c, d,但是输出的键顺序却为a, c, b, d。这跟字典的内储存储方式有关,
2017-12-15 11:23:26
15876
原创 无法忍受sbt构建scala的龟速,用maven构建spark应用吧
本文主要介绍如何使用maven构建spark应用,同样可以用于其他cmdline的java应用。项目结构/ /conf/ 配置文件 /libs/ 依赖包 /bin/ 启动命令脚本 /logs/ log /data/ 数据 /src/ 源代码 /pom.xml /assembly.xml项目pom.xml<?xml version="1.0" encoding="UTF-
2017-11-24 15:19:46
2131
原创 MapReduce解决图N步是否可达问题
输入:起始点集结束点集边集问题:求从起始点集到结束点集n步可到的边信息输出:连接起始点到结束点的边集case:起始点集(1,4) 结束点集(5, 6)边集(1-2,2-4,4-6,1-7,2-7,7-3,3-5,2-5)构造起始数据iter_1 = start=(1-s,4-s)边集加入反向边e
2017-07-30 16:56:55
738
原创 Angularjs中的ng-repeat
ng-repeat 指令用于循环输出指定次数的 HTML 元素。集合必须是数组或对象。例如:<input ng-repeat="x in records" value="{{x}}/><script>var app = angular.module("myApp", []);app.controller("myCtrl", function($scope) { $scope.record
2016-08-25 00:05:46
718
原创 windows 下Nginx+Django构造流媒体播放器
我有一个1G的移动硬盘,里面存了一堆你懂的资源。这些东西还是用手机看比较好,毕竟电脑动静太大了,而且人来人往的,也挺不好意思的。每次想看都得拷到手机里,这太不方便了,于是想出了用电脑搭建一个流媒体服务器,通过连接入局域网的手机直接点播的需求。开始考虑的是只用Django来进行读取视频文件返回给用户。这样只有文件下载完成之后才能播放,更不爽的是不能拖动进度条。通过一通搜索大法,发现Nginx可以作为一
2016-05-27 22:22:56
5827
翻译 基于任务复制的异构集群并行程序的执行
概述:在本文中,我们在一个异构的计算机集群中使用一种基于重复任务调度方法。基于重复调度方法是为了减少有相关联的任务之间的通信操作,在这里关键任务被多次分配到多台机器上,而随后的任务的开始时间也会减少。这种任务重复的过程也会不均匀地被各个系统
2015-10-07 21:25:11
1880
原创 python简单图片转字符
# -*- coding:utf-8 -*-import cv2img = cv2.imread('./14.jpg',cv2.IMREAD_GRAYSCALE)res=cv2.resize(img,(48,32),interpolation=cv2.INTER_CUBIC)for row in res: print ''.join(map(lambda x: " " if x>2
2015-09-28 18:56:57
840
原创 一行python代码
# -*- coding:utf-8 -*-a = [3,2,1,3,4,2,]a = map(lambda x: x[0] + 1, filter(lambda x: x[1]%2 == 0 , zip(a, xrange(len(a)))))不知道是哪个笔试了。。。要求用一行代码将一个列表中奇数位上的数加上1。
2015-09-25 16:31:02
803
原创 一个另类的排序——睡排序
#!/usr/bin/env python# -*- coding:utf-8 -*-import sysimport timeimport multiprocessinga = time.time()def sl(x): time.sleep(int(x)) print xdef log_run_time(func): def wrapper(*argv
2015-09-24 17:52:26
1964
原创 hbase错误集锦
问题:ERROR: java.io.IOException: Table Namespace Manager not ready yet, try again later at org.apache.hadoop.hbase.master.HMaster.getNamespaceDescriptor(HMaster.java:3447) at org.apache.ha
2015-07-30 15:25:26
3407
原创 LL(1) 文法
问题描述:输入:文法的多个产生式或产生式选项输出:(1) 产生式中非终结符的First集和Follow集 (2) 判断该文法是否是LL(1)文法 (3) 建立LL(1)文法的分析表 (4) 对输入的符号串进行LL(1)文法分析,并给出分析结果二、解决思路:(1)First集的求解:对G中每个文法符号XÎVT∪VN,构造
2015-07-04 22:31:38
2240
原创 正则到DFA
将正则表达式翻译成DFA的最简单算法是通过中间构造,在它之中,正则表达式派生出一个NFA,接着就用该NFA构造一个同等的DFA。。因此我们只关心两个算法:一个是将正则表达式翻译成N FA,另一个是将N FA翻译成D FA。构造一个扫描程序的自动过程可分为3步,如下所示: (1)利用Thompson结构将正则表达式转换成NFA基本正则表达式 基本正则表达式格式a、 或,其
2015-07-04 22:24:47
2178
原创 char与int
运算时,char型会转换成有符号的int型。 如果char型变量最高位为1,那么会补上三个字节的1. 比如:char ch = 0xff;long l = 0;l|=ch;int i = 0;i|=ch;那么l = 0xffffffff;i = 0xffffffff;无符号的char则不会进行自动补1.unsigned char uch = 0xff;long l = 0;l |=
2015-04-12 09:43:06
864
原创 数组左右最大值的最大差
给定一个长度为N的整型数组arr,可以划分成左右两个部分: 左部分arr[0..K],右部分arr[K+1..arr.length-1],K可以取值的范围是[0,arr.length-2] 求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少? 例如: [2,7,3,1,1] 当左部分为[2,7],右部分为[3,1,1]时,左部分中的最大值减去右部分最大值的绝对值为4; 当
2015-03-25 12:13:52
1930
原创 codeforces 510D Fox and Jumping
题目大意:给定n个数,其中每次个数有一个权值,从中选中k个数,使得能利用加减法,得到数轴上所有的整数并且权值和最小,其实也就是能得到1。可想到求最大公约数里有个辗转相减法,当这K个数的最大公约数为1时,则满足第一个条件。代码:In = lambda:map(int, raw_input().split())input()ads = {0:0}def gcd(a, b):
2015-02-06 00:17:24
823
原创 python Thread初窥
在python中,多线程用到threading模块中的Thread类。start()重载了run()方法,两者是一样的。join([timeout]):如果一个线程或者一个函数在执行过程中要调用另外一个线程,并且待到其完成以后才能接着执行,那么在调用这个线程时可以使用被调用线程的join方法。当传入一个超时时间,如果到时间了还没完成,也会继续运行主线程。setDemon([flag])
2014-12-23 15:07:05
774
原创 RGB565转RGB888
在arm板上cmos得到的图象格式是RGB565格式,而在opencv上处理的格式是的BGR888。RGB565用两个字节来存一个像素点,其中三个通道分别占5个,6个,5个位。BGR888用三个字节来存一个像素点,每个通道占8个位(即一个字节)。转换时,直接对应通道,用RGB565的值补BGR888的高位。比如RGB565:11100 111001 11111转成BGR88
2014-12-11 16:18:16
4877
原创 QuickSort and HeapSort
#include #include #include #include #include using namespace std;const int maxn = 1000000;template void _QUICK_SORT(T *begin, T *end){ while(begin { T *p = begin;
2014-10-30 22:12:19
968
1
转载 OpenCV&Qt学习之一——打开图片文件并显示
摸索了一段时间了,期间杂七杂八干了很多零活,花在这上面的时间不是太多,现在回头把资料简单整理。OpenCV和Qt学习在入门阶段最大的困惑时版本不统一所带来的影响,Qt稍微好一点,OpenCV目前的大多数资料都是基于1.0版本的,而我用的2.4.3(刚更新了2.4.4)在使用上还是有很多区别的,在使用相关的资料的时候就会带来很大的困惑。 OpenCV的版本区别由于我连入门都算不上
2014-10-21 20:31:58
1981
原创 latex 中文支持
\documentclass[a4paper,12pt]{article}\usepackage{CJKutf8}\begin{document}\begin{CJK*}{UTF8}{gbsn}你好!\end{CJK*}\end{document}
2014-10-10 10:04:39
1335
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人