自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 jdk 1.7 1.8 HashMap 源码分析

好久不写博客了 从今天开始针对常见面试题写博客 本篇简单分析 jdk1.7 HashMap源码先写好简单测试类 ,然后用idea(神器) debug进入源码中,初始大小为3,装载因子为0.75,我们先进入构造函数看看!我们先看构造函数源代码啊可以看到,我们自己初始化的大小为3(initialCapacity),构造函数中 capacity要找到一个数为2的n次幂最接

2018-01-11 13:24:19 418

原创 离线日志分析平台实战 需求分析

 java sdk 需求分析由于在本次项目中java sdk的作用主要就是发送支付成功/退款成功的信息给nginx服务器,所有我们这里提供的是一个简单版本的java sdk。Java sdk执行工作流工作流如下所示:(退款类似)分析程序后台事件分析本项目中在程序后台只会出发chargeSuccess事件,本事件的主要作用是发送订单成功的信息给nginx服务器。发送格式...

2018-11-06 16:16:29 1221

原创 推荐系统架构

  数据加载     Flume 数据源->数据存储系统source->channel->sink   三个组件构成一个agentchannel 是缓存区  source数据源  sink 数据库存储系统     Sqoop 介绍     ...

2018-11-05 19:04:57 2088

原创 hive 项目实战(2)

建表创建表这里总共需要创建4张表,明明只有两个数据文件,为什么要创建4张表呢?因为这里创建的表要使用orc的压缩方式,而不使用默认的textfile的方式,orc的压缩方式要想向表中导入数据需要使用子查询的方式导入,即把从另一张表中查询到的数据插入orc压缩格式的表汇中,所以这里需要四张表,两张textfile类型的表user和video,两张orc类型的表user_orc和video_or...

2018-11-01 18:54:33 593

原创 hive 项目实战 (1) 谷粒影音需求分析

 数据源 video.txt  数据样例:fQShwYqGqsw    lonelygirl15    736    People & Blogs    133    151763    3.01    666    765    fQShwYqGqsw    LfAaY1p_2Is    5LELNIVyMqo    vW6ZpqXjCE4    vPUAf43vc-Q    Z...

2018-11-01 15:15:17 1270

原创 电信项目 第一天

模拟生成数据略 配置flume kafka 接受数据 让hbase消费zookeeper 地址192.168.36.139:2181,192.168.36.139:2182,192.168.36.139:2183 kafka创建主题kafka-topics.sh --zookeeper 192.168.36.139:2181,192.168.36.139:2182,19...

2018-10-29 22:06:43 894

原创 librec nfm实现笔记

 FM如下图 一般一个场景一共n个特征  xi是其中一个特征  对应到一阶wi为一个数 对应到二阶就是一个特征向量vi 与另一个特征向量vj的内积。向量长度一般称为embedding_size  fm在于刻画任意两个联合特征的影响。    NFM 核心部分Bi-Interaction Layer 就是任意两个k维特征向量做element-wise 乘积然后相...

2018-10-29 16:54:15 1473

原创 八天学会hadoop (6) hbase

hbase 基于Hdfs 文件系统  hbase 支持随机高速访问hbase 没有事务特性 hbase不能处理联合关系处理 比如mysql 里面的join hbase优点在于存放非常大的表 百万行 百万列 支持随机高速访问 Hbase 表结构表名->行键->列族(column family)->列名(qualifier)->版本号 具体请查看...

2018-10-27 21:34:15 206

原创 八天学会hadoop (5) hadoop 高可用 hive 入门

Hadoop 高可用 想要高可用 必须有两个namenode 一个active 一个standby  namenode中的edits文件由第三方qjournal(依赖zookeeper)保存。   hive 流程  首先是create语句 会创建一些元信息存到元数据库 比如表名 创建时间 下次执行查询语句 先经过hive的compiler模块生成java...

2018-10-27 21:02:52 402

转载 八天学会hadoop (4) 了解zookeeper

zookeeper 感性认识 存储一些少量数据 数据分布式一致Zookeeper 节点类型Zookeeper 角色客户端读数据可以连接 observer 提高读取速度 但是observer不参与投票过程    Dubbo 与zookeeper的关系     Dubbo建议使用Zookeeper作为服务的注册中心。1.   Zo...

