自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (1)
  • 收藏
  • 关注

原创 JDK1.8 HashMap源码解析(不分析红黑树部分)

一、HashMap数据结构        HashMap由 数组+链表+红黑树实现,桶中元素可能为链表,也可能为红黑树。为了提高综合(查询、添加、修改)效率,当桶中元素数量超过TREEIFY_THRESHOLD(默认为8)时,链表存储改为红黑树存储,当桶中元素数量小于UNTREEIFY_THRESHOLD(默认为6)时,红黑树存储改为链表存储。table即Node<k,v>[] tab...

2018-06-07 16:33:00 666

原创 求最接近cap的2次幂(tableSizeFor函数的实现)

不比cap小的2次幂(HashMap中的tableSizeFor函数)// 初始化临界值的具体实现static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1;//现将n无符号右移1位,并将结果与右移前的n做按位或操作,结果赋给n; n |= n >>&gt...

2018-06-07 11:16:41 752

原创 git基本操作

git配置Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。git提供了三级的配置:/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选...

2018-06-02 17:00:56 151

原创 Spring AOP中的JDK代理和Cglib代理

JDK动态代理是java JDK自身提供的基于接口的代理,代理类的生成速度快,而代理类的运行速度慢,适合于prototype类型Cglib代理是基于之类继承的方式的代理,能代理非基于接口的类,适合于非final修饰的类,能对public的方法进行代理,代理类的生成速度慢,而代理类的运行速度快,适合于singleton类型Spring通过判断目标类是否有实现接口来选择JDK代理和Cglib代理,如果...

2018-04-19 10:14:01 211

原创 Spring AOP如何让内部方法调用也发生代理

