![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
Tout va bien?
这个作者很懒,什么都没留下…
展开
-
JDBC 简介
知识点JDBC 简介创建JDBC应用程序1 JDBC 简介JDBC 的全称是 Java Database Connectivity,叫做 Java 数据库连接。它包括了一组与数据库交互的api,还有与数据库进行通信的驱动程序。我们要写涉及到数据库的程序,是通过 C 语言或者 C++ 语言直接访问数据库的接口,如下图所示。对于不同的数据库,我们需要知道不同数据库对外提供的系统 AP...转载 2019-07-23 17:15:59 · 462 阅读 · 0 评论 -
Java 基本Annotation
5 个基本的 Annotation 如下:限定重写父类方法:@Override@Override 是用来指定方法覆载的,它可以强制一个子类必须覆盖父类的方法。@Override 的作用就是告诉编译器检查这个方法,保证父类要保证一个被该方法重写的方法,否则就会编译出错。主要用于帮助程序员避免一些例如把方法名写错的“低级错误”。该修饰符只能修饰方法,不能用于修饰其他程序元素。标示已过时:...原创 2019-06-17 20:37:13 · 274 阅读 · 0 评论 -
事务处理
本文包含:事务的概念和 MySQL 事务支持JDBC 的事务支持Java 8增量的批量更新1. 事务的概念和 MySQL 事务支持事务是由一步或几步数据库操作序列组成的逻辑执行单元,该系列操作要么全部执行,要么全部放弃执行。程序和事务是不同的概念,一般而言,一段程序中可能包含多个事务。事务具备 4 个特性:原子性、一致性、隔离性和持续性数据库的事务由下列语句组成:DDL ...原创 2019-06-17 19:40:37 · 171 阅读 · 0 评论 -
Java GUI(图形用户界面)和 AWT(抽象窗口工具集)
Java 使用 AWT 和 Swing 类完成图形用户界面编程,其中 AWT 全称是抽象窗口工具集(Abstract Window Toolkit),它是 Sun 最早提供的 GUI 库,后面为了补充又提出了 Swing 库。程序以一种“搭积木”的方式将这些图形用户组件组织在一起,就是实际可用的图形用户界面,这些界面不能与用户交互,要与用户交互还需为程序提供事件处理。所有和 AWT 编程相关的...原创 2019-06-11 22:20:05 · 1172 阅读 · 0 评论 -
java 异常处理规则
成果的异常处理应该实现如下 4 个目标:1.使程序代码混乱最小化2.获并保留诊断信息3.通知合适的人员4.采用合适的方式结束异常活动下面介绍达到这种效果的基本准则,即本文内容:不要过度使用异常不要使用过于庞大的 try 块避免使用Catch All 语句不要忽略捕获到的异常1. 不要过度使用异常过度使用异常主要是两个方面:实际上,对于普通的错误,应该编写处理这种错误的...原创 2019-06-11 22:03:49 · 528 阅读 · 0 评论 -
Java 的异常跟踪栈
异常对象的 printStackTrace() 方法用于打印异常的跟踪栈信息,根据 printStackTrace() 方法的输出结果,开发者可以找到异常的源头,并跟踪到异常一路触发的过程。下面是用于测试 printStackTrace 的程序:运行结果为:上图记录了应用程序中执行停止的各个点。第一行的信息详细显示了异常的类型和异常的详细信息。接下来跟踪栈记录程序中所以的异常发生点,各...原创 2019-06-11 21:30:04 · 540 阅读 · 0 评论 -
Java 使用 throw 抛出异常
程序出现错误后,系统会自动抛出异常;此外,Java 也允许程序自行抛出异常,自行抛出异常使用 throw 语句来完成。本文包含:抛出异常自定义异常类catch 和 throw 同时使用Java 7 增强的throw 语句异常链1. 抛出异常如果需要在程序中自行抛出异常,则应使用 throw 语句,throw 语句可以单独使用,throw 语句抛出的不是异常类,而是一个异常实例,...原创 2019-06-11 21:13:47 · 78155 阅读 · 6 评论 -
Java Checked 异常和 Runtime异常体系
Java 异常分为两大类:Checked 异常和 Runtime 异常(运行时异常)。使用 throws 声明抛出异常上面程序声明不处理 IOException 异常,将该异常交给 JVM 处理,所以程序一旦遇到该异常,JVM 就会打印该异常的跟踪栈信息,并结束程序,运行上面程序,得到如下结果:使用 throws 声明抛出异常时有一个限制:子类方法声明抛出的异常类型应该是父类方法声...原创 2019-06-11 19:45:42 · 263 阅读 · 0 评论 -
Java 类型通配符
假设需要定义一个方法,该方法里有一个集合形参,集合形参的元素类型是不确定的,那应该怎么定义呢?在下面代码中:本文包含:使用类型通配符设定类型通配符的上限设定类型形参的上限1. 使用类型通配符为了表示各种泛型 List 的父类,可以使用类型通配符(?),将问号作为类型实参传给 List 集合,写作:List<?>(意思是元素类型未知的 List),此问号的元素类型可...原创 2019-06-04 20:47:40 · 7472 阅读 · 7 评论 -
Java 异常处理机制
Java 的异常处理机制可以让程序具有极好的容错性,让程序更健壮。当程序运行出现意外情形时,系统会自动生成一个 Exception 对象来通知程序,实现将“业务功能实现代码”和“错误处理代码”分离,提供更好的可读性。本文包含:使用 try…catch 捕获异常异常类的继承体系Java 7 提供的多异常捕获访问异常信息使用 finally 回收资源异常处理的嵌套Java 7 的自动...原创 2019-06-10 23:02:29 · 220 阅读 · 0 评论 -
Java 泛型之深入泛型
本文包含:定义泛型接口、类从泛型类派生子类并不存在泛型类1. 定义泛型接口、类下面是 Java 5 改写后 List 接口、Iterator 接口、Map 的代码片段可以为任何类、接口增加泛型声明(并不是只有集合类才可以使用泛型声明)。下面定义一个包含泛型声明的 Apple 类。2. 从泛型类派生子类3. 并不存在泛型类...原创 2019-06-03 22:39:51 · 283 阅读 · 2 评论 -
Java 异常的概念
Java 的异常出来机制主要依赖于 try、catch、finally、throw 和 throws 五个关键字,其中 try 关键字后紧跟一个花括号括起来的代码块(花括号不可省略),简称 try 块,它里面放置可能引发异常的代码。catch 后对应异常类型和一个代码块,表示该 catch 块用于处理这种类型的代码块。多个 catch 块后还可以跟一个 finally 块,finally 块用于回...原创 2019-06-10 10:41:15 · 449 阅读 · 0 评论 -
Java 泛型与数组
Java 允许创建无上限的通配符泛型数组,例如 new ArrayList<?>[10],因此也可以将第一段代码改为使用无上限的通配符泛型数组,在这种情况下,程序不得不进行强制类型转换。如下代码所示:编译上面代码不会发出任何警告,运行上面程序将在粗体字行引发 ClassCastException 异常。因为程序需要将 lsa 的第一个数组元素的第一个集合元素强制类型转换为 Str...原创 2019-06-10 10:16:51 · 472 阅读 · 0 评论 -
Java 泛型浅析
Java 集合有一个缺点:把一个对象“丢进”集合之后,集合就会“忘记”这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变成了 Object 类型。这样会存在两个问题:本文包含:编译时不检查类型的异常使用泛型Java 7 泛型的“菱形”语法1. 编译时不检查类型的异常编译时不检查类型导致的异常:2. 使用泛型Java 的参数化类型被称为泛型。此处程序在上面的基础...原创 2019-06-03 21:13:06 · 160 阅读 · 0 评论 -
操作集合的工具类:Collections
Collections 是操作 Set、List、Map 等集合的工具类。该工具类里提供了大量方法对集合元素进行操作,还提供了 将集合对象设置为不可变、将集合对象实现同步控制等方法。本文包含:排序操作查找、替换操作同步控制设置不可变集合1. 排序操作Collections 提供了以下类方法用于对 List 集合元素进行排序。2. 查找、替换操作Collections 提供...原创 2019-06-03 21:00:25 · 158 阅读 · 0 评论 -
HashSet 和 HashMap 的性能选项
此外,hash 表中还有一个负载极限原创 2019-06-03 20:44:18 · 855 阅读 · 0 评论 -
Java集合之Java 8 增强的集合类(二)
本文包含:WeakHashMap 实现类IdentityHashMap 实现类EnumMap 实现类各 Map 实现类的性能分析1. WeakHashMap 实现类该实现类与 HashMap 的区别是该类保存的是对对象的弱引用,而 HashMap 保存的是强引用。2. IdentityHashMap 实现类即要求两个 key 严格相等。3. EnumMap 实现类4...原创 2019-06-03 20:35:23 · 227 阅读 · 0 评论 -
Java集合之 Java 8 增强的 Map 类
Map 用于保存具有映射关系的数据,因为 Map 集合里保存着两组值,一组用于保存 key,一组保存 value,key 和 value 可以是任何引用类型的数据,其中 key 不允许重复。key 和 value 直接存在单向一对一关系,即通过指定的key ,可以找到唯一的 value。Map 中的所有 key 放在一起,可以认为组成了一个 Set 集合(所有的 key 没有顺序,key 与 ...原创 2019-06-03 20:23:29 · 472 阅读 · 1 评论 -
JDK的元 Annotation
使用@Retention使用@Target使用@Documented使用@Inherited1. 使用@Retention@Retention只能用于修饰 Annotation 定义,用于指定被修饰的 Annotation 可以保留多长时间,@Retention 包含一个RetentionPolicy 类型的 value 成员变量,所以使用 @Retention 时必须为该 valu...原创 2019-06-17 20:48:47 · 152 阅读 · 0 评论 -
理解 Java的 IO流
Java 的 IO 流是实现输入输出的基础,它可以方便地实现数据的输入/输出操作,在Java 中把不同的输入/输出源抽象表述为“流”,通过流的方式允许 Java 程序使用相同的方式了访问不同的输入/输出源。Stream 是从起源到接收的有序数据。Java 把所有传统的流类型都放在java.io包里,用以实现输入/输出功能。本文包含:流的分类流的概念模型1. 流的分类1.输入流和输出...原创 2019-06-18 16:55:21 · 195 阅读 · 0 评论 -
线程同步
本文包含:线程安全问题同步代码块同步方法释放同步监视器的锁定同步锁(Lock)死锁1. 线程安全问题如果两个人同时向账户余额Account为1000 的卡上取出800,则有可能两个人都成功取出,即取出了1600,发生了错误。2. 同步代码块之所以出现上述安全问题,是因为run() 方法体不具有同步安全性—程序中有两个并发线程在对 Account 对象进行修改;而且系统恰好在...原创 2019-07-12 11:36:35 · 82 阅读 · 0 评论 -
控制线程
本文包含:join 线程后台线程线程睡眠:sleep线程让步:yield改变线程优先级1. join 线程join() 方法用于让一个线程等待另一个线程完成。当在某个程序执行流中调用其它线程的 join() 方法时,调用线程将被阻塞,直到被 join() 方法加入的 join() 线程执行完为止。join() 方法通常由使用线程的程序调用,以将大问题划分成许多小问题,每个小问题...原创 2019-07-11 22:10:03 · 72 阅读 · 0 评论 -
线程的生命周期
本文包含:新建和就绪状态运行和阻塞状态线程死亡1. 新建和就绪状态当程序使用new 关键字创建了一个线程之后,该线程就处于新建状态,此时它和其它的Java 对象一样,仅仅由 Java 虚拟机为其分配内存,并初始化其成员变量的值。此时的线程对象没有表现出任何线程的动态特征,程序也不会执行线程的线程执行体。当线程对象调用了 start() 方法之后,该线程就处于就绪状态,Java 虚...原创 2019-07-11 21:24:02 · 77 阅读 · 0 评论 -
Java 线程的创建和启动
Java 使用 Thread 类代表线程,所有的线程对象都必须是 Thread 类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序执行的代码)。Java 使用线程执行体来代表这段程序流。本文包含:继承Thread 类创建线程类实现Runnable 接口创建线程类使用 Callable 和 Future 创建线程创建线程的三种方式对比1. 继承Thr...原创 2019-07-11 20:38:55 · 93 阅读 · 0 评论 -
Java 线程概述
本文包含线程和进程多线程的优势1. 线程和进程几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进行。当一个程序运行时,内部可能包含多个顺序执行流,每个顺序执行流就是一个线程。进程:是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位。一般而言,进程具有如下三个特征:并发性和并行性:多线程扩展了...原创 2019-07-11 19:01:26 · 116 阅读 · 0 评论 -
Java7 的 NIO.2
Java 7 对原有的NIO 进行了重大改进,主要包括如下两方面的内容:1.提供了全面的文件 IO 和文件系统访问支持2.基于一步Channel 的 IO本文包含如下内容:Path、Paths 和 Files 核心 API使用FileVisitor 遍历文件和目录使用 WatchService 监控文件变化访问文件属性1. Path、Paths 和 Files 核心 API...原创 2019-07-11 17:12:44 · 168 阅读 · 0 评论 -
Java NIO
NIO(New IO)即从 JDK 1.4 开始,Java 提供了一系列改进的输入/输出处理的新功能,新增的许多用于处理输入/输出的类,这些类都被放在java.nio 包以及子包下,并且对原 java.io 包里的许多类都以 NIO 为基础进行了该项,新增了满足 NIO 的功能。本文包含:java 新IO 概述使用Buffer使用 Channel字符集和 Charset文件锁1....原创 2019-07-11 16:34:04 · 96 阅读 · 0 评论 -
Java对象序列化
对象序列化的目标是将对象保存在磁盘中,或允许在网络中直接传输对象。对象序列化机制允许把内存中的Java 对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上,通过网络将这种二进制流传输到另外一个网络节点。其他程序一旦获得这种二进制流,都可以将其恢复成原来的 Java对象。序列化的含义和意义使用对象流实现序列化对象引用的序列化自定义序列化另一种自定义序列化机制1. ...原创 2019-07-11 11:15:37 · 140 阅读 · 0 评论 -
使用反射生成并操作对象
Class 对象可以获得该类里的方法(由 Method 对象表示)、构造器(由 Constructor 对象表示)、成员变量(由 Field 对象表示),这三个类都位于 java.lang.reflect 包下,并实现了 java.lang.reflect.Member 接口。程序可以通过 Method 对象来执行对应的方法,通过 Constructor 对象来调用对应的构造器创建实例,能通过 F...原创 2019-07-14 17:50:07 · 677 阅读 · 0 评论 -
通过反射查看类信息
Java 程序中的许多对象在运行时都会出现两种类型:编译时类型和运行时类型为了解决这个问题,程序需要在运行时发现对象和类的真实信息。解决该问题有以下两种做法:假设在编译和运行时都完全指定类型的具体信息,在这种情况下,可以先使用 instanceof 运算符进行判断,再利用 强制类型转换将其转换成运行时类型的变量即可。第二种做法是编译时根本无法预知该对象和类可能属于哪些类,程序只依靠运行时信...原创 2019-07-13 22:02:34 · 129 阅读 · 0 评论 -
类加载器
类加载器负责将 .class 文件(可能在磁盘上,可能在网络上)加载到内存中,并为之生成对应的 java.lang.Class 对象。本文包含:类加载器简介类加载机制创建并使用自定义的类加载器URLClassLoader 类1. 类加载器简介类加载器负责加载所有的类,系统为所有被载入内存的类生成一个 java.lang.Class 实例。一旦一个类被载入 JVM 中,同一个类就不...原创 2019-07-13 16:21:19 · 358 阅读 · 0 评论 -
类的加载、连接和初始化
本文包含:JVM 和 类类的加载类的连接类的初始化类初始化的时机1. JVM 和 类当调用Java 命令运行某个 java 程序时,该命令将会启动一个 Java 虚拟机进程。当系统出现如下几种情况时,JVM 进程将被终止。2. 类的加载当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化这三个步骤来对该类进行初始化。类的加载是指将类的 cl...原创 2019-07-13 14:54:43 · 83 阅读 · 0 评论 -
线程相关类
本文包含:ThreadLocal 类包装线程不安全的集合线程安全的集合类1. ThreadLocal 类ThreadLocal 类的用法非常简单,它只提供如下三个 public 方法:ThreadLocal 并不能替代同步机制,两者面向的问题不同。同步机制是为了同步多个线程对相同资源的并发访问,是多个线程之间进行通信的有效方式;而 ThreadLocal 是为了隔离多个线程的数...原创 2019-07-12 23:00:06 · 249 阅读 · 0 评论 -
线程池
系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互,在这种情况下,使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。此外,使用线程池可以有效控制系统中并发线程的数量,当系统包含大量并发线程时,会导致系统性能剧烈下降,甚至导致 JVM 崩溃,而线程池的最大线程数参数可以控制系统中并发数量不超过此数。本文包含:Java 8 改进的...原创 2019-07-12 21:00:03 · 79 阅读 · 0 评论 -
线程组和未处理的异常
Java 使用 ThreadGroup 来表示线程组,它可以对一批线程进行分类管理。默认情况下,子线程和创建它的父线程处于同一个线程组内。一旦某个线程加入指定线程组,该线程将一直属于该线程组,直到该线程死亡。Thread 类提供了如下几个构造器来设置新创建的线程属于哪个线程组。ThreadGroup 提供了如下两个简单的构造器来创建实例。ThreadGroup 类提供了如下几个常用方...原创 2019-07-12 20:23:08 · 281 阅读 · 0 评论 -
线程通信
当线程在系统中运行时,线程的调度具有一定的透明性,程序通常无法准确控制线程的轮换执行,但Java 也提供了一些机制来保证线程协调运行。本文包含:传统的线程通信使用 Condition 控制线程通信使用阻塞队列(BlockingQueue)控制线程通信1. 传统的线程通信传统的线程通信为实现重复存款、取钱的动作,可以借助于Object 类提供的 wait()、notify()、not...原创 2019-07-12 20:02:12 · 138 阅读 · 0 评论 -
JAVA:IO流 之 节点流与处理流
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jingzi123456789/article/details/72123937流的分类按数据流的方向不同:输入流,输出流。按处理数据单位不同:字节流,字符流。(1) 字节流:数据流中最小的数据单元是字节。(2)字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,...转载 2019-06-18 17:11:26 · 763 阅读 · 0 评论 -
Java SQL语法
DBMS :数据库管理系统数据库有如下几种:其中关系数据库是理论最成熟,应用最广泛的,其最基本的数据存储单元是数据表。数据表就是存储数据的逻辑单元,可以把数据表想象成由行和列组成的表格,其中每一行被称为记录,每一列被称为一个字段。此外,还应该为每个数据表指定一个特殊列,该特殊列的值可以唯一地标识此行的记录,则该特殊列被称为主键列。本文包含:关系数据库概念和基本命令SQL 语句基础...原创 2019-06-14 20:55:32 · 9912 阅读 · 1 评论 -
Java泛型之擦除和转换
从逻辑上看,List是 List 的子类·,如果直接把一个 List 对象赋给一个 List对象应该引起编译误会,但实际上不会。对泛型而言,可以直接把一个 List 对象赋给一个 List对象,编译器仅仅提示“未经检查的转换”,看下面程序:...原创 2019-06-09 20:46:11 · 342 阅读 · 0 评论 -
使用 JAR文件
JAR 文件简介:JAR 文件好处:JAR 文件实际上是一个路径:例如,test 文件包含如下目录结构和文件:如果把上面 test 路径下的文件压缩成 JAR 文件,则 JAR 文件的内部目录结构为:接下来内容包含三部分:jar 命令详解创建可执行的 JAR 包关于 JAR 包的技巧1.jar 命令详解-c 创建新的归档文件-t 列出归档目录和文件-x 解压缩...原创 2019-05-26 16:38:19 · 1489 阅读 · 0 评论