自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (7)
  • 收藏
  • 关注

原创 C++程序coredump排查经验

少用exception,避免内存不合预期的释放导致内存写入问题内存问题排查:考虑空间提前释放

2020-07-22 21:53:37 630

原创 boost property_tree read_json coredump

项目中使用boost::property_tree::read_json引发coredump,几乎是稳定复现,而且每次core也基本都在同一个地方但是,怎么看也不太像会出core的样子,所以就朝着内存写飞的方向排查了。搞了一上午的valgrind,最终还是报错这个问题之前也遇到过,试了几次安装libc6-debug也没搞定。好吧,终于想起来请教大牛了,大牛反馈这个不好搞;要hack valgrind的源码,改几个宏定义才能用;而且valgrind不好用,你用火焰图吧大牛建议我使用jemalloc

2020-06-08 14:19:46 575

原创 闭包和lambda表达式的区别

闭包是lambda表达式运行时产生的对象。闭包之于lambda表达式正如实例至于类。

2019-12-06 19:34:17 254

原创 指导新人串讲总结

关于指导新人串讲你应该清楚的

2019-08-07 21:35:24 2716

原创 从一次python程序的性能优化说开去

一门编程语言入门是容易的,至少大家都知道从hello world开始。但这次性能优化的经历告诉我,“换语言”这件事是有门槛的。这次性能优化是针对数据入库流程中的一个环节(brief)做的。我们常说解决问题重要,发现问题更重要。没错,这次发现问题就占用了我较长时间。brief部署在X平台上,通过增加日志,我发现brief耗时较长的部分发生在平台内部,接下来主要工作就是找X平台的负责同学沟通了...

2018-03-03 23:32:20 240

原创 UML中的类图关系——依赖

依赖往往体现在一个类的方法中使用另一个类实例的局部变量

2017-11-29 11:38:43 293

原创 tcmalloc为什么快,如何替换系统malloc

使用了thread cache,小块的内存分配都可以从cache中分配。多线程分配内存的情况下,可以减少锁竞争。tcmalloc官方文档见: https://gperftools.github.io/gperftools/tcmalloc.htmltcmalloc可以替换大多数系统、不同编译器环境下的内存分配函数(malloc/free/new/delete),针对不同的编译器和操作系统,替换的方

2017-11-23 16:02:25 8688

原创 glibc内存管理

我们调用free函数释放之前分配的内存,其实是将内存还给glibc,但是glibc却并不一定会将内存还给操作系统,导致使用top命令查看进程占用的内存时,出现类似内存泄漏的现象。关于glibc的内存管理,待进一步完善

2017-11-23 11:42:37 239

原创 valgrind排查内存泄漏步骤

使用valgrind排查内存泄漏,重点关注leak summary的definite lost数据

2017-11-14 20:19:52 1204

原创 异步编程

异步编程

2017-11-05 17:18:35 395

原创 vim 设置默认编码UTF-8

背景每次VIM新建代码文件时默认编码都不是UTF-8,提交到代码库就乱码解决方案to continue…

2017-11-01 18:43:05 3712 1

原创 boost signal2

可用以实现事件广播

2017-11-01 18:04:14 202

原创 std::any——C++弱类型特性

std::any 用于包裹任何类型的指针

2017-10-31 17:10:53 4186

原创 gcc attribute机制

__attribute__ ((constructor)) 保证函数在main之前执行

2017-10-31 16:29:23 267

原创 linux开发环境搭建

环境配置管理home目录采用git管理,这样避免配置配更改使用zsh一直使用zsh,感觉zsh的自动补全功能非常好,比bash好用(也许是我没配好吧)安装powerlinegit clone https://github.com/powerline/powerline.git powerline下载patched fontpowerline为保证很好的视觉效果,设计了自己的一些字体设置字体以iter

2017-10-27 14:52:16 223

原创 最长公共子串

Q: 求两个字符串的最长公共子串的长度 A:动态规划转移方程如下: 定义f[m][n] 为字符串A前m个字符和字符串B前n个字符的最长公共子串的长度,则if A[m] != B[n]: f[m][n] = max(f[m-1][n], f[m][n-1]) else if f[m-1][n-1] == 0: f[m][n] = 1 else if f[m-2][n-2]

2017-10-09 23:58:52 203

原创 c++ 多态的实现

什么是多态简单地说,就是允许将子类的指针赋值给赋值给基类的指针实现依赖于编译器给每个包含了虚函数的类增加的虚拟表virtual table来实现调用虚函数时,首先查虚表如 class A : public B 表示A继承B,B中定义了虚函数B* b = new A;A实例的内存起始部分和B的内存格局相同,这样当调用b->foo()时(foo为虚函数,A对foo进行了覆写),其实就是调用了A中对foo

