自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

沧海一粟

More know, more less

原创 JVM源码研读:章节序列

Java 虚拟机基础 JVM源码系列:JVM内部运行之Class的Method Java (JDK7)中的String常量和String.intern的实现 JVM源码系列:ThreadMXBean 打出堆栈信息原理分析 JVM源码系列:使用PrintAssembly打印java运行过程中...

2018-11-09 09:16:59 1633 1

原创 Spark 2.1.0 大数据平台源码分析:章节序列

Spark 2.1.0 大数据平台源码分析:章节序列

2017-07-27 07:13:57 3650 1

原创 Soot 静态分析框架(七)模块分析

Java 9里开始支持模块化,以一个独立的开源项目jigsaw而来, 具体可以参考链接, https://openjdk.java.net/projects/jigsaw/ 同时也可以参考JSR376标准 1. module-info 分析 在模块化的时候,需要构建module_info...

2020-01-15 17:29:29 360 0

原创 Soot 静态分析框架(六)数据流指向分析

1. 数据流指向分析 1.1 指向分析 指向分析,给定一个变量的函数,计算其可能的类型,指向信息,指向分析可以帮助其它的分析。 1.2 Soot的指向分析框架 soot提供了PointsToAnalysis ,PointsToSet接口。任何一个指向的分析都应该实现这两个接口。 Poin...

2019-10-19 10:00:03 297 0

原创 Soot 静态分析框架(五)Annotation 的实现

1. Annotation的实现 1.1 Java实现的Annotation java 的自定义注解实现,通常我们会先自定义一个注解 import java.lang.annotation.ElementType; import java.lang.annotation.*;...

2019-10-19 09:06:53 130 0

原创 soot 静态分析框架(四)Soot lambda 构建

1. JVM 的 Lambda构建 和JVM构建Lambda的方式不同,因为Lambda表达式的类是一个运行的时候动态生成的类,是通过新的JVM的指令集InvokeDynamic来实现,通过调用java/lang/invoke/LambdaMetafactory.metafactory去生成动态...

2019-10-19 08:54:39 164 0

原创 Soot 静态分析框架(三)Soot 过程分析

3.1Soot构建语法树 Soot通过objectweb来进行字节码构建成语法树 首先scene会去查找一些基础的JVM的类 基础的对象Object, Boolean, Void, Integer, Long, Float等 字符串操作:String, StringBuffer的类...

2019-09-26 15:30:38 1630 0

原创 Soot 静态分析框架(二)Soot的核心

2. Soot核心Body Body 是对应的是Java一个函数体,Body是Soot的核心,Graph、Flow的构建都是基于Body进行分析,当然你可以基于不同的IR语言构建不同的Body,soot提供了JimpleBody,ShimpleBody, GrimpBody,当然soot主要是基...

2019-09-26 15:18:34 485 1

原创 Soot 静态分析框架(一)整体框架

1. Soot 静态分析框架 Soot核心对象分别是:Scene、SootClass、SootMethod、SootField、Body。 1.1 Scene Scene:Scene表示完整的分析环境,可以通过Scene.v()调用设置Options的API,也可以获...

2019-09-26 15:10:47 833 0

原创 用Bert模型计算句子的vector

1. Bert模型 Bert模型是2018年google开源出来的NLP的模型,具体实现请参考:https://github.com/google-research/bert 2. Bert模型计算句子的vector 2.1 通过模型获取句子的encoder层 model = mode...

2019-07-21 17:57:24 1430 0

原创 从如何在Java删除乱码文件中开始说起

