自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zl

上善若水。水善利万物而不争,处众人之所恶,故几于道。

  • 博客(143)
  • 资源 (2)
  • 收藏
  • 关注

原创 ElasticSearch的RestClient结合Sniffer提高可用性

基于此,也引出一个潜在的可用性问题,即代码没有做到可以平稳支持ElasticSearch集群的重启,不局限于可预知的升级导致的重启,包括集群自身不稳定导致的集群节点变化如某节点的CPU和内容过高、所在机柜或机房故障等不可预期情况。也可通过以下方式更改是通过HTTP还是HTTPS,并且可以设置请求超时时间,避免因为拉取节点时间过长,影响服务恢复的速度或恢复失败,尽管设置超时时间后可能获得的节点数少于集群中的节点数。但是在重启集群的过程中,服务端代码却出现了大量错误,如下所示。

2023-12-26 15:42:18 821

原创 Spark使用mariadb驱动读取AWS Aurora所有结果数据行都是列名

如上所示,所有的数据行内容都和列名是一样的。

2023-08-01 22:37:54 170

原创 《重构:改善既有代码的设计》学习总结

任何一个人都可以写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员名词形式,对程序内部结构的一种调整,目的是在不改变程序外部行为下,提高其可理解性,降低其修改成本。动词形式,使用一系列重构准则,在不改变程序外部行为的前提下,对代码作出修改,以改进其内部结构。

2023-07-11 09:29:14 243

原创 数据库中间件对比

相当于把中间件作为一个独立的服务了,它将接收到的SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。中间件在Driver或者连接池的基础之上,增加了一层封装。我们使用时,以Java开发为例,需要先引入一个jar包。中间件接收持久层产生的sql,同样对sql进行分析等操作,然后才落实到具体的库上。

2023-07-03 21:20:29 269

原创 延迟队列商业版RocketMQ和Pulsar的对比

和开源RocketMQ内置18个不同周期的延迟队列,最小1s,最大2h,采用对每个队列数据轮训检测的方式消费不同。商业版延迟消息使用类Mysql存储,持久到磁盘,官网显示最大延迟7天,阿里沟通支持最大三十天的任意延迟。4k为一条消息的基本计数,16k的延迟消息(高级消息),没秒发送10条则对应16/4*5*10= 200TPS。专业版支持流量预留,存储按量收费,无上限(标准版不支持流量预留,超过流量直接限流)专业版和标准版在容灾方面的区别,都是多AZ容灾,RTO不一样。本身支持多AZ,在创建的时候无感知。

2023-06-27 11:58:31 1305 1

原创 通过Redisson的管道批量操作来提高Redis Io效率

在刷1000万Redis Hash的Spark Job中, 通过使用Redisson Batch方式, 一次执行2万个hash的情况下,跑完1000万Redis Hash在本地启动的模式下,只用了10分钟就执行完毕,平均1次Batch(2万个Hash)用时1.2s。在这种场景下,redis的pipline模式能够极大的提高刷数效率, 有时需要一天完成的redis刷数任务, 在一次性执行2W条redis命令时可以达到极快的速度。初始化RedissonClient (简略描述)使用完关闭redisson。

2023-06-26 22:29:08 841

原创 如何清理Git提交历史不留痕提交到新的仓库

Git项目迁移过程中,不希望将原有的提交记录引入到新的Git项目中,可以按如下方法操作。

2022-08-23 21:06:44 1204

原创 国际化时区-ElasticSearch时区处理

一、存储格式二、查询统计三、使用建议参考资料一、存储格式JSON 本身没有date类型,Elasticsearch将设置了时区的date转换为UTC时间,将没有设置时区的date直接设置为UTC时间,以long型时间戳存储。官网文档《Date datatype文档》内容如下Date datatypeJSON doesn’t have a date datatype, so dates in Elasticsearch can either be:Internally, dates are converted

2022-07-08 09:39:41 1617

原创 国际化时区-北美时区介绍

产品出海,势必要涉及到时区问题,不了解主要地区的时区,那产品展示层上给用户呈现的时间就会南辕北辙,让用户难以使用和产生误解。做好海外产品,也需要了解当地的风土人情,而时区就是首当其冲需要了解的。......

2022-07-06 20:39:49 3316

原创 Flink 日常问题总结

目录1、Hadoop相关2、启动时出现missing parameter type错误3、处理Protobuf对象4、Flink-kafka Producer问题5、static关键字导致加载config为空问题6、序列化异常1、Hadoop相关javax.xml.parsers.FactoryConfigurationError: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be .

2021-02-10 15:56:02 470

原创 Spark任务的thrift冲突问题(logging-assembly)

因为项目是使用到了org.apache.thrift,在任务执行过程中,遇到了各种因thrift引起的jar包冲突问题,第一个想到的是shade<relocation> <pattern>org.apache.thrift</pattern> <shadedPattern>shade.org.apache.thrift</shadedPattern></relocation>最后一个stage解决了,但是由.

2020-10-21 21:10:45 372

原创 CDH添加新主机 - 主机上未检测到 Java JDK。

