java
文章平均质量分 52
Ha ha, a smile
这个作者很懒,什么都没留下…
展开
-
栈(数据结构)
栈(Stack):1.栈是一个先入后出的有序队列2.栈是限制线性表中元素的插入和删除只能在线性的同一端的一种特殊线性表,允许插入和删除的一端为变化的一端,为栈顶,另一端为固定的一端为栈底3.最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。实现栈的思路分析1.使用数组来模拟栈2.定义一个top来表示栈顶,初始化为-13.入栈的操作,当有数据加入到栈时,top++;stack[top]=data;4.出栈的操作,intvalue原创 2021-07-21 21:04:25 · 209 阅读 · 0 评论 -
链表(数据结构)
链表链表是有序的列表1.链表是以节点的方式来存储,是链式存储2.每个节点包含data域,next域指向下一个节点3.链表的各个节点不一定是连续储存。4.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定。添加(创建)1.先创建一个head的头节点,作用就是表示单链表的头2.后面我们每添加一个节点,就直接添加到链表的最后按添加的顺序:public class SingleLinkedListDemo { public static void main(String[] a原创 2021-07-21 21:02:23 · 184 阅读 · 1 评论 -
队列(数据结构)
队列:不完美的:public class ArrayQueueDemo { public static void main(String[] args) { ArrayQueue arrayQueue = new ArrayQueue(3); char key = ' '; Scanner scanner = new Scanner(System.in); boolean loop = true; whil原创 2021-07-21 21:01:07 · 173 阅读 · 0 评论 -
数组(数据结构)
线性结构:主要特点是数据元素之间存在一对一的线性关系线性结构分为顺序存储结构和链式存储结构,顺序表的存储元素是连续的链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息线性结构常见的有:数组,队列,链表,栈非线性结构:包括:二维数组,多维数组,广义表,树结构,图结构稀疏数组:一个数组大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组稀疏数组的处理方法是:1)记录数组一共有几行几列,有多少个不同的值。2)把具有不同原创 2021-07-21 20:57:52 · 102 阅读 · 0 评论 -
BIO
Java BIO 基本介绍Java BIO 就是传统的 java io 编程,其相关的类和接口在 java.ioBIO(blocking I/O) : 同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器).Java BIO 工作机制对 BIO 编程流程的梳理服务器端启动一个 ServerSocket,注册端口,调用accpet方法监听客户端的S原创 2021-05-11 17:52:32 · 78 阅读 · 0 评论 -
BIO、NIO、AIO介绍
I/O 模型基本说明I/O 模型:就是用什么样的通道或者说是通信模式和架构进行数据的传输和接收,很大程度上决定了程序通信的性能,Java 共支持 3 种网络编程的/IO 模型:BIO、NIO、AIO实际通信需求下,要根据不同的业务场景和性能需求决定选择不同的I/O模型I/O模型Java BIO同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销Java NIOJava NIO : 同原创 2021-05-11 17:20:46 · 134 阅读 · 0 评论 -
idea-2089
1.想长时间使用idea2020.22.idea中遇到一些问题请看我的github里面这里面写的很详细https://github.com/hahayixiao2/notes.git原创 2020-09-08 15:21:18 · 168 阅读 · 1 评论 -
Lambda表达式的使用
Lambda表达式的使用1.举例: (o1,o2) -> Integer.compare(o1,o2);2.格式:-> :lambda操作符 或 箭头操作符->左边:lambda形参列表 (其实就是接口中的抽象方法的形参列表)->右边:lambda体 (其实就是重写的抽象方法的方法体)Lambda表达式的使用:(分为6种情况介绍)总结:->左边:lambda形参列表的参数类型可以省略(类型推断);如果lambda形参列表只有一个参数,其一对()也可以省略原创 2020-08-23 19:40:27 · 210 阅读 · 0 评论 -
代理
静态代理interface ClothFactory{ void produceCloth();}//代理类class ProxyClothFactory implements ClothFactory{ private ClothFactory factory;//用被代理类对象进行实例化 public ProxyClothFactory(ClothFactory factory){ this.factory = factory; }原创 2020-08-23 19:29:48 · 315 阅读 · 0 评论 -
反射
反射 //反射之前,对于Person的操作 @Test public void test1() { //1.创建Person类的对象 Person p1 = new Person("Tom", 12); //2.通过对象,调用其内部的属性、方法 p1.age = 10; System.out.println(p1.toString()); p1.show(); //在Pe原创 2020-08-22 14:34:34 · 129 阅读 · 0 评论 -
网络编程
网络编程一、网络编程中有两个主要的问题:1.如何准确地定位网络上一台或多台主机;定位主机上的特定的应用2.找到主机后如何可靠高效地进行数据传输二、网络编程中的两个要素:1.对应问题一:IP和端口号2.对应问题二:提供网络通信协议:TCP/IP参考模型(应用层、传输层、网络层、物理+数据链路层)三、通信要素一:IP和端口号IP:唯一的标识 Internet 上的计算机(通信实体)在Java中使用InetAddress类代表IPIP分类:IPv4 和 IPv6 ; 万维网 和 局域原创 2020-08-21 13:47:59 · 163 阅读 · 0 评论 -
随机存取文件流
RandomAccessFile的使用1.RandomAccessFile直接继承于java.lang.Object类,实现了DataInput和DataOutput接口2.RandomAccessFile既可以作为一个输入流,又可以作为一个输出流3.如果RandomAccessFile作为输出流时,写出到的文件如果不存在,则在执行过程中自动创建。如果写出到的文件存在,则会对原有文件内容进行覆盖。(默认情况下,从头覆盖)4. 可以通过相关的操作,实现RandomAccessFile“插入”数据的效原创 2020-08-20 13:14:30 · 363 阅读 · 0 评论 -
对象流
对象流ObjectInputStream和ObjectOutputStream用于存储和读取基本数据类型数据或者对象的处理流。它的强大之处就是可以把Java中的对象写到数据源中,也能把对象从数据源中还原回来。序列化:用ObjectOutputStream类保存基本类型数据或对象的机制反序列化:用ObjectInputStream类读取基本类型数据或对象的机制ObjectOutputStream和ObjectInputStream不能序列化static和transient修饰的成员的变量4.序列化原创 2020-08-20 12:17:33 · 566 阅读 · 0 评论 -
标准输入输出流打印流数据流
标准的输入、输出流1.1System.in:标准的输入流,默认从键盘输入System.out:标准的输出流,默认从控制台输出1.2System类的setIn(InputStream is) / setOut(PrintStream ps)方式重新指定输入和输出的流。 public static void main(String[] args) { BufferedReader br = null; try { InputStreamRead原创 2020-08-19 13:33:16 · 651 阅读 · 0 评论 -
转换流
转换流1.转换流:属于字符流InputStreamReader:将一个字节的输入流转换为字符的输入流OutputStreamWriter:将一个字符的输出流转换为字节的输出流2.作用:提供字节流与字符流之间的转换3.解码:字节、字节数组 —>字符数组、字符串4.编码:字符数组、字符串 —> 字节、字节数组5.字符集ASCII:美国标准信息交换码。用一个字节的7位可以表示。ISO8859-1:拉丁码表。欧洲码表用一个字节的8位表示。GB2312:中国的中文编码表。最多原创 2020-08-19 12:59:38 · 709 阅读 · 0 评论 -
缓冲流
缓冲流:1.缓冲流:BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter2.作用:提供流的读取、写入的速度提高读写速度的原因:内部提供了一个缓冲区3 处理流,就是“套接”在已有的流的基础上。 @Test public void BufferedStreamTest() throws FileNotFoundException { BufferedInputStream原创 2020-08-19 12:34:31 · 103 阅读 · 0 评论 -
InputStreamReader和OutputStreamWriter
InputStreamReader和OutputStreamWriter1.转换流:属于字符流InputStreamReader:将一个字节的输入流转换为字符的输入流OutputStreamWriter:将一个字符的输出流转换为字节的输出流2.作用:提供字节流与字符流之间的转换3.解码:字节、字节数组 —>字符数组、字符串编码:字符数组、字符串 —> 字节、字节数组4.字符集ASCII:美国标准信息交换码。用一个字节的7位可以表示。ISO8859-1:拉丁码表。欧洲码表用原创 2020-08-18 14:34:05 · 812 阅读 · 0 评论 -
FileReader和FileWriter
FileReader和FileWriter一、流的分类:1.操作数据单位:字节流、字符流2.数据的流向:输入流、输出流3.流的角色:节点流、处理流二、流的体系结构抽象基类 节点流(或文件流) 缓冲流(处理流的一种)InputStream FileInputStream (read(byte[] buffer)) BufferedInputStream (read(b原创 2020-08-18 14:11:57 · 609 阅读 · 1 评论 -
File类的使用
File类的使用File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)File类声明在java.io包下File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的"终点".1.如何创建File类的实例File(String filePath)File(String parentPath,String c原创 2020-08-18 13:29:53 · 122 阅读 · 0 评论 -
泛型的使用
泛型的使用1.jdk 5.0新增的特性2.在集合中使用泛型:总结:① 集合接口或集合类在jdk5.0时都修改为带泛型的结构。② 在实例化集合类时,可以指明具体的泛型类型③ 指明完以后,在集合类或接口中凡是定义类或接口时,内部结构(比如:方法、构造器、属性等)使用到类的泛型的位置,都指定为实例化的泛型类型。比如:add(E e) —>实例化以后:add(Integer e)④ 注意点:泛型的类型必须是类,不能是基本数据类型。需要用到基本数据类型的位置,拿原创 2020-08-16 17:16:46 · 105 阅读 · 0 评论 -
Collections工具类
Collections工具类reverse(List):反转 List 中元素的顺序shuffle(List):对 List 集合元素进行随机排序sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序sort(List,Comparator):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序swap(List,int, int):将指定 list 集合中的 i 处元素和 j 处元素进行交换Object max(Collection):根据元素的自然原创 2020-08-14 14:34:17 · 80 阅读 · 0 评论 -
TreeMap
TreeMap排序 //向TreeMap中添加key-value,要求key必须是由同一个类创建的对象 //因为要按照key进行排序:自然排序 、定制排序 //自然排序 @Test public void test1(){ TreeMap map = new TreeMap(); User u1 = new User("Tom",23); User u2 = new User("Jerry",32); User原创 2020-08-14 14:17:30 · 88 阅读 · 0 评论 -
Map(1)
一、Map的实现类的结构:Map:双列数据,存储key-value对的数据 —类似于高中的函数:y = f(x)HashMap:作为Map的主要实现类;线程不安全的,效率高;存储null的key和valueLinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历。原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素。对于频繁的遍历操作,此类执行效率高于HashMap。TreeMap:保证按照添加的key-value对进行排序,实现排序遍历。原创 2020-08-14 13:43:55 · 618 阅读 · 0 评论 -
set接口
setSet接口的框架:Collection接口:单列集合,用来存储一个一个的对象Set接口:存储无序的、不可重复的数据 -->高中讲的“集合”HashSet:作为Set接口的主要实现类;线程不安全的;可以存储null值LinkedHashSet:作为HashSet的子类;遍历其内部数据时,可以按照添加的顺序遍历对于频繁的遍历操作,LinkedHashSet效率高于HashSet.TreeSet:可以按照添加对象的指定属性,进行排序。Set接口中没有额外定义新的方法,使用的原创 2020-08-13 14:05:32 · 163 阅读 · 0 评论 -
List接口
ListList接口框架Collection接口:单列集合,用来存储一个一个的对象List接口:存储有序的、可重复的数据。 -->“动态”数组,替换原有的数组ArrayList:作为List接口的主要实现类;线程不安全的,效率高;底层使用Object[] elementData存储LinkedList:对于频繁的插入、删除操作,使用此类效率比ArrayList高;底层使用双向链表存储Vector:作为List接口的古老实现类;线程安全的,效率低;底层使用Object[] element原创 2020-08-13 12:41:19 · 170 阅读 · 0 评论 -
foreach循环
foreach循环 @Test public void test1(){ Collection coll = new ArrayList(); coll.add(123); coll.add(456); coll.add(new Person("Jerry",20)); coll.add(new String("Tom")); coll.add(false); //for(集合元素的类原创 2020-08-12 14:42:13 · 168 阅读 · 0 评论 -
iterator迭代器
iterator迭代器 @Test public void test1(){ Collection coll = new ArrayList(); coll.add(123); coll.add(456); coll.add(new Person("Jerry",20)); coll.add(new String("Tom")); coll.add(false); Iterator i原创 2020-08-12 13:02:48 · 111 阅读 · 0 评论 -
collection接口常用方法
collection接口常用方法test1 @Test public void test1(){ Collection coll = new ArrayList(); coll.add(123); coll.add(456);// Person p = new Person("Jerry",20);// coll.add(p); coll.add(new Person("Jerry",20)原创 2020-08-12 12:39:31 · 276 阅读 · 0 评论 -
集合
集合一、集合框架的概述1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器。说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中)2.1 数组在存储多个数据方面的特点: > 一旦初始化以后,其长度就确定了。 > 数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。 比如:String[] arr;int[] arr1;Object[] arr2;2.2 数组在存储多个数据方原创 2020-08-11 14:33:35 · 127 阅读 · 0 评论 -
自定义注解
自定义注解注解的使用理解Annotation:① jdk 5.0 新增的功能② Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理。通过使用 Annotation,程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。③在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaEE/Android中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的原创 2020-08-11 14:26:16 · 103 阅读 · 0 评论 -
enum的使用
Enum的常用方法package com.company;public class SeasonTest1 { public static void main(String[] args) { Season1 spring = Season1.SPRING; System.out.println(spring.toString()); System.out.println("----------------"); Season1原创 2020-08-10 12:07:41 · 123 阅读 · 0 评论 -
自定义枚举类
package com.company;public class SeasonTest { public static void main(String[] args) { Season spring = Season.SPRING; Season summer= Season.SUMMER; Season autumn = Season.AUTUMN; Season winter = Season.WINTER;原创 2020-08-10 11:25:14 · 410 阅读 · 0 评论 -
compareTo
compareTopackage com.company;import org.junit.Test;import java.lang.reflect.Array;import java.util.Arrays;public class Goods implements Comparable{ private String name; private double price; public Goods(){ } public Goods(Stri原创 2020-08-09 14:13:43 · 101 阅读 · 0 评论 -
LocalDate,localTime,localDateTime
LocalDate,localTime,localDateTime @Test public void test1(){ //now():获取当前的日期、时间、日期+时间 LocalDate localDate = LocalDate.now(); LocalTime localTime = LocalTime.now(); LocalDateTime localDateTime = LocalDateTime.now();原创 2020-08-09 13:23:55 · 95 阅读 · 0 评论 -
获取两个字符串中最大相同子串
获取两个字符串中最大相同子串。比如:str1 = “abcwerthelloyuiodefabcdef”;str2 = “cvhellobnm”public String getMaxSameString(String str1,String str2){ if(str1 != null && str2 != null){ String maxStr = (str1.length() >= str2.length())? str1 : str原创 2020-08-08 13:41:19 · 909 阅读 · 1 评论 -
获取一个字符串在另一个字符串中出现的次数
获取一个字符串在另一个字符串中出现的次数。比如:获取“ab”在 “abkkcadkabkebfkaabkskab” 中出现的次数 public int getCount(String mainStr,String subStr){ int mainLength = mainStr.length(); int subLength = subStr.length(); int count = 0; int index = 0;原创 2020-08-08 13:40:16 · 607 阅读 · 0 评论 -
字符串反转
将一个字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg” 方式一:转换为char[] */ public String reverse(String str,int startIndex,int endIndex){ if(str != null){ char[] arr = str.toCharArray(); for(int x = startIndex,y = endI原创 2020-08-08 13:39:13 · 85 阅读 · 0 评论 -
String,StringBuffer,StringBuilder
String,StringBuffer,StringBuilder对比String、StringBuffer、StringBuilder三者的效率:从高到低排列:StringBuilder > StringBuffer > String@Test public void test3(){ //初始设置 long startTime = 0L; long endTime = 0L; String text = "";原创 2020-08-07 16:16:02 · 137 阅读 · 0 评论 -
String常用方法(3)
String常用方法替换:String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。String replaceAll(String regex, String replacement原创 2020-08-07 15:47:34 · 226 阅读 · 0 评论 -
String常用方法(2)
String的转化String 与 byte[]之间的转换编码:String --> byte[]:调用String的getBytes()解码:byte[] --> String:调用String的构造器编码:字符串 -->字节 (看得懂 —>看不懂的二进制数据)解码:编码的逆过程,字节 --> 字符串 (看不懂的二进制数据 —> 看得懂)说明:解码时,要求解码使用的字符集必须与编码时使用的字符集一致,否则会出现乱码。 @Test publ原创 2020-08-07 15:24:55 · 103 阅读 · 0 评论