bash组织成树数据结构

君子也非独占,善假于物!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罗差点儿没有人炫花式技巧,于是我以前想,花式足球不有用。仅仅适合表演,可是看了世界杯大牌明星这些人的花式足球表演后,我知道了,有些技乔只为炫技,但本质不包含在所谓的能量闪光尖。

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-08-21 12:53:12

bash组织成树数据结构的相关文章

bash组织成树型数据结构

君子性非异也,善假于物也!bash亦如此.昨晚今早的世界杯甚是精彩,深夜醒来就不断看手机直播,早上起来水没喝一口就开始欣赏英格兰和意大利 的对决,太TM精彩,最终孕育罗马文化,埃特鲁里亚文化的意大利获取胜利,我甚是欢喜,紧接着观摩下一场比赛,本田圭佑的进球甚是鬼斧神工,本来想加班 的,却研究起了复杂六度分割网络,有点乱,但是还是在下午的时候悟出了一点什么.小小睡在旁,心里想着怎么把bash组织成一棵树,因为我实在不想也没有 能力使用Python来创建所谓的高级的数据结构,比如树.       树

存储系统的基本数据结构之一: 跳表 (SkipList)

在接下来的系列文章中,我们将介绍一系列应用于存储以及IO子系统的数据结构.这些数据结构相互关联又有着巨大的区别,希望我们能够不辱使命的将他们分门别类的介绍清楚.本文为第一节,介绍一个简单而又有用的数据结构:跳表 (SkipList) 在对跳表进行讨论之前,我们首先描述一下跳表的核心思想. 跳表(Skip List)是有序线性链表的一种.通常对线性链表进行查找需要遍历,因而不能很好的使用二分查找这样快速的方法(想像一下在链表中定位中间元素的复杂度).为了提高查找速率,我们可以将这些线性链表打散,组

重构系统的套路-写有组织的代码

如果一个项目经历了快速发展,势必在业务发展背后留下了一个很无序,结构混乱的代码,无序而混乱的代码势必造成很大的bug修复及扩展成本. 说到搭建系统都在谈论高并发,大数据,而易于维护和可扩展性则被大部分人抛之脑后,增加最基础的面向对象思想和设计模式帮助我们组织好易于维护和阅读的代码. 不要好高骛远看一下高并发,高可用的东西,做好以下这些最基础的东西,你的系统在可读性和可维护可扩展方面将会提升一倍的能力,将大家的人效从每次bug产生梳理代码的过程中解放出来,建立标准建立原则才是架构师首先要做的. 进

程序员的自我修养六可执行文件的装载与进程

可执行文件只有装载到内存以后才能被CPU执行 6.1进程虚拟地址空间 程序和进程的区别: 程序:是一个静态概念,它就是一些预先编译好的指令和数据集合的一个文件. 进程:是一个动态概念,它是程序运行时的一个过程,很多时候把动态库叫做运行时. 程序被运行起来以后,它就拥有了独立的虚拟地址空间.虚拟地址空间大小由CPU的位数决定. 下面使用的CUP都是以32位为主.程序运行的时候,进程只能使用那些操作系统分配给进程的地址. Linux操作系统将进程的虚拟地址做了如下分配: 6.2 装载的方式 程序执行

OpenVPN多处理之-netns容器与iptables CLUSTER

如果还是沉湎于之前的战果以及强加的感叹,不要冥想,将其升华. 1.C还是脚本 曾经,我用bash组织了复杂的iptables,ip rule等逻辑来配合OpenVPN,将其应用于几乎所有可以想象得到的复杂网络场景中,实现网间VPN隧道.后来我发现玩大了,要不是当时留下一份文档,我自己几乎已经无法通过这些关系错综复杂的bash脚本还原当时的思路,一切太复杂了.       我想重构它们,同时将其改造成"能经得起继续复杂化"的系统,因此我不得不想办法将这些关系理顺.是的,bash太复杂了,

linux虚拟文件系统浅析

linux虚拟文件系统浅析 虚拟文件系统(VFS)在我看来, "虚拟"二字主要有两层含义:1, 在同一个目录结构中, 可以挂载着若干种不同的文件系统. VFS隐藏了它们的实现细节, 为使用者提供统一的接口;2, 目录结构本身并不是绝对的, 每个进程可能会看到不一样的目录结构. 目录结构是由"地址空间(namespace)"来描述的, 不同的进程可能拥有不同的namespace, 不同的namespace可能有着不同的目录结构(因为它们可能挂载了不同的文件系统).操作

SQL Server 数据库简介

使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速,方便地管理数据.数据库具有以下特点: 1.可以结构化存储大量的数据信息,方便用户进行有效的检索和访问. 2.可以有效地保持数据信息的一致性.完整性,降低数据冗余. 3.可以满足应用的共享和安全方面的要求. 数据库的基本概念: 1.数据:描述事物的符号记录成为数据(Data)包括数字.文字.图形.图像.声音.档案记录等都是数据.数据以"记录"形式按统一的格式进行存储的. 2.数据库和数据库表:表是用来存储具体数据的,数据库就是表

Device Tree(三):代码分析【转】

转自:http://www.wowotech.net/linux_kenrel/dt-code-analysis.html Device Tree(三):代码分析 作者:linuxer 发布于:2014-6-6 16:03 分类:统一设备模型 一.前言 Device Tree总共有三篇,分别是: 1.为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因) 2.Device Tree的基础概念(请参考DT基础概念) 3.ARM linux中和De

【转】Core Bluetooth框架之一:Central与Peripheral

原文网址:http://southpeak.github.io/blog/2014/07/29/core-bluetoothkuang-jia-zhi-%5B%3F%5D-:centralyu-peripheral/ iOS和Mac应用使用Core Bluetooth framework来与BLE(低功耗蓝牙)设备通信.我们的程序可以发现.搜索并与低功耗外围(Peripheral)蓝牙设备通信,如心跳监听器.数字温控器.甚至是其它iOS设备.这个框架抽象了支持蓝牙4.0标准低功耗设备的基本操作,