Java
文章平均质量分 61
ali48
望诸君不吝赐教!!!
展开
-
Java 四种引用类型
最初的 Java 引用 在 JDK 1.2 以前,Java 中的引用的定义很传统︰如果 reference 类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。 这种定义很纯粹,但是太过狭隘,一个对象在这种定义下只有被引用或者没有被引用两种状态,对于如何描述一些 “食之无味,弃之可惜” 的对象就显得无能为力。 我们希望能描述这样一类对象:当内存空间还足够时,则能保留在内存之中;如果内存空间在进行垃圾收集后还是非常紧张,则可以抛弃这些对象。很多系统的缓存功能都符合这样原创 2022-02-13 17:48:52 · 526 阅读 · 0 评论 -
Java 为什么不支持泛型数组?
问题 首先对比一下以下两段代码,都是声明两个数组,其中一个使用泛型,一个不使用泛型。使用泛型的一个编译失败,由此可知,Java 不支持泛型数组。List<Integer>[] list = new LinkedList<Integer>[10];// 无法通过编译List[] list = new LinkedList[10];原因 Java 泛型通过类型擦除实现,编译时类型参数就会被擦掉。例如:声明一个 List<String>,一个 List<原创 2022-01-26 01:00:36 · 1402 阅读 · 2 评论 -
使用 HashMap 存一万条数据,构造时传 10000 还会触发扩容吗?
问题 向 HashMap 中存 10000 条数据,初始化时,构造方法传值 10000,会触发扩容吗?Map<String,String> map = new HashMap<>(10000);分析乍一看 肯定会触发扩容呀,因为 HashMap 中有个负载因子默认为 0.75,就是说存储的数量超过容量的 75% 就会触发扩容,put 到后 25% 的数据时,肯定就会触发扩容。但事实真是这样吗?源码中有我们想知道的一切,真相只有一个。分析源码HashMap 的初始化原创 2022-01-25 22:56:41 · 1401 阅读 · 1 评论 -
浅析 Comparable 和 Comparator
相同点都是用来实现集合中元素的比较从而进行排序。compare(T o1, T o2) 和 o1.compareTo(o2) 类似,定义排序规则后返回正数,零和负数分别代表大于,等于和小于。一个类要实现排序功能既可以通过内部实现 Comparable 接口也可以通过外部实现 Comparator 接口。不同点接口定义位置不同:java.lang.Comparablejava.util.Comparator。接口中定义方法不同:Comparable 中定义 public int原创 2022-01-25 01:36:23 · 481 阅读 · 0 评论 -
Java fail-fast 机制
简介 fail-fast 机制,即快速失败机制,是 Java 集合(Collection)中的一种错误检测机制,检测在迭代期间集合被修改的情况。fail-fast 机制并不保证在不同步的修改下一定会抛出异常,它只是尽最大努力去抛出,所以这种机制一般仅用于检测 bug。示例 在集合中,当直接使用 Iterator 迭代(而不是通过 for-each 循环间接使用),对正在被迭代的集合进行结构上的改变(即对该集合使用 add、remove 或 clear 等方法),那么迭代器就不再合法,发生 fail原创 2022-01-23 01:51:12 · 463 阅读 · 0 评论 -
Java 协变数组类型
问题 假设现在有 Person 类和 Employee 类,假设 Employee IS-A Person,那么,这是不是意味着数组 Employee[ ] IS-A Person[ ] 呢?换句话说,如果一个例程接受 Person[ ] 作为参数,我们能不能把 Employee[ ] 作为作为参数来传递呢?思考 乍一看,似乎 Employee[ ] 就应该和 Person[ ] 类型兼容。举个例子,假设除了 Employee 外,还有 Student IS-A Person,并假设 Employ原创 2022-01-23 00:02:23 · 532 阅读 · 0 评论 -
UUID 工具类
UUID UUID 是通用唯一识别码(Universally Unique Identifier)的缩写。UUID 让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。UUID 的组成1~8位采用系统时间,在系统时间上精确到毫秒级保证时间上的惟一性;9~16位采用底层的IP地址,在服务器集群中的惟一性;17~24位采用当前对象的HashCode值,在一个内部对象上的惟一性;25~32位采用调用方法的一个随机数,在一个对象内的毫秒级的惟一性。UUID原创 2022-01-14 00:52:03 · 3248 阅读 · 0 评论 -
快速上手短信服务 —— 榛子云短信接口
前言 大家第一次使用短信服务应该都是用于学习,而阿里云、腾讯云…等大厂的云服务审核比较严格,对于学习者大概率无法通过,于是在此提供一个无需审核即可使用的短信服务接口用于学习 —— 榛子云短信服务。使用步骤1.注册账号2.创建短信模板注意:创建短信模板是人工审核,不会写可参考腾讯云、阿里云短信模板,由于是小公司,审核较慢,建议尽早创建。创建完成后会生成一个模板 ID(templateId) 这就是本模板的标识,通过 templateId 使用该模板发送短信。3.查看 AppId 和 App原创 2021-12-16 21:05:00 · 581 阅读 · 0 评论 -
封装 JDBC 工具类
JDBC 封装 使用 JDBC 连接 MySQL 数据库,我们每次操作都要写一堆连接数据库的信息,操作完还要释放一堆资源,做了很多重复的工作,于是我们通常把数据库连接封装成工具类。JdbcUtils 类import java.io.FileInputStream;import java.io.IOException;import java.util.Properties;import java.sql.*;/** * @author Acx7 */public class JdbcU原创 2021-12-10 12:27:53 · 268 阅读 · 0 评论 -
eclipse 和 IDEA 中导入外部 jar 包
eclipse 中导入外部 jar 包1.项目下新建 lib 目录2.将要导入的 jar 包复制到 lib 目录下3.配置 jar 包路径4.导入成功IDEA 中导入外部 jar 包1.项目下新建 lib 目录2.将要导入的 jar 包复制到 lib 目录下3.配置 jar 包路径,右键选择【Add as library…】4.导入成功...原创 2021-12-10 09:29:01 · 932 阅读 · 1 评论 -
Java URLEncoder 和 URLDecoder 对中文进行编码和解码
URLEncoder URLEncoder 类包含一个 encode(String s, String enc) 静态方法,它使用特定的编码方案 enc 将字符串 s 转换为 application/x-www-form-urlencoded 格式。URLDecoder URLDecoder 类包含一个 decode(String s,String enc) 静态方法,它使用特定的编码方案 enc 将字符串 s 转换为 applicationx-www-form-urlencoded 格式。示例原创 2021-12-07 16:32:52 · 902 阅读 · 0 评论 -
修改 IDEA 中 @author 默认值
1.打开 Help -> Edit Custom VM Options2.添加一行配置-Duser.name=AuthorName3.重启 IDEA 后配置成功原创 2021-11-30 17:08:50 · 6706 阅读 · 0 评论 -
一次由 Scanner(System.in) 引起的 TLE
莫名其妙 TLE 继昨天一次由 System.out.println() 引起的 MLE&TLE后,今天随机到一道快速选择的题(P1923),又遇到相似的问题,写完快速排序后修改几行代码就得到快速选择的代码,本以为轻松解决问题,然后又莫名其妙的 TLE。原始代码:public static void main(String[] args) throws IOException { Scanner in = new Scanner(System.in);// 标准输入 int n = in原创 2021-11-21 08:15:00 · 401 阅读 · 0 评论 -
一次由 System.out.println() 引起的 MLE&TLE
莫名其妙 MLE 笔者并非 ACM 选手,但是由于最近备考 CCF 认证需要练练手,笔者是忠实的 Java 选手,于是就打算使用 Java 进行考试。随机到一道题 P5461 赦免战俘,看题第一感觉就是递归处理,不出意外的成功写出了递归解法,然后高高兴兴的就在 OJ 上提交,然后就是莫名其妙的 MLE。原始代码:// 递归函数public static void f(int[][] a, int x1, int x2, int y1, int y2) { if (x2-x1==1 &&a原创 2021-11-20 16:44:58 · 941 阅读 · 0 评论 -
Linux 下 rpm 安装 JDK8 原来如此简单
1.从官网下载 JDK8 的 rpm 安装包https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html2.将 JDK8 使用 Xftp 上传到服务器合适的安装目录安装软件不要在 /home 路径下,这样很容易涉及到不同用户的访问权限,这样对程序的维护相当不利,这里将把安装包保存到 /opt 目录。3.安装JDK检查当前系统是否存在 Java 环境java -version #查看 JDK原创 2021-11-08 16:59:36 · 6251 阅读 · 0 评论 -
JVM、JRE、JDK 原来是这种关系
JVM、JRE、JDKJVM —— Java Virtual Machine(Java 虚拟机)JRE —— Java Runtime Environment(Java 运行环境)JDK —— Java Development Kit(Java 开发工具包)三者关系图三者区别JVMJREJDK保证 Java 跨平台运行 Java 程序的最小环境开发 Java 程序的最小环境总结 使用 JDK 开发 Java 程序,交给 JRE 运行,由 JVM 来保证跨原创 2021-11-01 16:21:46 · 170 阅读 · 0 评论 -
无法使用 javadoc 等命令?
安装 JDK 谈到 Java 就离不开 JRE(Java Runtime Environment),JDK(Java Development Kit) 中包含了 JRE 和 JVM(Java Virtual Machine),所以我们一般直接安装 JDK,安装 JDK 首先肯定是去Oracle官网下载适合自己的开发版本,然后将 JDK 安装到自定义位置。查看 JDK 版本java -version /*查看本机JDK版本*/eg:Java 常用命令/*一些常用的java命令*/jav原创 2021-10-22 17:08:24 · 2061 阅读 · 1 评论 -
你还在使用 StringBuffer ?
介绍 Java中常用字符串处理类包括 String、StringBuffer 和 StringBuilder ,当对字符串进行修改的时候,使用 StringBuffer 和 StringBuilder 一般比使用 String 效率更高。因为 StringBuffer 的内部实现方式和 String 不同,StringBuffer 在进行字符串处理时,不生成新的对象,在速度和内存使用上都要优于 String。String String 是被 final 关键字修饰的,它是不可变的,就算调用 Str原创 2021-10-12 00:54:16 · 258 阅读 · 0 评论