
1.Linux/C/Python
文章平均质量分 79
Coder李海波
这个作者很懒,什么都没留下…
展开
-
京东开源RaftKeeper性能超越ZooKeeper!
RaftKeeper提供2倍以上的吞吐量和容量,突破了分布式系统协调服务的处理能力限制,延迟时间减半,请求更加平稳,资源消耗更低,在性能要求更高的场景中表现更优异。在ClickHouse应用ZooKeeper的场景中,因无法突破高吞吐写入和低延时数据复制的瓶颈,京东零售智能平台部OLAP团队基于ClickHouse研发RaftKeeper(采用Raft协议C++实现的分布式共识服务)。原创 2023-04-17 10:31:32 · 877 阅读 · 1 评论 -
std map erase的问题记录
网上各种erase的版本不可信,还是自己试验了一下。erase删除迭代器或者Key后,指针会指向下一个迭代器,如果此时再it++,就多移动了一次。http://www.cplusplus.com/reference/map/map/erase/The other versions return an iterator to the element that follows the la...原创 2020-01-08 17:32:27 · 520 阅读 · 0 评论 -
Centos下测试硬盘读写速度
这是在服务器上,读写超快。写速度$dd if=/dev/zero bs=1k count=1000000 of=1Gb.file1000000+0 records in1000000+0 records out1024000000 bytes (1.0 GB) copied, 5.13676 seconds, 199 MB/s读速度$dd if=1Gb.file bs=64k |dd of=/dev/null[haibo@localhost ~]$ dd if=1Gb.file bs=64k |dd原创 2010-12-01 11:21:00 · 17684 阅读 · 0 评论 -
螺旋矩阵算法代码实现
<br />贴这个实在不好意思,因为计算机专业课就有这个题目,不过时间太久了,都忘了,前两天看到论坛中有人问起这个,就想了想,既然写了就贴出来。想到的有两种办法,一种是根据坐标x,y,计算坐标的值value;另外一种是根据值value,计算坐标的值x,y。<br />第一种:<br />void matrix1(int W, int H) { if (W <= 0 || H <= 0) return; int x,y,level,max,w,h,pos; printf("Matrix1/n原创 2010-09-08 11:52:00 · 1603 阅读 · 0 评论 -
代码行统计工具
<br />统计h/c/cpp/cc/代码,python写的,只是统计了行数,没有区分空行,注释等<br />#! /usr/bin/python# coding=utf-8import os,sysdef getCount(dr): c = 0 for l in os.listdir(dr): p = dr + '/' + l if os.path.isdir(p): c += getCount(原创 2010-09-16 10:40:00 · 1870 阅读 · 1 评论 -
python html parser库lxml的介绍和使用(快速入门)
lxm是python的一个html/xml解析并建立dom的库,lxml的特点是功能强大,性能也不错,xml包含了ElementTree,html5lib,beautfulsoup等库,但是lxml也有自己相对应的库,所以,导致lxml比较复杂,初次使用者很难了解其关系。1. 解析html并建立dom>>> import lxml.etree as etree>>> html = 'abc123def456ghi'>>> dom = etree.fromstring(html)>>> e原创 2010-08-18 15:16:00 · 51452 阅读 · 1 评论 -
Google c++ 风格指南
<br />google c++ style guide<br />http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#The__define_Guard<br />google c++ 风格指南(中文版)<br />http://yangyubo.com/google-cpp-styleguide/<br /> <br />我以前曾经研究过google ctemplate,非常喜欢其中的代码风格,比如初始化用init函数,不允许隐式原创 2010-06-08 15:46:00 · 2302 阅读 · 0 评论 -
设置正确的线程数量
《高性能服务器架构》中提到了SEDA,我搜了一下,发现这篇文章《SEDA性能优化的分析和模拟》,对于线程数量的建议。假如一个Web请求,代码执行的时间为ST(Service Time),读文件、网络调用之类IO等待时间为为WT(Wait Time),CPU的个数是N、核数是M则线程数量TC(Thread Count)为: TC= N*M*(1+WT/ST)原创 2010-01-30 12:07:00 · 4697 阅读 · 0 评论 -
c++声明/定义,静态/非静态,变量/函数
我以前也很糊涂,所以研究了一下,写了一个例子。如下 //----------------- def.h ----------------#ifndef _DEF_H_#define _DEF_H_static int a = 1;extern int b;int add();#endif //---------------- def.cpp ----原创 2009-06-03 17:36:00 · 3730 阅读 · 1 评论 -
Web Server性能测试工具介绍
本来我想介绍一下,但是有人写的比我更全,我就不做重复发明轮子的事情了。http://zhengdl126.javaeye.com/blog/437060我推荐一下Apache Bench比较好用原创 2009-04-29 16:52:00 · 1334 阅读 · 0 评论 -
数据表水平切分的ID规则
这个问题很突出,所以转过来说一下。http://www.jianzhaoyang.com/database/sharding_groups_global_pk现在通过数据的水平切分(sharding)来实现数据库 Scale Out 的解决方案受到了越来越多人的青睐,但是在切分过程中可能遇到的问题也肯定不在少数,如切分规则的设计,切分后的访问路由,切分后的主键的全局唯一等等。这里我主要原创 2009-04-17 17:05:00 · 3779 阅读 · 2 评论 -
Django的多数据库的处理(垂直分库和水平分库)
垂直分库指的是根据应用来分数据库,比如博客一个数据库,论坛一个数据库。水平分库是指,根据某些规则,将数据分布在不同的库上。比如根据用户ID把用户的博客文章分布在5个数据库上。垂直分库,可以参考如下的文档。Easy Multi-Database Support for Django这篇文章的主要思路是,继承Manager创建一个MultiDBManager,在建立Model的时候用MultiDBMa原创 2009-04-03 17:17:00 · 4262 阅读 · 0 评论 -
g++undefined reference可能是链接库的顺序不对
1、undefined reference的问题,一般情况下是函数未实现,或者缺少某些库(未添加或者路径不对),但是有时候明明实现了,库也有,链接时就是找不到。2、链接顺序不对g++链接时,从前到后,依赖多的放在前,依赖少的放在后面,如a被b引用、b被c引用,则顺序为 g++ -lc -lb -la “越基础的库, 越往后面写”。如果有交叉引用,可以写几次。这次没注意,就搞了好长时间才搞定,下回注意了。原创 2010-12-10 14:23:00 · 2512 阅读 · 1 评论 -
VMware 7.1 手动模式安装Centos 5.3
VMWare 7.1安装Centos5.3时,如果直接安装,不管是自动还是定制(定制指的是VMware的定制),Centos在安装时,都会全自动安装。默认安装是英文,这样,中文显示就会有问题。按照网上的一般方法: 1、yum install fonts-chinese yum search yum install fonts-ISO8859-2 2、也可以CD设置centos.iso,然后从光盘中找,在/centos/下,找到这两个包,然后安装之, rpm原创 2010-10-25 11:40:00 · 2597 阅读 · 0 评论 -
Python的subprocess子进程和管道进行交互
在很久以前,我写了一个系列,Python和C和C++的交互,如下http://blog.youkuaiyun.com/marising/archive/2008/08/28/2845339.aspx目的是解决Python和C/C++的互操作性的问题,假如性能瓶颈的地方用C来写,而一些外围工作用Python来完成,岂不是完美的结合。今天发现了更方便的方式,就是用subprocess模块,创建子进程,原创 2011-06-17 14:16:00 · 42057 阅读 · 6 评论 -
一个最简单的内存池AutoMemory
C/C++中内存管理是个最麻烦的事情,内存申请释放,内存泄露,内存越界,甚至是内存碎片,就会导致程序出Core或者变慢。如何有效的管理内存,有很多方法,我认为最简单的方式是用一个内存池来管理内存。 谈到内存池的时候,就有必要说下程序的生命周期和作用域,数据分为三类:1类是进程数据(全局数据)。2、线程数据,每一个线程一份。3、请求数据,每一次调用一份。 如果原创 2016-08-18 16:28:59 · 1656 阅读 · 0 评论 -
std list/vector sort 自定义类的排序就是这么简单
网上江湖郎中和蒙古大夫很多,因此,此类帖子也很多。关于排序,我还真没研究过,看了江湖郎中和蒙古大夫的帖子,搞了半天不行,所以,自己研究了一下,如下:三种方式都可以,如重写<,()和写比较函数compare_index。但是要注意对象和对象指针的排序区别。1、容器中是对象时,用操作符<或者比较函数,比较函数参数是引用。2、容器中是对象指针时,用()和比较函数排序都可以,比较函数参...原创 2009-09-18 17:58:00 · 44802 阅读 · 3 评论 -
Python发送邮件的例子
import base64, smtplibfrom email.mime.text import MIMETextfrom email.header import Headerdef mail_info(data, date): mailserver = "smtp.exmail.qq.com" username = "server@xxx.com" passwo原创 2015-10-20 12:24:03 · 1760 阅读 · 0 评论 -
memset效率问题
char buff[10]初始化一个字符数组,只需要buff[0] = '\0'即可,没有必要用memset,在使用该buff时,需要注意末尾加'\0',这样性能比较好。#include #include "sys/time.h"void use_memset(){ timeval timestart,timeend; gettimeofday(×tart,原创 2008-01-25 11:36:00 · 3636 阅读 · 6 评论 -
python获取gbk中文字符
# -*- coding: gbk -*-def getGBK(s): i = 0 first = (int('81',16),int('FE',16)) second1 = (int('40',16),int('7E',16)) second2= (int('80',16),int('FE',16)) buf = [] whil原创 2012-03-14 23:09:53 · 5421 阅读 · 0 评论 -
朴素贝叶斯用于垃圾页识别
阮一峰的关于贝叶斯的文章,写得比我好,请参考:http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.htmlhttp://www.ruanyifeng.com/blog/2011/08/bay原创 2011-01-19 11:38:00 · 4927 阅读 · 1 评论 -
C/C++计时器检查程序性能
一般设计C/C++程序需要每秒能处理多少的数据,因此可以做一个简单的计时器来计时,代码如下:#ifndef _TIMER_H_#define _TIMER_H_#include #include using namespace std;class Timer{private: timeval tstart; timeval tend;原创 2011-06-14 11:42:00 · 4210 阅读 · 0 评论 -
Hadoop错误码速查
<br />转自:http://blog.youkuaiyun.com/liuxincumt/archive/2010/12/15/6076903.aspx<br />因为经常遇到各种错误,所以转载过来,以备忘:<br /><br />经常遇到的exception是:PipeMapRed.waitOutputThreads(): subprocess failed with code N<br /> <br />"OS error code 1: Operation not permitted"<br />"O转载 2011-04-21 15:48:00 · 5435 阅读 · 2 评论 -
SecureCRT自动登陆到服务器的脚本以及脚本编写简单说明
<br />Secure用SSH登陆服务器时,如果服务器较多,登陆一次很麻烦,所以,可以自己编写VBScript来搞定。<br />一、Secure脚本介绍<br />Secure是VBScript脚本,VB脚本的教程,请参考有关文档。<br />Secure自带的对象如下:<br />Application对象,就是crt,是个顶层的对象,所有其他内容都从这个对象中获得<br />Session,会话对象,负责连接相关<br />Tab对象,就是标签页<br />Scree对象,负责交互相关的,比如发送命原创 2011-05-10 14:49:00 · 21120 阅读 · 0 评论 -
fcgi file upload(抛砖引玉)
上篇文章nginx+fcgi+c/c++搭建高效率应用http://blog.youkuaiyun.com/marising/archive/2009/02/24/3932938.aspx有人问到,fcgi怎么处理上传文件。我试了一下,其实比较简单。 1.upload.html文件, 2.fcgiupload.cpp文件,原创 2009-03-27 17:00:00 · 7272 阅读 · 3 评论 -
google protocol buffer在python中使用utf-8的问题
google protocol buffer好用,但是在python中会有一些小问题。比如不支持utf-8只支持unicode的字符串。在我们的系统中,存储的和传输的都是utf-8,因此在代码中(c++,java,python)都统一使用utf-8格式。所以就带来不方便,比如c++中需要从utf-8转为unicode,python中再解析出来。实际上,可以让google protocol buff原创 2008-12-25 18:04:00 · 10978 阅读 · 3 评论 -
C++调用Python(4)
其实,C++调用Python有两种方式,我前面介绍了第一种方式:通过找到Python模块,类,方法,构造参数来调用。第二中方式,就是通过构造出一个Python的脚本,用python引擎来执行。第一种方式可能更为优雅,符合大多数的反射调用的特点。(我在以前的一个项目中,实现了c#的反射机制,c#调用Com+,c#调用javascript脚本等)。 还有一个问题,两种语言互相调用的时候,需要做原创 2008-09-22 16:01:00 · 16854 阅读 · 0 评论 -
Python调用采用Boost Python封装的c++(2)
上次我写了利用Python提供的API封装c函数,并调用。但是由于利用API的方式过于原始,对于类或者结构极度麻烦。因此,我选择了Boost的Python的来封装类,类似的工具还有SWIG等,选择Boost的原因是它不需要引入其他的接口描述语言,封装也是c++代码;另外,它支持的c++特性比较全。 Boost Python的文档,我推荐:http://www.maycode.c原创 2008-09-12 15:46:00 · 13603 阅读 · 2 评论 -
Python调用c/c++函数(1)
Python开发效率高,运行效率低。而c/c++恰恰相反。因此在python脚本中调用c/c++的库,对python进行扩展,是很有必要的。使用python api,http://www.python.org/doc/,需要安装python-dev。test.cpp文件如下#include //包含python的头文件// 1 c/cpp中的函数int my_原创 2008-08-28 20:15:00 · 36226 阅读 · 3 评论 -
ubuntu下zeroc ice的安装
ICE(Internet Communications Engine)是一个为现实中程序员而写的中间件平台。作为一个高性能的互联网通信平台,ICE包含了很多分层的服务和插件(Plug-ins),并且简单、高效和强大。 ICE当前支持C++、Java、C#、Visual Basic、Python和PHP编程语言,并支持在多种操作系统上运行。更多的操作系统和编程语言将会在以后的发布原创 2008-01-20 15:05:00 · 3894 阅读 · 1 评论 -
Ubuntu下 Code::Blocks安装
原创为http://forum.ubuntu.org.cn的forrid具体安装步骤如下: 1、安装必要组件 代码:sudo apt-get install gdb2、更新源 代码:gksudo gedit /etc/apt/sources.list添加(以feisty为例): 代码:转载 2007-11-14 18:52:00 · 2416 阅读 · 0 评论 -
关于搜索引擎及其开发
关于搜索引擎及其开发作者:xwjbs 来自:http://blog.youkuaiyun.com/xwjbs 转载的时候请注明作者和出处。没有作者的允许,严禁用于商业利益。 托google、 百度们成功的福,搜索引擎火了半边天。很多人都想跨到这个行业里边来。前两天在公司里边面试了一些人,基本上没有感到满意。不是说从业经验不够,有些也已 经工作了三年、四年。不过我估计,或者说是猜想,是不是转载 2007-11-06 12:13:00 · 2182 阅读 · 1 评论 -
推荐两篇Linux下的Socket文章
Linux SocketLinux下Socket编程HTTP 协议的简介原创 2007-11-05 16:05:00 · 1214 阅读 · 0 评论 -
一种语言/编码检测的复合方法
转自:http://blog.i5un.com/item/21翻译自Mozilla的网站。Jacks Weblog-->这篇论文讨论了组合三种不同的检测方法来实现自动字符集检测。A composite approach to language/encoding detection)Shanjian Li (shanjian@netscape.com )Katsuhiko Momoi (mom转载 2007-10-26 14:52:00 · 2276 阅读 · 0 评论 -
Linux下代码内存泄露检查工具valgrind
自己写的代码内存呼呼的往上涨,同事告诉我一个内存泄露检查的工具valgrind,于是就用了用。1安装sudo apt-get install valgrind也可以到官方网站去下载:http://www.valgrind.org2使用结果输出到终端,运行命令valgrind --leak-check=full --track-fds=yes 程序 参数结果输出到日志,运行命令valgrind --原创 2007-09-25 12:48:00 · 1772 阅读 · 0 评论 -
c++和Python互操作高级应用(5)
把我在实际过程中遇到的问题,总结一下,请先阅读:python教程,python FAQ1.如果封装的c++类没有拷贝构造函数怎么办?定义class的时候,加入模板参数boost::noncopyable,同时指定no_init class_("ExpandEmitter",no_init);拷贝构造的目的是,c++对象实例传递给python时,可以通过拷贝构造重新构造一个pytho原创 2008-09-22 16:34:00 · 10242 阅读 · 2 评论 -
字符串相似度算法(Levenshtein Distance)
Levenshtein Distance(LD)算法是比较两字符串的相似性。它们的距离就是一个字符串转换成那一个字符串过程中的添加、删除、修改数值,如果s是源字符串souce,t是目标字符串target,比较s和t是否相似,如下:如果s="test",t="test",那么LD(str1,str2) = 0。没有经过转换。如果s="test",t="tent",那么LD原创 2008-10-16 11:57:00 · 3657 阅读 · 0 评论 -
C++太难用
我一直使用C#来开发,我认为C#配合Visual Studio是最完美的开发方案。 我从去年7月份开始转向学习C++,发现真的是很难用,过于学院派了,而且,选择太多,标准库,boost库等,但是没有一个好用的,不是说单个的不好用,比如标准库的容器,确实比较好用,但是你在需要完成某些功能时,总是没有对应的库来处理。要是用了C#的微软提供的基础类库,你就会发现,其实std和boost加起原创 2008-10-20 21:14:00 · 4418 阅读 · 5 评论 -
Nginx完整配置说明
可以参考如下的完整例子http://wiki.codemongers.com/NginxFullExample #用户 用户组user www www;#工作进程,根据硬件调整,有人说几核cpu,就配几个,我觉得可以多一点worker_processes 5;#错误日志error_log logs/error.log;#pid文件位置pid原创 2009-03-11 12:07:00 · 5620 阅读 · 0 评论 -
nginx+fastcgi+c/c++搭建高性能Web框架
下面是我很早以前写的一篇文档,贴出来。 1.Nginx1.1.安装Nginx 的中文维基 http://wiki.codemongers.com/NginxChs 下载 Nginx 0.6.26(开发版)(请下载最新版本)tar zxvf nginx-0.6.26.tar.gz./configure,注意了类似checking for *** ... not found原创 2009-02-24 17:21:00 · 27643 阅读 · 5 评论