- 博客(913)
- 资源 (17)
- 收藏
- 关注
原创 spark-3.0.1和hive-1.1.0集成的问题
主jar里面包含了jetty或者spring boot相关的web依赖信息,可能会导致和 hive-1.1.0 自带的jetty冲突。链接: https://pan.baidu.com/s/1ThAjKRznK2CUDaiXYPzKXg 提取码: b0b0。解决办法:单独下载 geronimo-jaspi-2.0.0.jar 包,放入 spark 根目录的 jars 目录里面。
2023-04-27 15:47:57
22
1
原创 naive ui和tailwind-css冲突解决方法
/ 禁用预加载,修复tailwind样式 与 naive-ui button等样式等冲突问题。大数据平台修改tailwind.config.js文件,禁用预加载。
2023-04-03 11:26:55
209
原创 理解时区与时间处理
时区,是地球上的区域使用同一个时间定义。以前,人们通过观察太阳的位置(时角)决定时间,这就使得不同经度的地方的时间有所不同(地方时)。1863年,首次使用时区的概念,通过设立一个区域的标准时间部分地解决了这个问题。然而,世界各国位于地球不同位置上,因此不同国家,特别是东西跨度大的国家日出、日落时间必定有所偏差。这些偏差就是所谓的时差。
2023-03-24 14:32:27
230
原创 pyspark 3.0增加python woker进程崩毁时的日志记录
之所以能够捕捉segmentation fault进程崩溃异常,是利用了python 3.3版本之后的新功能 faulthandler 库,当故障、超时或收到用户信号时,利用本模块内的函数可转储 Python 跟踪信息。这样排查问题就很方便了,可以清晰的看到是那个依赖库导致的。
2023-03-02 10:32:23
162
原创 spark sql使用常量列值创建虚拟表
在代码中,其实很容易实现,我们看下在sql里面怎么实现,关键知识点:spark inline表 + create view。
2023-03-01 11:45:38
40
原创 vue3+axios刷新浏览器interceptors无效问题
vue前端应用在用户登录之后,服务端会返回一个认证token,前端会将此token存在cookie中,之后前端每次发起的向服务端的请求时,会通过axios的interceptors.request方法,来自动将cookie中的token取出来放在请求头中
2022-12-08 19:17:31
590
原创 一次jenkins-kubernetes服务报错排查记录 (Request Header Fields Too Large)
云原生时代,很多应用跑在Kubernetes里面很方便,但相应的请求访问链路也变多了,这样就会导致排查问题起来相对比较困难,因为不仅仅涉及应用程序
2022-11-14 20:00:31
1126
原创 Spark与hdfs delegation token过期的排查思路总结
hadoop delegation token的问题相对比较混乱和复杂,简单说下这东西的出现背景,最早的hadoop的因没有的完善的安全机制(安全机制主要包括:认证 + 鉴权,hadoop这里主要是身份认证机制没有),所以导致操作风险比较大,你可以理解只要获取了一台装有hadoop client的机器,就可以任意操作HDFS系统了,深究原因是因为hadoop身份认证机制太薄弱
2022-11-09 23:34:25
963
原创 优化jenkins on kubernetes构建性能慢问题
现在大多数公司,都开始使用kubernetes开启云原生时代了,传统的jenkins在物理机构建场景已经越来越少见了,取而代之的是用jekins在kubernetes pod中动态构建我们的任务
2022-09-16 17:48:02
789
原创 解决JDK访问https域名证书校验失败问题
背景在Java代码里面访问https域名的url进行通信时,经常会遇到下面的一个异常:Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certifica
2022-04-01 18:30:01
2984
原创 记一次log4j不打印日志的踩坑记
起因前几天一个跑有java应用的生产集群(200多台物理机)升级了一个版本,重启后发现约有50台机器日志不能正常输出,但其程序确能正常的运行,在生产环境中,日志是非常重要的一个监控手段,如果没有日志输出,无疑是非常危险的。排查 & 解决发现这一情况后,立即开始从jdk环境和版本,cpu负载,内存gc,线程stack,死锁,磁盘容量等多方面排查,但均没有发现异常情况,唯一的一点信...
2019-09-22 02:00:25
2527
原创 最近学车的一点经验
https://mp.weixin.qq.com/s?__biz=MzAxMzE4MDI0NQ==&mid=2650336733&idx=1&sn=7f89fd6d1f81741f77f4b65576c06812&chksm=83aac1e7b4dd48f1da097a30a822875e6df5094e9397c640b848fa33f2a62f773396acd...
2019-08-28 22:59:20
1779
2
原创 在Java里面如何解决进退两难的jar包冲突问题?
如上图所示:es api组件依赖guava18.0,spark项目由于业务需要写入es所以需要依赖es ,但spark项目的环境又需要依赖guava14.0,如果换成高版本可能会报错,这个决定了你不能都使用统一的低版本或者高版本来规避此问题,因此必须面对现实。导致异常的原因简单说下:spark环境首先启动,导致jvm里面已经加载了guava14.0,这个时候jvm不会加载es依赖的...
2019-07-23 19:14:47
3259
1
原创 什么是操作系统的虚拟内存?
https://mp.weixin.qq.com/s?__biz=MzAxMzE4MDI0NQ==&mid=2650336679&idx=1&sn=1b727d7ddc6c069627d7b8fbb444aaf4&chksm=83aac19db4dd488b5186ed9d7f1ff14b89234ac8479708b89b107de39f173adef227921...
2019-07-17 10:07:53
4577
原创 复盘一个Elasticsearch排序问题的剖析
最近线上的es查询的某个微服务接口,报了一个异常,如下:nested: SearchParseException[No mapping found for [count] in order to sort on];Caused by: SearchParseException[failed to parse search source 直接从异常上看,可以得到是因为mapping里面...
2019-07-15 21:13:58
2378
原创 如何轻松理解二叉树的深度遍历策略
我们知道普通的线性数据结构如链表,数组等,遍历方式单一,都是从头到尾遍历就行,但树这种数据结构却不一样,我们从一个节点出发,下一个节点却有可能遇到多个分支路径,所以为了遍历树的全部节点,我们需要借助一个临时容器,通常是栈这种数据结构,来存储当遇到多个分叉路径时的,存暂时没走的其他路径,等走过的路径遍历完之后,再继续返回到原来没走的路径进行遍历,这一点不论在递归中的遍历还是迭代中的遍历中其实都是...
2019-07-03 23:40:24
2613
原创 深入理解什么是LSM-Tree
前言十多年前,谷歌发布了大名鼎鼎的"三驾马车"的论文,分别是GFS(2003年),MapReduce(2004年),BigTable(2006年),为开源界在大数据领域带来了无数的灵感,其中在 “BigTable” 的论文中很多很酷的方面之一就是它所使用的文件组织方式,这个方法更一般的名字叫 Log Structured-Merge Tree。在面对亿级别之上的海量数据的存储和检索的场景下,我...
2019-05-21 20:03:23
41348
6
原创 18个高效使用Google搜索的技巧
前言如果把浩瀚的互联网资源比喻成是一个图书馆,那么google搜索引擎毫无疑问是这个图书馆的导航中心,通过google可以轻而易举得检索到绝大多数你需要的资料,然而大多数人可能并没有充分发挥谷歌搜索的潜力。如何才能更加高效,快速的利用好谷歌这个搜索引擎呢?这里有18个技巧用来提升你的检索效率。1.使用Tab面板使用谷歌使用结果完成后,在搜索栏的下面会出现多个Tab面板,默认分别...
2019-03-22 19:58:23
4975
原创 Apache Flink在阿里的使用(译)
Flink是未来大数据实时数据处理领域的首选框架,本文原文是阿里巴巴的搜索团队总监Xiaowei Jiang在Flink Forward 2016大会上分享的内容,后来被记录并移到Flink公司官网的Blog上(注意这个不是社区的官网,原名叫data Artisans,被阿里收购后改为ververica)。文章内容很不错,我这里也是抱着学习和了解的心态翻译了一下这篇文章,英语好的同学建议直接去...
2019-02-21 21:21:21
3242
原创 为什么单线程Redis性能也很出色
高性能的服务器,不一定是多线程实现的,也就是说多线程不一定比单线程效率高,这得分具体的情况。以redis为例,核心处理请求的线程只有一个,所以我们常常理解其仅仅只有一个线程,但准确来说其实并不是单线程的,比如日志的备份需要单独的fork一个进程或者线程去做备份等,那么redis何来单线程还能达到如此10万+的qps呢?其实这取决于具体的实现,redis采用了基于高性能Reactor的IO多路复用...
2019-01-21 18:00:47
655
原创 如何扩展python的logging组件支持json日志输出
这两天在优化公司一个python的项目,顺便研究了一下如何将python日志转成json格式,原来在Java的项目中搞过类似的事情,知道日志转成json之后有很多便利的之处,最常见的就是可以直接对接各种日志分析系统,如开源的ELK,将数据导入之后就能快速的进行查询和分析,方便做各种统计,监控或报警等。python里面的logging组件,其实已经是组件化了,有Logger组件,Handler组...
2019-01-10 21:54:58
4772
2
原创 为什么Java里面String类是不可变的
在Java里面String类型是不可变对象,这一点毫无疑问,那么为什么Java语言的设计者要把String类型设计成不可变对象呢?这是一个值得思考的问题Java语言的创建者James Gosling,曾经在一次采访中被人问到:什么时候应该使用不可变对象(immutable object),他回答:任何可以使用的时候都会使用。在这之前,我们先来简单了解一下,什么是不可变对象?不可变对象指...
2019-01-06 18:39:28
2821
2
原创 关于Java里面volatile关键字的重排序
Java里面volatile关键字主要有两个作用:(1)可见性(2)禁止指令重排序第一条可见性比较容易理解,就是使用volatile修饰的共享变量,如果有一个线程修改了值,其他的线程里面是立即可见的。原理是对volatile变量的读写,都会强制线程操作从主内存。第二条禁止指令重排序,能够保证局部的代码执行的顺序。假设我们现在有如下的一段代码: int a=2; ...
2019-01-04 18:44:57
1814
原创 操作系统之CPU知识扫盲
(上图是一个拥有两个物理cpu的主板电路,图片来源于网络)前言CPU的英文全称是(Central Processing Unit),中文意思翻译中央处理器,是计算机的主要设备之一,功能主要是解释计算机指令以及处理计算机软件中的数据。计算机的可编程性主要是指对中央处理器的编程。关于冯·诺依曼结构冯·诺依曼结构(Von Neumann architecture)是一种将程序指令存储...
2018-12-22 13:58:42
2002
原创 关于Linux进程的基础知识
前言在计算机里面,一个进程通常指的是一个运行程序的实例,它包含程序代码和其活动。依赖于具体的操作系统,一个进程启动后通常由若干个线程组成,多个线程可以同时并发的执行程序的指令,进程里面第一个启动的线程,通常称为主线程。进程的类型前台进程通常也指交互进程,这些进程一般都是通过linux终端会话创建的,换句话说必须有用户连接到系统上,然后开启一个进程,这种进程不会被系统函数或者创建。...
2018-12-17 16:04:18
1409
原创 多个线程如何轮流打印ABC特定的次数?
之前的一篇文章,我给出了关于多线程应用的几个例子:都是基于Java里面Lock锁实现的,分别是:(1)两个线程轮流打印奇数和偶数(2)多个线程模拟买票(3)模拟生产者消费者今天再抛砖引玉,思考一下如何在多个线程中,轮流打印特定顺序的信息多少次。这类问题其实并不难,只要掌握了Java里面线程协作和锁的知识,就可以轻而易举的搞定:根据这些,我们来假设一个场景,使用三个线程轮...
2018-12-11 20:43:50
2400
原创 再谈方法调用与堆栈
再谈方法调用与堆和栈在JVM里面,最重要的两个运行时数据区,无非就是堆和栈了。关于堆堆内存是被多个线程共享的,而栈内存是线程私有的。堆主要用来存储运行时所有的对象数据和各种数组,简单点说通过new创建的实例,都会在堆上分配空间。堆在虚拟机启动时创建,并且堆具有自动垃圾回收的功能,在Java的世界里,程序员是没办法直接销毁你所创建的对象的,一切必须由GC垃圾回收器来完成,也就是你用完后的...
2018-11-17 14:20:15
1011
原创 聊聊Java里面的引用传递
聊聊Java里面的"引用传递"长久以来,在Java语言里面一直有一个争论,就是Java语言到底是值传递(pass-by-value)还是引用传递(pass-by-reference),有的人说是值传递,有的人说是引用传递,两边各执一词,从而误导了很多开发者,更有甚者告诉开发者说不必纠结Java到底是值传递还是引用传递,只要能用就行了,但事实真的是这样吗? 答案是否定的。为了弄清这两个概念,...
2018-11-16 21:33:46
214
理解计数排序算法的原理和实现
计数排序(Counting sort)是一种稳定的线性时间排序算法,其平均时间复杂度和空间复杂度为O(n+k),其中n为数组元素的个数,k为待排序数组里面的最大值。同样具有线性时间排序的算法还有桶排序和基数排序,这一点不要搞混。计数排序不是基于比较的排序,所以它的排序效率是线性的,在特定的场景下(已知数组的最大最小值,切数组元素整体量不是很大的情况下)排序效率极高,而基于比较排序的...
2018-10-11 10:03:34
2208
原创 理解计数排序算法的原理和实现
计数排序(Counting sort)是一种稳定的线性时间排序算法,其平均时间复杂度和空间复杂度为O(n+k),其中n为数组元素的个数,k为待排序数组里面的最大值。同样具有线性时间排序的算法还有桶排序和基数排序,这一点不要搞混。计数排序不是基于比较的排序,所以它的排序效率是线性的,在特定的场景下(已知数组的最大最小值,切数组元素整体量不是很大的情况下)排序效率极高,而基于比较排序的算法,其时间...
2018-10-11 09:57:47
571
原创 深入理解Java类加载器机制
前言Java里面的类加载机制,可以说是Java虚拟机核心组件之一,掌握和理解JVM虚拟机的架构,将有助于我们站在底层原理的角度上来理解Java语言,这也是为什么我们学习一个新的知识时,如果不理解原理全靠死记硬背,我相信过不了几天便会忘记的一干二净。Java是一门跨平台的语言,而JVM虚拟机则在这中间扮演了非常重要的角色,对于我们编写的.java文件,在编译期间会被转换成二进制的class文...
2018-09-25 10:06:24
2262
原创 理解Java并发工具包线程池的设计
为什么需要线程池?答:主要原因是因为创建一个线程开销太大,尤其是对大量的小任务需要执行这种场景。在Java里面创建一个线程,需要包含的东西:(1)它为一个线程堆栈分配内存,该堆栈为每个线程方法调用保存一个帧(2)每个帧由局部变量数组,返回值,操作数栈,常量池组成(3)某些JVM会为本地方法分配一个本地栈(4)每个线程有一个程序计数器,用来告诉进程当前的指令执行到什么地方...
2018-09-12 21:25:58
1515
理解Java7和8里面HashMap+ConcurrentHashMap的扩容策略
### 前言理解HashMap和ConcurrentHashMap的重点在于:(1)理解HashMap的数据结构的设计和实现思路(2)在(1)的基础上,理解ConcurrentHashMap的并发安全的设计和实现思路前面的文章已经介绍过Map结构的底层实现,这里我们重点放在其扩容方法,这里分别对JDK7和JDK8版本的HashMap+ConcurrentHash...
2018-09-06 11:31:21
1227
原创 理解Java7和8里面HashMap+ConcurrentHashMap的扩容策略
前言理解HashMap和ConcurrentHashMap的重点在于:(1)理解HashMap的数据结构的设计和实现思路(2)在(1)的基础上,理解ConcurrentHashMap的并发安全的设计和实现思路前面的文章已经介绍过Map结构的底层实现,这里我们重点放在其扩容方法, 这里分别对JDK7和JDK8版本的HashMap+ConcurrentHashMap来分析:JDK7...
2018-09-06 11:25:56
16399
4
原创 关于Java里面多线程同步的一些知识
# 关于Java里面多线程同步的一些知识对于任何Java开发者来说多线程和同步是一个非常重要的话题。比较好的掌握同步和线程安全相关的知识将使得我们则更加有优势,同时这些知识并不是非常容易就能熟练掌握的,实际上写出正确的并发代码是一件比较困难的事情。在Java的自带的库里面,已经包含了非常多实用的并发工具类,今天这篇文章,我们主要来学习Java里面synchronized关键字的相关知识。...
2018-07-18 10:20:26
245
关于Java里面多线程同步的一些知识
# 关于Java里面多线程同步的一些知识对于任何Java开发者来说多线程和同步是一个非常重要的话题。比较好的掌握同步和线程安全相关的知识将使得我们则更加有优势,同时这些知识并不是非常容易就能熟练掌握的,实际上写出正确的并发代码是一件比较困难的事情。在Java的自带的库里面,已经包含了非常多实用的并发工具类,今天这篇文章,我们主要来学习Java里面synchronized关键字的相关知识。...
2018-07-18 09:45:00
748
Java单例模式之双检锁深入思考
# Java单例模式之双检锁剖析### 前言单例模式在Java开发中是非常经典和实用的一种设计模式,在JDK的内部包的好多api都采用了单例模式,如我们熟悉的Runtime类,单例模式总的来说有两种创建方式,一种是延迟加载的模式,一种是非延迟加载的模式,今天我们来学习一下基于双检锁延迟加载的单例模式。### 什么是单例模式顾名思义,单例模式指的是在整个程序运行期间,...
2018-07-08 12:25:43
303
关于Java里面多线程同步的一些知识
# 关于Java里面多线程同步的一些知识对于任何Java开发者来说多线程和同步是一个非常重要的话题。比较好的掌握同步和线程安全相关的知识将使得我们则更加有优势,同时这些知识并不是非常容易就能熟练掌握的,实际上写出正确的并发代码是一件比较困难的事情。在Java的自带的库里面,已经包含了非常多实用的并发工具类,今天这篇文章,我们主要来学习Java里面synchronized关键字的相关知识。...
2018-07-08 12:23:08
145
重新认识同步与异步,阻塞和非阻塞的概念
# 重新认识同步与异步,阻塞和非阻塞的概念### 前言在实际的开发中,我们经常会听到同步,异步,阻塞,非阻塞这些编程概念,每次遇到的时候都会蒙圈,然后就各种查网上似是而非的资料,结果越查越迷糊,大部分文章都千篇一律,没有说到本质上的区别,所以下次再碰到这些概念,印象还是比较模糊,尤其是在一些场景下同步与阻塞,异步与非阻塞感觉没啥区别,但其实这四个术语描述的事物还真不是一回事。...
2018-07-06 14:30:41
159
protobuf-2.5.0.tar.gz
2015-06-24
luke4.5的jar包
2013-10-29
lucene的索引工具
2013-07-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人