2017-10-06 19:29:29 147

原创 c++ 右值引用

什么是右值 Generally, rvalues are values whose address cannot be obtained by dereferencing them, either because they are literals or because they are temporary in nature (such as values returned by functi

2017-10-06 19:08:44 220

原创 unix常用命令使用经验

sedgitcurltmux copy-modezshgdbbash

2017-09-20 10:37:29 324

原创 dynamic_cast vs static_cast

static_cast是编译器转换,如果能确定转换成功的话,采用static_cast运行效率更高dynamic_cast也能达到从基类指针转为子类指针的效果,但是转换是发生在运行时,相比与static_cast效率会较低未完待续…

2017-09-12 09:46:21 208

原创 hadoop MR任务优化总结

最近在做数据灌库工作,数据量较大不能基于单机进行灌库,需要编写MR任务。由于做MR开发经验不足,几经优化才满足灌库性能要求,这里总结一下。如非必要,请规避reduce任务reduce任务涉及跨计算节点拉取数据,shuffle及数据排序,而这些过程都是很耗资源的。 对于灌库任务来说,我们没有必要对数据做排序,完全不要reduce任务,不要画蛇添足地去将reduce设置为cat,看上去cat只是作了数

2017-08-25 16:17:16 2592

原创 logging TimedRotatingFileHandler不支持多进程

python程序中,我们经常会使用logging进行日志打印,logging的多线程支持得很好,但是对于多进程就无能为力了多个进程同时写一份日志文件会导致TimedRotatingFileHandler日志切割失败,亲测,我的应用场景是: 使用logging打印日志,分别对应xxx.log 和 xxx.log.wf 同时在调用python脚本的shell脚本中将shell脚本日志appen

2017-07-20 11:11:44 1904

原创 基于redis实现的分布式锁

先从字面理解,分布式锁(Distributed Lock)就是分布式部署的锁。那么什么是锁呢?这个大家应该比较熟悉了,和我们经常遇到的“在多线程写同一个变量时需要加锁”、“多个客户端在更新数据库同一条记录时需要加锁”等等这些场景中提到的“锁”是一样的,是一种同步方式。

2017-07-18 21:59:34 260 1

原创 linux中的软链(symbolic link)

当前虚拟化技术盛行,不可避免要使用软链,之前使用公司的PaaS平台,也遇到了软链相关的问题应用场景在实例上运行shell脚本,shell进一步调用python脚本通常我的做法是: 1)将python环境打包上线,目录结构如下: /home/work ./script ./python2.7.tar.gz 2) 固定写死shell脚本目录和python环境的期望目录结

2017-07-06 17:52:22 948

原创 c++ linker warning: defined in discarded section

/usr/bin/ld: .gnu.linkonce.t._ZN5boost8signals25slot0IvNS_8functionIFvvEEEED1Ev' referenced in section.gnu.linkonce.r._ZN5boost8signals25slot0IvNS_8functionIFvvEEEED1Ev’ of ./libut_doraemon.a(ut_doraem

2017-03-16 20:26:39 2131

原创 type_info::before的用途

Compare order of types Returns whether the type precedes the type identified by rhs in some implementation-specific order.这是cplusplus.com 网站给的解释 bool before(const type_info& rhs) const; Effec

2017-03-16 19:35:37 996

原创 ActiveMQ LevelDB/Zookeeper bug

ActiveMQ问题排查问题出现前使用activemq 5.11.1,排查问题中改用5.13.3:背景排查经过结果解决方案总结背景公司内使用ActiveMQ(以下简称“MQ”)作为消息中间件进行模块间的消息传递。特别地,我使用MQ作为实时检索系统增量接收的消息中间件。MQ按Replicated LevelDB Store + zookeeper master/slave方式部署。一开始上

2017-01-23 17:37:07 1147

Google C++ Style Guide

Google C++ Style Guide

2012-02-20

C Standard ISO/IEC 9899:1999(E)

In March 2000, ANSI adopted the ISO/IEC 9899:1999 standard. This standard is commonly referred to as C99, and it is the most recent standard for the C programming language.

2011-11-17

Linux Kernel in a Nutshell

Most of the information in this book has been extracted from the kernel documentation and source code. This is the best place for information on how to build and install the kernel and is usually kept up to date when things in the build procedure change.

2011-11-15

Linux Kernel 2.4 Internals

Introduction to the Linux 2.4 kernel.

2011-11-10

linux-2.4.0 内核源代码

linux-2.4.0内核源代码,毛德操老师的《Linux内核源代码情景分析》用的就是这个版本v2.4.0

2011-10-24

计算机体系结构 - 量化研究方法 第三版(中文版和英文版)

计算机体系结构 - 量化研究方法 第三版(中文版和英文版)

2011-09-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除