1、Javac编译器(1)Javac编译器介绍(主要介绍如何从java源代码到class的一个转换过程)(2)Javac的源码(说明其中哪个功能由哪个主要的类来完成)(3)Javac支持的命令及实现  2、文件加载与输出 (1)概述编译一个Java源代码到class时会涉及到依赖文件的查找加载,并且需要将最终生成的class文件进行写出。这就需要一个统一的
 继续对流进行学习,首先先说明一下流的特点:1、Collection提供了新的stream()方法。2、流不存储,通过管道的方式获取值。3、本质是函数式的,对流的操作会生成一个结果,不过并不会修改底层的数据源,集合可以作为流的底层数据源。其中需要注意标红的说明,也就是说对于流操作它的源数据是不会被更改的,另外还有一点需要有一个认知:对于一个流可能有若干个中间操作,对于这些操作并非降低了整
http://www.cnblogs.com/xwdreamer/category/385638.html spring4 分析http://blog.csdn.net/xiamizy/article/details/38817505 http://blog.csdn.net/it_man/article/details/30483795http://blog.csdn.net/lqclh502/
转载 精选 2015-02-16 15:02:40
309阅读
[size=medium][align=center]Java NIO原理图文分析及代码实现[/align] 前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以参考:http://baike.baidu
java语法解析器的核心类是com.sun.tools.javac.parser.JavacParser,令人惊讶的是java并没有使用antlr这样现成的的工具,而是选择手写。推测可能是为了性能的考虑吧。接下来,让我们膜拜下大师的代码。JavacParser.parseCompilationUnit()是java语法分析的入口方法。parseCompilationUnit()的返回结果是一个JC
转载 2023-06-14 18:30:39
96阅读
概述Stream类体系的设计主要采用的是双向链表数据结构,责任链和构建器设计模式。Stream体系流和中间阶段关系图BaseStream:对一组可序列化的元素支持串行、并行的聚合操作。 Stream:对一组可序列化的元素支持串行、并行的聚合操作。 PipelineHelper:执行Stream流水线的帮助类,捕获一个Stream流水线的全部信息(输出形状,中间操作,流标记,是否并行等)。 Abst
转载 10月前
31阅读
# Java源码分析流程 ## 1. 定义分析目标 首先需要明确要分析Java源码的目标,例如分析某个类的构造方法实现逻辑,或者分析某个方法的参数传递过程等。 ## 2. 下载源码源码仓库或官方网站下载Java源码,确保下载的源码与要分析的版本一致。 ## 3. 构建源码 使用构建工具(如Maven)构建Java源码,以确保源码可以成功编译并生成可执行的二进制文件。 ## 4. 导入
原创 2023-08-26 03:24:52
84阅读
Sun JDK中采用javac将Java源码编译为class文件,这个过程包含三个步骤:1.分析和输入到符号表(Parse and Enter)Parse过程所做的工作有词法和语法分析。词法分析要完成将代码字符串转变为Token序列。语法分析则是根据语法将Token序列生成抽象语法树。Enter过程将符号输入到符号表,通常包括确定类的超类型和接口、根据需要添加默认构造器、将类中出现的符号输入类自身
服务端代码一个简单的rpc server示例如下:package main import ( "log" "net" "net/http" "net/rpc" "github.com/monoxy/rpc/common" ) func main() { server := rpc.NewServer() server.Register(new(common.Embed)) l
简介HashMap主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树,以减少搜索时间。内部结构JDK1.8之前JDK1.
转载 2023-07-13 18:16:27
51阅读
输入和输出两种方式,这里只分析输入就可以,输出与输入相似。 1)第一个抽象类:InputStream 可以说IO里面一半与这个类直接或者间接相关,其余类要么是实现,要么是封装。 2)第一个封装接口:DataInput ,用来直接从输入流中读取数据。 比如  DataInputStream, readInt,需要读4个字节,应为inputSt
工作了3年多,一直都没花心思去看看jdk常用类的源码。以前大学的数据结构和算法课程在刚接触java时候感觉好像无用武之地。像c语言直接使用基础类型,可能需要去实现链表,栈,队列等。jdk都已经提供了实现类。趁最近有时间看看源码实现。1.ArrayList成员属性elementData:数据存储的数组,任何操作都是基于这个数组。 size:集合现在实际的大小。为什么不直接使用elementData.
String源码学习   本篇文章讨论String的源码,所有涉及到的源代码都是基于JDK1.8。  对于java程序员来说,String类再熟悉不过了,面试中也经常会被问到。但是,会用不是目的,我们要了解它其中的奥妙(设计思想),以方便在技术上有进一步的提高。一、实现接口public final class String implements java.io.Seria
简介Java NIO 是由 Java 1.4 引进的异步 IO. Java NIO 由以下几个核心部分组成:ChannelBufferSelectorNIO 和 IO 的对比IO 和 NIO 的区别主要体现在三个方面:IO 基于流(Stream oriented), 而 NIO 基于 Buffer (Buffer oriented)IO 操作是阻塞的, 而 NIO 操作是非阻塞的IO 没有 sel
一、HashMap简介  HashMap是基于哈希表的Map接口实现的,它存储的是内容是键值对<key,value>映射。此类不保证映射的顺序,假定哈希函数将元素适当的分布在各桶之间,可为基本操作(get和put)提供稳定的性能。  ps:本文中的源码来自jdk1.8.0_45/src。1、重要参数  HashMap的实例有两个参数影响其性能。  初始容量:哈希表中桶的数量  加载因子
一直以来,HashMap就是Java面试过程中的常客,不管是刚毕业的,还是工作了好多年的同学,在Java面试过程中,经常会被问到HashMap相关的一些问题,而且每次面试都被问到一些自己平时没有注意的问题。因为HashMap不管对于毕业生,还是对于老司机来说,都非常熟悉,熟悉到你经常忽略它。本着知其然,更要知其所以然的精神,本人对JDK 1.8版本的HashMap源码进行了仔细的学习。大家
一、HashMap概述   HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
转载 2023-07-25 22:40:15
44阅读
今天,我们通过剖析 Java IO 类的设计思想,再学习一种新的结构型模式,装饰器模式。它的代码结构跟桥接模式非常相似,不过,要解决的问题却大不相同。Java IO 类的“奇怪”用法Java IO 类库非常庞大和复杂,有几十个类,负责 IO 数据的读取和写入。如果对 Java IO 类做一下分类,我们可以从下面两个维度将它划分为四类。具体如下所示:针对不同的读取和写入场景,Java IO 又在这四
一、宏观分析ZooKeeper源码结构  ZooKeeper宏观分析源码,如下图所示:          要想分析源码,首先需要宏观分析整个ZooKeeper结构,要知道ZooKeeper分为两部分:服务端集群、客户端。  其中服务端:每台ZooKeeper服务器都有三个状态:初始化、运行中、结束关机。因此当服务器都处于运行时,构成一个zookeeper集群,那么就能够对外提供服务(单机也可以运行
javac编译原理 1.javac是什么? (1)javac是一种编译器,能够将一种语言规范转换成另一种用语言规范,通常编译器是将便于人们理解的语言规范成机器容易理解的语言规范。 (2)javac的任务就是将java源代码语言转换成jvm能够识别的语言,然后jvm将jvm语言再转化成当前机器能够识别的语言(这样使得对开发者屏蔽与机器相关的细节,并且使得语
  • 1
  • 2
  • 3
  • 4
  • 5