自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 我用Mybatis的方式封装了OLAP查询!

*** OlapMapper注解* * - 用在整个Dao文件上表示所有的方法均走缓存* * - 用在某个具体方法上面修改该方法的缓存配置*/@Component。

2024-05-22 17:35:51 367

原创 JUC:通过PrintAB管中窥豹

经典面试题PrintAB

2023-07-04 14:25:16 194

原创 理解CAP理论

了解分布式基本指导理论 CAP,能帮助我们设计更好的分布式系统

2022-10-10 16:10:51 1114 1

原创 Kafka: 异常知其所以然

kafka踩坑记录

2022-10-09 18:27:11 1064

原创 RPC核心原理

RPC协议拆解

2022-10-09 18:04:39 1479

原创 Redis核心技术

redis核心技术,数据结构和如何存储,IO模型,分布式集群的实现.

2022-02-23 17:35:34 526

原创 Spark 浅谈Spark中的各种join

众所周知,Join的种类丰富:按照**关联形式(**Join type)划分:有内关联,外关联,左关联,右关联,半关联,逆关联等,由业务逻辑决定的关联形式决定了Spark任务的运行结果;按照关联机制(Join Mechanisms)划分:有NLJ(Nested Loop Join) , SMJ(Sort Merge Join)和HJ(Hash Join),由数据内容决定的实现机制,则决定了Spark任务的运行效率;关联形式Spark支持的关联形式:关联形式Join Type关键字

2022-02-16 16:19:49 2863

原创 Spark : 多线程提交优化多Job任务

介绍在日常业务中,spark常见的就是通过路径通配符*,{}等方式一次读取多个文件,一次批处理将这些文件做一个大job写入Hive或者ODPS,笔者最近在用Spark读取Hudi的文件时候发现了一个诡异的文件丢失Bug:一次读入所有文件夹会有部分文件夹丢失,一开始怀疑是这部分文件夹本身有损坏,但是用spark单独读取该文件夹的时候发现数据又不会丢失.既然一次job会丢数据,那么不妨按文件夹拆分job,每个job执行单个任务,常见就是for循环去遍历所有文件夹挨个执行,但是效率过低需要六个小时,在资源

2021-11-19 13:57:37 1883

原创 Jpa自动建表浅谈,造一个轮子

