自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

caoli98033的专栏

喜欢一些Android和大数据的研究

  • 博客(58)
  • 资源 (2)
  • 收藏
  • 关注

原创 如何提高C++的编译速度

用C++开发的人都知道,C++的编译速度比较慢,为什么比较慢,有一个原因是因为C++编译时,会把include里面的文件全部都编译进来,如果能想办法减少include的文件,那么就可以提高编译速度了。那么问题就来了,在一个文件中要使用一个class,至少要让编译器知道有这个class啊,不include怎么办,其实可以使用前置申明的方法。示例如下:设计一个杯子的类Cupclass

2017-06-11 11:06:48 5529

原创 遍历hbase中表的方法

背景:在我们自己的产品中,有利用hbase存储大量的数据,其中的一个场景就是:多个线程不停的向这个数据库表写数据,然后还有一个线程不停的从这个数据库表获取数据,然后再交给多线程处理。问题1:从数据库表中取出数据时,有时候会出现意想不到的结果,例如本来利用pagefilter只需要2000个数据,但是有时候返回了40000多个,导致获取数据的时间很长,而且内存占用过多。解决方

2017-03-22 09:10:14 4481

原创 Linux设备网络问题分析

背景:在我们自己开发的分布式存储集群中,是一个有中心的存储集群,这个中心节点有可能成为系统的性能瓶颈,所以一般情况下,中心节点的机器的配置都是很好的,一般是24核cpu,32GB内存,万兆网卡。。。但是有次做测试时,中心节点的机器配置降低了,带来的现象是网络通讯很差。问题分析:用ifconfig命令查看网卡状态:enp2s0: flags=4163  mtu 1500

2017-03-04 17:13:11 1777

原创 利用zookeeper创建共享锁

背景:多个设备节点上有相同的程序,可以提供相同的服务,但是如果多个设备同时提供服务,有可能会造成数据不一致性。一般情况下,大家会利用zookeeper创建分布式锁,也就是多个设备节点都在zookeeper上创建相同名称的临时节点,哪个设备节点创建成功了,那么这个设备节点就获取到了服务权限,可以提供服务,其他的设备节点就会创建失败,不可以提供服务。服务完成之后,再删除zookeeper上

2017-02-28 23:40:00 826

转载 (转)Java单例模式

我在项目当中,用的最多的是C++,不是Java,但是在做C++时,有很多的设计理念借鉴了Java,所以对Java也有一些研究。这里转载的一个Java单例模式的文章,研究还是很透彻的。转自:http://www.ibm.com/developerworks/cn/java/j-lo-Singleton/#ibm-pcon从专业化来说,单例模式是一种对象创建模式,它用于产生

2015-10-26 22:04:17 500

原创 用libaio读写文件时遇到的问题

最近做了一些libaio的读写文件的相关工作,是一个结合eventfd、libaio、epoll的程序。碰到了一个问题,就是用io_submit提交io后,利用io_getevents获取完成的io操作数,结果不清楚为什么io_getevents一直返回错误码-14,利用strerror查看,提示Bad Address。用man查看io_getevents说明,说是io_getevents

2015-06-04 23:45:33 2055

原创 centos上编译的可执行程序在suse上无法运行

在centos6.2上制作了一个可执行程序,取名为aio_test,其实是一个利用libaio读写文件的程序。在centos6.2上可以正常编译,可以正常执行aio_test。当我把aio_test直接copy到一个suse 10的机器上时,发现提示错误,找不到/lib64/libuuid.so (aio_test中用到了uuid库)。后来才发现,suse机器的libuuid库是放在/

2015-06-04 23:30:34 1574

原创 Linux中用C语言执行shell命令并获取返回结果

最近在项目中用到了C语言执行shell命令的问题,调查了一下,一般有system函数、exec族函数,但是还不太清楚怎么获取shell命令执行的返回信息。例如执行一个ifconfig命令,肯定需要获取ifconfig命令的返回值的。接着调查的话,发现有一个popen函数,也可以执行shell命令,并且可以获取shell命令执行的返回信息。man popen可以看到:#inc

2015-05-31 23:30:12 11548

原创 利用ping来检测设备在线

