bash组织成树数据结构

bash组织成树数据结构

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116836.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Springboot自动装配原理_自动装配原理

    Springboot自动装配原理_自动装配原理springboot自动装配原理详解1)传统ssm整合redis的时候需要在xml的配置文件中进行大量的配置Bean我们在这里使用springboot来代替ssm的整合,只是通过xml的形式来整合redis第一步:加入配置<dependency><groupId>org.springframework.data</grou…

  • 网络工程师

    网络工程师

  • 微信高级群发接口 {“errcode”:40008,”errmsg”:”invalid message type hint: [aRIDBA0726age9]”}[通俗易懂]

    微信高级群发接口 {“errcode”:40008,”errmsg”:”invalid message type hint: [aRIDBA0726age9]”}[通俗易懂]首先允许我吐槽一下TX,我勒个擦,写的是什么文档。切入正题,我用微信的高级群发接口,来发卡券,因为是订阅号,所以只能根据组来发。原理很简单根据urlpost数据URL= https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN数据格式json

  • 【Python矩阵转置】| 试使用多方法实现[通俗易懂]

    【Python矩阵转置】| 试使用多方法实现[通俗易懂]矩阵的重要性:实际存储数据通常包含有特征根或是特征向量,是重要。借助Python实现矩阵运算不可或缺。在此过程中,矩阵的转置至关重要。下为几种常见的矩阵转置方法:方法一:(直接法)#step1:#初始化原始矩阵matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]#通过函数指出矩阵的行与列row=len(matrix)col=len(matrix[0])#step2:#交换矩阵的行与列ROW=

  • navicat 中文注册码「建议收藏」

    navicat 中文注册码「建议收藏」中文版Navicatmysql9.x下载地址:http://download2.navicat.com/download/navicat091_mysql_cs.exe下载地址:http://download2.navicat.com/download/navicat091_mysql_cs.tar.gz注册码:NAVL-KSG4-K8D8-8TV6中文版Navicatm…

    2022年10月13日
  • Eclipse汉化教程2021年最新

    Eclipse汉化教程2021年最新Eclipse汉化教程1.复制汉化连接https://download.eclipse.org/technology/babel/update-site/latest/,网址为:https://www.eclipse.org/babel/downloads.php2.打开Eclipse,Help—>installnewsoftware…—>Add…—>Name随便起一个;Location将刚刚复制的链接粘贴上来,等待下载3.选择BabelLanguagePacksf

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号