前言首先问大家一个问题,我们开发好 Java 代码是如何运行的?我们写了这么多年的代码,对于代码运行的流程是否清楚呢?是不是在 ide 中点一下 Run 启动就完事了,我们写的代码直接就跑起来了,其实在背后编译器和虚拟机默默的在帮我们承受了这一切。Java 程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码2、字节码由 Java 虚拟机解释运行。因为 Java 程序既要编译同
java的集合中,List接口继承Collection接口,AbstractList类实现了List接口,在AbstractList中的内部类Itr实现了Iterator接口ArrayList实现List接口并继承AbstractList类,结构图如下:(图片出自网络)Iterator接口源码:public interface Iterator<E> { boolean ha
转载 2023-07-06 13:07:20
93阅读
Java程序的源代码很容易被别人偷看。只要有一个反编译器,任何人都可以分析别人的代码。本文讨论如何在不修改原有程序的情况下,通过加密技术保护源代码。一、为什么要加密?对于传统的C或C 之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以。遗憾的是,Java程序的源代码很容易被别人偷看。只要有一个反编译器,任何人都可以分析别人的代码。Java的灵活性使得源代码很容易被窃取,但与此同时
转载 2008-05-20 05:44:00
149阅读
应用场景枚举通常用来列举一个类型的有限实例集合,我们可以使用常量集来实现,jdk1.5添加了枚举(enum)支持,解决了常量集的一些缺陷常量集中的变量不会必然在指定的范围内常量能够提供的功能很少,难于使用常量意义不明确,没有名字修改或增加枚举值后需要修改的代码多,不便于维护关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的组件使用。枚举源码首先我们定义一个枚
转载 2023-09-20 10:14:31
54阅读
目录 简介 构造方法 与流有关的变量和方法 in,out,err 设置in,out,err 数组复制 简介 在API中system类介绍的比较简单,我们给出定义,system中代表程序所在系统,提供了对应的一些系统属性信息和系统操作。 /** * System类包含了几个有用的类字段和方法。他不能被实例化。 * * System类提供的功能包括标准输入,标准输出,错误输出流; * 访问外部定义的属
转载 2024-01-01 07:44:17
62阅读
JAVA JDK 源码学习 ,以1.8为例,按照下面图片顺序依次学习: applet ,awt,beans,io,lang,math,net,nio,rmi,security,sql,text,time,util第一课,广泛认知它们1 appletJava applet 为使用Java语言编写的一些程序,可以直接插入到网页之中。不建议去学,已经被淘汰了2 awtjava.awt
转载 2023-07-05 23:17:35
76阅读
java源码级编译器的任务是将符合java语言规范的源码编译为符合jvm规范的Class文件,对不符合java语言规范的报错在sun的jdk中源码编译器是使用java写的javacjavac的工作流程:1 解析(parse)和输入到符号表(enter)2 注解处理(annotation processing)3 分析与代码的生成解析:词法分析:使用com.sun.tools.javac.parse
转载 2024-02-23 11:34:07
29阅读
迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它是一个很典型的设计模式。Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。对于这两种方式,我们总是都事先知道集合的内部结构,访问代码和集合本身是紧密耦合的,无法将访问逻辑从集合类和客户端代码中分离出来。同时每一种集合对应一种遍历方法
一、EnumSet 概述EnumSet 是一个用于存储枚举类型的 set 集合,一般的 set 集合底层都是使用对应的 map 实现的,但 EnumSet 是个特例,它底层使用一个 long 类型的整数或者数组实现。下面我们先来看下它的使用方式:public class EnumSetTest { public static void main(String[] args) {
转载 2023-12-06 22:44:27
43阅读
文章目录注释哈希算法与映射线程安全的实现方法put 操作get操作 本系列是Java详解,专栏地址:Java源码分析Hashtable官方文档:Hashtable (Java Platform SE 8 ) Hashtable.java源码共1522行,下载地址见我的文章:Java源码下载和阅读(JDK1.8/Java 11) 文件地址:openjdk-jdk11u-jdk-11.0.6-3/s
转载 2023-09-29 19:25:45
74阅读
应用场景枚举是单例模式中的一种。面试官系统之设计模式(单例模式)简单来讲就是只能实例化一次,线程安全且性能高。枚举通常用来列举一个类型的有限实例集合,我们可以使用常量集来实现,jdk1.5添加了枚举(enum)支持,解决了常量集的一些缺陷常量集中的变量不会必然在指定的范围内常量能够提供的功能很少,难于使用常量意义不明确,没有名字修改或增加枚举值后需要修改的代码多,不便于维护关键字enum可以将一组
转载 2023-07-04 14:27:06
49阅读
在JDK1.5之前,Java有两种方式定义新类型: 类和接口。 对于大部分面向对象编程来说,这两种方法看起来似乎足够了。但是当我们需要限定某个类型只能出现特点的值的时候,我们就需要做很多工作来完成这种限定,而且还有可能以为设计问题而导致无法完美的作出限制或限制过度是某些应有的功能无法完成。为此,sun公司在jdk1.5是增了Enum来解决这个问题。下面我们看一下Enum的源码: package j
Java源码分析》:Vector虽然,Vector集合在我们的编程中,使用的比较少,至少我使用的比较少,一般情况下,我都是倾向于使用List来存储一些同类型的元素。其实,Vector的内部实现和ArrayList的内部实现基本一致,内部都是借助于数组来实现的。下面就一起来分析下。1、Vector的继承结构public class Vector<E> extends A
转载 2024-07-03 20:45:22
29阅读
最近遇到一个问题,在日期比较的时候,很麻烦,因为日期比较没有大于等于,只有大于或者小于,这就导致在比较时间的时候特别麻烦,而且还要由string转成date格式才能比较,下面是我使用compareTo比较时间字符串的代码:String putStartTime = DateUtil.formatDate(adverInformation.getPutStartTime()); String pu
转载 2023-05-24 14:19:11
52阅读
前文: 首先你要耐心,最好有一定源码基础,没有也行下面也会教你怎么有效阅读源码。 其次为什么先讲List。因为建立再这个基础上去理解其他的东西,事半功倍。 JAVA集合实现原理及其优化。 背景介绍: 这是基于jdk1.8分析的,主要是对java集合的实现源码分析。 Java集合框架: 注:上图参考百度结果。 除了上面的集合类型。我们还会将Stack(栈)、Node(树)、Quene(队列)、Ha
转载 2024-01-29 10:16:37
27阅读
文章目录1、实践(1) IDEA安装插件(2) 新建.proto文件(3) pom引入依赖(4) 生成代码(5) 创建服务端(6) 创建客户端(7) 测试2、源码(1) protobuf(2) 重要类和接口 Java实现grpc1、实践(1) IDEA安装插件Protobuf Support(2) 新建.proto文件我这里命名为test.proto。 指定生成代码的包路径、接口服务等。 定义了
转载 2023-10-31 21:41:51
67阅读
文章目录枚举常量是否添加类定义`{}`的差别枚举常量未添加类定义`{}`枚举常量添加了类定义`{}`从字节码分析,枚举常量有无类定义{}的区别无类定义{}有类定义{}两个例子的UML图getDeclaringClass()分析`public static T valueOf(String)`和`public static T[] values()`友情链接 在阅读本文之前,如果读者不了解java
转载 2023-08-24 09:31:13
40阅读
关于Java源码的学习,是不少同学头疼的知识点。本文整理了JAVA源码学习的八大要点,分别是基础知识、面向对象、异常处理、集合、综合类核心代码、JAVA8新特性、Input/Output和Java小实例。&nbsp;一、基础知识1.宏观上理解Java的本质 2.JVM的原理 3.Java变量 4.Java数据类型 5.Java运算符 6.Java
转载 2023-06-07 19:54:00
84阅读
一、源码java.lang.System:package java.lang; import 。。。。。 /** * 系统类包含几个有用的类字段和方法。它不能实例化。 * * 提供的功能包括标准输入、标准输出和错误输出流; * 访问外部定义的属性和环境变量;加载文件和库的方法;以及快速复制数组的一部分的实用方法。 */ public final class System {
转载 2023-12-03 09:53:22
20阅读
执行策略:线程执行的方式串行执行比如:医院给病人看病的时候,可以让所有的病人都拍成一个队形,让一个医生统一的看病。医生:线程。病人看病:任务这种一个医生给一群站好队形的病人看病--映射到java就相当于:单线程串行执行任务映射到我们java中的话就相当于线程执行任务。串行执行的缺点很明显。例如:就是假设前面有一个病人非常的慢,是一个话唠,本来就是一个小感冒,就和医生唠了一天,那后面的人肯定都疯了。
  • 1
  • 2
  • 3
  • 4
  • 5