Java
Java
旷野历程
精通微服务架构、分布式架构以及高性能、高并发、高可用等领域;精通MySQL数据库原理,对SQL调优、分库分表、数据一致性、海量数据处理等有深入了解。具备独立设计和开发的经验,曾负责过大型分布式服务设计、支付交易系统的设计,能够快速定位和解决线上问题。
展开
-
CountDownLatch、CyclicBarrier和Semaphore区别
CountDownLatch、CyclicBarrier、Semaphore都是Java并发库中的同步辅助类,它们都是可以用来协调多个线程之间的执行。它通常用来实现一个线程需要等待获取一个许可证才能访问共享资源,或者需要释放一个许可证才能完成操作。是一个同步屏障,它允许多个线程相互等待,直到到达某个公共屏障点,才能继续执行。是一个计数器,它允许一个或多个线程等待其他线程完成操作。它通常用来实现一个线程等待其他多个线程完成操作之后再继续执行的操作。原创 2024-04-02 11:48:09 · 253 阅读 · 0 评论 -
集合的排序方式?
Java.util 包中的 List 接口继承了 Collection 接口,用来存放对象集合,当对这些对象进行排序的时候,要么让对象类自己实现同类对象的比较,要么借助比较器进行比较排序。原创 2024-03-19 10:12:03 · 437 阅读 · 0 评论 -
!= 和 equals 的优先级
在 Long 类中,equals 方法被重写,用于比较两个 Long 对象的值是否相等。a.equals(b) 返回 false,表示这两个对象的值是相等的。在你的例子中,a 和 b 都是 Long 类型的对象,而不是基本类型 long。= 操作符时,它会比较两个对象的引用,而不是它们的值。即使它们的值相等,但它们是不同的对象,所以 a!= 操作符比 equals 方法的优先级高。= 操作时,会先进行对象引用的比较,而不是值的比较。注意:在比较对象时,推荐使用 equals 方法进行值比较,而不是!原创 2024-02-04 15:31:21 · 415 阅读 · 0 评论 -
多级树形结构查询 - 递归
【代码】多级树形结构查询 - 递归。原创 2024-01-18 09:57:49 · 510 阅读 · 0 评论 -
CompletableFuture原理与用法
在Java中CompletableFuture用于异步编程,异步通常意味着非阻塞,运行任务单独的线程,与主线程隔离。并且通过回调可以在主线程中得到异步任务的执行状态,是否完成和异常等信息。通过这种方式,主线程不会被阻塞,不需要一直等到子线程完成。主线程可以并行的执行其他任务。使用这种并行方式,可以极大的提高程序的性能。CompletableFuture 可以从全局的 ForkJoinPool.commonPool() 获得一个线程中执行这些任务。原创 2024-01-15 14:48:54 · 1776 阅读 · 0 评论 -
基本数据类型转字符串类型对比
i + ""底层使用了 StringBuilder 实现,先用 append() 方法拼接,再用 toString() 方法获取字符串。String.valueOf() 方法底层调用了 Integer.toHexString() 方法,但是会在调用前做空判断。Integer.toString() 方法就不说了,直接调用。执行结果会根据自身硬件性能会有差别。原创 2023-12-06 10:08:23 · 124 阅读 · 0 评论 -
Java拆分集合
在对数据进行批量操作的时候,由于数据量太大,需要对数据进行拆分操作,分成N个小集合。执行平均时间:≈15ms。原创 2023-12-01 17:05:00 · 347 阅读 · 0 评论 -
线程池大小设置多少比较合适?
旨在用公式描述在并行计算中,多核处理器理论上能够提高多少倍速度。它代表了处理器并行运算之后效率提升的能力。公式如下:S(N):是加速比(Speedup)P:是并行化部分占总程序执行时间的比例N:是并行化部分的处理器数目P 为并行计算所占比例,N 为并行节点处理个数。当 1 - P = 0 时,没有串行,只有并行,最大加速比 S(N) = N;当 P = 0 时,只有串行,没有并行,最小加速比 S(N) = 1;原创 2023-12-04 08:04:35 · 2264 阅读 · 0 评论 -
Java 中 Method 和 MethodSignature 区别
Method 属于 Java 标准反射 API,位于 java.lang.reflect 包下。主要用于在运行时获取和操作类的方法,支持动态调用。通过 Class 对象的 getMethod 等方法获取 Method 对象,用于获取方法的详细信息,如方法名称、返回类型、参数类型等。原创 2023-11-16 22:48:25 · 1948 阅读 · 0 评论 -
详谈Java中抽象类和接口的区别和使用场景
抽象类和接口都是实现多态的重要手段,但在使用时需要注意它们之间的区别和应用场景。通常情况下,如果需要定义一组相关的方法并提供默认实现,使用抽象类;如果需要定义一组行为或能力,但不需要默认实现,使用接口。总体来说,抽象类更适合用于一些有共同代码和状态的类层次结构,而接口更适合用于定义规范、实现多态以及解耦不同的类。在实际项目中,可以根据具体需求来选择抽象类和接口。抽象类和接口是 Java 中两种不同的抽象机制,它们都用于定义类的结构,但在一些方面有不同的使用场景。原创 2023-08-30 10:25:42 · 233 阅读 · 0 评论 -
Java中PrintStream用法
在 PrintStream 中定义的构造方法中可以清楚的发现有一个构造方法可以直接接收 OutputStream 类的实例,这是因为与 OutputStream 相比起来,PrintStream 可以更加方便的输出数据。不过需要注意的是,PrintStream 并不是线程安全,而且效率也不是很高,所以可以考虑使用线程安全的替代类,如 java.util.logging.Logger 或第三方的日志框架。在实际开发中,PrintStream 也常用于日志记录、简单的输出格式控制等。原创 2023-08-29 18:17:03 · 605 阅读 · 0 评论 -
自定义对象池
实现一个对象池时,你需要考虑几个关键方面:对象的创建、对象的管理、对象的重用、线程安全等。在实际应用中,你可能需要根据需求进行更复杂的实现,例如对象的生命周期管理、超时处理等。来管理对象池中的对象。这样可以避免频繁地创建和销毁对象,提高系统性能和资源利用率。这是一个简单的对象池示例,使用了。原创 2023-08-09 11:37:07 · 166 阅读 · 0 评论 -
线程安全的集合类
如果你要使⽤线程安全的集合的话, java.util.concurrent 包中提供了很多并发容器供你使⽤:原创 2023-07-31 10:00:43 · 115 阅读 · 0 评论 -
双亲委派作用
双亲委派机制保证了类加载的安全性和一致性,并避免了类的冲突和重复加载问题。它是 Java ClassLoader 的一个重要特性,为 Java 类的加载提供了一种高效而稳定的机制。双亲委派是 Java ClassLoader 的一种加载机制,它的作用是保证 Java 类的加载安全性和避免类的重复加载,同时实现类加载的层级结构。无论是在学习 Java 过程中还是在背涨薪秘诀时都会提到双亲委派,这里面说的最多的就是类加载机制,但却很少谈及其作用,经多方面参考,总结一下。原创 2023-07-28 10:31:18 · 183 阅读 · 0 评论 -
并发编程中锁的优化
在 Java 并发编程中,锁是一种常用的同步机制,用于控制对共享资源的访问。使用锁可以确保多个线程之间的互斥访问,避免数据竞争和并发问题。然而,锁的使用可能会带来一定的性能开销,特别是在高并发场景下。原创 2023-07-27 17:05:36 · 160 阅读 · 0 评论 -
集合中的⽆序性和不可重复性的含义
⽆序性不等于随机性 ,⽆序性是指存储的数据在底层数组中并⾮按照数组索引的顺序添加 ,⽽是根据数据的哈希值决定的。不可重复性是指添加的元素按照 equals()判断时 ,返回 false,需要同时重写 equals()⽅法和 HashCode()⽅法。原创 2023-07-26 11:31:13 · 136 阅读 · 0 评论 -
有哪些集合是线程不安全的?怎么解决呢?
我们常⽤的 Arraylist, LinkedList , Hashmap , HashSet , TreeSet , TreeMap , PriorityQueue 都不是线程安全的。解决办法很简单,可以使⽤线程安全的集合来代替。原创 2023-07-26 11:20:11 · 400 阅读 · 0 评论 -
接口链式调用方式
接口链式调用方式原创 2023-06-08 21:02:41 · 264 阅读 · 0 评论 -
策略模式的多种使用方式
在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。原创 2023-04-14 16:09:25 · 659 阅读 · 0 评论 -
Java安全停止线程
Java安全停止线程原创 2023-03-03 22:13:13 · 910 阅读 · 1 评论 -
Java获取系统变量和自定义参数
Java获取系统变量和自定义参数原创 2023-03-01 21:55:56 · 1128 阅读 · 0 评论 -
Java实现邮件发送
Java实现邮件发送原创 2023-02-07 20:26:46 · 540 阅读 · 0 评论 -
在Java中什么时候会发生类初始化
在Java中什么时候会发生类初始化原创 2023-02-07 20:26:08 · 502 阅读 · 0 评论 -
Java代码注释TODO、FIXME的意义和使用场景
Java代码注释TODO、FIXME的意义和使用场景原创 2022-10-20 11:43:06 · 315 阅读 · 0 评论 -
List<T>集合转Map<String, List<T>>
List集合转Map原创 2022-10-20 10:06:48 · 878 阅读 · 0 评论 -
怎么确保一个集合不能被修改?
怎么确保一个集合不能被修改?原创 2022-10-19 07:18:39 · 212 阅读 · 0 评论 -
MultipartFile转File
MultipartFile转File原创 2022-10-13 16:55:47 · 1076 阅读 · 0 评论 -
产生死锁的必要条件
产生死锁的必要条件原创 2022-10-11 13:15:09 · 701 阅读 · 0 评论 -
递归读取文件夹下的所有文件
递归读取文件夹下的所有文件原创 2022-09-22 16:06:02 · 490 阅读 · 0 评论 -
值传递和引用传递有什么区别
值传递和引用传递有什么区别原创 2022-09-20 19:54:19 · 260 阅读 · 0 评论 -
对象作参数传递后改变对象的属性,返回变化后的结果,是值传递?还是引用传递?
对象作参数传递后改变对象的属性,返回变化后的结果,是值传递?还是引用传递?原创 2022-09-20 19:49:29 · 326 阅读 · 0 评论 -
iterator和spliterator区别
iterator和spliterator区别原创 2022-09-02 14:52:22 · 405 阅读 · 0 评论 -
JDK自带函数比较大小
JDK自带函数比较大小原创 2022-09-02 14:52:05 · 159 阅读 · 0 评论 -
Java获取系统环境变量
获取系统信息原创 2022-09-02 14:51:46 · 303 阅读 · 0 评论 -
计算分多少页
计算分多少页原创 2022-09-01 10:00:00 · 87 阅读 · 0 评论 -
【多线程】计算每个线程要处理的数据量
【多线程】计算每个线程要处理的数据量原创 2022-09-01 09:45:00 · 348 阅读 · 0 评论 -
JDK 自带的调优、监控的工具
JDK 自带的调优、监控的工具原创 2022-08-31 16:19:14 · 726 阅读 · 0 评论 -
Java 循环导致UUID重复
Java 循环导致UUID重复转载 2022-08-29 09:38:56 · 4526 阅读 · 2 评论 -
成员变量与局部变量区别
成员变量与局部变量区别原创 2022-08-04 15:19:55 · 107 阅读 · 0 评论 -
Jdk8 时间和日期API介绍
Java8 日期和时间API中提供了3个时间类,分别是:LocalDate、LocalTime、LocalDateTime,绝大多数操作都是围绕这几个对象来进行的。原创 2022-08-03 15:10:47 · 298 阅读 · 0 评论