大学生涯
未读一. Stream流的基础概念1. 什么是Stream流?Stream是元素的序列,支持对数据源(集合、数组、I/O等)进行聚合操作。其核心特点包括:• 不存储数据:仅通过管道传递数据,原始数据不受影响。• 惰性求值:中间操作延迟执行,只有终端操作触发时才计算。• 并行处理:通过parallelStream()轻松实现多线程处理。 2. 与传统集合操作的对比• 代码简洁性:用filter、map等链式调用替代冗长的循环和临时变量。• 性能优化:并行流自动拆分任务,充分利用多核CPU。 二. stream体验版demo1234567891011121314151617181920212223242526272829303132333435363738394041package com.nianxi.streamDemo;import java.util.ArrayList;/** * @author Jie. * @description: TODO * @date 2025/3/17 * @version: 1.0 */public class StreamDemo1 ...
大学生涯
未读一. 不可变数组注意: 以下不可变集合工厂方法都是在java 9引入的,在之前只能通过Collections下的unmodifiableXxx()通过包装可变集合为不可变视图,但本质上仍是可变集合的代理,并非独立的不可变实现,以及一些第三方库才能获得不可变集合 Map.of() / Map.ofEntries():创建不可变 Map。 List.of():创建不可变 List。 Set.of():创建不可变 Set。 尝试添加、删除或修改元素会抛出 UnsupportedOperationException。 二. java中9之前跟9之后的关键区别 特性 Java 9 不可变集合 Java 8 及更早的 Collections.unmodifiableXxx() 实现类型 独立的不可变类(如 ImmutableMap) 可变集合的包装视图(非独立类) 内存占用 更紧凑(针对小集合优化) 与原可变集合相同 性能 更快的遍历和查询操作 与原集合性能一致 线程安全性 完全线程安全 需依赖原集合的线程安全策略 三. 示例demo1. List.of() ...
课外开发
未读前端部分1. 熟悉前端 vue 工程开发工具,以及搭建开发环境在这一部分,我搭建了 Vue 的开发环境,并熟悉了 Vue 开发工具的使用,能够有效地开发和调试 Vue 应用。以下是搭建环境的简单示意图: 2. 熟悉前端基础通过本阶段的学习,我熟悉了前端的基础组件使用,掌握了 Vue 组件化开发,并学习了如何使用一些常见的 UI 库来加速开发。此外,我还独立完成了一个网络请求的封装,能够处理常见的 HTTP 请求和响应。以下是对 Vue 前端基础的总结: 熟悉基础组件的使用,如按钮、输入框、选择器等。 能够使用饿了么 UI 组件库来快速搭建页面,提升开发效率。 能够独立完成一个网络请求的封装,处理数据交互。 网络请求封装示例: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import axios from "axios";// 配置axios全局默认设置axios.defaults.timeout = 10000; // 请求超时设置 ...
课外开发
未读后端部分1. 熟悉后台开发工具,搭建开发环境 idea mysql 2. 学习网络基础知识,了解网络请求整个过程 引用https://blog.csdn.net/qq_40959677/article/details/94873075 所以其流程大致如下: DNS 解析域名得到 IP 地址 客户端与服务器建立连接(TCP 三次握手) 客户端发起请求 服务器接收到请求根据端口号.路径等找到对应资源文件,响应源代码给客户端 客户端拿到请求到的数据(html 页面的源代码),开始解析页面以及请求资源 客户端渲染页面 web 服务器断开连接(四次挥手) a. url 的组成URI:统一资源标识符 URL:统一资源定位符 URN:统一资源名称 url 由请求协议(如 http、https、ftp、tcp 等协议)+域名+端口号+虚拟目录部分+文件名+问号传参+哈希定位 b. DNS 解析过程1、在浏览器中输入 www . qq .com 域名,操作系统会先检查自己本地的 hosts 文件是否有这个网址映射关系,如果有,就先调用这个 IP 地址映射,完成域名解析。2、如果 hosts ...
大学生涯
未读形参&实参方法的定义可能会用到 参数(有参的方法),参数在程序语言中分为: 实参(实际参数,Arguments):用于传递给函数/方法的参数,必须有确定的值。 形参(形式参数,Parameters):用于定义函数/方法,接收实参,不需要有确定的值。 1234567String hello = "Hello!";// hello 为实参sayHello(hello);// str 为形参void sayHello(String str) { System.out.println(str);} 值传递&引用传递程序设计语言将实参传递给方法(或函数)的方式分为两种: 值传递:方法接收的是实参值的拷贝,会创建副本。 引用传递:方法接收的直接是实参所引用的对象在堆中的地址,不会创建副本,对形参的修改将影响到实参。 很多程序设计语言(比如 C++、 Pascal )提供了两种参数传递的方式,不过,在 Java 中只有值传递。 为什么 Java 只有值传递?为什么说 Java 只有值传递呢? 不需要太多废话, ...
大学生涯
未读异常Java 异常类层次结构图概览: Exception 和 Error 有什么区别?在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable 类有两个重要的子类: Exception :程序本身可以处理的异常,可以通过 catch 来进行捕获。Exception 又可以分为 Checked Exception (受检查异常,必须处理) 和 Unchecked Exception (不受检查异常,可以不处理)。 Error:Error 属于程序无法处理的错误 ,我们没办法通过 catch 来进行捕获不建议通过catch捕获 。例如 Java 虚拟机运行错误(Virtual MachineError)、虚拟机内存不够错误(OutOfMemoryError)、类定义错误(NoClassDefFoundError)等 。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止。 Checked Exception 和 Unchecked Exception 有什么区别?Checked Exception 即 受检查异常 ...
大学生涯
未读泛型什么是泛型?有什么作用?Java 泛型(Generics) 是 JDK 5 中引入的一个新特性。使用泛型参数,可以增强代码的可读性以及稳定性。 编译器可以对泛型参数进行检测,并且通过泛型参数可以指定传入的对象类型。比如 ArrayList<Person> persons = new ArrayList<Person>() 这行代码就指明了该 ArrayList 对象只能传入 Person 对象,如果传入其他类型的对象就会报错。 1ArrayList<E> extends AbstractList<E> 并且,原生 List 返回类型是 Object ,需要手动转换类型才能使用,使用泛型后编译器自动转换。 泛型的使用方式有哪几种?泛型一般有三种使用方式:泛型类、泛型接口、泛型方法。 1.泛型类: 1234567891011121314//此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型//在实例化泛型类时,必须指定T的具体类型public class Generic<T>{ pr ...
大学生涯
未读ObjectObject 类的常见方法有哪些?Object 类是一个特殊的类,是所有类的父类,主要提供了以下 11 个方法: 1234567891011121314151617181920212223242526272829303132333435363738394041424344/** * native 方法,用于返回当前运行时对象的 Class 对象,使用了 final 关键字修饰,故不允许子类重写。 */public final native Class<?> getClass()/** * native 方法,用于返回对象的哈希码,主要使用在哈希表中,比如 JDK 中的HashMap。 */public native int hashCode()/** * 用于比较 2 个对象的内存地址是否相等,String 类对该方法进行了重写以用于比较字符串的值是否相等。 */public boolean equals(Object obj)/** * native 方法,用于创建并返回当前对象的一份拷贝。 */protected native Object clone() ...
大学生涯
未读StringString、StringBuffer、StringBuilder 的区别?可变性 String 是不可变的(后面会详细分析原因)。 StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存字符串,不过没有使用 final 和 private 关键字修饰,最关键的是这个 AbstractStringBuilder 类还提供了很多修改字符串的方法比如 append 方法。 12345678910111213abstract class AbstractStringBuilder implements Appendable, CharSequence { char[] value; public AbstractStringBuilder append(String str) { if (str == null) return appendNull(); int len ...