在cloudera manager管理界面上操作往CDH集群添加新主机时,跳过JDK安装的步骤,因为服务器一般都会安装有JDK全部步骤完成后,到主机配置也发现由如下提示:“主机上未检测到 Java JDK。”如果不解决这个问题,角色将会无法启动。在配置页面搜索java,配置对应路径,保存配置即可...

2020-09-29 18:40:21 2110

原创 Spark执行失败-SparkContext did not initialize after waiting for 100000 ms

执行其刚写完的项目进行测试时,遇到以下问题ERROR yarn.ApplicationMaster: SparkContext did not initialize after waiting for 100000 ms. Please check earlier log output for errors. Failing the application检查代码(Scala),发现其将SparkContext的创建写在了class中,并且其之前还有很多其他的业务逻辑代码object S.

2020-09-18 20:31:10 1094

原创 分析GC日志和Jstack文件的网站

GC日志gceasy.ioJstack日志fastthread.io

2020-09-11 16:49:27 571

原创 IDEA 下如何本地运行SPARK程序

1、主要是在VM options这里配置 -Dspark.master=local,即可直接在本地运行spark程序2、如果代码中需要传递参数,通过CommandLine和Options来解析,需要在Program arguments这里进行配置即可,比如--parameter xx --parameter2 xxx...

2020-08-18 14:33:36 1845

原创 Spark读取hdfs文件并写入hive表中

package com.jobimport org.apache.commons.cli.{BasicParser, CommandLine, Options}import org.apache.spark.sql.{Row, SparkSession}import org.apache.spark.sql.types.{StringType, StructType}case class Transfer2HiveConfig(query_day: String)object Transf.

2020-07-15 19:18:39 2964

原创 进入docker环境的shell脚本

$/bin/basharr=$(docker ps|awk '{print $NF}')index=-1echo "---------------"for i in ${arr[@]}do index=$((index+1)) echo " [$index] $i"doneecho "---------------"#docker ps|awk '{pri...

2020-05-06 19:18:13 1429

原创 LeetCode 234. 回文链表

