自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

勇心在馨

流计算和离线计算技术

  • 博客(207)
  • 资源 (6)
  • 收藏
  • 关注

翻译 Linux初探

一、Unix1、发展历史1969年汤姆森开发出unix系统,1971年丹尼斯里奇研发出c语言,1973年汤姆森和里奇一起使用C语言改写unix。2、unix的主要发行版本二、Linux1、发展历史1991年芬兰大学李纳斯研发Linux...

2020-11-05 22:52:38 8

翻译 JMM内存模型

一、cpu的缓存模型简化版二、JMM内存模型Java多线程内存模型跟cpu缓存模型类似,基于cpu缓存模型来建立的1、数据原子操作(1)read(读取)从主内存读取数据(2)load(载入)将主内存读取到的数据写入工作内存(3)use(使用)从工作内存读取数据计算(4)assign(赋值)将计算好的值重新赋值到工作内存中(5)store(存储)将工作内存数据写入主内存(6)write(写入)将store过去的变量值赋值给主内存中的变

2020-11-01 23:42:17 9

翻译 SpringCloud概述

SpringCloud目前处于不再发布新版本,不接受合并和修复Bug。1、SpringCloud初套件2、最新SpringCloud使用套件3、查看SpringBoot和SpringCloud的版本选择:https://start.spring.io/actuator/info

2020-10-29 07:55:51 10

翻译 springboot开启自动部署devtools

1、在pom.xml中添加如下配置<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional></dependenc

2020-10-02 20:16:22 47

翻译 docker镜像启动实例

一、使用mysql:5.7镜像启动实例docker run -p 3306:3306 -name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=123 \-d mysql:5.7参数说明:1、-p 3306:3306将容器的3306端口映.

2020-08-14 22:05:53 88

翻译 docker安装

1、安装docker的镜像地址(1)sudo yum install -y yum-utils device-mapper-persistent-data lvm2(2)sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo2、安装docker核心组件sudo yum install docker-ce docker-ce-cli containerd.io3、启

2020-08-14 21:42:02 32

翻译 echarts地图使用的json数据网址

http://datav.aliyun.com/tools/atlas/#&lat=32.06252499430523&lng=117.26625750000001&zoom=7

2020-08-13 22:23:47 202

原创 win10配置hosts文件可见

win10一般来说hosts文件是隐藏的,需要修改显示受保护的文件才可以,但是有一些用户反馈就算显示隐藏也找不到hosts文件,那么该如何解决呢?第一步:第二步点击Windows10下面的搜索框,搜索“CMD”,鼠标右键点击“命令提示符”,以管理员身份运行粘贴:for /f %P in ('dir %windir%\WinSxS\hosts /b /s') do copy %P %windir%\System32\drivers\etc & echo %P &

2020-08-11 10:26:37 115

翻译 Print详解

print函数在builtins模块内print源码如下:def print(self, *args, sep=' ', end='\n', file=None): # known special case of print """ print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by

2020-08-07 10:40:04 70

翻译 Pip模块解析

pip是python的第三方库管理器,可以根据所开发项目的需要,使用pip相关命令安装不同库。1、pip常用基础命令(1)查看已经安装的第三方库:pip list(2)直接安装库:pip install 库名(3)指定版本安装:pip install redis==3.4.1(4)卸载已安装的库:pip uninstall requests(5)更新某个库:pip install -U requests(6)查看pip版本:pip --version(7)pip工具升级:p.

2020-08-07 01:25:28 30

翻译 HashMap详解

HashMap不是线程安全的,key和value都可以为null。jdk8之前使用数组+链表。jdk8之后在解决冲突时有较大的变化,当链表长度大于阈值(或者是红黑树的边界值,默认是8)并且数组长度大于64时,此时索引位置上的所有数据改为红黑树。注意:如果链表长度大于8.但是数组长度小于64,此时并不会将链表变为红黑树,而是选择进行数组扩容。Map<String,String> map=new HashMap<>();当创建hashmap集合对象时,jdk8之前,构造函数

2020-07-22 13:02:23 32

翻译 垃圾回收器详解

一、垃圾回收分类1、串行垃圾回收在同一时间段内只允许只有一个cpu用于垃圾回收操作,此时工作线程被暂停,直至垃圾收集工作结束(1)在单核cpu,或者较小的应用平台上使用串行垃圾回收优于并行回收,串行回收默认应用在客户端的client模式下的jvm中(2)在多核cpu下,并行回收器产生的停顿时间短于串行回收器(3)独占式,会有stop-the-world2、并行垃圾回收(1)多个cpu同时回收,提升了应用的性能(2)独占式,会有stop-the-world二、GC性能指

2020-07-20 21:14:42 61

翻译 java引用类别详解

