自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于canal数据加工系统

数据加工系统开发文档1.数据加工系统主流程2.服务介绍整个框架由4个服务组成:canal-server、canal-client、bimq-consumer、crm-bi-task四个服务组成 canal-server:主要负责获取mysql服务器的binlog日志,按照用户提交的事务维度解析为结构化数据,然后存储于内存中,并提供tcp服务。canal-client:通过connect到canal

2017-11-14 23:38:38 1473

原创 阿里中间件canal学习笔记

Canal学习记录canal启动过程在canal中一个server中可以包含多个instance,每个instance对应着不同数据库中的不同表格的数据变更。举例说明就是:你可以启动一个server(对应一个netty服务或者jvm服务),在改server中可以有两个instance,一个对应highso库中的crmchance表的数据变更,另外一个对应着order表的数据变更 1. server

2017-11-14 23:20:53 8365

原创 elasticjob接入方式和管理端使用

1.elasticjob接入方式1.1 加入依赖<dependency> <groupId>com.dangdang</groupId> <artifactId>elastic-job-lite-core</artifactId> <version>2.1.5</version></dependency><dependency> <groupId>com.dang

2017-10-11 23:41:17 3487

原创 elasticjob分布式任务调度中间件

1.elasticjobelasticjob是当当开源的分布式定时任务调度方案,其可用于替代quartz-db的分布式定时调度框架,并且支持单个任务的分片处理。其中分布式集群定时调度框架,需要解决的主要问题是:如何保证当个任务只会在集群中一台机器上执行。 quartz-db是通过对QRTZ_LOCKS表中的trigger记录进行加互斥锁(select for update),从而保证集群中只有一个

2017-10-11 23:34:13 3892

原创 Quartz定时任务执行原理分析

1.定时任务执行原理在java中常见的定时调度方案有:ScheduledExecutorService和quartz两种方案。其本质上都是通过native的wait方法来实现的.1.1 ScheduledExecutorService定时执行原理ScheduledExecutorService的schedule方法,其根据delay周期性的执行任务。public ScheduledFuture<?>

2017-10-09 23:21:16 10972 1

原创 swap.used.percent占比较高异常排查

怀疑1:分配的活跃虚拟内存大于物理内存jvm参数配置有问题(java8):java8已经移除掉perm内存,使得-XX:MaxPermSize=256m无效;JVM配置CUSTOM_JVM = -Xmx5g -Xms5g -Xmn2g -server -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+PrintCommandLineFlags -XX:+Use

2017-06-06 18:30:43 14565 2

原创 集群脑裂问题分析

1.什么是集群脑裂集群的脑裂通常是发生在集群中部分节点之间不可达而引起的(或者因为节点请求压力较大,导致其他节点与该节点的心跳检测不可用)。当上述情况发生时,不同分裂的小集群会自主的选择出master节点,造成原本的集群会同时存在多个master节点。2.elasticsearch集群的脑裂假设已经有安装好elasticsearch集群的三台机器:192.168.31.88 hadoop-maste

2017-05-16 23:19:25 31608 1

原创 redis-cluster通用java接口

1.redis-cluster通过结合jedis和spring-data-redis包开发的一个简易方便的redis 集群访问接口。对于redis-cluster方式集群安装参照:http://blog.csdn.net/cweeyii/article/details/712989052 redis-cluster接口整个工程代码:https://github.com/cweeyii/redis-p

2017-05-07 20:38:32 2306

原创 redis集群和安装

1.redis集群和常见集群的区别我们以elasticsearch集群架构方案和redis集群方案做对比分析,redis集群的优点。 优点:因为redis是一个内存数据库,因此其采用无中心化的集群架构,使得与传统的中心节点转发的方式相比,其并发量和吞吐量都更大,并且不会因为中心节点压力过大影响集群的性能。redis cluster节点分配:假设我们有三个主节点分别是:A, B, C 三个节点,

2017-05-06 20:52:29 1168

原创 elasticsearch查询语句篇

1.ElasticSearch基本概念elasticsearch基本概念见:https://es.xiaoleilu.com/010_Intro/05_What_is_it.html 集群模式安装:http://blog.csdn.net/cweeyii/article/details/710558842. 重点概念搜素类型(searchType) 特别是你需要检索出满足条件的文档数量时,可以