1. 乱码文件 为何会生成乱码文件?原因很多,在上传的过程中编码不对,操作提供不支持该编码等,如果你尝试用Java的File对象去删除文件,甚至判断是否存在该文件都会发现返回的都是False String[]entries = file.list(); for(String s: ent...

2019-03-13 16:17:06 299 0

原创 文本相似度算法之编辑距离算法

定义 编辑距离又称Leveinshtein距离,是由俄罗斯科学家Vladimir Levenshtein在1965年提出。 以字符串为例,字符串a和字符串b的编辑距离是将a转换成b的最小操作次数,这里的操作包括三种: 插入一个字符 删除一个字符 替换一个字符 举个例子, 计算learning和me...

2019-03-13 08:42:59 587 0

原创 【TensorFlow基础函数】tf.concat的用法

tf.concat 的用法 TF官方的文档 tf.concat( values, axis, name='concat' ) 连接多个Tensor的操作 values 多个Tensor axis是哪个纬度 0 代表第一纬度 1 代表第二纬度 2 代表第...

2019-02-25 21:44:31 651 0

原创 JVM源码系列:JVM内部运行之Class的Method

1. Class的属性 在JVM中,通常一个class会初始化成Klass(接口), InstanceKlass(实例), Method(方法), ConstantsPool(常量区) 在上图我们可以看到一个大概的Method,ConstantsPool,InstanceKlass之间的关...

2018-11-08 19:55:37 1071 0

原创 Tensorflow 源码分析-  从GPU OOM开始说Tensorflow的BFC内存管理

前言在平台上跑GPU训练,结果CUDA OOM了,错误提示E Internal: failed initializing StreamExecutor for CUDA device ordinal 0: Internal: failed call to cuDevicePrimary CtxR...

2018-05-04 11:46:13 6660 0

原创 Tensorflow 源码分析-会话与线程池之间的关系

1. Tensorflow 的sessionFactory创建新的会话,tensorflow使用了多工厂模式,在不同的场景下使用不同的工厂, 使用什么工厂模式由传递进来的SessionOptions来决定。1.1 注册工厂Tensorflow 提供了可以注册多会话工厂的模式,允许不同的模块注册自己...

2018-04-02 17:11:16 2340 0

原创 【TensorFlow基础函数】tf.transpose函数说明和用法

tf.transpose 函数 官网介绍https://www.tensorflow.org/api_docs/python/tf/transpose tf.transpose( a, perm=None, name='transpose', ...

2018-01-23 14:58:12 783 0

原创 Tensorflow 源码分析-GPU调用是如何实现的

1. Tensorflow GPU支持Tensorflow 支持GPU进行运算,目前官方版本只支持NVIDIA的GPU,可以在tensorflow的官方上看到。Tensorflow 对GPU的运算的支持最小力度就是OP,也就是我们常说的算子,下图提供了Tensorflow的一些常见算子,而每个算子...

2017-12-21 10:22:30 6835 0

原创 案例分享:如何通过JVM crash 的日志和core dump定位和分析Instrument引起的JVM crash

1. JVM crash了产品发来一份crash report, 什么是crash report请参考我的前期博客(http://blog.csdn.net/raintungli/article/details/7642575),下面是截取了crash report的部分,用于分析:# Probl...

2017-09-02 11:04:12 7129 2

原创 深度学习:神经网络中的前向传播和反向传播算法推导

1. 神经网络这是一个常见的神经网络的图:这是一个常见的三层神经网络的基本构成,Layer L1是输入层,Layer L2是隐含层

2017-08-08 16:53:27 40217 16

原创 大数据:Spark mlib(三) GradientDescent梯度下降算法之Spark实现

1. 什么是梯度下降?梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。先来看两个函数:1.  拟合函数:θ&q...

2017-07-10 15:24:34 3147 0

原创 大数据:Spark 算子(一)排序算子sortByKey来看大数据平台下如何做排序

1 前言在前面一系列博客中,特别在Shuffle博客系列中,曾今描述过在生成ShuffleWrite的文件的时候,对每个partition会先进行排序并spill到文件中,最后合并成ShuffleWrite的文件,也就是每个Partition里的内容已经进行了排序,在最后的action操作的时候需...

2017-06-26 16:42:13 5911 0

原创 大数据:Spark mlib(二) Naive bayes朴素贝叶斯分类之多元朴素贝叶斯源码分析

1. 什么是朴素贝叶斯朴素贝叶斯是一种构建分类器,该分类器基于一个理论:所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关2. 朴素贝叶斯概率模型概率模型分类器是一个条件概率模型:(独立的类别特征C有若干类别,条件依赖于若干特征变量F1,F2,...,Fn)      贝叶斯定理:  我们可...

2017-06-23 14:36:26 2410 0

原创 大数据:Spark mlib(一) KMeans聚类算法源码分析

1. 聚类1.1 什么是聚类?所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用算法将集合D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高,其中每个子集叫做一个簇。1.2 KMeans 聚类算法K-Means聚类算法主要分为如下几个...

2017-06-09 12:22:17 5143 0

原创 大数据:Spark Shuffle(三)Executor是如何fetch shuffle的数据文件

1. 前言在前面的博客中讨论了Executor, Driver之间如何汇报Executor生成的Shuffle的数据文件,以及Executor获取到Shuffle的数据文件的分布,那么Executor是如何获取到Shuffle的数据文件进行Action的算子的计算呢?在ResultTask中,Ex...

2017-05-09 17:13:48 3722 4

原创 大数据:Spark Shuffle(二)Executor、Driver之间Shuffle结果消息传递、追踪

1. 前言在博客里介绍了ShuffleWrite关于shuffleMapTask如何运行,输出Shuffle结果到文件Shuffle_shuffleId_mapId_reduceId.data文件中,每个executor需要向Driver汇报当前节点的Shuffle结果状态,Driver保存结果信...

2017-05-03 15:07:08 3448 1

原创 大数据:Spark Shuffle(一)ShuffleWrite:Executor如何将Shuffle的结果进行归并写到数据文件中去

1. 前序关于Executor如何运行算子,请参考前面博文:大数据:Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子,当Executor进行reduce运算的时候,生成运算结果的临时Shuffle,并保存在磁盘中,被最后的Action算子调用,而这个阶...

2017-04-27 11:44:32 6096 1

原创 大数据:Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子

1. 究竟是怎么运行的?很多的博客里大量的讲了什么是RDD, Dependency, Shuffle... 但是究竟那些Executor是怎么运行你提交的代码段的?下面是一个日志分析的例子,来自Spark的example def main(args: Array[String]) { v...

2017-04-22 23:15:19 3012 0

原创 大数据:Spark Core(三)Executor上是如何launch task

1. 启动任务在前面一篇博客中(http://blog.csdn.net/raintungli/article/details/70168241#t9)介绍了Driver是如何调动、启动任务的,Driver向Executor发送了LaunchTask的消息,Executor接收到了LaunchTa...

2017-04-19 17:48:23 3252 1

原创 大数据:Spark Core(二)Driver上的Task的生成、分配、调度

1. 什么是Task? 在前面的章节里描述过几个角色,Driver(Client),Master,Worker(Executor),Driver会提交Application到Master进行Worker上的Executor上的调度,显然这些都不是Task. Spark上的几个关系可以这样理解: ...

2017-04-14 09:21:46 9608 0

原创 大数据:Spark Core (一) 什么是RDD的Transformation和Actions以及Dependency?

Spark的RDDRDD(Resilient Distributed Datasets),弹性分布式数据集,是对分布式数据集的一种抽象。RDD所具备5个主要特性:一组分区计算每一个数据分片的函数RDD上的一组依赖对于Key Value 对的RDD,会有一个Partitioner, 这是数据的分割器...

2017-04-07 17:21:36 3263 0

原创 大数据:Spark Standalone 集群调度(三)多Master节点的可用性

1. Master 单节点可用性 Master节点在Spark中所承载的作用是分配Application到Worker节点,维护Worker节点,Driver,Application的状态。 在Spark中,Master本身也提供了基于硬盘的单节点的可用性,也就是可以直接通过重启Master,M...

2017-04-01 09:37:53 8347 0

原创 大数据:Spark Standalone 集群调度(二)如何创建、分配Executors的资源

Standalone 的整体架构 在Spark集群中的3个角色Client, Master, Worker, 下面的图是Client Submit 一个任务的流程图: 完整的流程:Driver 提交任务给Master, 由Master节点根据任务的参数对进行Worker的Executor的...

2017-03-29 17:37:33 4098 5

原创 大数据:Spark Storage(二) 集群下的broadcast

Spark BroadCast Broadcast 简单来说就是将数据从一个节点复制到其他各个节点,常见用于数据复制到节点本地用于计算,在前面一章中讨论过Storage模块中BlockManager,Block既可以保存在内存中,也可以保存在磁盘中,当Executor节点本地没有数据,通过Driv...

2017-03-21 17:28:21 3924 0

原创 大数据:Spark Storage(一) 集群下的区块管理

Storage模块 在Spark中提及最多的是RDD,而RDD所交互的数据是通过Storage来实现和管理 Storage模块整体架构 1. 存储层 在Spark里,单机storage的管理是通过block来管理的,用每个块的存储可以在内存里或者在磁盘中,在BlockManager里既可以管理内存...

2017-03-21 09:26:48 5647 1

原创 大数据:Spark Standalone 集群调度(一)从远程调试开始说application创建

远程debug,特别是在集群方式时候,会很方便了解代码的运行方式,这也是码农比较喜欢的方式 虽然scala的语法和java不一样,但是scala是运行在JVM虚拟机上的,也就是scala最后编译成字节码运行在JVM上,那么远程调试方式就是JVM调试方式 在服务器端: -Xdebug -Xrun...

2017-03-09 17:41:55 4284 0

原创 Struts2远程命令执行漏洞 S2-045 源码分析

Struts2 又爆OGNL的高危漏洞S-045,又是OGNL的漏洞漏洞分析1. Struts 的上传request在上传文件里,Struts默认使用的是common upload 的上传组件, 为了能被action访问到上传的文件,通常会重新封装request,  Spring也是这么做。Jak...

2017-03-08 02:04:34 8434 3

原创 CVE-2016-1000031 Apache Commons FileUpload 反序列化漏洞深入分析

反序列化漏洞最近一直不得安宁,先有Apache Commons Collections通过反序列化实现远程代码执行,再有Spring RMI 反序列化漏洞,最新又有了common upload file的反序列化漏洞CVE-2016-1000031(https://cve.mitre.org/cg...

2017-02-20 15:45:26 8832 0

原创 Java 8 动态类型语言Lambda表达式实现原理分析

Java 8支持动态语言,看到了很酷的Lambda表达式,对一直以静态类型语言自居的Java,让人看到了Java虚拟机可以支持动态语言的目标。

2017-02-07 17:22:18 10700 10

原创 Java XML XXE 底层防御

JavaXML相关API 是由JAXP定义了相关的XML的通用接口,常见包括DOM/SAX/STAX/XPATH 的标准API Javax.xml.parsers  -> DOM/SAX Javax.xml.stream   -> STAX Javax.xml.xpath    -&g...

2016-12-07 22:10:02 5680 0

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