jdk1.2之后,java对象对引用的概念进行了扩充,将引用分为强引用,软引用,弱引用和虚引用。一、强引用(StrongReference)程序出现对象的引用赋值,只要强引用关系在,垃圾收集器永远不会收掉被引用的对象。(1)可以直接访问目标对象(2)目标对象被其他对象引用,虚拟机即使抛oom,也不会回收该对象(3)强引用也是java内存泄漏的主要原因之一二、软引用(SoftReference)在系统将要发生内存溢出之前,将会把这些对象列入回收范围之中进行第二次回收。如果回收后还没

2020-07-20 14:15:28 40

翻译 Flink内存模型

flink官网上 的内存分布图如下:1、processMemory是分配的总大小,比如yarn分配的container的总大小。2、framework memory与 task memoryframework不属于slot内存,而task是slot内的使用的内存heap memory内存主要是java对象和stateBackend内存framework heapmemory+task heap memory=jvm堆内存总大小(-Xmx)framework off..

2020-07-20 10:58:34 93

翻译 安全点与安全区域

1、安全点(safepoint)程序执行时并非在所有地方都能停顿下来开始GC,只有在特定的位置才可以停顿安全点的选择很重要,如果太少可能导致GC等待时间长,如果太多则会导致用户线程运行性能低。所以一般安全点会选取程序执行时间较长的指令时刻。比如选取方法调用,循环跳转和异常跳转。(1)抢占式中断(目前没有虚拟机采用)首先中断所以线程,如果还有线程不在安全点,就恢复线程,让线程跑到安全点(2)主动式中断设置一个中断标识,各个线程运行到安全点的时候主动轮询这个标识,如果出现中断标识为真,则

2020-07-19 23:11:00 51

翻译 垃圾回收的并发与并行

1、并行多条垃圾收集线程并行工作,但此时用户线程处于等待状态,比如ParNew、Parallel、Scavenge、Parallel Old在单核cpu,并行垃圾回收效率可能较低。2、串行单线程运行,如果内存不够,则程序暂停,启动垃圾回收器回收,回收完,再启动程序线程继续运行。3、并发用户线程和垃圾回收线程同时执行,用户线程运行在cpu core1上,垃圾回收线程运行在cpu core2上。比如cms,g1...

2020-07-19 22:51:43 169

翻译 堆内存溢出与内存泄漏

一、内存溢出java堆内存溢出主要有如下原因1、虚拟机堆内存设置不够2、出现内存泄漏3、内存中创建了大量的大对象,并且长时间不能回收。在抛出OutOfMemoryError之前,通常垃圾收集器会被触发,在java.nio.BITs.reserveMemory()方法中调用了System.gc()。不过也有例外,如果分配一个大对象超过了堆内存大小,此时jvm判定垃圾收集器并不能解决,所以直接抛出OutOfMemoryError。二、内存泄漏对象不会再使用,但是GC又不能回收,此时造

2020-07-19 22:43:18 25

翻译 System.gc()详解

通过使用System.gc()或者Runtime.getRuntime().gc()调用会显示触发Full GC,同时对新生代和老年代回收System.gc()底层调用Runtime.getRuntime().gc()程序中如果System.gc()会通知jvm的垃圾收集器来回收,但是此时垃圾收集器不一定一定来回收,即finalize方法有可能调用,有可能不调用。此时如果调用System.runFinalization()方法,会强制调用对象的finalize方法...

2020-07-19 22:15:41 167

翻译 GC垃圾收集算法详解

一、垃圾标记算法1、对象存活判断只有对堆内存上对象进行标记出哪些是存活的,哪些是死亡(不再被其他存活对象引用)对象。被标记为死亡的对象在GC时被回收。判断对象存活主要有两种方式(1)引用计数(java未选择,python选择)每个对象保存一个整型的引用计数器属性,用于记录对象被引用的情况。算法思想:对于一个对象A,只要有任何对象引用了A,则A的引用计数加1,当引用失效,此时引用计数器减1。一旦引用计数器值为0,则可以被回收。优点:实现简单,垃圾对象便于辨识,判定效率高,回

2020-07-19 21:54:00 57

翻译 对象finalize机制

finalize()是Object类的,该方法是垃圾回收机制回去调用的,java对象不要试图调用1、finalize()可能导致对象复活2、finalize()执行的时间没有保障,它是由GC线程决定的,如果没有GC,则finalize()方法将没有执行机会。3、复写finalize()方法,有可能对GC性能造成影响如果从所有根节点都无法访问到某个对象,说明该对象已经不再使用,一般来说,此对象需要被回收。但事实上,有可能处于“死缓”状态,一个无法触及的对象有可能在某一个条件下复活自己。fi