方法之间的调用直接使用的是原始对象,而非代理对象,因而内部调用不会产生代理public class Waiter { public void greetTo(String name) { System.out.println("greet to :" + name); } public void serveTo(String name) { ...

2018-04-17 15:47:39 5669

原创 Spring无效的事务传播行为

insertRole方法上的propagation=Propagation.REQUIRES_NEW表示不管当前上下文环境有没有事务,都重新开启一个新的事务,但实际上是不生效的。原因如下:Spring的事务管理是在通过动态代理类进入invoke方法里面的,然后判断是否需要拦截方法,需要的时候才根据注解和XML配置生成事务切面,而insertRole方法的调用是直接作用于原始对象,而不是代理对象,因...

2018-03-07 21:21:12 463

原创 Mybatis学习笔记——解析及运行原理

构造SqlSessionFactory过程采用Builder模式设计Builder设计模式:对于复杂对象,直接通过构造函数构造会导致大量逻辑放在构造函数中。为了简化构造逻辑,我们更希望一步一步有秩序地构造对象,从而降低其复杂度SqlSessionFactoryBuilder就是SqlSessionFactory的构造类构造过程: 通过org.apache.ibatis.builder.xml.XM...

2018-03-07 21:13:14 178

原创 Mybatis学习笔记——动态Sql

关于条件的判断if      判断语句choose (when, otherwise) 类似于switch case语句if 和 when 都需要与test属性连用,test为具体判断逻辑在判断之前都加1=1的原因是:如果不加1=1,当断语句返回false时,后面判断部分的sql为空,这样整体sql语句就变成了xxx where,因而会出错可以通过使用where或trim元素去掉1=1这样的语句对...

2018-03-04 19:57:05 367

原创 Mybatis学习笔记——映射

在映射器中,我们主要可以定义如下几类元素:select  查询,可以自定义查询参数和返回结果insert   插入,执行后返回一个整型,代表插入的条数update、deletesql  允许定义一部分SQL,在其它地方应用它resultMap  用来描述数据库结果集返回对象(和select中的resultType作用相同,select中只能二选一)cache、cache-ref  定义和引用缓存策...

2018-03-02 19:40:29 650

原创 Mybatis学习笔记——入门+配置

1. MyBatis入门2. Mybatis配置PS:XML文件的层次结构不能调到顺序,如果颠倒,会解析失败2.1 properties配置2.1.1 三种配置的方式及加载顺序        3. 通过程序加载        常用于对数据库密码进行解密,配置文件中配置密文,程序解析成明文之后再传给Mybatis properties.setProperty("username", decode(p...

2018-02-28 21:20:15 181

原创 Storm中的worker Executor Task

Storm在集群上运行一个Topology时,主要通过以下3个实体来完成Topology的执行工作: Worker(进程) Executor(线程) Task 下图简要描述了这3者之间的关系: 1个worker进程执行的是1个topology的子集(注:不会出现1个worker为多个topology服务)。1个worker进程会启动1个或多个executor线程来执行1个

2016-12-23 21:53:02 369

原创 String,StringBuffer、StringBuilder的那些事

public class StringText { public static void main(String[] args){ String s1,s2,s3,s4; s1 = new String("123"); s2 = new String("123"); s3 = "123"; s4 = "123"; S

2016-12-23 21:47:39 177

原创 String、StringBuffer、StringBuilder区别

StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都 会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。既然可变和不可变都有了,为何还有一个StringBuilder呢?相信初期的你,在进行append时,一般都会选择StringBuffer

2016-12-23 21:39:25 171

原创 节点的网络拓扑距离

The idea is that the bandwidth available for each of the following scenarios becomes progressively less:1. Processes on the same node2. Different nodes on the same rack3. Nodes on different racks in

2016-12-23 21:36:31 3522

原创 HDFS写文件过程

客户端调用create()来创建文件DistributedFileSystem用RPC调用元数据节点,在文件系统的命名空间中创建一个新的文件。元数据节点首先确定文件原来不存在,并且客户端有创建文件的权限,然后创建新文件。DistributedFileSystem返回DFSOutputStream,客户端用于写数据。客户端开始写入数据,DFSOutputStream将数据分成块,写入data que

2016-12-23 21:32:05 503

原创 Replica Placement(副本放在位置)

There’s a trade- off between reliability and write bandwidth and read bandwidth herethe first replica on the same node as the client (for clients running outside the cluster, a node is chosen at rando

2016-12-23 21:27:04 408

原创 RawCompare

TextPair 包含了两个Textpublic static class FirstComparator extends WritableComparator {private static final Text.Comparator TEXT_COMPARATOR = new Text.Comparator(); public FirstComparator() { super

2016-12-23 21:24:43 274

原创 Row-oriented layout  &  Column-oriented layout

现需查询column2 对于基于行存储的表,需要先把每行加载到内存,然后反序列化相应的列(可以节约反序列化整行的时间),但还是浪费了读磁盘的时间对于基于列存储的表,可以直接读取相应的列,然后进行反序列化

2016-12-23 21:20:28 303

原创 MultithreadedMapper的使用

当Map处理每条记录时都很耗时,可以考虑MultithreadedMapper摘自Definition中的一段话: 对于计算密集型型任务,使用MutithreadedMapper不会带来性能提升 2.对于IO密集型任务而言,如联网操作,使用MutithreadedMapper可能会带来性能提升

2016-12-23 21:09:20 474

转载 MapReduce 中的两表 join 几种方案简介

1. 概述在传统数据库(如:MYSQL)中,JOIN操作是非常常见且非常耗时的。而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独特设计思想,当进行JOIN操作时,有一些特殊的技巧。本文首先介绍了Hadoop上通常的JOIN实现方法,然后给出了几种针对不同输入数据集的优化方法。2. 常见的join方法介绍假设要进行join的数据分别来自File

2016-12-23 20:58:13 226

转载 SQL 查询横表变竖表

SQL 查询横表变竖表/*普通行列转换假设有张学生成绩表(tb)如下:Name Subject Result张三 语文  74张三 数学  83张三 物理  93李四 语文  74李四 数学  84李四 物理  94*/------------------------------------------------

2016-12-23 20:55:56 3221

推荐系统数据全集

该数据集几乎包含了目前网络上流传的所有推荐系统数据集,包括Epinions,MovieLens,delicious,lastfm,YahooMusic,ml-100k,ml-latest-small等

2017-12-27

空空如也

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

TA关注的人

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