自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

南国的技术栈

学无止境,沉淀下来让自己充电

  • 博客(114)
  • 资源 (4)
  • 收藏
  • 关注

原创 TiDB经验分享02

前言紧接着上一篇文章TiDB经验分享01 的内容接着往下更新,在上一篇文章中主要论述了TiDB的基础架构和其包含的两种存储引擎 TiKV TiFlash,这一篇我们主要论述TiDB在生产使用的特点 和MySQL的对比 以及TiDB在生产应用中正确的使用方式。TiDB的特点首先南国论述下TiDB 这款数据库的一些优点,具体论述如下:● 与 MySQL 的兼容型比较好,绝大多数 SQL 语句和相关工具都可以直接使用。○ 支持慢查询日志○ 支持和 MySQL 之间的主从同步等功能。○ TiDB 的默

2022-05-31 19:56:18 1167 3

原创 TiDB经验分享01

前言这篇博客是博主根据自己过去一年多工作中使用TiDB的经验分享,最近因为业务增长 遇到TiDB sql慢查询问题,在排查发现并解决问题的过程中 根据自己对TiDB的一些了解和学习 总结出该篇博客。基础知识在讲述某个技术栈的使用时 一般我们需要对该项技术内在的一些原理和基础知识有一定的了解,这里南国假设你之前已经使用过MySQL 并对MySQL的一些基础知识有一定的了解 例如索引 一条SQL内在的执行过程 MySQL集群主从复制 一主多从等等,如果这些内容你还是第一次听到或者没有遇到过 建议你提前在网

2022-05-24 20:34:35 658

原创 Springboot使用Curator 集成zk

前言Curator是Apache提供的一个zk的工具包,简化了 ZooKeeper 的操作。它增加了很多使用 ZooKeeper 开发的特性,可以处理 ZooKeeper 集群复杂的连接管理和重试机制。这里我们使用springboot 集成curator来操作zk。假设你的服务已经正确添加了zk的相关依赖,Curator maveny依赖如下,<!-- curator-framework --><dependency> <groupId>org.apach

2022-03-14 20:56:37 4928

原创 一次记录 flink job 消费kafka 迁移pulsar踩坑过程

背景简述业务上,原有的kafka集群迁移pulsar 后续会下线kafak集群,原有的一些消费kafka topic 的任务和进程需要迁移至pulsar 并下线旧的消费kafka任务。目前在迁移期间,上报的消息会双写到kafka pulsar,消费组的offset二者是独立的。待迁移的flink job 之前flink 版本是 1.9.1(scala 2.12) 消费kafakFlinkKafkaConsumer<String> myConsumer = KafkaConsumerFact

2021-12-31 18:18:04 1963 5

原创 动态规划(DP)及相关经典问题讲解

前言动态规划(DP)是计算机编程算法中非常重要的一个知识点,无论是校招 社招,面试官也经常喜欢出此类的编程题来考察面试者的编程能力, 这篇博客主要是概述一下dp的主要思想 然后重点归纳一下leetcode中 股票交易问题的讲解。DP基础知识DP简单可以总结为“一个模型三个特征”。“一个模型”是指动态规划适合解决的问题的模型,也就是多阶段决策最优解模型(这个模型同时也是回溯 贪心解决问题的模型)。一般用动态规划解决最优问题时,解决问题需要经历多个决策阶段。每个决策阶段都对应着一组状态。然后我们寻找一

2021-10-05 22:48:11 2058 1

原创 spark作业升级到spark3 scala 2.12 踩坑和解决方法

前言因为spark集群的换代升级, 需要从scala 2.11 升级到scala 2.12 spark2升级到spark 3。本篇博客主要讲述南国在将spark 作业升级时遇到的问题和解决办法。具体步骤1.升级spark相关依赖针对于pom文件中类似<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId&gt

2021-01-17 12:00:17 5648 4

原创 Java后台相关知识盘点(持续更新中)

@Repository和@Mapper注解的区别@Mapper注解是mybatis的注解,是用来说明这个是一个Mapper,对应的xxxMapper.xml就是来实现这个Mapper。然后再server层使用@Autowired注解引用进来,会出现这样的情况,但是并不影响使用。这是因为@Autowired是spring的注解,提示找不到相应的bean。@Repository@Repository注解是Spring的注解,使用该注解和@Autowired注解,就不会出现爆红的情况了,原因很简单,因为

