E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Java源码解析
Rx
java源码解析
--observeOn指定线程
基于rxjava1.1.0rxandroid1.0.1用例代码↓Observableobservable1=Observable.create(newObservable.OnSubscribe(){publicvoidcall(Subscribersubscriber){subscriber.onNext("1");subscriber.onCompleted();}});Subscribers
Rogge666
·
2019-12-08 08:10
java源码解析
String深入解析String具有不变性的原因:String被final修饰,它不可能被继承,也就是任何对String的操作方法,都不会被继承覆写String中保存数据的是一个char数组的value,它被final修饰,它的内存地址一旦赋值无法修改publicfinalclassStringimplementsjava.io.Serializable,Comparable,CharSequen
shuangyueliao
·
2019-10-24 21:00
Java源码解析
|HashMap的前世今生
HashMap的前世今生Java8在Java7的基础上,做了一些改进和优化。底层数据结构和实现方法上,HashMap几乎重写了一套所有的集合都新增了函数式的方法,比如说forEach,也新增了很多好用的函数。前世——Java1.7底层数据结构数组+链表在Java1.7中HashMap使用数组+链表来作为存储结构数组就类似一个个桶构成的容器,链表用来解决冲突,当出现冲突时,就找到当前数据应该存储的桶
fishers
·
2019-10-19 11:00
Java源码解析
|String源码与常用方法
String源码与常用方法1.栗子代码:publicclassJavaStringClass{publicstaticvoidmain(String[]args){Strings="hello";s="world";//内存地址已经修改原来地址上的值还是不变的Strings2="hello";//从常量值中找到并引用Strings4=newString("hello");//new产生一个新的对象
fishers
·
2019-10-05 23:00
Hotspot JNI库文件加载源码解析
目录一、
Java源码解析
1、System.loadLibrary和System.load方法2、Runtime.loadLibrary和Runtime.load方法3、ClassLoader.loadLibrary
孙大圣666
·
2019-10-01 18:53
Hotspot和Linux内核
java SPI 机制
javaSPI机制SPIjava机制1.java实现原理2.代码示例服务服务提供商A服务提供商B服务提供调用服务加载配置3.
java源码解析
4.其他注意事项SPIjava机制SPI英文为ServiceProviderInterface
kwxyzk
·
2019-09-18 21:18
#
基础学习
Rx
java源码解析
笔记 | 剖析map、flatmap操作符的使用与联系
操作符Rxjava提供了对事件序列进行变换的支持;变换:核心功能;就是将事件序列中的(事件)对象或整个序列进行加工处理;转换成不同的事件或者事件序列;map操作符:就是用来把一个事件转换为另一个事件的;下面结合实例代码分析map操作符packagecom.example.jiajiemu.a11.rxjava;importandroid.graphics.Bitmap;importandroid.
凌川江雪
·
2019-06-07 02:25
Rx
java源码解析
笔记 | Rxjava基本用法详析(附示例代码)
Rxjava四要素被观察者在Rxjava当中,决定什么时候触发事件,决定触发什么样的事件;观察者决定事件触发的时候将产生什么样的行为;类似于传统观察者模式,观察者会随着被观察者的状态变化而发生相应的操作;订阅区别于传统观察者模式;观察者和被观察者需要通过订阅来联系;通过subscribe()方法完成这个订阅关系;完成订阅关系后,即可令被观察者(Observable)在需要的时候,发出事件来通知观察
凌川江雪
·
2019-06-06 10:59
Rx
java源码解析
笔记 | 创建Observable 与 Observer/Subscriber 以及之间订阅实现的源码分析
简单回顾如果抛开Rxjava的操作符以及其线程控制的话,Rxjava的最基本使用是比较简单的第一步,创建被观察者Observable;第二步,创建观察者Observer/Subscriber;第三步,subscribe;三个关键对象和一个核心方法三个关键对象Observable(被观察者)OnSubscribe此对象是Observable内部的对象,可以对等地理解成是观察者模式中,被观察者用来通知
凌川江雪
·
2019-06-04 16:23
Rx
java源码解析
笔记 | Rxjava概述 & 传统观察者设计模式源码解析
进行耗时任务比如:在后台做一些网络操作、查询或者一些复杂计算的时候,我们如果不用其他框架的话,最常见做法即自己开一个子线程,然后通过回调的形式获取到结果(如后台以结果为参数发送广播,前台回调onReceive()接收获取到结果);但是这样有一个问题,随着业务逻辑越来越复杂,项目会陷入回调中套回调的病区,这对后期维护代码来说是一个很严重的问题;而Rxjava的出现解决了以上的问题Rxjava本质上是
凌川江雪
·
2019-06-02 19:24
java源码解析
之Object类
一、Object类概述 Object类是java中类层次的根,是所有类的基类。在编译时会自动导入。Object中的方法如下:二、方法详解 Object的方法可以分成两类,一类是被关键字final修饰的的方法,这类方法能被子类覆盖。另一类是没有final修饰,它们可以被子类重写。构造方法:Object() 在Object中没有显式的构造方法,这个只是创建一个Object对象,没有什么可以说的。
Mrfanl
·
2019-04-13 18:00
Java源码解析
AtomicInteger实现原理
Java中的AtomicInteger是原子整数,它可以用在多线程环境下,并且不会造成数据不一致的问题。首先看一下AtomicInteger的javadoc注释。Anintvaluethatmaybeupdatedatomically.Seethejava.util.concurrent.atomicpackagespecificationfordescriptionoftheproperties
bugcoder321
·
2019-03-06 19:41
Java源码解析
Java源码解析
LinkedList
本文基于jdk1.8进行分析。LinkedList和ArrayList都是常用的java集合。ArrayList是数组,Linkedlist是链表,是双向链表。它的节点的数据结构如下。privatestaticclassNode{Eitem;Nodenext;Nodeprev;Node(Nodeprev,Eelement,Nodenext){this.item=element;this.next=
李灿辉
·
2019-01-09 11:26
Java源码解析
HashMap的keySet()方法
HashMap的keySet()方法比较简单,作用是获取HashMap中的key的集合。虽然这个方法十分简单,似乎没有什么可供分析的,但真正看了源码,发现自己还是有很多不懂的地方。下面是keySet的代码。publicSetkeySet(){Setks=keySet;if(ks==null){ks=newKeySet();keySet=ks;}returnks;}从代码中了解到,第一次调用keyS
李灿辉
·
2019-01-09 10:03
Java源码解析
HashMap的tableSizeFor函数
aka,HashMap的容量大小必须为2的指数,即16,32,64,128这样的值。那么,在构造函数中,如果调用者指定了HashMap的初始大小不是2的指数,那么,HashMap的tableSizeFor函数,会计算一个大于或等于给定参数的2的指数的值。先来看一下tableSizeFor函数的源码,如下/***Returnsapoweroftwosizeforthegiventargetcapac
李灿辉
·
2019-01-09 09:17
Java源码解析
阻塞队列ArrayBlockingQueue介绍
Java的阻塞队列,在实现时,使用到了lock和condition,下面是对其主要方法的介绍。首先看一下,阻塞队列中使用到的锁。/**Mainlockguardingallaccess**/finalReentrantLocklock;/**Conditionforwaitingtakes**/privatefinalConditionnotEmpty;/**Conditionforwaiti
李灿辉
·
2019-01-09 09:19
Java源码解析
CopyOnWriteArrayList的讲解
本文基于jdk1.8进行分析。ArrayList和HashMap是我们经常使用的集合,它们不是线程安全的。我们一般都知道HashMap的线程安全版本为ConcurrentHashMap,那么ArrayList有没有类似的线程安全的版本呢?还真有,它就是CopyOnWriteArrayList。CopyOnWrite这个短语,还有一个专门的称谓COW.COW不仅仅是java实现集合框架时专用的机制,
李灿辉
·
2019-01-08 14:34
Java源码解析
ConcurrentHashMap的初始化
首先看一下代码privatefinalNode[]initTable(){Node[]tab;intsc;while((tab=table)==null||tab.length==0){//第一次检查if((sc=sizeCtl)0)?sc:DEFAULT_CAPACITY;@SuppressWarnings("unchecked")Node[]nt=(Node[])newNode[n];tabl
李灿辉
·
2019-01-08 11:45
Java源码解析
TreeMap简介
TreeMap是常用的排序树,本文主要介绍TreeMap中,类的注释中对TreeMap的介绍。代码如下。/***ARed-Blacktreebased{@linkNavigableMap}implementation.*Themapissortedaccordingtothe{@linkplainComparablenatural*ordering}ofitskeys,orbya{@linkCom
李灿辉
·
2019-01-08 10:20
Java源码解析
阻塞队列ArrayBlockingQueue常用方法
本文基于jdk1.8进行分析ArrayBlockingQueue的功能简介参考https://www.jb51.net/article/154211.htm。首先看一下ArrayBlockingQueue的成员变量。如下图。最主要的成员变量是items,它是一个Object类型的数组用于保存阻塞队列中的元素。其次是takeIndex,putIndex,count,分别表示了从队列获取元素的位置,往
李灿辉
·
2019-01-08 09:09
Java源码解析
阻塞队列ArrayBlockingQueue功能简介
本文基于jdk1.8进行分析。阻塞队列是java开发时常用的一个数据结构。首先看一下阻塞队列的作用是什么。阻塞队列的作用,从源码中类的注释中来了解,是最清晰准确的。ArrayBlockingQueue是一个用数组实现的有界阻塞队列。提供FIFO的功能。队列头上的元素是在队列中呆了最长时间的元素,队列尾上的元素是在队列中呆了时间最短的元素。新元素会插入在队列尾部,从队列获取元素时会从队列头上获取。这
李灿辉
·
2019-01-08 09:13
Java源码解析
之可重入锁ReentrantLock
本文基于jdk1.8进行分析。ReentrantLock是一个可重入锁,在ConcurrentHashMap中使用了ReentrantLock。首先看一下源码中对ReentrantLock的介绍。如下图。ReentrantLock是一个可重入的排他锁,它和synchronized的方法和代码有着相同的行为和语义,但有更多的功能。ReentrantLock是被最后一个成功lock锁并且还没有unlo
李灿辉
·
2019-01-08 09:37
Java源码解析
ThreadLocal及使用场景
ThreadLocal是在多线程环境下经常使用的一个类。这个类并不是为了解决多线程间共享变量的问题。举个例子,在一个电商系统中,用一个Long型变量表示某个商品的库存量,多个线程需要访问库存量进行销售,并减去销售数量,以更新库存量。在这个场景中,是不能使用ThreadLocal类的。ThreadLocal适用的场景是,多个线程都需要使用一个变量,但这个变量的值不需要在各个线程间共享,各个线程都只使
李灿辉
·
2019-01-08 09:13
Java源码解析
ArrayList及ConcurrentModificationException
本文基于jdk1.8来分析ArrayList的源码首先是主要的成员变量。/***Defaultinitialcapacity.**/privatestaticfinalintDEFAULT_CAPACITY=10;/***Sharedemptyarrayinstanceusedforemptyinstances.**/privatestaticfinalObject[]EMPTY_ELEMENTD
李灿辉
·
2019-01-08 08:31
Java源码解析
HashMap成员变量
本文基于jdk1.8进行分析关于HashMap的简介,可以参考这篇文章https://www.jb51.net/article/154177.htm。首先看一下HashMap的一些静态常量。第一个是DEFAULT_INITIAL_CAPACITY,默认初始大小,16。从注释中可以了解到,大小必须为2的指数。这里的16,采用的1左移4位实现。而“aka”,是asknownas的缩写。/***Thed
李灿辉
·
2019-01-07 14:22
Java源码解析
HashMap简介
本文基于jdk1.8进行分析HashMap是java开发中可以说必然会用到的一个集合。本文就HashMap的源码实现进行分析。首先看一下源码中类的javadoc注释对HashMap的解释。如下图。HashMap是对Map接口的基于hash表的实现。这个实现提供了map的所有可选操作,并且允许null值(可以多个)和一个null的key(仅限一个)。HashMap和HashTable十分相似,除了H
李灿辉
·
2019-01-07 14:45
Java源码解析
HashMap的resize函数
HashMap的resize函数,用于对HashMap初始化或者扩容。首先看一下该函数的注释,如下图。从注释中可以看到,该函数的作用是初始化或者使table的size翻倍。如果table是null,那么就申请空间进行初始化。否则,因为我们在使用2的指数的扩张,在原来table的每个位置的元素,在新的table中,他们要么待在原来的位置,要么移动2的指数的偏移。从这里可以看出,扩容前table每个位
李灿辉
·
2019-01-05 15:41
Java源码解析
线程池ThreadPoolExecutor的execute方法
线程池有很多方法,其中最常用的一个是execute()方法,它允许用户把任务提交给线程池进行执行。首先看一下execute()的功能介绍,如下图。在将来的某个时间执行给定的任务。给定的任务有可能在一个新线程中执行,也有可能在已经存在的线程中执行。如果任务无法被提交,不管是因为线程池已经关闭了,还是因为线程池已经达到最大容量,那么任务会被拒绝策略来处理。/***Executesthegiventas
bugcoder321
·
2019-01-03 18:48
Java源码解析
Java源码解析
阻塞队列ArrayBlockingQueue常用方法
本文基于jdk1.8进行分析ArrayBlockingQueue的功能简介参考https://blog.csdn.net/li_canhui/article/details/85062891。首先看一下ArrayBlockingQueue的成员变量。如下图。最主要的成员变量是items,它是一个Object类型的数组用于保存阻塞队列中的元素。其次是takeIndex,putIndex,count,
bugcoder321
·
2018-12-18 12:21
Java源码解析
Java源码解析
Java源码解析
阻塞队列ArrayBlockingQueue功能简介
本文基于jdk1.8进行分析。阻塞队列是java开发时常用的一个数据结构。首先看一下阻塞队列的作用是什么。阻塞队列的作用,从源码中类的注释中来了解,是最清晰准确的。如下图。ArrayBlockingQueue是一个用数组实现的有界阻塞队列。提供FIFO的功能。队列头上的元素是在队列中呆了最长时间的元素,队列尾上的元素是在队列中呆了时间最短的元素。新元素会插入在队列尾部,从队列获取元素时会从队列头上
bugcoder321
·
2018-12-18 11:34
Java源码解析
——volatile
1定义及作用1.1英文释义1.2百度百科1.3维基百科译:当被用于修饰变量时,Javavolatile关键字可以保证:(1)在所有版本的Java中,对volatile关键字修饰的变量的读写存在全局排序。这意味着每个访问volatile修饰字段的线程都会去读取字段的当前值,而不是继续使用(可能存在地)字段的缓存值。(但是,并不能保证读写volatile修饰字段与读写常规字段之间的相对顺序,这意味着它
huazi928
·
2018-12-12 19:31
jdk源码
java源码解析
之String类的compareTo(String otherString)方法
一.前言最近我发现了一个事情,那就是在面试笔试中,好多公司都喜欢在String字符串上出问题,涉及到方方面面的知识,包括其中的一些常用方法。String类代表字符串。Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为String对象是不可变的,所以可以共享。近日研究了一下String类的一些方法,通过查
dremeue
·
2018-09-10 14:28
Java源码解析
(7) —— ClassLoader(2)
ClassLoader源码解析续这一部分是ClassLoader核心部分,加载给定的数据成对应的类对象。/***由虚拟机调用,这是一个private方法,但我在ClassLoader源码中并未看到有地方调用*看名字及源码说明,是由虚拟机加载类的时候内部调用,百度查询估计是加载jdk类时*系统类加载器通过反射调用该方法(jdk类中有许多类似用法)*/privateClassloadClassInte
a327369238
·
2018-05-11 19:04
Java源码解析
Java源码解析
Java源码解析
之———LinkedHashMap
LinkedHashMap继承于HashMap,同样实现了Map接口,与HashMap不同的是,LinkedHashMap的插入取出是有序的,并且可以控制。先看一下数据结构其中数字是表示结点插入的顺序,可以看到的是LinkedHashMap用链表将每个元素串起来,数据结构为数组+单链表+红黑树+双链表。先看LinkedHashMap的几个属性,因为继承了HashMap,所以HashMap中的非pr
LittleYoungMan
·
2018-04-18 17:51
集合
Rx
java源码解析
--flatMap源码解析
基于rxjava1.1.0用例代码↓Observableobservable1=Observable.create(newObservable.OnSubscribe(){publicvoidcall(Subscribersubscriber){subscriber.onNext("1");subscriber.onCompleted();}});Subscribersubscriber1=new
Rogge666
·
2017-11-22 19:18
Java源码解析
之TypeVariable详解
TypeVariable,类型变量,描述类型,表示泛指任意或相关一类类型,也可以说狭义上的泛型(泛指某一类类型),一般用大写字母作为变量,比如K、V、E等。源码publicinterfaceTypeVariableextendsType{//获得泛型的上限,若未明确声明上边界则默认为ObjectType[]getBounds();//获取声明该类型变量实体(即获得类、方法或构造器名)DgetGen
青楼有罪
·
2017-10-26 10:03
Java源码解析
之GenericDeclaration详解
可以声明类型变量的实体的公共接口,也就是说,只有实现了该接口才能在对应的实体上声明(定义)类型变量,这些实体目前只有三个:Class(类)、Construstor(构造器)、Method(方法)(详见:
Java
青楼有罪
·
2017-10-26 10:08
Java源码解析
之object类
接下来,我们看看这篇
Java源码解析
之object的详细内容。
青楼有罪
·
2017-10-24 16:36
Rx
Java源码解析
05-线程切换
Rx
Java源码解析
05-线程切换这篇文章我们来分析一下RxJava线程的切换。
Heiko-Android
·
2017-09-13 06:42
RxJava源码
JAVA源码解析
(7)-java.beans.IndexedPropertyDescriptor
Jdk版本:1.8.0_131作者出于学习阶段,如有问题请指正来自API的解释:IndexedPropertyDescriptor描述了一个像数组一样的属性,并且具有索引的读取和/或索引的写入方法来访问数组的特定元素。索引属性还可以提供简单的非索引读写方法。如果这些存在,它们读取和写入由索引读取方法返回的类型的数组。当前类和PropertyDescriptor的作用很相似,但是PropertyDe
-Beyond-
·
2017-06-08 14:52
java源码分析
JAVA源码解析
(6)-java.beans.PropertyDescriptor
Jdk版本:1.8.0_131作者出于学习阶段,如有问题请指正来自API的解释:PropertyDescriptor描述JavaBean通过一对存储器方法导出的一个属性。PropertyDescriptor有一个常用的功能:包装一个属性的Get、Set方法,通过反射调取相应的方法,举例:构造一个PropertyDescriptor->获取get/set方法->invoke在整个PropertyDe
-Beyond-
·
2017-06-06 16:31
java源码分析
Java源码解析
(6) —— ClassLoader(1)
ClassLoader(1)——类加载核心类1.类加载核心类,关于类加载详见:Java类的加载。2.ClassLoader作用:将类二进制数据加载为JVM中的Class对象3.关于阅读ClassLoader源码之前,最好理解一些相关体系、结构及相关名词含义:JVM安全体系:双亲委派、命名空间、策略、保护域。源码解析:publicabstractclassClassLoader{//ClassLoa
a327369238
·
2017-02-13 20:45
Java源码解析
Java源码解析
Java源码解析
Integer方法解读
toUnsignedString方法解读看到Integer中有这样的一个方法把int转为Unsigned类型的字符串,但是有几个点不是很清楚,经过查询资料弄懂了,解读如下:/***Converttheintegertoanunsignednumber.*/privatestaticStringtoUnsignedString(inti,intshift){char[]buf=newchar[32]
低调的洋仔
·
2016-12-13 11:15
深入
Java源码解析
容器类List、Set、Map
本篇文章带你从Java源码深入解析关于Java容器的概念。参考文献:Java容器相关知识全面总结Java官方API文档1常用容器继承关系图先上一张网上的继承关系图集合继承关系图个人觉得有些地方不是很准确,比如Iterator不是容器,只是一个操作遍历集合的方法接口,所以不应该放在里面。并且Map不应该继承自Collection。所以自己整理了一个常用继承关系图如下New集合继承关系图如上图所示,接
Tsy远
·
2016-10-08 16:33
Java源码解析
(附录)(2) —— TypeVariable
TypeVariable——类型变量TypeVariable,类型变量,描述类型,表示泛指任意或相关一类类型,也可以说狭义上的泛型(泛指某一类类型),一般用大写字母作为变量,比如K、V、E等。源码publicinterfaceTypeVariableextendsType{//获得泛型的上限,若未明确声明上边界则默认为ObjectType[]getBounds();//获取声明该类型变量实体(即获
a327369238
·
2016-09-27 20:09
Java源码解析
Java源码解析
Java源码解析
-String详解
其中x并未看到内存分配,变量在使用前必须先声明,再赋值,然后才可以使用。java基础数据类型会用对应的默认值进行初始化 一、首先看看Java虚拟机JVM的内存块及其变量、对象内存空间是怎么存储分配的 1、栈:存放基本数据类型及对象变量的引用,对象本身不存放于栈中而是存放于堆中 1)、基础类型byte(8位)、boolean(1位)、char(16位)、int(32
u013782203
·
2016-03-30 20:00
Rx
Java源码解析
(1) —— subscribe
RxJava是一款实现异步的库,由于具有比较高的抽象性,使用它可以让我们的项目代码逻辑更加的清晰,从而更利于维护。今天我们分析下RxJava的最基础的部分:subscribe()的实现。首先看RxJava最基本的使用方式:Observable.create(newObservable.OnSubscribe(){ @Override publicvoidcall(Subscribersubsc
pzyoung
·
2016-03-06 19:00
rx
java源码解析
:操作符subscribeOn
1.subscribe流程先看一个简单的例子://标记为Observable1 Observable.create(newObservable.OnSubscribe(){ @Override publicvoidcall(Subscribersubscriber){ subscriber.onNext("helloworld!"); subscriber.onCompleted();
PuerTea
·
2016-01-13 10:00
Java源码解析
-DualPivotQuicksort
前言一直都想阅读一些比较深层次的东西,但是自己的水平还没有达到那个层次,所以从比较基础也是比较底层的Java源码下手。排序应该是使用的比较多,性能比重比较大的算法之一,而快排更是排序中的经典。不论是C++的qsort还是Java的Arrays.sort都是快排实现,我一直很好奇这些语言设计者写出的快排是怎样的,不看不知道,一看吓一跳,果然跟我以前学的快排不一样,我们就来了解一下Java中的快排实现
xjyaitf
·
2014-01-19 00:00
java
源码
算法
快速排序
上一页
1
2
3
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他