自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小龙的博客

应该都是技术的

  • 博客(56)
  • 资源 (3)
  • 收藏
  • 关注

原创 Cassandra集群部署最优配置

内存选择Cassandra节点没有最合适的内存配置,内存的大小取决于节点需要处理的数据。一般来说,集群节点至少需要8GB的内存,所部署的服务器服务器至少需要有64GB到256GB的内存。如果Cassandra节点的内存给的太小,那么节点的memtables就会越小,这就意味着该Cassandra节点就会在硬盘上生成大量的小SSTable。查询的时候就会消耗更多的磁盘I/O。对性能影响很大。所以说,赋给Cassandra节点的内存越大,节点的性能就会越好。CPU选择Cassandra需要处理大量的写

2021-04-11 14:56:04 1736

原创 Zookeeper运维之四字命令

zookeeper提供四字命令来对zookeeper进行监控或管理。四字命令的打开方式:echo mntr | nc localhost 2181telnet localhost 2181 然后输入 mntr四字命令说明:四字命令说明confconf命令用于输出Zookeeper服务器运行时使用的基本配置信息。包括clientPort, dataDir和tickTime等,以便于运维人员快速地查看Zookeeper当前运行时的一些参数。conscons命令会用于输

2021-01-06 18:28:18 1108

原创 Spring Boot是如何启动Web Container和Spring MVC的

Spring Boot一般使用starter来整合第三方框架与扩展功能。其套路是:定义一个XXXXAutoConfiguration的类。其中XXXX一般可以写成所需集成的功能或框架。其上可定义@Conditional相关注解,指定何时可初始化该功能。 在该类上@Import一个ImportBeanDefinitionRegistrar接口的实现类来注入指定的Bean。 添加自定义的Bea...

2018-07-22 13:15:13 2181 1

原创 Spring Boot常用注解总结

Spring Boot是Spring框架对“约定优于配置(Convention Over Configuration)”理念的最佳实践产物。一个典型的Spring Boot应用本质上就是一个基于Spring框架的应用。Spring Boot使用注解的方式对Bean和配置进行收集,注册,分析和组装。简化了基于XML配置文件的开发。能够快速地构建出一个应用程序。以下注释基于Spring Boot 1....

2018-07-21 17:46:08 4721

原创 查看Linux环境下MySQL是哪个java进程在链接

首先,在mysql cli中执行如下命令:MySQL [appcpa_bitmap]> show processlist;+-----------+--------+--------------------+---------------+---------+-------+-------+------------------+| Id | User | Host ...

2018-06-10 10:17:11 1339 1

原创 ScyllaDB调研分析

