- 博客(17)
- 收藏
- 关注
原创 序列化和反序列化的技术流程
如果对象没有实现`Serializable`接口,尝试序列化该对象时会抛出`java.io.NotSerializableException`异常。- **序列化(Serialization)**:将对象的状态转换成字节流的过程,方便存储(如写入文件)或传输(如网络传输)。注意:`password`字段被`transient`修饰,序列化时被忽略,反序列化后为`null`。1. **检查对象是否实现`Serializable`接口**,如果没有实现,抛出异常。
2025-06-23 10:27:19
903
原创 详细讲解Bundle savedInstanceState参数可以传入什么类型的入参,并详细举例
在Android开发中,`Bundle savedInstanceState` 是一个非常重要的参数,通常出现在Activity或Fragment的生命周期方法中,比如`onCreate(Bundle savedInstanceState)`。`Bundle` 是一个键值对集合,类似于一个Map,但它专门用于存储和传递数据。- 传入的对象如果是自定义类型,必须实现`Parcelable`或`Serializable`接口。- 基本类型数组,如 `int[]`, `byte[]`, `char[]` 等。
2025-06-23 10:15:46
209
原创 类和内部类加载过程
是外部类。是它的一个私有静态内部类。这个内部类中定义了一个静态变量instance,它是的唯一实例。程序启动,类被加载(但不加载内部类)。调用。JVM加载类。初始化静态变量instance,创建实例。返回该实例。后续调用直接返回已创建的实例。
2025-06-13 10:36:56
165
原创 Java 中的 ThreadLocal
ThreadLocal 是一个强大的工具,可以有效地解决多线程编程中的数据隔离问题,但也需要谨慎使用,以避免潜在的内存泄漏风险。通过合理的使用和管理,可以在高并发环境下提高程序的性能和稳定性。
2025-03-13 11:56:51
938
原创 java中的AQS
Override// 尝试获取锁@Override// 释放锁@OverrideAQS是一个强大的工具,提供了一个灵活的框架来实现各种同步器。通过理解AQS的工作原理和结构,可以更好地掌握Java的并发编程。AQS的设计使得开发者可以轻松地实现自定义的锁和其他同步机制,同时也为Java的并发包中的许多类(如等)提供了基础。掌握AQS的原理和实现细节,可以帮助你在多线程编程中更好地管理资源,提高程序的性能和稳定性。
2025-03-13 11:41:43
621
原创 Java中什么情况用到可重入锁,分析并给出案例
可重入锁的主要优势在于它允许同一线程多次获取同一把锁,适用于递归调用和多个同步方法的场景。通过使用可重入锁,可以有效地管理线程之间的资源竞争,提高程序的稳定性和可维护性。
2025-03-13 11:17:25
393
原创 obsClient.deleteObjects(deleteObjectsRequest);
obsClient.deleteObjects(deleteObjectsRequest);
2024-12-09 11:52:46
179
原创 java全套电子版书籍
https://github.com/javadevbooks/books
2024-11-12 15:34:58
579
原创 SseEmitter
3. **错误处理**:如果发生异常(如 `IOException` 或 `InterruptedException`),调用 `SseEmitter.completeWithError()` 关闭连接并报告错误。- **`Request.Builder()`**:通过 `Request` 类构建 HTTP 请求,设置 `Accept` 头为 `text/event-stream`。1. **`send(Object object)`**:将一个事件发送给客户端。
2024-09-20 08:54:33
3327
3
原创 阻塞线程io和非阻塞线程nio
**使用场景** | 简单的 I/O 操作,低并发场景 | 高并发、大量 I/O 操作,如服务器开发 |Java 中的 I/O(输入输出)操作可以分为 **阻塞 I/O** 和 **非阻塞 I/O**,它们主要区别在于:是否在数据准备好之前,线程会被阻塞。但在高并发场景中,阻塞 I/O 会因为线程等待而导致资源浪费。| **线程行为** | 当 I/O 操作未完成时,线程会被阻塞 | 线程不会阻塞,可以继续执行其他任务 |
2024-09-19 09:07:21
1598
原创 多线程工作原理
Java 中的多线程工作原理是基于操作系统的线程模型,通过 Java 的 `java.lang.Thread` 和 `java.util.concurrent` 包来实现。- **上下文切换**:当操作系统在多个线程之间切换时,会保存当前线程的状态(如寄存器值、程序计数器等),然后加载下一个线程的状态。- **进程与线程**:进程是程序的运行实例,而线程是进程中的执行单元。- **`Atomic` 类**:提供原子操作,如 `AtomicInteger`,保证增减操作的原子性,避免锁的使用。
2024-09-18 21:16:26
1120
原创 `OkHttp` 和 `HttpClient`
属于 Apache 基金会开发的项目,功能强大,支持多种 HTTP 协议(如 HTTP/1.1 和 HTTP/2),主要用于企业级开发和复杂的 HTTP 交互。- 如果你需要一个轻量、简单、异步支持良好的 HTTP 客户端,尤其是在 Android 开发中,`OkHttp` 是一个非常好的选择。- 如果需要简单的 API、性能好、支持异步请求的 HTTP 客户端,`OkHttp` 是一个很好的选择。- **OkHttp**:由于设计简洁、轻量,非常适合高并发场景,特别是移动端应用的 HTTP 请求。
2024-09-18 20:57:05
479
原创 连接超时、请求超时、读取超时
读取超时是指客户端从服务器读取数据的最大等待时间。如果在设定时间内没有从服务器接收到数据,则会抛出 `SocketTimeoutException`。- 连接超时是指客户端尝试与服务器建立连接的最大时间。- 一般指整个请求从发起到接收响应的时间限制(包括连接、写入数据和读取响应的总时间)。- 在 `HttpURLConnection` 中没有单独的请求超时,但你可以通过设置连接和读取超时来模拟总请求的超时行为。在 Java 中,连接超时、请求超时和读取超时的设置是用于网络请求的超时处理机制。
2024-09-18 20:52:16
1399
原创 国内各代理
export HTTP_PROXY=http://proxysysx.hk.heds.hihonor.com:8080export HTTPS_PROXY=http://proxysysx.hk.heds.hihonor.com:8080export http_proxy=http://proxysysx.hk.heds.hihonor.com:8080export https_proxy=http://proxysysx.hk.heds.hihonor.com:8080
2024-01-16 11:44:15
107
原创 服务的流控和熔断-sentinel
api使用,参考文档:https://cloud.tencent.com/developer/article/1522192。阿里巴巴官网文档,https://gitee.com/rarshion/Sentinel/wikis/Home。熔断,限流看此文档:https://juejin.cn/post/7069423834427818020。谈到服务的流控和熔断,很容易就想到sentinel。
2023-11-03 17:11:49
49
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人