<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[csa121的博客]]></title><description><![CDATA[记录打杂生活]]></description><link>https://blog.youkuaiyun.com/csa121</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; csa121]]></copyright><item><title><![CDATA[StarRocks列转行函数unnest]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/129427921</link><guid>https://blog.youkuaiyun.com/csa121/article/details/129427921</guid><author>csa121</author><pubDate>Thu, 09 Mar 2023 18:05:04 +0800</pubDate><description><![CDATA[在使用StarRocks引擎做数据开发时，会遇到一些列转行的场景，可以使用unnest函数]]></description><category></category></item><item><title><![CDATA[flink checkpoint超时问题排查方法]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/119418052</link><guid>https://blog.youkuaiyun.com/csa121/article/details/119418052</guid><author>csa121</author><pubDate>Thu, 05 Aug 2021 15:07:12 +0800</pubDate><description><![CDATA[一般来讲，checkpoint配置10s-60s都是合理的，默认的超时时间是600s，在业务逻辑不复杂的情况下，极少会出现超时的情况
如果发生了超时。就需要先定位到具体的机器和进程。
然后再根据业务场景排查具体是什么问题引起的超时。
flink集群和上下游组件正常运行的情况下，由于业务逻辑处理或者数据问题导致超时的概率应该在99%以上，所以在排除系统问题的情况下，直接从业务逻辑定位问题是正确的方向。
排查思路分3步：
1. 先找到超时的subtask序号
如果超时正在发生，可以直接在

