- 首先要知道ArrayList的类关系

可以看到ArrayList是继承自AbstractList,而AbstractList实现了List,List实现自Collection
常用的方法有:add,addAll,remove,set,clear,size等等

可以看到ArrayList是继承自AbstractList,而AbstractList实现了List,List实现自Collection
常用的方法有:add,addAll,remove,set,clear,size等等
Java反射机制是在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为JAVA语音的反射机制。
RTTI(Run-Time Type Identification)运行时类型识别。在《Thinking in Java》一书第十四章中有提到,其作用是在运行时识别一个对象的类型和类的信息。主要有两种方式:一种是“传统的”RTTI,它假定我们在编译时已经知道了所有的类型;另一种是“反射”机制,它允许我们在运行时发现和使用类的信息。
package 线程下;
public class Demo1 {
public static void main(String[] args) {
Manger manger=new Manger();
Thread t1=new Thread(manger);
Thread t2=new Thread(manger);
t1.start();
t2.start();
}
}
class Manger implements Runnable{
Account account=new Account();
@Override
public void run() {
CheckBlance(60000);
}
public void CheckBlance(int money){
if (account.getBalance()>money){//出现线程安全问题
System.out.println("余额充足");
account.setBalance(account.getBalance()-money);
System.out.println("余额剩余:"+account.getBalance());
}else {
System.out.println("余额不足:"+account.getBalance());
}
}
}
class Account{
private String id;
private float balance=100000;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public float getBalance() {
return balance;
}
public void setBalance(float balance) {
this.balance = balance;
}
@Override
public String toString() {
return "Account{" +
"id='" + id + '\'' +
", balance=" + balance +
'}';
}
}
一个正在执行中的程序就是一个进程,系统会为这个进程发配独立的【内存资源】。进程是程序的一次执行过程,它有自己独立的生命周期,它会在启动程序时产生,运行程序时存在,关闭程序时消亡。
线程是由进程创建的,是进程的一个实体,是具体干活的人,一个进程可能有多个线程。线程不独立分配内存,而是共享进程的内存资源,线程可以共享CPU的计算资源。
一个进程可以有多个线程,线程是程序执行中一个单一的顺序控制流程,现在线程才是程序执行流的最小单元,各个线程之间共享程序的内存空间(也就是所在进程的内存空间),上下文切换速度也高于进程。
首先联想到forest框架可以进行请求

这是请求的接口
import com.cdutseller.type.GPT.GptResponse;
import com.dtflys.forest.annotation.HTTPProxy;
import com.dtflys.forest.annotation.Post;
import com.dtflys.forest.annotation.Var;
public interface ChatGpt {
@Post(
url = "https://api.openai.com/v1/engines/${model}/completions",
contentType = "application/json",
headers = "Authorization: Bearer ${apiKey}",
data = "{\"prompt\": \"${prompt}\", \"max_tokens\": ${maxTokens}, \"temperature\": ${temperature}}"
)
@HTTPProxy(host = "127.0.0.1", port = "8089")//代理不然连不上openai
GptResponse send(@Var("prompt") String prompt);
}
对于字节和字符的读写,效率较低
所以我们要引入缓冲流
在管道的两端加入缓冲区,节点流外面的装饰,加入了缓冲区,可以直接从缓冲区读写数据,提高读写性能
File类:代表操作系统的文件(具体的文件本身,文件目录)封装了文件相关的操作方法
File类既是文件,又是目录
File类有三种常用的创建对象的方式
File.separator分隔符
相对路径和绝对路径的概念
setReadabble
setWriteable
Exists
canRead
canWrite
getAbsolutePath
getPath
异常是一个在程序执行期间发生的事件,它中断了正在执行程序的正常指令流。在程序中,错误可能产生于程序员没有预料到的各种情况或者是超出了程序员可控范围的环境因素,为了保证程序有效地执行,需要对发生的异常进行相应的处理