- 博客(29)
- 资源 (5)
- 收藏
- 关注
原创 Hive的三种存储格式
准确的来说,Hive是一个将Hive SQL的解释、编译成Hadoop MapReduce任务的工具。数据存储在Hdfs上,默认支持三种文件格式:TEXTFILE、SEQUENCEFILE、RCFILE(允许自定义格式)。其中TEXTFILE和SEQUENCEFILE都是基于行存储的,RCFILE基于行列混合存储(按行把数据分成多个row group,在row group中对每个列分别进行存储
2017-12-06 16:33:01
1146
原创 多线程相关概念整理
一、为什么要使用多线程(并发与并行) 如果仅针对单核CPU,多线程适合于任务执行期间需要等待返回结果的场景。一个任务进入等待后,CPU进入空闲,这时把CPU资源分配给其他线程执行。这个多个任务在单CPU上的切换,就是并发。CPU在线程上切换的时间一般小于任务等待的时间,所以多个线程并发执行会提高程序执行效率。而对于多核CPU或者多个CPU的,CPU除了并发外,多个CPU上不同线程还能同时的
2017-11-07 11:41:32
346
原创 Spring MVC工作原理
一、用户发磅请求,web.xml中servlet-mapping映射到DispatcherServlet二、DispatcherServlet调用doService->doDispatch,1、通过HandlerMapping找到对应的handler,并构建一个HandlerExecutionChain,它包含handler和HandlerMapping本身的一些拦截器,返回给Disp
2017-11-02 15:14:27
315
原创 Dijkstra最短路径算法
Dijkstra最短路径算法是一种单源最短路径算法,该算法要求路径上任意两点间路径为非负权边。用于计算从路径中指定的顶点到其他所有的顶点的最短路径。所以广泛应用于能够建模为图的问题中,用以查找两个节点最短路径。 算法实现原理 从最小的子路径开始(只包含一个顶点A1),遍历添加其他顶点(Ai)到子路径中,每次重新计算起始点到其他顶点的最短距离(只影响到与Ai相连的顶点
2017-10-27 18:03:11
846
原创 Hadoop理论基础
一、Hadoop的本质数据的存储:HDFS(Hadoop Distributed File System),来源于GFS(Google File System)数据的计算:分布式计算二、分布式文件系统-HDFS(参考GFS)解决传统式文件系统的问题:硬盘不够大:文件保存在内存,分布于多个数据结点(DataNode),通过名称结点(NameNode)管理扩增数据不安全: 一个
2017-10-26 16:56:56
384
原创 mysql中MyISAM引擎和InnoDB引擎差别
基本差别:MyISAM类型不支持事务处理等高级功能,而InnoDB支持。MyISAM类型不支持等级锁,而InnoDB支持。MyISAM类型不支持外键,而InnoDB支持。MyISAM类型的表强调的是性能,其执行速度比InnoDB更快。细节差别:1、innoDB不支持FULLTEXT类型的索引2、innoDB中不保存表的具体行数,执行select count(*) fro
2017-10-26 16:55:10
395
原创 偏向锁、轻量级锁、重量级锁
Java SE1.6为了减少获得锁和释放锁所带来的性能消耗,引入了“偏向锁”和“轻量级锁”的概念,所以在Java SE1.6里锁一共有四种状态:无锁状态,偏向锁状态,轻量级锁状态和重量级锁状态,它会随着竞争情况逐渐升级。锁可以升级但不能降级,这种策略目的是为了提高获得锁和释放锁的效率。偏向锁 Hotspot的作者经过以往的研究发现大多数情况下锁不仅不存在多线程竞争,而且总
2017-10-26 16:44:13
377
原创 事务的四个特性
一、原子性原子性指事务包含的所有操作要么全部成功,要么全部失败回滚。因此事务的成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。二、一致性一致性是指事务必须使数据库从一个致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。一致性的必须通过原子性来实现,同时还需要逻辑的正确,保证数据的守恒。三、隔离性隔离性是指多个并发
2017-10-24 15:33:58
523
原创 阻塞非阻塞与同步异步的区别
同步与异步:同步异步关注的是消息通信机制。如果调用方等待,直到调用方返回,就叫同步,反之,调用发出后直接返回就叫异步。异步情况下,被调用者会通过通知或者回调的方式处理这个调用。阻塞与非阻塞:阻塞与非阻塞关注的是程序在等待调用结果(消息、返回值)时的状态。阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。非阻塞调用指在不能立刻得到结果之前,该调用不阻塞当前线程。
2017-10-24 11:48:55
207
原创 java IO流总结
流:流是一组有序的,有起点、终点的字节集合,是对数据传输的总称和抽象。即数据在两设备间的传输称为流,流的本质是数据传输。根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。根据处理数据类型不同分类:字符流和字节流根据数据流向不同分为:输入流和输出流根据是否直接连接数据源分为:节点流和处理流(装饰流)字符流和字节流的区别:字节流:一次读入或读出8位二进制(一个字节),能处
2017-10-24 10:13:20
258
原创 熵学习笔记
微观状态等概率原理:假设有5枚硬币,每一枚硬币要么正面(1)朝上要么反面朝上(0),“00010”就是一个微观状态,每个硬币有(0、1)两种可能,于是一共有“2的5次方=32种”可能。注意,记录微观状态的时候,“00010”和“00100”是两种不同的状态。全同粒子原理:由于这些硬币宏观上是不能被区分的,于是“00010”和“00100”这两种微观状态,对应于同一种宏观状态——
2017-10-18 09:33:33
748
原创 线性代数学习笔记
一、向量概念向量是有顺序的一组数字,每个数字都是该向量的一个因素(element) 因素横着排列的向量叫做行向量(row vector),因素竖着排列的向量叫做列向量(column vector)二、矩阵及矩阵运算矩阵乘法不满足乘法交换律:AB =! BA线性代数8件运算规则:1、x + y = y + x.2、x + (y + z) = (x + y) + z
2017-10-17 16:25:23
795
原创 概率学习笔记
概率概率是用来衡量我们对事物在跨时间后不同状态的确信度。 一、什么是概率概率是观察者畅想一个状态从某个时间点变化到另一个时间点后的确信度。概率:是将样本空间内的子集投向概率空间的函数。结果:可能到达的状态。样本空间:所有可能发生的结果所组成的集合。事件:样本空间的子集。 二、条件概率条件概率是新信息对样本空间进行调整后的概率情况。公式:P(A|B)
2017-10-16 17:43:07
402
原创 五种常用算法理解
分治法:将问题实例划分成几个较小的子问题(可以递归的划分),然后对这些较小的子问题求解,合并这些较小的子问题,以得到原始问题的解。有点类似Map/Reduce思想。主要区别在于:Map/Reduce的关键是把一个大的任务,拆分成尽可能多的小任务,再合并子任务的解。任务本身往往并不复杂,主要是计算量大,基本做一次水平的拆分就够了。而分治法则是把一个不太容易解决的问题,拆分成几个小点儿的问题(
2017-10-13 16:30:20
4460
原创 八皇后问题递归实现
八皇后的问题大家应该都不陌生,问题简单描述如下:在8*8的国际象棋棋盘上,摆放8个皇后,使它们两两间不能互相攻击(不能在同一行,同一列,同一对角线)。上学时,用的回溯的算法解决,今天重新思考这个问题,发现用递归也很容易实现。分析:要在n*n的棋盘上摆放n个皇后,则至少每一行,每一列有且只有一个皇后。问题解决的必要条件是在前n-1列的棋盘上要摆放n-1个皇后。再检查每n列的每一格:在该位
2017-10-12 16:40:04
424
原创 使用Jena访问RDF数据库环境搭
RDF:资源描述框架,RDF使用XML语法和RDF Schema(RDFS)来将元数据描述成为数据模型。XML:可扩展标记语言元数据:即Metadata,又称中介数据、中继数据,为描述数据的数据,主要是描述数据的属性信息。Jena:一个用于构造语义网(Semantic Web)及关联数据(Linked Data)应用的Java开源构架。Semantifc Web:即语义网,通过给全球信息网上文档添加能够被计算机理解的语义元数据,从而使整个互联网成为一个通用的信息交换媒介。Linked
2017-10-12 16:16:23
3677
2
原创 Web项目常见编码问题总结
Web项目开发过程中经常遇到中文乱码的问题。一般项目都使用UTF-8编码,在项目的初始阶段都要对项目、环境的文件编码进行设置。
2017-07-05 21:07:39
2131
原创 java接口压力测试
根据用户输入的线程数,创建多个线程,每个线程串行的发送n/c个请求(其中n为请求数,m为线程数)。并且实时的反馈,完成的请求数,以及成功接收返回结果的请求数量。
2017-05-09 21:23:54
13715
1
原创 Ant + Ivy 管理项目依赖
在该目录 下执行ant,可以看生成一个lib目录,下面放着个ant-2.7.1.jar。Ivy-module元素中的version定义了此文件使用的ivy的版本。在info元素中你可以定义自己的组织信息和模块的名称;关键是配置dependency标签,dependency元素定义具体的依赖信息,我们使用org、name和rev来唯一标识依赖项。其中org是组织信息,name是模块名称,rev是模块的版本。Ivy默认使用maven2组件仓库,所以我们可以去mvnrepositoy.com找到我们需要的模块信息
2017-03-16 23:20:06
3635
原创 java序列化
java通过serialVersionUID来控制对象的序列化、反序列化。当我们示设置serialVersionUID时,会通过类的名字、域的名字、方法的名字及已实现的接口生成一个隐式的serialVersionUID。所以类在后续的版本中,如果开发人员修改过代码,会引起serialVersionUID的值发生改变。这样原来的代码就无法向下兼容。
2017-03-08 23:13:15
375
原创 正则表达式总结
一、常用元字符\:转义符,其中:\d:匹配数字字符;\D:匹配非数字字符;\n:换行符;\r:回车符;\t:制表符;\v:垂直制表符;\f:换页符\s:匹配任意空字符,等价于[\r\n\t\v\f];\S:匹配任意空字符;\b:匹配单词边界;\B:匹配非单词边界\w:匹配包括下划线的任意字符,类似但不等价于[a-zA-Z0-9_],这里的"单词"使用Unicode字符集;\
2017-02-26 23:24:13
1462
原创 Oozie workflow.xml 视图解析
workflow.xml用于配置workflow任务动作,当job的脚本较多,解读起来比较困难,并且出现并发的时,解析就更困难了。近期在做hadoop的旧job的优化,涉及比较多Job,其中大多数,都是其他同事开发的,而workflow的解读又工作过程中不得不面对的繁琐工作。于是闲暇之余,写了一个workflow.xml文件解析工具:输入job的名称,能显示该job的流程图。
2016-12-25 14:51:51
3532
2
原创 ThreadLocal的用法
Java中除了通过共享变量,还可以通过ThreadLocal来实现多线程访问的问题。按字面理解,ThreadLocal相当于线程的局部变量 。在每个线程中为目标对象创建一个副本,这样自然避免了共享变量参数传递带来的线程安全问题。
2016-12-14 22:27:40
258
原创 多线程的三种实现
最近写多篇关于多线程的博客,这里做个总结。线程从创建到消亡的过程中,可能会经历五种状态:New:线程刚被创建。 Runnable:线程的start方法被调用后所处的状态,该状态下,线程才有了竞争时间片的可能,即可运行态。 Running:线程正在执行run方法 Dead:执行完run方法,或者被stop Blocked:线程放弃CPU使用权,进入阻塞状态。该状态下,线程可能重新...
2016-12-12 00:38:33
435
原创 管道流实现两个线程间通信
Java中实现多线程间的通信主要通过两种方式:共享变量和管道流。共享变量一般通过加锁的方式来保证线程的安全性,在之前的多篇博客中已提供了多个例子,这里不赘述。知道在使用锁的过程中,注意锁作用的对象以及锁的作用区域就可以了。
2016-12-11 22:38:56
2349
原创 Collections.synchronizedMap()与ConcurrentHashMap的区别
Collections.synchronizedMap()与ConcurrentHashMap主要区别是:Collections.synchronizedMap()和Hashtable一样,实现上在调用map所有方法时,都对整个map进行同步,而ConcurrentHashMap的实现却更加精细,它对map中的所有桶加了锁。所以,只要要有一个线程访问map,其他线程就无法进入map,而如果一个线程在访问ConcurrentHashMap某个桶时,其他线程,仍然可以对map执行某些操作。这样,Concurre
2016-12-07 00:13:14
36454
6
原创 HashMap与Hashtable区别及HashMap实现原理
Map是编码过程中喜欢经,常使用到的容器,而HashMap和Hashtable都实现了Map的,所以我们往往会把两者进行对比。HashMap和Hashtable区别Hashtable是线程安全的,HashMap是非线程安全的。Hashtable是基于老的Diactionary类实现的,HashMap是Java 1.2引进Map接口后的重新实现。Hashtable的方法,进行了锁同步,可
2016-12-04 16:52:06
2137
1
原创 synchronized关键字、ReentrantLock与原子类比较
我们先比较ReentrantLock与synchronized的用法1、ReentrantLock拥有synchronized相同的并发性和内存语义,此外还多了锁投票,定时锁等候和中断等候。线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定。使用synchronized时,如果A不释放,B将一直等待下去,无法中断。使用ReentrantLock时,如果A不释
2016-11-28 20:59:03
938
原创 Java synchronized关键字总结
Java的synchronized关键字,主要用来保证线程安全,即每次运行的结果与单个线程运行的结果一的致,避免执行结果出现二义性。当一个线程获得synchronized修饰代码时,其他线程对该代码访问将被阻塞,同一时间只允许一个线程访问该代码。Java中synchronized关键字用法主要有两种:synchronized成员方法。synchronized修饰代码块。
2016-11-20 20:40:19
328
浅析房产GIS中“以图管房”的意义.pdf
2019-09-10
《Rigid Flexibility》黄培:非公理化推理系统(NARS)
2017-09-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人