- 博客(89)
- 资源 (10)
- 收藏
- 关注
原创 4.面向对象1(上)
语法[修饰符] 返回值类型 方法名(形参列表){方法体代码(需要执行的功能代码)return 返回值;注意事项方法的修饰符主要用来控制方法的访问权限;权限修饰符可以是private、public、protected、default中的任意一个,也可以不写方法的返回值类型有返回值可以是java语言中任何一种数据类型。包括基本数据类型、引用数据类型例如:byte short int long float double boolean char String…
2025-05-28 08:33:16
969
原创 4.面向对象2(中)
super代表的是当前对象中的父类型特征this与super都不能使用在静态方法中:this代表当前对象因此不能出现在静态方法中;super代表当前对象的父类型特征,因此也不能出现在静态方法中在Java语言中只要new对象,Object的无参数构造方法一定会执行。因为不管子类中的构造方法中如何使用this或者super调用,最后被调用的那个构造方法中都不会有this或者super,因此最后被调用的构造方法一定会调用父类的无参构造方法this本质上是一个引用,可以单独输出。
2025-05-27 08:54:16
1047
原创 4.面向对象3(下)
包本质来说就是文件夹,用来管理类文件的使用包有利于程序的管理和维护在Java中包名设计应与文件系统结构相对应如一个包名为"com.mingrisoft",那么"com.mingrisoft"包中的类就会被保存至com文件夹下的mingrisoft子文件夹下没有定义包的类会被归纳在预设包(默认包)中在实际开发中应该为所有类设置包名,这是良好的编程习惯创建包的语法格式: package 包名1.包名2.包名3…包名n.技术名称。
2025-05-27 08:28:58
663
原创 5.数据结构
树型结构是一类重要的非线性数据结构其中以树和二叉树最为常用直观看来树是以分支关系定义的层次结构把它叫做"树"是因为它常看起来像一棵倒挂的树,也就是说它常是根朝上,而叶朝下的为了避免出现排序二叉树一边倒的存储科学家提出了"平衡二叉树"在平衡二叉树中任何结点的两个子树的高度最大差别为1,所以它也被称为高度平衡树红黑树是一种自平衡的二叉查找树红黑树的每一个节点上都有存储位表示节点的颜色每一个节点可以是红或者黑;红黑树不是高度平衡的,它的平衡是通过"红黑规则"进行实现的。
2025-05-27 08:20:47
1727
原创 6.JAVA数组
数组分为一维数组、二维数组、多维数组、不规则数组数组是相同数据类型的一组数据数组是一种用于存储多个相同数据类型元素的容器,不仅可以存放基本数据类型的数据,也可以存放引用类型的数据例如一个存储整数的数组:int[] nums = {100, 200, 300};例如一个存储字符串的数组:String[] names = {“jack”,“lucy”,“lisi”};数组是一种引用数据类型,隐式继承Object,因此数组也可以调用Object类中的方法数组对象存储在堆中根据维数进行分类一维数组二维数组多维数组不
2025-05-26 09:02:09
916
原创 7.常用类(上)
equals() 的作用是用来判断两个对象是否相等通过判断两个对象的引用地址是否相等(即是否是同一个对象)来区分它们是否相等既然Object.java中定义了equals()方法,这就意味着所有的Java类都实现了equals()方法,所有的类都可以通过equals()去比较两个对象是否相等通常理解的相等:即两个对象其内容是否相等而程序上来看这里的作用是判断两个对象是否是同一个对象(即比较其内存地址)Java语言对equals()的要求如下对称性。
2025-05-26 08:35:52
820
原创 7.常用类(下)
Java是一种面向对象的编程语言,但是Java中的基本数据类型却是不面向对象的为了能把基本数据类型当作对象处理Java提出了包装类的概念包装类分别把Java中8个基本数据类型包装成相应的类,这样就可以通过对象调用各自包装类中许多实用的方法Java中8个基本数据类型各自对应的包装类如表所示在这八个类名中,除了Integer和Character类以外,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写即可【示例】7.3.2、自动拆装箱Byte、Short、Integer、Long、Float、Do
2025-05-26 08:12:38
611
原创 8.异常体系
Java中的异常是指程序运行时出现了错误或异常情况导致程序无法继续正常执行的现象比如:数组下标越界、空指针等语法错误不算在异常体系中异常一旦出现如果没有提前处理程序就会退出JVM虚拟机而终止异常在Java中以类和对象的形式存在8.1.3、异常抛出过程默认会在出现异常的代码那里创建一个异常对象异常会从方法出现的点这里抛给调用者,如果上一级调用者不想处理该异常,那么可以继续向上抛出,如果最终没有程序处理异常,则会抛给main方法。如果main方法也不知道如何处理,也可以使用throws将异常抛给虚拟机
2025-05-25 22:46:07
1046
原创 9.常用算法
用T(n)来表示算法中基本操作(例如比较、赋值、运算等)的重复执行次数n是程序需要处理的数据量(专业术语叫做问题规模n)若有某个趋势函数f(n)【f(n)代表了时间复杂度的趋势】,使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数记作T(n)=O(f(n)),我们称O(f(n))为时间复杂度也把它叫做大O表示法。
2025-05-25 22:26:00
821
原创 10.集合1(集合简介)
从接口的定义可以看到接口定义使用了泛型,在操作时必须指定具体的操作类型这样可以保证类集操作的安全性,避免发生ClassCastException其中有5个default修饰的方法(default 是 java 8新引入的关键字,是指在接口内部包含了一些默认的方法实现,也就是接口中可以包含方法体,这打破了Java之前版本对接口的语法限制,从而使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码)
2025-05-25 22:02:46
600
原创 10.集合2(List集合体系)
List集合包括List接口以及List接口的所有实现类用户可以根据元素的整数索引访问元素并搜索列表中的元素List家族特点是有序可重复有序:每个元素有下标,从0开始,以1递增可重复:可以存储重复的元素List接口下常见的实现类有ArrayList:数组Vector、Stack:数组(线程安全的)LinkedList:双向链表List接口特有方法:(在Collection和SequencedCollection中没有的方法,只适合List家族使用的方法,这些方法都和下标有关系) ① void add(i
2025-05-25 21:59:30
653
原创 10.集合3(Set-Map集合体系)
Set接口继承Collection,没有任何新增任何方法Set集合由Set接口和Set接口的实现类组成Set接口没有重写Collection接口的方法,其方法和Collection接口中的一样由于Set集合中的元素不能重复,因此在向Set集合中添加元素时,需要先判断新增元素是否已经存在于集合中,再确定是否执行添加操作因此往set集合中添加的元素要同时重写"hashCode+equals"方法根据源码可以看到向Set集合中add时底层会向Map中putvalue只是一个固定不变的常量,只是起到一个占位符的作用
2025-05-25 21:51:11
617
原创 10.集合4(集合迭代与工具类)
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象迭代器通常被称为"轻量级"对象,因为创建它的代价小使用方法iterator()要求容器返回一个Iterator使用next()获得序列中的下一个元素 第一次调用Iterator的next()方法时,它返回序列的第一个元素使用hasNext()检查序列中是否还有元素使用remove()将迭代器新返回的元素删除。
2025-05-21 15:48:39
753
原创 11.多线程1(简介-创建-源码-常用方法)
线程是进程执行过程中的一个执行流程所谓多线程是指在进程执行过程中可以产生多个线程,这些线程可以同时存在、同时运行线程是cpu调度的最小单位同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈多线程在Windows操作系统中的运行模式如图所示 下图是 Java 内存区域,通过下图从JVM的角度说明线程与进程之间的关系一个进程可以有多个线程多个线程共享进程的堆和方法区(JDK 1.8 之后的元空间,JDK1.8之前的永久代)资源。
2025-05-21 14:48:30
878
原创 11.多线程2(通信-LockSupports-生命周期)
LockSupport 是 java.util.concurrent.locks 包下的一个类,是用来创建锁和其他同步类的基本线程阻塞工具类,它里面的方法都是静态方法前面介绍了等待/唤醒机制 wait/notify,那么这个 LockSupport 可以说是它的改良版LockSupport 主要就是用 park(等待)和 unpark(唤醒)方法来实现等待唤醒park 方法是将当前 Thread 阻塞1 秒等于 1000 毫秒,等于 100 万微秒,等于 10 亿纳秒。
2025-05-21 12:46:22
714
原创 11.多线程3(线程池)
诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现的情况是单个任务处理的时间很短而请求的数目却是巨大的构建服务器应用程序的一个简单模型是:每当一个请求到达就创建一个新线程,然后在新线程中为请求服务。实际上对于原型开发这种方法工作得很好,但如果试图部署以这种方式
2025-05-21 12:32:49
919
原创 11.多线程4(线程安全)
线程安全问题指的是多个线程同时操作同一个共享资源导致出现不正确的结果或者抛出异常的问题,这种问题通常发生在并发编程中,因为多个线程在执行过程中它们的执行顺序和执行时间是不确定的,如果不加以控制就有可能数据安全问题底层核心原因主要有三个原子性多线程并发编程的原子性是指一组指令被执行时,不受其他指令的干扰,比如我们说 CAS (Compare & Set)是原子的,java.util.concurrent.atomic 下的原子操作类等,这里的原子性其实指的是隔离性,也就是一组操作不能被别的线程干扰有序性可见性
2025-05-21 10:52:39
996
原创 11.多线程5(并发编程安全类)
单例设计模式是 GoF23 种设计模式中的一种,也是最常用的一种设计模式一个类只能够产生一个实例对象,这就是单例设计模式单例设计模式提供了一种在多线程情况下保证只创建唯一一个实例对象的解决方案很饥渴, 类一加载就初始化创建了对象不会存在线程安全问题, 多线程环境 100%不会出现创建两个对象的问题类一加载就初始化创建了单例对象也有弊端, 如果创建了对象但是很久都不需要使用, 那就会浪费内存空间, 如果对象属性很少, 对象很小那还可以, 如果对象很大, 那不建议使用该方式测试代码可以实现懒加载, 在需要的
2025-05-21 10:28:21
580
原创 12.Lambda表达式
主要内容Lambda表达式的概述Lambda表达式的使用Lambda表达式的方法引用Lambda表达式的在集合中的使用Lambda表达式是JDK1.8的一个新特性,可以取代大部分的匿名内部类以便写出更优雅的Java代码,尤其在集合的遍历和其他集合操作中可以极大地优化代码结构想要实现对List集合的排序操作就需要使用匿名内部类来实现这样的代码非常的复杂和繁琐【示例】使用Lambda表达式的代码非常优雅并且还非常的简洁【示例1】【示例2】Java从诞生之日起就一直倡导"一切皆对象",在Java语言中面向对
2025-05-21 10:09:10
836
原创 13.Stream流
从JDK1.8开始Java语言引入了一个全新的流式Stream APIStream流其实是一个集合元素的函数模型。它不是集合、也不是数据结构,其本身并不会存储任何元素(或地址值)Stream流的目的是简化数组和集合操作的APIStream流属于管道流,只能被使用一次,当一个Stream流使用过后,就不能再调用方法了简而言之Stream API提供了一种高效且易于使用的处理数据的方式。
2025-05-21 10:03:01
720
原创 14.IO流(上)
数据的存储方式存储在内存中不能很长久保存存储在硬盘中硬盘中数据的形式就是文件,文件是数据的载体 因此如果想通过硬盘保存数据需要分两步定位文件File类可以定位文件、删除文件、获取文件信息等,但是不能读写文件内容使用流操作文件IO流技术可以对硬盘中的文件进行读写File类在java.io.File下,是路径的抽象表示形式(文件、文件夹)File类提供了诸如:定位文件、获取文件信息、创建文件、删除文件(文件夹)等功能File类定义的源码如下public class File implements Serial
2025-05-21 06:22:29
664
原创 14.IO流(下)
缓冲流也称为高级流其作用是自带缓冲区,可以提高原始字节流、字符流读写数据的性能缓冲流体系缓冲流的特有方法(输入流):以下两个方法的作用是允许我们在读取数据流时回退到原来的位置(重复读取数据时用)void mark(int readAheadLimit)标记位置(在Java21版本中,参数无意义低版本JDK中参数表示在标记处最多可以读取的字符数量,如果你读取的字符数超出的上限值,则调用reset()方法时出现IOExceptionvoid reset()重新回到上一次标记的位置这两个方法有先后顺序:先mark
2025-05-21 06:08:06
715
原创 15.注解
使用 @interface 来定义注解所有自定义的注解的父类是"java.lang.annotation.Annotation"注解也可以定义属性属性定义时属性名后面必须加一个小括号属性的类型只能是byteshortintlongfloatdoublebooleancharStringClass枚举类型注解类型以上所有类型或者其一维数组形式【示例】import com/*** 自定义的注解* 1、使用"@interface"定义注解/*
2025-05-21 05:56:16
829
原创 16.反射
反射机制是JDK中的一套类库,这套类库可以帮助我们操作/读取 class 字节码文件后期学习的大量的java框架底层都是基于反射机制实现的反射机制最核心的几个类java.lang.ClassClass类型的实例代表硬盘上的某个class文件,或者说代表某一种类型Class反射对象描述类语义结构,可以从Class对象中获取构造函数、成员变量、方法类等类元素的反射对象,并以编程的方式通过这些反射对象对目标类对象进行操作java.lang.reflect.FiledFiled类型的实例代表类中的属性/字段java
2025-05-20 20:50:25
599
原创 18.Java新特性
纵观Java这几年的版本变化,在Java被收入Oracle之后,Java以小步快跑的迭代方式,在功能更新上迈出了更加轻快的步伐。基于时间发布的版本,可以让Java研发团队及时获得开发人员的反馈,因此可以看到最近的Java版本,有很多语法层面简化的特性。同时,Java在支持容器化场景,提供低延迟的GC方面(ZGC等)也取得了巨大的进步注意一个新特性的出现通常会经过以下阶段孵化器(Incubator)阶段:这是新特性最早的开发和试验阶段,此时新特性只能作为一个单独的模块或库出现,而不会包含在Java SE中。
2025-05-20 20:18:46
871
原创 18.MySQL日志文件
二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句慢查询日志记录了所有执行时间超过参数 long_query_time 设置值并且扫描记录数不小于min_examined_row_limit 的所有的SQL语句的日志,默认未开启。
2025-05-13 21:26:16
1080
原创 19.MySQL主从复制
主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。
2025-05-13 21:20:39
947
Redis.docx
2020-03-23
Git与Github.docx
2020-03-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人