2020-10-25 16:33:33 261

原创 Redis基础知识大盘点

前言之前一直想写点Redis的技术文章, 奈何自己之前没有做过太多相关的开发实践 对其研究不够深入 加上工作之后太忙,借着前段时间做过一个简单的需求,这篇文章 南国就Redis的一些必备知识点做了大盘点。概述Redis中文官网标准定义是,Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范

2020-09-20 20:45:40 146

原创 地理位置逆编码解析

前言应用场景:Hive数仓中有一张近三千万条数据的地理位置参考表A,但是表A中 原来的数据字段中仅仅包含了国家信息,地理位置信息没有细化。本篇博客主要就如何快速获取这些数据的具体地理位置信息展开。解决方案:首先,考虑到表A的数据不算特别大,MySQL数据库可以承载这么大的数据。而且MySQL的实时数据查询性能优于Hive,南国考虑首先将数据打出到MySQL,后续在通过读取数据 并调用第三方API解析经纬度信息。数据从Hive中导出到MySQL这里 采取的方案是 使用Spark读取数据并进行MyS

2020-08-22 21:52:37 749

原创 Flink笔记06——浅谈Table API

前言在 Spark 中有 DataFrame 这样的关系型编程接口,因其强大且灵活的表达能力,能够让 用户通过非常丰富的接口对数据进行处理,有效降低了用户的使用成本。Flink 也提供了关 系型编程接口 Table API 以及基于 Table API 的 SQL API,让用户能够通过使用结构化编程 接口高效地构建 Flink 应用。同时 Table API 以及 SQL 能够统一处理批量和实时计算业务, 无须切换修改任何应用代码就能够基于同一套 API 编写流式应用和批量应用,从而达到真正 意义的批流

2020-07-26 21:28:13 477

原创 Flink05——一文了解Flink的Window和Time

前言窗口计算是流式计算中非常常用的数据计算方式之一,通过按照固定时间或长度将 数据流切分成不同的窗口,然后对数据进行相应的聚合运算,从而得到一定时间范围内的统计结果。窗口(Windows)在SparkStreaming Flink中都是非常重要的概念。例如统计最近5分钟内某基站的呼叫数,此时基站的数据在不断地产生,但是通过5分钟的窗口将数据限定在固定时间范围内,就可以对该范围内的有界数据执行聚合处理,得出最近5分钟的基站的呼叫数量。window分类1.Global Window 和 Keyed Wi

2020-06-04 16:38:25 365

原创 Flink笔记04——一文了解State管理和恢复

前言State 一般指一个具体的 Task/Operator 的状态,State 数据默认保存在 Java 的堆内存中。CheckPoint(可以理解为 CheckPoint 是把 State 数据持久化存储了)则表示了一个 Flink Job 在一个特定时刻的一份全局状态快照,即包含了所有 Task/Operator 的状态。常用StateFlink 有两种常见的 State 类型,分别是:keyed State(键控状态)Operator State(算子状态)Keyed Stat

2020-06-04 11:21:46 335

原创 Flink笔记03——一文了解DataStream

前言在前面的博客中

2020-06-04 10:37:48 554

原创 一文了解Shell中的awk命令

前言AWK是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。语法awk [选项参数] 'script' var=value file(s)或awk [选项参数] -f scriptfile var=value fil...

2020-05-15 14:31:18 527

原创 Flink笔记02——单词计数wc和集群部署

