Java细碎知识点归纳

数组复制效率
System.arraycopy > clone > Arrays.copyOf > for循环

web容器
作用:在Web应用程序中,负责将HTTP请求转换为HttpServletRequest对象

  • 注:
    Apache就是一个Http服务器,Tomcat是一个web容器,静态的html - Apache还可以处理,但是动态的需要转发给Tomcat去处理了,比如jsp页面,请求先经由Apache转发给Tomcat再由Tomcat解析请求

Java体系结构
1、Java程序设计语言
2、Java.class文件格式
3、Java应用编程接口(API)
4、Java虚拟机

  • 注:四者关系
    当我们编写并运行一个Java程序时,就同时运用了这四种技术,用Java程序设计语言编写源代码,把它编译成Java.class文件格式,然后再在Java虚拟机中运行class文件。当程序运行的时候,它通过调用class文件实现了Java API的方法来满足程序的Java API调用

volatile关键字 - 只用于修饰变量,不能修饰方法和类
1、每次从内存中取值,不从缓存中什么的拿值。这就保证了用 volatile修饰的共享变量,每次的更新对于其他线程都是可见的。
2、volatile保证了其他线程的立即可见性,就没有保证原子性。
3、由于有些时候对volatile的操作,不会被保存,说明不会造成阻塞。4、不可用与多线程环境下的计数器。

IO流细碎
1、Stream结果的都是字节流
2、处理流就是包装流

Histroy对象
1、length - 返回浏览器历史列表中的URL数量。
2、back() - 加载history列表中的前一个URL。
3、forward() - 加载history列表中的下一个URL。
4、go() - 加载到history列表中的某个具体页面。

Statement
1、Statement
2、PreparedStatement
3、CallableStatement

求长度
字符串:length()
数组:length
集合:size()

内部类修饰符
成员内部类:可以看成成员变量,可以有public,protected,public,static修饰
局部内部类:不能有public,protected,public、static修饰,但是可以被abstract和 final修饰

Arraylist扩容
Arraylist默认数组大小是10,扩容后的大小是扩容前的1.5倍。但是如果新创建的集合有带初始值,默认就是传入的大小,也就不会扩容

String
String s = new String(“xyz”);
如果常量池没有,就会在常量池创建一个xyz字符串,然后执行new,在堆中再创建一个字符串
如果常量池有,就会根据常量池中的xyz字符串,在堆中new一个新的字符串

关系
is-a - 继承关系
has-a - 从属关系
like-a - 组合关系
abstract class表示的是 is-a 关系
interface表示的是 like-a 关系

System.out.println()
System是java.lang中的一个类,out是System内的一个成员变量,这个变量是一个java.io.PrintStream类的对象,println呢就是一个方法

索引
组合索引(a, b, c),会建立三个索引, (a), (a, b), (a, b, c)

String、StringBuffer、StringBuilder运行速度
StringBuilder > StringBuffer > String

JVM内存
方法区、堆内存是线程共享的
程序计数器(PC寄存器)、虚拟机栈是线程隔离的
在这里插入图片描述

java concurrent包
Semaphore:类,控制某个资源可被同时访问的个数
ReentrantLock:类,具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大
Future:接口,表示异步计算的结果
CountDownLatch: 类,可以用来在一个线程中等待多个线程完成任务的类

ServletContext
getParameter():获取POST/GET传递的参数值
getInitParameter:获取Tomcat的server.xml中设置Context的初始化参数
getAttribute():获取对象容器中的数据值
getRequestDispatcher:请求转发

单例模式中,两个基本要点
1、唯一实例
2、构造函数私有

System
System.in:标准输入
System.out:标准输出
System.err:错误输出
System.exit():结束程序

匿名内部类
1、使用匿名内部类时,必须继承一个类或实现一个接口
2、匿名内部类由于没有名字,因此不能定义构造函数
3、匿名内部类中不能含有静态成员变量和静态方法

socket

  • 服务器端
    ServerSocket(int port)
    创建一个serversocket,绑定在特定的端口
  • 客户端
    Socket(InetAddress address, int port)
    创建一个socket流,连接到特定的端口和ip地址

Synchronized
修饰非静态方法:锁的是this对象
修饰静态方法:锁的是class对象

关键字
true、false、null都不是关键字

JDBC设计模式
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化
装饰模式:动态地给一个对象添加一些额外的职责,扩展功能

序列化
序列化的是对象,不是类,类变量不会被序列化

重载和重写
重载是根据形参的静态类型确定调用的方法版本
重写是根据调用者在运行期的实际类型来确定调用的方法版本

Synchronizd和Volatile的特性
Synchronized:原子性,有序性,可见性,
Volatile:有序性,可见性,不能保证原子性

ResultSet
第一列索引为1(从1开始)

用于并发编程的同步器
Semaphore
CyclicBarrier
CountDownLatch

char
String Character.toString(char c)
String String.valueOf(char c)

Java程序内存泄露的最直接表现
程序抛内存控制的Exception

线程安全的类
Stack、Hashtable、Vector

Java文件
Java中对于文本文件和二进制文件,都可以当作二进制文件进行操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值