自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 一款简洁的税后工资计算器(2019)

一款简洁的税后工资计算器,地址:http://kentt.top/tools/personal-tax/,特点:1. 支持自定义社保基数/比例、公积金基数/比例、个税起征点;2. 可对比改革前后数据;3. 可查看各支出所占比例;4. 无任何广告

2020-06-22 19:34:21 13917

原创 数据同步项目总结2-数据流

数据流是指数据从源端存储库到目的端存储库的一个流动过程,这个过程与数据的有序性、吞吐量、安全点、统计等功能或特性息息相关,经过多次调整,最终在线上环境的测试中,单个作业的 SQLServer -> Kafka 的同步速度能够维持在 3800000+ rows、480M 每分钟的同步速度(线上环境硬件配置好,开发环境性能下降 3.5 倍左右),尽管多线程任务的数量没有刻意增大,但是这已经能满足...

2020-03-24 23:30:33 99

原创 数据同步项目总结1-数据实时同步的要点

目录一、高效的数据同步模型流式 + 批次的数据同步模型多任务多通道/单通道的线程模型二、数据的一致性与时序性1. 数据全局有序2. 数据以主键为单位的顺序一致三、游标与断点续传四、总结这里的数据实时同步是指近乎实时的将数据从源端数据库同步到其它目的端数据库的一种方式,比如 MySQL 中的数据在发生变化时,系统能够尽可能实时的将这部分变化的数据同步到 HBase 中或其他目的端。与离线数据同步不...

2019-12-17 23:07:22 277

原创 volatile关键字作用与内存可见性、指令重排序概述[JAVA]

在理解volotile关键字的作用之前,先粗略解释下内存可见性与指令重排序。1. 内存可见性Java内存模型规定,对于多个线程共享的变量,存储在主内存当中,每个线程都有自己独立的工作内存,并且线程只能访问自己的工作内存,不可以访问其它线程的工作内存。工作内存中保存了主内存中共享变量的副本,线程要操作这些共享变量,只能通过操作工作内存中的副本来实现,操作完毕之后再同步回到主内存当中,其JVM内存模型大

2019-10-21 15:16:24 5535 7

原创 一次 JVM 占用 CPU 资源过高的问题排查

早晨刚到公司就收到服务器 CPU 持续飙高在 400% 左右的邮件。因为是新的服务器,上面只在一个 docker 中跑了一个 Java 应用,所以大致可以确定就是它的问题,接下来就是如何通过工具定位具体代码的问题了。大致的处理思路如下:定位系统中引发问题的进程定位进程中引发问题的线程定位线程中引发问题的代码如果能找到出问题的代码段,那么问题也就好解决了。1. 定位引发问题的进程与线程...

2019-08-03 20:45:44 809

原创 Kafka 学习与使用总结

一、Kafka 简介kafka 是一个分布式流处理平台,主要适用于以下场景:构造实时流数据管道,它可以在系统或应用之间可靠地获取数据。 (相当于message queue) ;构建实时流式应用程序,对这些流数据进行转换或者影响。 (就是流处理,通过 kafka stream topic 和 topic 之间内部进行变化)。有如下特点:Kafka作为一个集群,运行在一台或者多台服务器...

2019-07-03 00:08:28 303

原创 SQLServer 数据异构实时同步之数据时序的问题

文章目录一、简介二、数据时序的问题三、数据以主键为单位的有序四、数据操作被重复发送五、数据操作的重复发送与影响六、结论一、简介数据异构实时同步是指将数据从源端数据库近实时的同步至目的端数据库的一个过程,比如将 SQLServer 中的数据同步至 HBase 或 Kafka 中。不同于离线同步,实时同步需要解决变更数据采集与数据时序等问题,以此保证数据的一致性。不同于 MySQL 可以通过解...

2019-04-09 23:48:10 600

原创 HBase Timestamp 与幂等性

HBase 的数据模型包括表(Table)、行(Row)、列族(Column Family)、列限定符(Column Qualifier)、单元格(Cells)、时间戳(Timestamp),其中单元格是行与列的交叉点,用来存储数据值,而 timestamp 则是每个值的版本号标识。默认情况下,timestamp 的值是更新数据时的当前时间戳,由系统自动更新,并不太被被关注,但是在实际的项目中,如...