题目信息原题地址请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true解法一class Solution { public boolean isPalindrome(ListNode head) { // 链表为空,或者只有一个元素,认...

2020-01-14 20:26:19 153

原创 LeetCode 27. 移除元素

题目信息原题地址给定一个数组 nums和一个值 val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, ...

2020-01-06 14:58:04 94

原创 LeetCode 26. 删除排序数组中的重复项

题目信息原题地址给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的...

2020-01-06 14:37:44 117

原创 Flink Kafka Connector 关于Partition动态发现

背景Kafka的topic进行扩容,出现丢数据的情况,只能通过重启的方式来解决。解决方法KafkaSource创建的时候,在Properties中,通过设置参数flink.partition-discovery.interval-millis 来打开自动发现功能。此参数的功能是间隔多久(interval)获取一次kakfa的元数据。默认是关闭的,只要设置interval大于0...

2019-12-27 18:03:12 4499 3

原创 LeetCode 50. Pow(x, n)

题目信息原题地址实现pow(x, n),即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例2:输入: 2.10000, 3输出: 9.26100示例3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 &lt...

2019-12-16 13:52:02 227

原创 Linux安装arthas(阿尔萨斯)

背景听说阿里开源的arthas(阿尔萨斯)很牛逼,就想尝试下,但是在公司linux上限制诸多的情况下,按照官方文档的安装方式运行不了具体安装方式其实就是下载更全的包,下载地址,我下载的是arthas-3.1.7-bin.zip我下载到本地后,上传到服务器上,解压后的内容先执行sh install-lcoal.sh进行安装然后直接运行 sh as.sh即可,剩下的就和...

2019-12-12 11:25:47 5711 1

原创 LeetCode 236 二叉树的最近公共祖先

题目信息原题地址给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树:root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输...

2019-11-26 14:15:38 229

原创 LeetCode 98 验证二叉搜索树

题目:验证二叉搜索树原题地址给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4...

2019-11-25 13:30:00 347

原创 Supervisord错误Unlinking stale socket *****/supervisord.sock

服务器重启后,执行如下命令supervisord -c ~/supervisor/etc/supervisor.conf没有成功,且给出如下提示Unlinking stale socket *****/supervisord.sock先执行如下命令unlink *****/supervisord.sock再执行最上面的命令后成功重启,可通过如下命令验证super...

2019-11-25 11:47:10 6919

原创 LeetCode 239 滑动窗口最大值

题目题目地址给定一个数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释: 滑动窗口的位置 最大...

2019-11-21 14:14:58 233

转载 【转载】epoll 的本质是什么?

从事服务端开发,少不了要接触网络编程。epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。epoll 很重要,但是 epoll 与 select 的区别是什么呢?epoll 高效的原因是什么?网上虽然也有不少讲解 epoll 的文章,但要么是过于浅显,或者陷入源码解析,很少能有通俗易懂的。...

2019-08-27 11:48:31 199

转载 [转载]Keepalived高可用集群

介绍Keepalived软件起初是专门为LVS负载均衡软件设计的用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务的高可用解决方案软件。Keepalived软件主要是通过VRRP协议实现高可用功能的,VRRP是Virtual Router Redundancy Protocol(...

2019-08-21 15:35:59 128

原创 Pyrthon2.7 爬取微博热搜

闲来无聊,搞搞热搜,先拿微博练手将爬取下来的数据发到自己的邮箱相关的moudle通过pip install就行效果展示什么都是扯淡,直接贴代码# -*- coding: utf-8 -*-#!/usr/bin/pythonimport requestsfrom bs4 import BeautifulSoupimport smtplibfrom email.mim...

2019-04-16 15:22:44 886

原创 spark程序中查找所使用类的真正jar包

目录背景现象定位方法解决办法背景spark1.6.1 升级到 spark 2.1.0,codis版本是0.4.0现象代码没有改动,但是使用codis出现了问题,导致无法正常运行,错误如下redis.clients.jedis.exceptions.JedisException: Proxy list empty看源码pools为空的情况下会...

2019-03-20 14:58:56 891

原创 Spark-submit yarn-cluster exit code 脚本获取不一致问题

版本信息Spark:2.1使用方法代码:parseAsConfig(commandLine) match { case Some(config) => val ext = new Job().run() sys.exit(ext) case None => sys.exit(1) } }脚本:...

2019-03-19 18:13:13 980

原创 Java线程 - sleep()和wait()方法的区别, 线程阻塞BLOCKED和等待WAITING的区别

目录 一、 sleep()和wait()方法的区别sleep()方法wait()方法区别二、线程阻塞BLOCKED和等待WAITING的区别阻塞BLOCKED等待WAITING不知羞耻的摘录一、 sleep()和wait()方法的区别sleep()方法sleep()方法是Thread类的方法,通过其定义可知是个native方法,在指定的时间内阻塞线程...

2019-02-26 11:44:39 10466 6

原创 Safari 浏览器不再支持不安全的扩展

Chrome浏览器有JsonView扩展,可以很方便的将json内容格式化,但是chrome的资源开销太大,准备换用mac的safri为主要浏览器。由于工作中请求的内容都是json格式,如果不格式化,那是蛋疼的不要不要的。在网上找了一下,google的safari-json-formatter比较合适(主要是免费)https://github.com/rfletcher/safari-js...

2019-02-20 14:18:34 13653 4

原创 Java内存区域与内存溢出异常

Java虚拟机将内存划分为堆、方法区、虚拟机栈、本地方法栈、程序计数器五个区域,如下图所示线程私有内存:虚拟机栈,本地方法栈,程序计数器,生命周期依赖于线程的启动和结束线程共有内存:堆,方法区,所以这里存在线程安全问题内存区域1、程序计数器当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变计数器的值来获取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖于...

2018-05-31 14:33:47 257

转载 成为Java GC专家(4)—Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响

这是“成为Java GC专家系列文章”的第四篇。在第一篇文章 成为JavaGC专家Part I — 深入浅出Java垃圾回收机制 中我们学习了不同GC算法的执行过程,GC如何工作,新生代及老年代的基本概念,在JDK7中你应该了解的5种GC类型以及他们的性能如何。在第二篇文章 成为JavaGC专家Part II — 如何监控Java垃圾回收机制 中我们学到了JVM到底是如何执行垃圾回收,我们如何监控...

2018-05-22 17:08:26 282

转载 成为Java GC专家(3)—如何优化Java垃圾回收机制

本文是成为Java GC专家系列文章的第三篇。在第一篇《成为JavaGC专家Part I — 深入浅出Java垃圾回收机制》中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响。在第二篇《成为JavaGC专家Part II — 如何监控Java垃圾回收机制》,我解释了JVM实际上是如何执行垃圾回收的,我们...

2018-05-22 17:04:31 630

转载 成为JavaGC专家(2)—如何监控Java垃圾回收机制

本文是成为Java GC专家系列文章的第二篇。在第一篇《深入浅出Java垃圾回收机制》中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响。在本文中,我将解释JVM到底是如何执行垃圾回收处理的。什么是GC监控?垃圾回收收集监控指的是搞清楚JVM如何执行GC的过程,例如,我们可以查明:1.        何...

2018-05-22 16:55:32 354

转载 成为JavaGC专家(1)—深入浅出Java垃圾回收机制

对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何工作可以帮你写出更好的Java应用。这仅仅代表我个人的意见,但我坚信一个精通GC的人往往是一个好的Java开发者。如果你对GC的处理过程感兴趣,说明你已经具备较大规模应用的开发经验。如果你曾经想过如何正确的选择GC算法,那意味着你已经完全理解你所开发的应用的特点。当然,我们...

2018-05-22 16:53:03 247

原创 Java 实现正则表达式匹配

请实现一个函数用来匹配包括‘.’和‘*’的正则表达式。模式中的字符‘.’表示任意一个字符,而‘*’表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串“aaa”与模式“a.a”和”ab*ac*a”匹配,但是与“aa.a”和“ab*a”均不匹配。代码如果模式串此时是‘.’,相对来说是比较容易处理的,因为其表示任意的一个字符,所以对应的匹配串该位置...

2018-05-11 14:42:34 6771

空空如也

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

TA关注的人

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