这里看到超时的那一条]]></description><category></category></item><item><title><![CDATA[jvm学习笔记6--HotSpot的算法细节实现]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/106653392</link><guid>https://blog.youkuaiyun.com/csa121/article/details/106653392</guid><author>csa121</author><pubDate>Sun, 26 Jul 2020 19:00:44 +0800</pubDate><description><![CDATA[前面学习了怎么判别要回收的对象，以及垃圾回收的一些方式、标记-清除算法、标记-复制算法、标记-整理算法。现在看看我们每天使用的HotSpot虚拟机中算法的细节实现。
根节点枚举
前面已经学习到可作为GC Roots的一些变量或者属性，但是实际上在查找过程中要做到高效也是很困难的，要逐个检查以这里为起源的引用肯定要消耗不少时间。
而且迄今为止，所有收集器在枚举根节点这步骤的时候都是需要暂停所有的用户线程的，这时就会面临和前面整理内存碎片算法中”Stop The World“同样的问题。
目前主流的jvm使用的]]></description><category></category></item><item><title><![CDATA[jvm学习笔记5--垃圾回收算法]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/106535188</link><guid>https://blog.youkuaiyun.com/csa121/article/details/106535188</guid><author>csa121</author><pubDate>Thu, 04 Jun 2020 00:35:39 +0800</pubDate><description><![CDATA[垃圾回收算法可分为2类：
* 引用计数式垃圾收集（直接垃圾收集）
* 追踪式垃圾收集（间接垃圾收集）
java主流的虚拟机都是采用追踪式垃圾收集的方式，我们主要学习这个。
分代收集

弱分代假说：绝大部分对象都是朝生夕灭的
强分代假说：熬过越多次垃圾收集过程的对象就越难消亡
跨代引用假说：相对于同代引用只占极少数

第3条是根据前2条假说逻辑得出的隐含推论：存在相互引用的2个对象，是应该同时生存或者消亡的。举个例子，如果某个新生代对象存在跨代引用，由于老年代难以消亡，该引用会使得新生代对象在回收时同样存活，]]></description><category></category></item><item><title><![CDATA[jvm学习笔记4--堆区和方法区的对象回收判别]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/106509808</link><guid>https://blog.youkuaiyun.com/csa121/article/details/106509808</guid><author>csa121</author><pubDate>Wed, 03 Jun 2020 00:59:17 +0800</pubDate><description><![CDATA[复习
前面有提到jvm的内存模型，我们知道，程序计数器、虚拟机栈和本地方法栈是和线程同生共死的，每个栈帧的大小在类结构确定下来之后就都是已知的。因此这几个区域的内存分配和回收都是有确定性的。
然而，java堆和方法区却有着显著的不确定性。只有程序在运行期间，我们才知道具体要创建哪些对象，创建多少对象，分配多少内存。这部分的内存分配和回收都是动态的。所以垃圾回收器所关心的就是这部分内存的管理。
复习完之前的内容，我们就知道了垃圾回收器的关心重点在于堆内存的对象管理和方法区管理。
在垃圾回收器回收内存之前，要做]]></description><category></category></item><item><title><![CDATA[jvm学习笔记3--对象的内存布局]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/106246843</link><guid>https://blog.youkuaiyun.com/csa121/article/details/106246843</guid><author>csa121</author><pubDate>Wed, 20 May 2020 23:51:04 +0800</pubDate><description><![CDATA[今天是520，不管有没有对象，都要学习呀
在我们经常使用的HotSpot虚拟机中，对象在堆内存中的布局可以分为3个部分：

对象头
实例数据
对齐填充

对象头
对象的对象头包含2类信息：
用于存储对象自身的运行时数据
如哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程的id、偏向时间戳等。这些数据的长度在32位和64位虚拟机中，分别占用32bit和64bit，官方称之为"Mark Word"
mark word如图所示：

类型指针
即对象指向它的类型元数据的指针，jvm通过这个指针确认该对象是哪]]></description><category></category></item><item><title><![CDATA[jvm学习笔记2--对象的产生]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/106131339</link><guid>https://blog.youkuaiyun.com/csa121/article/details/106131339</guid><author>csa121</author><pubDate>Fri, 15 May 2020 00:23:50 +0800</pubDate><description><![CDATA[提出问题
在java的世界中，我们频繁的会使用对象。创建一个对象对我们而言，就是一行代码：
	User user = new User("hello world");

在这行代码的背后，jvm都做了哪些工作呢？学习总结下。
对象创建过程
当jvm在执行字节码指令的时候，遇到一条字节码new指令的时候，做以如图所示的以下工作：

检查常量池
先去检查下这个指定的参数在常量池中是否可以定位到一个类的符号引用，并且要去检查这个符号引用所代表的类是否已经被加载、解析和初始化过。有的话，就直接引用；没有的话就要执行]]></description><category></category></item><item><title><![CDATA[jvm学习笔记1--内存模型]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/106087904</link><guid>https://blog.youkuaiyun.com/csa121/article/details/106087904</guid><author>csa121</author><pubDate>Wed, 13 May 2020 23:46:54 +0800</pubDate><description><![CDATA[Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途，以及创建和销毁的时间，有的区域随着虚拟机进程的启动而一直存在，有些区域则是依赖用户线程的启动和结束而建立和销毁。如下图所示：


...]]></description><category></category></item><item><title><![CDATA[快速使用django搭建web服务]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/83386572</link><guid>https://blog.youkuaiyun.com/csa121/article/details/83386572</guid><author>csa121</author><pubDate>Thu, 25 Oct 2018 21:09:49 +0800</pubDate><description><![CDATA[django是一个python语言开发的web框架，2008年正式发布，目前最新版本是2.1.2。
主要的组件以及特点

强大的数据库功能
自带后台管理功能
优雅的网址
模板系统
缓存系统
国际化

1 搭建项目
安装python2.7或者python3均可，安装pip（默认都有啦）
1.1 安装django
默认安装最新版
(sudo) pip install django
指定版本安装
(su...]]></description><category></category></item><item><title><![CDATA[google的tensor2tensor的学习和使用]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/79605215</link><guid>https://blog.youkuaiyun.com/csa121/article/details/79605215</guid><author>csa121</author><pubDate>Sun, 18 Mar 2018 21:59:07 +0800</pubDate><description><![CDATA[前言


tensor2tensor（t2t）是google基于tensorflow新开源的深度学习库，该库将深度学习所需要的元素（数据集、模型、学习率、超参数等）封装成标准化的统一接口，在使用其做模型训练时可以更加的灵活。




当前环境


mac 10.13.3
tensorflow 1.6.0
tensor2tensor 1.5.5




安装模块


源码下载：https://git...]]></description><category></category></item><item><title><![CDATA[flume1.8在线上业务中的使用和总结]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/79392989</link><guid>https://blog.youkuaiyun.com/csa121/article/details/79392989</guid><author>csa121</author><pubDate>Tue, 27 Feb 2018 20:37:05 +0800</pubDate><description><![CDATA[什么是flume？


flume是一个日志采集、聚合和传输的系统 



作用是什么？


作用就是将业务集群上各个机器上的日志收集起来，对数据做集中处理。




部署文档


最新版的flume1.8，请参官网 http://flume.apache.org/FlumeUserGuide.html 的使用说明，真的很详细。
网上也有flume1.7的搭建教程，Google一下就可以，搭建过程...]]></description><category></category></item><item><title><![CDATA[python数据清洗流程和注意点]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/78545470</link><guid>https://blog.youkuaiyun.com/csa121/article/details/78545470</guid><author>csa121</author><pubDate>Wed, 15 Nov 2017 21:57:42 +0800</pubDate><description><![CDATA[应用python来做数据清洗业务是最好的选择，简单的数据清洗流程分为三部分，前期需求分析、输出设计，中期的开发和调试，后期的测试和数据校验。需要熟练掌握python中的dict、list和set集合来处理简单的数据需求。]]></description><category></category></item><item><title><![CDATA[scrapy写爬虫注意事项]]></title><link>https://blog.youkuaiyun.com/csa121/article/details/77688742</link><guid>https://blog.youkuaiyun.com/csa121/article/details/77688742</guid><author>csa121</author><pubDate>Tue, 29 Aug 2017 21:53:50 +0800</pubDate><description><![CDATA[前段时间有个scrapy爬虫的需求，简单介绍下在学习scrapy这中间踩的坑吧。以及需要注意的地方。]]></description><category></category></item></channel></rss>