Bootarmor 入门教程和用户手册 0.1.0btarmor 语法 描述 btarmor boot btarmor make btarmor deploy btarmor patch C 用户使用手册 默认保护模式 共享字符串和全局变量 保护内存堆 保护内存栈 保护数据文件 附录 btarmor-os Debian Packages 了解 Bootarmor Bootarmor 是以为软件产品提供绝对安全,确保软件产品发布之后,其代码不选项 生成的文件直接覆盖原来的文件 生成的文件保存在另外一个路径,默认是 dist 使用共享模式进行保护,一般用于保护系统动态库 不允许内核访问应用程序申请的堆空间 不允许内核访问运行栈(局部变量) 从文件里面读取需要处理的文件名称 描述 子命令 make 用于将命令行列出的一个或者多个文件转换成为安全文件,可以 使用通配符。 例如: cd /home/jondy/myapp 级模式下面能够执行系统命令。因为专用模式下面,没有加密的任 何可执行文件都无法运行。 使用该选项加密的文件允许内核访问,同时这个 可执行文件也只能运行在应用程序层,而没 有运行在安全应用层。 选项 --safe-heap 用于保护内存堆,这里面一般是程序使用 malloc 申请的内存 空间,默认情况下是允许内核访问的。如果这些数据不需要被内核访问,使用 该选项可以提 高安全性。 选项 --safe-stack 用于保护运行栈,这里面一般是程序的调用框架和局部变 0 码力 | 25 页 | 30.29 KB | 1 年前3
Pro Git 中文版 第2版 2.1.66仓库中删除(亦即从暂存区域移除), 但仍然希望保留在当前工作目录中。 换句话说,你想让文件保留在磁盘,但 是并不想让 Git 继续跟踪。 当你忘记添加 .gitignore 文件,不小心把一个很 大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,这一做法尤其 有用。 为达到这一目的,使用 --cached 选项: $ git rm --cached README git rm 命令后面可以列出文件或者目录的名字,也可以使用 你将相同的内容又合并了一次,生成了一个新的提交 ▪ ▪ ▪ ▪ 此时如果你执行 git log 命令,你会发现有两个提交的作者、日期、日志居然 是一样的,这会令人感到混乱。 此外,如果你将这一堆又推送到服务器上, 你实际上是将那些已经被变基抛弃的提交又找了回来,这会令人感到更加混 乱。 很明显对方并不想在提交历史中看到 C4 和 C6,因为之前就是他把这两个 提交通过变基丢弃的。 用变基解决变基 会给你所有的这些信息。 图表 117. 合并按钮和手工合并一个合并请求的指令. 如果你决定不合并它,你可以把合并请求关掉,开启合并请求的人会收到通 知。 合并请求引用 如果你正在处理 许多 合并请求,不想添加一堆 remote 或者每次都要做一次 拉取,这里有一个可以在 GitHub 上用的小技巧。 这是有点高级的技巧,但 它相当有用,我们会在 引用规范 有更多的细节说明。 实际上 GitHub 在服务器上把合并请求分支视为一种0 码力 | 670 页 | 13.59 MB | 1 年前3
KiCad 5.1 参考手册件夹或中复制完整的默认全局符号库表文件(sym-lib-table) KiCad library repo 到你的 KiCad 用户配置文件夹。 这将取代 Eeschema 创建 的空(最有可能)。 如果你不这样做,你很可能最终得到一堆破碎的 符号链接。 警告 重新映射的原理图与旧版本的 KiCad 不兼容。 “重映射符号”对话框将 备份原理图文件,如果手动重新映射,则应该执行相同的操作。+ 1. 如果可能,请在您的系统上安装0 码力 | 39 页 | 224.13 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a内存块可以被开辟在栈上。开辟在一个协程维护的栈上的内存块只能在此协程 内部被使用(引用)。 其它协程是无法访问到这些内存块的。 一个协程可以无 需使用任何数据同步技术而使用开辟在它的栈上的内存块上的值部。 堆(heap)是一个虚拟的概念。每个程序只有一个堆。 一般地,如果一个内存 块没有开辟在任何一个栈上,则我们说它开辟在了堆上。 开辟在堆上的内存块 可以被多个协程并发地访问。 在需要的时候,对承载在它们之上的值部的访问 需要做同步。 会被开辟在堆上。 也就 是说,编译器将采取保守但安全的策略,使得某些可以安全地被开辟在栈上的 内存块也有可能会被开辟在堆上。 事实上,栈对于Go程序来说并非必要。Go程序中所有的内存块都可以开辟在堆 上。 支持栈只是为了让Go程序的运行效率更高。 从栈上开辟内存块比在堆上快得多; 开辟在栈上的内存块不需要被垃圾回收; 开辟在栈上的内存块对CPU缓存更加友好。 如果一个内存块被开辟在某处( 栈上的值部所引用着。 如果一个逃逸到堆上的值是一个被声明为T类型的局部 变量,则在运行时,一个*T类型的隐式指针将被创建在栈上。 此指针存储着此 T类型的局部变量的在堆上的地址,从而形成了一个从栈到堆的引用关系。 另 外,编译器还将所有对此局部变量的使用替换为对此指针的解引用。 此*T值可 能从今后的某一时刻不再被使用从而使得此引用关系不再存在。 此引用关系在 下面介绍的垃圾回收过程中发挥着重要的作用。0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a内存块可以被开辟在栈上。开辟在一个协程维护的栈上的内存块只能在此协程 内部被使用(引用)。 其它协程是无法访问到这些内存块的。 一个协程可以 无需使用任何数据同步技术而使用开辟在它的栈上的内存块上的值部。 堆(heap)是一个虚拟的概念。每个程序只有一个堆。 一般地,如果一个内存 块没有开辟在任何一个栈上,则我们说它开辟在了堆上。 开辟在堆上的内存 块可以被多个协程并发地访问。 在需要的时候,对承载在它们之上的值部的 访问需要做同步。 栈上的值部所引用着。 如果一个逃逸到堆上的值是一个被声明为T类型的局部 变量,则在运行时,一个*T类型的隐式指针将被创建在栈上。 此指针存储着 此T类型的局部变量的在堆上的地址,从而形成了一个从栈到堆的引用关系。 另外,编译器还将所有对此局部变量的使用替换为对此指针的解引用。 此*T 值可能从今后的某一时刻不再被使用从而使得此引用关系不再存在。 此引用 关系在下面介绍的垃圾回收过程中发挥着重要的作用。 runtime.KeepAlive(&bs) 11 | // 对于这个特定的例子,也可以调用 12 | // runtime.KeepAlive(bs)。 13 | } 如何判断一个堆内存块是否仍在被使用? 目前的官方Go标准运行时(1.21版本)使用一个并发三色(tri-color)标记清 扫(mark-sweep)算法 ? 来实现垃圾回收。 这里仅会对此算法的原理做一个 大致0 码力 | 821 页 | 956.82 KB | 1 年前3
KiCad PCB 编辑器 5.1
,展开,并 准备好作为您想要的组放置。 使用遗留后端,当在网表文件中找到新的封装时,它们将被自动加载并放置在 坐标(0,0)处。 新的封装可以一个接一个地移动和排列。 更好的方法是自动移动(取消堆 叠)它们: 激活封装模式( ) 将鼠标光标移动到合适的(无元件)区域,然后单击右键: 如果已有包含现有封装的电路板,则自动放置新封装。 首次自动放置所有边框线(创建板时)。 以下屏幕截图显示了结果。0 码力 | 304 页 | 3.02 MB | 1 年前3
FISCO BCOS 2.9.0 中文文档硬件资源,进行业 务路由配置和必要的数据迁移就是了。 像分布式数据库、大数据集群、或者BT网络、CDN这些“分布式系统”,大多 也是遵循“将用户和数据分散到不同的物理设备上”这个原则,达到简单的“堆 硬件”即可平行扩展的效果。 硬件越多,技术上的“规模效应”越显著,即存储 量更大、计算能力更强、总带宽越多,能服务的用户就越多。 最重要的是, 整个服务大部分是在同一个机构里,由同一个公司的团队维护,服务和服务 也蹦不高。由于存储和网络这些硬条件的天花板存在,集群化的计算再快也 没有用了。 最后,节点集群化确实可以使以节点为单位的服务处理能力有一 定上升,同时也会带来的架构上的额外复杂性和部署运维成本。 还是引用一个数钱的例子: 有一大堆钱让十个人数,有两种方法。 方法一, 可以把钱分成十份,每个人数一份,这样很快就数完了,人越多,数得越 快,但是如果里面有人数错了,或者甚至偷钱,那就有问题了。 于是,为了 资金安全,改成方法二,让一 中最基本的密码学应用是HASH摘要、对称加密和非对称加密算法,以及相 关的签名验签算法。 HASH算法的旧版本已经被证明可破解而被抛弃了,目前在用的SHA256等算 法依旧坚不可破。HASH算法的特性是把一堆数据单向生成一段定长的数 据,基本不会发生碰撞,可起到原始数据的“指纹”作用,其单向性不可逆, 推不出原始数据,具有一定的抗量子性,是能隐藏原始数据又能在必要时提 供校验凭据的最佳方式。 数字签名一0 码力 | 2649 页 | 201.08 MB | 1 年前3
FISCO BCOS 2.7.2 中文文档硬件资源,进行业 务路由配置和必要的数据迁移就是了。 像分布式数据库、大数据集群、或者BT网络、CDN这些“分布式系统”,大多 也是遵循“将用户和数据分散到不同的物理设备上”这个原则,达到简单的“堆 硬件”即可平行扩展的效果。 硬件越多,技术上的“规模效应”越显著,即存储 量更大、计算能力更强、总带宽越多,能服务的用户就越多。 最重要的是, 整个服务大部分是在同一个机构里,由同一个公司的团队维护,服务和服务 也蹦不高。由于存储和网络这些硬条件的天花板存在,集群化的计算再快也 没有用了。 最后,节点集群化确实可以使以节点为单位的服务处理能力有一 定上升,同时也会带来的架构上的额外复杂性和部署运维成本。 还是引用一个数钱的例子: 有一大堆钱让十个人数,有两种方法。 方法一, 可以把钱分成十份,每个人数一份,这样很快就数完了,人越多,数得越 快,但是如果里面有人数错了,或者甚至偷钱,那就有问题了。 于是,为了 资金安全,改成方法二,让一 中最基本的密码学应用是HASH摘要、对称加密和非对称加密算法,以及相 关的签名验签算法。 HASH算法的旧版本已经被证明可破解而被抛弃了,目前在用的SHA256等算 法依旧坚不可破。HASH算法的特性是把一堆数据单向生成一段定长的数 据,基本不会发生碰撞,可起到原始数据的“指纹”作用,其单向性不可逆, 推不出原始数据,具有一定的抗量子性,是能隐藏原始数据又能在必要时提 供校验凭据的最佳方式。 数字签名一0 码力 | 2520 页 | 211.87 MB | 1 年前3
FISCO BCOS 2.8.0 中文文档硬件资源,进行业 务路由配置和必要的数据迁移就是了。 像分布式数据库、大数据集群、或者BT网络、CDN这些“分布式系统”,大多 也是遵循“将用户和数据分散到不同的物理设备上”这个原则,达到简单的“堆 硬件”即可平行扩展的效果。 硬件越多,技术上的“规模效应”越显著,即存储 量更大、计算能力更强、总带宽越多,能服务的用户就越多。 最重要的是, 整个服务大部分是在同一个机构里,由同一个公司的团队维护,服务和服务 也蹦不高。由于存储和网络这些硬条件的天花板存在,集群化的计算再快也 没有用了。 最后,节点集群化确实可以使以节点为单位的服务处理能力有一 定上升,同时也会带来的架构上的额外复杂性和部署运维成本。 还是引用一个数钱的例子: 有一大堆钱让十个人数,有两种方法。 方法一, 可以把钱分成十份,每个人数一份,这样很快就数完了,人越多,数得越 快,但是如果里面有人数错了,或者甚至偷钱,那就有问题了。 于是,为了 资金安全,改成方法二,让一 中最基本的密码学应用是HASH摘要、对称加密和非对称加密算法,以及相 关的签名验签算法。 HASH算法的旧版本已经被证明可破解而被抛弃了,目前在用的SHA256等算 法依旧坚不可破。HASH算法的特性是把一堆数据单向生成一段定长的数 据,基本不会发生碰撞,可起到原始数据的“指纹”作用,其单向性不可逆, 推不出原始数据,具有一定的抗量子性,是能隐藏原始数据又能在必要时提 供校验凭据的最佳方式。 数字签名一0 码力 | 2534 页 | 212.43 MB | 1 年前3
FISCO BCOS 2-dev 中文文档硬件资源,进行业 务路由配置和必要的数据迁移就是了。 像分布式数据库、大数据集群、或者BT网络、CDN这些“分布式系统”,大多 也是遵循“将用户和数据分散到不同的物理设备上”这个原则,达到简单的“堆 硬件”即可平行扩展的效果。 硬件越多,技术上的“规模效应”越显著,即存储 量更大、计算能力更强、总带宽越多,能服务的用户就越多。 最重要的是, 整个服务大部分是在同一个机构里,由同一个公司的团队维护,服务和服务 也蹦不高。由于存储和网络这些硬条件的天花板存在,集群化的计算再快也 没有用了。 最后,节点集群化确实可以使以节点为单位的服务处理能力有一 定上升,同时也会带来的架构上的额外复杂性和部署运维成本。 还是引用一个数钱的例子: 有一大堆钱让十个人数,有两种方法。 方法一, 可以把钱分成十份,每个人数一份,这样很快就数完了,人越多,数得越 快,但是如果里面有人数错了,或者甚至偷钱,那就有问题了。 于是,为了 资金安全,改成方法二,让一 中最基本的密码学应用是HASH摘要、对称加密和非对称加密算法,以及相 关的签名验签算法。 HASH算法的旧版本已经被证明可破解而被抛弃了,目前在用的SHA256等算 法依旧坚不可破。HASH算法的特性是把一堆数据单向生成一段定长的数 据,基本不会发生碰撞,可起到原始数据的“指纹”作用,其单向性不可逆, 推不出原始数据,具有一定的抗量子性,是能隐藏原始数据又能在必要时提 供校验凭据的最佳方式。 数字签名一0 码力 | 2378 页 | 204.39 MB | 1 年前3
共 33 条
- 1
- 2
- 3
- 4













