自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

linxd

愿做你的巴扎黑

  • 博客(55)
  • 收藏
  • 关注

原创 机器学习中的特征工程详解

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/80866745最近看完一本写特征工程的书,概念清晰,内容全面,所以总结如下读书笔记,书名:Feature Engineering Made Easy,可免费试用在线阅读。1 特征认识(Feature understanding)结构化数据:可分解为观测记录和属性的数...

2018-06-30 15:33:53 3498

原创 【理解HotSpot虚拟机】串行垃圾收集器Serial和Serial Old原理

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/73839685上一篇GC垃圾收集器的对比分析分析和对比了JVM中常见的垃圾收集器,本篇先来探究串行垃圾收集器的原理。1 Serial 收集器Serial 收集器是在 DefNewGeneration 新生代上实现收集的,DefNewGeneration上分为3个区:e

2017-10-03 11:28:49 4515

原创 【理解HotSpot虚拟机】GC垃圾收集器的对比分析

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/738225871 概述目前,JVM中有四种类型的垃圾收集器。一开始接触HotSpot的垃圾收集器,很容易被许多的名字混淆,《深入理解Java虚拟机》中给每种垃圾收集起了名字(下表第二列),对应在HotSpot中的实现类(下表第三列) 类型 名称 jvm的实

2017-09-16 09:41:07 749

