
Java
文章平均质量分 56
Java相关
木木是木木
有问题未回复私 企鹅 28九 九 66九 31九
展开
-
定时任务实现 - Cron表达式知识
cron表达式是一个字符串,由6到7个字段组成,用空格分隔。其中前6个字段是必须的,最后一个是可选的。每个字段的含义为:秒 分 时 日 月 周 年原创 2023-08-09 22:48:15 · 509 阅读 · 0 评论 -
File类的用法和InputStream,OutputStream的用法
一、File类1.构造方法2.普通方法二、InputStream1.方法3.Scanner类的应用三、OutputStream1.方法3.PrintWriter类的应用。原创 2023-02-20 13:30:37 · 850 阅读 · 0 评论 -
synchronized和volatile区别是什么?
既然synchronized在大多数情况下,都可以保证线程安全,那直接无脑使用synchronized,是否可以?PS:线程安全的三大特性:原子性、内存可见性、指令重排序(有序性)。原创 2023-02-09 20:58:56 · 299 阅读 · 0 评论 -
synchronized和ReentrantLock之间的区别
synchronized 和 ReentrantLock 之间的区别。原创 2023-02-09 12:09:21 · 591 阅读 · 2 评论 -
当面试官问到你synchronized的原理时,别再一头雾水了
如果后续没有其他线程来竞争该锁,那么就不用进行其他同步操作了(避免了加锁解锁的开销)如果后续有其他线程来竞争该锁(刚才已经在锁对象中记录了当前锁属于哪个线程了,很容易识别当前申请锁的线程是不是之前记录的线程),那就取消原来的偏向锁状态,进入一般的轻量级锁状态。按照之前对于锁的设定,第二次加锁的时候,就会阻塞等待,直到第一次的锁被释放,才能获取到第二个锁,但是释放第一个锁也是由该线程来完成,结果这个线程已经躺平了,啥都不想干了,也就无法进行解锁操作,这时候就会。第一个尝试加锁的线程,优先进入偏向锁状态。原创 2023-02-08 12:08:53 · 781 阅读 · 0 评论 -
HashMap、HashTable和ConcurrentHashMap的区别
简单总结一下面试中常问的HashMap、HashTable和ConcurrentHashMap的区别。原创 2023-02-02 17:12:18 · 356 阅读 · 0 评论 -
一文带你深入了解线程池
简单来说,线程池就是提前创建好一批线程,当有任务的时候,从池子中取出一个线程去执行该任务,执行结束后,再把线程放回池子中,以备循环使用。原创 2023-01-12 10:43:32 · 850 阅读 · 0 评论 -
阻塞队列和生产者消费者模式的简单实现
若有一个生产者,两个(多个)消费者,如果生产者生产了一个数据。然后调用notifyAll(),唤醒了两个消费者,若我们使用的是if,那么程序接着从wait处执行,那么两个消费者都会从阻塞队列中取数据?但是实际上只有一个数据,这就产生了所谓的。一下是否有数据,第一个获得锁的对象判断为有数据,取出,第二个获得锁的对象接着判断,发现没数据了,继续进入阻塞状态。为什么阻塞队列的阻塞功能实现那里判断使用的是while而不是if?如果我们使用的是while,那么程序接着从wait处执行,会。原创 2023-01-07 11:46:07 · 190 阅读 · 0 评论 -
算术左移(<<)—逻辑左移(<<<)和算术右移(>>)—逻辑右移(>>>)
算术移位和逻辑移位使用细节原创 2023-01-05 10:15:24 · 3259 阅读 · 1 评论 -
Java 线程的六种状态及其简易转换
NEW:初始状态,线程被创建,但是还没有调用start()方法。> RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态笼统地称作“运行中”。BLOCKED:阻塞状态,表示线程阻塞于锁。WAITING:等待状态,表示线程进入等待状态,进入该状态表示当前线程需要等待其他线程做出一些特定动作(通知或中断)TIMED_WAITING:超时等待状态,该状态不同于 WAITING,它是可以在指定的时间自行返回的。TERMINATED:终止状态,表示当前线程已经执行完毕。原创 2022-12-22 15:23:57 · 698 阅读 · 1 评论 -
Java综合课设:公园管理系统的简单实现 Java + MySQL + Swing
公园管理系统的简单实现 Java +MySQL + GUI原创 2022-12-15 16:45:29 · 3367 阅读 · 26 评论 -
Java中Math.round()的用法
一句话结论:将括号内的数 + 0.5 向下取整即为输出。原创 2022-11-20 23:41:10 · 13021 阅读 · 7 评论 -
Map与Set总结:HashMap、HashSet、TreeMap、TreeSet
Map是一个接口类,该类没有继承自Collection,该类中存储的是结构的键值对,并且K一定是唯一的,不能重复。Set是继承自Collection的接口类,Set中只存储了Key。原创 2022-11-17 16:51:59 · 187 阅读 · 0 评论 -
Java多线程总结:进程与线程、线程的创建、线程状态与分类、线程方法、线程同步
说的进程,先来提一下程序的概念:程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态概念。进程:进程是程序执行一次的过程,是一个动态概念,同时也是系统资源分配的基本单位。线程:线程是一个独立执行的路径,它包含在进程之中,通常情况下一个进程可以包含若干个线程,我们熟知的main就是一个主线程,当然一个进程中至少有一个线程,不然它就没有存在的意义了,线程是CPU调度的基本单位。再说说多线程,其实很多多线程都是模拟出来的,真正情况下的多线程是有多个CPU的,例如服务器等等,而 模拟出来的多线程,原创 2022-11-15 12:19:59 · 802 阅读 · 0 评论 -
Java集合:Map集合的几种常用遍历方式
使用 for-each 循环遍历 key 或者 values,一般适用于只需要 Map 中的 key 或者 value 时使用。性能上比 entrySet 较好。原创 2022-11-13 21:08:21 · 308 阅读 · 0 评论 -
排序算法:插入排序、冒泡排序、选择排序、希尔排序、堆排序、快速排序、归并排序
排序算法相关总结,涉及的排序算法有:插入排序、冒泡排序、选择排序、希尔排序、堆排序、快速排序。原创 2022-11-07 22:23:10 · 5497 阅读 · 4 评论 -
Java中对象的比较
总结一下在Java里面基本数据类型的比较和引用数据类型的比较方法。原创 2022-11-04 20:44:05 · 136 阅读 · 0 评论 -
Java使用小堆模拟实现简单的优先队列
简单的使用堆模拟实现一下优先队列原创 2022-11-01 21:37:20 · 270 阅读 · 0 评论 -
二叉树的基本操作及其代码实现
本文实现了如下二叉树的基本操作:1.手动创建一棵二叉树 返回这棵树的根节点2.前序遍历3.中序遍历4.后序遍历5.迭代获取树中节点的个数6.递归获取节点的个数7.迭代获取叶子节点的个数8.递归获取叶子节点的个数9.获取第K层节点的个数10.获取二叉树的高度11.检测值为value的元素是否存在12.层序遍历13.判断一棵树是不是完全二叉树原创 2022-10-31 22:30:43 · 1338 阅读 · 0 评论 -
ArrayDeque和LinkedList的区别
我比较喜欢使用ArrayDeque或者LinkedList来模拟实现栈或者队列,但最近遇到了一个问题,在一段程序中,我使用LinkedList模拟时是正常的,使用ArrayDeque模拟会报空指针异常。原创 2022-10-26 15:48:00 · 1504 阅读 · 2 评论 -
二叉树的前、中、后序遍历和层序遍历的实现(递归 + 迭代)
该篇文章写了二叉树的四种遍历方式,分别对应力扣上的题目为144. 二叉树的前序遍历、94. 二叉树的中序遍历、145. 二叉树的后序遍历、102. 二叉树的层序遍历。原创 2022-10-24 21:57:09 · 490 阅读 · 0 评论 -
二分查找中关于mid定边界问题的解析(查找数组中小于等于特定值的元素的最大下标/大于等于特定值的元素的最小下标问题)
有时候写二分查找,我们会看见有的写 mid = (l + r) / 2,而有时候见到有人写 mid = (l + r +1) / 2,所以我有时候会心生疑问:我们究竟应该怎么写?这有什么规律吗?原创 2022-10-23 22:45:01 · 499 阅读 · 0 评论 -
Java中的链表(LinkedList)的简单实现
Java中的链表(LinkedList)的简单实现原创 2022-10-17 22:55:07 · 414 阅读 · 0 评论 -
Java中的顺序表(ArrayList)的简单实现
顺序表的简单介绍和简单简单简单的实现原创 2022-10-11 23:23:18 · 250 阅读 · 0 评论 -
实现两数交换的三种方法:普通方法、相加寄存器、位运算
实现两数交换的三种方法:普通方法、相加寄存器、位运算原创 2022-10-09 18:22:49 · 342 阅读 · 2 评论 -
Java中HashMap里面的getOrDefault() 方法的使用
作用:getOrDefault() 方法获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值。原创 2022-10-05 21:31:16 · 949 阅读 · 1 评论 -
Java图书管理系统实现
Java图书管理系统实现。原创 2022-10-05 11:35:37 · 661 阅读 · 1 评论 -
Java之异常的详细总结
Throwable:是异常体系的顶层类,其派生出两个重要的子类, Error 和 Exception:Error:指的是Java虚拟机无法解决的严重问题,比如:JVM的内部错误、资源耗尽等,典型代表:StackOverflowError和OutOfMemoryError,一旦发生回力乏术,程序就会直接退出;Exception:异常产生后程序员可以通过代码进行处理,使程序继续执行。比如:感冒、发烧。我们平时所说的异常就是Exception。原创 2022-09-24 11:49:27 · 375 阅读 · 2 评论 -
Java中的String类详细总结
字符串内部是使用字符数组char[] value来存储内容的,字符串是一种线性表(线性表还包括数组、链表等)。原创 2022-09-22 08:59:05 · 593 阅读 · 1 评论 -
Java中的Object类
介绍Java中的Object类。原创 2022-09-22 09:00:00 · 259 阅读 · 1 评论 -
Java中常用的两大接口(Comparable、Clonable)、深浅拷贝的区别
打开Clonable接口的源码之后,我们发现该接口内部没有任何的抽象方法,这是一个空荡荡的接口(接口中不一定要有东西),没有任何抽象方法的接口称之为标记接口,它不可省略,JVM会识别所有带这个Cloneable接口的子类,打上可复制的标记。面试问题:什么是深浅拷贝、二者有什么区别?解答: 浅拷贝的概念:把一个对象中“最外层”的属性,拷贝一份,交给一个新对象,如果发现这个属性的值是基本数据类型,则把值完整拷贝一份,交给新对象,如果属性是引用类型,拷贝的就是内存地址交给新的对象,所以如果其中一个对象改变原创 2022-09-19 10:29:56 · 280 阅读 · 0 评论 -
Java中的抽象方法、抽象类和接口知识总结
Java中使用abstract关键字修饰的方法为抽象方法,抽象方法没有方法体,但反过来说只要没有方法体就是抽象方法这句话是错误的,Java中还有一类native方法(本地方法)没有方法体,比如public native hashCode()就是一个本地方法,该类方法其实是使用C++实现的,Java允许通过特定的方式来调用C++的方法。原创 2022-09-16 12:44:41 · 1396 阅读 · 0 评论 -
面向对象的三大特性之多态
今天给大家总结介绍一下面向对象的三大特性之一的多态。原创 2022-09-15 17:24:06 · 251 阅读 · 0 评论 -
Java中关键字final的用法细节详解
final关键字的意思:终结器,到此为止,最终。被final修饰的属性为最终属性,它的值无法修改,所以可以使用final关键字来定义常量。final修饰的属性可以是基本数据类型,也可以是引用数据类型。原创 2022-09-14 23:34:50 · 2149 阅读 · 0 评论 -
Java中类关键字super的用法详解
在继承关系中,只要在子类中定义了和父类名称相同的属性,无论其类型是否相同,调用的都是子类中覆盖后的变量。2.在子类中调用父类的方法代码示例:3.在子类中调用父类的构造方法使用注意事项如下:原创 2022-09-14 19:04:38 · 2309 阅读 · 0 评论 -
一道题让你秒懂Java中静态代码块、构造代码块、构造方法、普通代码块、main函数的执行顺序
静态代码块:用 staitc 声明,最早执行,JVM 加载类时执行,且仅执行一次。构造代码块:类中直接用 {} 定义,比构造函数早执行,它与构造函数类似,在每一次创建对象时执行。普通代码块:类中的普通方法,只有被调用才执行。构造方法:执行时间比构造代码块时间晚,也是在对象初始化的时候运行。原创 2022-09-13 23:06:15 · 501 阅读 · 0 评论 -
Java中String类的几种常见遍历方式
charAt(int index) :返回 char指定索引处的值。toCharArray() :将此字符串转换为新的字符数组。substring(int beginIndex, int endIndex) :返回一个字符串,该字符串是此字符串的子字符串。原创 2022-09-09 09:45:07 · 8577 阅读 · 0 评论 -
Java优先队列PriorityQueue中的方法和使用细节总结
今天稍稍了解了一下Java中的优先队列PriorityQueue,做了以下总结。原创 2022-09-07 17:59:01 · 735 阅读 · 0 评论 -
为什么Java中你写的swap()函数无法实现两数交换?你真的深入了解Java中的栈和堆了吗?
作为一个Java初学者,相信我们都会写过swap(int a,int b)函数,然后写完运行之后我们会发现,他其实无法完成我们对两个数交换的要求,这是为什么呢?要解决这个问题,我们需要了解到JVM中的栈区和堆区两个。原创 2022-08-22 17:12:37 · 1510 阅读 · 0 评论 -
牛客_最大公约数 辗转相除法的Java实现
如果有一个自然数 a 能被自然数 b 整除,则称 a 为 b 的倍数, b 为 a 的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。输入 a 和 b , 请返回 a 和 b 的最大公约数。进阶:空间复杂度 O(1),时间复杂度O(logn)。1、两个数a,b,如果b为0,计算结束,a是最大公约数。2、否则,让a除以b,a等于b,b等于余数。备注: a和b的范围是[1~10^9]...原创 2022-08-18 15:35:13 · 687 阅读 · 0 评论