摘要: Jdbc的事务隔离级别 数据库事务的基本特性 A 原子性 (atomicity) 事务中的各项操作被看成一个逻辑单元,要么全做,要么全不做,任何一项操作的失败都会导致整个事务的失败。 C 一致性 (consistency) 保证了当事务结束后,系统状态是一致的。 I 隔离性 (isolation) 使得并发执行的事务,彼此 阅读全文
posted @ 2020-08-28 23:31 极客子羽 阅读(833) 评论(0) 推荐(0)
摘要: 本文介绍如何使用 Maven 来打包一个 javaagent.jar,我们选用的插件是 maven-jar-plugin,我们的方式有两种,一种是在 manifestFile 标签指定 MANIFEST.MF 文件路径,另一种是在 manifestEntries 标签设置属性键值对。如果是打包可运行 jar 包,除了前两种方法外,,第三种是使用 manifest 标签。 阅读全文
posted @ 2020-08-27 22:01 极客子羽 阅读(4349) 评论(0) 推荐(0)
摘要: 本文围绕着Bean的创建过程进行了核心代码的梳理。这样大家也能更容易对 创建单例过程 的过程 有个初步的印象。并且在最后还解答了为什么BeanPostProcessor 接口对循环依赖不起作用?为什么 postProcessAfterInitialization 对循环依赖bean对象的改变不生效? 阅读全文
posted @ 2020-08-26 23:21 极客子羽 阅读(902) 评论(0) 推荐(0)
摘要: 通过循坏依赖这个问题,拓展到探究Spring Bean 的简化版加载过程。本文没有一上来就贴出完整的代码,而是一步步探究,根据错误提示来引导出正确的代码片段,用错误来告诉读者 API 调用代码为什么要这样写?然后在我们了解到了Spring Bean的加载过程之后,解答 Spring 是如何解决循环依赖这个问题。 阅读全文
posted @ 2020-08-24 09:25 极客子羽 阅读(1169) 评论(0) 推荐(1)
摘要: 没写过死锁,怎么能算学过网络编程呢?我在思考如何分离 接收连接的Acceptor线程 和 处理网络I/O的Selector-IO线程时,终于写出了一个死锁的例子。本文附上了线程 dump 记录和死锁发生现场的分析,希望能够帮助大家对NIO网络编程中存在的死锁情况形成初步的印象。 阅读全文
posted @ 2020-08-21 22:39 极客子羽 阅读(1351) 评论(1) 推荐(0)
摘要: Reactor 模式,主要分为单 Reactor 单线程模式,单 Reactor 多线程模式,多 Reactor 多线程模式。在 Netty 的官方 Demo 中,推荐使用多 Reactor 多线程模式。 阅读全文
posted @ 2020-08-18 20:14 极客子羽 阅读(1071) 评论(0) 推荐(0)
摘要: 继上一章 Netty之ByteBuf 之后,我们继续来谈 ByteBuf 的 API 清理操作 discardReadBytes 操作 因为 TCP 底层可能粘包,几百个整包消息被 TCP 粘包后作为一个整包发送。这样,通过 discardReadBytes 操作可以重用之前已经解码过的缓冲区,从而 阅读全文
posted @ 2020-08-15 09:38 极客子羽 阅读(228) 评论(0) 推荐(0)
摘要: ByteBuf 功能说明 上一篇文章 NIO入门之缓冲区Buffer 已经介绍了 Java 1.4 引入的 java.nio.Buffer。 从功能角度而言,ByteBuffer 完全可以满足 NIO 编程的需要,但是由于 NIO 编程的复杂性,ByteBuffer 也有其局限性,它的主要缺点如下: 阅读全文
posted @ 2020-08-15 08:26 极客子羽 阅读(2824) 评论(0) 推荐(0)
摘要: 本文使用 java.nio.channels 中的类实现了一个简陋的 Http 服务器。实现了网络 IO 逻辑与业务逻辑分离,分别运行在 IO 线程和 业务线程池中。 HTTP 是基于 TCP 协议之上的半双工通信协议,客户端向服务端发起请求,服务端处理完成后,给出响应。 HTTP 报文主要由三部分构成:起始行,首部,主体。 其中起始行是必须的,首部和主体都是非必须的。起始行和首部都采用文本格式且都是结构化的。主体部分既可以是二进制数据也可以是文本格式的数据。 阅读全文
posted @ 2020-08-12 09:36 极客子羽 阅读(3090) 评论(0) 推荐(0)
摘要: java 1.4 引入 java.nio 包,使用这些 API 可以实现一个 BIO 模型,也可以实现 NIO 模型。 BIO模型在客户端与服务端建立连接之后,服务端就会立即分配一个线程,但是服务端又需要阻塞线程来等待读取客户端发送数据。 这样就需要不断创建新的线程应对不断增加的服务端请求,而创建线程是需要消耗服务器性能的。那么可不可以等客户端数据到达后再分配线程进行处理呢? Selector 以及基于事件处理的 NIO 模型“应运而生”。 阅读全文
posted @ 2020-08-09 19:36 极客子羽 阅读(386) 评论(0) 推荐(0)