- 博客(142)
- 资源 (4)
- 收藏
- 关注
转载 Kafka 相关博客文档
Kafka深度解析系列(强烈推荐)Kafka 最佳实践【译】 | Matt's BlogKafka消费组(consumer group) - huxihx - 博Kafka Compression Performance TestsKafkaController分析系列Kafka运维填坑Kafka水位(high watermark)与leader epoch的讨论...
2019-03-10 08:48:48
729
转载 Hadoop 相关文档地址
Hadoop原理汇总(一)——HDFS深入理解HDFS:Hadoop分布式文件系统Hadoop 原理总结 (包含其他内容)Hadoop 面试相关,介绍一些基本的概念,很有用;HDFS 体系结构,对hdfs的拓展;NameNode、DataNode和Client三者之间协作关系及通信方式;Hadoop中Namenode单点故障;Zookeeper;DFSClient;单点故障总...
2019-02-28 22:37:58
426
转载 Linux Ubuntu 下安装JDK、Tomcat、Maven
JDKHow To Install Java on Ubuntu with Apt-GetTomcatHow To Install Apache Tomcat 7 on Ubuntu 14.04 via Apt-GetMaven安装:How to install Maven 3 on Ubuntu 15.10/15.04/14.10/14.04 LTS/13.10/13.04/12.10/
2016-12-26 14:53:05
753
原创 Vim配置、NERDTree插件安装
Vim的配置文件目录一般为 /etc/vim/vimrc,对该文件进行修改可以对Vim编辑器进行定制,注意,修改前进行备份!!!Vim原始注释的颜色为蓝色极其不清楚,将其改为灰色: highlight Comment ctermfg=green guifg=green语法高亮:syntax onTab键2个空格set tabstop=2显示行号:set nu!缩进的空格数为2:set sh
2016-12-26 14:28:41
1211
转载 Tomcat server.xml配置详解(转载地址)
Tomcat server.xml框架与基础配置详解Tomcat server.xml配置示例tomcat中server.xml配置详解
2016-12-26 10:26:20
890
转载 SpringMVC请求处理流程、Spring AOP原理--推荐阅读
Spring MVC请求处理流程图Spring AOP的实现原理Spring的AOP原理Spring AOP的底层实现技术
2016-09-18 22:21:50
1046
转载 MySQL锁机制与MVCC原理--推荐阅读
《高性能MySQL》mysql锁机制总结关于innodb中MVCC的一些理解Mysql中的MVCC
2016-09-18 21:35:29
10500
转载 java.util.concurrent并发包结构、锁——博客地址
java.util.concurrent并发包诸类概览java.util.concurrent包详细分析关于java的线程并发和锁的总结Java线程并发中常见的锁java内置锁synchronized的可重入性
2016-08-29 09:15:54
1117
转载 HTTP 协议详解
文章转自:http://kb.cnblogs.com/page/130970/当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。也希望对大家
2016-08-28 18:27:25
1062
1
转载 稀疏矩阵--三元组表示法和十字链表示法
在科学与工程领域中求解线性模型时经常出现大型的稀疏矩阵。在使用计算机存储和操作稀疏矩阵时,经常需要修改标准算法以利用矩阵的稀疏结构。由于其自身的稀疏特性,通过压缩可以大大节省稀疏矩阵的内存代价。更为重要的是,由于过大的尺寸,标准的算法经常无法操作这些稀疏矩阵。三元组表示法按照压缩存储的概念,只存储稀疏矩阵的非零元素。因此,除了存储非零元的值之外,还必须同时记录下它所在的行和列的位置(i,j)。反之,
2016-08-28 10:45:22
18696
原创 JDBC/InvocationHandler动态代理实现数据库连接池、数据源
Java的JDBC编程中,数据库的连接和关闭是十分耗费资源的。当对数据库的访问不是很频繁时,可以在每次访问数据库时建立一个连接,用完之后关闭。但是,对于一个复杂的数据库应用,频繁的建立、关闭连接,会极大的减低系统性能,造成瓶颈。所以可以使用数据库连接池来达到连接资源的共享,使得对于数据库的连接可以使高效、安全的复用。MyDataSource 实现数据库连接池 通过自定义数据库了连接MyConnec
2016-08-24 18:22:33
2487
转载 Redis/Memcached K-V缓存数据库转载地址
Redis - redis 数据类型详解以及redis适用场景场合, http://my.oschina.net/ydsakyclguozi/blog/404625Memcached - 应用 memcached 提升站点性能, http://www.ibm.com/developerworks/cn/opensource/os-memcached/
2016-08-16 17:17:08
1203
原创 本机访问VMWare Ubuntu 14.04 Tomcat站点配置
目标:在VMWare Ubuntu 14.04中的Tomcat中发布站点,本机利用ip访问该站点。安装JDK首先需要在虚拟机中安装JDK,详细过程可以参照文章雲端之风的博客:http://www.cnblogs.com/cloudwind/archive/2012/10/19/2731263.html,安装完成后按照博客中的笔记配置JDK的环境变量即可。安装Tomcat官网下载Tomcat的linu
2016-06-30 20:00:38
2443
原创 【JDK】:Fork-Join框架
概述前面的文章【JDK】:Executor框架提到Executor框架,而Fork-Join框架也与Executor框架相关的多线程并行运算的框架。Fork-Join框架有自己的适用范围。如果一个应用能被分解成多个子任务,并且组合多个子任务的结果就能够获得最终的答案,那么这个应用就适合用 Fork-Join框架模式来解决。下图给出了一个 Fork-Join框架模式的示意图,位于图上部的 Task 依
2016-05-16 20:20:35
1107
原创 【JDK】:Executor框架
在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在Java 5之后,通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好(用线程池实现,节约开销)外
2016-05-16 11:16:57
1550
转载 【JDK】:CopyOnWriteArrayList、CopyOnWriteArraySet 源码解析
CopyOnWriteArrayList
2016-05-15 21:02:35
1625
转载 【JDK】:Java容器框架——同步容器与并发容器
前面的文章中详细介绍了Java的容器框架,在此基础上,本文对Java中的同步容器与并发容器做一些介绍。fail-fast机制快速报错机制(fail-fast)能够防止多个进程同时修改同一个容器的内容。如果在你迭代遍历某个容器的过程中,另一个进程接入其中,并且插入、删除或者修改此容器内的某个对象,就会出现问题:也许迭代过程已经处理过容器中的该元素了,也许还没处理,也许在调用size()之后尺寸缩小了等
2016-05-15 21:00:58
5036
原创 【JDK】:java.lang.Integer源码解析
本文对JDK8中的java.lang.Integer包装类的部分数值缓存技术、valueOf()、stringSize()、toString()、getChars()、parseInt()等进行简要分析。Integer缓存先来看一段代码:Integer a1 = Integer.valueOf(13);Integer a2 = Integer.valueOf(13);Integer a3 = I
2016-05-14 18:45:50
1767
原创 【JDK】:ConcurrentHashMap高并发机制——【转载】
在学习ConcurrentHashMap的高并发时,找到了一些高质量的博客,就没有重复转载了。推荐文章的博客地址如下:程晓明,探索 ConcurrentHashMap 高并发性的实现机制方腾飞,聊聊并发(四)——深入分析ConcurrentHashMap
2016-05-13 09:47:39
1444
原创 【JDK】:ArrayList和LinkedList源码解析
ArrayListArrayList也叫数组列表,底层使用的数组实现的,严格来说是动态数组。ArrayList工作原理ArrayList工作原理其实很简单,底层是动态数组,每次创建一个ArrayList实例时会分配一个初始容量(如果指定了初始容量的话),以add方法为例,如果没有指定初始容量,当执行add方法,先判断当前数组是否为空,如果为空则给保存对象的数组分配一个最小容量,默认为10。当添加大容
2016-05-12 21:50:08
830
1
原创 【JDK】:java.lang.String、StringBuilder、StringBuffer 源码解析
String接口和属性String类是final不可继承的,用来存放字符数组的value[]也是final修饰的,这意味着String类是不可变的,一旦new出来就不能发生改变。因此对一个String类的对象进行任何修改(增加、删除、替换)之后,都会生成一个新的对象返回。public final class String implements java.io.Serializable, Co
2016-05-12 21:13:46
1258
原创 【JDK】:HashMap详解
Hash散列基本思想哈希表使用数组和链表共同实现散列存储,每一个数组元素可以认为是散列表中的桶位(buket),每个桶位存放一个链表,该链表由散列码(hashCode)相同的节点构成。Hash表的查找就是根据需要查找的对象(key, value)中的key,利用散列函数计算key对应的hashCode,即数组的下标(buket的索引),在O(1)时间内找到对应的桶位,再遍历该桶位内的链表,查找对应的
2016-05-12 16:45:55
658
原创 【JDK】:Java容器框架
容器框架概述在JDK8中rt.jar文件中,java.util.*;包中的容器主要包括List、Set、Queue和Map四个大类,其中List、Set、Queue是和Collection接口相关的容器,而Map是单独列出来的容器。使用astah community版绘制了容器框架的类图。Collection的List、Set、Queue类图如下:Map容器的类图如下:注意到上面的类图中有几个单独列
2016-05-12 09:16:43
3831
2
原创 【深入理解JVM】:Java内存模型JMM
多任务和高并发的内存交互多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。物理机的并发问题与虚拟机中的情况有很多相似之处,物理机对并发的处理方案对于虚拟机的实现也有相当大的参考
2016-05-07 14:00:13
24744
2
原创 【深入理解JVM】:解析与分派
解析Java中方法调用的目标方法在Class文件里面都是常量池中的符号引用,在类加载的解析阶段,会将其中的一部分符号引用转化为直接引用。(关于符号引用与直接引用,详见【深入理解JVM】:Class类文件结构)这种解析的前提是:方法在程序真正运行之前就有一个可以确定的调用版本,并且这个方法的调用版本在运行期是不可改变的,即“编译期可知,运行期不可变”,这类目标的方法的调用称为解析(Resolve)。只
2016-05-06 20:56:50
6651
原创 【深入理解JVM】:类加载器与双亲委派模型
类加载器加载类的开放性类加载器(ClassLoader)是Java语言的一项创新,也是Java流行的一个重要原因。在类加载的第一阶段“加载”过程中,需要通过一个类的全限定名来获取定义此类的二进制字节流,完成这个动作的代码块就是类加载器。这一动作是放在Java虚拟机外部去实现的,以便让应用程序自己决定如何获取所需的类。虚拟机规范并没有指明二进制字节流要从一个Class文件获取,或者说
2016-05-06 19:09:25
72783
22
原创 【深入理解JVM】:Java类继承关系中的初始化顺序
Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释。非继承关系中的初始化顺序对于非继承关系,主类InitialOrderWithoutExtend中包含了静态成员变量(类变量)SampleClass 类的一个实例,普通成员变量SampleClass 类的2个实例(在程序中的顺序不一样)以及一个静态代码块,其
2016-05-06 11:19:38
14106
3
原创 【深入理解JVM】:类加载机制
概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。与那些在编译时需要进行链接工作的语言不同,在Java语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的,例如import java.util.*下面包含很多类,但是,在程序运行的时候,虚拟机只会加载哪些我们程序需要的类。这种策略虽然会
2016-05-06 10:13:25
6466
1
原创 【深入理解JVM】:Class类文件结构
概述我们平时在DOS界面中往往需要运行先运行javac命令,这个命令的直接结果就是产生相应的class文件,然后基于这个class文件才可以真正运行程序得到结果。自然。这是Java虚拟机的功劳,那么是不是Java虚拟机只能编译.java的源文件呢?答案是否定的。时至今日,Java虚拟机已经实现了语言无关性的特点。而实现语言无关性的基础是虚拟机和字节码的存储格式,Java虚拟机已经不和包括Java语言
2016-05-05 21:08:35
3963
原创 【深入理解JVM】:内存分配与回收策略
Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数的设
2016-05-05 20:27:40
4612
2
原创 【深入理解JVM】:HotSpot垃圾收集器
相关概念并发和并行这两个名词都是并发编程中的概念,在谈论垃圾收集器的上下文语境中,它们可以解释如下。并行(Parallel):指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。并发(Concurrent):指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),用户程序在继续运行,而垃圾收集程序运行于另一个CPU上。Minor GC 和 Full GC新生代GC(Mi
2016-05-05 16:58:55
5579
原创 【深入理解JVM】:垃圾收集算法
垃圾收集算法主要有以下几种:标记-清除算法(mark-sweep)、复制算法(copying)和标记-整理算法(mark-compact)。标记-清除算法算法的执行过程与名字一样,先标记所有需要回收的对象,在标记完成后统一回收所有被标记的对象。该算法有两个问题:标记和清除过程效率不高。主要由于垃圾收集器需要从GC Roots根对象中遍历所有可达的对象,并给这些对象加上一个标记,表明此对象在清除的时
2016-05-05 16:31:21
4570
1
原创 【深入理解JVM】:垃圾收集(GC)概述
为什么要垃圾回收我们知道电脑的内存是有限的,如果一段程序申请了一块内存空间并执行完计算之后,没有释放内存,会导致这块内存被占用,那么可用内存就变少了,如果一个系统很庞大,程序中迟早会把电脑内存耗尽的。为了提高内存的使用效率,内存在使用完必须释放,这样其他程序才可能重新申请这块内存。C语言中有malloc、free等于内存分配以及内存释放的函数。而Java中使用垃圾收集机制来整理内存空间。垃圾收集的区
2016-05-05 14:43:02
823
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人