<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Shadow_Light的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Shadow_Light</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Shadow_Light]]></copyright><item><title><![CDATA[生产环境OSS使用不当引发OOM造成CPU100%问题]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/134799552</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/134799552</guid><author>Shadow_Light</author><pubDate>Tue, 05 Dec 2023 10:04:29 +0800</pubDate><description><![CDATA[将导出的dump文件导入MAT（MemoryAnalyzer）中进行分析，打开后软件提示存在内存泄漏，点开后可发现PoolingHttpClientConnectionManager 这个对象是被一个数组对象引用着的，数组内对象数量多达38万，占据了总内存的96%结合查询业务错误日志，可以断定是内存溢出，导致GC线程在不停进行垃圾回收，但又始终回收不了内存，cpu自然而然就上去下不来了。，打开源码可以看到，该类中确实存在一个静态的数组对象，并且提供了方法去往数组中添加。从MAT中可以看到，最终的对象是。]]></description><category></category></item><item><title><![CDATA[Hutool、Forest附件上传xlsx类型文件异常]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/134419443</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/134419443</guid><author>Shadow_Light</author><pubDate>Wed, 15 Nov 2023 16:09:34 +0800</pubDate><description><![CDATA[类的  buildBody 方法中进入各自实现类中，最终都会定位到相同的代码去获取MIME类型总结：hutool和Forest工具类，在上传附件时，文件的MIME类型都是通过jdk自带的contentType的映射文件来获取的。]]></description><category></category></item><item><title><![CDATA[修改POI源码，优化百万级大数据量Excel导出]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/110387794</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/110387794</guid><author>Shadow_Light</author><pubDate>Tue, 01 Dec 2020 21:04:23 +0800</pubDate><description><![CDATA[一、问题背景

   最近在做项目大数据量Excel导出时，有前端反馈响应速度很慢，基本表现为前端页面触发请求之后，过了很长时间才会在浏览器页面弹出下载文件的窗口，而且响应时间会随着数据量的递增成正比。

注：目前项目中涉及Excel导出相关的基本都是使用阿里的EasyExcel，而可以了解到的是，目前主流开源的excel导出的第三方工具其底层均是基于POI这一开源框架上所做的一些API功能集成，简化操作，可以让开发人员不需要关注底层POI的操作。

二、定位问题

   


List&l...]]></description><category></category></item><item><title><![CDATA[Mysql-列转行（字段中多个值转换为多行）]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/109537635</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/109537635</guid><author>Shadow_Light</author><pubDate>Mon, 16 Nov 2020 11:37:21 +0800</pubDate><description><![CDATA[1、借助一张id自增的mysql表，自增id为1开始，并使得存储的id值尽可能大于字段里存的值个数

2、拼写sql

t_auto_id 表中 id最小值为1：


SELECT
SUBSTRING_INDEX( SUBSTRING_INDEX( a.scene, ',', b.id ), ',', - 1 ) AS scene
FROM
`t_organization` AS a
JOIN t_auto_id AS b ON b.id &lt;= ( length( a.scene ) - length]]></description><category></category></item><item><title><![CDATA[Datax-HdfsWriter如何实现支持Map,List,Set等符合类型数据写入]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/108775512</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/108775512</guid><author>Shadow_Light</author><pubDate>Thu, 24 Sep 2020 17:55:32 +0800</pubDate><description><![CDATA[一、问题背景

   之前分析hdfswriter时，看到过api支持map,list,set类型的数据写入，因此，想将其合入到datax里，使得源数据端有类似json,array等这种数据可以直接导入到hive中。

二. 环境准备

Datax版本：3.0

Hadoop版本：2.7.3

Hive版本：2.3.2

三. 源码

   hdfs写入时，最重要的是获取字段对应类型的ObjectInspector，因此直接从ObjectInspectorFactory类入手看：


Obje...]]></description><category></category></item><item><title><![CDATA[Datax-Hdfs如何实现支持binary类型数据读写]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/108659577</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/108659577</guid><author>Shadow_Light</author><pubDate>Fri, 18 Sep 2020 15:04:30 +0800</pubDate><description><![CDATA[一、问题背景

   主要的源码思路还是按照这篇HdfsWriter如何实现支持decimal类型数据写入来，这里不再介绍。上篇说binary类型写入和读取会有坑，因此这篇主要解释一下坑的地方以及解决的办法。

PS：虽说binary类型的字段写入Hive，本人没有想到对于数据仓库建设使用上有什么用处，但是本着好奇、学习的心态，就去研究了一下并集成到datax内。

开头附上github地址。

二. 环境准备

Datax版本：3.0

Hadoop版本：2.7.3

Hive版本：2.3.2

三...]]></description><category></category></item><item><title><![CDATA[Datax-HdfsWriter如何实现支持decimal类型数据写入]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/102593160</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/102593160</guid><author>Shadow_Light</author><pubDate>Fri, 18 Sep 2020 03:33:23 +0800</pubDate><description><![CDATA[一、问题背景

在做Datax数据同步时，发现源端binary类型的数据无法写入hive端binary类型的字段。看了一下官网文档，DataX HdfsWriter 插件文档，发现是1年前的，不信邪，自己看源码找原因。

二. 集群环境

Datax版本：3.0

三. Datax日志


...]]></description><category></category></item><item><title><![CDATA[SpringBoot整合Activiti7]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/108194564</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/108194564</guid><author>Shadow_Light</author><pubDate>Wed, 26 Aug 2020 21:04:18 +0800</pubDate><description><![CDATA[一、背景

   因工作需要，公司需要建设一个类似工单系统，想借助activiti工作流引擎来进行实现，但目前网上Spring Boot与Activiti7整合的例子都不是特别全，大多都是Activiti6居多，借工作之余学习记录一下。

二、环境搭建

   一开始我选择的Activiti7最新的版本 7.1.0.M6，从7版本开始，activiti开始精简了原先的旧版本的一些接口，将原先的接口方法整合了security做权限验证出了新的接口api，新的api基本在xx-runtime包中...]]></description><category></category></item><item><title><![CDATA[DataX-Mysql主键UUID类型切分主键]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/107826401</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/107826401</guid><author>Shadow_Light</author><pubDate>Wed, 05 Aug 2020 23:02:36 +0800</pubDate><description><![CDATA[一、问题背景

之前公司在使用datax时，需要从rds同步数据到hive，但是数据库中的主键id是uuid类型的字符串，使用datax默认的字符串分隔方式，其实会有很大的问题，所以官方也不推荐使用。

二. 分析源码

跟踪底层源码最终可以定位到这个RangeSplitUtil类上


public static String[] doAsciiStringSplit(String left, String right, int expectSliceNumber) {
        int radix]]></description><category></category></item><item><title><![CDATA[RMI原理浅析以及调用流程]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/105587008</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/105587008</guid><author>Shadow_Light</author><pubDate>Sat, 18 Apr 2020 22:28:54 +0800</pubDate><description><![CDATA[一、定义

RMI: 远程方法调用(Remote Method Invocation)，它支持存储于不同地址空间的程序级对象之间彼此进行通信，实现远程对象之间的无缝远程调用。
Java RMI: 用于不同虚拟机之间的通信，这些虚拟机可以在不同的主机上、也可以在同一个主机上；一个虚拟机中的对象调用另一个虚拟上中的对象的方法，只不过是允许被远程调用的对象要通过一些标志加以标识，底层是通过Socket通...]]></description><category></category></item><item><title><![CDATA[Datax-Mysql同步至Hive时时区问题导致日期减少一天]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/102615364</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/102615364</guid><author>Shadow_Light</author><pubDate>Mon, 21 Oct 2019 12:08:42 +0800</pubDate><description><![CDATA[一、问题背景

Datax从Mysql数据库到Hive数据同步任务时，发现同步时，date类型字段同步到Hive里中string类型字段时，部分日期会减少一天。

二、集群环境

Datax版本：3.0

三、现象描述

mysql数据库时间
			Hive数据库中时间
		1986-07-17
			1986-07-16
		1987-06-26
			1987-06-25
		1987-12-...]]></description><category></category></item><item><title><![CDATA[ElasticSearch-delete_by_query大数据量删除时，导致SocketTimeout的问题]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/102469809</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/102469809</guid><author>Shadow_Light</author><pubDate>Thu, 10 Oct 2019 20:49:30 +0800</pubDate><description><![CDATA[一、问题背景

最近在做ES清空指定index下的指定type类型数据时，发现在大数据量情况下删除的时候会比较慢，会超过自己设定的socketTimeout时间，需要提升性能。

二、集群环境

ElasticSearch版本: 阿里云 5.5.3

删除的数据量大小：7000w

三、原始日志



可以看到日志打印时间从13:44:11-14:14:16，删除30分钟后，程序抛出sockect...]]></description><category></category></item><item><title><![CDATA[记一次DataX-MysqlReader性能优化]]></title><link>https://blog.youkuaiyun.com/Shadow_Light/article/details/100749537</link><guid>https://blog.youkuaiyun.com/Shadow_Light/article/details/100749537</guid><author>Shadow_Light</author><pubDate>Thu, 12 Sep 2019 11:31:20 +0800</pubDate><description><![CDATA[一、问题背景

最近在做Datax从阿里云rds数据库到Hive数据同步任务时，发现同步耗时很久，500万的数据同步配置了splitPk并配置了50个线程并发需要212s，任务同步的平均速率一直保持在3-4M/s，而本地的Mysql测试数据库同步时不分片的平均速率就能到20M/s。

二. 集群环境

Rds环境：8000iops; 8core; 16g内存

分片字段类型：bigint类...]]></description><category></category></item></channel></rss>