自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java 爬虫从入门到实战

快速入门 Java 爬虫

2017-11-12 17:39:36 1626

原创 Flink Watermark

Watermark 是什么在基于 event time 的实时计算中,我们常常会碰到 乱序数据 的场景。在理想情况下,我们以为我们的数据流会是这样的:但实际上受网络波动等影响,大多数情况下是这样的:在这种乱序的场景下,数据丢失是必然的。假设我们有一个大小为 [0, 5) 的窗口(单位为秒),当上述 event time 为 5 的元素输入时,该窗口会触发计算并关闭,导致后续流入的元素(2、3、4)找不到对应窗口而丢失。为了解决这种乱序数据带来的数据丢失问题,Flink 提供了 Watermar

2021-08-24 16:17:50 269

原创 Flink Window

众所周知,Flink 是流处理计算框架,专为流式数据而生。流式数据有一个特点,即无界性。在很多场景中,这种无界性会使很多计算指标失去了意义,如结果统计、大小排序等。Window(窗口)的出现,正是为了解决无界性的问题。它可以将无界数据按照某种规则划分成有界数据,并在之上完成业务计算。本文将重点介绍 Flink 的 Window API,以帮助读者了解 Flink Window 的概念及使用方式。???? 在 Flink 1.13 版本中,常用的 Window 基本都是基于时间的 TimeWindow

2021-08-24 16:07:03 70

原创 Flink DataStream API

Flink 根据抽象程度分层,提供了三种不同的 API。每一种 API 在简洁性和表达力上有着不同的侧重,并且针对不同的应用场景。DataStream API 是 Flink 中用于编写流处理作业的 API,为许多通用的流处理操作提供了处理原语。它支持 Java 和 Scala 语言,预先定义了例如 map()、reduce()、aggregate() 等函数。​在 DataStream API 中,Flink 应用程序同样包含以下步骤:获取 execution environment定义数据

2021-08-10 10:49:32 301

原创 Java 多模块持续集成(Maven 示例)

一、为什么要用 Jenkins?目前,我们在持续集成上使用的是 GitLab 自带的 gitlab-ci。它支持自动化完成代码编译、镜像构建与镜像推送,减少开发人员在项目构建上的时间开销。但是,gitlab-ci 有一个明显的缺陷:在遇到多模块项目时(如基于 SpringBoot 搭建的微服务项目),它显得有些无力。具体表现为,gitlab-ci 不支持多管道,每当项目中某个模块的代码有新的提交,gitlab-ci 都会触发全项目的自动构建,而无法仅针对产生变动的子模块进行构建。当项目规模较大时,这种构

2021-07-30 14:10:30 548

原创 Flink 快速入门

什么是 FlinkApache Flink 是一个分布式计算框架,它能够对有界和无界的数据流进行高效的处理。有界数据:即批数据(离线数据),具有已定义的起止位置,属于静态数据集无界数据:即流式数据(实时数据),无已定义的结束位置,属于动态数据集Flink 特点在官方的介绍中,Flink 具有以下优势:Deploy Applications Anywhere:Flink 集成了所有常见的集群资源管理器,例如 Hadoop YARN、Apache Mesos 和 Kubernetes,也可以

2021-07-14 13:50:24 158 1

原创 使用 log4j 输出日志到 Kafka

一、背景介绍使用 log4j 自带的 appender,我们可以将日志打印到控制台,也可以将日志打印到本地文件。更深入使用的话,我们可以将日志进行隔离,根据日志级别输出到不同的文件,或者,我们还可以根据日期对日志进行滚动存储。这些原生功能看起来都很不错,但总感觉缺了点什么。假设我们部署了具有 10 个节点的集群,使用 log4j 记录日志到节点的本地文件。某一天,运维反馈集群有异常,需要找出故障点。此时,我们只能对 10 个节点的日志文件进行逐一排查,找出其中的 ERROR 日志。这看起来十分僵硬。若

2021-04-19 17:34:39 2214

原创 Zstd 压缩性能分析

