摘要:
修饰类:表示该类不能被继承; 修饰方法:表示方法不能被重写; 修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。
阅读全文
posted @ 2020-06-02 20:54
咔啡
阅读(187)
推荐(0)
摘要:
UML 定义了多种图形化的符号来描述软件系统部分或全部的静态结构和动态结 构,包括:用例图(use case diagram)、类图(class diagram)、时序图(sequence diagram)、协作图(collaboration diagram)、状态图(statechart diag
阅读全文
posted @ 2020-06-02 20:53
咔啡
阅读(1465)
推荐(0)
摘要:
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常 操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就 不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可 能因使用的问题而引发。Java 编译器要求方法必须声明抛出可能发生的受检异常, 但是
阅读全文
posted @ 2020-06-02 20:44
咔啡
阅读(898)
推荐(0)
摘要:
Static Nested Class 是被声明为静态(static)的内部类,它可以不依赖于外部类 实例被实例化。而通常的内部类需要在外部类实例化后才能实例化,其语法看起 来挺诡异的,如下所示。 /** * 扑克类(一副扑克) * @author 骆昊 * */ public class Poke
阅读全文
posted @ 2020-06-02 18:42
咔啡
阅读(901)
推荐(0)
摘要:
char 类型可以存储一个中文汉字,因为 Java 中使用的编码是 Unicode(不选择 任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一 个 char 类型占 2 个字节(16 比特),所以放一个中文是没问题的。 补充:使用 Unicode 意味着字符在 JVM 内部和外部
阅读全文
posted @ 2020-06-02 16:48
咔啡
阅读(836)
推荐(0)
摘要:
Error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情 况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况; Exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题; 也就是说,它表示如果程序运行正常,从不会发生的情况。 面试题:200
阅读全文
posted @ 2020-06-02 15:11
咔啡
阅读(360)
推荐(0)
摘要:
折半查找,也称二分查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。 如果在某一步骤数组已经为
阅读全文
posted @ 2020-06-02 00:04
咔啡
阅读(404)
推荐(0)
摘要:
ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的 数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉 及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 中的方法由 于添加了 synchronized 修饰,因此 Vect
阅读全文
posted @ 2020-06-01 23:33
咔啡
阅读(529)
推荐(0)
摘要:
单一职责原则:一个类只做它该做的事情。(单一职责原则想表达的就是” 高内聚”,写代码最终极的原则只有六个字”高内聚、低耦合”,就如同葵花宝 典或辟邪剑谱的中心思想就八个字”欲练此功必先自宫”,所谓的高内聚就是一 个代码模块只完成一项功能,在面向对象中,如果只让一个类完成它该做的事, 而不涉及与它无关
阅读全文
posted @ 2020-06-01 22:38
咔啡
阅读(279)
推荐(0)
摘要:
请看下面的代码: import java.lang.reflect.Method; class MethodInvokeTest { public static void main(String[] args) throws Exception { String str = "hello"; Met
阅读全文
posted @ 2020-06-01 22:29
咔啡
阅读(1079)
推荐(0)
摘要:
饿汉式单例 public class Singleton { private Singleton(){} private static Singleton instance = new Singleton(); public static Singleton getInstance(){ retur
阅读全文
posted @ 2020-06-01 21:56
咔啡
阅读(1661)
推荐(0)
摘要:
原子性(Atomic):事务中各项操作,要么全做要么全不做,任何一项操作 的失败都会导致整个事务的失败; 一致性(Consistent):事务结束后系统状态是一致的; 隔离性(Isolated):并发执行的事务彼此无法看到对方的中间状态; 持久性(Durable):事务完成后所做的改动都会被持久化,
阅读全文
posted @ 2020-06-01 21:54
咔啡
阅读(430)
推荐(0)
摘要:
方法 1:通过类对象调用 newInstance()方法,例如: String.class.newInstance() 方法 2:通过类对象的 getConstructor()或 getDeclaredConstructor() 方法获得构造器(Constructor)对象并调用其 newInsta
阅读全文
posted @ 2020-06-01 21:52
咔啡
阅读(753)
推荐(0)
摘要:
可以通过类对象的 getDeclaredField()方法字段(Field)对象,然后再通过字段 对象的 setAccessible(true)将其设置为可以访问,接下来就可以通过 get/set 方 法来获取/设置字段的值了。下面的代码实现了一个反射的工具类,其中的两个静 态方法分别用于获取和设置
阅读全文
posted @ 2020-06-01 21:45
咔啡
阅读(3275)
推荐(0)
摘要:
Connection 提供了事务处理的方法,通过调用 setAutoCommit(false)可以设置 手动提交事务;当事务完成后用 commit()显式提交事务;如果在事务处理过程中 发生异常则通过 rollback()进行事务回滚。除此之外,从 JDBC 3.0 中还引入了 Savepoint(
阅读全文
posted @ 2020-06-01 21:44
咔啡
阅读(796)
推荐(0)
摘要:
方法 1:类型.class,例如:String.class 方法 2:对象.getClass(),例如:”hello”.getClass() 方法 3:Class.forName(),例如:Class.forName(“java.lang.String”)
阅读全文
posted @ 2020-06-01 20:24
咔啡
阅读(828)
推荐(0)
摘要:
第一范式: 必须要有主键,并且每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系。 第二范式: 所有非主关键字都完全依赖于主关键字(通常用于联合主键) 第三范式: 非主关键字不能依赖于其他非主关键字(通常用于一个主键)
阅读全文
posted @ 2020-06-01 19:19
咔啡
阅读(219)
推荐(1)
摘要:
与 Statement 相比,①PreparedStatement 接口代表预编译的语句,它主要的优 势在于可以减少 SQL 的编译错误并增加 SQL 的安全性(减少 SQL 注射攻击的可 能性);②PreparedStatement 中的 SQL 语句是可以带参数的,避免了用字符串 连接拼接 SQ
阅读全文
posted @ 2020-06-01 19:18
咔啡
阅读(541)
推荐(0)
摘要:
要提升读取数据的性能,可以指定通过结果集(ResultSet)对象的 setFetchSize() 方法指定每次抓取的记录数(典型的空间换时间策略);要提升更新数据的性能 可以使用 PreparedStatement 语句构建批处理,将若干 SQL 语句置于一个批处 理中执行。
阅读全文
posted @ 2020-06-01 18:43
咔啡
阅读(370)
推荐(0)
摘要:
由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时,每 次建立连接都需要进行 TCP 的三次握手,释放连接需要进行 TCP 四次握手,造成 的开销是不可忽视的),为了提升系统访问数据库的性能,可以事先创建若干连 接置于连接池中,需要时直接从连接池获取,使用结束时归还连接池而不必关闭
阅读全文
posted @ 2020-06-01 17:59
咔啡
阅读(381)
推荐(0)
摘要:
DAO(Data Access Object)顾名思义是一个为数据库或其他持久化机制提供了 抽象接口的对象,在不暴露底层持久化方案实现细节的前提下提供了各种数据访 问操作。在实际的开发中,应该将所有对数据源的访问操作进行抽象化后封装在 一个公共 API 中。用程序设计语言来说,就是建立一个接口,接口
阅读全文
posted @ 2020-06-01 17:53
咔啡
阅读(1324)
推荐(0)
摘要:
XML 文档定义分为 DTD 和 Schema 两种形式,二者都是对 XML 语法的约束,其 本质区别在于 Schema 本身也是一个 XML 文件,可以被 XML 解析器解析,而且 可以为 XML 承载的数据定义类型,约束能力较之 DTD 更强大。对 XML 的解析主 要有 DOM(文档对象模型,
阅读全文
posted @ 2020-06-01 16:27
咔啡
阅读(532)
推荐(0)
摘要:
XML 的主要作用有两个方面:数据交换和信息配置。在做数据交换时,XML 将数 据用标签组装成起来,然后压缩打包加密后通过网络传送给接收者,接收解密与 解压缩后再从 XML 文件中还原相关信息进行处理,XML 曾经是异构系统间交换数 据的事实标准,但此项功能几乎已经被 JSON(JavaScript
阅读全文
posted @ 2020-06-01 16:26
咔啡
阅读(818)
推荐(0)
摘要:
其中 Running 表示运行状态,Runnable 表示就绪状态(万事俱备,只欠 CPU),Blocked 表示阻塞状态,阻塞状态又有多种情况,可能是因为调用 wait() 方法进入等待池,也可能是执行同步方法或同步代码块进入等锁池,或者是调用 了 sleep()方法或 join()方法等待休眠或
阅读全文
posted @ 2020-06-01 16:20
咔啡
阅读(275)
推荐(0)
摘要:
面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽 象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的 细节是什么。 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类 被称为父类(超类、基类);得到继承信息的类被称
阅读全文
posted @ 2020-06-01 16:19
咔啡
阅读(789)
推荐(0)
摘要:
Lock 是 Java 5 以后引入的新的 API,和关键字 synchronized 相比主要相同点: Lock 能完成 synchronized 所实现的所有功能;主要不同点:Lock 有比 synchronized 更精确的线程语义和更好的性能,而且不强制性的要求一定要获得 锁。synchro
阅读全文
posted @ 2020-06-01 16:18
咔啡
阅读(589)
推荐(0)
摘要:
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流 化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。 序列化是为了解决对象流读写操作时可能引发的问题(如果不进行序列化可能会 存在数据乱序的问题)。 要实现序列化,需要让一个类实现 Serializable 接
阅读全文
posted @ 2020-06-01 16:17
咔啡
阅读(585)
推荐(0)
摘要:
如果只要求列出当前文件夹下的文件,代码如下所示: import java.io.File; class Test12 { public static void main(String[] args) { File f = new File("/Users/Hao/Downloads"); for(F
阅读全文
posted @ 2020-06-01 16:05
咔啡
阅读(941)
推荐(0)
摘要:
synchronized 关键字可以将对象或者方法标记为同步,以实现对对象和方法的互 斥访问,可以用 synchronized(对象) { … }定义同步代码块,或者在声明方法时 将 synchronized 作为方法的修饰符。
阅读全文
posted @ 2020-06-01 15:04
咔啡
阅读(194)
推荐(0)
摘要:
如果系统中存在临界资源(资源数量少于竞争资源的线程数量的资源),例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就必须进行同步存取(数据库操作中的排他锁就是最好的例子)。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方
阅读全文
posted @ 2020-06-01 13:27
咔啡
阅读(442)
推荐(0)
摘要:
启动一个线程是调用 start()方法,使线程所代表的虚拟处理机处于可运行状态, 这意味着它可以由 JVM 调度并执行,这并不意味着线程就会立即运行。run()方 法是线程启动后要进行回调(callback)的方法。
阅读全文
posted @ 2020-06-01 13:20
咔啡
阅读(1457)
推荐(0)
摘要:
在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内 存资源或者其它更多资源。在 Java 中更是如此,虚拟机将试图跟踪每一个对象, 以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽 可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁,这就 是”
阅读全文
posted @ 2020-06-01 12:12
咔啡
阅读(759)
推荐(0)
摘要:
① sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会;yield()方法只会给相同优先级或更高优先级的线程以运行的机会; ② 线程执行 sleep()方法后转入阻塞(blocked)状态,而执行 yield()方法后转入就绪(ready)状态; ③ sle
阅读全文
posted @ 2020-06-01 12:07
咔啡
阅读(459)
推荐(0)
摘要:
不能。其它线程只能访问该对象的非同步方法,同步方法则不能进入。因为非静 态方法上的 synchronized 修饰符要求执行方法时要获得对象的锁,如果已经进入 A 方法说明对象锁已经被取走,那么试图进入 B 方法的线程就只能在等锁池(注 意不是等待池哦)中等待对象的锁。
阅读全文
posted @ 2020-06-01 12:01
咔啡
阅读(826)
推荐(0)
摘要:
sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程 暂停执行指定的时间,将执行机会(CPU)让给其他线程,但是对象的锁依然保 持,因此休眠时间结束后会自动恢复(线程回到就绪状态,请参考第 66 题中的线 程状态转换图)。wait()是 Object 类的方法,调用对
阅读全文
posted @ 2020-06-01 11:56
咔啡
阅读(548)
推荐(0)
摘要:
Java 5 以前实现多线程有两种实现方法:一种是继承 Thread 类;另一种是实现 Runnable 接口。两种方式都要通过重写 run()方法来定义线程的行为,推荐使用 后者,因为 Java 中的继承是单继承,一个类有一个父类,如果继承了 Thread 类 就无法再继承其他类了,显然使用 Ru
阅读全文
posted @ 2020-06-01 10:05
咔啡
阅读(929)
推荐(0)
摘要:
wait():使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁;sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要处理 InterruptedException 异常; notify():唤醒一个处于等待状态的线程,当然在调用此方法的时候,并不能确切的唤醒某一个等
阅读全文
posted @ 2020-06-01 09:26
咔啡
阅读(1412)
推荐(0)
摘要:
1)、Redis Sentinal 着眼于高可用,在 master 宕机时会自动将 slave 提升为master,继续提供服务。 2)、Redis Cluster 着眼于扩展性,在单个 redis 内存不足时,使用 Cluster 进行分片存储。
阅读全文
posted @ 2020-06-01 07:53
咔啡
阅读(367)
推荐(0)
摘要:
字节流和字符流。字节流继承于 InputStream、OutputStream,字符流继承于Reader、Writer。 在 java.io 包中还有许多其他的流,主要是为了提高性能和使用方便。 关于 Java 的 I/O 需要注意的有两点:一是两种对称性(输入和输出的对称性,字节和字符的对称性);
阅读全文
posted @ 2020-06-01 07:45
咔啡
阅读(470)
推荐(0)