Fork me on GitHub

hbase基本概念及使用注意事项

hbase的特点

  • 多维:key是复合的,列族,列,rowkey,时间戳,操作类型构成物理存储的key
  • 稀疏:同行下不同的列可以为空,不填充null,由于列可以无限扩展这会导致空间浪费

继续阅读



spark streaming和kafka相关应用

kafka

优势

  1. kafka相比于其他消息系统能够实现有序的并行化的读取,其他的消息系统如果需要实现有序,是通过独占的形式,那样就不能并行化,每次只能有一个消费者读取数据。

继续阅读


java反编译工具介绍

反编译工具是日常开发中总会遇到需要使用的,因为我们有时在测试环境中修复了bug,但是还是重现了,可能就需要去反编译看下,是不是代码不是最新的。

继续阅读


Spring的规范,推荐使用基于构造器的注入

推荐使用基于构造器进行数据注入,不推荐使用基于变量的注入即在变量上使用注解@Autowired。因为这可以将注入字段声明为final字段。而如果使用基于变量的注入将不能支持将字段声明为final,因为final修饰的字段需要在类对象实例化时初始化,而@Autowired修饰的字段的初始化顺序在构造器调用之后。

继续阅读


DEBUG时遇到的问题

情景:基于JDK实现了一个动态代理,由于想debug下代码,打了断点,当代理对象还没调用我们实现的方法时,invoke就被触发调用了

继续阅读


乐观锁和悲观锁

乐观锁

乐观锁相对悲观锁而言,悲观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突,则返回错误信息,让用户决定做什么。

继续阅读


Java Volatile Keyword

volatile关键字被用来表示数据的读取和写入直接和主存交互,不会经过cpu缓存器。

继续阅读


同步

同步是一种并发操作机制,用来预防、避免对资源不适当的交替使用(一般称为竞争),保障交替使用资源的安全。 Java使用线程来实现并发。互斥是同步的特殊情况,即同一时间最多允许一个线程访问受保护的代码或者数据。 HotSpot VM使用监视器(monitor)对象来保障线程运行代码之间的互斥。

继续阅读


分代垃圾收集

垃圾收集器基于弱分代假设
1. 大多数分配对象的存活时间很短
2. 存活时间久的对象很少引用存活时间短的对象

继续阅读


线程管理

线程管理涉及从线程创建到终止的整个生命周期,以及HotSpot VM线程间的协调。线程管理包括Java代码创建的线程、直接与HotSpot VM关联的本地线程,以及HotSpot为其他目的的而创建的内部线程。

继续阅读


性能监控

改善性能有三个步骤要做:性能监控、性能分析、性能调优
性能监控是一种以非侵入式方式收集或查看应用运行性能数据的活动。
性能分析是一种 以侵入式方式收集运行性能数据的活动,它会影响应用的吞吐量和响应性。性能分析很少在生产环境中进行,通常是在质量评估、测试或者开发环境中,一般是性能监控之后的行为。

继续阅读



datax执行流程

datax执行流程
1. 首先开启一个job对源数据连接进行检查,判断是否是通的,检查源表有哪些字段,开启job容器,
readerJob,writerJob,job容器分割为小的task,job设置通道大小N,查询分割主键的最小值和最大值,

继续阅读


idea 快捷键

Alt+回车 导入包,自动修正
Ctrl+N 查找类
Ctrl+Shift+N 查找文件
Ctrl+Alt+L 格式化代码
Ctrl+Alt+O 优化导入的类和包

继续阅读


java 应用状态监控

1.jps
查看当前运行的java应用线程的pid
2.jmap -heap pid
查看pid运行的堆栈各个年代区域的内存占用

继续阅读


系统性能优化指标

提高应用性能和扩展性的一个目标是尽可能降低系统态CPU使用率
IPC:每时钟周期的指令数
CPI:每指令的时钟周期

继续阅读





spring事务

1.spring中实现事务控制的方式,声明式事务注解式事务

继续阅读


NIO源码测试分析

NIO即非阻塞式IO,它相比传统的IO更快且支持异步,由于它采用了通道和缓冲区的概念来读写文件,传统的以流的形式进行读写。

继续阅读




freemarker 生成word

freemarker 模板生成word导出

生成word的步骤

  1. 首先将word模板打开,在需要填入文字的地方写变量占位符${变量}

继续阅读



谈谈ECC和RSA

RSA加密算法是现在广泛使用的现代加密的第一代加密算法,它是基于大素数分解难的数学问题来保证加密算法的安全性。设计一个加密算法需要满足一个条件,就是能够找到一个满足trapdoor的函数,

继续阅读


使用rm命令的教训

平时使用rm使用的很爽,于是乎就有手快的时候,一块就可能导致将辛苦码的代码给删了~

继续阅读




感觉是idea的一个bug

近来使用idea做web开发一直使用的都很爽,直到遇到这么个奇怪的问题,就不爽了。

继续阅读




spring整合shiro遇到的问题

进来在做一个权限控制的模块,采用的shir安全框架,由于此框架入门简单快捷所以使用了此框架。
在整合spring配置shiro的文件时遇到了问题。

继续阅读



c++中的引用和java中引用的区别

c++中引用其实是对象的别名,何为对象的别名,即在传递时存的是真实数据的地址。
而java中的引用有点类似c中的指针的概念,它在参数的传递过程(这里是指类类型的参数传递)存的指向真实数据地址的地址。

继续阅读













ClassLoader理解

类加载器是负责加载类的对象。ClassLoader类是一个抽象类。如果给定类的二进制名称[1],那么类加载器会试图查

继续阅读



类加载的过程

我们知道类加载过程有5个阶段,加载,验证,准备,解析和初始化。

继续阅读


类加载的时机

类加载到卸载的生命周期:加载->验证->准备->解析->初始化->使用->卸载

继续阅读


看《战争机器》有感

这是一部改编于已故记者迈克尔 哈斯汀斯的畅销书《操纵者:阿富汗战争的可怕内幕》,影片以黑色幽默的形式聚焦美国军工联合体。原著中的核心人物是以美国前任驻阿富汗美军最高指挥官斯坦利 麦克里斯特尔为原型的四星上将。

继续阅读
















Powered by Python. Copyright © 2017.

鄂ICP备17010875号. All rights reserved.