- 博客(83)
- 资源 (7)
- 收藏
- 关注
原创 java中的instanceof为啥不能和泛型类去比较?
1. 现象如下,当我用参数e去和Array类中的泛型E去做比较的时候提示不合法package array;/** * 自定义一个泛化动态数组工具类,类似与ArrayList集合类 * @author lilei * @description * @Date 2019/6/23 22:08 * @Version 1.0 **/public class Array<E&g...
2019-06-23 23:23:51 6875 1
原创 hashmap碰撞问题以及解决方案
1. 碰撞问题产生的原因hashmap在进行put操作的时候会根据key的hashcode()方法去获取hash值,在根据这个hash值去找哈希桶的位置,有时候可能某几个key的hashcode的值相同,导致了hash碰撞的产生。2.解决方法jdk中的hashmap采用的是拉链法去解决整个问题的,也就是说当相同的hashcode值找到同样一个位置的时候,采用链表存储,当有新的put操作...
2019-02-12 09:09:06 2476
原创 AQS详解
1.AQS是什么?AQS是AbstractQueuedSynchronizer的简称,它是一个java的底层同步工具类,用一个int类型的变量表示同步状态,并且提供了一系列的CAS操作来管理这个同步状态2.同步队列 同步队列是AQS中 很重要的一部分,它是一个双端队列,遵循FIFO原则,主要的作用是用来存放在锁上阻塞的线程,当一个线程尝试获取锁的时候,如果已经被占用的话,那么当前...
2019-02-11 15:29:21 218
原创 redis哨兵主备切换的数据丢失问题:异步复制、集群脑裂
1 减少异步复制的数据丢失简单来说就是设置min-slaves-max-lag 这个配置 可以确保slaves在指定的时间内 复制数据没完成或者ack时间没在规定时间内,则拒绝写入2 减少脑裂的数据丢失min-slaves-to-write 1min-slaves-max-lag 10如果一个master出现了脑裂,跟其他slave丢了连接,那么上面两个配置可以确保说,如果不能继...
2019-01-16 16:46:36 801
原创 redis断点续传、无磁盘化复制、过期key处理
1、主从复制的断点续传1)redis的master node中会常见一个backlog2)master和slave都会保存一个replica offset,这个offset就是保存在backlog中3)如果slave和master因为网络原因导致断掉了,重新连接上去的时候会从backlog中的offset开始复制4)如果slave中的replica offset在master中的b...
2019-01-16 16:45:57 843
原创 redis如何通过读写分离来承载读请求QPS超过10万+
单机的redis大概支持的qps在几万左右,所以当你的qps到10万+的时候就要通过redis的读写分离来承载高并发的读了。1、redis replication基本原理1)首先slave连接master的时候会发送一个sync的命令2)master会去后台搞一个线程去把自己当前的缓存数据生成一份rdb文件,然后发送给slave3)slave接收到rdb文件以后通过rdb去将数据加...
2019-01-16 16:45:33 1208
原创 redis的RDB和AOF两种持久化机制的工作原理
1.RDB持久化机制介绍简单来说就是将redis内存中的数据生成快照存储到硬盘中去。2.RDB持久化机制执行流程1)执行bgsave的时候,redis的主进程会检查是否存在子进程在执行rdb持久化任务,如果有的话直接返回。2) 如果没有的话redis主进程会fork一个子进程出来去执行rdb持久化任务操作,fork操作的时候会阻塞主进程,fork操作完成后会发消息给主进程,从而不再...
2019-01-16 16:45:03 221
原创 redis主从架构版安装
step1. 将准备好的tar.gz文件上传到linux服务器,解压缩并删除压缩包 a.解压缩命令 tar -zxvf redis.xxx.tar.gz b.删除压缩包命令 rm -rf redis.xxx.tar.gzstep2.进入到redis的解压缩目录,编译redisyum -y install gccmake MALLOC=libcmake && ...
2019-01-16 10:38:39 122
原创 Spark性能调优---fastutil优化数据格式
Spark中应用fastutil的场景:1、如果算子函数使用了外部变量;那么第一,你可以使用Broadcast广播变量优化;第二,可以使用Kryo序列化类库,提升序列化性能和效率;第三,如果外部变量是某种比较大的集合,那么可以考虑使用fastutil改写外部变量,首先从源头上就减少内存的占用,通过广播变量进一步减少内存占用,再通过Kryo序列化类库进一步减少内存占用。2、在你的算子函数里,...
2018-11-30 17:08:52 182
原创 spark性能调优---Kryo序列化
1.为啥要用Kryo序列化Spark算子操作的时候如果用到外部数据的话,都会对外部数据进行序列化,Spark内部是使用Java的序列化机制,ObjectOutputStream / ObjectInputStream,对象输入输出流机制,来进行序列化这种默认序列化机制的好处在于,处理起来比较方便;也不需要我们手动去做什么事情,只是,你在算子里面使用的变量,必须是实现Serializable接口...
2018-11-30 16:31:12 282
原创 spark性能调优---广播变量的使用
Broadcast VariablesBroadcast variables allow the programmer to keep a read-only variable cached on each machine rather than shipping a copy of it with tasks. They can be used, for example, to give e...
2018-11-30 15:24:57 246
原创 spark运维监控:查看历史作业的webUI
1、停止集群2、配置spark-env.shexport SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=50 -Dspark.history.fs.logDirectory=hdfs://centos-5:9001/spark-event"3、重启集群4、...
2018-11-29 19:10:43 1686
原创 spark作业监控:standalone模式下查看历史作业
1.关闭现有的master和worker进程2.修改spark-defaults.conf文件,配置三个属性spark.eventLog.enabled truespark.eventLog.dir hdfs://centos-5:9001/spark-eventspark.eventLog.compress true...
2018-11-29 19:08:44 857
原创 查看spark对应各种框架的版本情况
1.下载你使用的spark版本源码2.打开源码里面的pom文件3.查找你要用的框架版本 例如 我要查我现在用的spark2.2.1对应的hive版本<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <proj...
2018-11-27 16:18:41 5525
原创 spark常见算子操作
package com.yzc.lilei.spark.transformoperate;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.j...
2018-11-22 20:37:07 382
转载 矩阵求导公式
原文地址:矩阵求导公式【转】作者:三寅今天推导公式,发现居然有对矩阵的求导,狂汗--完全不会。不过还好网上有人总结了。吼吼,赶紧搬过来收藏备份。基本公式:Y = A * X --> DY/DX = A'Y = X * A --> DY/DX = AY = A' * X * B --> DY/DX = A * B'Y = A' * X' * B --> DY/...
2018-09-26 14:47:57 1681
原创 phoenix查询日期范围
官网太简易了 找官网的内置函数一个个试出来的 有点佩服我自己 哈哈哈select * from "T_BCAllUserActLog" WHERE "reserved8" is not null and CAST(TO_DATE("reserved8") AS DATE) between CAST(TO_DATE('2018-09-18 00:00:00') AS DATE) and...
2018-09-19 10:22:28 2559
转载 二项分布、指数分布与泊松分布的关系
1、泊松分布由法国数学家西莫恩·德尼·泊松(Siméon-Denis Poisson)在1838年时发表;若X服从参数为的泊松分布,记为X~P(),泊松分布的概率分布函数:参数λ是单位时间(或单位面积)内随机事件的平均发生率。统计学上,满足三个条件,即可用泊松分布(1)小概率事件,两次以上事件发生概率趋于0;(2)事件发生的概率独立且互不影响;(3)发生概率时稳定的;...
2018-09-10 21:35:35 7868
转载 浅显易懂——泰勒展开式
第一次见到泰勒展开式的时候,我是崩溃的。泰勒公式长这样:好奇泰勒是怎么想出来的,我想,得尽量还原公式发明的过程才能很好的理解它。首先得问一个问题:泰勒当年为什么要发明这条公式?因为当时数学界对简单函数的研究和应用已经趋于成熟,而复杂函数,比如:这种一看就头疼的函数,还有那种根本就找不到表达式的曲线。除了代入一个x可以得到它的y,就啥事都很难干了。所以泰勒同学就迎难而上!决定让这些式...
2018-09-01 16:58:52 14138 13
原创 linux查看文件夹目录大小
1.磁盘还剩多少空间: df -h2.当前的文件夹下的磁盘使用情况: du --max-depth=1 -h3.查看单个文件夹目录大小: du -sh 文件或文件夹路径
2018-08-27 14:03:03 12760
转载 阿里P7/P8学习路线图——技术封神之路
一、基础篇JVMJVM内存结构堆、栈、方法区、直接内存、堆和栈区别Java内存模型内存可见性、重排序、顺序一致性、volatile、锁、final垃圾回收内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定JVM参数及调优 Java对象模型oop-klass、对象头HotSpot即时编译器、编译优化类加载机制classLoader...
2018-08-03 09:24:58 351 2
原创 java操作phoenix查询指定table_schema中的数据
原因: 1.phoenix映射hbase表的时候,如果hbase表是存放在某个命名空间下面的话,phoenix创建表的时候必须创建table_schema以后在取创建表,然后才能映射成功解决方法: 1.如果用./sqlline.py 命令去启动的话,访问schema中的表数据的时候要先使用use <table_schema>命令先指定特定的schema,然后在去访问...
2018-06-25 10:28:26 5037 2
原创 phoenix对hbase进行映射
1.查看phoenix的版本,如果版本是4.10之前的,映射关系是根据列来映射的,phoenix可以通过create table(...)来映射2.如果版本是4.10以后的,则只能通过视图来创建,create view(...),才能查询到hbase中的数据...
2018-06-22 10:16:05 868
转载 数学基础之列联表分析2——独立性检验(卡方检验)
1. 独立性检验步骤 Step1:建立原假设 H0:两变量相互不独立;H1:两变量相互独立 Step2:计算自由度与理论频数 Step3:计算统计量 Step4:查χ2方分布临界值表,确定接受域例:对表1所示频数分布表,以95%显著水平,检验色觉与性别是否有关。解: Step1:H0:色觉与性别相互不独立;H1:色觉与性别相互独立 St...
2018-06-16 22:47:49 31896 4
转载 数学基础之曼哈顿距离,欧式距离,余弦距离
曼哈顿距离,欧式距离,余弦距离1.曼哈顿距离曼哈顿距离又称马氏距离(Manhattan distance),还见到过更加形象的,叫出租车距离的。具见上图黄线,应该就能明白。计算距离最简单的方法是曼哈顿距离。假设,先考虑二维情况,只有两个乐队 x 和 y,用户A的评价为(x1,y1),用户B的评价为(x2,y2),那么,它们之间的曼哈顿距离为 2.欧式距离欧式距离又称欧几里得距离或欧几里得度量(Eu...
2018-06-15 15:51:21 3474
原创 数学基础之方差、标准差和协方差三者之间的定义与计算
理解三者之间的区别与联系,要从定义入手,一步步来计算,同时也要互相比较理解,这样才够深刻。方差方差是各个数据与平均数之差的平方的平均数。在概率论和数理统计中,方差(英文Variance)用来度量随机变量和其数学期望(即均值)之间的偏离程度。在许多实际问题中,研究随机变量和均值之间的偏离程度有着很重要的意义。标准差方差开根号。协方差在概率论和统计学中,协方差用于衡量两个变量的总体误差。而方差是协方差...
2018-06-14 16:31:55 6730
原创 sparkRDD算子系列-treeAggregate算子
1.函数定义:def treeAggregate[U: ClassTag](zeroValue: U)( seqOp: (U, T) => U, combOp: (U, U) => U, depth: Int = 2): U = withScope2.函数解释: aggregate需要三个参数(初始值zeroValue,函数seqOp和函数combOp)...
2018-06-14 10:41:18 450
原创 spark性能调优---rdd重构和rdd持久化
1.尽量去复用RDD,差不多的RDD,可以抽取称为一个共同的RDD,供后面的RDD计算时,反复使用。2.公共RDD一定要实现持久化(persite,catch),持久化可以持久化到内存(内存不够可以存放到磁盘里面)3.序列化我们需要持久化的RDD,序列化会节省空间,不过要使用的时候必须反序列化4.为了数据的高可靠性,而且内存充足,可以使用双副本机制,进行持久化持久化的双副本机制,持久化...
2018-06-07 14:22:09 420
原创 spark性能调优---调节并行度
并行度:其实就是指的是,Spark作业中,各个stage的task数量,也就代表了Spark作业的在各个阶段(stage)的并行度。如果不调节并行度,导致并行度过低,会怎么样?假设,现在已经在spark-submit脚本里面,给我们的spark作业分配了足够多的资源,比如50个executor,每个executor有10G内存,每个executor有3个cpu core。基本已经达到了集群或...
2018-06-06 19:39:08 298
原创 Spark核心RDD:combineByKey函数详解
为什么单独讲解combineByKey?因为combineByKey是Spark中一个比较核心的高级函数,其他一些高阶键值对函数底层都是用它实现的。诸如 groupByKey,reduceByKey等等如下给出combineByKey的定义,其他的细节暂时忽略(1.6.0版的函数名更新为combineByKeyWithClassTag)def combineByKey[C]( cr...
2018-06-04 09:49:29 408
原创 spark中map和flatMap的区别
不同点:map操作是对RDD中每个元素进行操作的,操作的结果是一对一的而flatMap操作也是对RDD中每个元素进行操作的,但是它的操作结果是一对一或者是一对多的如spark入门的单词统计案例中对单词的分割就要用到flatMap,因为分割以后的结果比元素要多用map就不行: package com.lilei.rdd;import org.apache.spark.SparkConf;...
2018-06-04 08:31:28 1426
原创 sparksql查询hbase中的数据
1.demo环境说明 demo是根据spark2.2+hadoop2.7+hbase1.3(亲测版本兼容,其他不同版本可能会出现不兼容的情况)2.代码案例package com.yzc.test;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;i...
2018-05-29 16:38:14 3971 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人