05 2022 档案
摘要:思路:类似数学证明题 链接:https://www.nowcoder.com/questionTerminal/49cb3d0b28954deca7565b8db92c5296来源:牛客网 /* * 奇数的最大约数就是本身。问题就是求所有f(i), i为偶数的和 因为要求的是最大奇约数,所以f(2k
阅读全文
摘要:动态规划: dp[i]:表示到达i号石板所需的最小步数 初始化dp数组为Integer.MAX_VALUE,如果dp[i]不为最大值则表示该点可以到达; dp[n] = 0; 1 import java.util.*; 2 3 public class Main{ 4 public static v
阅读全文
摘要:指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法.这种动态获取信息,以及动态调用对象方法的功能叫java语言的反射机制. 反射机制常用的类: Java.lang.Class; //代表一个类 Java.lang.reflect.Constr
阅读全文
摘要:https://blog.csdn.net/vogel_im_kafig_/article/details/121891748
阅读全文
摘要:1.Spring是轻量级的开源的JavaEE框架 2.Spring可以解决企业应用开发的复杂性 3.Spring有两个核心部分:IOC和AOP >IOC:控制反转,把创建对象的过程交给Spring进行管理 >Aop:面向切面,不修改源代码进行功能增强 4.Spring特点: >方便解耦,简化开发 >
阅读全文
摘要:一、Lambda表达式 Lambda 是一个匿名函数,我们可以把Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。 格式: lambda操作符或箭头操作符 左边:lambda形
阅读全文
摘要:URL(Uniform resource Locator): 统一资源定位符,他表示Internet上某一资源的地址。 URL的基本结构: <传输协议> : // <主机名> : <端口号> / <文件名> # 片段名 ?参数列表 1 import java.net.MalformedURLExce
阅读全文
摘要:类 DatagramSocket和 DatagramPacket实现了基于UDP协议网络程序。UDP数据报通过数据报套接字DatagramSocket发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。DatagramPacket对象封装了UDP数据报,在数据报中包
阅读全文
摘要:TCP网络编程例题 1 import org.junit.Test; 2 import sun.util.locale.provider.JRELocaleProviderAdapter; 3 4 import java.awt.event.InputEvent; 5 import java.io.
阅读全文
摘要:1 /* 2 一、网络编程中有两个主要的问题: 3 1.如何准确地定位网络上一台或多台主机;定位主机上的特定的应用 4 2.找到主机后如何可靠高效地进行数据传输 5 6 二、网络编程的两个要素: 7 1.对应问题一:IP和端口号 8 2.对应问题二:提供网络通信协议:TCP/IP 参考模型(应用层、
阅读全文
摘要:RandomAccessFile 声明在 java . io 包下,但直接继承与 java . lang . Object 类。并且它实现了 DataInput、DataOutput 这两个接口,也就意味着这个类既可以读也可以写。 RandomAccessFile 类支持 “随机访问” 的方式,程序
阅读全文
摘要:ObjectInputStream ObjectOutputStream 用于存储和读取基本数据类型数据或对象的处理流,他的强大之处就是可以吧java中的对象写入到数据源中,也能把对象从数据源中还原回来 序列化:用ObjectOutputStream类保存基本类型数据或对象的机制 反序列化:用Obj
阅读全文
摘要:在JVM中,类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。而解析阶段即是虚拟机将常量池内的符号引用替换为直接引用的过程。一、符号引用(Symbolic References):符号引用以一组符号来描述所引用的目标,符号可以是
阅读全文
摘要:一、流的基本分类 1.操作数据单位:字节流、字符流 2.数据的流向:输入流、输出流 3.流的角色:节点流、处理流 二、流的体系结构 抽象基类 节点流(或文件流) 缓冲流(处理流的一种) 转换流 InputStream FileInputStream BufferedInputStream 字节流 O
阅读全文
摘要:https://blog.csdn.net/m0_57001006/article/details/122138635
阅读全文
摘要:泛型:就是一种不确定的数据类型。 比如:ArrayList<E> E就是泛型。 这种不确定的数据类型需要在使用这个类的时候才能够确定出来。 泛型可以省略,如果省略,默认泛型是Object类型。自定义泛型类 1 package com; 2 3 import java.util.ArrayList;
阅读全文
摘要:1.addAllpublic static <T> boolean addAll(Collection<T> c, T ... elements):往集合中添加一些元素。2.sortpublic static <T> void sort(List<T> list):将集合中元素按照默认规则排序(升序
阅读全文
摘要:比较 HashMap HashTable 存储结构 数组 + 链表/红黑树 数组 + 链表 扩容方式 oldCap * 2 oldCap * 2 + 1 K,V能否为null key, value 均可以为 null key, value 均不可以为 null 线程是否安全 线程不安全 线程安全 H
阅读全文
摘要:一、对于Map集合存储结构的理解首先介绍以HashMap为典型代表的Map集合的存储结构 ① Map中的key:无序的、不可重复的,底层使用Set集合存储key;key所在的类要重写equals()和hashCode() 。 ② Map中的value:无序的、可重复的,底层使用Collection集
阅读全文
摘要:List,Set都是继承自Collection接口; List特点:元素有放入顺序,元素可重复;Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的);Map特点:元素按键值对存储,无放入顺序 (应该知道什
阅读全文
摘要:一.相同点 三个类都实现了List接口,存储数据的形式特点相同,都是存储可重复的有序的数据。 二.不同点 1.ArrayList类主要是实现类,虽然效率高,但是线程不安全。底层用的是Object[]数组存储。从查找的时间复杂度来说它属于O(I)。删除元素的时间复杂度O(n)。 2.LinkedLis
阅读全文
摘要:Collection接口常用方法: boolean add(E e) 把给定的对象添加到当前集合中。 void clear() 清空集合中所有的元素。 boolean remove(E e) 把给定的对象在当前集合中删除。 boolean contains(E e) 判断当前集合中是否包含给定的对象
阅读全文
摘要:一、JDK 8之前日期和时间的API Java.lang.System类 System类提供的public static long currentTimeMills()用来返回当前时间与1970年1月1日0分0秒之间以毫秒为单位的时间差, 称为时间戳。 1 long time = System.cu
阅读全文
摘要:throw表示抛出一个异常类的对象,生成异常对象的过程。声明在方法体内。 throws属于异常处理的一种方式,声明在方法声明处。
阅读全文
摘要:一、异常的体系结构: java.lang.Throwable | java.lang.Error:一般不编写针对性的代码进行处理 | java.lang.Exception:可以进行异常的处理 | 编译时异常(checked) | IOException | FileNotFoundExceptio
阅读全文
摘要:代理模式目的是为了扩展和增强类或接口。代理模式通常可分为静态代理模式和动态代理模式。 1.静态代理模式 主要实现的原理是:代理类和被代理类同时实现一个主题接口,代理类持有被代理类的引用。 (1)新建一个公共接口UserInterface (2)定义真实执行类RealUser并实现公共接口UserIn
阅读全文
摘要:1.接口使用interface定义 2.Java中,接口和类是并列的两个结构 3.如何定义接口:定义接口中的成员 3.1 JDK7及以前:只能够定义全局常量和抽象方法 >全局常量:public static final的,但是书写时可以省略不写 >抽象方法:public abstract的 3.2
阅读全文
摘要:抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上扩展、改造,但子类总体上会保留抽象类的行为方式 解决的问题: >当功能内部一部分实现是确定的,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现 >换句话说,在软件开发中实现一个算法时,整体步骤很固
阅读全文
摘要:1 public class AbstractTest { 2 public static void main(String[] args) { 3 method(new Student()); //匿名类 4 5 Student stu = new Student(); 6 method1(stu
阅读全文
摘要:abstract修饰类:抽象类 >此类不能实例化 >抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程) >开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作 abstract修饰方法:抽象方法 >抽象方法只有方法名称,没有方法体 >若子类重写了父类中的所有的抽象方
阅读全文
摘要:类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只能提供一个取得其对象实例的方法。 我们首先将类的构造器访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类的内部可以产生该类的对象。在类的外部只能通过调用该类的某个
阅读全文
摘要:JVM内存结构: 虚拟机栈:即平时提到的栈结构,我们将局部变量存储在栈结构中 堆:我们将new出来的结(比如:数组、对象)加载在堆空间中。补充:对象的属性(非static的)加载在堆空间中 方法区:类的加载信息、常量池、静态域
阅读全文
摘要:1 package com.company; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 int num1 = 3; 7 int num2 = 5; 8 System.out.println(num1
阅读全文
摘要:基本数据类型: byte 1B short 2B int 4B long 8B char 2B float 4B double 8B boolean 0/1 引用数据类型: 类、接口、数组
阅读全文
摘要:JDK = JRE + Java的开发工具(javac.exe, java.exe, javadoc.exe) JRE = JVM + Java核心类库
阅读全文
摘要:深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。 假设B复制了A,修改A的时候,看B是否发生变化: 如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值) 如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值) 1、浅拷贝 在拷贝一个对象时,对对象
阅读全文
摘要:显示参数就是形式参数(形参),隐式参数就是实际传过来的参数(实参) 1 function go(x, y) { // x, y 形参 2 return x + y; 3 } 4 5 go(1, 2); // 1, 2 实参
阅读全文
摘要:1.子类可以调用父类public、protected、包权限的方法 但是父类不可以调用子类的特有方法(子类的特殊性) public class Manager extends Employee{ private double bonus; public void setBonus(double bo
阅读全文
摘要:在idea创建class的时候,发现创建一直报错。 原因是自己无意中创建了一个用这个类名创建了一个text模版。 解决方法:
阅读全文
摘要:String底层char[]数组用final修饰,不可变。 StringBuilder底层char[]数组没有用final修饰,可变;线程不安全,效率高(一般用的多) StringBuffer底层长度为16的char[]数组没有用final修饰,可变;线程安全,效率低(一般用得少) 扩容问题:如果要
阅读全文
摘要:先放结论: 通过重写的hashcode 直接定位到key 的位置 , 根据重写的equals 保证唯一性。 hashCode()方法主要用来定位元素在数组中的下标位置; equals()方法主要是在发生hash冲突时,遍历链表,挨个比较元素时,判断两个元素是否相等。 重写hashCode(): 保证
阅读全文
摘要:HashMap HashMap底层是一个数组,数组中每个元素是一个单链表(采用拉链法解决哈希冲突)。 JDK8之后,对HashMap底层数据结构(单链表)进行了改进 1.如果单链表元素超过8个,则将单链表转变为红黑树; 2.如果红黑树节点小于6时,再将红黑树变为单链表 这种方式也是为了提高检索效率,
阅读全文
摘要:一、概要 ArrayList 底层就是⼀个 Object[] 数组, ArrayList 底层数组默认初始化容量为10; ArrayList的容量使用完之后,会“自动”创建容量更大的数组,并将原数组中所有元素拷贝过去,这会导致效率降低。 LinkedList底层是一个双向链表 ArrayList 构
阅读全文