在Spring项目中,偷懒的话可能需要用到jpa去自动建表,一张遵循阿里巴巴Java开发规范的表,应该具备(主键ID,创建时间,修改时间)这三个通用属性.也就是说,所有的表都应该有如下sql:create table xxx if not exists ( id int not null auto_increment, created_at timestamp default current_timetamp, updated_at timestamp default curre

2021-11-12 16:02:11 1408 1

原创 Kafka基础

Kafka 基础Command Line命令Topic列举kafka-topics.sh --zookeeper localhost:2181/kafka --list查看kafka-topics.sh --zookeeper localhost:2181/kafka --describe --topic test注: describe可以列举多个kafka topic,如果不指定topic 可以看到所有topic的详细信息创建kafka-topics.sh --zookeep

2021-09-27 17:32:37 86

原创 flink + kafka 同步binlog的一次关于数据顺序的实践

场景说明​ 业务部门的Mysql数据使用阿里DTS(数据传输工具)上报了binlog日志。对于数仓部门有两个需求从DTS将数据,只保留type(insert,delete,update)跟record到kafka方便多方消费;为了验证Kafka准确性,数仓部门也消费kafka数据落地到Hologres,对比hologres与mysql原表保证完全一致。问题DTS端并行度为1,但是ETL过程因为下游算子有多个并行度,有可能出现数据乱序(DTS->Kafka乱序)消费Kafka的时候由

2021-09-17 14:43:23 1801

原创 Flink踩坑记录

说明gradle项目+scala 2.11+java8+flink 1.12出错代码:kafkaSource.assignTimestampsAndWatermarks(WatermarkStrategy .forBoundedOutOfOrderness[JSONObject](Duration.ofSeconds(10)))报错信息:Static Methods in interface require -target:jvm-1.8从报错看是scala尝试调用Java接口中的静

2021-09-16 16:23:57 356

原创 spark配置速查

配置项五花八门?那就整理一下!* CPU相关1. spark.cores.max集群分配给spark的最大CPU数2. spark.executor.coresExecutor内划分的CPU- Core,一般是2~4个比较合适3.spark.task.cpus执行每个Task的CPU数量,一般都是1不用动4. spark.default.parallelism参数说明:该参数用于设置每个stage的默认task数量。这个参数极为重要,如果不设置可能会直接影响你的Spark作业性能。参数

2021-09-02 15:47:54 861

原创 Spark广播变量

Spark广播变量1. 什么是广播变量?广播变量(Boardcast)是Spark中应对shuffle造成的性能变慢的有效克制手段,它是一种分发机制,一次性封装目标数据结构,以Excutor为粒度做数据分发。数据分发数=Excutor数1.1 如何理解广播变量需求: WordCount升级版,统计所有文件里,指定单词的数量。WordCount V1.0val dict = List("spark","java","scala","python")val words = spark.spar

2021-08-24 17:58:00 1416

原创 Spark 与 OSS

Spark 与 OSS前言因为公司使用的是阿里云全家桶,OSS基本上就是唯一的神,取代了HDFS成为统一文件系统,n多的数据也通过阿里亲儿子Flink接到了数仓,但是因为上报方偶尔一波离谱数据,似乎是在做压测?而我们Flink开发同学图省事没有做错误处理,导致flink大姨妈的时候,重启消费数据重复(这里也看得出来所谓的Exact-Once也不是完全端到端精确,假如sink跟source没有特殊处理的话还是有重复的).spark: 你们要抓的是鲁迅flink,关我周树人spark什么事?,流批不分家

2021-08-20 15:08:09 968

原创 python进阶--解锁更多使用python的姿势

python进阶*args和**kwargspython的可变参数,比起java要讨喜的多,一个可变参数的方法,解决了java的n多方法重写,有这么好用的特性,不得安排起来吗?使用场景是预先不知道调用者会传入多少参数的时候注: *args 和 **kwargs 并不是唯一写法,如果你喜欢,可以写成 *vars , 以及 **vars*args*args用来接收一个有序的参数列表,在方法内部可以把args当做list来调用比如,内置的sum只能求可迭代列表的和,我们想要自己定义一个求和方

2021-04-14 11:49:19 251 1

原创 Spring Boot 使用Kotlin自定义注解校验

kotlin 简化aop写法,实现加密验证和ip拦截

2021-04-07 09:51:27 555

原创 python一行代码一个需求系列

记录被python一行代码KO的需求:字符串/数组等长切割当一行数据量过大,想要切成n行,每行长度为L?把列表n等分成二维列表,每个列表长度为Ln_part_li = [ li[i:i+L] for i in range(0,len(li),L) ] 对上述代码的解释:利用python超级好用的切片,i为每次切割时的开始位置。只要用range()构建出每次切割时候的开始位置即可。满足多个条件中的任意一个条件目标字符串以任一满足条件的字符串开头检测字符串是否有合法headpytho

2021-04-01 22:47:47 148

原创 JVM学习笔记(三):运行时数据区

JVM参数说明参数说明默认值-Xss调整虚拟机栈内存各系统默认值不同-Xms,-Xmx堆初始大小和堆最大容量,绝大多数情况下把这两个数值设置成一样物理内存的1/64,1/4-XX:NewRatio老年代跟新生代的容量比例2-XX:SurvivorRatio新生代中Eden占据总内存(视为10份)的份量8-XX:+PrintGCDetails打印垃圾回收细节-XX:TLABWasteTargetPercent设置TLAB空间占Eden

2021-03-31 23:25:30 139 1

原创 JVM学习笔记(二):类加载器

2. 类加载子系统2.1 内存概述类装载器:将字节码文件加载到内存中;2.2 类加载器自定义类加载器->AppClassLoader(系统类加载器) -> ExtClassLoader(扩展类加载器) -> BootstrapClassLoader(引导类加载器)引导类加载器BootstrapClassLoader使用C/C++语言实现的,嵌套在JVM内部,无法通过Java代码获取用来加载核心类库($JAVA_HOME/jre/lib/rt.jar,resour

2021-03-11 23:30:31 89

原创 JVM学习笔记(一): 初识JVM

JVM1. 简介Java: 作为TIOBE长期霸榜的编程语言,Java因为其跨平台,庞大的用户群体和软件生态,是最受推崇的语言,是一种程序员必学招式之一;(跨平台的语言)JVM: "Write once,Run everywhere"的基石.(跨语言的平台:除了Java,还能运行Kotlin,Clojure,Groovy,Scala,Jython,JRuby,JavaScript 只要这些语言的编译器生成的字节码文件,符合JVM的规范即可)Java不是最强大的语言,JVM是最强大的虚拟机1.1.

2021-03-11 23:21:51 116

原创 计算机网络整理(三): 传输层

TCP协议1.1 什么是TCP协议TCP(Transmission Control Protocol)传输控制协议,是传输层一种面向连接的,可靠的,基于字节流的协议,用来保证数据的可靠传输.TCP位于应用层跟网络层之间,保证应用数据成功在网络之间的可靠传输.TCP并不能保证数据一定会被对方接收到,因为这是不可能的,如果有可能,就把数据传递给对方,实在没办法就放弃重传并且终端连接来通知用户,因此TCP并不是100%可靠的协议,它提供的是数据的可靠递送或故障的可靠通知.那么TCP是如何保证数据传输.

2021-02-25 14:17:57 258

原创 计算机网络整理(二): 应用层(应用层+表示层+会话层)

1. HTTP协议HTTP(Hyper Text Transfer Protocol: 超文本传输协议) 是一种简单的请求 - 响应的应用层协议,被用于在 Web 浏览器和网站服务器之间传递消息。HTTP 使用 TCP(而不是 UDP)作为它的支撑运输层协议。其默认工作在 TCP 协议 80 端口,HTTP 客户机发起一个与服务器的 TCP 连接,一旦连接建立,浏览器和服务器进程就可以通过套接字接口访问 TCP。客户机从套接字接口发送 HTTP 请求报文和接收 HTTP 响应报文。类似地,服务器也是从套接

2021-02-24 11:58:01 1263

原创 计算机网络整理(一): 协议层次以及它们的服务类型

1.三种不同的模型标准五层体系的协议结构是综合了 OSI 和 TCP/IP 优点的一种协议,包括应用层、传输层、网络层、数据链路层和物理层。其中应用层对应 OSI 的上三层,下四层和 OSI 相同。五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是 TCP/IP 四层体系结构。1.1 OSI模型OSI(Open System Interconnection Model): 开放式系统互联模型,是ISO(国际标准话组织)提出的世界范围内的网络互联标准框架,在OSI模型中,网络体系架构被分为7层

2021-02-24 11:54:00 1127

原创 (算法)深度优先搜索

深度优先搜索概述[一条路走到底,不撞南墙不回头][撞南墙]有两种情况:①遇到了边界条件,②遇到了已经走过的路深度优先的另一种结束条件,就是找到了目标出口深度优先遍历的本质就是穷举常见的深度优先搜索接下来根据刷题记录,来学习深度优先搜索算法:树的深度优先遍历[二叉树最大深度][https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof/]给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点

2021-02-22 17:23:09 1724 1

原创 Flink 学习记录(二) DataStreamAPI①

从WordCount开始类似于学习任何变成语言的Hello World一样,大数据框架的Demo通常从Word Count开始,看一看Flink 是怎么做Word Count的吧~//DataStrem Api Word Countimport org.apache.flink.api.common.functions.FlatMapFunction;import org.apache.flink.api.java.tuple.Tuple2;import org.apache.flink.stre

2021-01-28 11:00:27 135

原创 Flink学习记录(一) 欺诈性校验

Flink 欺诈校验 V1项目构建mvn archetype:generate \-DarchetypeGroupId=org.apache.flink \-DarchetypeArtifactId=flink-walkthrough-datastream-java \-DarchetypeVersion=1.11.0 \-DgroupId=frauddetection \-DartifactId=frauddetection \ -Dversion=0.1 \-Dpackage=sp

2021-01-19 17:13:59 603

原创 Java 注解

什么是注解注解=注释+解释对于代码编写者或阅读者来说,注解更像是一种特殊的注释,比如lombok中常用的@Data,我们很快就在脑海中会形成该类是pojo/entity类,对于解释器来说,注解是开发者对于解释器的传递的一种信息,通过反射机制,注解可以让代码更加优雅;元注解元注解是Java内置的,用来解释注解的注解;@Target : 规定注解的使用范围@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.AN

2021-01-16 17:43:23 78

原创 Python 脚本命令行定制参数——系统模块getopt

在使用linux命令的时候,如果不知道命令用法,可以使用命令加–help、-h去查看帮助,–list、-l查看列表,–version、-v查看当前命令/程序版本,那么这些在同样是脚本的python中如何实现呢?话不多说见代码 custom_option.py# ! /usr/bin/env python# coding=utf8import sysimport getoptVERS...

2020-04-14 16:38:03 143

原创 hive 查出A(每天记录)表有而B(历史)表没有的数据(适用于增量添加数据)

问题描述有的表每天会记录服务器当天的记录,每天会收集当天记录到大数据仓库当中,作为数据工作者的我们,不仅要保证不漏掉历史记录,而且要避免冗余存储,我们把每天都传过来的日数据表称为A表,存储所有记录的表称为B表。插入新增或者有变化的sqlinsert into table history_table select A.col1,A.col2,A.col3 .... ,A. colN from...

2019-12-10 18:14:43 1251

原创 python常用模块之日志封装——logging

中小型项目封装的日志类项目结构utils包里面包含项目常用工具{mysql连接工具类,配置文件解析类,日志配置log类 },将log输出到log目录下,可封装log配置如下,该配置使log日志每天生成一个,并在项目运行的终端打印log。Logging 封装# _*_ coding: utf-8 _*_import loggingimport os.pathimport tim...

2019-11-13 10:22:40 1399

原创 python常用模块之时间日期——time/datetime

time/datetime模块作为不需要额外安装的python扩展模块,能很好的用于各种带有时间需求的场景中,以下是本人在代码开发过程中经常用到的场景。获取当前时间,并格式化输出,Python时间格式化参数:符号 | 含义—|---%y |两位数的年份表示(00-99)%Y |四位数的年份表示(000-9999)%m |月份(01-12)%d |月内中的一天(0-31)%H ...

2019-05-27 10:49:53 587

原创 python 常用模块之——pymysql

pymysqldemo代码样例,暂时先写查询的,增删改后续再添加;通用部分无论是增删改查,都需要先建立数据库连接,创建游标import pymysql#建立一个mysql的conn,返回Connetion对象conn = pymysql.connect( host = 'localhost', user ...

2019-05-24 15:31:33 128

原创 Java中的各种Map的区别

HashMaphashMap 是最常用的Map,根据键的HashCode值存储数据,可以根据键直接获取它的值,具有很快的访问速度,遍历时候的顺序是完全随机的。HashMap只允许一个键为Null,允许多个值为Null;特性: 完全随机优点: 随机访问,取值速度快缺点: 多个线程同时写HashMap可能导致数据不一致,如果需要同步,使用Collection的synchronizedMap方...

2019-04-25 09:57:58 3040 1

原创 我用mac当极客系列之——IDEA

说明:IDEA写java、scala的非常好用的智能编辑器,这个博客用来记录我使用过程中提高效率的小tips~快速打印字符串,变量变量名+.sout比如,测试的时候我想知道json长啥样,一般来说会System.out.println(json),如此常见的操作,IDEA早就想好了更快的方式,json.sout+回车就行了。可迭代对象快速打印如果是一个List呢?要不要for...

2019-04-23 17:01:28 163

原创 Hadoop 生态组件初探系列之——HDFS

HDFS简要概括HDFS(Hadoop Distribute File System),从它的英文全称拆开理解如下:Hadoop : 它是Hadoop的组件,言简意赅,其实不只是组件,它还是hadoop的核心,基础;Distribute : 分布式的,说明它能多台机器共用;File System: 本身是一个文件系统,类似于linux的文件系统;在hdfs集群中,机器被分为存储元数...

2019-04-23 16:03:09 179

空空如也

空空如也

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

TA关注的人

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