avatar
文章
360
标签
49
分类
10
首页
时间轴
分类
关于
Logo只有那年胜过年年
搜索
首页
时间轴
分类
关于

只有那年胜过年年

一张图搞清楚Java异常机制
发表于2025-10-14|后端
下面是Java异常类的组织结构,红色区域的异常类表示是程序需要显示捕捉或者抛出的。 ThrowableThrowable是Java异常的顶级类,所有的异常都继承于这个类。 Error,Exception是异常类的两个大分类。 ErrorError是非程序异常,即程序不能捕获的异常,一般是编译或者系统性的错误,如OutOfMemorry内存溢出异常等。 ExceptionException是程序异常类,由程序内部产生。Exception又分为运行时异常、非运行时异常。 运行时异常运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过,运行时异常可处理或者不处理。运行时异常一般常出来定义系统的自定义异常,业务根据自定义异常做出不同的处理。 常见的运行时异常如NullPointException、ArrayIndexOutOfBoundsException等。 非运行时异常非运行时异常是程序必须进行处理的异常,捕获或者抛出,如果不处理程序就不能编译通过。如常见的IOExc...
switch多值匹配骚操作,带你涨姿势!
发表于2025-10-14|后端
我们都知道 switch 用来走流程分支,大多情况下用来匹配单个值,如下面的例子所示: /** * @from * @author 栈长 */ private static void test(int value) { switch (value) { case 1: System.out.println("1"); break; case 2: System.out.println("1"); break; case 3: System.out.println("1"); break; case 4: System.out.println("1"); break; case 5...
你真的搞懂 transient 关键字了吗?
发表于2025-10-14|后端
先解释下什么是序列化我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。 Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制数据保存到磁盘或者传输网络,磁盘或者网络接收者可以在对象的属类的模板上来反序列化类的对象,达到对象持久化的目的。 更多序列化请参考:《关于Java序列化你应该知道的一切》这篇文章。 什么是 transient?简单来说就是,被 transient 修饰的变量不能被序列化。 具体来看下面的示例1 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; /** * @author */ public class TransientTest { public static voi...
你真的搞懂 transient 关键字了吗?
发表于2025-10-14|后端
先解释下什么是序列化我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。 Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制数据保存到磁盘或者传输网络,磁盘或者网络接收者可以在对象的属类的模板上来反序列化类的对象,达到对象持久化的目的。 更多序列化请参考:《关于Java序列化你应该知道的一切》这篇文章。 什么是 transient?简单来说就是,被 transient 修饰的变量不能被序列化。 具体来看下面的示例1 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; /** * @author */ public class TransientTest { public static voi...
关于Java序列化你应该知道的一切
发表于2025-10-14|后端
什么是序列化我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。 Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制数据保存到磁盘或者传输网络,磁盘或者网络接收者可以在对象的属类的模板上来反序列化类的对象,达到对象持久化的目的。 怎么序列化一个对象?要序列化一个对象,这个对象所在类就必须实现Java序列化的接口:java.io.Serializable。 1、类添加序列化接口import java.io.Serializable; public class User implements Serializable{ private static final long serialVersionUID = -8475669200846811112L; private String username; private String address; public String getUsername() { return...
关于 Java 序列化你不知道的 5 件事
发表于2025-10-14|后端
关于本系列大约一年前,一个负责管理应用程序所有用户设置的开发人员,决定将用户设置存储在一个 Hashtable中,然后将这个 Hashtable 序列化到磁盘,以便持久化。当用户更改设置时,便重新将 Hashtable 写到磁盘。 这是一个优雅的、开放式的设置系统,但是,当团队决定从 Hashtable 迁移到 Java Collections 库中的HashMap 时,这个系统便面临崩溃。 Hashtable 和 HashMap 在磁盘上的格式是不相同、不兼容的。除非对每个持久化的用户设置运行某种类型的数据转换实用程序(极其庞大的任务),否则以后似乎只能一直用Hashtable 作为应用程序的存储格式。 团队感到陷入僵局,但这只是因为他们不知道关于 Java 序列化的一个重要事实:Java 序列化允许随着时间的推移而改变类型。当我向他们展示如何自动进行序列化替换后,他们终于按计划完成了向 HashMap 的转变。 本文是本系列的第一篇文章,这个系列专门揭示关于 Java 平台的一些有用的小知识 — 这些小知识不易理解,但对于解决 Java 编程挑战迟早有用。 将 Java 对象...
坑爹的 Java 可变参数,把我整得够惨。
发表于2025-10-14|后端
什么是可变参数? 就是方法参数用 Object... args 三个点形式,一个参数可以接收多个参数。 实际的代码就不帖了,来看这个示例吧: 示例1 public static void main(String[] args) { test("name=%s&memo=%s", "Java技术", "666"); } private static void test(String text, Object... params) { String result = String.format(text, params); System.out.println(result); } 大家猜结果是什么?结果如我们想象: name=Java技术&memo=666 示例2 public static void main(String[] args) { test("na...
字符串拼接 + 和 concat 的区别
发表于2025-10-14|后端
+和concat都可以用来拼接字符串,但在使用上有什么区别呢,先来看看这个例子。 public static void main(String[] args) { // example1 String str1 = "s1"; System.out.println(str1 + 100);//s1100 System.out.println(100 + str1);//100s1 String str2 = "s2"; str2 = str2.concat("a").concat("bc"); System.out.println(str2);//s2abc // example2 String str3 = "s3"; System.out.println(str3 + null);//s...
常见的 3 种 Class 级别的错误
发表于2025-10-14|后端
ClassNotFoundException很明显,这个错误是找不到类异常,即在当前classpath路径下找不到这个类。 ClassNotFoundException继承了Exception,是必须捕获的异常,所以这个异常一般发生在显示加载类的时候,如下面两种方式显示来加载类并要捕获异常。 public static void main(String[] args) { try { Class.forName("com.User"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { Test.class.getClassLoader().loadClass("com.User"); } catch (ClassNotFoundException e) { e.printSt...
通用唯一标识码 UUID 的介绍及使用。
发表于2025-10-14|后端
什么是UUID?UUID全称:Universally Unique Identifier,即通用唯一识别码。 UUID是由一组32位数的16进制数字所构成,是故UUID理论上的总数为16^32 = 2^128,约等于3.4 x 10^38。也就是说若每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完。 UUID的标准型式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的32个字符,如:550e8400-e29b-41d4-a716-446655440000。 UUID的作用UUID的是让分布式系统中的所有元素都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要的应用,则有Linux ext2/ext3文件系统、LUKS加密分区、GNOME、KDE、Mac OS X等等。 UUID的组成UUID是指在一台机器上生成的数字,它保证对在同一时空...
1…33343536
avatar
2025
文章
360
标签
49
分类
10
公告
🌸 春去秋来,花开花落 📚 桌上的日历又薄了几页 💭 记忆中的昨天还那么清晰
最新文章
掌握 Spring 框架这 10 个扩展点,开发效率直接翻倍2025-11-10
Minikube安装教程2025-11-07
Deepseek 本地部署各个版本超级详细教学,网页版、软件版2025-11-04
Slow HTTP POST 慢速攻击2025-10-30
JDK 紧急漏洞,XMLDecoder反序列化攻击2025-10-30
分类
  • 其他3
  • 区块链4
  • 后端225
  • 安全漏洞3
  • 工具30
  • 性能4
  • 教程1
  • 数据库21
  • 架构15
  • 程序人生54
标签
文章LinuxJVM分布式技术其他区块链基础安全漏洞多线程性能优化新特性架构算法程序人生行业动态规范资料集合进阶面试Elastic JobdockerJWTDubboMyBatisNettyShiroSpringSpring MVCSpring CloudTomcatSpring BootZookeeper日志开源综合技术消息队列缓存连接池Eclipse
归档
  • 2025年11月 3
  • 2025年10月 355
  • 2025年09月 1
  • 2024年12月 1
网站信息
文章数目 :
360
本站访客数 :
本站总浏览量 :
最后更新时间 :
访客地图
© 2025 By 2025
搜索
数据加载中