摘要: 一、继承Thread类 定义一个类继承线程类Thread 重写run()方法 创建线程对象 调用线程对象的start()方法创建线程 Thread类的常用API setName(String name):给线程取名字 getName():获取线程的名字 public static Thread cu 阅读全文
posted @ 2024-07-04 18:09 凡人编程传(Java) 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 实际开发中,经常会遇到单位转换、保留小数、计算百分比的场景,下面是我自己写的并实际使用的工具类,希望能帮到大家或者给大家参考 该工具类包括: 单位转换成万或亿 保留两位小数 计算百分比,保留两位小数 计算百分比,保留两位小数,若有效数字为0,则往后取到第一个不为零的 计算百分比,保留整数 publi 阅读全文
posted @ 2024-07-04 18:07 凡人编程传(Java) 阅读(45) 评论(0) 推荐(0) 编辑
摘要: Java其实是伪泛型。泛型只在编译阶段存在,编译后的字节码是没有泛型的,即擦除。擦除是将泛型类型替换成它的父类,然后使用的时候进行强制类型转换,因为在编译阶段已经确保了数据类型的一致性,所以强转比较安全。 泛型擦除主要有两个目的: 向后兼容:Java在1.5版本中引入了泛型,为了确保与之前Java版 阅读全文
posted @ 2024-06-25 18:31 凡人编程传(Java) 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 总结来说,throw是用来抛出一个具体的异常实例,而throws是用来声明方法可能会抛出哪些类型的异常,是对调用者的一种通知和要求。 1. throw 作用: throw关键字用于在方法体内实际抛出一个异常实例。当程序运行到throw语句时,指定的异常会被创建并抛出,立即终止当前方法的执行,并将控制 阅读全文
posted @ 2024-06-21 17:15 凡人编程传(Java) 阅读(247) 评论(0) 推荐(0) 编辑
摘要: Java动态代理是一种在运行时创建代理对象的技术,它允许开发者在不修改目标类代码的情况下,通过代理类对目标类的实例方法进行增强或拦截。动态代理的核心价值在于能够在程序运行阶段动态地生成一个实现了预定义接口的新类,这个新类就是所谓的“代理类”。 在Java中,有两种主要的实现方式: JDK动态代理: 阅读全文
posted @ 2024-06-21 15:20 凡人编程传(Java) 阅读(119) 评论(0) 推荐(0) 编辑
摘要: Selenium Selenium是一个用于Web应用程序自动化测试的开源工具套件。它主要用于以下目的: 浏览器自动化:Selenium能够模拟真实用户在不同浏览器(如Chrome、Firefox、IE/Edge等)中的交互行为,通过编程方式控制浏览器执行一系列操作,例如点击按钮、填写表单、导航页面 阅读全文
posted @ 2024-06-20 09:51 凡人编程传(Java) 阅读(738) 评论(0) 推荐(0) 编辑
摘要: 浅拷贝 首先创建两个类,方便理解浅拷贝 @Data class Student implements Cloneable{ //年龄和名字是基本属性 private int age; private String name; //书包是引用属性 private Bag bag; public Stu 阅读全文
posted @ 2024-06-17 09:49 凡人编程传(Java) 阅读(197) 评论(2) 推荐(1) 编辑
摘要: 网络上解释的很全面但是很枯涩,也有些难懂,其实就是为了保证当该对象作为key时哈希表的检索效率。如HashMap的get方法是分两步获取的 第一步通过key的哈希值找到对应的哈希桶 第二步通过equals方法来判断是否为同一个key(因为可能出现哈希冲突) 假设一个Student类有三个属性:学号、 阅读全文
posted @ 2024-06-14 20:04 凡人编程传(Java) 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 先说结论,真正的饱和顺序是corePoolSize -> workQueue -> maximumPoolSize。 我们都知道,线程池有以下参数 ThreadPoolExecutor(int corePoolSize, //核心线程数 int maximumPoolSize, // long ke 阅读全文
posted @ 2024-06-13 15:06 凡人编程传(Java) 阅读(208) 评论(0) 推荐(1) 编辑
摘要: 先说结论:Future集合并不是等线程池执行完才开始遍历,而是线程池内的线程执行完一条Future集合就立即遍历一条 在使用线程池的业务场景下,我们经常需要获取线程执行的返回值,此时我们需要Callable对象当做线程池参数并用List<Future>接收,然后遍历List<Future>获取我们想 阅读全文
posted @ 2024-06-13 15:05 凡人编程传(Java) 阅读(49) 评论(0) 推荐(0) 编辑