java知识分享
文章平均质量分 77
java学习~
超级无敌hhh
这个作者很懒,什么都没留下…
展开
-
使用 IntelliJ IDEA 和 Maven 构建 Java 项目
在 Java 开发中,使用 Maven 是一种广泛采用的构建工具,而 IntelliJ IDEA 则是一款功能强大的集成开发环境(IDE)。结合 Maven 和 IntelliJ IDEA,可以更加高效地管理和构建 Java 项目。本文将介绍如何在 IntelliJ IDEA 中使用 Maven 构建 Java 项目。原创 2024-03-26 16:26:59 · 1702 阅读 · 0 评论 -
使用Java JDBC连接数据库
在Java应用程序中,与数据库交互是一个常见的任务。Java数据库连接(JDBC)是一种用于在Java应用程序和数据库之间建立连接并执行SQL查询的标准API。通过JDBC,您可以轻松地执行各种数据库操作,如插入、更新、删除和查询数据。本文将介绍如何在Java应用程序中使用JDBC来连接数据库。原创 2024-03-18 21:20:06 · 912 阅读 · 0 评论 -
Java面向对象:类与对象
在Java中,定义一个类使用class// 属性// 构造方法// 构造方法初始化// 方法// 方法体在本文中,我们深入讨论了Java中类与对象的概念,并通过练习加深了对这些概念的理解。类与对象是Java编程中的重要组成部分,掌握它们将有助于更好地设计和编写面向对象的程序。希望这篇文章能够对您有所帮助!原创 2024-03-13 20:57:56 · 531 阅读 · 0 评论 -
Java网络编程入门与实践:构建简单的Socket通信应用
通过这个简单的Socket通信实例,您已经初步了解了Java网络编程的基础知识。在未来的学习中,您可以深入研究更复杂的网络编程概念和技术,构建更强大的网络应用程序。祝您在网络编程的学习过程中取得成功!原创 2024-03-12 20:47:22 · 627 阅读 · 0 评论 -
JavaSE 中的18 把锁
一个共享数据加了悲观锁,那线程每次想操作这个数据前都会假设其他线程也可能会操作这个数据,所以每次操作前都会上锁,这样其他线程想操作这个数据拿不到锁只能阻塞了。在Java 语言中synchronized 和ReentrantLock 等就是典型的悲观锁,还有一些使用了synchronized关键字的容器类如Hashtable 等也是悲观锁的应用。乐观锁操作数据时不会上锁,在更新的时候会判断一下在此期间是否有其他线程去更新这个数据。乐观锁可以使用版本号机制和CAS 算法实现。原创 2024-03-11 21:30:25 · 931 阅读 · 1 评论 -
Java线程锁之Lock的使用
有且只有一个线程获取到锁,其余线程全部挂起,直到该拥有锁的线程释放锁,被挂起的线程被唤醒重新开始竞争锁ReentrantLock的内部类Sync 继承了AQS,分为公平锁FairSync和非公平锁NonfairSync。如果一个线程lock.lock()已经获取了锁,也可以多次调用这个方法(重入锁名称的来源),都可以获取到锁,但是获取多少次锁必须通过lock.unlock。阻塞线程时会自动释放锁,不管调用了多少次lock.lock(),这时阻塞在lock.lock()方法上线程则可以获取锁。原创 2024-03-11 21:04:14 · 1036 阅读 · 1 评论 -
JAVA泛型
Java的泛型是一种提供类型安全和代码复用的机制,可以在类、接口和方法中使用类型参数,在编译期进行类型检查,并提供了通配符来灵活处理不同类型的参数。但是泛型的类型参数在运行时是不可知的,需要注意泛型的限制和特点。原创 2024-03-07 21:31:32 · 914 阅读 · 1 评论 -
常见的List接口的实现类——源码理解
如果需要删除的元素o则从头指针开始遍历整个链表,如果Node节点对象中的数据为o【equals】则执行删除操作。删除第一个值为o的元素节点。原创 2024-03-06 19:35:59 · 915 阅读 · 1 评论 -
Java进阶知识——集合
/获取集合中的元素个数int size();//判断集合中的元素个数是否为0,不能使用这个方法判断null//判断集合中是否包含指定元素o,有true 没有false。不能判断集合中是否包含null 元素//Iterable 接口中定义的方法,获取迭代器对象用于遍历集合中的所有元素//将集合转换为Object 类型的数组//使用泛型将集合转换为特定类型的数组//向集合中添加元素e//从集合中删除指定的元素o,如果删除成功true 否则false操作一组元素的方法。原创 2024-03-04 20:20:41 · 967 阅读 · 1 评论 -
Java线程锁之synchronize的使用
在Java中synchronized可保证在同一个时刻,只有一个线程可以执行特定对象某个同步方法或者某个代码块(主要是对方法或者代码块中存在共享数据的操作),同时还应该注意到synchronized另外一个重要的作用,synchronized可保证一个线程的变化(主要是共享数据的变化)被其他线程所看到(保证可见性,完全可以替代volatile功能)。原创 2024-03-01 20:34:49 · 824 阅读 · 1 评论 -
经典多线程问题——生产者&消费者
生产/消费者问题是个非常典型的多线程问题,涉及到的对象包括生产者、消费者、仓库和产品。他们之间的关系如下:生产者仅仅在仓储未满时候生产,仓满则停止生产。消费者仅仅在仓储有产品时候才能消费,仓空则等待。当消费者发现仓库没产品可消费时候会通知生产者生产。生产者在生产出可消费产品时候,应该通知等待的消费者去消费。生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。定义生产数据的生产者线程。原创 2024-03-01 20:10:32 · 355 阅读 · 1 评论 -
线程的生命周期(面试前必看!!)
线程从创建并启动到消亡共经历了5种状态:新建、就绪、运行、阻塞和死亡新创建了一个线程对象。线程对象创建后,其它线程调用了该对象的start()方法。只能针对处于新建状态的线程对象调用start方法,否则IllegalThreadStateException该状态的线程位于可执行线程池中,变得可执行,等待获取CPU的使用权。就绪状态的线程获取了CPU,执行程序代码run()。注意在一个多处理器的机器上会有多个线程并行执行。原创 2024-02-29 19:56:46 · 915 阅读 · 0 评论 -
全网最全Java线程池讲解!!!
创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变长,而且一个进程能创建的线程数有限。为了避免这些问题,在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程。从JDK1.5开始,Java API提供了Executor框架可以创建不同的线程池。比如单线程池,每次处理一个任务;数目固定的线程池或者是缓存线程池(一个适合很多生存期短的任务的程序的可扩展线程池)原创 2024-02-28 21:05:33 · 1661 阅读 · 0 评论 -
创建线程的常用三种方法(面试必背!!!)
Thread类可以理解为是java用于管理线程的一个类,里面封装了操作系统提供的线程管理这一方面的应用编程接口API,Java代码创建的每个线程都可以理解为Thread实例化的对象,Thread对象用于描述线程的信息。Java标准库中Thread类可以视为是对操作系统对线程管理方面提供的API进行了进一步的抽象和封装。定义类继承Thread类,并重写Thread类的run()方法,该run()方法的方法体就代表了线程需要完成的任务。因此把run()方法称为线程执行体。原创 2024-02-28 20:39:13 · 489 阅读 · 0 评论 -
JAVA进阶知识——I/O流
过滤父类FilterReader、FilterInputStream、FilterWriter、FilterOutputStream,实际上就是装饰模式中的抽象装饰类案例:循环13加密@Overridereturn kk;try (//SecurityReader()为自定义过滤流) {int kk=0;=-1){System.out.println("执行完毕!");处理类型字符流字节流缓存BufferedReader和BufferedWriter。原创 2024-02-27 10:28:41 · 1448 阅读 · 0 评论 -
JAVA多线程基本概念(超简单~)
程序是为完成特定任务、用某种语言编写的一组指令的集合。是具有一定独立功能程序的运行过程,是系统进行和的一个独立单位,重点在,也就是说。是进程中的一个独立执行线索,是进程中的一个实体,是和的基本单位,是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源。在运行时,只是暂用一些计数器、寄存器和栈(栈帧)原创 2024-02-26 19:17:40 · 1027 阅读 · 1 评论 -
Java异常处理
除了Java提供的异常类型外,开发者还可以定义自己的异常类型。自定义异常需要继承自Exception或RuntimeException类,并根据具体的业务需求来定义异常的属性和方法。原创 2024-02-26 14:44:12 · 479 阅读 · 0 评论 -
在Java中实现如何克隆
因为java语言程序是运行在JVM上, 如果要访问比较底层的与操作系统相关的方法就没有办法了,只能通过比较靠近系统的语言来实现,比 如C/C++。在浅克隆种当对象被复制时他本身和其中包含的值类型的成员属性,而引用类型的成员对象并没有复制。在深克隆种无论原型对象的成员变量是值类型还是引用类型,都将复制一份给克隆对象。这里的区别于浅克隆,对于原型对象的所有引用类型的属性对象也复制一份给克隆对象,不是地址复制。类定义需要实现序列化接口,当然为保证引用类型属性也能序列化,所以引用类型属性也必须实现序列化接口。原创 2024-02-23 14:13:59 · 406 阅读 · 1 评论