[技术]系统内部的层

系统内部的层

所谓“层”、“界”、“域”、“集合”,这些词其实是在试图表达物质系统的组成结构和运动景象中的规矩,这些不同人发明的词都是来源于对同一个规律的观察、发现、表达。不管别人是怎么想象的软件系统中的层,在开源矿工系统中值得显式提出的有这么几层:数据模式层、数据集合层、对象层。

数据模式层

源码中的NTMinerDataSchemas程序集中的就是数据模式。所谓数据模式,它是对数据结构的描述;所谓数据结构,它是一种空间结构体;所谓空间结构体,它是一段树枝,树枝的枝杈相对位置和长短中承载着系统信息。这里取名数据模式(DataSchema)暗含了“关系”概念,数据模式层中的数据模式由基本数据类型组成;所谓基本数据类型,是计算机运行时的数据模式。NTMinerDataSchema层中的每一个数据模式都由基本数据模式组成,不存在由非基本数据模式组成的数据模式,也可以这么讲:如果一个数据模式引用了另一个数据模式,那么它引用另一个数据模式类型的数据的方式一定是通过持有另一个数据模式类型的数据记录的标识表达的,而标识是基本数据模式类型。

数据集合层

数据模式是数据的规格,相同规格的数据组成的集合就是数据集合。数据集合层中是由不同模式的数据组成的一个个不同类型的数据集合。这一层在源码中的命名形如***Set,比如ICoinSet。

对象层

如果说数据模式层和数据集合层是靠近计算机的层,那么对象层就是靠近人的层。对象和数据的主要不同是对象在数据的基础上增加了行为和充血了关系。充血了关系是什么意思?在对数据模式层的表述中我们知道数据模式都是由基本类型组成的,一种模式引用另一种模式类型的数据的方式是通过持有基本类型的数据标识表达的,充血的意思是对象在数据的基础上增加了非基本类型的属性,增加的这些非基本类型的属性值通常来自于基于持有的数据的标识从对应类型的数据集合中查找得到。之所以说对象层是靠近人的层是因为人看到的东西(界面)就是这层对象的直接的图形化表达(计算机的世界本来就是图形化的,用图形表达计算机世界是非常直接的,相反像linux那样的用字符串表达计算机的世界才是拐弯抹角的因此有人说linux的哲学一开始就是错的不可能取得像windows那样的面向人民大众的成功)。这一层在代码中的命名形如***ViewModel,比如CoinViewModel。

层与层的关系

不知道别人是怎么想象层的形状的,在我的脑子里层是球形的一层裹一层的集合的包含和被包含关系。越靠近内层越靠近计算机,越靠近外层越靠近人,计算机站在内向外看内层包含外层,人站在外向内看外层包含内层。

开源矿工:https://ntminer.com

原文地址:https://www.cnblogs.com/ntminer/p/12235766.html

时间: 2024-08-29 19:17:44

[技术]系统内部的层的相关文章

各种现代方法和技术在储集层研究中的运用

一.前言: 储集层地质学于60年代末在国外提出,70年代后期储集层沉积学引入油田开发领域.此后,尤其是80年代以来,与储集层有关的学科或理论(如现代沉积学.成岩作用等)的研究有了重要突破,地震及测井数据的处理与解释.油藏描述.计算机模拟.油藏管理等先进的综合技术也有了长足的进展,这些都为油气储集层地质学本身的发展创造了条件. 储集层研究是一项系统工程,要求在研究手段.研究资料和研究人员等方面有高度的综合性.研究手段的综合性表现在综合应用勘探技术.钻井工程.采油工程.地质分析.实验测试.计算机应用

jar不是系统内部指令

今天遇到一个问题,环境变量设置均没有问题,但依然出现"jar不是系统内部指令"错误. JAVA_HOME    d:\Program Files\Java\jdk1.5.0_02CLASS_PATH   .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;Path         %JAVA_HOME%\bin; 最终才发现,我的JAVA_HOME变量设置为了用户变量,将其改为系统变量,问题搞定~

Android应用程序框架层和系统运行库层日志系统源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6598703 在开发Android应用程序时,少不了使用Log来监控和调试程序的执行.在上一篇文章Android日志系统驱动程序Logger源代码分析中,我们分析了驱动程序Logger的源代码,在前面的文章浅谈Android系统开发中Log的使用一文,我们也简单介绍在应用程序中使Log的方法,在这篇文章中,我们将详细介绍Android应用程序框架

技术团队内部培训体系的建立

作为技术管理者,帮助下属提高工作技能是重要的日常工作之一.下属能力越强,工作效率越高,工作质量也越好,整个团队的绩效目标越容易达成.为了提高团队成员的个人能力,大部分技术团队都会有一些定期,不定期的培训和分享:一些团队也会建立自己的培训知识库.但不少人会觉得培训的效果一般.这里和大家分享一下,我过去建立技术团队内部培训体系的一些心得和经验. 要让培训有比较好的效果,关键是"在合适的时间,给合适的人,提供合适的培训". 首先,培训的时机很重要.最好的培训时机是:培训完,培训的知识就能马上

Linux/Android——Input系统之frameworks层InputManagerService (六)

上一篇Linux/Android--input系统之 kernel层 与 frameworks层交互 (五)中有介绍kernel层一下以及与android这边frameworks层之间的联系,算是打通android 应用层与 kernel驱动层,对整个input系统的学习是至关重要的,其中frameworks层只是简单记录了几个接入点,这里开始分析frameworks层的细节部分. 撰写不易,转载需注明出处:http://blog.csdn.net/jscese/article/details/

Github 的系统内部都在用什么开源软件?

有时候处理规模问题最好的办法就是让事情变得简单并尽你可能去避免出现这种情况.这是 GitHub 所采用的方法,林纳斯·托瓦兹(Linus Torvalds)在十年前开发了Git源代码控制工具,GitHub 为该工具提供资料库服务(repository service),目前已经有了爆炸性的发展,并成为开源软件开发工作的重心之一. 可以理解为什么程序员们会精挑细选他们创作代码用的工具并与他人分享,反过来,他们也会去调整和改进这些工具.一种非常现实的感觉就是,软件开发者们“住进”这些系统中后,源代码

《黑客攻防技术-系统实战》第二章--栈溢出4

参考文献: https://en.wikipedia.org/wiki/Buffer_overflow_protectionhttps://www.zhihu.com/question/20871464/answer/18743160http://www.ibm.com/developerworks/cn/linux/l-cn-gccstack/ <黑客攻防技术宝典-系统实战> ..........................................................

Linux-Ubuntu 开机一直提示系统内部错误的解决方案

刚装完系统后,才安装一个输入法重启电脑后,竟然就提示'内部错误'需要提交报告,什么状况? 出现'内部错误'的原因是因为Ubuntu引入 Apport , 其实出现的错误并不会对正常使用系统造成印象,所以关闭即可.Apport Ubuntu Wiki [html] view plaincopyprint? sudo gedit  /etc/default/apport 把enabled=1  的值改成0 即 [html] view plaincopyprint? enabled=0 重启计算机,你

iOS开发——高级技术&amp;系统应用于系统服务

系统应用于系统服务 系统应用 在开发某些应用时可能希望能够调用iOS系统内置的电话.短信.邮件.浏览器应用,此时你可以直接使用UIApplication的OpenURL:方法指定特定的协议来打开不同的系统应用.常用的协议如下: 打电话:tel:或者tel://.telprompt:或telprompt://(拨打电话前有提示) 发短信:sms:或者sms:// 发送邮件:mailto:或者mailto:// 启动浏览器:http:或者http:// 1 下面以一个简单的demo演示如何调用上面几