2019-03-29 23:09:41 943

原创 DataX 中流的速度限制

概述这里的流的速度限制是指在单位时间窗口内,最多允许指定的单位数据通过。比如我们需要从源端 A 发送 1000 条数据到目的端 B,如果设置的速度限制为最多 100 条每秒,那么理论上需要 10 秒的时间才能将数据传输完成,即使当前的网络允许在极短的时间便完成这个任务。但是我们没办法严格控制每秒时间内的数量一定是小于等于 100 的,因为我们不能每传输一条数据便进行速度与其控制的计算,这样会极...

2019-03-06 22:05:05 3383 2

原创 CDH-Hadoop 安装

一、 摘要二、安装1. 基础环境配置1) 主机介绍2) 配置 sudo 无密3) 配置 SSH 无密登陆以及其它基础配置2. 检查系统环境配置3. 安装依赖数据库3.1 MySQL3.1.1 安装3.1.2 启动3.1.3 安装 MySQL JDBC Connector3.1.4 确认 MySQL 服务有开机启动3.1.5 创建 Cloudera Manager ...

2018-09-16 23:06:34 681

原创 JHipster 中的设计(1)RESTful API Response 与异常处理的设计

一、 Response 设计在JHipster生成的项目中,RESTful API的Response相比一些传统的方式,特别的依赖了Response.header来传输一些附加信息,比如分页请求结果中的总数、执行的方法代码等。下面以用户相关接口为例: name method uri body Get User GET /users/{userId} ...

2018-07-18 22:31:05 2525 1

原创 Hadoop 原理学习(8)Yarn 概述及其基本原理