原创 【理解HotSpot虚拟机】类的加载机制

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/1 概述虚拟机规范规定,一个定义的类(class文件)被虚拟机加载到内存中,经过了3个过程:加载(Loading)连接(Linking) 验证(Verification)准备(Preparation)解析(Resolution)初始化(Initializatio

2017-09-01 20:25:26 1866

原创 【理解HostSpot虚拟机】class文件格式

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/728966161 概述Java编译后的class文件格式如下定义:ClassFile { u4 magic; u2 minor_version; u2 major_vers

2017-08-12 21:49:18 1948

原创 【Tomcat9源码分析】Mapper路由映射器的设计

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/转载请注明出处:http://blog.csdn.net/linxdcn/article/details/

2017-08-04 22:35:10 1254 1

原创 【Tomcat9源码分析】Container、Pipeline和Vavle设计

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/1 概述如果你对Tomcat的整个框架、组件、请求流程不熟悉,建议你先阅读以下3篇Tomcat概述性的文章,再来看本篇文章:【Tomcat9源码分析】组件与框架概述 【Tomcat9源码分析】生命周期、启动、停止概述 【Tomcat9源码分析】请求过程概述Contain

2017-07-22 20:15:52 1248

原创 【Tomcat9源码分析】NIO连接器实现

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/1 概述如果你对Tomcat的整个框架、组件、请求流程不熟悉,建议你先阅读以下3篇Tomcat概述性的文章,再来看以下文章:【Tomcat9源码分析】组件与框架概述 【Tomcat9源码分析】生命周期、启动、停止概述 【Tomcat9源码分析】请求过程概述老版本To

2017-07-16 19:53:51 3697 1

原创 【Tomcat9源码分析】请求过程概述

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/728966161 前言Tomcat的源码结构层次非常清晰,在阅读源码前有必要先了解Tomcat整个框架,然后再深入到各个组件的源码中。之前已经介绍了组件与框架概述和启动、停止与生命周期管理概述。本篇是概述性文章的最后一篇,主要介绍一下Tomcat是怎么处理一次http请求

2017-07-07 20:52:06 2634

原创 【Tomcat9源码分析】生命周期、启动、停止概述

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/72896616转载请注明出处:http://blog.csdn.net/linxdcn/article/details/72850375

2017-07-01 20:38:55 1733

原创 【Tomcat9源码分析】组件与框架概述

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/733213041 组件与框架介绍 Server:代表整个Catalina Servlet容器,可以包含一个或多个ServiceService:包含Connector和Container的集合,Service用适当的Connector接收用户的请求,再发给相应的Container来处理Co

2017-06-16 21:52:03 3172

原创 【理解HotSpot虚拟机】对象在jvm中的表示:OOP-Klass模型

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/728966161 概述HotSpot是基于c++实现,而c++是一门面向对象的语言,本身具备面向对象基本特征,所以Java中的对象表示,最简单的做法是为每个Java类生成一个c++类与之对应。但HotSpot JVM并没有这么做,而是设计了一个OOP-Klass Model。这里的 OOP 指

2017-06-15 23:03:32 7020 4

原创 【读过的书,留下的迹】MySQL技术内幕-InnoDB存储引擎

一、MySQL体系结构和存储引擎(1)MySQL存储引擎InnoDB存储引擎支持事务支持行锁支持外键支持非锁定读MyISAM存储引擎不支持事务表锁支持全文索引二、InnoDB存储引擎(1)InnoDB体系架构后台线程 Master Thread:负责数据异步刷新到磁盘,保证数据的一致性IO Thread:IO请求Purge Thread:挥手

2017-06-15 13:22:20 624

原创 【Java8源码分析】NIO包-Selector选择器

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/728966161 转载请注明出处:http://blog.csdn.net/linxdcn/article/details/72850375

2017-06-13 22:09:58 1756

原创 【Java8源码分析】NIO包-FileChannel

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/728966161 概述Java NIO 由以下几个核心部分组成:BufferChannelSelectors 相关类的使用方法可以参考Java NIO 系列教程,写的通俗易懂。本文主要从源码方面分析一下Channel类。2 Channel

2017-06-12 22:53:56 2475 1

原创 epoll源码分析——I/O复用函数总结(二)

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/728966161 概述Linux内核一旦发现进程指定的一个或多个IO条件就绪,它就通知进程。这个能力称为IO复用。IO复用的函数主要由select、poll和epoll,本文主要介绍epoll函数。epoll提供了三个函数,epoll_create,epoll_ctl

2017-06-11 21:03:26 494

原创 select/poll源码分析——I/O复用函数总结(一)

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/729839331 概述Linux内核一旦发现进程指定的一个或多个IO条件就绪,它就通知进程。这个能力称为IO复用。IO复用的函数主要由select、poll和epoll,本文主要介绍select和poll函数。poll和select的实现基本上是一致的,只是传递参数有所不同,他们的基本流程如下

2017-06-11 21:02:53 657

原创 【Java8源码分析】NIO包-Buffer类:内存映射文件DirectByteBuffer与MappedByteBuffer(二)

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/72896616

2017-06-08 21:16:53 7038 2

原创 【Java8源码分析】NIO包-Buffer类:ByteBuffer与HeapByteBuffer(一)

转载请注明出处:1 概述 Java NIO 由以下几个核心部分组成:BufferChannelSelectors相关类的使用方法可以参考Java NIO 系列教程,写的通俗易懂。本文主要从源码方面分析一下Buffer类2 Buffer类Buffer类是一个抽象类,所有的XxxBuffer均继承此类。Buffer类的作用跟BufferedRead

2017-06-07 22:31:28 3335

原创 【Java8源码分析】IO包-Reader、BufferedReader和Scanner总结

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/72886231Java的IO类型可分为两大类:面向字符流:Reader & Writer面向字节流:InputStream & OutputStream本文主要从源码方面分析一下常用的面向字符流的Reader。Reader:所有字符流的抽象父类,定义了常用输入函数

2017-06-06 22:11:55 2290

原创 【Java8源码分析】IO包-InputStream、FileInputStream和BufferedInputStream总结

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/72875258Java的IO类型可分为两大类:面向字符流:Reader & Writer面向字节流:InputStream & OutputStream本文主要从源码方面分析一下常用的面向字节流的输入流。InputStream:所有输入流的抽象父类,定义了常用输入

2017-06-06 22:11:33 1761 1

原创 【Java8源码分析】并发包-ConcurrentHashMap(二)

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/72871732上一篇并发包-ConcurrentHashMap(一)主要介绍了ConcurrentHashMap的存储结构以及容器的存取方法的源码。 ConcurrentHashMap主要采用上图所示的结构存储元素,在插入第一个元素时采用CAS算法,其余的插入、更新、删

2017-06-05 23:26:37 1124

原创 【Java8源码分析】并发包-CyclicBarrier

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/72857700CyclicBarrier允许一系列线程相互等待对方到达一个点,正如 barrier 表示的意思,该点就像一个栅栏,先到达的线程被阻塞在栅栏前,必须等到所有线程都到达了才能够通过栅栏。Cyclic的意思是这个屏障是能重复使用的。CyclicBarrier内部是基于R

2017-06-04 23:26:05 979

原创 【Java8源码分析】并发包-CountDownLatch

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/72857496CountDownLatch提供了一种能使多个线程触发同一条件,开始运行的机制。打个比方,银行金库有3把钥匙(CountDownLatch的count为3),得到一把钥匙(调用countDown函数),就离获得通行的条件越近。当3把钥匙都已经获取时(count变为0

2017-06-04 22:29:29 774

原创 【Java8源码分析】并发包-Semaphore

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/72857243Semaphore是信号量,它的作用是控制多个允许。打个比方,一个博物馆有容纳1000人的能力(Semaphore的允许是1000),假如1500人同时来参馆,只有1000人能获得允许入馆(获得锁),其余的500则需排队(阻塞),直到馆内的人离开(释放锁)才能放人入

2017-06-04 20:16:23 797

原创 【Java8源码分析】locks包-ReentrantReadWriteLock

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/728549241 ReadWriteLock的使用下面截取一段官网上的使用说明例子class CachedData { Object data; volatile boolean cacheValid; final ReentrantReadWriteLock rwl = n

2017-06-03 22:38:48 1016

原创 【Java8源码分析】locks包-ReentrantLock

1 辅助内部类在ReetrantLock内部基于AQS类实现了一个抽象类Sync同步器,对于AQS不熟悉的,可以看看这篇文章:AbstractQueuedSynchronizer同步器。基于Sync还实现了公平锁和非公平锁:公平锁 线程按照他们发出请求的顺序获取锁如果有另一个线程持有锁或者有其他线程在等待队列中等待这个所,那么新发出的请求的线程将被放入到队列中。非公平锁 当一个线

2017-06-03 11:16:32 1901

原创 【Java8源码分析】locks包-AbstractQueuedSynchronizer同步器

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/728440111 前言目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容。数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令。在jav

2017-06-02 21:32:30 1210

原创 【Java8源码分析】线程池-Executor与ExecutorService的全面剖析

转载请注明出处:http://blog.csdn.net/linxdcn/article/details/728283621 Executor接口与ExecutorService接口1.1 介绍Executor接口很简单,只定义了一个execute函数用来提交一个Runnable的任务。该方式提交的任务不能获取返回值,因此无法判断任务是否执行成功。public interf

2017-06-01 19:29:00 5242

原创 【Java8源码分析】线程-ThreadLocal的全面剖析

一、背景ThreadLocal类顾名思义就是,申明为ThreadLocal的变量,对于不同线程来说都是独立的。下面是一个例子:public class Test { public static void main(String[] args) { ThreadLocalTest threadLocalTest = new ThreadLocalTest(); fo

2017-05-31 23:19:00 1634

原创 【Java8源码分析】线程-Thread类的全面剖析

一、基本知识(1)线程特性每个线程均有优先级线程能被标记为守护线程每个线程均分配一个name(2)创建线程的方法继承Thread类,并重现run方法// 继承Thread类class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrime = m

2017-05-31 15:46:13 6086 3

原创 【Tomcat9源码分析】源码下载、编译与调试

环境以下是我编译Tomcat所采用的环境OS X Yosemite Version 10.10.5Intellij IDEA 2017.1Java version 1.8.0_65Apache Maven 3.3.9Tomcat 9.0.0.M21(1)JDK1.8Tomcat9至少需要jdk1.8版本,网上有很多java安装的教程。(2)Tomcat源码访问Tomcat下载地址,最底部

2017-05-30 22:07:24 7109 4

原创 【读过的书,留下的迹】深入剖析Tomcat

这本书是基于Tomcat4,Tomcat5作分析的,版本比较老,可作为对Tomcat的一个大致了解,有助于以后对新版Tomcat源码的阅读。连接器Tomcat中使用的连接器必须满足以下条件要求实现org.apache.catalina.Connector接口负责创建实现了org.apache.catalina.Request接口的request对象负责创建实现了org.apa

2017-05-30 15:20:39 571

原创 【Java8源码分析】并发包-CopyOnWriteArrayList

一般的,集合框架的类都有对应的并发版本,如下图所示 单线程版 多线程版 ArrayList CopyOnWriteArrayList LinkedList ConcurrentLinkedQueue HashMap ConcurrentHashMap TreeMap ConcurrentSkipListMap TreeSet ConcurrentSkip

2017-05-28 20:35:33 1848 1

原创 【Java8源码分析】并发包-AtomicInteger

AtomicInteger类是实现了原子操作的Integer,以往对于保证int、double、float等基础类型的运算原子性,需要采用加锁的方式。但是为了一个简单的运算操作采用锁,在多线程竞争严重的情况下,会导致性能降低,所以在java1.5推出了Atomic包,是采用CAS算法实现原子性运算。一、CPU锁CPU锁有如下3种类型:(1)处理器自动保证基本内存操作的原子性首先处理器会自动保证基本的

2017-05-27 20:31:38 2077

原创 【Java8源码分析】并发包-ConcurrentHashMap(一)

一、CAS原理简介Java8中,ConcurrentHashMap摒弃了Segment的概念,而是启用了一种全新的方式实现:利用CAS算法。它沿用了HashMap的思想,底层依然由“数组”+链表+红黑树的方式实现。那什么CAS算法呢?以前采用锁的方式实现同步,对于简单问题来说显得粒度过大,影响效率。现在的处理器都支持多重处理,当然也包含多个处理器共享外围设备和内存,同时,加强了指令集以支持

2017-05-26 21:09:53 1040

原创 【Java8源码分析】集合框架-TreeMap

一、红黑树原理TreeMap是基于红黑树实现的。一棵高度为h的二叉搜索树,它可以支持任何一种基本动态集合操作,其时间复杂度均为O(h)。当h较小时,执行会比较快。红黑树是许多“平衡”搜索树中的一种。 (1)性质树中的结点有5个属性:color,key,key,left,right和p,满足以下五大性质:每个结点或是Red,或是Black根结点是Black的每个叶结点NIL是Black的

2017-05-21 21:12:02 1952

原创 【Java8源码分析】集合框架-HashMap

一、HashMap的存储结构总共有两种存储类// 1. 哈希冲突时采用链表法的类,一个哈希桶多于8个元素改为TreeNodestatic class Node<K,V> implements Map.Entry<K,V>// 2. 哈希冲突时采用红黑树存储的类,一个哈希桶少于8个元素改为Nodestatic final class TreeNode<K,V> extends LinkedHas

2017-05-10 22:53:11 2460

原创 【读过的书,留下的迹】Unix网络编程

一、前言因这本书知道Richard Stevens这位神级大牛,感慨一个人如何能写了这么多本被奉为圣经级别的IT图书,我们又有什么理由不去读这些书呢?第3章:套接字编程简介(1)套接字地址结构 (2)字节排序主机字节序有可能是小端字节序,也有可能是大端字节序网际协议统一采用大端字节序字节序转换函数// h for host, n for network, s for short, l f

2017-05-10 10:41:24 501

原创 Tomcat整体框架总结

本文章参考:http://blog.csdn.net/column/details/tomcat7-internal.html一、Tomcat生命周期管理1、生命周期接口2、容器类3、容器初始化4、容器启动二、Tomcat启动Created with Raphaël 2.1.0startup.shstartup.shBootstrapBootstra

2017-05-02 16:33:19 596

空空如也

空空如也

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

TA关注的人

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