bash组织成树数据结构
昨天晚上,今天早上世界杯很精彩。晚上醒来看到不断地居住的电话。早上没有喝的水开始赞赏在英国和意大利的对决。也TM精彩,最后生下了罗马文化。意大利伊特鲁里亚文化获得胜利,我甚至会很高兴,然后看接下来的比赛,本田圭佑的进球很不可思议,原本打算加班。研究起了复杂六度切割网络。有点乱,可是还是在下午的时候悟出了一点什么。小小睡在旁,心里想着怎么把bash组织成一棵树,由于我实在不想也没有能力使用Python来创建所谓的高级的数据结构,比方树。
树。一个人类的常规组织形式。一个将近一万年为人类所用的数据类型。现在被映射进计算机数据结构的时候被赋予了独特的地位。二叉树,堆,AVL树,红黑树。256叉树。Radix树。...不一而足,差点儿全部的编程语言都内置了这些树的数据结构类型,即便不是如此,也会有非常多狂热的开发者组建一系列的所谓库来实现这些树的接口。可是除了一种语言,即Shell,对于LInux而言就是bash(我从来不用其他的shell,尽管历史渊源深厚。但历史不是现实。这是理解历史的优点...),为什么没有人开发Linux的树型数据结构呢?...shell是一种粘合语言。不是一种实现逻辑的语言。这或许就是根本??假设世界杯讲解员在讲解西班牙VS荷兰对决的时候,在荷兰进球前一直倾向于西班牙会赢,无异于低水平的赌博,实际上当我说没有人实现bash版本号的树型数据结构的时候,造就有人发在了github上了,仅仅是我这个傻BI没有找到而已,所以我不再依照长平之战的原则来评论此事。我仅仅是试着去做,由于假设我做不到,将是我工作的重大失职,就如同西班牙球员将球送进自己的球门一样...bash为何没有简单的办法实现树型结构。甚至没有实现不论什么的数据结构,原因在于,它不须要!
君子善假于物也。bash本身没有tree的语义,可是UNIX的文件系统正是tree组织的,而bash操作UNIX文件夹/文件简直就是如鱼得水,我突然想到了Linux内核的make menuconfig是怎么找到那么多的config的。其实不须要一个统一的congifg。仅仅须要各个文件文件夹自己构建自己的config项就能够了。make的时候自然会遍历文件系统,然后取出config项目。仅此而已,Linux的诸如make menuconfig命令不须要自己实现一套遍历文件夹的算法。
假设我想实现一个树型的操作序列,比方在ECC算法下的TLS分别用SM1和SM4来进行对称加密。使用ECC或者SM2进行认证(即所谓的算法套间,cipher-suit)。怎么办?依照传统的编程语言。我要内建一个struct,实现一个树。可是,可是现代的复杂问题已经不同意你去编写和编译所谓的结构体了(关键在于编译)。问题的根本在于你是在想用这些语言解决你的问题(去年我..一个表,我过不去的坎)还是你想研究编程语言本身。假设是后者,请略过此文,但假设不是。我认为C/C++/Java已经不适合了,Python,Perl。Bash更合适。由于这些语言能够让你不必去思想怎样构建一棵树的问题,以Python为例,不必多说。我懂得没你多,可是以bash为例呢?由于没有什么库能够使用。你瞬间呆住了!...我一直以来也是这样考虑的,,但突然,我不这么认为了,我认为bash能够利用的库(Library)不是没有,而是非常多。多到什么程度?答案是整个系统!
Linux的文件夹系统是一个树型结构。bash能够非常好的利用它!bash尽管没有内建不论什么结构。可是却能够利用全部的其他结构。Linux内核的设计者已经想到了这一点。看一下sysfs和procfs吧。当你使用cat/echo等命令来操作的时候,是不是认为比自己写代码更轻松些呢(尽管少了自己炫技巧的机会...)?不要把文件系统当作一个龌龊的IPC机制,实际上你能够变通。你能够将内存的好几G。比方1G全部构建一个ramfs。然后在里面尽情搞文件操作吧。不会有不论什么性能损失,记住。文件IO仅仅是一个接口而已(请别跟我扯系统调用会影响效率。或许能够使用mmap...书看多了,课上傻了...)!文件接口是一个非常猛的东西,它能够内建你无法实现的数据结构,比方树。
我没有必在脚本内部维护一棵树,我仅仅须要建立一个树型的文件文件夹系统就可以,然后利用丰富的文件系统IO命令来蹂躏它,假设你不想让我的额外文件系统污染你那清纯的文件系统,我就建立一个ramfs,我仅仅是将内存格式化了而已。
bash不是编程语言,然而它又是全部的编程语言,它能够粘合全部的语言写成的逻辑。其内恰性远远超过诸如Python,Perl,PHP之类的语言。它是UNIX内建的。bash。它实际上就是UNIX本身的编程语言,UNIX本身就是一个库!
我不是反对现代软件project,我仅仅是认为在某些领域,某些地方,某些日常事务,软件project确实走偏了方向。
大师出手的时候不知道自己用的招数的名字。我在想,那些所谓精通设计模式的人们。你们可曾知道。你们比设计模式领域的大师更猛,由于当这些大师在做一个系统的时候,实在不知道自己在使用什么模式,可是你可能更知道。突然想到了《依天屠龙记》中张三丰问张无忌,直到张无忌的功夫口诀全部忘记之后。才同意其出战,精髓所在!
花式足球竞赛进行中,高手都是一帮跳街舞的人,技术太TMD炫了,但在世界杯中除了C罗差点儿没有人炫花式技巧,于是我以前想,花式足球不有用。仅仅适合表演,可是看了世界杯大牌明星这些人的花式足球表演后,我知道了,有些技乔只为炫技,但本质不包含在所谓的能量闪光尖。
版权声明:本文博主原创文章,博客,未经同意不得转载。
bash组织成树数据结构的更多相关文章
- 存储系统的基本数据结构之一: 跳表 (SkipList)
在接下来的系列文章中,我们将介绍一系列应用于存储以及IO子系统的数据结构.这些数据结构相互关联又有着巨大的区别,希望我们能够不辱使命的将他们分门别类的介绍清楚.本文为第一节,介绍一个简单而又有用的数据 ...
- 1. C语言中的数据结构.md
C语言内建数据结构类型 整型 整型数据是最基本的数据类型,不过从整形出发衍生出好几种integer-like数据结构,譬如字符型,短整型,整型,长整型.他们都是最基本的方式来组织的数据结构,一般是几位 ...
- 一.数据结构&算法的引言+时间复杂度
目录(contents): 1.什么是计算机科学?什么是算法? 2.如何形象化的理解算法? 3.什么是算法分析? 4.时间复杂度 5.数据结构 6.总结算法和数据结构之间的关联 一.什么是计算机科学? ...
- 浙大MOOC《数据结构》随笔
第一讲 基本概念 1.1 什么是数据结构 图书摆放问题: 新书如何插入? 先定类别,再二分查找 怎么找到指定某本书? 二分查找 写程序实现一个函数PrintN 循环实现 void PrintN(int ...
- Device Tree(三):代码分析【转】
转自:http://www.wowotech.net/linux_kenrel/dt-code-analysis.html Device Tree(三):代码分析 作者:linuxer 发布于:201 ...
- (转)linux内核虚拟文件系统浅析
转自http://hi.baidu.com/_kouu/item/4e9db87580328244ef1e53d0 ###### 虚拟文件系统(VFS)在我看来, "虚拟"二字主要 ...
- Device Tree(三):代码分析
一.前言 Device Tree总共有三篇,分别是: 1.为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因) 2.Device Tree的基础概 ...
- 【转】Core Bluetooth框架之一:Central与Peripheral
原文网址:http://southpeak.github.io/blog/2014/07/29/core-bluetoothkuang-jia-zhi-%5B%3F%5D-:centralyu-per ...
- (DT系列三)系统启动时, dts 是怎么被加载的
一,主要问题:系统在启动的时候,是怎么加载 dts的:Lk,kernel中都应调查. 二:参考文字dts加载流程如下图所示: 启动过程中,bootloader(默认是bootable/bootload ...
随机推荐
- ZOJ 3542 2011大连现场赛D题(简单模拟)
Hexadecimal View Time Limit: 2 Seconds Memory Limit: 65536 KB Hexadecimal is very important an ...
- CS0433: 类型“BasePage”同一时候存在于“c:\Windows\Microsoft.NETxxxxxxxxxxxxxxxx
网上常见的我就不说了. 假设其他地址的方法解决不了你的问题,那么请往下看. 该类是否存放于 App_Code 下,假设是把该类从App_Code中拉出来,然后再次执行试试.
- Python的经典问题——中文乱码
关键字:Python UTF-8 GBK 中文 乱码 估计入门时都会遇到的.我是在windows下用的Python25自带的IDLE编辑运行的,发现运行脚本得出的结果有一些中文显示是乱码,但有一些是正 ...
- Photoshop理论:另外一种角度看图层混合模式
源地址:http://www.missyuan.com/thread-687724-1-4.html 1.我将一个色阶看成是一个由亮部和暗部组成的这么一个元素,亮部是我们看的见的,暗部是影响亮部的,有 ...
- UVa 10188 - Automated Judge Script
题目:给你一些题目的输出结果,推断是AC,PE还是WA. 分析:模拟. 依照题意模拟就可以,注意PE条件为全部数字字符出现顺序同样就可以. 说明:想起非常多年前写的OJ的后台判题程序了╮(╯▽╰)╭. ...
- ContentType ,charset和pageEncoding的区别(转)
========================说法一=========================== ContentType 属性指定响应的 HTTP 内容类型.如果未指定 ContentTy ...
- Windows Server时间服务器配置方法
1 时间服务器经常会碰到客户端机器需要和服务器在时间上保持同步,否则会出现各种问题,特别是有时间相关的触发功能的时候. 为解决各设备间时间统一的问题,我们可在网络中设置一台服务器使其作为基准时间,其它 ...
- HDU 2544 最短路 SPFA 邻接表 模板
Problem Description 在每年的校赛里,全部进入决赛的同学都会获得一件非常美丽的t-shirt.可是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以如今他们想 ...
- 用Tomcat和Eclipse开发Servlet程序
1. 安装eclipse 1). 在官网上直接下载Eclipse IDE for Java EE Developers,解压即可: 2. eclipse安装tomcat插件: 1). 在http:// ...
- JSTL自定义标签库 (二)
要定义自己的标签,首先写个java类,extends TagSupport 或者 implements Tag ,然后在类体里实现自己想要的方法,或者覆盖父类的方法. 我定义的MyTag代码如下: ...