![](https://img-blog.csdnimg.cn/7c50ca5fd1974b7195357bca3900dcbf.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 89
个人对应 Java SE 知识内容上的理解总结
ChinaRainbowSea
一个人的资金一定是与他(她)的能力相匹配的,无一例外。
展开
-
Stream API
从JDK1.8开始,Java语言引入了一个全新的流式Stream API,StreamAPI把真正的函数式编程风格运用到Java语言中,使用StreamAPI可以帮我们更方便地操作集合,允许开发人员在不改变原始数据源的情况下对集合进行操作,这使得代码更加简洁、易读和可维护。使用Stream API对集合数据进行操作,就类似于使用SQL执行的数据库查询,也可以使用Stream API来并行执行的操作。简而言之,Stream API提供了一种高效且易于使用的处理数据的方式。原创 2024-07-27 17:41:44 · 257 阅读 · 0 评论 -
Java SE 文件上传和文件下载的底层原理
method指定为 post ,因为文件上传是比较大的文件, get 无法发送较大的文件。,表示进行二进制文件的提交,multipart/form-data: 表示表单提交的数据是有多个部分组成,也就是可以提交二进制数据和文本数据,两者都行。有时-》上传失败了,可能是目录的问题 ,加上 “/”为了防止大量的目录创建,可以增加日期时间进行创建多个目录,这样以日期天数进行创建目录的话,一年最多也就是 365个目录而已。文本被替换覆盖的问题,我们也一个工具类,让文件名不重复。原创 2024-07-27 17:39:31 · 468 阅读 · 0 评论 -
Java 网络编程(TCP编程 和 UDP编程)
我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之间,则是使用套接Socket来进行分离。套接字就像是传输层为应用层开的一个小口,应用程序通过这个小口向远程发送数据,或者接收远程发来的数据。而这个小口以内,也就是数据进入这个口之后,或者数据从这个口出来之前,是不知道也不需要知道的,也不会关心它如何传输,这属于网络其它层次工作。Socket实际是传输层供给应用层的编程接口。Socket就是应用层与传输层之间的桥梁。原创 2024-07-18 14:42:15 · 1308 阅读 · 0 评论 -
IDEA: 如何导入项目模块 以及 将 Java程序打包 JAR 详细步骤
IDEA: 如何导入项目模块 以及 将 Java程序打包 JAR 详细步骤原创 2023-03-13 16:11:14 · 4266 阅读 · 0 评论 -
函数编程:强大的 Stream API
Java8中有两大最为重要的改变。第一个便是Lambda表达式,想要进一步了解的大家可以移步至 🔜🔜🔜函数式编程:Lambda 表达式_ChinaRainbowSea的博客-CSDN博客;Stream API了。Stream API是在包下的,Stream 是把真正的函数式编程风格引入到Java中,这时目前为止对java类库最好的补充了,因为Stream API可以极大的提供 Java程序员的生产力,让程序员写出更高效率,干净,简洁的代码。Stream。原创 2023-03-06 17:12:29 · 353 阅读 · 0 评论 -
函数式编程:Lambda 表达式
相信大家一定在相关的框架的源码中看到不少 使用了lambda表达式的内容吧。如果我们想要阅读框架的源码上的逻辑,则必须了解,明白Lambda表达式的格式,语法了。表达式是Java8的新特性。Java lambda 表达式是 Java进入函数式编程的第一步。因此,表达式时可以单独创建的,而无需属于任何类。这一点很重要。Java Lambda 表达式可以像对象一样传递并按需执行。表达式通常用于实现 简单的事件监听/回调,或在API 函数式编程时使用。Lambda是一个匿名函数,我们可以把Lambda。原创 2023-03-06 16:49:30 · 515 阅读 · 0 评论 -
Java 文本检索神器 “正则表达式”
我相信,作为一名程序员或者准程序员,你肯定是知道正则表达式的。作为计算机领域最伟大的发明之一,正则表达式简单、强大,它可以极大地提高我们工作中的文本处理效率。现在,各大操作系统、编程语言、文本编辑器都已经支持正则表达式,甚至我还和极客时间的编辑开玩笑说,他们也应该好好学学正则这门手艺。正则,就是正则表达式,英文是 Regular Expression,简称 RE。 顾名思义,正则其实就是一种 描述文本内容组成规律的表示方式。在编程语言中,正则常常用来简化文本处理的逻辑。在 Linux 命令中,它也可以帮助我原创 2023-02-28 09:08:16 · 676 阅读 · 0 评论 -
Java “框架 = 注解 + 反射 + 设计模式” 之 反射详解
反射的作用:通过 Java语言中的反射机制可以操作字节码文件,优点类似于黑客。(可以读和修改字节码文件),可以调用私有的构造器,set/get 属性,调用私有的方法。获取 Class 类实例的三种方式,重点掌握方式三:该方式会自动调用该类中的静态代码块,因为静态代码块,而不会实例化类的,可以应用于 JDBC 加载数据库驱动,执行其中的静态代码块,而不实例化。类加载的过程。类加载器的作用: 负责将对应类生成的.class文件(可能在磁盘上,也可能在网络上)加载到内存中,并为之在堆区中生成对应的。原创 2023-02-23 14:27:36 · 410 阅读 · 0 评论 -
Java “框架 = 注解 + 反射 + 设计模式” 之 注解详解
Annotaion注解其实也是一种引用数据类型,编译之后也是生成xxx.class字节码文件的。定义新的Annotation 注解类型使用@interface关键字自定义注解自动实现了接口} // [ 修饰列表 ] @interface 注解名 /(注解类名) {使用IDEA创建一个 注解类型: 鼠标右键 ——> new 一个选择 :如下查看该 我们该自定义的注解的 UML 图:可以清楚的看到该 注解类型是自动继承了该接口的但是事实上却是自动实现了接口。在Java 8。原创 2023-02-22 11:30:17 · 2907 阅读 · 2 评论 -
Java 优化:读取配置文件 “万能方式“ 跨平台,动态获取文件的绝对路径
原始的方式:写相对路径的话,无法跨编译器;因为不同的编译器默认相对的路径是不同的。写绝对路径的话,无法跨平台,因为不同操作系统的文件规则是不一样的,比如 Windows系统中的绝对路径是带盘符(D盘,C盘),Linux 系统中的文件规则是不带盘符的。当在J Windows 操作系统中编写的绝对路径的Java程序,移植到到 Linux 操作系统中就会报错。静态获取的绝对路径 和 动态获取绝对路径。上述的三种优化方式,都是动态获取绝对路径的,但是都是基于类路径下。原创 2023-02-22 10:46:19 · 751 阅读 · 2 评论 -
“万字“ Java I/O流讲解
类:文件和文件目录路径的抽象表示形式,与平台无关。File 能新建,删除,重命名文件和目录,但File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用 输入/输出 流。想要在Java 程序中表示一个真实存在的文件或目录,那么必须有一个 File 对象,但是 Java 程序中的一个 File 对象,可能没有一个真实存在的文件或目录。File 对象可以作为参数传递给流的构造器。**绝对路径:**是一个固定的路径,从盘符开始。**相对路径:**是相对于某个位置开始。IDEA中默认相对路径是从项目原创 2023-02-11 17:39:57 · 650 阅读 · 0 评论 -
Java JDK1.5: 泛型 新特性的讲解说明
在任何不重要的软件项目中,错误都只是生活中的事实。仔细的计划,编程和测试可以帮助减少他们的普遍性,但不知何故,在某个地方,他们总是会找到一种方法来进入你的代码。随着新功能的推出以及您的代码库规模和复杂性的增加,这一点变得尤为明显。幸运的是,一些错误比其他错误更容易被发现。例如,编译时错误可以在早期发现;你可以使用编译器的错误信息来找出问题所在,然后修正它。运行时错误,然而,可能是更多的问题;它们并不总是立即出现,而且当它们这样做时,它可能在程序中的某一点远离问题的实际原因。原创 2023-02-05 21:15:00 · 442 阅读 · 1 评论 -
Java集合框架
早在 Java 2 中之前,Java 就提供了特设类。Dictionary, Vector, Stack, 和 Properties这些类用来存储和操作对象组。虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。由于这个原因,使用Vector类的方式和使用Properties类的方式有着很大不同。集合框架被设计成要满足以下几个目标。该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。原创 2023-02-03 17:51:20 · 654 阅读 · 0 评论 -
Java Collection 接口下的 “ List 集合” 与 “ Set 集合 ”
Collection 接口是 List,Set 和 Queue 接口的父接口,该接口里定义的方法。既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合 。JDK 不提供此接口的任何直接实现,而是提供更具体的子接口(如:Set 和 List) 实现。在 Java5 之前,java 集合会丢失容器中所有对象的数据类型,把所有对象都当成 Object 类型处理;从 JDK5.0 增加了 泛型 以后,Java 集合可以记住容器中对象的数据类型。接口是不可 new 的,接口用于多态——> 接口的实原创 2023-02-03 17:49:49 · 623 阅读 · 0 评论 -
Java集合 Map 集合 与 操作集合的工具类: Collections 的详细说明
Map 接口与 Collection 并列存在的,用于保存具有映射关系的数据:key-value 被称为 键值对 。Java集合可分为 Collection 和 Map 两种体系。Map 中的 key 和 value 都可以是任何引用类型的数据。Map 中的 key 用 Set 集合存储的,不允许重复。即同一个 Map 对象所对应的类,必须重写hashCode() 和 equals() 方法。但是其中的 value 值是可以存储重复的数据的。而 value 值则是被 Collection 接口集合存储的。原创 2023-02-03 17:43:43 · 612 阅读 · 1 评论 -
Java:枚举类型
一个枚举类型是一种特殊的数据类型,使一个变量是一组预定义的常量。变量必须等于一个已经预定义的值。常见的例子包括罗盘方向(NORTH、SOUTH、EAST 和 WEST 的值)和一周的几天。因为它们是常量,枚举类型的字段的名称是大写字母。对于类的对象有限,并且确定的,才可以使用 枚举类型,如:星期:Monday(星期一)、…、Sunday(星期天)性别:Man(男)、Woman(女)季节:Spring(春节)…Winter(冬天)原创 2023-01-24 21:46:32 · 1797 阅读 · 0 评论 -
财务精度:BigInteger 与 BigDecimal
BigDecimal 属于大数据,精度很高,不属于基本数据类型,属于java对象(引用数据类型)这是sun提供的一个类,专门用在财务软件当中。注意: 财务软件中的double 是不够的,当处理财务数据时,用那一种类型?千万不能用 double 要用中的类的这个对象以及处理 Double 精度上的问题,使用 ``java.math.BigDecimal` 处理。对于存储大的 Int 数值 使用 ``java.Math.BigInteger` 类 存储范围更大。原创 2023-01-22 17:56:59 · 1580 阅读 · 0 评论 -
比较器: Comparable 与 Comparator 区别
自然排序的当我们想对自定的类,进行排序时可以重写 Comparable 接口中的抽象方法,默认一些已经实现 Comparable 接口的并重写了 compareTo()抽象方法,String,Doubel,Arrays 默认时升序的。如果当前对象this > 形参对象Obj,则返回正整数。如果当前对象 this < 形参对象 Obj,则返回负整数,如果当前对象 this == 形参对象 Obj,则返回 0降序则是相反的:如果当前对象this < 形参对象Obj,则返回正整数。原创 2023-01-22 17:52:29 · 1614 阅读 · 0 评论 -
JDK8 前后的 Date 日期时间 API
java.util.Date 包下的 转换为 java.sql.Date 包下的方式,java.sql.Date 可以强制转换为 java.util.Date包下的日期时间类型,因为 java.sql.Date extends 继承了 java.util.Date 包父类(多态性但是 java.sql.Date 不可以 强制转换为 java.util.Date 包下的,因为 java.sql.Date不是器多态的性的实例对象。而是通过两者之间的时间戳转换。原创 2023-01-22 17:46:01 · 1971 阅读 · 0 评论 -
String 与 StringBuffer 与 StringBuilder 各自的妙用
// 总结:* 增加: append(xxx)* 删: delete(int start,int end)* 改: setCharAt(int n,char ch) / replace(int start,int end, String str)* 查: charAt(int n)* 插: insert(int offset, xxx)* 长度: length()* 遍历: for + charAt()/toString()字符串增加操作的方法: append(xxx)原创 2023-01-22 17:31:29 · 877 阅读 · 0 评论 -
String 有趣简单的编程题
灵活使用 String 中方法,实现对应的操作,提高开发效率。对应String 字符串的频繁拼接,建议使用 StringBuffer / StringBuild 替换了。理解 ASCII 码表中的 数字字符 char 转换为 int 的数值的方式:!!原创 2023-01-22 17:18:44 · 1877 阅读 · 0 评论 -
Java多线程:线程的生命周期 又称 “线程的状态图” 的详细讲解
Java多线程的生命周期图又称 “多线程状态图”原创 2023-01-12 15:50:39 · 1089 阅读 · 0 评论 -
Java多线程:线程通信:生产者 和 消费者 || 顺序打印
在Object.java中,定义了wait(), notify()和notifyAll()等方法。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。notify()和notifyAll()的作用,则是唤醒当前对象上的等待线程;notify()是唤醒单个线程,而是唤醒所有的线程。异常这 三个wait(),notify(), notifyAll()方法只有在synchronized方法或synchronized代码块中才能使用,否则会报异常如下是图示说明。原创 2023-01-12 15:46:53 · 338 阅读 · 0 评论 -
Java多线程:线程的优先级 || 线程的中断 || 线程的分类 || 线程的定时器
对于线程的优先级的使用 Thread 类中的获取当前线程的优先级和设置线程的优先级。线程的优先级是在 [10~1] 之间的,其中 5 是默认线程的优先级。非法参数异常。低优先级只是获得调度的概率低,并非一定是在高优先级线程之后才被调用,高优先级的线程也不是一定就比低的优先级线程先执行,只是先被执行的概率更高而已,注意是概率不是绝对。是用来服务用户线程的,通过在start()方法前调用,可以将一个用户线程变成一个守护线程。注意是:在 start() 方法创建新线程之前,调用非法线程状态异常。原创 2023-01-12 15:40:09 · 899 阅读 · 0 评论 -
Java多线程:多线程同步安全问题的 “三“ 种处理方式 ||多线程 ”死锁“ 的避免 || 单例模式”懒汉式“的线程同步安全问题
当多个线程在操作同一个进程共享的数据的时候,一个线程对共享数据的执行仅仅只执行了一部分,还没有执行完,另一个线程参与进来执行。去操作所有线程共享的数据,导致共享数据的错误。就相当于生活当中:你上厕所,你上到一半还没有上完,另外一个人,就来占用你这个茅坑上厕所。解决办法对于多线程操作共享数据时,只能有一个线程操作,其他线程不可以操作共享数据的内容,只有当一个线程对共享数据操作完了,其他线程才可以操作共享数据。原创 2023-01-12 15:30:01 · 779 阅读 · 0 评论 -
Java多线程:多线程 Thread 类 中常用的方法的使用
start( ): 方法的作用是启动一个新线程,新线程会执行相应的run()方法。并且对于同一个对象的线程,不可以调用 start()方法两次不然会报异常 () 非法线程异常,仅仅只能调用一次start()方法。Thread 类中的 start()/**try {start0();try {if(!started) {/*** Thread 类中常用的一些方法的介绍和使用// 同一个线程对象,调用一次 start();// main 主线程 for(int i = 0;原创 2023-01-12 15:15:08 · 491 阅读 · 0 评论 -
Java多线程:创建多线程的“四种“ 方式
一个进程占用一个方法区(类的加载,静态方法/变量,常量,静态代码块) 和 一个堆区(类对象)。一个进程包含多个进程,一个进程至少一个线程。进程与进程之间是相互独立的。一个线程占用一个栈和一个程序计数器PC,同一个进程中的方法区和堆区中的数据是所有线程共享的。线程与线程之间相互独立,各自执行各自的(压栈弹栈),互不影响。比如:main线程停止了,分支线程并不会停止而是继续执行。并行:多个线程处理同时处理多个任务,并发:多个线程同时处理一个任务:火车抢票,电商秒杀。原创 2023-01-12 15:05:22 · 410 阅读 · 0 评论 -
十分钟掌握 “UML ” 的基本使用
UML 类图的关系线条重点:理解并使用 UML 的类图就可以了,基本现阶段我们Java程序员主要学习的还是 UML的类图。关于UML 类图中,表示类中的属性和方法的绘制泛化(继承关系),实现关系,关联关系,聚合关系,组合关系,依赖关系泛化关系:类与类之间的单继承关系,接口 与 接口之间的多继承关系实现关系:实现类与接口之间的关系。关联关系:单向关联,双向关联,自关联。聚合关系:整体与局部可以分开:学校与老师之间的关系。组合关系:整体与局部不可以分开:头 与 嘴的关系。原创 2022-12-29 14:28:29 · 643 阅读 · 0 评论 -
java: “abstract 抽象类” 与 “ interface 接口” 的妙用之道
abstract可以用来修饰类,方法抽象类不可以 实例化 new 对象,但必须要有构造器(构造方法) 用于继承中的子类的实例化全过程调用父类中的构造器。abstract 不能修饰 属性,代码块,构造器,因为无法重写abstract 不能修饰: private 修饰的方法,final修饰的方法,final 修饰的类,静态方法,都是无法重写的。抽象类中的抽象方法必须被所extends继承的类全部重写,不然编译无法通过。接口中的抽象方法必须被implements实现类全部重写,不然编译无法通过。原创 2022-12-28 08:14:21 · 784 阅读 · 0 评论 -
Java: static,final,代码块 的详解
static 修饰属性,方法,代码块,内部类的不同的作用,static 静态的随着类一起加载到内存(方法区)当中(仅仅加载一次,所有对象共有),早于 new 对象的加载创建,因为 new 对象,要先加载类,再调用类中的构造方法创建对应的对象。static 静态的属性,方法,代码块 都无法直接的访问非静态的方法/属性,需要通过 创建实例对象(new)的方式访问被 static 修饰的方法,无法被重写,就算编写成了重写的方式了,但是调用的时候,执行的不是子类重写的方法,而是父类中没有被重写的方法。原创 2022-12-23 18:46:09 · 500 阅读 · 0 评论 -
“==” 操作符 与 equals 方法的区别,toString
=是操作符可以直接使用,如果是基本数据类型比较的是内容值,如果是引用类型,比较的的地址是否相等,特殊的 String 存在字符串常量池,比较的是内容值equals()方法, 默认 Object 类中的比较的是地址是否相等,所以一般是需要重写的。注意 == 与 equals() 方法的区别toString() 方法的使用,重写!!原创 2022-12-19 08:18:29 · 379 阅读 · 0 评论 -
多态性:中的向下转型,instanceof 操作符的使用
向上转换,称为多态多态中:想要调用子类中特有的属性/方法,可以强制向下转型为对应的子类。类异常可以预先使用instanceof类异常!!原创 2022-12-19 08:10:54 · 315 阅读 · 0 评论 -
Java:进一步理解多态性
多态是运行时类型,编译看左边, 运行看右边抽象类,接口(无法 new 实例对象) 的使用充分体现了多态性, 调用实现的子类中的方法.多态中,父类/子类中都含有的同名的变量名,无论是编译,还是运行的结果都是看左边的编译赋值的是子类/父类 类型就调用谁中的变量值.因为变量是无法重写的。重写中返回类型要必须=父类中被重写的声明的权限特殊的(public,private)。方法才可以重写,变量无法重写。原创 2022-12-19 08:06:37 · 347 阅读 · 0 评论 -
Java : 详解八种基本数据类型的包装类
八种基本数据类型对应的包装类,int --> Integer , char --> Character在Java当中字符串 String 和 数字直接进行类型转换的话,可能会遇到异常对应包装类,所传的参数不要是 null ,不然报 null异常对应特殊的 Boolean 包装类,具有校验的功能,如果所赋的值/传形参 不是 true/false,这两者一律返回 false 包括 nulljdk5 以后 支持 自动拆箱,自动装箱。原创 2022-12-19 08:02:19 · 1384 阅读 · 1 评论 -
解读 UML类图
解读 UML 类图原创 2022-10-26 15:01:06 · 286 阅读 · 0 评论 -
连接Mysql数据库的报错: java.sql.SQLException: Unknown initial character set index ‘255’ received from server
连接Mysql数据库的报错: java.sql.SQLException: Unknown initial character set index ‘255’ received from server. Initial client character set can be forced via the ‘characterEncoding’ property.原因及其解决方案原创 2022-10-19 20:53:59 · 3195 阅读 · 0 评论 -
Java —— 异常
Java中提供了各种个样的异常类,但是系统提供的异常类有时不能完全满足开发者的需求,所以可以自定义异常类型。虽然是自定义的异常类型,但也必须继承异常的父类Exception类或其子类,继承需要调用其父类的构造方法自定义的异常,未处理的话也是会终止程序的//自定义异常类classMyExceptionextendsRuntimeException{super();//调用父类的无参构造方法}publicMyException(Stringmessage){注意事项或者。......原创 2022-07-26 09:00:26 · 151 阅读 · 0 评论 -
java —— 三道简单有趣的面试题
java 三道有趣的面试题原创 2022-07-26 09:16:12 · 258 阅读 · 0 评论 -
Java —— 初始泛型
泛型是为了解决某些容器,算法等代码的通用性而引入,并且能在编译间做类型检查泛型利用的是Object是所有类的祖先类,并且父类的引用可以指向子类对象的特定而工作泛型是一种编译期间的机制,即在运行期间是一个类型泛型是Java中的一种合法语法标志就是尖括号httpshttps。......原创 2022-07-26 09:10:27 · 820 阅读 · 0 评论 -
Java —— 初识包装类
java 初始包装类上的认识原创 2022-07-26 09:07:34 · 156 阅读 · 0 评论