About ZstdZstd,全称 Zstandard,是 Facebook 于 2016 年开源的新无损压缩算法。与 zlib、lz4、xz 等当前流行的压缩算法不同,Zstd 寻求一种压缩性能与压缩率通吃的方案,而实际上它也确实做到了。在由官方所列出的表格中,可以看到,Zstd 不仅具备优秀的压缩性能,在压缩率上也有非常亮眼的表现。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RXOO1Z8l-1596090419061)(https://engineering.fb

2020-07-30 14:29:14 6458

原创 基于 GitLab+SonarQube 搭建自动化代码检测平台

一、背景介绍目前,成熟的代码检测工具有很多,如 SpotBugs(前身为 FindBugs)、PMD、Checkstyle 等,我们可以在本地开发环境,非常便捷地利用这些工具实现代码的扫描与检测。这看上去好像很不错,但实际上,采用这种代码检测方式,我们面临着两个问题:代码提交前需要手动运行检测工具检测结果仅对自己可见那么,有没有什么方案可以规避这些问题呢?答案当然是有的。我们可以基于 GitLab 和 SonarQube 搭建自动化代码检测平台,并通过该平台实现以下功能:每次提交

2020-06-21 00:19:17 8360 3

原创 基于 Docker 部署 Flume 应用

前言本文目的在于通过 flume、zookeeper、kafka、docker 搭建基本的日志采集系统,实现日志的采集并将数据发送至 Kafka。搭建前,需确保已安装以下组件:JDK 8FlumeZookeeperKafkaDocker同时需确保已掌握以下技能:能在本地部署并成功启动 Flume,且了解 Flume 的核心概念 source、channel、sink能基本使用 Zookeeper,了解节点的创建、更新、查看与删除能基本使用 Kafka,了解 topic 的概念,实

2020-06-17 20:35:41 3006

原创 记一次ActiveMQ的异常排查

一、异常背景做一个小项目时,选择使用 ActiveMQ 作为中间件,负责项目内各组件的通信。刚部署时,整个项目运行正常。运行 N 天后,发现 ActiveMQ 出乎意料地自动重启,进而导致队列中未来得及消费的数据丢失。刚开始,以为是配置文件 activemq.xml 的问题,但是仔细核查后,发现没有什么明显的错误配置。然后,怀疑是否是 ActiveMQ 版本的问题,因此另选了一台测试机器进行...

2020-01-13 16:06:11 1519 1

原创 SpringBoot 多线程池实现方案

文章目录一、需求场景二、需要的核心注解三、自定义线程池配置3.1 所需依赖3.2 定义基类 AsyncConstants3.3 定义各线程池配置类PrimaryAsyncConstantsSecondaryAsyncConstants3.4 定义配置文件四、多线程池实现4.1 生成 Executor 对象4.2 声明异步方法4.3 调用示例一、需求场景通常情况,在小项目中,业务单一,单个线程池...

2019-07-26 17:52:13 4090

原创 SpringBoot 实现 MongoDB 多数据源配置

文章目录一、需求背景二、实现步骤1. 添加依赖2. 修改配置文件3. 重建数据源配置类AbstractMongoConfigurePrimaryMongoConfigureSecondaryMongoConfigure4. 创建实体类与接口UserUserRepository5. 调用示例一、需求背景MongoDB 是一个基于分布式存储的数据库,具备开源、高性能等特点,是当前 NoSQL 数...

2019-07-18 19:07:32 1091

原创 Cloudera 离线安装指南

一、版本号system:CentOS 6Cloudera Manager:5.7.0CDH:5.7.0二、环境准备MySQL 5.6Java 8python 2.6三、安装步骤1. 进行集群角色划分,指定 server 与 agent在 Cloudera Manager 中,包含两种角色,server 与 agent,两者间关系如下:server 负责管理集群内主机...

2019-07-12 13:52:38 165

原创 Clickhouse 入门教程(二)—— Java 连接示例

文章目录一、JDBC 驱动二、代码示例2.1 create table2.2 batch insert2.3 select query2.4 drop table三、解决 Connection refuse 的问题一、JDBC 驱动clickhouse 有两种 JDBC 驱动实现。官方驱动:<dependency> <groupId>ru.yandex.cl...

2019-04-25 14:30:57 30333 4

原创 Clickhouse 入门教程(一)—— 安装与启动

文章目录一、Clickhouse 简介二、Clickhouse 安装2.1 系统要求2.2 安装方式2.2.1 rpm 包下载2.2.2 rpm 包安装三、Clickhouse 启动与验证一、Clickhouse 简介Clickhouse 是一个开源的面向联机分析处理(OLAP, On-Line Analytical Processing)的列式存储数据库管理系统。Clickhouse 的优...

2019-04-10 20:29:25 19315

原创 显式关闭线程池的正确姿势

一、shutdown提到 Java 线程池的关闭,绝大多数人第一时间想到的是 ExecutorService 的 shutdown 方法。关于 shutdown 方法,注释上是这么说明的。/** * Initiates an orderly shutdown in which previously submitted * tasks are executed, but no new ta...

2019-02-13 15:42:39 545

原创 Java 移位运算符

Java 中有三种移位运算符,分别是:&lt;&lt;:左移运算符&gt;&gt;:带符号右移&gt;&gt;&gt;:无符号右移那么这个移位运算符该怎么理解呢?顾名思义,移位移位,就是移动位置。那么问题来了,既然是移动位置,那么移位运算符移动的是谁的位置,怎么移?我们写个程序测试一下。public class Main { public static void main(...

2019-01-24 15:01:11 109

原创 MySQL 数据文件迁移至新硬盘

文章目录一、SSD 初始化1.1 查看 SSD 信息1.2 分区1.3 格式化1.4 挂载与自动挂载二、迁移MySQL数据文件2.1 停止服务2.2 迁移数据文件目录2.3 修改目录权限2.4 新建软链接2.5 重启服务最近项目遇到 MySQL 的效率瓶颈,尝试从配置及代码层面进行优化,但是并没有取得比较显著的效果,于是打算将MySQL迁移至固态硬盘,以解决效率瓶颈问题。在迁移前,有两个要求:...

2019-01-18 17:18:44 2978 1

原创 使用Java编码方式集成通用Mapper(非Spring项目)

文章目录前言一、添加依赖二、创建 SqlSessionFactory三、获取 SqlSession四、获取 Mapper五、使用示例附:代码清单1.mybatis-conf.xml2.MySqlSessionFactory3.MapperFactory前言在单表操作上,通用 Mapper 已经展现出了它强大的作用。在通用 Mapper 的帮助下,开发人员无需编写繁琐的 xml 文件,即可实现...

2018-12-13 15:34:08 1007 1

原创 Solr入门学习(三)—— 认识 schema

Server : Ubuntu 16.04Java Version : 1.8Solr Version : 7.4.0前言在 《Solr入门学习(一) —— Solr 的安装、启动与关闭》 一文中,有提到每个集合都需要指定一个 configSet,且这个 configSet 至少要包含两个主要的配置文件: schema 文件和 solrconfig.xml 文件。其中的 schema 文...

2018-10-22 20:34:28 413

原创 Solr入门学习(二)—— Solr 的基本查询

Server : Ubuntu 16.04Java Version : 1.8Solr Version : 7.4.0数据准备Solr 刚刚安装后,是没有任何数据的,所以此时我们无法进行任何查询。幸运的是,官方为用户提供了存储工具以及样本数据,方便新手在 Solr 中快速添加数据。首先,我们先看一下存储工具和样本数据分别位于哪个位置。存储工具:/{solr_home}/b...

2018-09-03 20:13:53 10618 1

原创 Solr入门学习(一)—— Solr 的安装、启动与关闭

Server : Ubuntu 16.04Java Version : 1.8Solr Version : 7.4.0Solr 下载与安装首先,到 http://lucene.apache.org/solr/downloads.html 获取 Solr 的下载地址,然后使用 wget 命令下载到服务器上。wget http://mirror.bit.edu.cn/apach...

2018-08-13 15:45:00 6529

原创 HttpClient 4.5 重定向到中文URL出现乱码的解决方案

一、问题描述:遇到某个 URL A,请求时发现会重定向到某个包含了中文字符的 URL B。原以为只要 HttpClient 开启了自动重定向的功能,下载 A 指向的页面轻而易举,结果却出乎意料。HttpClient 在获取重定向后的 URL B 时出现了中文乱码,导致下载失败,具体报错信息见下图:二、解决方案问题的核心在于 ConnectionConfig 对象的 Charse...

2018-07-30 19:16:17 1628 1

原创 爬虫实战:一个简易 Java 爬虫程序的实现

完整的 Java 爬虫实现

2017-12-04 19:45:06 11923 7

原创 在 springMVC 中整合表格插件 jqGrid

springMVC 快速整合 jqGrid 与 PageBounds

2017-12-03 15:51:46 3427 2

原创 浅谈 Spring 事务管理

基于事务隔离性、传播行为,以声明式事务浅析 Spring 事务管理

2017-12-03 14:56:26 330

原创 爬虫实战:基于 HtmlParser 实现网页链接的提取

通过 HtmlParser 过滤器实现网页链接的过滤与提取

2017-11-30 19:41:40 6335

原创 爬虫实战:页面解析详细指南(正则表达式、XPath、jsoup、Gson)

4 种解析技术的介绍:正则表达式、XPath、jsoup、Gson

2017-11-30 11:59:32 2402

原创 爬虫实战:使用 HttpClient 实现页面源码下载

HttpClient 详细指南,实现页面下载、Cookie 配置、代理配置。

2017-11-24 15:50:29 1027

原创 整合Spring+SpringMVC+MyBatis详细指南

整合Spring+SpringMVC+MyBatis详细指南最近刚好写完一个ssm项目,趁着现在知识点记得还算比较清晰,赶紧写一篇小文章记录一下如何整合Spring+SpringMVC+MyBatis。需要注意的是,本教程是基于注解的方式整合ssm框架的。

2017-08-12 22:06:33 580

空空如也

空空如也

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

TA关注的人

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