2017-05-01 22:44:08 9116

原创 elasticsearch原理篇

1.elasticsearch元素简介node、replica和shard node表示elasticsearch集群中的一台虚拟机机器,其作用是提升分布式应用的容错性和可用性。其中每个虚拟机(节点)只有一个索引的所有shards的一部分。 replica相对于数据的备份,其主要是表示一个索引的备份,其通过number_of_replicas来设置除主数据索引外,还有多少个备份索引。类似于数据

2017-05-01 19:58:37 3314

原创 elasticsearch集群安装

1.假设已经准备了三台linux机器(可以采用虚拟机virtualbox安装,并且以桥接方式配置网络,使得三台linux机器都有不同的局域网ip)。在每台机器的/etc/hosts目录下配置域名映射关系192.168.31.71 mac1192.168.31.112 mac2192.168.31.12 mac32.下载elasticsearch安装包(注意最好不要下载最新版本,因为新版有些插件不

2017-05-01 14:45:52 718

原创 mysql的事务和锁

mysql的事务具有ACID的特性。

2017-04-29 22:56:23 1190 1

原创 mysql可重复读和幻读实例

mysql的默认事务级别是:可重复读 其中可重复读是通过mvcc来实现的又叫快照读,在事务中的读操作通过对当前的数据库中记录一个版本,以后的读操作只会读取记录的版本,因此相当于对数据库的数据建立了一个快照数据,因此叫做快照读,其不用对数据库中的数据进行加锁又叫做乐观锁。 同时RR事务级别的mysql通当前读和gap锁来解决幻读,其本质是通过对数据库周边记录进行加悲观锁(读锁(共享锁)和互斥锁(写

2017-04-29 22:54:27 16285 4

原创 分布式业务系统的一致性

单机系统因为业务的变更会使得整个系统越来越复杂,整个代码也越来庞大,基于业务的重新划分或者整个工程的重构会将一个单机系统划分多个分布式的系统。以前能够在一个单机事务的完成的操作(ACID)需要变成多个单机事务,同时需要一个中间协调组件来各个单机事务的一致性。对于强一致性要求分布式业务系统的操作能够同步的返回结果,要么成功(分布式事务提交),要么失败或者多次重试后还是超时(分布式事务回滚)。对于最终一

2017-04-27 00:05:14 996

转载 Java开发规范精要

1.命名规则代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:(领域模型 的相关命名)DO / BO / DTO / VO等。 正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / UserDo

2017-04-20 15:10:07 934

原创 分布式中间件系统的一致性和可用性

对于单机系统和集中系统是指一台或多台主计算机组成的中心节点,并数据和业务处理逻辑都集中于这个中心节点上,客户端仅仅负责数据的录入和展示。集中式系统的最大优点就是部署简单,同时不需要考虑分布式系统的协作问题。1.单机系统的可用性和一致性(ACID)对于单机系统最主要的指标就是数据的一致性和可用性。其可以用ACID来度量一个系统的可用性和一致性。 Atomicity原子性:一个事务中所有操作都必须全部

2017-04-18 23:06:39 3338

原创 Spring对象生命周期控制

1.Spring中常用对象Spring框架中最常用对象有两个:BeanFactory和Bean。1.1 BeanFactoryBeanFactory作用是:保存所有bean名字、类型等和beanDefinition的映射关系,以及保存实力化后单例bean名字、类型等和bean对象的映射关系。其中MVC框架中有两个beanFactory:一个是保存业务对象@Service @Commpont等注解产生

2017-01-08 20:18:26 4222

原创 分布式Hive环境安装

1.HIVE安装hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。所有首先需要安装分布式环境的hadoop程序(参考:http://bl

2017-01-08 20:01:58 3343

原创 从零开始hadoop分布式环境搭建

1. Linux虚机换机环境安装1.1 linux环境安装1.建议选择虚拟机:VirtualBox 2.Linux版本:Ubuntu 3.安装时选择动态扩展磁盘,最大磁盘容量50G(最大磁盘容量太小,hadoop使用过程中容易出现意想不到的的问题) 4.网络选择桥接网卡(不要选择NAT,不然路由器不会为虚拟机分配独立的IP地址) 5.安装增强功能开启双向开启共享剪切板 6.安装用户使用同样

2017-01-07 12:51:18 3740

原创 JVM分析工具

1 机器性能统计工具1.1 shell工具查看CPU信息(数量 型号) cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 1 QEMU Virtual CPU version 1.1.2 查看内存使用情况 cat /proc/meminfoMemTotal(内存总量): 8059828 kB MemFree(可用内

2016-11-25 23:31:03 1970

原创 线程池-基础类

1.UnSafe类UnSafe类:用于执行低级别、不安全操作的方法集合,其通过直接操作内存来保证线程安全。Unsafe和ByteBuff都能用于是获取非堆内存,但UnSafe保证了对非堆内存的操作是线程安全的,而ByteBuff不能保证。 并且其可以不用调用类的构造函数从而直接反序列化对象等。2.Thread类关键Field: ThreadGroup g 、Runnable target、线程名

2016-10-23 17:14:09 484

原创 Scheduled线程-schedule

schedule1.schedule方法schedule方法主要使用延迟或者定时执行一次,在指定时间之后。在延迟两秒后提交任务,开始任务的执行public class ScheduledThreadPool { private static final Logger LOGGER = LoggerFactory.getLogger(ScheduledThreadPool.class);

2016-10-16 22:42:48 2674

原创 线程池-invokeAll

invokeAllinvoke类方法invokeAll和invokeAny与submit方法方法最大的区别是submit是异步的其不会等待任务的完成,而invoke方法是同步的,其需要等待任务的完成,才能返回public class InvokeAll { private static final Logger LOGGER = LoggerFactory.getLogger(InvokeA

2016-10-16 21:53:39 5343 1

原创 线程池-callable任务

1 带回调的线程池任务Callable接口和Runable接口最大的区别是Callable可以拥有返回值,并可以通过回调的方式获取。同时通过Future的get方法,可以同步的获取到返回值,并保证任务已经完成ps:注意必须调用线程池的shutdown方法,否则主线程(main)线程不会结束,其会保证线程正常关闭后才会退出。package com.cweeyii.threadpool;import o

2016-10-16 15:47:37 560

原创 线程池-isShutdown和isTerminated

1.线程池 isShutdown和isTerminated的区别isShutDown当调用shutdown()方法后返回为true。 isTerminated当调用shutdown()方法后,并且所有提交的任务完成后返回为true线程池任务正常完成,都为falsepackage com.cweeyii.threadpool;import org.slf4j.Logger;import org.s

2016-10-16 13:57:52 16555

原创 线程池-shutdownNow

1.shutdownNowshutdownNow和shutdown的最主要的区别是:shutdown会等待所有提交的任务执行完成,不管是正在执行还是保存在任务队列中的已提交任务。而shutdownNow会尝试中断正在执行的任务(其主要是中断一些指定方法如sleep方法),并且停止执行等待队列中提交的任务。中断Sleep任务package com.cweeyii.threadpool;import o

2016-10-16 11:48:07 1723

原创 线程池-shutdown和awaitTermination

1.shutdown和awaitTerminationshutdown:启动线程池的有序关闭过程,其等待已经提交的所有任务完成之后关闭线程池。当调用该方法后,线程池不再接受其他任务。并且该方法是非阻塞的,不会等待所有任务执行成功后返回。调用线程直接返回public class SleepWorker implements Runnable { private static final Log

2016-10-16 10:55:53 3299 2

原创 I/O处理几种方式

1.阻塞方式 该方式主要特点是调用阻塞的系统方法,是的用户线程阻塞在等待I/O的数据准备过程,其常用的方式是使用线程池的方式,将阻塞方法的调用和后续的处理流程放进单独的线程任务对象中,通过线程池来处理阻塞的方法,该处理方案的优点是:将阻塞的用户处理逻辑与其余的处理逻辑想隔离达到异步的效果,并且使用线程池限制了系统线程的使用数量,避免造成占用太多的线程(并且该线程是阻塞状态)。2.非阻塞方式 非阻

2016-09-04 08:48:21 2250

原创 文本处理(python)

1.正则表达式保留汉字、数字、英文单词regex = re.compile(ur"[^\u4e00-\u9f5aa-zA-Z0-9]")s=u'hello我是,,,中国人's = regex.sub('', s) #将不满足要求的字符替换成空字符map map(function, sequence[, sequence, …]) -> list:将序列通过function进行映射,将映

2016-07-22 18:23:29 677

原创 python学习

1.基础语法 ##命令行输入字符串并转化为整数 year = int(raw_input('year:\n'))类的继承 class Parent: a=3 b='hello' def __init__(self, a=3, b='hello'): #构造函数 self.a=a self.b=b def __del__(sel

2016-07-21 17:27:14 433

转载 idea 14 注册码生成器

package com.sankuai.meituan.poiop.util;import java.math.BigInteger;import java.util.Date;import java.util.Random;import java.util.zip.CRC32;public class keygen{ /** * @param s * @param i *

2016-07-14 11:14:46 641

原创 图像知识分享

1.图像是什么? 图像是像素组成的矩阵,根据图像类别的不同:彩色图像的像素是由RGB三个颜色分量组成,灰度图像的像素是由灰度值的大小来表示,二值图像是每个像素只取0和1两个值。在图像分类和识别等研究领域一般只关心物体的形状并不关心其颜色,因此通常将彩色图像转化为转化为灰度图像进行处理,从而减少计算量。 从上图可以看出:对于图像分类和识别而言,灰度图同彩色图像相比只是丢掉了颜色信息,对于目标的

2016-07-03 00:48:40 1364

原创 Java数据结构源码分析-Vector

1.VectorVector和ArrayList都是通过数组来构建顺序列表的数据结构,其关系同HashMap与HashTable一样,Vector是一个线程安全的数据结构,而ArrayList是非线程安全的,因此在不考虑多线程的情况下,ArrayList比Vector速度更加的快,在考虑线程安全的情况下,ArrayList提供了SynchronizedList类来保证线程安全,其访问速度同Vecto

2016-06-05 21:19:48 1255

原创 Java数据结构源码分析-LinkedList

1.LinkedListLinkedList是通过双向链表来维护链表的顺序性。 首先,我们看下类的构成,LinkedList通过两个iterator来顺序和倒序的访问数据。public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java

2016-06-05 21:00:49 516

原创 Java数据结构源码分析-ArrayList

1.ArrayList简介ArrayList是基于数组实现的顺序容器,其具有O(1)速度的访问的特点。其结构比较简单,因为我们快速的看下其中比较重要的几个方法。//ArrayList在调用构造函数的时候,分配数组的内存public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0)

2016-06-05 16:49:06 598

原创 Java数据结构源码分析-HashTable

1.HashTableHashTable同HashMap在数据结构的层面上是一致的,同时通过数组+链表的形式来存储数据。 其方法的功能和实现方式也基本一致。 就不在此处赘述,如果要详细了解可以参看HashMap的源码分析: http://blog.csdn.net/cweeyii/article/details/51583154 下面我们给出下几个重要方法的对比://HashMap的Pu

2016-06-05 15:05:35 718

原创 Java数据结构源码分析-HashSet

1.HashSetHashSet和HashMap在本质上是一样的,其实HashSet是一种特殊的HashMap,其所有的Entry中的value都是一个私有的对象。private static final Object PRESENT = new Object();public HashSet() { map = new HashMap<>(); }public boole

2016-06-05 14:45:30 736

原创 Java数据结构源码分析-HashMap

1.HashMap1.1 Map接口在开始介绍HashMap的源码前,我们先来了解下HashMap的在内存的数据组织方式: 整个结构分为两部分,第一部分是一个Entry[]数组,其数组的索引就是hash之后的slot位置。 第二部分是一个链表,每个Entry对象都会有一个Entry next的引用指向下一个Entry对象,如此当出现冲突时,只需要将冲突的数据加入到链表中就行了 接下来,我们来

2016-06-04 10:22:06 768

原创 Java数据结构源码分析-前言

##HashSet声明分析 ##public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable {......}

2016-06-03 22:12:21 451

空空如也

空空如也

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

TA关注的人

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