Java 开发学习
文章平均质量分 92
久 一
这个作者很懒,什么都没留下…
展开
-
Java 基础学习(二十)Maven、XML与WebServer
1.1.1 Maven概述Maven是一种流行的构建工具,用于管理Java项目的构建,依赖管理和项目信息管理。它使用XML文件来定义项目结构和构建步骤,并使用插件来执行各种构建任务。Maven可以自动下载项目依赖项并管理它们的版本,从而使开发人员能够更轻松地创建和维护Java应用程序。依赖管理:Maven可以自动下载和管理项目依赖项,从而简化了构建和部署过程插件系统:Maven提供了一个强大的插件系统,使开发人员可以轻松地扩展和自定义构建过程。原创 2024-03-23 01:12:46 · 763 阅读 · 0 评论 -
Java 基础学习(十九)网络编程、反射
1.1.1 Socket简介在网络编程中,Socket(套接字)是一种抽象概念,它用于在不同计算机之间进行通信。Socket可以看作是一种通信的端点,可以通过Socket与其他计算机上的程序进行数据传输。1.1.2 Java中的套接字编程在Java中,Socket是一个类,可以用于创建客户端和服务器端的网络连接,并进行数据传输。在Java网络编程中,Socket类与IO类常常结合使用。通过Socket类建立网络连接后,可以使用它提供的输入输出流对象来进行数据的读取和写入。原创 2023-12-27 00:47:16 · 953 阅读 · 0 评论 -
Java 基础学习(十八)多线程进阶、网络编程基础
1.1.1 什么是并发工具包Java并发工具包是指java.util.concurrent(简称JUC),在Java 5 版本中添加。JUC中包含了大量在并发应用开发中非常实用的工具类。行业中说的JUC一般包含java.util.concurrent包、java.util.concurrent.atomic包及java.util.concurrent.locks包中的内容。1.1.2 并发工具包的构成。原创 2023-12-27 00:29:48 · 845 阅读 · 0 评论 -
Java 基础学习(十七)多线程高级
3.1.1 狭义的线程同步广义的线程同步被定义为一种机制,用于确保两个或多个并发的线程不会同时进入临界区。从该定义来看,线程同步和线程互斥是相同的。狭义的线程同步在线程互斥的基础上增加了对多个线程执行顺序的要求,即两个或多个并发的线程应按照特定的顺序进入临界区。可以简单地总结为,狭义的线程同步是一种强调执行顺序的线程互斥,也称为多线程协作。原创 2023-12-25 21:22:34 · 908 阅读 · 0 评论 -
Java 基础学习(十六)多线程基础、线程并发安全
2.1.1 什么是线程的状态线程是一个动态执行的过程,它也有一个从产生到结束的过程。线程从创建到执行完毕的整个过程称为线程的生命周期。一个线程对象在其整个生命周期中可能处于5种状态:1、新建状态(New):一个线程对象被创建出来时,该线程对象处于新建状态。2、就绪状态(Runnable):当调用了一个线程对象的start()方法后,该线程对象处于就绪状态。3、运行状态(Running):当CPU执行一个线程对象的run方法时,该线程对象处于运行状态。原创 2023-12-24 07:00:10 · 911 阅读 · 0 评论 -
Java 基础学习(十五)集合排序、Lambda和Stream
上述代码中,使用count()方法统计流中元素的个数,使用max()和min()方法求出流中的最大值和最小值,使用sum()方法求出流中元素的总和,使用average()方法求出流中元素的平均值。上述API定义在集合类和Collectors类上,可以让我们对流进行过滤、映射、排序、去重、统计、归约等常见的操作,并且提供了并行处理的支持,可以充分利用多核处理器的性能,提高程序的执行效率。需要注意的是,在使用Stream API时,应该避免在操作中修改流中的元素,以免出现意外的结果。原创 2023-12-20 23:58:58 · 966 阅读 · 0 评论 -
Java 基础学习(十四)Map集合与Set集合
3、如果两个对象被equals()方法判断为不相等,不强制要求它们的hashCode()方法返回不同的哈希码,但是开发者应该了解,返回不同的哈希码有利于提高哈希表的性能。Map接口是一种双列集合。此处需要注意,HashMap并不会直接使用开发者指定的长度作为内部数组的长度,而是会通过一个内部方法,计算大于开发者指定长度的最小的2的幂作为内部数组的长度。4、链地址法:将Hash表的每个单元作为链表的头节点,所有Hash地址为i的元素构成一个同义词链表,即发生冲突时就把该元素链接在该单元为头节点的链表的尾部。原创 2023-12-19 23:31:33 · 978 阅读 · 0 评论 -
Java 基础学习(十三)集合框架、List集合
增强for循环会按照从头到尾的顺序逐个访问集合或数组中的元素,变量e的值与集合或数组中当前访问的元素的值相同。例如,使用增强for循环访问一个包含了“a”,“b”“c”三个元素的集合,第一次循环时,e的值为“a”,第二次循环时,e的值为“b”,以此类推。但是LinkedList集合不支持随机取值,每次都只能从一端或双向链表中的某节点开始遍历,直到找到查询的对象再返回,由于无法保存上一次的查询位置,因此实现查询操作的效率低下。此时,ArrayList会使用传入的值作为新建的内部数组的长度,源码入下图所示。原创 2023-12-19 23:13:18 · 911 阅读 · 0 评论 -
Java 基础学习(十二)文本I/O、日期与时间API
1、数据预处理:提取weather_data_ny_201906.csv文件中的"STATION","DATE","MAX"三列的值,写入新的文件data1.csv,新文件中需要表头行,的数据继续使用英文逗号分隔,但是数据前后不再包含双引号。参数pattern是一个字符串,代表日期时间的自定义格式,常用的格式为“yyyy-MM-dd HH:mm:ss”,其中,yyyy表示年份,MM表示月份,dd表示日期,HH表示小时,mm表示分钟,ss表示秒。字符流的底层仍然是基本的字节流,它封装了字符的编码解码算法。原创 2023-12-17 01:23:57 · 1153 阅读 · 0 评论 -
Java 基础学习(十一)File类与I/O操作
1.1.1 什么是File类File是java.io包下作为文件和目录的类。File类定义了一些与平台无关的方法来操作文件,通过调用File类中的方法可以得到文件和目录的描述信息,包括名称、所在路径、读写性和长度等,还可以对文件和目录进行新建、删除及重命名等操作。对于目录,Java把File类当作一种特殊类型的文件,即文件名单列表。但是File类不能读取文件内容,操作文件内容需要使用输入流和输出流。1.1.2 构建 File 对象通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。原创 2023-12-17 01:11:18 · 1358 阅读 · 0 评论 -
Java 基础学习(十)包装类、异常
1.1.1 什么是包装类在进行类型转换时,有一种特殊的转换:将 int 这样的基本数据类型转换为对象,如下图所示:所有基本类型都有一个与之对应的类,即包装类(wrapper)。因此,包装类即基本数据类型对应的类。基本数据类型不能直接参与引用类型的使用或计算,使用包装类将基本数据类型转换为引用数据类型,可以参与到其他引用类型的使用。包装类如下表所示:包装类中也提供了一些与类型相关的常用方法,可以简化开发者对基本数据类型的操作。1.1.2 【案例】包装类的赋值示例。原创 2023-12-14 23:54:34 · 892 阅读 · 0 评论 -
Java 基础学习(九)API概述、Object、String、正则表达式
1.1.1 什么是APIAPI(Application Programming Interface),意为:应用程序接口。API就是已经写好的的程序或功能,程序要需要时可以直接调用,无需再次编写。编程语言API:编程语言中内置的API方法库或框架API:第三方方法库或框架提供的API操作系统API:由操作系统提供的应用程序和操作系统之间的接口远程API:远程 API 允许开发人员通过协议操作远程资源,特定的通信标准允许不同的技术协同工作。原创 2023-12-14 23:40:34 · 1092 阅读 · 0 评论 -
Java 基础学习(八)多态、接口、造型与内部类
2.1.1 多继承问题讨论接口之前,先看一个物品归类的生活实例:查看这个商品分类,可看出:1、相同类别的商品具有相似特征,且属性类似:比如“新鲜水果“类、”海鲜水产“类2、同类标签便于管理统一存储和调度3、也存在跨类别的分类标签:比如“地方特产“、”国际美食“4、跨类别的分类标签体现了一个物品属于多种类型的现象,这种现象称为“多继承”如果用 Java 代码来表现上述情况,会发现,Java的继承可以实现树形分类,但是无法处理跨类别标签:不过,Java提供了接口,解决了跨类型的继承问题。原创 2023-12-13 21:49:17 · 965 阅读 · 0 评论 -
Java 基础学习(七)final、static、抽象
什么是抽象类使用抽象关键字abstract声明的类是抽象类,抽象类不能直接实例化创建对象。这个定义看上去非常茫然,究其原因是因为在面向对象设计时候,会利用“泛化”将子类的共同属性和方法抽取出来设计出父类,此时的父类往往是半成品类,只包含部分属性和方法,甚至属性值都没有合理初始化,如下图所示:如果直接创建对象并且使用有可能造成各种不理想结果,甚至是异常故障。可以用抽象父类来解决这个问题。3.1.2 抽象类示例。原创 2023-12-10 00:33:40 · 1209 阅读 · 1 评论 -
Java 基础学习(六)对象数组、继承与访问控制
而通过继承,我们可以将这些共同的属性和方法定义在父类中,子类通过继承获得了父类的属性和方法,无需重复编写,可以减少代码的冗余。使用package即可以解决命名冲突问题,只要保证在同一个包中的类名不重复即可,而不同的包中可以定义相同的类名,例如:test1.Point和test2.Point是两个截然不同的名称,虽然类名相同,但包名不同,亦表示两个完全不同的类。泛化的好处在于代码的重用和简化。同时,当需要修改或扩展共享的属性和方法时,只需要在父类中进行修改,所有的子类都会继承这些变更,减少了维护的工作量。原创 2023-12-10 00:22:07 · 841 阅读 · 0 评论 -
Java 基础学习(五)面向对象编程-对象和类
1.1.1面向对象简史面向对象编程思想最初的起源可以追溯到1960年的Simula语言,这被认为是第一个支持面向对象编程概念的语言。Simula引入了类、对象、继承等概念,将数据和操作进行封装。Simula的创始人奥利-约翰·达尔(Ole-Johan Dahl)和克利斯登·奈加特(Kristen Nygaard)于2001年获得了图灵奖,以表彰他们对面向对象编程概念的开创性贡献。面向对象编程具有封装、继承和多态等核心特点。封装将数据和操作封装在类中,通过类的实例化创建对象。原创 2023-12-04 23:44:36 · 1167 阅读 · 0 评论 -
Java 基础学习(四)操作数组、软件开发管理
它的基本思想是从数组的第一个元素开始,依次比较相邻的两个元素的大小,如果前一个元素大于后一个元素,则交换它们的位置,直到整个数组排序完成。2、需求分析:需求分析是相关人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。适用于单个团队的产品管理过程。在产品交付并且投入使用之后,为了解决在使用过程中不断发现的各种问题,保证系统正常运行,同时使系统功能随着用户需求的更新而不断升级,软件维护的工作是非常必要的。原创 2023-11-28 23:44:09 · 1276 阅读 · 0 评论 -
Java 基础学习(三)循环流程控制与数组
在Java中,数组的长度是指数组中元素的数量。数组的长度是在创建数组时确定的,并且在整个程序执行期间保持不变。要获取数组的长度,可以使用数组对象的 length 属性。原创 2023-11-28 23:16:49 · 1045 阅读 · 0 评论 -
Java 基础学习(二)运算符与分支流程控制
1.1.1 运算符概述运算符是一种告诉计算机执行特定的数学或逻辑等操作的符号。Java运算符号包括:数学运算符、关系运算符、逻辑运算符、赋值运算符号、字符串连接运算符。计算机本质上只能处理数字,处理数字的最常见的方式就是使用运算符,如:a+b。Java从C语言继承的丰富的运算符:1.1.2 运算符要点单目(元)运算符:比如 a++双目(元)运算符:比如 a+b三目(元)运算符:比如 running?a : b不同的运算符具有不同的优先级,多个运算符组成复杂运算时,优先级高的运算符先行计算。原创 2023-11-28 00:12:54 · 878 阅读 · 0 评论 -
Java 基础学习(一)Java环境搭建和基本数据类型
例如,一个byte类型的变量代表的值占用1个字节的内存空间(8位),能够表示的10进制整数数据范围是负128到正127,包含0。JDK(Java Development Kit)是用于Java应用程序开发的软件包,包括JRE(Java Runtime Environment)和开发工具,而JRE是运行Java程序所需的运行时环境,JVM(Java Virtual Machine)是在JRE中执行Java字节码的虚拟机。变量本质上代表了内存中的一个存储的区域,这个区域里的数据在同一数据类型中可以不断的变化。原创 2023-11-27 00:05:03 · 1003 阅读 · 0 评论