2018-10-27 11:10:21 143

原创 八天学会hadoop (3) 流量排序统计实战

流量统计实战 先复习一波hadoop shuffle的过程1.map task 过程中会把数据写入到内存中,在spill写入之前,会先进行二次排序,首先根据数据所属的partition进行排序,然后每个partition中的数据再按key来排序。2. 接着会进行combine过程(如果设置了combiner了的话) combine本身也是一个reducer 会对写入到磁盘的数据...

2018-10-26 17:48:56 393

原创 八天学会hadoop(2) yarn流程

hdfs 源码分析FileSystem.get --> 通过反射实例化了一个DistributedFileSystem --> new DFSCilent()把他作为自己的成员变量 在DFSClient构造方法里面,调用了createNamenode,使用了RPC机制,得到了一个NameNode的代理对象,就可以和NameNode进行通信了FileSystem --> Di...

2018-10-26 15:43:07 398

原创 八天学会hadoop (1) 数据同步 rpc

1 hadoop 下载hdfs文件到本地拿到hdfs的输入流(把hdfs的文件搬运到内存)   拿到本地文件输出流(java)把内存搬运到本地文件 2 hadoop 数据同步的过程元数据信息指的是文件的大小 名称 修改时间 地址 创建时间等等edits 文件与fsimage文件合并在 secondary namenode里面  3 rpc 底层原理 ...

2018-10-25 15:42:27 1065 2

原创 字节码指令简介

2018-04-18 22:41:08 211

转载 class字节码理解 二

拖了好久啊,终于写着第二篇啦,第一篇主要是分析了class文件的常量池结构。class文件并不是一堆字节码的简单排列,他们都有自己的结构,jvm主要就是对这些结构进行解释执行的,对于执行次数频繁的代码,jvm会生成机器码以加快执行效率。好了,废话不多说,接下来继续分解。以下class文件依次描述了类,接口;字段;方法;注:除特殊说明外,下面所写的0010,0001什么的都是16进制。1.类,父类,...

2018-04-17 23:28:07 273

转载 class字节码理解 1

class文件是编译器编译之后供虚拟机解释执行的二进制字节码文件,不只是java, 比如Groovy,JRuby,FANTOM,Jython,和Scala。这是在jvm上运行的5大脚本语言。下面就带你分析一个class的字节码文件,class文件只有无符号数和表两种基本的数据类型,u1,u2,u4,u8代表1个字节,2个字节,4个字节,8个字节的无符号数。表是由无符号数和表组合而成的结构,说表觉得...

2018-04-17 23:26:38 496

转载 垃圾回收器

GC算法 垃圾收集器概述垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃圾回收主要集中于 java 堆和方法区中,在程序运行期间,这部分内存的分...

2018-04-17 08:15:44 152

转载 垃圾收集器比较

转载地址 https://blog.csdn.net/u010798968/article/details/72864860Serial:串行收集器,JVM client模式下的默认收集器,使用复制算法,在进行垃圾回收时会暂停其他所有的工作线程(stop the world,简称STW)直至回收结束,因此会影响用户的正常使用体验,但是因为少了多线程切换的开销,相较于其他收集器能够更加专注于垃圾回收...

2018-04-16 22:57:26 279

转载 jdk1.6 对锁做的优化

JDK1.6对锁做了很多优化,轻量级锁和偏向锁是其中两种优化手段,我把主要的几种优化都简单介绍下吧:自旋锁背景:互斥同步对性能最大的影响是阻塞,挂起和恢复线程都需要转入内核态中完成;并且通常情况下,共享数据的锁定状态只持续很短的一段时间,为了这很短的一段时间进行上下文切换并不值得。原理:当一条线程需要请求一把已经被占用的锁时,并不会进入阻塞状态,而是继续持有CPU执行权等待一段时间,该过程称为『自...

2018-04-14 19:04:22 540

原创 ssl握手过程

a是客户端  b是服务端1.服务端配置好证书,用证书的私钥加密服务端的公钥,发到客户端2.  客户端用证书的公钥解密 拿到服务端的公钥 客户端随机生成对此加密的密钥  然后再用公钥加密对称密钥传给服务端3 服务端收到 用服务端私钥解密 拿到对话的对称密钥4 然后发送消息以后都用对称密钥进行加密。...