前言在上一篇文章Flink笔记01——入门篇讲述了Flink的一些基础知识后,这篇博客,我们结合日常开发,主要介绍一些Flink的基础编程和框架搭建。第一个Flink代码相信学过MR Spark的同学 编写的第一个程序都是单词计数word count,同理 这里南国也是以单词计数作为开始。开发环境(由于之前的博客 很多时候忘记描述这个步骤,作为该系列的基础篇,这次尽可能的在每个地方描述细...

2020-04-16 10:04:38 379

原创 Flink笔记01——入门篇

前言在目前开源的大数据引擎中,流计算有Flink,Storm,Kafka Stream等,批处理(离线计算)有Spark, MApReduce等。而同时支持流处理和批处理的计算引擎,只有两种选择:一个是Apache Spark,一个是Apache Flink。从技术,生态等各方面的综合考虑,Spark 的技术理念是基于批来模拟流的计算(我们习惯将之称为批流处理)。而Flink则完全相反,它采用...

2020-04-14 21:39:45 430

原创 Python随笔——中级篇

前言在讲解了Python中的一些基础知识后,这篇文章主要通过一些编程案例来学会熟练编写python代码。话不多说,来看代码~判断字符串是否为数字判断list中的每个值是否为数字'''@author xjh 2020.3.15'''def is_number(s): try: #如果能运行float(s)语句,返回True (s为为浮点数) float(s...

2020-04-02 10:57:31 229

原创 Python随笔—基础篇

基础语法标准数据类型Python3 中有六个标准的数据类型:Number(数字)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典)Python3 的六个标准数据类型中:不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);可变数据(3 个):List(列表)、Dictionary(字典)、...

2020-04-01 09:11:30 303

原创 一文了解ThreadLocal

1. ThreadLocal的简介在多线程编程中通常解决线程安全的问题我们会利用synchronzed或者lock控制线程对临界区资源的同步顺序从而解决线程安全的问题,但是这种加锁的方式会让未获取到锁的线程进行阻塞等待,很显然这种方式的时间效率并不是很好。线程安全问题的核心在于多个线程会对同一个临界区共享资源进行操作,那么,如果每个线程都使用自己的“共享资源”,各自使用各自的,又互相不影响到彼此...

2020-03-09 22:58:33 304

转载 一文了解消息队列

前言消息队列一直是Java 后端 大数据经常使用的一个重点,不管是新人还是技术专家 都会或多或少的接触和使用过一两个消息队列(Message Queue)。这篇文章,结合南国最近的一些学习收获,总结下消息队列的知识点。一、为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?面试中如果问到这个问题,其实面试官主要是...

2020-03-02 17:56:57 221

原创 SparkCore——详述Spark作业调度

前言我们在之前的博客中讲过,TaskScheduler负责每个具体任务的实际物理调度,DAGScheduler负责将作业拆分成为不停阶段的具体有依赖关系的多批任务,可以理解为DAGScheduler负责任务的逻辑调度。本篇博客,结合这段时间看过的一些书籍,南国在这里重点回顾一下Spark中作业调度的相关知识。作业调度的顶层逻辑概述作业调度的具体工作流程作业调度的基本流程如下图所示:...

2020-02-06 15:29:01 312

原创 postgrepSQL

入库(postgrepSQL远程将某个文件传递到psql某个数据表中)cat RSRP.txt|psql -U dbuser -h 172.17.4.41 -d npgsql_db -Atc "copy gld_20190719_rsrp (x_offset, y_offset, rsrp) from stdin with DELIMITER ’ ’ NUll ‘N.C.’ "根据偏移量up...

2020-02-01 19:24:45 809

原创 了解Java并发的工具类——计数器CountDownLatch和CyclicBarrier,信号量Semaphore,线程间交换数据Exchanger

1. 倒计时器CountDownLatch在多线程协作完成业务功能时,有时候需要等待其他多个线程完成任务之后,主线程才能继续往下执行业务功能,在这种的业务场景下,通常可以使用Thread类的join方法,让主线程等待被join的线程执行完之后,主线程才能继续往下执行。当然,使用线程间消息通信机制也可以完成。其实,java并发工具类中为我们提供了类似“倒计时”这样的工具类,可以十分方便的完成所说的...

2020-01-26 16:50:10 271

原创 MapReduce高级应用——全排序和二次排序

前言尽管现在MapReduce程序在日常开发中已经代码编写已经很少了,但作为大数据Hadoop的三大板块之一,他内在的许多思想也是很多后续框架的基础铺垫。本篇博客,南国重点回顾一下MR中的排序相关知识点。网上关于这个知识点 可能已经有很多的知识介绍,本来不打算写这篇博客。最近一段时间终于抽空看了Hadoop权威指南的大部分内容。于是,本篇博客 南国试着从面试回顾的角度去编写这篇博客。话不多说,...

2020-01-11 20:53:20 576

