1、什么是序列化与反序列化?
序列化:指把堆内存中的 Java 对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络节点(在网络上传输)。这个过程称为序列化。通俗来说就是将数据结构或对象转换成二进制串的过程
反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程。也就是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程
1、什么是序列化与反序列化?
序列化:指把堆内存中的 Java 对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络节点(在网络上传输)。这个过程称为序列化。通俗来说就是将数据结构或对象转换成二进制串的过程
反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程。也就是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程
现在N多RPC框架应该选用的都是Netty,基于多种原因吧:
1)它很容易上手,它封装了网络传输底层的实现,但也有Spring的开闭原则,可以根据用户的参数配置去定制属于自己的网络传输模型
2)它优化了线程模型,且基于事件驱动,基于NIO,提高IO效率
3)内存优化,直接内存的使用/池化的技术
4)第四点,我也是认为很重要的一点,也是我们写这个RPC框架的核心点,就是有很多参考,基于Netty的成熟的生产级别的代码可以参考(本RPC框架的网络模块netty应用是融合Jupiter和RocketMQ的),说白了,有点抄袭,但也是做了部分的修改
go doc 命令可以打印附于Go语言程序 实体 上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的。
插播:所谓 Go语言的 程序实体,是指变量、常量、函数、结构体以及接口。而程序实体的 标识符 即是代表它们的名称。标识符又分 非限定标识符 和 限定标识符。其中,限定标识符 一般用于表示某个代码包中的程序实体或者某个结构体类型中的方法或字段。例如,标准库代码包 io 中的名为 EOF 的变量用限定标识符表示即 io.EOF。又例如,如果我有一个 sync.WaitGroup 类型的变量 wg 并且想调用它的 Add 方法,那么可以这样写 wg.Add()。其中,wg.Add 就是一个限定标识符,而后面的()则代表了调用操作。
1、新建一个英文名的文件夹。
2、打开文本编辑,文本编辑 -> 预置 -> 新建文稿 -> 格式,选上纯文本,关闭预置。
3、新建了一个txt文件,在里面输入要汉化的英文名(刚才新建的文件夹名)和中文名,格式是左边是 "英文名" = "中文名"; 。例如:"apple" = "苹果"; 。
电脑配置:
ThinkPad T470P-1YCD(CPU:i7-7700HQ 2.8G,内存:16G,硬盘:128G固态 + 1T机械,分辨率:2560 x 1440)
安装准备:
1、金士顿U盘一支
2、Windows 7 原装系统,下载地址
3、老毛桃 U盘启动盘制作工具,下载地址
4、驱动精灵万能网卡版,下载地址 (注意:一定要下载 万能网卡版,因为系统安装后没有网卡驱动,不能联网,,,安装了网卡驱动,方可联网了!!!)
仿照 Spring 的 IOC,因此代码命名和设计基本是仿照 spring 的。
将分为几步来编写简易 IOC,首先设计组件,再设计接口,然后关注实现。
我们还记得 Spring 中最重要的有哪些组件吗?BeanFactory
容器,BeanDefinition
Bean 的基本数据结构,当然还需要加载 Bean 的资源加载器
。大概最后最重要的就是这几个组件。容器用来存放初始化好的 Bean,BeanDefinition 就是 Bean 的基本数据结构,比如 Bean 的名称,Bean 的属性 PropertyValue
,Bean 的方法,是否延迟加载,依赖关系等。资源加载器就简单了,就是一个读取 XML 配置文件的类,读取每个标签并解析。
这个命令,我经常使用它 来发送其他没有使用 git 的人来检查或者集成所修改的。它会输出最近提交的修改内容到一个 zip 文件中。
git archive -o ../updated.zip HEAD $(git diff --name-only HEAD^)
找到文件 /api/uc.php
修改1:
function updateapps($get, $post) { ... }
修改为:
function updateapps($get, $post) { if ($post['UC_API']) { $post['UC_API'] = addslashes($post['UC_API']); } // ...... }
本来只是想写一写,学一学的,不过觉得还是应该跟大家一起分享一下一个完整的在我知识体系中相对健全的RPC框架
写这个RPC的时候,我是写过一个的RPC的,其实不能称之为写,算抄吧,看过别人写的RPC,也无脑的抄了一遍别人的代码,抄完之后,问了冯大神,感觉收获很多,比每天看书看帖收获多得多
Lua 的设计有一点很奇怪,在一个 block 中的变量,如果之前没有定义过,那么认为它是一个全局变量,而不是这个 block 的局部变量。这一点和别的语言不同。容易造成不小心覆盖了全局同名变量的错误。