2020-07-19 19:32:15 68

翻译 StringTable详解

一、存储结构jdk8及以前String底层使用char[],一个char是两个字节,jdk9开始改用byte[]加上编码标记节约空间。jdk9官网提供的String修改说明:http://openjdk.java.net/jeps/254修改动机:二、不可变性1、当对字符串重新赋值时,需要重写指定内存区域赋值2、当对现有字符串进行连接操作时,也需要重新指定内存区域。3、调用String的replace方法时修改指定字符串或者字符时,也需要重新指定内存区域赋值。4.

2020-07-19 16:08:37 245 1

翻译 synchronized 锁升级

一、轻量级锁如果一个对象有多个线程访问,但是多线程访问的时间是错开的(没有竞争),那么可以使用轻量级锁来优化。synchronized (this){ //todo}当执行同步代码块时,会创建锁记录对象,每个线程的栈帧中包含一个锁记录的结构,锁记录中Object reference指向锁对象,并尝试用cas替换Object的mark word,将mark word的值存入所记录。1、加锁(1)如果cas成功,对象头中存储了锁记录地址和状态00,表示由该线程给对象加锁。

2020-07-16 13:43:19 71

翻译 直接内存

直接内存是在java堆外的,直接向系统申请内存区间,通过DriectByteBuffer操作native内存。读写文件,需要和磁盘交互,需要由用户态切换到内核态,如下图所示:使用nio,操作系统会划出直接缓存区可以被java代码直接访问,数据只有一份,nio适合对大文件的读写操作。直接内存大小可以通过MaxDirectMemorySize设置,如果不指定,默认是和堆的最大值-Xmx参数一致。...

2020-07-12 09:51:36 62

翻译 对象实例化

一、创建对象的方式1、new(1)直接new 对象(2)单例模式,构造器是私有的,通过静态方法获取对象(3)工厂类产生对象2、class的newInstance()反射的方式,只能调用空参构造器,权限是public3、Constructor的newInstance()可以调用有参构造器,权限没有要求4、使用clone()实现Cloneable接口,浅拷贝不使用构造器,深拷贝需要用到其他方式产生对象5、使用反序列化从文件中,网络中获取一个二进制流6、第三方库

2020-07-11 10:01:15 211

翻译 Spark数据倾调优

调优spark重点是从数据本地性,数据倾斜一、数据倾斜并行处理数据集的某一个部分的数据显著多余其他部分,导致该部分的处理速度成为整个数据集处理的瓶颈。1、出现数据倾斜的基本特征:个别任务处理大量数据,符合二八原则,即20%的任务处理80%的数据。2、出现数据倾斜的原因:主要是shuffle的时候,数据分配不均。3、数据倾斜最直接的后果:OOM,处理任务慢4、定位数据倾斜(1)观察spark ui中task运行的信息(2)查看log日志,分析处理任务慢的原因(3)revie

2020-07-11 08:01:37 42

转载 java泛型

https://blog.csdn.net/qq_37964379/article/details/88528997

2020-07-07 16:14:55 26

翻译 Spark之Shuffle参数调优解析

在分布式系统中,数据分布在不同的节点上,每个节点计算一部分数据,后续将各个节点的数据进行汇聚,此时会出现shuffle,shuffle会产生大量的磁盘IO,网络IO,压缩,解压缩,序列化,反序列化等操作,这系列操作对性能都是很大的负担。下面是spark2.2.0版本的shuffle的属性表,http://spark.apache.org/docs/2.2.0/configuration.html一、Shuffle 参数Property Name Default Meaning

2020-07-07 10:13:04 284

翻译 HashMap在jdk7的并发死链

https://www.cnblogs.com/wang-meng/p/7582532.html

2020-07-04 23:15:30 75

翻译 线程安全集合类

1、老版本线程安全集合类HashTable,Vector2、Collections装饰的线程安全集合Collections.synchronizedCollection();Collections.synchronizedList();Collections.synchronizedMap();Collections.synchronizedSet();Collections.synchronizedNavigableMap();Collections.synchronizedNav

2020-07-04 22:15:45 57

翻译 JVM方法区详解

线程共享角度来分析运行时数据区栈,堆,方法区的交互

2020-07-04 14:49:04 211

翻译 Atomic详解

举个例子,比如说10个线程分别对data执行一次data++操作,我们以为最后data的值会变成10,其实不是。因为多线程并发操作下,就是会有这种安全问题,导致数据结果不准确。public class Test { private int data=0; //多个线程对一个data不停的累加1操作}针对并发问题,可以加锁(比如内置锁或者lock),还有一种方式是使用Atomic相应的类和方法保证在并发下数据的准确性一、AtomicAtomicInteger ,AtomicB...

2020-07-02 21:56:45 104

翻译 Spark之jvm调优

一、spark内存模型Spark1.6之前使用的内存模型是StaticMemoryManager实现,1.6之后使用UnifiedMemoryManager实现。spark支持用参数spark.memory.useLegacyMode来配置使用哪种内存管理模式。Executor内存使用(1)RDD存储当调用RDD的persist或者cache时,RDD的分区会被存储到内存里(2)shuffle需要用缓存区存储shuffle的输出和聚合的中间结果(3)用户代码编写的代码使用

2020-06-30 07:39:07 84

翻译 并发编程之线程池详解

juc线程池最重要的接口是ExecutorService,ThreadPoolExecutor类是线程池的具体实现一、线程池状态ThreadPoolExecutor中使用int的高3位来表示线程池的状态,低29位表示线程数量状态名 高3位 接受新任务 处理阻塞队列任务 说明 Running 111 Y Y ShutDown 000 N Y 不会接受新任务,但是会处理阻塞队列的剩余任务 stop 00.

2020-06-29 22:56:26 53

翻译 Spark之Mapper端和Reduce端调优

Spark在shuffle分为两部分,Mapper端和Reduce端一、Mapper端调优假设Mapper端有3个Task,task1,task2,task3,Reducer有两个Task,task1,task2数据传输到Reducer端的时候首先进行Mapper端的处理,Mapper端的处理很简单,Mapper端有一个Cache写入文件,Mapper端的缓冲层根据Reducer端的需要,将数据分成既定的分区。Reducer端抓取属于自己的数据进行Reduce操作,Reduce端也有Cach

2020-06-26 21:16:52 97

原创 ElasticSearch多值字段排序和带分词的字符串排序

多值字段比如数组,假设索引test里有如下文档结构{ "dates":["2020-06-01","2020-05-02","2019-05-02"]}如果要对test里的dates排序该如何?{ “query”:{ }, "sort": { "dates": { "order": "asc", "mode": "min" } }}对于数字或日期,你可以将多值字段减为单值,这可以通过使用min、max、avg或是sum排序模式...

2020-06-23 19:16:06 744

原创 SparkContext源码详解

sparkContext核心组件:DAGScheduler,TaskScheduler,SchedulerBackend

2020-06-23 11:11:54 176

翻译 Spark的Persist和checkpoint

一、Spark有多种持久化方式1、memory_only(仅在内存中)spark会将RDD作为未序列化的java对象存于内存,如果spark估算不是所有的分区能在内存中容纳,那么Spark不会将RDD缓存,以后用到该RDD,会根据血统重新计算userRDD.cache()userRDD.persist()userRDD.persist(StorageLevel.MEMORY_ONLY)劣势:占用大量内存,如果缓存过多对象,将对垃圾回收产生压力2、memory_only_ser(仅在

2020-06-22 23:25:59 117

翻译 自定义OperatorState

自定义OperatorState实现恰好一次读取文件内容public class FileSourceWithState extends RichParallelSourceFunction<Tuple2<String,String>> implements CheckpointedFunction { private String path; public FileSourceWithState(String path){ this.path.

2020-06-21 22:35:15 72

翻译 Spark算子调优

1、使用MapPartitions替代Mapmap函数是应用于RDD的每个数据,MapPartitions是应用RDD的分区里的数据注意:如果在处理数据的时候,比较耗时(获取数据库连接),此时使用MapPartitions更合适2、foreachPartition替代foreachforeachPartition应用于RDD的每个分区,foreach是应用于RDD的每个元素3、coalesce替代rePartitioncoalesce和rePartition都是重新设置RDD分区

2020-06-20 12:16:12 51

翻译 Spark在Yarn上的性能调优

1、Spark数据本地化(移动计算,避免移动数据)(1)process_local(进程本地化)(推荐使用)代码和数据在同一个(Executor)进程中,数据在Executor的BlockManager中,性能最好(2)node_local(节点本地化)(推荐使用)代码和数据在一个节点中,主要分两种情况 i)数据在节点上,Task在节点上的Executor中运行 ii)节点上起了多个Executor,比如Executor1,Executor2,数据在Executor1的B...

2020-06-18 22:12:54 69

javaweb项目

很好的东西。。主要是一个javaweb的系统压缩文件

2014-12-28

java图书管理系统

java编写的系统,可以参考参考

2014-12-28

hadoop笔记.zip

Haddop学习笔记,涉及HDFS的详细说明文档,MapReduce的详细说明文档

2019-08-07

java常用算法

很好的算法

2015-01-03

java文档开发

java文档开发

2015-01-03

web项目开发

web项目开发

2015-01-03

空空如也

空空如也

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

TA关注的人 TA的粉丝

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