java学习
文章平均质量分 85
蒋一清
会发芽,有意义
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
浅拷贝和深拷贝
首先对于一个对象中的基本数据类型,来做浅拷贝和深拷贝其实没有什么区别,都是将原始值复制一份给新的对象,但是对于对象中的引用数据类型来说,浅拷贝只是将引用数据类型的地址值复制一份给新的对象,这样就会导致新对象和旧的对象之间共用一个引用数据,但是深拷贝是直接开辟一个新的内存地址,这样深拷贝的数据和原来的数据是八竿子打不着的!原创 2024-04-10 16:29:07 · 827 阅读 · 0 评论 -
JDK 8
方法体:用于执行业务逻辑,可以是单一语句,亦可以是语句块,当时一个单一的语句时,可以省略花括号。当需要返回值的时候,如果方法体中只有一个语句,可以省略return,会自动根据结果进行返回。没有参数的只有一个参数的多个参数参数类型可以省略哦。原创 2024-04-08 08:37:43 · 756 阅读 · 0 评论 -
JUC(五)
ThreeLocal并不解决线程之间数据共项的数据问题,适用于变量在线程间隔离且在方法之间共享的场景,通过隐式的在不同的线程内创建独立实例副本避免了实例线程安全问题,每一个线程持有一个只属于自己的专属Map并维护ThreadLocal对象与具体实例的映射,该Map由于只被持有它的线程访问,所以不存在线程的安全以及锁的问题。原创 2024-03-29 22:49:53 · 430 阅读 · 0 评论 -
JUC(四)
是什么意思呐,是这样的,认为自己在使用共享数据的时候一定有其他线程来对数据进行操作(写),因此在获取数据的时候会先加锁,确保数据不会被其他的线程修改。synchronized关键字和Lock的实现类都是悲观锁,这种方式适合对数据进行写操作比较频烦的场景,先加锁可以保护写数据时数据的正确,先锁定再操作数据!原创 2024-03-27 12:36:12 · 849 阅读 · 0 评论 -
JUC(三)
是一种特殊的线程为其他线程服务,在后台默默的完成一系列的系统性服务,比如GC垃圾回收线程,守护线程做为一个服务线程,没有服务对象就没有必要再继续运行下去,如果用户线程全部结束了,意味着程序需要完成的业务操作已经结束了,系统可以退出了,所以假如系统只有守护线程的时候,java虚拟机会自动退出。这里我们思考一个问题,事实上面的基本已经解决了我们的问题,但是现在想进一步的优化,如果我有多个异步的任务要执行呐,我是不是要每一次都要new一个新的线程来执行异步任务。也就是Monitor监视器,也就是我们平时说的锁。原创 2024-03-26 10:51:59 · 680 阅读 · 0 评论 -
JUC(二)
Owner 线程发现条件不满足,调用 wait 方法,即可进入 WaitSet 变为 WAITING状态 BLOCKED 和 WAITING 的线程都处于阻塞状态,不占用 CPU 时间片BLOCKED 线程会在 Owner 线程释放锁时唤醒WAITING 线程会在 Owner 线程调用 notify 或 notifyAll 时唤醒,但唤醒后并不意味者立刻获得锁,仍需进入 EntryList 重新竞争。原创 2024-03-24 22:13:59 · 256 阅读 · 0 评论 -
JUC(一)
阻塞与非阻塞是针对线程来说的,阻塞可能发生在IO期间也可能发生在IO之前。同步与异步是针对IO操作来说的,同步是用户线程一直盯着IO直到完成,异步是用户线程在IO完成时会收到通知。原创 2024-03-22 13:31:25 · 394 阅读 · 0 评论 -
Fliter和Listener
在Web开发中,过滤器通常指的是Servlet过滤器,用于在Java Web应用程序中对HTTP请求和响应进行预处理或后处理。当HTTP请求进入应用程序时,它将依次经过过滤器链中的每个过滤器,每个过滤器可以在处理完请求后将其传递给下一个过滤器或Servlet。在Web开发中,Servlet过滤器是一种强大的工具,用于在HTTP请求和响应中执行各种任务,从而增强了Web应用程序的功能和可维护性。例如,在图像处理中,过滤器可以用于应用滤镜效果,而在网络通信中,过滤器可以用于数据压缩或加密。原创 2023-09-27 19:51:48 · 135 阅读 · 0 评论 -
会话技术
在一次会话中包含多次的请求和响应,一次会话是指,浏览器第一次给服务器发送请求,然后建立会话,直到有一方断开为止。其中再一次会话范围内可以有多次的请求(共享数据)。Cookie: Cookie是一种小型的文本文件,服务器可以在用户的浏览器上存储信息。每次浏览器向服务器发送请求时,会自动附加相应的Cookie。这些Cookie可以包含用于标识用户、跟踪用户活动、存储用户首选项等信息。服务器可以读取和写入Cookie,以在不同的HTTP请求之间维护状态信息。Session。原创 2023-09-22 18:04:04 · 218 阅读 · 5 评论 -
Servlet的学习
Servlet是Java编程语言的一种组件技术,用于在Web服务器上处理来自客户端的请求并生成相应的响应。Servlet是基于Java Servlet API开发的Java类,它被部署到支持Servlet规范的Web容器中,如Tomcat、Jetty等。Servlet通常用于构建动态的、可交互的Web应用程序,它可以接收并处理来自Web浏览器或其他客户端应用程序的HTTP请求,并生成相应的HTTP响应。Servlet可以访问和操作请求的参数、头信息、会话状态以及其他与请求相关的数据。原创 2023-09-18 22:10:28 · 144 阅读 · 1 评论 -
tomcat服务器
Tomcat (Apache Tomcat) 是一个开源的Java应用服务器,用于支持Java Servlet、JavaServer Pages (JSP) 和Java API for WebSocket等技术。Tomcat由Apache软件基金会开发和维护,是最流行的Java Web服务器之一。Tomcat服务器主要用于托管和运行Java Web应用程序。它提供了一个 Web 容器,用于处理和执行Servlet和JSP等Java Web组件。原创 2023-09-18 12:23:10 · 548 阅读 · 1 评论 -
JDBC
JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库()使用这些类库可以以一种标准的方法、方便地访问数据库资源。JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。原创 2023-09-16 11:01:22 · 137 阅读 · 1 评论 -
java反射机制
是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意属性和方法,这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。利用反射创建的对象可以无视修饰符调用类里面的内容,可以跟配置文件结合起来使用,把要创建的对象信息和方法写在配置文件中。读取到什么类,就创建什么类的对象,读取到什么方法,就调用什么方法,此时当需求变更的时候不需要修改代码,只要修改配置文件即可。原创 2023-09-15 18:59:57 · 119 阅读 · 1 评论 -
多线程的一个问题
而且我在前面,实现改变线程的优先级的时候,两个线程就是很规律的一个一个交替,你一个我一个,我明明设置一个优先级为10,一个优先级为1,虽然说有优先级只能说只能提高抢占CPU的概率,但是这种一个一个相互交替也太离谱了!一开始我想着机缘巧合,就多运行了几次,很多次下来确实有一次两次的例外,然后我就搞不明白为什么,明明将同步代码块写在循环的里面,为什么还会出现这种一条路走到黑的情况!不累嘛,我调换到第一个的窗口二,合着谁第一个调用start方法谁先卖,而且是一直卖到票卖买完!原创 2023-08-19 10:46:53 · 116 阅读 · 0 评论 -
IO流
I/O(Input/Output)流是指用于处理输入和输出操作的数据流。在程序中,数据流可以是从文件、网络连接、内存等源头输入的数据,也可以是输出到文件、网络连接、内存等目标的数据。I/O 流在 Java 中被封装为类库,用于读取和写入数据。它们提供了一种统一的方式来处理各种类型的输入和输出操作,无论是读取文件、写入网络连接还是操作其他数据源。I/O 流主要分为两种类型:字节流和字符流。原创 2023-08-14 11:10:40 · 130 阅读 · 0 评论 -
File类
程序在运行的时候可能会从磁盘上读取一些文件信息或者在磁盘上创建新的文件,因此就需要学习我们的file类,注意file类的对象主要是用来获取文件本身的一些信息,比如文件所在的目录、文件的长度或者文件的读写权限等,但是不涉及对文件的读写的操作。2、file (String driectoryPath ,String filename)文件的目录和文件的名字然后拼接成路径。file对象表示的是路径、文件、文件夹、这个路径可以是存在的也可以是不存在的。原创 2023-08-13 17:10:06 · 132 阅读 · 1 评论 -
异常
Error(错误)是程序无法处理的错误,表示运行应用程序时出现的较严重的问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM(Java虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual Machine Error),当JVM不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。原创 2023-08-12 19:19:58 · 127 阅读 · 1 评论 -
方法的引用
方法引用是一种用于简化 Lambda 表达式的语法结构,特别适用于那些仅仅调用现有方法的 Lambda 表达式。它允许你直接引用现有的方法作为 Lambda 表达式,而不是通过编写一个具有调用该方法的 Lambda 表达式。(把以已经有的方法拿过来用,当作函数式接口中的抽象方法的方法体)1、引用处是函数式接口(也是可以写成lambda表达式的一个条件 )2、被引用的方法必须是已经存在的,不存在的话还要自己写3、被引用的方法的形参和返回值需要和抽象方法的保持一致4、被引用的方法要满足当前的需求。原创 2023-08-12 11:58:27 · 481 阅读 · 1 评论 -
stream流
Stream是 Java 8 引入的一个功能强大的 API,用于对集合(以及数组等数据源)进行处理和操作。它提供了一种流式操作的方式,可以更便捷、更高效地进行数据的转换、筛选、映射、聚合等操作。Stream的核心思想是将数据处理过程看作是一系列的流水线操作,每个操作都可以在数据上依次执行,产生新的流用于下一个操作。这种操作方式类似于 UNIX 的管道操作。通过使用Stream,可以将复杂的数据处理过程简化为一系列的链式调用,使得代码更加清晰、易读,并且可以充分发挥多核处理器的并行能力。过滤操作:使用。原创 2023-08-11 17:25:59 · 161 阅读 · 1 评论 -
java中的泛型
泛型(Generics)是 Java 中的一项强大的编程特性,它允许我们在定义类、接口或方法时使用类型参数,从而实现代码的重用性和类型安全性。使用泛型可以使代码更加灵活和通用,减少类型转换和错误,并提高代码的可读性和维护性。原创 2023-08-08 20:30:33 · 366 阅读 · 0 评论 -
集合
在Java中,集合(Collection)是一种用于存储和管理一组对象的数据结构。它提供了一系列的接口和类,用于操作和处理一组对象,这些对象可以是任何类的实例。集合的主要作用是用来存储和操作一组数据,它提供了各种方法来添加、删除、查找、遍历和处理这些数据。集合通常用于动态管理数据,可以根据需要动态地增加或减少数据的大小。原创 2023-08-08 11:24:22 · 305 阅读 · 0 评论 -
正则表达式
只匹配一个字符!原创 2023-08-06 16:35:21 · 112 阅读 · 0 评论 -
内部类
(1)内部类:在java类里面,有五大成员属性、方法、构造方法、代码块、内部类,前面的四个我们之前都以经提到,那么什么是内部类呐!顾名思义就是在一个类里面定义了一个类,这样的类叫做内部类,而包含内部类的类叫做内部类的外嵌类。原创 2023-08-04 11:17:27 · 133 阅读 · 2 评论 -
String、StringBuilder、StringBuffer的区别
1、String是变长度的字符串,而StringBuffer和StringBuilder是可变长度的字符串。2、在对String类进行操作的时候(例如增加字符),实际上是在内存中产生了一个新的String对象;而StringBuffer和StringBuilder是给原对象增加字符,不是新创建一个对象。3、Stringbuffer是线程安全的,效率低---->适用于多线程操作字符串缓冲区下操作大量数据,而Stringbuilder是非线程安全的----->适用于单线程操作字符串缓冲区下操作大量数据。原创 2023-07-25 16:15:23 · 181 阅读 · 0 评论 -
接口与实现
但是父类也不是很全面的将子类所有的方法都包含了,肯定有一些特别的方面,就比方一个Animal类,里肯定有会eat和sleep的方法叭,但是有一些小动物有的会飞,有的会游泳,我们难道要在创建两个类去添加这两个方法嘛,然后再让这些小动物去分别继承这些类嘛,这也太麻烦了,这时候就引出来接口的概念,它更像是方法的集合,将这些方法以一个笼统的概念去描述,当有的类符合这写方法就可以(继承)调用这些接口。具体的方法实现需要在实现接口的类中完成,与普通的类方法不同,接口中的方法不能包含方法体,即不能有花括号。原创 2023-08-02 17:32:22 · 311 阅读 · 0 评论 -
抽象类和抽象方法
抽象类是一种不能实例化的类,它可以包含抽象方法和非抽象方法。抽象类用于定义一组共同的属性和方法,供其子类继承和实现。抽象方法在抽象类中没有具体的实现,需要在其子类中进行重写。抽象类的主要作用是为其子类提供通用的行为和结构,同时强制子类实现特定的方法。原创 2023-08-02 15:39:34 · 830 阅读 · 1 评论 -
包、final关键字、权限修饰符、代码块
包是Java语言有效管理类的一个机制。不同的Java源文件中可能出现名字相同的类,如果想要区分这些类,就需要包名,包名的目的就是有效的区分名字相同的类,不同的Java源文件中的两个类的名字相同时,它们可以通过隶属于不同的包来相互区分。 final关键字可以修饰类,成员方法和方法里面的局部变量。下面说一下修饰不同的类型有不同的效果。 1、 修饰类:当一个类被声明为 时,表示该类不能被继承,即不能有子类。这样可以防止其他类继承该类,保护类的完整性和安全性。例如:原创 2023-08-02 11:06:04 · 128 阅读 · 2 评论 -
java多态
1、上转型(Upcasting)上转型是指将子类对象赋值给父类引用变量的过程。在Java中,上转型允许我们将一个子类的对象视为其父类的对象,从而可以通过父类引用变量来操作子类对象。通过上转型,我们可以实现多态性,即通过父类的引用变量调用子类的方法。这样可以在不知道具体子类对象的情况下,灵活地调用相应的方法,从而实现代码的重用和扩展。举个例子!System.out.println("动物发出声音");//方法重写System.out.println("狗在叫");原创 2023-08-01 18:49:50 · 156 阅读 · 2 评论 -
封装和继承
继承是面向对象编程中的一种重要概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法,从而可以在子类中重用父类的功能并添加自己的特定功能。继承是面向对象编程的三大特性之一,另外两个是封装和多态。在继承中,子类可以继承父类的所有非私有成员(属性和方法),包括数据成员和成员函数。子类可以直接使用继承自父类的属性和方法,也可以在子类中重写(覆盖)父类的方法以实现特定的行为。继承的主要目的是代码重用和层次化组织。通过继承,我们可以将共性的代码放在父类中,减少重复编写相似代码的工作量。原创 2023-07-30 16:12:03 · 718 阅读 · 3 评论 -
static关键字
(1)简介:在Java中,static是一个关键字,用于修饰类的成员变量和方法。当成员变量或方法被声明为static时,它们属于类本身而不是类的创建的实例对象。(不用创建对象就可以后面打个例子举个比方!)也就是说,无论创建多少个类的实例对象,所有这些对象共享同一个static成员变量或方法。(2)static成员变量:static修饰的成员变量被称为类变量或静态变量。它们在内存中只有一份拷贝,并且可以被类的所有创建的实例对象共享。可以通过类名直接访问static成员变量,无需创建类的实例对象。原创 2023-07-30 09:02:18 · 165 阅读 · 1 评论 -
常用实用类之String
创建a时,系统回到常量池中对比有没"你好",没有的话会创建''你好'',并且将引用赋值给a,当程序运行到b时,也回到常量池中对比,经过对比发现已经存在啦,那么他直接将已经存在的字符串的引用赋值给b,那么这时候a和b就有了相同的引用.首先讲一下"==",前面学习的,但是它可以分为两类比较,如果是基本数据类型,==比较的是具体的数据值,如果是引用的数据类型,==比较的是地址值,一般来将我们可以输出对象的引用,但是对于String对象,我们没有办法输出他的引用,即下面的代码是行不通的,输出的是aaa。原创 2023-07-24 11:16:19 · 145 阅读 · 0 评论 -
java参数传值
在JAVA中.方法中的参数都是被传入值的,也会是说,方法调用者想传递什么样的数值()就传递什么数值给这个参数,在方法中无论这个传入的参数()怎么变,都不影响数值。原创 2023-07-20 23:44:22 · 261 阅读 · 0 评论
分享