参考:《Java核心技术卷2 高级特性 》第三章 XML是一种非常有用的描述结构化信息的技术。 XML格式能够表示层次结构,这比属性文件的平面结构更加灵活。 解析XML文档,Java提供了两种XML解析器: 文档对象模型(Document Object Model,DOM)解析器这样的属性解析器,将读入的XML文档转换为树结构 XML简单API(Simple 使用XPath来定位信息 使用XPath执行下列操作比普通的DOM方式要简单的多: (1)获得文档节点 (2)枚举它的子元素 (3)定位某个元素 (4)定位其子节点中名字为xx的节点 (5)定位其子节点中的 text节点 (6)获取其数据 Java类库提供的流机制解析器,老而弥坚的SAX解析器和添加到Java SE6中的更现代化的StAX解析器。
参考:Java核心技术 卷I 基础知识 类之间最常见的关系有:依赖、聚合、继承 依赖即“use-a”关系,是一种最明显的,最常见的关系。 Java中方法参数的使用情况: 一个方法不能修改一个基本数据类型的参数(数值型或布尔型) 一个方法可以改变一个对象参数的状态 一个方法不能让对象参数引用一个新的对象 静态导入: import static java.lang.System.*; 在源文件顶部,添加一条指令,就可以使用System.类的静态方法和静态域,而不必加类名前缀。
目录 3. Java 核心技术 3.1. 反射机制 3.2. 异常 3.3. 多线程 3.4. 文件与 I\O 流 ---- 3. Java 核心技术 3.1. 反射机制 JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java /java-programming/exceptions-java 在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。 这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止。 Java 线程在运行的生命周期中的指定时刻只可能处于下面 6 种不同状态的其中一个状态(图源《Java 并发编程艺术》4.1.4 节)。
***************** java基础 ***************** 一、java 中的局部变量、实例变量和类变量 二、java中的基本类型和引用类型 三、java中的位操作符 、(String str,String…strs) 、(String str)、(String str,String str2)这样的参数列表是可以共存的,只是为了区分方法参数传递的时候比较麻烦; 3、 SQLException,IOException 运行时异常:ArrayIndexOutOfBoundException,ClassCastException,NullPointerException (3) 运行时异常不具有代码侵入性,抛出运行时异常无需在方法声明的时候写 throws 语句; 检查异常如果不用 try–catch 进行处理,从异常发生方法一直到顶层的调用方法都需要写 throws 语句; 3、 ) 3、泛型擦除:泛型只存在于编译期,编译好的 class 文件反编译之后是看不到泛型的(伪泛型,目的是为了兼容以前没有泛型的版本) 4、擦除补偿 (1)擦除带来的问题:以下的操作都无法通过编译,
Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setBonus(5000); Employee[] staff = new Employee[3] new Employee("Harry Hacker", 50000, 1989, 10, 1); staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 3.虚拟机调用该方法。 阻止继承 有时候,不希望利用某个类定义子类。不允许扩展的类被称为final类。如果在定义类的时候利用了final修饰符就表明该类是final类。
掌握Java核心技术是学习和掌握好Java技术的关键,下边分17个点对这些Java核心技术进行讲解。 >>>1.Java中没有多继承,而是用接口来代替多继承 >>>2.运行一个已经编译的程序时,Java解释器总是从指定类的main方法中的代码开始执行,因此,执行代码中必须有一个main函数。 >>>3.Java是典型的强类型语言,即必须声明变量的类型,Java中有8种类型,6种数值类型(4个整数型和2个浮点型)、一个字符类型和一个boolean类型。 Java可以重载任何方法,而不仅是构造函数。 >>>13.对象的类型转换: Manager boss = (Manager) args[0]; >>>14.Java数组和Java向量的区别: Java数组可以存储任何类型的变量,Java向量只能存储对象类的实例
做java有一段时间了。经常写业务代码,长时间里,自己只知道怎么使用其中的api,对于java的理解很多就忘记了。 正好极客时间里面出来了一个课程关于JAVA核心技术的讲解,自己也开始学习,期望能提高自己对java的理解。 首先提出需要的问题。 Java平台的理解 Java是解释执行吗? Java平台的理解 : 一个面向对象编程的语言 具有封装,继承,多态特性 一次执行,处处运行。与平台无关性。可以让java程序在别的平台上运行,当然这是由JVM确定的。 java在第一次编译生成.class文件。JVM运行.class文件。与c还有c++区别最大的一点就是开发者不用在纠结各个操作系统的区别,内存管理在Java上也弱化了很多。 Java的大数据生态。在生态上Java可以说是最成熟的一种解决方案。hadoop,spark,hive等等,都提供Java语言的支持。
>>>用0填充高位>>用符号位填充高位<<<不存在 冷知识吧,也就当年校招见过人问过 3.java没有多维数组,只有一维数组 我们所说的二维数组,本质上是数组的数组 4.编译多个名字差不多的文件 如 AbcController 和AbcService两个文件,javac Abc*.java 即可一次性编译两个 5.比较是不是同一个类 用equals而不是instanceof 因为子类instanceof也报true Objects.equals 同样是基础书,我偏向think in java 。 8.异常处理 一.异常处理不能顶替简单的测试。就是不要随便利用异常进行业务代码,其实这个在其他语言里面很经常在具体的异常里面进行相应的业务操作。 9.断言,有点想深入了解,但是和think in java 里面都是说了几句。看来断言的实际使用真的很少,而且个人观感也是if,try,log等就可以代替,并且这三种的使用很频繁。 Arrays.asList(values)); String[] values2 =(String[]) set.toArray();//error String[] values3
LuckQI 在这里你可以得到不只是技术,关注即可习得新技能 做java有一段时间了。经常写业务代码,长时间里,自己只知道怎么使用其中的api,对于java的理解很多就忘记了。 正好极客时间里面出来了一个课程关于JAVA核心技术的讲解,自己也开始学习,期望能提高自己对java的理解。 首先提出需要的问题。 Java平台的理解 Java是解释执行吗? Java平台的理解 : 一个面向对象编程的语言 具有封装,继承,多态特性 一次执行,处处运行。与平台无关性。可以让java程序在别的平台上运行,当然这是由JVM确定的。 java在第一次编译生成.class文件。JVM运行.class文件。与c还有c++区别最大的一点就是开发者不用在纠结各个操作系统的区别,内存管理在Java上也弱化了很多。 Java的大数据生态。在生态上Java可以说是最成熟的一种解决方案。hadoop,spark,hive等等,都提供Java语言的支持。
可以点击java核心技术讲解学习五 这篇文章来说下简单的知识,也是我们经常用的String ,StringBuffer,StirngBuilder. 在Java9中引入了一种新的设计,将其底层改为byte数组,数据存储方式改为了byte数组加上一个标识编码。 在Java8中 对字符串进行了优化,字符串拼接 编译的时候会直接编译成StringBuilder。 在笔者原先做web开发的时候并没有注意对int类型还有Integer类型特别的注意,因为在这里面笔者并没有注意自动装箱和自动拆箱的作用,在这次大数据进行开发的时候,因为我们内存的原因并且处理量太大,不容易处理,java 等下次再进行分析 Java原始数据和引用类型局限性 原始数据类型在泛型中不能使用,我们在使用泛型的时候必须转为Object类型。 无法高效的表达数据,也不方便表达复杂的数据结构。
1.4 Java 发展简史 本节将介绍 Java 的发展简史。这些内容来自很多出版资料(最重要的是 SunWorld 的在线杂志 1995 年 7月刊上对 Java 创建者的专访。) 1996 年年初,Sun 发布了 Java 的第 1 个版本: 人们很快地意识到 Java1.0 不能用来进行真正的应用开发。 在此期间, Java applet 采用低调姿态,并淡化了客户端的应用,但 Java 却成为服务器端应用的首选平台。 直到 201丨年 Oracle 发布了 Java的一个新版本,Java ?, 其中只做了一些简单的改进。 2014 年 ,Java 8终于发布,在近 20 年中这个版本有了最大的改变。 Java 8 提供了一种“ 函数式” 编程方式,可以很容易地表述并发执行的计算。 所有编程语言都必须与时俱进,Java在这方面显示出非凡的能力。 表 1-1 展示了 Java 语言以及类库的发展状况。
第 1 章 Java 程序设计概述 1996 年 Java 第一次发布就引起了人们的极大兴趣。关注 Java 的人士不仅限于计算机出版界,还有诸如《纽约时报》《华盛顿邮报》《商业周刊》这样的主流媒体。 本章将简要地介绍一下 Java 语言的发展历史。 1.1 Java 程序设计平台 本书的第 1 版是这样描写 Java 的:“ 作为一种计算机语言, Java 的广告词确实有点夸大其辞。 1 ) 简单性 2 ) 面向对象 3 ) 分布式 4 ) 健壮性 5 ) 安全性 6 ) 体系结构中立 7 ) 可移植性 8 ) 解释型 9 ) 高性能 10 ) 多线程 11 ) , 这些特性带来的麻烦远远多于其带来的好处3的确, Java 语法是 C++ 语法的一个“ 纯净” 版本。 在本质上,Java 的面向对象能力与 C++是一样的。 开发 Java 时面向对象技术已经相当成熟。 Java 的面向对象特性与 C++ 旗鼓相当。
继续我们的Java核心知识点的学习。上面一篇说过虚拟机还有Java世界平台的简单知识,还顺便总结了Error和Exception相关内容看相关内容,请阅读Java核心技术讲解学习一。 Exception e){ e.printStackTrace(); }finally { lock.unlock(); } 但是在Java7 如今的Java平台,开始采用java.lang.ref.Cleaner 代替finalize.Cleaner 的实现使用了幻象引用。这是一种常见的post-mortem清理机制。
什么是动态代理 Java标准库提供了一种动态代理(Dynamic Proxy)的机制:可以在运行期动态创建某个interface的实例。 package ProxyStudy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public package ProxyStudy; import java.lang.reflect.Proxy; public class Main { public static void main
上一节我们探讨了垃圾回收算法,简单的了解下垃圾回收在程序虚拟机中是怎样运行的。我们平常在开发中经常用的虚拟机是HotSpot,那么该虚拟机是怎样实现的呢? HotSpot 算法的实现 我们知道在对象创建时候都会形成一条链,我们的可达性分析就是从GC Root节点上找引用的,其中这个节点主要是在全局性的引用于与执行上下文中。由于以下原因导致。我们现在虚拟机大部分使用的是准确式GC 现在程序很多数据都是在数百M设置是数百GB,如果还要逐个检查每个引用,就容易出现问题。性能损失很多。 还有一点就是可达性
前天我们在写Java技术讲解的时候说过引用现在在Java中分为四种类型,强引用,软引用,弱引用,幻象引用。但是这几者之间有什么关系呢? Java中对象的可达性 在Java中我们都是通过分析来计算对象是否还是存活状态。不是存活状态的对象才能 被清理掉。那么这个分析就是称为可达性分析。 在 虚拟机书上是这么定义的 虚拟机栈中引用的对象 -- 虚拟机栈 线程私有的属性 方法区中静态属性引用的对象 方法区中常量引用的对象 --方法区 与java堆一样都是各个线程共享的内存区域。 垃圾回收算法 说完对象的引用之后我们都知道对象在哪种状态会被回收,然而在Java中我们使用的是gc来进行回收的那么,gc是利用什么条件进行回收呢?我们说下gc的算法了解下。
,这种情况在Java中也是存在的。 { public static void main(String[] args) { MyThread3 a = new MyThread3("A"); MyThread3 b = new MyThread3("B"); MyThread3 c = new MyThread3("C"); a.start(); b.start Lock 的使用 使用 Java5 中的 Lock 对象实现同步的效果。 //1%3表示将1除以3,结果为0,余数为1,所以1%3等于1 if (addNumber % 3 == showNumPosition) {
在Java中,使用构造器构造新实例。构造器是一种特殊的方法,用来构造并初始化对象。 在实际开发中,通常需要将对象存放在一个变量中来达到多次使用的目的。 在Java开发中,一定要认识到,一个对象变量并没i月实际包含一个对象,而仅仅使用一个对象,任何对象变量的值都是对存储在另外一个地方的一个对象的引用。 3.如果构造器第一行调用了第二个构造器,则执行第二个构造器的主体。 4.执行这个构造器的主体。 方法参数: Java中的参数是一种值引用。 首先,观察一下基本数据类型(数字、布尔值)。 3.方法结束后,参数变量x不再使用。当然,对象变量harry继续引用那个薪金增3倍的对象。 ? 看到这里,或许会认为Java的对象参数是引用调用,实际上,并不是。
1.3 Java applet 与 Internet 这里的想法很简单: 用户从 Internet 下载 Java 字节码, 并在自己的机器上运行。在网页中运行的 Java 程序称为 applet。 要使用 applet, 需要启用 Java 的 Web 浏览器执行字节码。不需要安装任何软件。任何时候只要访问包含 applet 的网页都会得到程序的最新版本。 许多人相信 applet 的魅力将会导致 Java 迅速地流行起来。然而, 初期的兴奋很快就淡化了。 不同版本的 Netscape 与 Internet Explorer 运行不同版本的 Java, 其中有些早已过时。这种糟糕的情况导致更加难于利用 Java 的最新版本开发applet。 后来,Java 遭遇了严重的安全问题,浏览器和 Java 浏览器插件变得限制越来越多。如今,要在浏览器中使用 applet, 这不仅需要一定的水平, 而且要付出努力。
因为在实习中,文章更新速度可能有点慢,初学JAVA安全,内容如有不恰当的地方,欢迎各位大佬指正 今天写一下Servlet的一些核心技术,后面更新完Filter之后我会对这两个进行一个总结。 此外,不同版本的Servlet所需的Java/JDK版本也不相同。