- 博客(71)
- 资源 (2)
- 收藏
- 关注
原创 比较好用的vim颜色
" Vim color file"" Author: Tomas Restrepo <tomas@winterdom.com>" https://github.com/tomasr/molokai"" Note: Based on the Monokai theme for TextMate" by Wimer Hazenberg and its darker varia...
2020-04-15 00:03:39
733
原创 linux源码安装tmux和ncurses
总共分为两步:1. 安装ncusers。我安装tmux的时候疯狂被报ncurses.h找不到。错误如下:checking for curses.h... noconfigure: error: "curses not found"看了下configure的逻辑,tmux想使用pkg-config来找nurses这个库,但是我是源码安装的且没有root权限,所以得自己写curse...
2020-04-02 22:10:53
1546
1
原创 bazel跑TensorFlow中c++测试用例(test)
跟Python的有所不同,TensorFlow中c++测试用例不是写在bazel中的。而是以一定规则写的。例如,如下:bazel test :lib_strings_scanner_testbazel test :哪一级目录下的哪个test...
2020-03-18 16:06:38
878
原创 简单版vimrc
"""""新文件标题"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""新建.c,.h,.sh,.java文件,自动插入文件头autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitl...
2020-03-06 22:16:36
281
原创 Tensorflow快速编译
1. 配置环境变量使得./configure不用手动选择是否下载全新的llvm等,环境变量如下:export TF_NEED_SEASTAR=0#还有很多类似的,详见configure.py2. 在TensorFlow的编译目录里执行:tensorflow/tools/ci_build/builds/configured CPU来reconfig。3. 使用configu...
2020-02-27 23:02:33
675
原创 常用shell命令
Hadoop分布式copy/opt/meituan/hadoop-all/bin/hadoop distcp -Dmapred.job.queue.name=root.zw01_training.hadoop-hdp.tf_ps_test viewfs://hadoop-meituan/user/hadoop-hdp/benchmark/dprec-deepfm/zhaozheng11/ba...
2020-02-15 12:59:59
250
原创 c++ Asan(address-sanitize)的配置和使用
写在前面:如果你发现你的程序栈写漏了(发现一个值突然发生了你预想不到的变化, 比如int a = 5,然后cout的时候就成了55)。如果你发现你的程序每天占用内存都变大一点。如果你发现你的程序core dump了。如果你发现。。。除了性能问题,都可以先用asan跑一下,说不定能发现什么。缺点:会让程序变得很慢,导致可能有些线程竞争的地方被刚好掩盖掉了。...
2019-12-08 22:42:16
23214
5
原创 vim ycm c++ 环境搭建
写在前面:系统:centos 6或7目的:安装简单的依赖vim实现python、c++的代码提示、跳转和一些让开发变得更加容易的软件。1. 下载高版本的vim起码得8.1,这是ycm的最低配置,别看版本了,直接新下。git clone https://github.com/vim/vim.git ./configure --enable-python3interp...
2019-11-27 15:55:55
1221
原创 tensorflow dataset模块
写在前面:Python 3.6.5-debugApple LLVM version 10.0.1 (clang-1001.0.46.4)Tensorflow 1.10.1-debug1.Graph构图Graph构图过程,顾名思义,主要讲session run函数调用之前,将图中的每个节点都构建入graph内执行步骤。Dataset 分为两种,1. 真正获取数据的datase...
2019-11-16 15:42:16
2069
原创 enet网络库简单理解
首先声明该enet网络库已经是很老的版本了。1. 语言c++2. 环境:centos 6.0, g++72本章主要介绍enet网络库的实现原理,以及各个组件的功能以及介绍。介绍:enet网络库是一个利用epoll实现的支持tcp,udp,http等不同协议(可自由扩展)的高并发网络库。组件:EpollSocketEvent:封装了epoll,暴露接口有: 1. add...
2019-09-19 16:36:42
6139
原创 core_analyzer分析c++程序内存占用
环境:centos;进程:单进程多线程c++程序;问题:1. 分析系统内存占用; 2. 分析ptmalloc内存空洞(bins上的空闲chunk的大小);包括:1. 占用了很大内存的c++进程; 2. gcore(在进程不core dump的情况下生成core文件); 3. core_analyzer(分析gcor...
2019-09-07 20:48:21
3603
原创 浅谈文本处理三剑客(grep、awk、sed)
背景介绍: grep查找、awk分析、sed编辑。 文本处理,比如排查失败原因、求峰值,数据分析等。 简化文本处理和统计流程,敏捷开发。 数据来源:文本和标准输入。 输出结果:默认输出为标准输出,也可以重定向到文件中。一:grep描述:grep是一个命令行应用程序,用于搜索与正则表达式匹配的纯文本数据集。特点:搜索工具、正则匹配、逐行处理1)其主要参数...
2019-08-03 11:41:46
378
1
原创 内存映射占物理内存统计
系统:centos语言:c++背景:搜索引擎的索引数据很大,分布式之后,每个索引节点的索引数据还是比较大,占了大概100G左右,全放在内存中是不现实的,而且因为我们的搜索引擎不稳定,单个节点容易出现崩溃的问题,所以索引数据需要落盘到磁盘上,这样虽然会使单个搜索节点更加稳定,但是磁盘比内存的缺点就更加显露无疑了,那就是存取数据太慢,所以我们就想使用mmap的预读策略和文件的磁盘缓存来解决缺页...
2019-04-28 11:33:23
1160
原创 c++ TSan(Thread Sanitizer)线程检测工具
环境 Centos 6.0,gcc7.2;安装 就不多说了,我是直接用的并没有安装,不过看lib的目录应该是gcc自带的库,export LD_LIBRARY_PATH到gcc下的lib64即可。作用: 帮助检查多线程项目中的有可能出现跟线程相关的问题。比如(data races,deadlock,and so on)。官方文档: https:/...
2019-03-03 18:40:10
10704
原创 protocol buf学习记录
背景:自研项目里上下层通信会规定字符串,那么必不可少的得用到字符串拼接和解析,一般需要很复杂的操作过程。今天接触到了google研发的protocol buffer,简称pb,下文中全部使用pb简称。这个工具主要是让作者不用那么费劲的再去处理字符串,而是专心的将经历放在剩下的事情上。以下代码是.proto中syntax = "proto3";package lm;message h...
2019-01-17 22:50:59
255
原创 linux c++ pprof的使用
这是谷歌的一个linux下性能测试的小工具。贼好用。可以简单快速的发现程序的性能瓶颈,长话短说。1. 安装第一步拿到压缩包wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.5/gperftools-2.5.tar.gz第二步./configure 第三部 make -j 4 &a...
2018-07-24 22:32:23
8493
2
原创 GDB基础命令
GDB是C++的调试工具,编译的时候加上-g选项即可。简单方便,可以一步一步进行调试。1. b + 函数名或者文件:行数。设置断点,运行的时候可以在断点处卡住。2. start:卡在main函数第一行,只加载动态,静态库等预处理程序。不执行。 2.1:有些动态库的函数一开始没有被加载进来。必须使用这个命令才能把动态库的函数也加载进来。 2.2:有些程序执行需要带参数。可...
2018-06-17 16:03:11
202
原创 SIMD(Single Instruct Multi Data)基本操作
今天学习到了一个骚操作。就是SIMD,学名叫单指令多数据。原理就跟他的名字一样,是多种数据执行同一条指令。多个数据放在128位的专用寄存器中。然后对128位的数据统一进行操作,可以移位,比较,加减等操作。缺点:位数稍微有点少,比如int占32位,那么128位的寄存器只能存放4个int。同理,unsigned char就能放16个数。今天还有别的任务,这方面的例子以后再补。gpu跟cpu的区别,就是...
2018-06-08 22:12:30
1272
原创 delete core dump的思考
写bug的时候遇到了一个core dump的问题。百思不得其解。现场是这样的,对一个指针进行delete的时候,delete crash。产生core文件,记录下来现场,是delete进行检查时,abort生效。导致失败的。 经过一顿猛如虎的操作过后,发现malloc的时候会在这个指针前面创建一个我们不可见的head chunk。所以我就怀疑如下几点: 1. 有人把这个指针做了...
2018-06-03 13:30:39
1358
3
原创 git常规操作
1.首先要安装git,一般使用yum即可。yum install git -y2.要让git账户绑定开发机。 2.1 ssh-keygen -t rsa -C "976525070@qq.com" 将生成的key填入git网页版的ssh下。 2.2 ssh -T git@github.com 判断是否绑定成功。3. git clone https://github.com/a52046...
2018-04-21 11:51:20
178
原创 Double Array Trie介绍
正统介绍请移步百度或其他博客。都比我讨论的好。 Trie和Double Array Trie(DAT)的比较。 Trie有两种数据结构: 1.数组或hash链式: 介绍:兄弟节点使用数组或者hash存储,儿子节点使用指针存储。 优点:1. 便于查找,能快速定位兄弟节点中是否有该值,然后跳到该值的儿子hash或者数组中查找。 ...
2018-03-31 16:56:02
565
原创 B-Tree,B+Tree
B-tree的B是balance的意思。是一种平衡树。是树的一种。只要是平衡树就是每个节点高度一样。B-Tree:只保证平衡即可,每个节点都是有效数据,比该节点小的节点走左边,比该节点大的节点走右边即可。(图片均为抄袭)注:不一定非得采用链式结构,对创建后不用删除的临时数据,可将链式结构扁平化到连续的内存上。方便删除。插入时,首先插进去,发现超过节点限制,将该节点平分为两个,提升一个向上移动,如果...
2018-03-11 11:32:16
310
原创 eclipse远程调试tomcat程序
我们公司使用的是scf服务,是类tomcat服务。所以有些地方跟tomcat还不太一样。但重要的都是java程序,所以只需要找到执行程序时,加上几个参数就可以了。1.找到java执行jar包的地方,加入参数 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005。具体执行命令如下:java -agentlib:j...
2018-03-11 09:20:37
217
原创 vi基础命令
二零一八年三月七日vi称作编译器之神,从大学开始用vim编译器,到现在的vi,感谢自己这么多年的坚持和公司良好的学习氛围。tips:1. 冒号后面跟命令2. /后面跟find内容。...
2018-03-07 19:56:37
169
原创 SVN基础命令
svn ci -m "tips." 向版本库提交代码svn co svnaddress name 检出svn代码,根目录叫成name。svn merge fromversion ./ 把fromversion的代码合并到./下,如遇冲突,选择延后处理。svn resolve --accept=working filename 解决冲突。svn info 得到当前目录下svn的i...
2018-03-02 16:51:42
228
原创 TLS和errno
写关于errno的时候发现了一个问题,errno是全局变量,对于多线程来说是否要加锁呢?自己下来做了个实验,自己手写全局变量在多线程环境下会乱序。程序如下图。#include <iostream>#include <sys/stat.h>#include <time.h> #include <sys/types.h> #include &...
2018-02-26 18:04:20
389
原创 C++经验总结
如果你觉得太长:我总结下思想,你就可以走了。1. 算法上的优化比工程上的优化靠谱的多。2. 非得工程优化,那就研究数据,然后造适合这些数据的轮子,会有很快的加速。3. 尽量一次分配很大的空间然后自己填充每个小对象,而不是每次用到在分配。也会快很多。4. 对于新手来说,尽量使用位运算,而不是乘号除号。好了,本文就这么多,你可以走了。1. 线程安全的计数器可以使用bo...
2018-01-19 19:49:23
437
原创 Shell常用命令
1. ping + 目的ip :查看目的主机是否与本机在同一个局域网内。2. ifconfig : 查看本机ip地址。3. top : 查看主机情况,cpu,io,mem,查看所有进程情况。-p + 进程号: 只查看该进程情况。-H + 进程号: 查看进程内所有线程情况。4. tcpcopy -x 源端口-目的ip:目的端口,源端口-目的ip:目的端口 : 将源端口内的流量全部导入目的端口。5....
2018-01-18 13:03:35
216
原创 基于maven的java项目的基本操作
环境:Windows下eclipse 4.5.1项目名:com.公司名.类别.类别.项目名1. src/main/java下放package 每个package内放java文件,java的文件名必须跟文件内类名一致。2. src/test/java下放对应的单元测试3. jre system Library 内放jar包,所有依赖的基础jar包都放在里面。4. Maven Dependencies
2018-01-17 21:02:18
305
原创 Arena Pool
ArenaPool-多线程高效内存池目的:对高频率的创建删除嵌套对象、大对象提供解决方案。思路:1. 解决线程竞争 内存池分上下两层结构,每个线程保存一个上层的分配器,他们共有一个下层分配器为他们提供内存块。2. 解决析构过慢 一次创建一个内存块,在块上创建一个对象,块的引用+1,删除一个对象,块的引用-1。当块的引用减为0事,下层分配器将块回收,并等待再次利用。适用场景: 1. 高频访问的频繁创
2018-01-17 20:11:27
367
原创 基于wf框架的web应用服务启动
wf框架:基于mvc框架的java服务。maven:是java下的代码管理工具,通过maven可以方便的包含,引用等其他中央仓库下的代码。tomcat服务器:轻量化web应用服务器。1. 在eclipse下用maven打包成***.war包 1.项目右键,2.runas,3.maven install2. 在/opt/web/下解压web应用服务器。 ...
2018-01-17 19:31:36
864
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