自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

转载 关于C,C++的内存问题的定位

  大部分人觉得C/C++比较难,主要是因为指针的灵活性以及内存的使用,C和C++需要程序员自己来控制内存,自己申请,自己释放,很容易就会出现各种头疼难搞的内存问题从而导致系统core dump,这类问题,除了平时自己写code注意,也要在出现问题的时候懂得借鉴“巨人”为我们提供的定位方法,比如比较好用的clang引入,gcc4.8后支持的功能Address Sanitizer和Thre...

2019-07-15 21:47:00 539

转载 postgres后端处理流程

我们都知道pg在启动后会有一个管理后端的常驻进程,被称为"Postmaster",默认会监听5432端口,等待连接请求,前端可以通过libpq或者JDBC来与后端进行通信,每个客户端的连接请求进来的时候,Postmaster都会fork出如下一个postgres工作进程,也就是真正的后端处理进程,来与客户端进行直接交互。下面介绍下postgres后端处理的整个流程...

2019-06-29 21:07:00 238

转载 数据库基于规则优化(RBO)和基于代价优化(CBO)

RBO和CBO是两种数据库引擎在执行sql语句时的优化策略。什么是基于规则的优化(Rule Based Optimizer)?这是一种比较老的技术,简单说基于规则的优化就是当数据库执行一条query语句的时候必须遵循预先定义好的一系列规则(比如oracle的15条规则,排名越靠前的执行引擎认为效率越高https://docs.oracle.com/cd/B10501_01/...

2019-06-21 11:54:00 1764

转载 Centos源码安装postgres debug版本

下述步骤除1使用root用户操作外,其余均使用postgres用户:1. 编译安装环境准备docker centos7.5添加postgres用户:adduser postgres给postgres用户设置密码:passwd postgres给postgres用户赋予权限:运行visudo命令,找到root ALL=(ALL) ALL,在下面添加一行postgr...

2019-05-09 16:48:00 368

转载 Git配置以及常用命令

1.首先在github上注册账户密码,https://github.com2.公司git管理员将账户加入到公司组3.在终端用该账户和邮箱登录4.在本机上生成ssh秘钥ssh-keygen -t rsa -C "邮箱"5.将该秘钥粘贴到GitHub下6.配置git config --list : 查看git的配置信息git config --global c...

2018-11-21 10:05:00 91

转载 关于postgresql中的numeric/decimal

postgresql中的该类型精度支持到1000位,采用变长方式存储,那么如何通过atttypmod来获取到定义的precision和scale呢?两种方法:1.观察二进制:numeric(5,4) => 327688 0101 0000 0000 0000 1000numeric(5,5) => 327689 0101 0000 0000 000...

2018-05-15 14:28:00 3901

转载 C++面试题(一)

一、C++基础问题1.new/malloc的区别new是运算符,malloc()是一个库函数;new会调用构造函数,malloc不会;new返回指定类型指针,malloc返回void*指针;new会自动计算需分配的空间,malloc不行;new可以被重载,malloc不能。2.指针和引用的区别指针是一个实体,而引用仅是个别名;引用使用时无需解引...

2018-04-03 15:36:00 99

转载 ZooKeeper集群的安装配置

一、安装ZooKeeper集群的配置和单机的配置并无多大差别,只需要修改一下配置文件,具体安装信息参考http://www.cnblogs.com/LyndonYoung/articles/8025010.html二、修改hosts文件首先修改集群中每台机器的/etc/hosts文件,将每台机器的信息写入,前面为ip,后面为主机名,我的配置如下:192.168.1.10...

2017-12-12 22:15:00 145

转载 开始使用ZooKeeper(单机版)

一、从zookeeper的官网https://zookeeper.apache.org/ 下载到名字类似于zookeeper-3.4.5.tar的压缩文件,解压。二、进入到解压后目录,bin目录下为相关启动脚本,conf下为配置文件,打开conf下面的zoo.cfg文件,修改zookeeper的数据目录和端口号,dataDir=/home/Lyndon/zookeeper clien...

2017-12-11 21:01:00 96

转载 Google glog使用说明

一、glog是什么:Googleglog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,例:LOG(INFO)<<"Found"<<num<<"cookies";“LOG”宏为日志输出关键字,“INFO”为严重性程度。主要支持功能:1,参数设置,以命令行参数的方式设置标志参数来...

2017-12-07 17:49:00 360

转载 Google gflags使用说明

一、gflags是什么gflags是google的一个开源的处理命令行参数的库,使用c++开发,具备python接口。二、下载安装1.下载:https://gflags.github.io/gflags/2.解压安装tarzxvfgflags-2.0.tar.gz&&cdgflags-2.0&&./configure...

2017-12-06 16:05:00 519

转载 第一个thrift示例

1.我机器上已经安装成功thrift-0.10.02.编辑demo.thrift文件struct UserInfo { 1: required i32 id 2: required string name 3: required string sex }service UserSeivice { void storeInfo(1...

2017-12-04 16:23:00 69

转载 Thrift的接口定义语言基本语法

1.类型thrift的类型系统包括预定于的基本类型,用户自定义结构体,容器类型,异常和服务定义。thrift不支持无符号类型,因为很多编程语言不存在无符号类型。(1.1)基本类型bool:布尔类型(true or false),占用一个字节byte:字节i16:16位整型i32:32位整型i64:64位整型double:64位浮...

2017-11-29 14:52:00 200

转载 Apache Thrift介绍及安装

1.Thrift是FaceBook开源出的一种高效的,支持多种编程语言的远程过程调用框架。其数据传输采用二进制格式,相对于XML和JSON体积小,对于高并发,大数据量和多语言的情况下更加有优势。Thrift通过一个中间语言(IDL,接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java,Python,PHP,Ruby,Erla...

2017-11-28 15:48:00 100

转载 TCP的三次握手与四次分手

TCP工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层。三次握手1)第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,SequenceNumber为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;2)第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认...

2017-11-28 15:43:00 64

转载 排序算法之快速排序

快速排序:虽然名字中有快速二字,但其在最糟糕的情况下时间复杂度为O(N^2),在平均情况下,快速排序的时间复杂度为O(nlogn).快速排序也是一种归并算法,我们在待排序序列中选择一个对象作为基准,将小于它和大于它的分别分成两个子序列,然后分别对着两个子序列对排序。示例:3 2 0 5 -1 9 1 4第一次取sign = 3,左指针指向3,右指针从最后一位开始循...

2017-11-27 16:51:00 54

转载 SQL语句中的join用法

SQL中join的各种用法1.自然连接(natural join)自然连接将表中具有相同名称的列自动进行匹配,自然连接不必指定任何同等连接条件也不能认为指定哪些列需要被匹配,自然连接得到的结果表中,两表中名称相同的列只出现一次。select * from employee natural join department;2.内连接(inner join):产生的结果是A和B的交集(相同列...

2017-11-22 17:52:00 165

转载 排序算法之梳排序

梳排序(Comb sort)是一种不稳定排序算法,其改良于冒泡排序和快速排序。在冒泡排序中,只比较阵列中相邻的两项,即比较的间距为1,梳排序提出此间距其实可以大于1,梳排序中,开始时的间距设定为阵列长度,并在循环中以固定的比率递减,通常递减率为1.3,该数字是原作者通过实验得到的最有效的递减率,因为编程中乘法比除法块,所以会取递减率的倒数与间距相乘,即0.8.其实当间距为1的时候,梳排序...

2017-11-21 21:08:00 93

转载 sql语句的执行顺序

关于sql语句的执行流程(1) from (3) join (2) on (4) where (5) group by(6) avg,sum...(聚合函数)(7) having (8) select (9) distinct (10) union(11) order by (12) limitwhere和having的区别:where是用来指定“行”的条件的,having是用来指定“组...

2017-11-21 17:02:00 52

转载 关于数据库索引

索引(create index on table_name(column_name,...)),如果把数据库看做一本书,那么索引就是这本书的目录。一般情况下,数据库在进行查询操作的时候,需要对整个表进行搜索,当表中的数据很多的时候,搜索数据就会需要很多时间,为了提高检索数据的能力,数据库引入了索引机制。1.索引是一个单独的物理的数据库结构,是数据库的一个表所包含的值的列表,其中注明了每个...

2017-11-21 15:02:00 47

转载 排序算法之冒泡排序

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法,冒泡排序的特点是调整相邻的两个对象的位置,每进行一次内循环,就可以将最大值调整到最后,这样下次就不需要考虑它了,冒泡排序的时间复杂度为O(N^2),虽然时间上不占有优势,但是冒泡排序的代码简单,实现难度低。实例分析:以数组 arr = [5, 1, 4, 2, 8] 为例说明,加粗的数字表示每次循...

2017-11-20 21:29:00 56

转载 程序运行占用CPU较高的时候,查看每个线程的CPU使用情况

1.使用命令 top -H -p pid(程序进程号)查看该进程下所有线程占用CPU情况,做一下排序2.pstack保存该进程的线程快照,然后根据1中所显示的线程号查看具体线程堆栈信息转载于:https://www.cnblogs.com/LyndonYoung/articles/7843095.html...

2017-11-16 10:37:00 1597

转载 CMake教程

gcc、make、makefile、cmake、cmakelists区别和联系转自链接:https://www.zhihu.com/question/36609459/answer/897438451.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fort...

2017-10-24 16:04:00 72

转载 关于互斥量

1.使用条件变量做线程同步的时候,使用while而不是if,是因为可能会出现假唤醒的情况,while(!flag){cond.wait(lock);}2.notify_one会唤醒一个等待该变量的线程,若没有线程等待,则什么也不做,若有多个线程等待,无法确定会唤醒哪一个。3.关于几种互斥量mull_mutex无任何锁定功能的“互斥量”,空对象模式是用...

2017-09-16 09:25:00 144

转载 关于linux下的死锁(程序卡住)的定位检测

定位方法:(1)如系统存在运行日志,首先分析日志信息。(2)利用pstack工具打印出此时系统的存在线程堆栈快照。(3)有些阻塞栈可能是因为它需要等待前面的线程执行结束才可以执行,所以要先确定依赖关系。(4)若问题可以复现,可以利用gdb调试系统,但若不确定问题是否可以复现,则推荐不要使用gdb,因为会破坏问题产生的环境,gdb在一定程度上会影响系统运行导致卡住的因素由成立变成不成...

2017-08-15 11:27:00 3532

转载 GCC内置的原子操作函数

在多进程(线程)访问资源时,能够确保所有其他的进程(线程)都不在同一时间内访问相同的资源。原子操作(atomic operation)是不需要synchronized。所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。gcc从4.1.2提供了__sync_*系列的built-in函数,用于...

2017-08-14 17:27:00 230

转载 使用expect脚本实现远程交互操作

#scp.exp#!/usr/bin/expectset route [lindex $argv 0]set password 123456spawn scp $route [email protected]:/home/Lyndon/trunk/set timeout 300expect "[email protected]'s password:"...

2017-08-09 16:58:00 185

转载 外存产生临时文件随进程消失而回收

当数据量很大,无法全部在内存中进行计算的时候,就需要写出到硬盘产生临时文件,但临时文件的删除有时候可能会产生隐患,如果系统在写出外存的时候,产生了崩溃现象,就会出现临时的文件没办法回收的情况,这些文件会一直占用硬盘资源,这个时候有个简易的处理办法,创建文件之后,立刻调用unlink函数,这个时候文件还可以继续进行读写操作,而且还可以在进程退出的时候,将文件删除。示例:#inc...

2017-07-03 14:09:00 146

转载 pgpool2和PostgreSQL安装

下载pgpool2源代码:wgethttp://www.pgpool.net/download.php?f=pgpool-II-3.6.4.tar.gz下载pgsql源代码:wgethttps://ftp.postgresql.org/pub/source/v9.6.3/postgresql-9.6.3.tar.gz安装postgresql(参考:https:/...

2017-05-16 15:50:00 173

转载 Python基础笔记(1)

1.List数据结构,列表,可改变(1.1)list可以用来处理一群不同类型的数据a = ['ad','fdfd',123,3.455,'数据']注意:要想让list里面支持中文字符,需引进uniout模块,即import uniout(1.2)list可以使用下标操作,例如:a[0],a[1]...(1.3)list里面的值是可以修改的,a[0] = 'adfd'...

2017-05-10 14:48:00 59

转载 关于placement new

1 class A;2 char* buffer = new [sizeof(A)];3 memset(buffer, 0, sizeof(A));4 A* a = new(buffer)A();placement new的好处1.在已分配好的内存上进行对象的构建,构建速度快。2.可以反复利用同一块已分配好的内存,有效的避免内存碎片问题。3.建立对象数...

2017-04-01 09:21:00 63

转载 一个简易共享内存池的实现

线程不安全my_mem_pool.h 1 /* 2 realize my own memory pool 3 */ 4 #include <iostream> 5 #include <list> 6 #include <cstdio> 7 #include <cstdlib> 8 #include...

2016-08-26 11:21:00 403

转载 Linux下的内存泄露检测(1)------定制自己的内存操作组件

内存泄露是指程序动态申请的内存在使用结束后并没有释放,导致系统无法正常回收。例如:1 // a test of memory leaked2 #include <iostream>3 using namespace std;4 int main() {5 char* ch = new char[10];6 cout <&l...

2016-08-24 11:34:00 87

转载 C++内存布局

C和C++的编译器把内存分为3块:静态存储区、栈和堆。静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态变量、全局变量和常量(包括字符串常量和const常量)以及代码段。栈区:程序开始运行,随着函数、对象的执行,函数内部变量、对象的内部成员变量开始动态占用内存,栈一般都有生命周期,函数结束或者对象析构,其对应的栈空间就释放了。栈内存分...

2016-08-22 17:38:00 49

转载 Git的安装和配置(转载)

(1)Git简介Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书...

2016-08-15 15:48:00 58

转载 查看Oracle的执行计划

explainplanforselectstddev(DEPTNO)fromTEST_EMP;SELECTplan_table_outputFROMtable(dbms_xplan.display('plan_table'));select*fromtable(dbms_xplan.display);转载于:https://www.cnblogs.co...

2016-08-14 20:10:00 44

转载 集群间ssh免秘钥登录

(1)去/etc下面的hostname修改机器的主机名,之后在/etc/hosts下面将每台机器的ip和名字写进去,如下:192.168.112.128 master192.168.112.129 slave1192.168.112.130 slave2(2)确认机器上是否安装了ssh,若未安装,使用命令sudo apt-get install ssh 安装ssh,安装完后会在当...

2016-08-14 20:02:00 123

转载 eclipse操作hdfs报权限不足的问题

最近使用eclipse操作hdfs遇到如下报错log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).log4j:WARN Please initialize the log4j system properly.log4j:WARN...

2016-08-14 16:26:00 280

转载 hadoop源码阅读资源

源码包下载http://www.apache.org/dyn/closer.cgi/hadoop/common/api文档http://hadoop.apache.org/docs/r2.7.2/api/入门文档http://hadoop.apache.org/docs/r2.7.2/index.htmlhttp://wiki.lustre.org/images/...

2016-08-11 15:45:00 51

转载 C++经验记录

1.自己实现统一的内存管理模块,方便对内存使用情况的统计以及对内存问题bug的定位。2.如果数据量很大,且需要在网络中传输,可对数据进行压缩(lz4压缩算法)。3.性能问题,使用性能工具做针对性分析,有针对性的对代码进行调整,性能工具(VTune)4.使用TcMalloc对程序进行优化。5.避免使用魔鬼数字,不方便他人阅读代码,而且时间久了,容易忘记数字的意义。转载于...

2016-08-03 15:42:00 79

空空如也

空空如也

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

TA关注的人

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