原创 shell入门使用

前言Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。常见的shell指令echo命令用于向窗口输出文本。使用变量:使用一个定义过的变量,只要在变量名前面加上$符号,还可以加上对变量加上花括号{},变量名外面的花括...

2020-01-07 18:59:28 134

转载 深入剖析Java线程池——ThreadPoolExecutor与ScheduledThreadPoolExecutor

前言这篇文章主要是针对线程池章的一些内容进行补充和中哟啊源代码的解析,关于线程池的一些基础知识我在Java面试07——并发知识点汇总及源码解析已经做了一些总结,所以一些基础的知识点南国在这里有的就不在讲述了。深入剖析系列属于对并发知识的一些地方的详细剖析,所以这里更加侧重于一到两个知识点的详细剖析。这篇博客的总结参考:深入理解Java线程池:ThreadPoolExecutor线程池之Sc...

2020-01-07 15:06:55 1335

转载 一文聊聊ConcurrentHashMap

1.ConcurrentHashmap简介在使用HashMap时在多线程情况下扩容会出现CPU接近100%的情况,因为hashmap并不是线程安全的,通常我们可以使用在java体系中古老的hashtable类,该类基本上所有的方法都采用synchronized进行线程安全的控制,可想而知,在高并发的情况下,每次只有一个线程能够获取对象监视器锁,这样的并发性能的确不令人满意。另外一种方式通过Col...

2020-01-04 17:25:35 132

转载 深入理解读写锁ReentrantReadWriteLock和并发容器CopyOnWriteArrayList

参考文章:ReentrantReadWriteLock1.读写锁的介绍在并发场景中用于解决线程安全的问题,我们几乎会高频率的使用到独占式锁,通常使用jvm提供的关键字synchronized或者juc中实现了Lock接口的ReentrantLock。它们都是独占式获取锁,也就是在同一时刻只有一个线程能够获取锁。而在一些业务场景中,大部分只是读数据,写数据很少,如果仅仅是读数据的话并不会影响数据...

2020-01-01 12:28:54 689

原创 深入剖析阻塞队列BlockingQueue (详解ArrayBlockingQueue和LinkedBlockingQueue及其应用)

1. BlockingQueue简介在实际编程中,会经常使用到JDK中Collection集合框架中的各种容器类如实现List,Map,Queue接口的容器类,但是这些容器类基本上不是线程安全的,除了使用Collections可以将其转换为线程安全的容器,Doug Lea大师为我们都准备了对应的线程安全的容器,如实现List接口的CopyOnWriteArrayList,实现Map接口的Conc...

2019-12-26 18:20:37 2922

转载 深入理解Condition

1.Condition简介任何一个java对象都天然继承于Object类,在实现线程通信的往往会应用到Object的几个方法,比如wait(),wait(long timeout),wait(long timeout, int nanos)与notify(),notifyAll()几个方法实现等待/通知机制,同样的, 在java Lock体系下依然会有同样的方法实现等待/通知机制。从整体上来看O...

2019-12-26 14:29:11 522

转载 深入剖析Lock与AQS

1. JUC的基本结构Java开发人员中,我们一般把java.util.concurrent简称为JUC包,泛指我们日常用到的并发多线程中的知识模块。下图是concurrent包的目录结构图。其中包含了两个子包:atomic以及lock,另外在concurrent下的阻塞队列以及executors,这些就是concurrent包中的精华。从整体上来看concurrent包的整体实现图如下图所...

2019-12-20 17:45:38 315

转载 深入剖析volatile原理

前言这篇文章,南国对Java并发中的一个重要知识点volatile关键字进行重要的剖析,这是继深入剖析synchronized原理 对并发重要的知识点的详细解析。笔者在写这篇博客时候 许多地方参考了java关键字—volatile.md 仔细读完,获益匪浅。1.volatile简介volatile是java虚拟机提供的最轻量级的同步机制。但它同时不容易被正确理解,也至于在并发编程中很多程序员...

2019-12-02 09:18:12 138

原创 BitMap BloomFilter BitSet详解

