首页
学习
活动
专区
工具
TVP
发布
您找到你想要的搜索结果了吗?
是的
没有找到

SHELL(bash)脚本编程七:源码简析

本文对bash的源码(版本:4.2.46(1)-release)进行简要分析。 数据结构 bash是用C语言写成的,其源码中只使用了少量的数据结构:数组,树,单向链表,双向链表和哈希表。...源码中最主要的结构都定义在根目录下头文件command.h中。...当前源码中定义了二十多种单词类型,如W_HASDOLLAR表示该单词包含扩展字符$,W_ASSIGNMENT表示该单词是一个赋值语句,W_GLOBEXP表示该单词是路径扩展(通配符扩展)之后的结果等等。...主要流程 以下所涉及文件如无特殊说明均处于bash源码的根目录下。 对于一行bash命令的执行流程分为两大步骤:解析和执行(注意和上一篇中的解析和执行的区别)。...execute_shell_script (sample, sample_len, command, args, env)); .... } 如果execve()失败了,则判断文件,如果文件不是目录且有可执行权限,则把它当做脚本执行

1.7K41

比特币源码分析之三:交易脚本

比特币源码分析之三:交易脚本 本篇默认读者了解两个基本的概念 1、hash算法,比特币使用的是sha-256,如果不了解,google一下 2、非对称加密算法,比特币使用的是椭圆曲线加密算法后文用...讲交易那一篇中有提到,交易脚本其实有两部分组成 1、输入脚本 (锁) 2、输出脚本(钥匙) 对这个概念不清楚的可以参看《比特币源码分析交易》 为了便于理解,笔者先从一个最为简单的脚本出发来讲解 输入脚本...: 输出脚本:OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG 首先先解释以上脚本指令 OP_DUP 复制指令...虚拟机执行时会先执行输入脚本,再执行输出脚本,如果出错就验证失败。...这里需要结合上一篇一起看,虽然输入脚本是先执行,但是按照出现顺序是先有输出脚本,也就是出钱的交易先出来(锁先出来),然后花钱的交易(也就是钥匙)才出来。

2.3K30

隐藏源码细节:Python脚本编译pyc文件

2 Python的特点 首先我们需要介绍下Python的特点: 源码距离底层更远; 运行时都需要生成字节码,交由解释器执行; 每次执行脚本,虚拟机总要多出加载和链接的流程,所以相比于编译型语言速度慢。...3 pyc特点 .pyc文件是由.py文件经过编译后生成的字节码文件,其加载速度相对于之前的.py文件有所提高; 可以实现源码隐藏,以及一定程度上的反编译。...版本要和生成pyc文件的python版本一致,否则会出现Bad magic number in .pyc file错误 4 pyc文件如何产生 当我们运行python文件程序的时候,Python解释器将源码转换为字节码...5 生成pyc文件方法 分为编译单个文件和多个文件,通过命令行操作如下: # 单个文件 python -m py_compile 脚本.py # 多个文件 python -m compileall 脚本文件所在目录...(r'脚本文件所在目录') 运行pyc python 脚本.pyc 6 _pycache__文件夹 解释器首先将其编译为字节码(这是过度简化)并将其存储在__pycache__文件夹中。

1.8K40

修改gradle脚本,加速spring源码编译构建速度

本次优化的策略是跳过task来节省时间,例如文档包和源码包,因此,如果您的目标是拿到最新jar包,那么这种手段适合您,如果您想拿到包括文档、源码等在内的所有构建资源,那么这种方式就不适合了; 先列举一下软硬件环境信息...-2667MHz),SSD128G 操作系统:win10 64位 JDK:1.8.0_171 Gradle:2.14.1 IntelliJ IDEA:2018.1.5 spring-framework源码...:4.1.8.RELEASE 注意,windows下编译spring-framwork4.1源码请参考《Win10环境编译spring-framework4.1.9版本,报错"Failed to capture...snapshot of input files for task 'distZip'"》进行修改,否则会构建失败; 下载后并导入到IEDA之后,如果不调整build.gradle脚本就直接编译,耗时16

78650
领券