很多编程语言都有字符串之间转换的机制,而 GO 语言则是通过模板来将一个对象的内容来作为参数传递从而实现字符串的转换。此方式不仅可以在重写 HTML 时插入对象值,也适用于其...
很多编程语言都有字符串之间转换的机制,而 GO 语言则是通过模板来将一个对象的内容来作为参数传递从而实现字符串的转换。此方式不仅可以在重写 HTML 时插入对象值,也适用于其...
简介 万维网是一个庞大的,拥有数以百万计用户的分布式系统。网站就是一个运行着 HTTP 服务器的 Web 主机。而 Web 客户端通常是浏览器用户,当然也还有许多其他的“用户...
简介 尽管互联网最初被设计为可以承受敌对代理攻击的系统,但它过去一直是在一个可信的实体和合作的环境中发展起来的。可惜现在已经时过境迁。垃圾邮件,拒绝服务攻击,网络钓鱼这些东西...
引言 以前用 EBCDIC 和 ASCII 编码,(别看只有两种编码),但事情从来没有简单过,恰恰相反变得越来越复杂了。但据推测,编码简化就像(黎明前)地平线上闪过了一道光,...
客户端和服务器的交互包括消息类型和消息数据,这就需要有适当的交互协议。本章着重讨论客户端和服务器交互相关的问题,并给出一个完整又简单的客户端服务器交互的例子。 介绍 客户端和...
客户端与服务之间通过数据交换来通信。因为数据可能是高度结构化的,所以在传输前必须进行序列化。这一章将研究序列化基础并介绍一些 Go API 提供的序列化技术。 简介 客户端与...
Introduction 多年的发展,使得IP和 TCP/UDP 协议基本上就等价于网络协议栈。例如, 蓝牙定义了物理层和协议层,但最重要的是 IP 协议栈,可以在许多蓝牙设...
分布式系统很复杂,它涉及到多台计算机的连接方式。我们编写的程序必须能在该系统中的每一台计算机上运行,它们必须都能协同操作来完成一项分布式任务。解决这种复杂性的一般方法,就是将...
new()和make()函数是Go语言中用于分配空间,初始化类型的内建函数。这两个函数的功能比较类似,很容易混淆。 new new(T) 为一个 T 类型新值分配空间并将此空...
在这里,我将解释如何将代码分成几个模块。在我的例子中,我将标题和有效负载部分分成单独的文件。 划分代码 我想为Header提供单独的文件,OP_REPLY消息的文件,OP_Q...
将header和payload分成两个不同的子树会很好,所以在这篇文章中我将解释我们如何做到这一点。 子树 我正在使用第三部分的解剖器。我只会查看OP_QUERY和OP_RE...
在第1部分和第2部分中,我们查看了MongoDB有线协议消息的消息头。这次是解析消息内容的时候了。但是,我们实际上不会解码MongoDB返回的文档,因为这不属于本教程的范围。...
在这篇文章中,我们将首先介绍Lua解剖器的基本调试。之后,我们将扩展解剖器以显示操作码的名称,而不仅仅是数字。 调试 当我在谈论调试时,我并没有真正考虑通常的调试方法——使用...
原文这篇文章将向你讲解如何用Lua语言简单地创建协议解剖器。当你使用Wireshark尚未拥有解剖器的自定义协议时,此功能非常有用。例如Wireshark长这样 Lua速成班...
参考 CMake入门实战cmake缓存清理 什么是CMake CMake允许开发者编写一种平台无关的CMakeList.txt文件来定制整个编译流程,然后再根据目标用户的平台...
Golang basics - writing unit tests 1. Go测试 Go有一个内建的测试指令go test以及testing包,联合给出一个最小但完整的测试...
https://juejin.im/post/5c403b98f265da612d1984c9 template包是数据驱动的文本输出模板,即在写好的模板中填充数据 模板 模...
常用方法 巧用宏定义 这种方式特别适合定义错误码 进一步改进,优化switch逻辑