2018-04-09 15:47:11 284

原创 tcp 如何保证可靠传输 tcp udp 报头格式的区别

一  建立连接tcp udp 报头格式里面 tcp有着 SYN ACK FIN的标记位 ,这些标记位用于建立 释放连接使用。SYN=1 表示发送方想要建立一个连接   ACK=1 的时候确认序号才有效。FIN=1 表示发送方想要停止发送数据,想要断开连接,但是可以接受数据。二 超时重传2.1 超时重传为每一个报文段设置超时时间,超过超时时间还没有收到确认,发送方就会重传这个报文段。2.2 连续三次...

2018-04-05 16:17:57 192

转载 动态绑定 静态绑定

程序绑定的概念:绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定.静态绑定:在程序执行前方法已经被绑定(也就是说在编译过程中就已经知道这个方法到底是哪个类中的方法),此时由编译器或其它连接程序实现。例如:C。针对java简单的可以理解为程序编译期的绑定;这里特别说明一点,java当中的方法只有final,static...

2018-04-02 16:27:57 290

转载 异常分类

ava异常机制异常是程序运行过程中出现的错误。本文主要讲授的是Java语言的异常处理。Java语言的异常处理框架,是Java语言健壮性的一个重要体现。Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception。Java异常体系结构呈树状,其层次结构图如图...

2018-03-29 15:15:34 2189

转载 转发与重定向的区别

一句话,转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程:转发过程:客户浏览器发送http请求----》web服务器接受此请求--》调用内部的一个方法在容器内部完成请求处理和转发动作----》将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍...

2018-03-27 17:03:11 166 1

原创 notfiy notifyall区别

异步  异步就是两者是独立的 比如页面发起ajax请求 我们也能操作浏览页面其他的东西同步 同步指的是两者有顺序 要进行排队 先来的先处理完 后来的才能开始处理wait() notify() 所有对象都有这两个方法   wait释放锁  notify不立马释放锁下面分析一个 notifyall()  notify()的问题  这是一个多线程生产者 消费者的问题  使用 wait notify进行模...

2018-03-18 12:04:50 796 1

原创 记录一些面试题

mysql索引的类型普通索引 index 没有限制 既可以不唯一 也可以为空唯一索引 unique  必须唯一 可以为空主键索引 primary key 唯一 不能为空全文索引 fulltext组合索引https 用了ssl协议 非对称加密 所以是安全的String 不可变两个原因   String 本质是 final 字符数组 value[]   说明value指向的地址不可变  但是本身数组内...

2018-02-20 17:43:40 181

原创 BeanFactory初始化

先从上图红点debug进入代码configLoacations 指的是你的资源文件位置,此处指的就是classPath下的applicationContext.xmlrefresh默认为true, parent我们没传为空。我们顺便来看看classPathxmlApplicationContext的继承关系setConfiglocations是classPathXmlApplicationCont...

2018-02-10 22:29:02 1783

原创 IOC容器及其原理(一)

一个bean诞生需要经过两个阶段,容器启动阶段和Bean实例化阶段。下面我们通过这个图来说明        加载 解析配置信息,主要就是依靠ResouceLoader来加载并且解析资源(xml文件),然后封装成了Resouce。        装配BeanDefinition 就是BeanDefinitionReader读取Resource 转换为BeanDefinition, BeanDefit...

2018-02-10 20:05:16 3697

原创 网易云别人的面经 我试着写出答案

针对这个面经https://www.nowcoder.net/discuss/35362?type=2&order=0&pos=17&page=2写一些部分答案hashmap如何解决链表过长?红黑树有哪些特性?链表过长就会转化为红黑树,提高查找效率。红黑树的特性 1. 根节点是黑色 2 每个红色节点的叶子节点都是黑色 3 从任意节点到每个叶子节点的路径中,都包含相同数目的黑色节点。

2018-02-05 22:16:33 901

原创 CompletionService ExecutorService区别

Java中ExecutorService和CompletionService区别我们现在在Java中使用多线程通常不会直接用Thread对象了,而是会用到java.util.concurrent包下的ExecutorService类来初始化一个线程池供我们使用。之前我一直习惯自己维护一个list保存submit的callable task所返回的Future对象。在主线

2018-02-05 17:04:49 392