一、Yarn 简介二、Yarn 组件ResourceManager (RM)ApplicationMaster(AM)NodeManager(NM)Container(容器)三、提交任务流程客户端向RM提交任务流程运行状态交互四、总结五、参考链接一、Yarn 简介Yarn 是 hadoop 集群的资源管理层。它允许不同的数据处理引擎(...

2018-07-18 22:25:45 339

原创 Hadoop 原理学习(7)HBase 架构与工作原理5 - Region 的部分特性

RegionRegion 是表格可用性和分布的基本元素,由列族(Column Family)构成的 Store 组成。对象的层次结构如下:- Table - Region - Store (由每个 Region 中的列族组成的存储块) - MemStore (每个 Region 中存储在内存中的 Store) ...

2018-06-14 22:28:39 309

原创 Hadoop 原理学习(6)HBase 架构与工作原理4 - 压缩、分裂与故障恢复

CompacationHBase 在读写的过程中,难免会产生无效的数据以及过小的文件,比如:MemStore 在未达到指定大小便刷新数据以写入到磁盘;或者当已经写入 HFile 的数据被删除后,原数据被标记了墓碑,却仍然存在于 HFile 之中。在这些情况之下,我们需要清除无效的数据或者合并过小的文件来提高读的性能。这种合并的过程也被称为 compacation。HBase 中使用的 co...

2018-05-31 19:44:07 492

原创 Hadoop 原理学习(5)HBase 架构与工作原理3 - HBase 读写与删除原理

一、前言在 HBase 中,Region 是有效性和分布的基本单位,这通常也是我们在维护时能直接操作的最小单位。比如当一个集群的存储在各个节点不均衡时,HMaster 便是通过移动 Region 来达到集群的平衡。或者某一个 Region 的请求过高时,通过分裂 Region 来分散请求。或者我们可以指定 Region 的 startKey 和 endKey 来设计它的数据存放范围等等。所...

2018-05-30 20:22:50 1658

原创 Hadoop 原理学习(4)HBase 架构与工作原理2 - HBase 组件

一、HBase 组件概览Master-Slave 模式: HBase 体系结构遵循传统的 master-slave 模式,由一位掌握决策的主设备和一个或多个真正处理任务的从设备组成。在 HBase 中,主设备称为 HMaster,从设备被称为 HRegionServers,主从设备之间则通过 Zookeeper 共享状态信息。HBase 组成: 从物理层面,HBase 由 3 个部分:...

2018-05-27 19:36:12 544

原创 Hadoop 原理学习(3)HBase 架构与工作原理1 - HBase 的数据模型

一、应用场景二、Table 组成元素表(Table)行(Row)列族(Column Family)单元格(Cells)三、示例逻辑视图物理视图参考链接一、应用场景HBase 与 Google 的 BigTable 极为相似,可以说 HBase 就是根据 BigTable 设计的,这一点在 BigTable 论文中也能发现。在 BigTab...

2018-05-17 22:27:41 343

原创 Hadoop 原理学习(2)HDFS 架构与工作原理

一、目标HDFS 全称 Hadoop 分布式文件系统,其最主要的作用是作为 Hadoop 生态中各系统的存储服务。面对大规模的数据,HDFS 在设计上满足了以下目标:高度容错性: HDFS 可能由成百上千的服务器构成,任何一个组件都可能失效,因此错误检测和快速、自动的恢复时 HDFS 最核心的架构目标。支持大规模数据集: 运行在 HDFS 应用具有很大的数据集,它应该能提供整体...

2018-04-05 23:15:16 1327

原创 Google GFS, BigTable, MapReduce 论文中文版地址

GFS 论文: http://blog.bizcloudsoft.com/wp-content/uploads/Google-Bigtable中文版_1.0.pdf BigTable 论文:http://blog.bizcloudsoft.com/wp-content/uploads/Google-Bigtable中文版_1.0.pdf MapReduce 论文:http://blo...

2018-04-05 00:58:41 518 2

原创 Hadoop 原理学习(1)Hadoop 各服务的作用简述

注:以下服务为基于安装Hadoop 2.6.0-cdh5.8.3后的所得服务,但并不是全部。1. HDFSNameNodeNameNode是一个中心服务器,负责管理文件系统的namespace以及客户端对文件的访问。NameNode执行文件系统的namespace操作,比如打开、关闭、重命名文件或目录。同时它还确定block到DataNode节点的映射。Namenode...

2018-03-20 23:02:25 2798

原创 [Angular Directive] 输入框禁止为空字符串与自动去除空格指令

一、前言input 输入框自带了required属性,用以表单验证,但是只要有字符,即使全为空格也能通过required验证,这无法满足一些应用场景,所以需要自定义一些指令,用来满足验证全为空格的输入。在使用自定义的 Directive 修改 input 输入框值或属性时,需要注意:请尽量使用 Angular 提供的类或方法来修改输入框的值, 以免ngModel无法同步;同上,使用

2018-01-30 19:43:33 1643 1

原创 Spark _on_Yarn 资源池内存限制测试报告 - 防止"非法"任务的提交

需求背景讲道理,用户在提交 Spark_on_yarn 任务 时,应该指定--executor-memory属性(公司自己的规定),并且使用特定的用户提交,以便于 DBA 的管理。但是仍然存在一些用户直接使用 root 账户提交任务,这样在 yarn 的资源池中就会被分配到 root.user.root池中,如果集群压力过大,那么便不能迅速的找到该任务 的所有者,从而可能会对其它 team 的

2018-01-19 19:22:41 1572

原创 HBase 部分表无法写入数据的异常处理

HBase 无法写入数据到某张表,服务状态均正常,并且可能只是某一张表或者部分表发生无法写入问题,那么此时可能是某一个或几个 RegionServer 出了问题,使其状态变更为 PENDING_CLOSE,从而无法写入数据,但是它们的服务状态可能仍然显示为正常。 注:这其中的一种可能的情况,不能证明所有的无法写入的问题均来自于此。1. 检查 Regions in Transition 以c

2017-11-11 21:35:32 3667

原创 在 nginx 中部署 angular 应用

最近使用Angular做了第一个应用,但是网上的教程大多是教如何开发,部署相对较少,所以这里就简单记录一下如何在nginx中部署Angular应用。 注:Angular应用可以编译成静态页面,然后部署在任何 web 服务器上,这里仅仅是选择nginx而已,同时编译后的文件其实就仅仅是静态文件而已,与其它 html 文件本质上无异。一、编译 前提: 请确保@angular/cli已经安装在

2017-10-15 22:19:18 11104 2

原创 在需要实时更新数据的接口中使用 304 状态码

一、前言Http 状态码是接口设计中不可或缺的一部分,它简洁却蕴含着丰富的含义,这里就简单介绍一下 304 状态码的使用示例吧。二、场景比如最近的一个需求是:在 Web 页面中查看任务详情时,要求能够不刷新页面便自动的更新它的状态与日志等信息(任务的执行会花费一定的时间,同时后台在处理任务的过程中会同步它的状态与日志的更新)。三、分析与方案使用Ajax不定时的获取数据是肯定的(不采用WebSocke

2017-10-11 19:49:26 3162

原创 [Spring Cloud] Eureka 的自我保护模式及相关问题

一、Eureka 的自我保护模式访问Eureka主页时,如果看到这样一段大红色的句子: EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING E

2017-10-11 19:39:57 6568 2

原创 MySql 不存在则插入,存在则更新或忽略

前言在插入数据时,可能需要忽略或替换掉重复的数据(依据某个字段),这时可以在应用层处理,也可以使用复杂的 SQL 语句来处理(如果仅仅知道一些简单的 SQL 语法的话),当然也可以使用一些简单的 SQL 语法,不过它并不是通用所有的数据库类型。 以下所有实例仅针对MySQL而言,并不能随意用于其它数据库实例表名称:student表字段: Column Name Primary Key

2017-09-15 22:24:26 26807 8

原创 Centos 7.2.1511 安装 Docker 遇到的问题与解决方案

一、前言最近在一个集群上安装 Docker,本来多么简单的事却因为网络原因以及系统版本变得曲折了,也由于找到了不适合的解决方案,饶了一个弯,所以特此记录一下安装过程,防止重复踩坑。==系统版本:Centos 7.2.1511==二、下载与上传由于服务器不能连接外网,所以服务器使用的是公司自带的 yum 仓库,但是仓库内没有 Docker 安装包,所以需要自己下载。下载地址:https://yum.d

2017-07-22 22:40:21 9635

原创 Java 自定义 ClassLoader 实现隔离运行不同版本jar包的方式

1. 应用场景有时候我们需要在一个 Project 中运行多个不同版本的 jar 包,以应对不同集群的版本或其它的问题。如果这个时候选择在同一个项目中实现这样的功能,那么通常只能选择更低版本的 jar 包,因为它们通常是向下兼容的,但是这样也往往会失去新版本的一些特性或功能,所以我们需要以扩展的方式引入这些 jar 包,并通过隔离执行,来实现版本的强制对应。2. 实现在 Java 中,所有的类默认通

2017-06-14 21:16:05 20402 11

原创 [HBase源码] HBaseAdmin的重试机制源码分析

1. 前言HBase 版本:V 1.0.0在项目中获取HTable的详细信息时,Http connection一直处于pending状态,这是由于我的机器无法Ping通新加入的集群,但是这个connection 的pending时长已经超过了1小时之久,并且在org.apache.hadoop.hbase.client.ConnectionManager.checkIfBaseNodeAvailab

2017-04-20 21:17:11 1169

翻译 Spring JdbcTemplate查询示例

这里有一些示例向你展示如何使用JdbcTemplate的query()方法从数据库中查询或提取数据。1. 查询单行有两种可以从数据库中查询或提取一行数据,并将它们转换成一个model对象。1.1 自定义RowMapper通常,总是建议通过实现RowMapper接口来创建一个自定义的RowMapper类来满足你的需求,如下:package com.mkyong.customer.model;impor

2017-03-13 18:51:48 6929 1

转载 业界难题-“跨库分页”的四种方案

本文转载于58沈剑的文章,原文地址:http://mp.weixin.qq.com/s/h99sXP4mvVFsJw6Oh3aU5A,感谢同意转载。一、需求缘起分页需求互联网很多业务都有分页拉取数据的需求,例如:(1)微信消息过多时,拉取第N页消息(2)京东下单过多时,拉取第N页订单(3)浏览58同城,查看第N页帖子 这些

2017-03-08 21:21:58 656

原创 [shell脚本]Linux自定义命令并启用应用

前言之前做过一个Java Web系统,由很多的子系统组成,由尽管其子系统颇多,但是要在服务器上管理这些子系统(启动、停止、重启等)却很方便,只需要输入tt 便能看见每个应用的名称、状态等,然后输入对应的应用名+操作代码,便能进行对应的操作,这一切都源于它使用了自定义的命令,来调用对应的shell脚本或命令。正好目前我做的一个系统,还处于起步阶段,每次部署都太麻烦,所以就做了一个类似的功能。实现这个功

2017-03-03 20:51:12 6760 1

原创 Linux安装Apache 2.4 + PHP 7 + Mysql笔记

准备因为服务器不能连接外网,所以在安装之前,我已经将所有相关的安装包上传至服务器,文件列表如下:apr-1.5.2.tar.gzapr-util-1.5.4.tar.gzhttpd-2.4.9.tar.gzlibxml2-2.7.8.tar.gzpcre-8.10.tar.gzphp-7.1.0.tar.gz如果能连接外网,也可直接下载。1. 安装PCRE安装Apache之前需要安装Per

2017-02-18 21:02:30 8363

翻译 RDDs, Spark Memory, and Execution

弹性分布式数据集 (RDDs)目的 / 动机Sprak的实现https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf2014 ACM Doctoral Dissertation Award (Matei Zaharia, Spark creator, Databricks cofounder)为什么需

2016-12-15 21:54:40 4276

原创 Java 返回数组或集合的方法设计

写过很多方法,却依然写不好最简单的Getter方法?面向对象的其中一个很重要特征是封装,最简单的封装可能就是对一组属性的封装,然后只提供了setter和getter方法,比如下面这个对象:public class Dog { private String name; public String getName() { return name; }

2016-12-03 00:37:33 2832

原创 【图解JDK源码】BlockingQueue的基本原理

BlockingQueue即阻塞队列,它算是一种将ReentrantLock用得非常精彩的一种表现,依据它的基本原理,我们可以实现Web中的长连接聊天功能,当然其最常用的还是用于实现生产者与消费者模式,大致如下图所示:在Java中,BlockingQueue是一个接口,它的实现类有ArrayBlockingQueue、DelayQueue、 LinkedBlockingDeque、Link

2016-11-08 21:27:29 4310

原创 HBase RegionLoad获取Name乱码问题的源码分析与解决方式

通过RegionLoad可以获得一系列有关Region负载的详细信息,但是因为需要通过regionName与HRegionInfo中的regionName匹配,从而合并相关信息(保存的时候没有保存字节数组的regionName,太长了并且不直观,同时还需要clusterName信息,以保证其唯一性),所以也正因为如此,才带来了标题中的问题。由于每次抓取的Region数量在一两万左右,所

2016-11-04 18:19:45 1181

原创 利用Spring进行LDAP验证登录遇到的问题及其解决方式

有些系统需要使用公司内部的域帐号登录,那么就需要连接LDAP进行验证,Spring Secutiry提供了使用LDAP验证的方式(就相比登录验证来说,Spring提供的LDAP验证,比自己实现LDAP验证真是麻烦了不少),能完美契合Spring Secutiry的可参考这篇文章:https://www.ibm.com/developerworks/cn/java/j-lo-springsecurit

2016-10-25 22:47:47 14466 8

原创 《淘宝技术这十年》读后感

最近拜读了《淘宝技术这十年》,大致的了解了淘宝网在过去将近十年的某些技术的变化,其中深有体会的两点便是:1. 优秀的架构不是一蹶而就的,它是随着业务的增长而不断进化与完善,并在不断的重构与技术创新中得到升华的; 2. 良好的架构设计与实现应该同时考虑到成本的控制,包括经济成本与时间成本;之所以会对这几点有特别的感触,大概与两个项目有关。一:初出茅庐刚毕业那会儿,在相继看完《大型网站技术架构:核心原

2016-09-15 12:17:06 756

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