在网络连接中,一般用heartbeat来检测设备是否在线。但是如果有一台第三方的设备,没法在设备上制作heartbeat程序,那么可以用ping来检测该设备是否在线,相当于heartbeat了。别忘了防火墙可能会屏蔽ping。我是粗暴的将防火墙关闭了。以下是Linux中模拟ping命令的C代码:/*******************************************

2015-05-27 22:40:59 1266

原创 Hbase客户端的写缓冲区和put列表

写缓冲区HBase每次的put操作,都是一次rpc操作,如果某个应用程序每秒钟有1000+的put操作,那显然是不合适的。HBase的客户端API中配置了一个写缓冲区,缓冲区负责收集put操作,达到一定条件后,调用一次rpc操作,将全部的缓冲数据发送到服务器端。    void setAutoFlush(boolean autoFlush)    boolean isAutoFlu

2015-04-05 18:30:34 3487

转载 (转)Hadoop、Spark、HBase与Redis的适用性见解

由于没有机会对Hadoop、Spark、HBase与Redis的各个特性进行测试,所以在网络上找到了这篇文章,说说Hadoop、Spark、HBase与Redis的适用性问题。转自 http://datainsight.blog.51cto.com/8987355/1426538问题导读:1.你认为Hadoop适用什么场景?2.Spark适用于什么场景?3.HBase与

2015-04-04 23:00:53 3506

转载 (转)maven是什么?

Maven是什么,第一次接触到这个名词的时候,有点摸不着头脑,不过百度一下之后,找到的资料挺多的,下面把我找到的一些资料整理一下,希望对大家有帮助。Maven是一个采用纯Java编写的开源项目管理工具。Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理

2015-04-04 15:24:38 591

转载 (转)Facebook推出强大Android图片库Fresco

Fresco支持Android 2.3及以上版本,目前已托管至Github上。主要特性:内存解压后的图片和Android的位图都会占据很大的内存,这导致Java 垃圾收集器更频繁的运行,也让应用变得更加缓慢,这一问题在没有对垃圾收集器进行完善的Android 5.0上尤为严重。在Android 4.x及以下版本,Fresco将图片放置在Android

2015-04-01 22:34:08 637

原创 HBase scan setBatch和setCaching的区别

HBase的查询实现只提供两种方式:1、按指定RowKey获取唯一一条记录,get方法(org.apache.hadoop.hbase.client.Get)2、按指定的条件获取一批记录,scan方法(org.apache.hadoop.hbase.client.Scan)实现条件查询功能使用的就是scan方式,scan在使用时有以下几点值得注意:1、scan可以通过s

2015-03-26 15:25:09 18122

原创 HBase rowkey设计-热点问题

当处理由连续事件得到的数据时,即时间上连续的数据。这些数据可能来自于某个传感器网络、证券交易或者一个监控系统。它们显著的特点就是rowkey中含有事件发生时间。带来的一个问题便是HBase对于row的不均衡分布,它们被存储在一个唯一的rowkey区间中,被称为region,区间的范围被称为Start Key和End Key。        如果将单调递增的时间类型数据作为rowkey,valu

2015-03-25 15:48:58 5157

转载 (转)Linux共享内存使用常见陷阱与分析(4)-共享内存删除的陷阱

转自http://os.51cto.com/art/201311/418977_3.htm共享内存删除的陷阱?当进程结束使用共享内存区时,要通过函数 shmdt 断开与共享内存区的连接。该函数声明在 sys/shm.h 中,其原型如下:#include #include int shmdt(const void *shmaddr); 参数 shmaddr 是 shmat

2015-03-25 10:14:29 847

转载 (转)Linux共享内存使用常见陷阱与分析(3)-ftok是否一定会产生唯一的key值

转自http://os.51cto.com/art/201311/418977_2.htmftok是否一定会产生唯一的key值?系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * pathname, int proj_id) pathname就时你指

2015-03-25 10:08:50 2064

转载 (转)Linux共享内存使用常见陷阱与分析(2)-多次进行shmat会出现什么问题

转自http://os.51cto.com/art/201311/418977_1.htm多次进行shmat会出现什么问题?当首次创建共享内存段时,它并不能被任何进程所访问。为了使共享内存区可以被访问,则必须通过 shmat 函数将其附加( attach )到自己的进程空间中,这样进程就与共享内存建立了连接。该函数声明在 linux/shm.h中:#include #inclu

2015-03-25 10:01:29 4332 1

原创 Linux socketpair详解

socketpair函数概要如下:#include  定义一些C宏常量#include  定义socketpair函数原型int socketpair(int domain, int type, int protocol, int sv[2]);socketpair函数需要四个参数:domain-套接口的域type-套接口类型protocol-使用的协议sv[2

2015-03-24 22:11:11 4307

转载 (转)Linux共享内存使用常见陷阱与分析(1)-超过共享内存的大小限制

转自http://os.51cto.com/art/201311/418977.htm所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。其他进程能把同一段共享内存段“连接到”他们自己的地址空间里去。所有进程都能访问共享内存中的地址。如果一个进程向这段共享内存写了

2015-03-24 21:42:59 7761

原创 Linux sigsuspend与sigprocmask使用详解

1.sigsuspend()函数作用详解一个错误示例:参考APUE中的代码:1)头文件:#include 2)一个保护临界区代码的错误实例:(sigprocmask()和pause()实现)#include #include #include  void handler(int sig)    //信号处理函数的实现{   printf("SIGINT

2015-03-24 13:19:54 3508 2

转载 (转)Linux sigprocmask

功能描述:设定对信号屏蔽集内的信号的处理方式(阻塞或不阻塞)。用法:#include int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);参数:how:用于指定信号修改的方式,可能选择有三种SIG_BLOCK //加入信号到进程屏蔽。SIG_UNBLOCK //从进程屏蔽里将信号删除。S

2015-03-24 10:32:59 887

转载 (转)Linux epoll

1.什么是epollepoll是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,都是I/O多路复用(IO multiplexing)技术,按照man手册的说法:是为处理大批量句柄而作了改进的poll。Linux下有以下几个经典的服务器模型: ①Apache模型(Process Per Connection,简称P

2015-03-23 23:29:06 337

原创 hbase设计特点

1.hbase的特点(1)随机读写操作(2)大数据上高并发操作,例如每秒PB级数据的数千次的读写操作(3)读写均是非常简单的操作,例如没有join操作2.hbase设计推荐方法(1)更宽的row,更有利于搜索操作。     就是说每一行多存储一些数据,如果以前设计的是一行存储5KB,那么可以改为一行存储30KB,或者更多。当然,column family和colum

2015-03-23 23:04:41 701

转载 (转)基于MapReduce的HBase开发(续)

示例代码:[java] view plaincopyimport java.io.ByteArrayOutputStream;   import java.io.DataOutputStream;   import java.io.IOException;   import java.util.HashMap;    

2015-03-22 21:46:39 432

转载 (转)基于MapReduce的HBase开发

在伪分布式模式和全分布式模式下 HBase 是架构在 HDFS 上的,因此完全可以将MapReduce 编程框架和 HBase 结合起来使用。也就是说,将 HBase 作为底层“存储结构”,MapReduce 调用 HBase 进行特殊的处理,这样能够充分结合 HBase 分布式大型数据库和MapReduce 并行计算的优点。 相对应MapReduce的hbase实现类:  1)Inp

2015-03-22 19:18:40 505

转载 (转)Hbase访问方式之Mapreduce

概述:Hbase对Mapreduce API进行了扩展,方便Mapreduce任务读写HTable数据。一个简单示例:说明:从日志表中,统计每个IP访问网站目录的总数[java] view plaincopypackage man.ludq.hbase;    impor

2015-03-22 19:04:58 457

原创 nginx源码剖析-红黑树ngx_rbtree_t(添加lookup操作)

前一篇转自他人的rbtree结构分析,但是前一篇只有init、insert、delete操作,没有介绍lookup操作。所以在此添加lookup操作介绍。依然借用nginx源码,源码文件名为ngx_resolver.c。1. init操作:ngx_rbtree_init(&r->addr_rbtree, &r->addr_sentinel,                   

2015-03-22 10:10:17 985

转载 (转)nginx源码剖析-红黑树ngx_rbtree_t

转自http://blog.csdn.net/chen19870707/article/details/405152871.ngx_rbtree优势和特点     ngx_rbtree是一种使用红黑树实现的关联容器,关于红黑树的特性,在《手把手实现红黑树》已经详细介绍,这里就只探讨ngx_rbtree与众不同的地方;ngx_rbtree红黑树容器中的元素都是有序的,支持快速

2015-03-21 23:12:24 600

转载 (转)设计模式-----桥接模式(Bridge Pattern)-Java

学习设计模式也有一段时间了,今天就把我整理的一篇课程和大家分享,有不妥之处欢迎指出. 生活中的一个例子:    就拿汽车在路上行驶的来说。即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于交通工具(汽车)有不同的类型,然而它们所行驶的环境(路)也在变化,在软件系统中就要适应两个方面的变化?怎样实现才能应对这种变化呢?概述:在软件系统中,

2015-03-20 22:25:12 493

转载 (转)使用 Boost 的 IPC

使用非常流行的 Boost 库进行并发编程非常有意思。Boost 有几个用于并发编程领域的库:Interprocess (IPC) 库用于实现共享内存、内存映射的 I/O 和消息队列;Thread 库用于实现可移植的多线程;Message Passing Interface (MPI) 库用于分布式计算中的消息传递;Asio 库用于使用套接字和其他低层功能实现可移植的连网功能。本文介绍 IPC 和

2015-03-20 16:59:17 2454

转载 (转)Java对象的强、软、弱和虚引用

在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再 把它捡回来使用就不可能了。    但有时候情况并不这么简单,你可能会遇到类似鸡肋一样的物品,食之无味,弃之

2015-03-19 22:33:51 384

转载 (转)Linux进程间通信——使用信号量

这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行

2015-03-17 20:29:26 349

转载 (转)Linux进程间通信——使用共享内存

一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影

2015-03-17 20:28:12 340

转载 spark Master URLs的意思

创建SparkContext的时候,new SparkContext(master, appName, [sparkHome], [jars]),第一个参数是master,具体含义如下:Master URLs传递给Spark的master URL可以是以下任一种形式:Master URL 含义local 使用一个Worker线程本地化运行SPARK(完全不并行)

2015-03-17 16:25:31 1292

转载 LeakTracer-内存泄露检测工具

LeakTracer-Linux、Solaris和HP-UX下跟踪和分析C++程序中的内存泄漏。推荐到LeakTracer的github上去看看,连接是https://github.com/fredericgermain/LeakTracer1.有3种方法可以加载libleaktracer  (1)Link your program with libleaktracer.a,加

2015-03-16 22:29:52 2538

转载 spark中updateStateByKey引发StackOverflowError的解决

spark中updateStateByKey引发StackOverflowError的解决问题描述写的spark程序, 运行几个小时候总是会出现 StackOverflowError.程序使用 spark-1.1 运行.代码的逻辑大概是:streamB = streamA.map().fiter().recudeByKeyAndWindow()stream

2015-03-16 20:40:41 2983 1

转载 spark streaming 示例

1、监控本地文件夹下的文件信息[java] view plaincopyimport org.apache.spark.SparkConf  import org.apache.spark.streaming.{Seconds, StreamingContext}  import org.apache.spark.streaming.

2015-03-16 17:49:16 689

转载 Spark as a Service之JobServer部署

续上一篇Spark as a Service之jobServer部署使用开发者模式来测试,本文正式部署并使用jobserver,当前版本有很多BUG和不完善的地方,期待后续的版本修复。部署复制config/local.sh.template到local.sh ,并且设置相关参数。 可以在多个主机上配置jobserver,并指定安装路径,Spark Home, Spark Conf

2015-03-13 18:45:31 1826

转载 Spark as a Service之JobServer初测

spark-jobserver提供了一个用于提交和管理Apache Spark作业(job)、jar文件和作业上下文(SparkContext)的RESTful接口。该项目位于git(https://github.com/ooyala/spark-jobserver),当前为0.4版本。特性“Spark as a Service”: 简单的面向job和context管理的REST接

2015-03-13 18:40:42 1048

protoc-2.6.1-win32

protobuf的安装包,没有源代码,大家尽情的下载吧

2015-04-22

scala编程-中文版-完整

scala编程中文版,完整的,不是那种图片的,都是文字的

2014-10-13

空空如也

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

TA关注的人

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