原创 同步工具 semaphore countdownlatch使用小结

semaphore 控制访问共享资源的最大线程数  semaphore.acquire获得许可证    semaphore.release释放许可证下面这个代码最多运行3个打印机工作,初始许可证的数目为3 semaphore = new Semaphore(3);public class PrintQueue { /** * 信号量控制打印者的访问 */

2018-02-05 14:17:12 910

原创 读写锁

小结一下;读锁是共享的,多个线程可以同时获得读锁。写锁是互斥的,只要有写就是互斥的,比如线程a获得了写锁(lock.writlock),没有释放,那么其他线程不能获得这个写锁,也不能获得对应的读锁(lock.readlock),也就是有写线程获得了写锁没有释放,那么读线程,写线程都会堵塞。

2018-02-04 21:11:47 126

转载 java 方法区

首先要说明的是,此文章转载自 http://blog.csdn.net/zzhangxiaoyun/article/details/7518917 谢谢作者。另外,这里ps一下,Class对象是存放在堆区的,不是方法区!这点很多人容易犯错。类的元数据(元数据并不是类的Class对象!Class对象是加载的最终产品,类的方法代码,变量名,方法名,访问权限,返回值等等都是在方法区的)才是存在方

2018-02-03 20:09:26 261

原创 再学习类加载过程

1.加载类加载就是指将类的二进制class文件读入到内存中,然后将其放在方法区,在堆区创建一个class对象,作为访问这些数据的接口。2. 验证验证的目的是为了确保Class文件中的字节流包含的信息符合当前虚拟机的要求,而且不会危害虚拟机自身的安全。不同的虚拟机对类验证的实现可能会有所不同,但大致都会完成以下四个阶段的验证:文件格式的验证、元数据的验证、字节码验证和符号

2018-02-03 19:47:44 118

原创 syncronized 底层原理

如果对上面的执行结果还有疑问,也先不用急,我们先来了解Synchronized的原理,再回头上面的问题就一目了然了。我们先通过反编译下面的代码来看看Synchronized是如何实现对代码块进行同步的:1 package com.paddx.test.concurrent;2 3 public class SynchronizedDemo {4 public void m

2018-02-03 18:48:17 614

转载 b 树 b+树

转载: https://www.cnblogs.com/ivictor/p/5849061.htmlB树和B+树的区别 如图所示,区别有以下两点:1. B+树中只有叶子节点会带有指向记录的指针(ROWID),而B树则所有节点都带有,在内部节点出现的索引项不会再出现在叶子节点中。2. B+树中所有叶子节点都是通过指针连接在一起,而B树不会。 B+树的优点:1. 非叶子节点不会带上ROWID,这样,一...

2018-02-01 16:44:51 147

原创 建立索引的原则

小结经常查询的字段,order by ,gropu by后面字段,按范围查找的字段要建立索引。重复值很多,如性别字段,不要建立索引。多表关联查询的时候,关联字段要建立索引。复合索引的工作原理,复合索引有多个字段,先是按照第一个字段排序,第一个字段排序后相同的记录再按照第二个字段排序。索引where语句后面必须用到第一个字段,如果只用到第二个字段不用第一个字段,索引不会有用。

2018-02-01 15:07:58 277

原创 简单工厂 工厂方法 抽象工厂

代码参考地址 https://github.com/liuqidong/javase/tree/a5afb4e10a4929862d30c1e817ff471add0f7973/PatternDemo/src/main/java/com/bjsxt/factory/simplefactory简单工厂也叫静态工厂,就是通过静态方法,通过不同的参数构建不同的对象。uml图如下 

2018-02-01 13:58:08 223

原创 双亲委托机制

当前类applicationclassloader加载类的时候,首先查看这个类是否被加载过,被加载过直接返回,没有加载过会委托父类尝试加载,父类没有加载过会继续委托其父类,一直到bootstrapclassloader。这样做的好处就是避免用户自己恶意写了一些与基础类相同名字类所造成的错误。从上面可以看出loadClass方法调用了loadcClass(name,false)方法,

2018-01-31 20:57:45 282

原创 ThreadLocal 的工作原理

我们首先来看看set函数吧public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) map.set(this, value); else createMap(t,

2018-01-22 21:41:58 257 1

空空如也

空空如也

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

TA关注的人

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