- 博客(503)
- 资源 (17)
- 收藏
- 关注
转载 两个Python web框架:Django & Tornado比较
在各种语言平台中,python涌现的web框架恐怕是最多的;猜想原因应该是在py中构造框架十分简单,使得轮子不断被发明。这里记述一下我了解过的两个py web框架,供大家参考,希望能起他山之石的作用。DjangoDjango 应该是最出名的py框架,Google App Engine甚至Erlang都有框架受它影响。D
2014-05-21 00:18:34 8968
原创 【MySQL】基础知识小结
一. char与varchar 1)char为固定空间存储, 实际数据不够会补够,超出长度则截断; varchar为不固定长度存储,使用额外的1-2个字节来存储长度信息。 2)char可能导致空间浪费, 但也可能有效减少空间碎片,上限255; varchar的情况相反,上限65535个字节(指定的长度表示的为字符,要考虑编码)二. int(x) x代表了
2014-04-08 00:14:15 3398 2
原创 【Python】logging结合decorator模式实优化日志输出
python内置的loging模块非常简便易用, 很适合程序运行日志的输出。而结合python的装饰器模式,则可实现简明实用的代码。测试代码如下所示: #! /usr/bin/env python2.7# -*- encoding: utf-8 -*-import logginglogging.basicConfig(format='[%(asctime)s] %(mess...
2014-04-01 18:13:29 3962 4
原创 【python】理解迭代器及yield
虽然很早之前就接触yield这个词了,却一直是一知半解。趁现在有时间,把它研究一通再说。 含有yield的函数说明它是一个生成器,而不是普通的函数。当程序运行到yield这一行时,该函数会返回值,并保存当前域的所有变量状态;等到该函数下一次被调用时,会从上一次中断的地方开始执行,一直遇到下一个yield, 程序返回值, 并在此保存当前状态; 如此反复,直到函数正常执行完成。 我
2014-03-30 21:10:47 3778
原创 【Redis】初探dict字典原理的实现(一)
先简单阅读了源码,学到一些对我来说是比较新鲜的概念(比如双table,fingerprint等)。以下是在源码基础上的一些注释翻译,及个人的理解;稍后会用图示的方式来说明一下dict的各种实现原理。dict.h/* Hash表实现.*/#include #ifndef __DICT_H#define __DICT_H#define DICT_OK 0#define DICT_
2014-03-29 10:02:21 6136
原创 【python】zip()方法的一种应用场景
假设有一个集合set, 需要对set中的每个元素指定一个唯一的id,从而组建成一个dict结构。这个场景可以演化成,两个list/set或者一个set与一个list如何创建成为一个字典,如:A = ["a", "b", "c", "d"]B = [1, 2, 3, 4]? ==> C = {"a":1, "b":2, "c":3, "d":4}一个比较快捷的
2014-03-25 19:39:37 2094
原创 【Redis】对通用双向链表实现的理解
Redis实现的双向链表还是比较容易看得懂的,其实现的原理很经典, 代码很整洁清晰。以下是对其源码注释的翻译及本人见解的部分说明,如有偏颇欢迎指正: /* adlist.h - 通用双向链表的实现*/#ifndef __ADLIST_H__#define __ADLIST_H__/* 目前的数据结构只使用了Node, List, and Iterator. *//* list
2014-03-24 17:10:56 3741
原创 【python】判断值是否在list或set中的对比
判断值是否在set集合中的速度明显要比list快的多, 因为查找set用到了hash,时间在O(1)级别。假设listA有100w个元素,setA=set(listA)即setA为listA转换之后的集合。以下做个简单的对比:for i in xrange(0, 5000000): if i in listA: passfor i in xrange(0,
2014-03-21 11:41:34 28887 2
转载 【python】Python性能鸡汤
阅读 Zen of Python,在Python解析器中输入 import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. "它肯定很慢!" 毫无疑问:Python程序没有编译型语言高效快速. 甚至Python拥护者们会告诉你Python不适合这些领域. 然而,YouTube已用Python服务于每小时4千万视频的请求. 你
2014-03-21 09:47:45 2496
原创 【Redis】redis3.0源码目录
很早就听说redis源码的严谨精妙之处了,现有一探其实质的好奇之心。现下载了它的3.0版本源码,对其目录先进行了一番浏览。作者的注释很详细,看其文件头注释就明白该文件的作用与目的,如下是对各源文件的概括性描述:adlist.c // 双向链表结构,用于定义listae.c // 用于事件的处理ae_epoll.c // 处理epol
2014-03-17 08:38:19 3546
转载 【Redis】向优秀代码学习:Redis 源码概览
原文:http://www.heychinaski.com/blog/2013/10/14/a-look-at-the-redis-source-code/译文:http://blog.jobbole.com/50837/---------------------------------------------------------------------这七年以来,主要
2014-03-09 23:19:57 2031
原创 【ab测试】关于ab测试中path传参
假设有这么一个Get请求:http://myserverfortest.com:7086/test.php?id=84ea7036¤cy=4通过ab进行并发测试时,该请求url需要使用引号来标记。如:root@XIAOMO:/home/xiaomo/# ab -c 10000 -n 10000'http://myserverfortest.com:7086/test
2014-03-09 00:37:17 2969
原创 【redis】mysql数据复制至redis的一种应用场景
由于目前仅仅通过mysql来进行数据的存储,要完成复杂的数据统计耗时较长。因此考虑将部分数据导入到redis中,完成数据统计后,再将结果存入mysql。 经查资料,利用管道的方式可以绕开第三方的数据交互过程,数据直接从mysql导入到redis的速度非常快。在笔者的测试环境中,500w级别的数据大概用时40秒。 另外,由于mysql表设计的问题,大部分数据存储在结构相同的不同表
2014-03-08 17:14:49 9686 3
原创 【shell】获取函数返回值的两种方法
方法一: 使用全局变量g_result=""function testFunc(){ g_result='the value'}testFuncecho $g_result方法二: 把shell函数作为子程序调用,将其结果写到子程序的标准输出function testFunc(){ local_result=local value' echo $
2014-03-05 13:43:58 32633 5
转载 【redis】Redis常用内存优化手段
redis公认内存管理成本比较高,即占用了过多的内存,redis的作者对这点也很清楚,所以提供了一系列的参数和手段来控制和节省内存:首先最重要的一点是不要开启redis的vm选项,即虚拟内存功能。这个本来是作为redis存储超出物理内存数据的一种数据在内存与磁盘换入换出的一个持久化策略,但是其内存管理成本也很搞,并且我们后续会分析此种持久化策略并不成熟,所以关闭vm功能,所以请设置redis.
2014-03-04 14:59:08 1700
原创 【redis】关于集群创建遇到的问题
1.先是下载最新版的redis: https://github.com/antirez/redis/archive/unstable.zip2.解压后, 运行 make & make instal;3.修改了redis.conf, 改动点:port 6379loglevel verbosecluster-enabled yescluster-config-file nodes.c
2014-02-26 10:55:56 14377 2
转载 【运维测试】Web性能压力测试工具之WebBench详解
PS:在运维工作中,压力测试是一项很重要的工作。比如在一个网站上线之前,能承受多大访问量、在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验。但是,在压力测试中存在一个共性,那就是压力测试的结果与实际负载结果不会完全相同,就算压力测试工作做的再好,也不能保证100%和线上性能指标相同。面对这些问题,我们只能尽量去想方设法去模拟。所以,压力测试非常有必要,有了这些数据,我们就能对自己做维
2014-02-19 00:50:05 2924
转载 【nginx】关于Nginx的一些优化(突破十万并发)
nginx指令中的优化(配置文件)worker_processes 8;nginx进程数,建议按照cpu数目来指定,一般为它的倍数。worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进...
2014-02-19 00:25:18 55813 4
原创 【Redis】redis集群启动失败案例
部署Redis分布式集群时,出现了如下错误:moguang@ubsvr13:/opt/redis-unstable/src$ ./redis-trib.rb create 192.168.1.13:6379 192.168.1.15:6380 192.168.1.40:6381>>> Creating clusterConnecting to node 192.168.1.13
2014-02-17 13:50:56 32454 8
原创 【redis】WRONGTYPE Operation against a key holding
使用jedis插入数据时出现了一个问题:redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding the wrong kind of value代码大概是这样实现的:HashMap map = new HashMap();map.put("mapKey",
2014-02-13 13:19:48 49421 3
原创 【python】关于segfault
最近python程序在运行过程中偶尔会引发系统segfault的错误,而且是在不定期不同代码段时发生的,所以单步调试没办法确定是哪一行代码的问题。段错误, 这个现象太离奇了。在系统日志里message中一开始提示为python库的问题,后台有提示过libmysqlclient, 也提示过cjson库引起的。如果真是在特定硬件环境中python或mysql库会出现问题,那有点说不过去。如果是
2014-02-10 10:21:07 3044 1
原创 【hadoop】关于ERROR security.UserGroupInformation
14/01/23 20:49:47 ERROR security.UserGroupInformation: PriviledgedActionException as:hadoop (auth:SIMPLE) cause:java.io.IOException: Failed on local exception: com.google.protobuf.InvalidProtocolBuffe
2014-01-23 20:59:13 12256 4
转载 【hadoop】Hadoop的本地库(Native Libraries)介绍
原文:http://501565246-qq-com.iteye.com/blog/1930771Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通过本地库,Hadoop可以更加高效地执行某一些操作。 目前在Hadoop中,本地库应用在文件的压缩上面: · zlib
2014-01-23 17:04:08 2328
原创 【shell】使用cat来合并文件的简单用法
假设有如下两个目录A和B,分别对应有a.txt, b.txt, c.txt三个文件A --> a.txt, b.txt, c.txtB --> a.txt, b.txt, c.txt需要把A中的.txt合并到B中对应文件名的txt,那么可以这样:xiaomo@hadoop1:~$ cd /data/Axiaomo@hadoop1:/data/A$ for log in *.txt
2014-01-15 19:34:03 3918
原创 【shell】scp传送的压缩与限速
在网速较慢或为减少流量使用时,scp可以使用-C压缩选项;压缩还是能比较明显的提高传输速率的(不过一般建议先手动压缩再做scp传输)。为保证宽带的可用性,可以加上限速选项 -l 1024 (单位为kb,所示即为不超过1Mb/s的速率)。scp -C -l1024 src.** dest.**...
2014-01-15 18:18:44 9140 2
原创 【python】TCP包发送十六进制数据
举例: 0x12, 0x34可以直接拼成 "\x12\x34"。客户端代码示例:#-*- encoding: utf-8 -*-import jsonimport socketimport sysimport binasciireload(sys)sys.setdefaultencoding('utf-8')if __name__=="__main__":
2014-01-05 17:40:42 13121 1
转载 【redis】常见JedisConnectionException异常分析
纯属用于笔记,转自:http://blog.csdn.net/fachang/article/details/7984123最近项目开发中用到了Redis, 选择了官网推荐的java client Jedis。Redis常用命令学习:http://redis.io/commandsRedis官方推荐Java客户端Jedis(包含了所有Redis命令的实现):https://gi
2013-12-26 18:03:05 147187 9
原创 【redis】redis集群配置小结
配了大半天的redis集群,居然还没有成功。一开始看起来挺顺利的,依着教程(Redis 命令参考 Release2.8),先是下载最新版本redis(https://github.com/antirez/redis,不是release版本,还在开发阶段),编译之后生成可执行文件redis-server。然后创建监听不同端口的redis实例,一共开了6个端口,7000至7005。最后在运行命令,
2013-12-25 00:24:31 33078 12
原创 【Code Style】每个模块拥有一个单元测试
每个模块最好有一个单元测试用例,并且放在容易调用的位置。例如使用python,写了一个工具模块,那么可以这样添加:if __name__=="__main__": unitTest(123)unitTest方法中包含了调用了一些工具函数的过程并输出结果。很简单,但是越简单就是越要注意编程习惯。
2013-12-24 08:36:03 1151
转载 【Linux】Linux Kernel-Processes(一)
原文:file:///D:/DevDocument/%E5%BC%80%E5%8F%91ebook/linux/linux%E5%86%85%E6%A0%B8%E5%9B%BE%E8%A7%A3/linux%E5%86%85%E6%A0%B8%E5%9B%BE%E8%A7%A3/linuxkernel.htm本章描述进程是什么以及Linux如何创建、管理和删除系统中的进程。
2013-12-21 16:14:07 2028
原创 【python】获取linux主机ip的一种方法
python有好几种方法可以获取主机的ip地址。我常用的一种是通过socket.socket().inet_ntoa()来实现,非常方便;但这种方法有个限制就是要把网卡名(比如eth0)作为参数传进来。所以加多了一个条件判断,如果发现以上方法获取ip抛异常时,那就用调起shell命令(ifconfig)和管道,把想要的ip给过滤出来。import socketimport fcntlimp
2013-12-16 13:40:55 5558
原创 【python】Resource temporarily unavailable
原本python中多进程程序跑得挺好的,后来加了一部分代码,结果在运行到lock = multiprocessing.Manager().Lock()这一行时报出了如下错误:[0]Exception: [Errno 11] Resource temporarily unavailable在确定没有更改multiprocessing这一模块代码的情况后,初步判定要么是系统出异常了,要
2013-12-13 22:12:56 10969
原创 【MySQL】关于MySQL错误日志信息的收集
为方便维护MySQL,写了个脚本用以提供收集错误信息的接口。这些错误信息来自与MySQL错误日志,而 通过grep mysql可以获取error-log的路径。#!/usr/bin/env python2.7#-*- encoding: utf-8 -*-"""该模块用于提取每天mysql日志中的异常或错误信息author: xiaomoemail: moxiaomomo@gmai
2013-12-10 20:59:17 3471
转载 【Linux】Linux Kernel--Memory Management(二)
3.6 Demand Paging 只要执行映像映射到进程的虚拟内存中,它就可以开始运行。因为只有映像的最开始的部分是放在物理内存中,很快就会访问到还没有放在物理内存的虚拟空间区。当进程访问没有有效页表条目的虚拟地址的时候,处理器向Linux报告page fault。Page fault描述了发生page fault的虚拟地址和内存访问类型。 Linux必须
2013-12-04 08:45:21 1798
转载 【Linux】Linux Kernel--Memory Management(一)
内存管理子系统是操作系统的重要部分。从计算机发展早期开始,就存在对于大于系统中物理能力的内存需要。为了克服这种限制,开发了许多种策略,其中最成功的就是虚拟内存。虚拟内存通过在竞争进程之间共享内存的方式使系统显得拥有比实际更多的内存。虚拟内存不仅仅让你的计算机内存显得更多,内存管理子系统还提供:Large Address Spaces(巨大的地址空间)操作系统使系统显得拥有比实际更大
2013-12-03 23:23:50 3257
原创 【MySQL】使用Symbolic Links以支持数据分区存储
MySQL数据库及表(仅MyISAM)支持符号链接(symbolic link),即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录。要支持符号链接,需要在配置中设置symbolic-links=1(较新的版本为默认开启)假设my.cnf有设置data目录: datadir=/data1/mysql/data/而在另一个分区目录下保存
2013-12-03 11:20:42 21992
原创 【MySQL】问题小结
最近在提交新的代码之后,MySQL偶尔会抛出异常: (2006, 'MySQL server has gone away') 这两天情况变得更糟糕,除了这个异常还有: thread.error: can't start new thread重新检查了一遍代码之后,发现了两个问题:(1)根目录/ 下的空间已经被用光了,对应的mysql错误日志会有相关提示:2013-11-
2013-12-02 09:44:33 3698
原创 【MySQL】修改data目录后重启失败
今天在处理数据修复时,修改了MySQL的datadir,结果导致了重启失败,提示信息为:Starting MySQL..The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)检查了相关文件权限,没有发现问题。想查看错误日志输出时,却发现my.cnf中定义的错误日志没
2013-11-28 23:44:26 4552 1
转载 【转】linux 终端 There are still stopped jobs
在用管理员执行一个命令后,用Ctrl+Z把命令转移到了后天。导致无法退出root的。输入命令:exit终端显示:There are stopped jobs.解决方法:方法一、输入命令:jobs终端显示:[1]+ Stopped vim /etc/network/interfaces > /home/leo/Desktop/ip.txt (wd: /)KILL
2013-11-27 21:13:44 4446
google_appengine_1.9.50.7z
2020-03-05
ArmorySDK2002.zip
2020-03-02
google_appengine_1.9.40.tar.gz
2019-07-25
win8应用开发指南(Metro Revealed Building Windows 8 apps with XAML and C#)
2013-01-05
敏捷开发技巧
2012-03-27
C#.net 人事管理系统
2011-05-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人