Understanding computer endianness

Preface

After a long time, now I decide to add a new post. This is my first post written in English. Maybe it is a challenge, but it is surely a good beginning. I believe that one step at a time can make a thousand miles. I am going to talk about the endianness in this post.

[Read More]
common 

C#服务端框架设计与实现

前言

        在完成构建Lua解释器Part4以后,我原计划是将业余时间投入到Lua虚拟机的研究之中。不过最近,我们项目希望服务端和客户端共享战斗逻辑,功能由客户端实现,借以降低开发联调的成本,而客户端主要使用C#语言,在确定客户端能够做到表现和逻辑分离以后,我们决定服务端也搭建C#战斗集群来运行战斗逻辑。

[Read More]

构建Lua解释器Part4:Table设计与实现

前言

        本篇我将对dummylua中Table的设计和实现进行介绍和说明。本文的目的旨在梳理清dummylua项目Table的数据结构和运作流程,该部分深度参考了lua-5.3.4的Table设计与实现,由于所有的细节是我自己根据理解重新实现,因此不会在所有的设计细节上和官方lua保持一致,但是遵循了基本的设计思路。
        Table是Lua语言中举足轻重的组成部分,掌握和理解它具有战略意义,这也是实现Lua虚拟机的基础所在,本文首先介绍dummylua项目Table的数据结构,然后在概念上介绍一些基本的操作流程,如创建、resize、查询、插入和迭代等操作。

[Read More]

构建Lua解释器Part3:String设计与实现

前言

        上一章节我介绍了dummylua项目的gc的设计原理和实现方式,该部分我基本是仿造了官方lua-5.3.4的做法。本章节,我将为大家带来dummylua项目TString的设计实现讲解。和以往任何一篇一样,本篇我也是基本遵循lua-5.3的设计思想,但由于实现是我凭理解自己手动实现,因此不会在所有的细节上和官方lua保持一致。
        任何一门语言都要支持字符串,lua也一样,本章将从lua string的数据结构开始阐述,然后深入其他细节进行阐述,并试图揭露这些设计的历史背景和原因,由于本人能力有限,如有不当之处想要指明,或是想和我一起讨论,欢迎加Q群与我讨论(QQ185017593),我是群主,欢迎大家的到来。

[Read More]

构建Lua解释器Part2:Garbage Collection基础架构

前言

        上一篇我已经设计和实现了Lua解释器最基础的基本数据结构,实现了纯C函数在栈中的调用流程,以及保护模式调用函数等内容,今天要介绍的则是Lua解释器的GC基础架构。Garbage Collection机制,可能是让人们听之不寒而栗的机制,都说GC很复杂,需要花费大量时间去消化和理解,那为什么要在本系列的第2篇就早早引入?做这个决定并非一时冲动之举,而是经过思考后而决定的。之前在阅读了云风大神翻译的《编程之魂》第7章[1],这篇关于对Lua设计者的访谈记录中,作者有这么说过:

[Read More]

构建Lua解释器Part1:虚拟机的基础--Lua基本数据结构、栈和基于栈的C函数调用的设计与实现

前言

        从本篇开始,我们正式进入到Lua解释器的开发阶段(这是一个遵循Lua5.3标准的项目)。本篇并不直接接入到设计和实现语法分析器和词法分析器的阶段,而是先设计和实现Lua虚拟机的基础数据结构(包括Lua最基本的数据结构,如基本数据类型,表示虚拟机状态的global_State和lua_State结构,在函数调用中扮演重要角色的CallInfo结构等)以及设计和实现基于栈的C函数调用流程。这些都是理解后面虚拟机运作的基础。由于这是一个仿制项目,为了和官方版本做区分,就称之为dummylua,后面要称呼本项目时,一律用dummylua来表示。

[Read More]

构建Lua解释器Part0:综述

项目简介

        lua是一门精妙简洁,而功能强大的语言,学习和掌握它的核心机制有着重要的意义。这是一个仿制lua解释器的项目(参照的版本是Lua5.3),我希望通过逐步实现lua解释器的各个部分,更加深刻地掌握lua的基本结构和运作原理。本项目将分为多个部分完成,并为每一个部分附上一篇博文为该部分的设计和实现进行解析。开发这个项目的目的,并不是做一个能用于生产环境的lua解释器,而是尝试追寻前辈的步伐,尽最大可能理解其设计lua语言的思路,理解其中的关键细节。这是一个探索原理的旅程,因此效率并不是本项目要考虑的关键因素。这里我遵循的是”FIRST make it run, THEN make it run fast”[1]的原则,先让它跑起来。整个系列暂时不包含GC部分,不过这些开发量也足以消耗我大量的时间和精力。

[Read More]

关于sizeof的一些思考

前言

今天,我所在的技术群(qq185017593),讨论了sizeof的问题,聊得不亦乐乎,然而一个群友贴的代码,我感觉有一些漏洞,于是梳理了一下思路和知识点,特此记录一下。

[Read More]
C 

网络安全初探

写在最前面

  网络安全是个很大的话题,它包括了网络加密、数据真实性认证、终端身份认证、防火墙等技术,而网络加密、数据真实性验证,终端身份认证,则是网络安全中的重要一环,学习和掌握它具有重要意义,通过学习网络安全的相关知识,有助于我们理解生活中一些关于网络安全方面的现象。这样也可以做到知其然,并且知其所以然。最近一段时间,我发现自己对这块的掌握并不牢靠,于是参阅了一些资料和论文,主要的参阅资料是《Computer Networking A Top-Down Approach》的第八章Secure In Computer Networks,也包含了多篇paper。本文主要阐述网络加密、数据验证、身份验证的一些基本知识,并不涉及网络安全的其他方面。由于本人水平有限,有不正确的地方,欢迎批评指正,最后原创不易,转载请注明出处。

[Read More]

数据链路层漫谈

前言

  数据链路层,负责网络上,两个节点之间的数据帧通信,是最贴近硬件的一层。掌握数据链路层的知识,对我们理解网络中的一些现象具有极大的意义。这篇Blog,首先会介绍数据链路层的作用,以及基本结构和基本运作流程;紧随其后,我们将探讨数据链路层的转发设备,以及不同的设备构建的局部网络,数据帧传输的基本运作流程;最后我们将介绍在广播Channel中使用的链路层协议(Multi-Access Protocol)。本文的知识和观点主要来自于《Computer Networking A Top-Down Approach》一书,本Blog也将会大量引用该书的图文。
  本Blog的主要功能是对数据链路层知识进行梳理,而非对Top-Down中Link-Layer这一章节的翻译,而是经过自己的梳理而写的文章。最后由于本人水平有限,如有不当的地方,欢迎大家批评指正,大家可以将建议或者意见发到我的邮箱中1518986465@qq.com。

[Read More]