1. BitMapBitMap利用内存中连续的二进制位,用于对大量数据做去重和查询。例如,给定一块长度为10bit的内存空间,想要依次插入整形数据4,2,1,3,我们按照如下的步骤来做:package BitMap;/** * 位图BitMap实现代码 * @author xjh 2010.01.18 */public class bitmap { public char...

2019-11-16 20:13:05 415

原创 数据库SQL实战全解

牛客网 数据库SQL实战查找最晚入职员工的所有信息select * from employeeswhere hire_date=(select max(hire_date) from employees);查找入职员工时间排名倒数第三的员工所有信息select * from employeeswhere hire_date=(select distinct hire_date fr...

2019-10-21 17:41:30 795

原创 Cloudera Manager HA模式搭建

2 Cloudera Manager HA模式搭建2.1 设置主机和负载平衡器在一个高水平,在单独的主机上设置Cloudera Manager Server和Cloudera Management Service 角色(包括Cloudera Navigator),并确保通过配置的负载平衡器对来自其他Cloudera服务和管理控制台的主机进行网络访问。它主要分为4步:1.为主服务器和辅助服务...

2019-10-06 12:10:41 971 4

原创 Docker入门——基础概念,安装运行Tomcat,MySQL

虚拟机虚拟机可以在一种操作系统里面运行另一种操作系统,比如在 Windows 系统里面运行 Linux 系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。虽然用户可以通过虚拟机还原软件的原始环境。但是,这个方案有几个缺点。(1)资源占用多虚拟机会独占一部分内存和硬盘空间。它运行的时候,其他程序就不...

2019-09-25 09:31:12 170

原创 spark代码 spark-submit提交yarn-cluster模式

worldcount yarn-cluster集群作业运行上面写的是一个windows本地的worldcount的代码,当然这种功能简单 代码量少的 也可以直接在spark-shell中直接输scala指令。但是在项目开发 企业运用中,因为本地的资源有限 使得无法发挥出spark的真正优势。因此 在这里 我就spark代码在集群中运行 做一些补充讲述。我使用的环境是: idea编译器 jdk...

2019-07-15 21:20:10 3799 1

原创 Mariadb互为主从(双主模式)配置

前言这段时间 一直在Cloudera Manager集群上配置高可用的Mariadb服务。今天花一点记录一下自己的配置过程 希望后续的读者看到后 在遇到相同业务需求时具有参考价值。以往我们在配置MySQL卓仓复制时,一般而言 在配置到一主 一从 能够实现MySQL的读写分离 就差不多了,因为导师的要求 这里要配置一个互为主从的MySQL服务,也就是我们常说的双主模式。A B之间互相同步数据,...

2019-07-10 17:42:07 4767

原创 kafka入门

基本概念框架介绍Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。首先让我们看几个基本的消息系统术语:名称说明Topic主题,可以理解为一个队列Partition分区,为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个parti...

2019-06-08 21:24:32 158

原创 大数据面试题——Zookeeper篇

前言Zookeeper,中文名又称为动物园管理员。他属于Hadoop生态圈中重要的组件框架之一。主要是起到分布式协调调度的作用,日常中我们可能经常使用到zookeeper,但是他并不像Hadoop Spark会经常进行应用编程的开发,也不像Hive HBase那样进行数据的交互式查询操作等。关于Zookeeper,我们更多的是在集群中搭建Zookeeper集群来进行 配置管理 集群管理 或者是...

2019-05-27 11:17:55 779 1

跳表 java实现

跳表 java实现版本,内含两个java文件。原文讲解链接:https://blog.csdn.net/weixin_38073885/article/details/86690517

2019-01-29

MapReduce编程-新浪微博内容相关(内容 广告有效推荐)

案例的作用是根据根据每个用户发的多条微博 得到词条在当前用户中的权重,以方便我们推荐相对应的内容或广告

2018-11-17

mapreduce编程 好友推荐

在qq 微博等众多社交平台中,用户a有n位好友,在这n位好友里面的好友中有m位不是a的直接好友(例如用户b)。但是通过朋友的朋友,a与b之间有多位共同好友,换而言之,a是b可能认识的人。

2018-11-01

HDFS JavaAPI

利用java api实现HDFS增删查改文件和文件目录,运行代码首先eclipse集成hadoop环境 maven项目pom.xml导入相关依赖

2018-09-17

空空如也

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

TA关注的人

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