ScyllaDB介绍ScyllaDB是用C++重写的Cassandra,其官网宣称其每节点每秒可处理100万TPS。ScyllaDB完全兼容Apache Cassandra,拥有比Cassandra多10X倍的吞吐量,并降低了延迟。ScyllaDB是性能优异的NoSQL列存储数据库。ScyllaDB在垃圾收集或者Compaction的时候不需要暂停(但是通过压测和Longevity测试发现Comp...

2018-05-19 21:01:59 9540 1

原创 MySQL中ID自增的远比记录数大的一个原因

创建一个表:CREATE TABLE `xxx_stat` ( `id` int(11) NOT NULL AUTO_INCREMENT, `appkey` varchar(100) DEFAULT NULL, `value` bigint(20) DEFAULT '0', `date` varchar(10) DEFAULT NULL, `hour` varchar(2) D...

2018-05-15 11:40:05 1831

转载 一篇文章,掌握所有开源数据库的现状

link from http://www.phpchina.com/portal.php?mod=view&aid=40116摘要:数据库作为业务的核心,在整个基础软件栈中是非常重要的一环。近几年社区也是新的方案和思想层出不穷,接下来我将总结一下近几年一些主流的开源数据库方案,其背后的设计思想以及适用场景。本人才疏学浅如有遗漏或者 ... 数据库作为业务的核心,在整个基础软件栈中是非常重要...

2018-05-09 10:14:12 450

原创 java中IP地址与long之间的转换

IP地址转为long型: public static long ipToLong(String ip) { String[] ipArray = ip.split("\\."); List ipNums = new ArrayList(); for (int i = 0; i < 4; ++i) { ipNums.add(Long.valueOf(Long.parseLon...

2018-05-04 08:52:42 4295 1

原创 Java生成二维码

首先,引入maven包: <!-- https://mvnrepository.com/artifact/com.google.zxing/core --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId&g...

2018-05-03 09:40:44 158

原创 Druid源码分析之Query -- Sequence与Yielder

Druid设计了一种可以迭代的序列叫Sequence,其实现在java-util包中。它是对Iterator操作的高级封装。但是它与普通的Iterator不同,它不会为您提供从中提取值的方式,而是提供了一个累加器(Accumulator)并定义数据如何操作。这种控制反转(IoC)的方式是为了更好的让Sequence进行资源管理。当执行结束时,它可以强制调用close()方法来清除资源。如果没有这种...

2018-04-27 11:27:46 1517

原创 Druid解析之管理用的接口大全

在介绍之前,先列一下Druid各部分的端口号(在代码Main.java中):Coordinator8081Historical8083Broker8082Realtime8084Overlord8090MiddleManager8091Router8888下面是管理命令:1. 查询某个Meta Datasource下所有的segments:GET http://<coordinator&gt...

2018-04-26 09:33:41 3444

原创 Druid原理分析之内存池管理(转)

为了减轻JVM垃圾回收带来的性能波动,Druid尽量使用对外内存和系统内存。使用临时文件,在索引创建和合并的过程中,中间临时结果会占用大量的内存。为了减少JVM内存的使用,采用临时文件,通过文件IO的方式,巧妙地利用内核的Page Cache。为了提升IO的性能,Linux操作系统增加了Page Cahe。文件IO的写操作会写到Page Cache中立即返回,内核会定时将脏页也就是还没写到磁盘的页...

2018-04-24 21:52:00 1141

原创 Druid源码解析之Segment

上篇我们介绍了Druid的Column相关实现原理,本次介绍Segment的实现原理。Column在Druid中用于管理单列,Segment则用于管理一组列。这组列包括了Dimension和Metric。我们首先看下Segment的定义接口:public interface Segment extends Closeable { public String getIdentifier();...

2018-04-24 21:21:51 2502

原创 Druid源码解析之Column

Column是Druid中Segment的基础列的基础接口。其结构图如下所示:首先看下Column接口:public interface Column{ public static final String TIME_COLUMN_NAME = "__time"; public ColumnCapabilities getCapabilities(); public int get...

2018-04-23 22:05:34 1172

原创 Druid源码解析之HDFS存储

Druid自身为各种外围功能定义了很多接口,比如存储就定义了:DataSegmentArchiver:用于对segment文件进行archive与restore,可用在s3之类的存储上,将暂时不用的segment放入到别的bucket中。DataSegmentFinder:用于在特定的目录下查找Druid segment,有时会根据正确的loadSpec更新deep storage上所有的desc...

2018-04-23 09:21:09 1386

原创 Druid源码解析之Coordinator

Coordinator时Druid的中心协调模块,用于解耦各个模块之间的直接联系,负责Segment的管理与分发,控制历史节点上Segment的装载和删除,并保持Segment在各个历史节点上的负载均衡。Coordinator采用定期运行任务的设计模式。它包含一些不同的任务。Coordinator并不是直接和历史节点发生调用关系,而是通过Zookeeper作为桥梁,将指令发送到Zookeeper上...

2018-04-22 20:14:53 1597

原创 DynamoDB的分区与存储的注意事项

DynamoDB的分区如何计算呢?直接上公式:实际设置的读容量/最大读支持3000 + 实际设置的写容量/最大写支持1000 所得结果想上取整。即:(readCapacityUnits / 3000) + (writeCapacityUnits / 1000) = RoundUp(initPartitions).比如实际设置了1000个读和500个写,那么(1000 / 3000 ) + ( 50...

2018-04-22 18:35:27 1698

转载 JAVA 8:健壮、易用的时间/日期API

对很多应用来说,时间和日期的概念都是必须的。像生日,租赁期,事件的时间戳和商店营业时长,等等,都是基于时间和日期的;然而,Java却没有好的API来处理它们。在Java SE 8中,添加了一个新包:java.time,它提供了结构良好的API来处理时间和日期。历史在Java刚刚发布,也就是版本1.0的时候,对时间和日期仅有的支持就是java.util.Date类。大多数开发者对它的第一印象就是,它...

2018-04-22 17:11:51 254

转载 深入解析OutOfMemoryError

译文出处: shenzhang   原文出处:原文链接在Java中,所有对象都存储在堆中。他们通过new关键字来进行分配,JVM会检查是否所有线程都无法在访问他们了,并且会将他们进行回收。在大多数时候程序员都不会有一丝一毫的察觉,这些工作都被静悄悄的执行。但是,有时候在发布前的最后一天,程序挂了。1Exception in thread "main" java.lang.OutOfMemoryEr...

2018-04-20 17:24:37 519

原创 茴香豆系列之单例的几种写法

1. 懒汉式public class Singleton { private static Singleton instance; private Singleton(){} public static synchronized Singleton getInstance(){ if (instance == null) { inst...

2018-04-20 17:21:53 205

原创 Spring中使用Annotation来记录方法的运行时间

在Spring的Java程序中,每个方法写一句log来记录这个方法执行多久是一件很恶心的事情。记录下使用annotation来解决。1. 定义一个annotation@Target({java.lang.annotation.ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface ...

2018-04-20 17:11:14 1358 1

转载 JVM相关参数解析

Java 8相关新特性请参考:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html以下为Java 7的参数:1 行为参数选项和默认值值描述-XX:-AllowUserSignalHandlers允许用户在应用中捕捉信号 (只和Solaris和Linux有关)-XX:AltStackSize=16384备用信号栈大小...

2018-04-20 09:52:39 286

原创 Java应用程序中的资源消耗分析

CPU的消耗查看CPU的消耗,目前最直接的办法就是通过linux系统的top命令来查看。如上文所述。对Java应用程序而言,CPU的消耗主要体现在us,sy两个值上,下面分析下这两个值:1. us当us值过高时,表示运行的应用程序消耗了大部分的CPU。在这种情况下,对Java程序而言,如何找到具体消耗CPU的线程所执行的代码呢?首先通过linux提供的命令找到消耗CPU严重的线程及其ID,将此ID...

2018-04-20 09:44:45 2448

转载 Linux的Top命令解析

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析。top命令说明[www.linuxidc.com@linuxidc-t-tomcat-188-193 ~]$ toptop - 16:07:37 up 241 days, 20:11, 1 user, load average: 0.96, 1.13, 1.25Tasks: 231 ...

2018-04-19 22:55:32 177

原创 JVM性能调优监控工具解析

我们在企业级Java开发的过程中有时会遇到以下问题:内存泄漏线程死锁锁抢占CPU占用过高等等JVM提供了一些命令工具可以帮助我们来定位这些问题:1. Jps(Java Virtual Machine Process Status Tool)它主要用来输出JVM中正在运行的进程状态信息。其语法格式如下:usage: jps [-help] jps [-q] [-mlvV] [<h...

2018-04-19 22:49:54 272

翻译 【翻译】Flink + Kafka 0.11端到端精确一次处理语义实现

本文是翻译作品,作者是Piotr Nowojski和Michael Winters。前者是该方案的实现者。原文地址是https://data-artisans.com/blog/end-to-end-exactly-once-processing-apache-flink-apache-kafka2017年12月Apache Flink社区发布了1.4版本。该版本正式引入了一个里程碑式的功能:两阶...

2018-04-12 12:00:39 1980 1

原创 流式处理框架的特点

分布式的流处理是对无界的数据集进行连续不断的处理,聚合,分析的过程。延迟需要尽可能的低(毫秒级或秒级)。这类框架通常采用有向无环图(DAG)来描述和处理作业拓扑。(线性处理也是一种DAG)。他们一般会抽取此类系统的底层通用模型,保证其易用性,健壮性和可扩展性。让开发者专注于业务实现。流式处理框架一般会包含如下特点:消息传输正确性保证:此类保障有三种:At Most Once:在框架中每条消息传输零...

2018-04-10 22:08:04 4055

原创 Redis学习笔记--info命令结果解析

127.0.0.1:8376> info all# Server    --- 服务器信息redis_version:2.8.20 -- redis服务器版本redis_git_sha1:00000000 -- Git SHA1redis_git_dirty:0 -- Git Dirty Flagredis_build_id:b873423ea3d4fc14 -- redis bu...

2018-04-10 10:18:34 669

原创 Flink开发中遇到的问题及解法

1. 当Source是Kafka的时候,如何设置Source Operator的并发度?如果没有指定,Source Operator的个数与集群中的TaskManager的个数相等。如果手动设置,建议使用的slot个数=Kafka Partition的个数/TaskManager的个数。此时,Slot的个数需大于等于2.因为其中有一个Source Operator。也不建议在一个Slot中启用多线...

2018-04-09 10:00:12 16763

原创 Druid中的负载均衡策略分析

在生产环境中,Druid查询通常能够命中多个(几十或几百个)segment。由于His节点的资源有限,所以segment需要被按照一定的策略均匀的分不到整个集群中,以确保集群的负载不会出现倾斜。要确定最佳的负载分布,需要对业务,查询模式和速度有一定的了解。通常,Druid查询回复改一个独立数据源中最近一段临近时间的一批segment。总体来说,查询更小的segment速度更快。通过以上,我们需要以...

2018-04-09 09:18:23 1913

原创 Druid中的Kafka Indexing Service源码分析

Kafka Indexing Service开发的目的是为了增强Kafka中数据的实时摄入。其特性如下:保障数据摄入的Exactly Once。可以摄入任意时间戳的数据,而不仅仅是当前数据。可以根据Kafka分区的变化二调整任务的数量。影响数据摄入Exactly Once的主要因素是Kafka的Offset管理。Kafka Indexing Service为了实现Exactly Once语义,去掉...

2018-04-08 22:23:15 2181

原创 Druid中的Extension在启动时是如何加载的?

Druid的Extension在开发时,按照Druid的Extension编写规则,启动Module写在文件:META-INF/services/io.druid.initialization.DruidModule中。如HDFS存储扩展,其文件内容就为:io.druid.storage.hdfs.HdfsStorageDruidModuleDruid在启动时,首先加载配置文件:在Main.jav...

2018-04-08 21:22:47 1261

原创 笔记-JVM的类加载过程

Java代码运行在JVM之上,JVM的运行情况对于Java程序至关重要。因此掌握JVM中的关键机制会对编写稳定的,高性能的Java程序至关重要。JVM规范中定义的标准结构如下图所示:JVM负责装载class文件并执行,class文件通常由类加载器(ClassLoader)来完成加载。class的执行在Sun JDK中有解析执行和编译为机器码执行两种方式。其中编译执行又分为client和server...

2018-04-08 10:05:23 271

原创 计算广告笔记 - 受众定向方法

先上个图:如上图所示,受众定向的一些典型方法:地域定向(geo-targeting):由于很多广告主的业务具有地域性。所以其作用相当重要,也是所有在线广告系统都必须支持的定向方式。人口属性定向(demographical targeting):其主要标签包括年龄,性别,教育程度,收入水平等。它主要是根据用户特征来判定的。频道定向(channel targeting):他是完全按照供应方的内容分类体...

2018-04-07 15:12:13 1724

原创 计算广告笔记-归因分析(Attribution Analysis)

归因是计算广告中最复杂的一个问题。难建模,难验证,难应用。但是它可以帮助回答计算广告中的一个最核心的问题:我的广告费用都浪费在哪里了?归因分析需要解决的问题就是如果用户先后访问了几个渠道的广告,最终转化成功。那么广告转化收益的功劳最终要归功于哪个渠道?以下是几种模型(图片来自网络):...

2018-04-07 14:54:16 5123

原创 计算广告笔记-计算广告综述

互联网关键的思维模式之一:正面的免费服务是为了获得流量和数据。背面的广告业务则是将这些流量和数据变成金钱。在能够获得充分的流量或高价值数据以后,所有能够传播信息的商品,其售价都会趋向其边际成本。广告业务的收益来自于三个方面:数据,流量和品牌属性。其中后两点是媒体的专属。而大量广告平台在做的事情,主要就是数据的加工与利用。其根本目的是广告主通过媒体达到低成本的用户接触。===============...

2018-04-07 14:44:25 537

转载 墨菲定律(设计系统)和康威定律(系统划分)

在设计系统时,应该多考虑 墨菲定律:任何事物都没有表面看起来那么简单。所有的事都会比你预计的时间长。可能出错的事总会出错。如果你担心某种情况发生,那么他就更有可能发生。在划分系统时,应该多考虑 康威定律:系统架构是公司组织架构的反映。应该按照业务闭环进行系统拆分/组织架构划分,实现闭环/高内聚/低耦合,减少沟通成本。如果沟通出现问题,那么应该考虑进行系统和组织架构的调整。在合适时机进行系统拆分,不...

2018-04-07 13:47:21 11041 1

原创 Spring Cloud中RestTemplate是如何通过注解与Ribbon结合的

我们在写Spring Cloud代码时,如何调用Spring Cloud中的其他服务呢?只需要定义一个RestTemplate,然后在其上加一个注解@LoadBalanced即可。如下:@Bean@LoadBalancedRestTemplate restTemplate() { return new RestTemplate();}我们就可以直接使用服务名称来调用该服务的接口。那使用了@...

2018-04-07 11:28:44 2196

原创 Netflix Ribbon原理与实践

Ribbon是什么?Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的...

2018-04-06 22:02:15 6089

Apache Kylin权威指南

Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。

2017-10-16

数学之美.pdf

数学之美.

2017-01-23

双11电子书_不一样的技术创新_完整版_Final_1484795227047.pdf

双11电子书_不一样的技术创新_完整版_Final_1484795227047.pdf

2017-01-23

空空如也

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

TA关注的人

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