摘要:
在使用微服务的过程中,RPC 是永远绕不开的点。之前并没有磕的很深,一直觉着 RPC 是一个黑魔法。比如我们常用的 Dubbo、SpringCloud 等框架,将微服务模块间的方法调用封装的像本地方法调用一样,方便又令人费解。 今天如愿以偿的仿照 Dubbo 自己手写了一个 rpc “框架”,虽然简 阅读全文
摘要:
前面的博客 基于 socket 手写一个 TCP 服务端及客户端 写过一个简单的 TCP 服务端客户端,没有对代码结构进行任何设计,仅仅是实现了相关功能,用于加深对 socket 编程的认识。 这次我们对整个代码结构进行一下优化,使其模块化,易扩展,成为一个简单意义上的“框架”。 对于 Socket 阅读全文
摘要:
通过 socket 实现一个 TCP 服务端与客户端,实现通过 TCP 协议进行消息收发。 关键在 socket 的使用的理解上。 socket 是对操作系统提供的协议栈的封装,底层调用的是操作系统提供的协议栈。 当我们调用 ServerSocket 的 accept 方法时,线程阻塞。以 TCP 阅读全文
摘要:
进行 Socket 编程时经常会碰到 TCP 的粘包与半包问题,很多时候我们选用 netty 等框架而不直接采用原生的 Socket 编程也是因为 netty 帮我们将该类传输过程中可能出现的问题屏蔽掉了,使我们可以抽出更多精力来关注功能的实现,而不是挣扎在处理这些底层问题上。但尽管如此,我们也必须 阅读全文
摘要:
动态代理 核心方法为 Proxy.newProxyInstance 方法,该方法需要传入 被代理类的类加载器、被代理类实现的接口 以及一个 InvocationHandler 的实现类实例。 方法会通过字节码技术为我们返回一个代理对象,代理对象会实现被代理对象的所有接口,并在这些接口声明方法前后织入 阅读全文
摘要:
代理模式 为其他对象提供一个代理以控制对某个对象的访问。代理类主要负责为委托了(真实对象)预处理消息、过滤消息、传递消息给委托类,代理类不现实具体服务,而是利用委托类来完成服务,并将执行结果封装处理。代理类本身不实现服务,而是通过调用被代理类中的方法来提供服务。 从设计模式上看,代理模式与适配器模式 阅读全文
摘要:
了解字节码文件可以让我们从更底层的视角理解 JAVA 的内部运作机制。程序说白了就是一堆逻辑和数据,字节码文件中便存储着可以支撑 JAVA 语言逻辑的数据。 .java 文件经过 javac 编译后会生成一份 .class 字节码文件。.class 文件是 java 跨平台的基础,JVM 对各种操作 阅读全文
摘要:
序列化与反序列化的使用场景: 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 在网络上传送对象的字节序列。 面向对象的一大特性便是封装,我们将模型的属性和方法封装到一个类中,非静态属性在对象实例化时被赋予具体的值。 可以这样理解,对象是 JAVA 层面用于描述一个实体的数据结构,与 XM 阅读全文
摘要:
适配器模式可以将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。 适配器模式是一种对象结构型模式,这里的接口不仅仅是java语言中的interface,更多是指一个类型所具有的方法特征集合,是一种逻辑上的抽象。 客户端需要一个target(目标) 阅读全文
摘要:
针对 bootstraptable 中 hiden 为 true 的列 。 隐藏列不会渲染为 DOM 元素,所以我们无法通过 DOM 元素获取。 我们需要通过 bootstraptable 数据源的数据对象获取,其中包含隐藏列的数据。 //获取当前行的 bootstrap 数据对象 getDataR 阅读全文