 Linux Docker MessArchitecture Shell Kernel File System Applications Architecture Kernel n 内存管理 n 进程管理 n 文件系统(虚拟文件系统 VFS) n 设备驱动 n 网络接口 建议阅读Linux内核源代码,可以从Linux-0.11入手,推荐Linux内核完全注释 (赵炯著) Architecture Shell n 系统的用户界面 echo命令用于向窗口输出文本。 chmod +x ./test.sh ./test.sh 执行脚本 Architecture File System n 文件系统是文件存放在磁盘等存储设备上的组织方法 n Linux能够支持目前流行的N多文件系统,如Btrfs、JFS、 ReiserFS、 ext、ext2、ext3、ext4、…… 文件类型 n 普通文件:C语言元代码、SHELL脚本、二进制的可执行文件等,分为 方案的可能性(已经在这样做了)。 在LXC的基础上,Docker额外提供的特性包括: n 标准统一的打包部署运行方案 n 历史版本控制 n Image的重用和共享发布等 Growing Docker 例如,百度的BAE平台的PaaS服务由Docker支持。 Technologies in Docker Docker是一个操作系统级的、容器化的虚拟化方法。 隔离性 Linux Namespace (NS)0 码力 | 77 页 | 7.40 MB | 1 年前3 Linux Docker MessArchitecture Shell Kernel File System Applications Architecture Kernel n 内存管理 n 进程管理 n 文件系统(虚拟文件系统 VFS) n 设备驱动 n 网络接口 建议阅读Linux内核源代码,可以从Linux-0.11入手,推荐Linux内核完全注释 (赵炯著) Architecture Shell n 系统的用户界面 echo命令用于向窗口输出文本。 chmod +x ./test.sh ./test.sh 执行脚本 Architecture File System n 文件系统是文件存放在磁盘等存储设备上的组织方法 n Linux能够支持目前流行的N多文件系统,如Btrfs、JFS、 ReiserFS、 ext、ext2、ext3、ext4、…… 文件类型 n 普通文件:C语言元代码、SHELL脚本、二进制的可执行文件等,分为 方案的可能性(已经在这样做了)。 在LXC的基础上,Docker额外提供的特性包括: n 标准统一的打包部署运行方案 n 历史版本控制 n Image的重用和共享发布等 Growing Docker 例如,百度的BAE平台的PaaS服务由Docker支持。 Technologies in Docker Docker是一个操作系统级的、容器化的虚拟化方法。 隔离性 Linux Namespace (NS)0 码力 | 77 页 | 7.40 MB | 1 年前3
 Hello 算法 1.0.0b1 Java版二叉树的层序遍历 算法实现 广度优先遍历一般借助「队列」来实现。队列的规则是“先进先出”,广度优先遍历的规则是”一层层平推“, 两者背后的思想是一致的。 // === File: binary_tree_bfs.java === /* 层序遍历 */ List Hello 算法 1.0.0b1 Java版二叉树的层序遍历 算法实现 广度优先遍历一般借助「队列」来实现。队列的规则是“先进先出”,广度优先遍历的规则是”一层层平推“, 两者背后的思想是一致的。 // === File: binary_tree_bfs.java === /* 层序遍历 */ List- levelOrder(TreeNode root) { // 初始化队列,加入根结点 Queue - queue Search」,简称为 BFS 和 DFS 。 9.3.1. 广度优先遍历 广度优先遍历优是一种由近及远的遍历方式,从距离最近的顶点开始访问,并一层层向外扩张。具体地,从某 个顶点出发,先遍历该顶点的所有邻接顶点,随后遍历下个顶点的所有邻接顶点,以此类推⋯⋯ Figure 9‑9. 图的广度优先遍历 9. 图 hello‑algo.com 145 算法实现 BFS 常借助「队列」来实现。队列具有“先入先出”的性质,这与 常借助「队列」来实现。队列具有“先入先出”的性质,这与 BFS “由近及远”的思想是异曲同工的。 1. 将遍历起始顶点 startVet 加入队列,并开启循环; 2. 在循环的每轮迭代中,弹出队首顶点弹出并记录访问,并将该顶点的所有邻接顶点加入到队列尾部; 3. 循环 2. ,直到所有顶点访问完成后结束; 为了防止重复遍历顶点,我们需要借助一个哈希表 visited 来记录哪些结点已被访问。 // === File: 0 码力 | 186 页 | 14.71 MB | 1 年前3
 Hello 算法 1.0.0b2 Java版二叉树的层序遍历 算法实现 广度优先遍历一般借助「队列」来实现。队列的规则是“先进先出”,广度优先遍历的规则是”一层层平推“, 两者背后的思想是一致的。 // === File: binary_tree_bfs.java === /* 层序遍历 */ List Hello 算法 1.0.0b2 Java版二叉树的层序遍历 算法实现 广度优先遍历一般借助「队列」来实现。队列的规则是“先进先出”,广度优先遍历的规则是”一层层平推“, 两者背后的思想是一致的。 // === File: binary_tree_bfs.java === /* 层序遍历 */ List- levelOrder(TreeNode root) { // 初始化队列,加入根结点 Queue - queue Search」,简称为 BFS 和 DFS 。 9.3.1. 广度优先遍历 广度优先遍历优是一种由近及远的遍历方式,从距离最近的顶点开始访问,并一层层向外扩张。具体地,从某 个顶点出发,先遍历该顶点的所有邻接顶点,随后遍历下个顶点的所有邻接顶点,以此类推⋯⋯ Figure 9‑9. 图的广度优先遍历 9. 图 hello‑algo.com 146 算法实现 BFS 常借助「队列」来实现。队列具有“先入先出”的性质,这与 常借助「队列」来实现。队列具有“先入先出”的性质,这与 BFS “由近及远”的思想是异曲同工的。 1. 将遍历起始顶点 startVet 加入队列,并开启循环; 2. 在循环的每轮迭代中,弹出队首顶点弹出并记录访问,并将该顶点的所有邻接顶点加入到队列尾部; 3. 循环 2. ,直到所有顶点访问完成后结束; 为了防止重复遍历顶点,我们需要借助一个哈希表 visited 来记录哪些结点已被访问。 // === File: 0 码力 | 197 页 | 15.72 MB | 1 年前3
 Hello 算法 1.0.0b4 Java版遵循“先进先出”的规则,而广度优先遍历则遵循“逐层推进” 的规则,两者背后的思想是一致的。 7. 树 hello‑algo.com 119 // === File: binary_tree_bfs.java === /* 层序遍历 */ List Hello 算法 1.0.0b4 Java版遵循“先进先出”的规则,而广度优先遍历则遵循“逐层推进” 的规则,两者背后的思想是一致的。 7. 树 hello‑algo.com 119 // === File: binary_tree_bfs.java === /* 层序遍历 */ List- levelOrder(TreeNode root) { // 初始化队列,加入根节点 Queue - queue Depth‑First Search」,简称 BFS 和 DFS。 9.3.1. 广度优先遍历 广度优先遍历是一种由近及远的遍历方式,从距离最近的顶点开始访问,并一层层向外扩张。具体来说,从 某个顶点出发,先遍历该顶点的所有邻接顶点,然后遍历下一个顶点的所有邻接顶点,以此类推,直至所有 顶点访问完毕。 Figure 9‑9. 图的广度优先遍历 算法实现 BFS 通常借助「队列」来实现。队列具有“先入先出”的性质,这与 通常借助「队列」来实现。队列具有“先入先出”的性质,这与 BFS 的“由近及远”的思想异曲同工。 1. 将遍历起始顶点 startVet 加入队列,并开启循环。 2. 在循环的每轮迭代中,弹出队首顶点并记录访问,然后将该顶点的所有邻接顶点加入到队列尾部。 9. 图 hello‑algo.com 173 3. 循环步骤 2. ,直到所有顶点被访问完成后结束。 为了防止重复遍历顶点,我们需要借助一个哈希表 visited 来记录哪些节点已被访问。 0 码力 | 342 页 | 27.39 MB | 1 年前3
 Hello 算法 1.0.0b5 Java版代码实现 广度优先遍历通常借助“队列”来实现。队列遵循“先进先出”的规则,而广度优先遍历则遵循“逐层推进” 的规则,两者背后的思想是一致的。 // === File: binary_tree_bfs.java === /* 层序遍历 */ List Hello 算法 1.0.0b5 Java版代码实现 广度优先遍历通常借助“队列”来实现。队列遵循“先进先出”的规则,而广度优先遍历则遵循“逐层推进” 的规则,两者背后的思想是一致的。 // === File: binary_tree_bfs.java === /* 层序遍历 */ List- levelOrder(TreeNode root) { // 初始化队列,加入根节点 Queue - queue search」,简称 BFS 和 DFS 。 9.3.1 广度优先遍历 广度优先遍历是一种由近及远的遍历方式,从某个节点出发,始终优先访问距离最近的顶点,并一层层向外 扩张。如图 9‑9 所示,从左上角顶点出发,先遍历该顶点的所有邻接顶点,然后遍历下一个顶点的所有邻接 顶点,以此类推,直至所有顶点访问完毕。 图 9‑9 图的广度优先遍历 1. 算法实现 BFS 通常借助队列来实现。队列具有“先入先出”的性质,这与 通常借助队列来实现。队列具有“先入先出”的性质,这与 BFS 的“由近及远”的思想异曲同工。 1. 将遍历起始顶点 startVet 加入队列,并开启循环。 2. 在循环的每轮迭代中,弹出队首顶点并记录访问,然后将该顶点的所有邻接顶点加入到队列尾部。 3. 循环步骤 2. ,直到所有顶点被访问完成后结束。 为了防止重复遍历顶点,我们需要借助一个哈希表 visited 来记录哪些节点已被访问。 第 9 章 图 hello‑algo 0 码力 | 376 页 | 30.69 MB | 1 年前3
 Hello 算法 1.1.0 Java版adth‑first search, BFS), 它体现了一种“一圈一圈向外扩展”的逐层遍历方式。 图 7‑9 二叉树的层序遍历 1. 代码实现 广度优先遍历通常借助“队列”来实现。队列遵循“先进先出”的规则,而广度优先遍历则遵循“逐层推进” 的规则,两者背后的思想是一致的。实现代码如下: // === File: binary_tree_bfs.java === /* 层序遍历 */ 所示,从左上角顶点出发,首先遍历该顶点的所有邻接顶点,然后遍历下一个顶点的所有邻 接顶点,以此类推,直至所有顶点访问完毕。 图 9‑9 图的广度优先遍历 1. 算法实现 BFS 通常借助队列来实现,代码如下所示。队列具有“先入先出”的性质,这与 BFS 的“由近及远”的思想 异曲同工。 1. 将遍历起始顶点 startVet 加入队列,并开启循环。 2. 在循环的每轮迭代中,弹出队首顶点并记录访问,然后将该顶点的所有邻接顶点加入到队列尾部。 ,直到所有顶点被访问完毕后结束。 第 9 章 图 hello‑algo.com 198 为了防止重复遍历顶点,我们需要借助一个哈希表 visited 来记录哪些节点已被访问。 // === File: graph_bfs.java === /* 广度优先遍历 */ // 使用邻接表来表示图,以便获取指定顶点的所有邻接顶点 List Hello 算法 1.1.0 Java版adth‑first search, BFS), 它体现了一种“一圈一圈向外扩展”的逐层遍历方式。 图 7‑9 二叉树的层序遍历 1. 代码实现 广度优先遍历通常借助“队列”来实现。队列遵循“先进先出”的规则,而广度优先遍历则遵循“逐层推进” 的规则,两者背后的思想是一致的。实现代码如下: // === File: binary_tree_bfs.java === /* 层序遍历 */ 所示,从左上角顶点出发,首先遍历该顶点的所有邻接顶点,然后遍历下一个顶点的所有邻 接顶点,以此类推,直至所有顶点访问完毕。 图 9‑9 图的广度优先遍历 1. 算法实现 BFS 通常借助队列来实现,代码如下所示。队列具有“先入先出”的性质,这与 BFS 的“由近及远”的思想 异曲同工。 1. 将遍历起始顶点 startVet 加入队列,并开启循环。 2. 在循环的每轮迭代中,弹出队首顶点并记录访问,然后将该顶点的所有邻接顶点加入到队列尾部。 ,直到所有顶点被访问完毕后结束。 第 9 章 图 hello‑algo.com 198 为了防止重复遍历顶点,我们需要借助一个哈希表 visited 来记录哪些节点已被访问。 // === File: graph_bfs.java === /* 广度优先遍历 */ // 使用邻接表来表示图,以便获取指定顶点的所有邻接顶点 List- graphBFS(GraphAdjList graph, Vertex 0 码力 | 378 页 | 18.47 MB | 1 年前3
 Hello 算法 1.0.0 Java版breadth‑first search, BFS」,它体现了一种“一圈一圈向外扩展”的逐层遍历方式。 图 7‑9 二叉树的层序遍历 1. 代码实现 广度优先遍历通常借助“队列”来实现。队列遵循“先进先出”的规则,而广度优先遍历则遵循“逐层推进” 的规则,两者背后的思想是一致的。实现代码如下: // === File: binary_tree_bfs.java === /* 层序遍历 */ 所示,从左上角顶点出发,首先遍历该顶点的所有邻接顶点,然后遍历下一个顶点的所有邻 接顶点,以此类推,直至所有顶点访问完毕。 图 9‑9 图的广度优先遍历 1. 算法实现 BFS 通常借助队列来实现,代码如下所示。队列具有“先入先出”的性质,这与 BFS 的“由近及远”的思想 异曲同工。 1. 将遍历起始顶点 startVet 加入队列,并开启循环。 2. 在循环的每轮迭代中,弹出队首顶点并记录访问,然后将该顶点的所有邻接顶点加入到队列尾部。 尾部。 3. 循环步骤 2. ,直到所有顶点被访问完毕后结束。 为了防止重复遍历顶点,我们需要借助一个哈希表 visited 来记录哪些节点已被访问。 // === File: graph_bfs.java === /* 广度优先遍历 */ // 使用邻接表来表示图,以便获取指定顶点的所有邻接顶点 List Hello 算法 1.0.0 Java版breadth‑first search, BFS」,它体现了一种“一圈一圈向外扩展”的逐层遍历方式。 图 7‑9 二叉树的层序遍历 1. 代码实现 广度优先遍历通常借助“队列”来实现。队列遵循“先进先出”的规则,而广度优先遍历则遵循“逐层推进” 的规则,两者背后的思想是一致的。实现代码如下: // === File: binary_tree_bfs.java === /* 层序遍历 */ 所示,从左上角顶点出发,首先遍历该顶点的所有邻接顶点,然后遍历下一个顶点的所有邻 接顶点,以此类推,直至所有顶点访问完毕。 图 9‑9 图的广度优先遍历 1. 算法实现 BFS 通常借助队列来实现,代码如下所示。队列具有“先入先出”的性质,这与 BFS 的“由近及远”的思想 异曲同工。 1. 将遍历起始顶点 startVet 加入队列,并开启循环。 2. 在循环的每轮迭代中,弹出队首顶点并记录访问,然后将该顶点的所有邻接顶点加入到队列尾部。 尾部。 3. 循环步骤 2. ,直到所有顶点被访问完毕后结束。 为了防止重复遍历顶点,我们需要借助一个哈希表 visited 来记录哪些节点已被访问。 // === File: graph_bfs.java === /* 广度优先遍历 */ // 使用邻接表来表示图,以便获取指定顶点的所有邻接顶点 List- graphBFS(GraphAdjList graph, Vertex 0 码力 | 376 页 | 17.59 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Java 版adth‑first search, BFS), 它体现了一种“一圈一圈向外扩展”的逐层遍历方式。 图 7‑9 二叉树的层序遍历 1. 代码实现 广度优先遍历通常借助“队列”来实现。队列遵循“先进先出”的规则,而广度优先遍历则遵循“逐层推进” 的规则,两者背后的思想是一致的。实现代码如下: // === File: binary_tree_bfs.java === /* 层序遍历 */ 所示,从左上角顶点出发,首先遍历该顶点的所有邻接顶点,然后遍历下一个顶点的所有邻 接顶点,以此类推,直至所有顶点访问完毕。 图 9‑9 图的广度优先遍历 1. 算法实现 BFS 通常借助队列来实现,代码如下所示。队列具有“先入先出”的性质,这与 BFS 的“由近及远”的思想 异曲同工。 1. 将遍历起始顶点 startVet 加入队列,并开启循环。 2. 在循环的每轮迭代中,弹出队首顶点并记录访问,然后将该顶点的所有邻接顶点加入到队列尾部。 key 而不存储 value 的哈希表,它可以在 ?(1) 时间复杂度下进行 key 的增删查改操作。根据 key 的唯一性,哈希集合通常用于数据去重等场景。 // === File: graph_bfs.java === /* 广度优先遍历 */ // 使用邻接表来表示图,以便获取指定顶点的所有邻接顶点 List Hello 算法 1.2.0 简体中文 Java 版adth‑first search, BFS), 它体现了一种“一圈一圈向外扩展”的逐层遍历方式。 图 7‑9 二叉树的层序遍历 1. 代码实现 广度优先遍历通常借助“队列”来实现。队列遵循“先进先出”的规则,而广度优先遍历则遵循“逐层推进” 的规则,两者背后的思想是一致的。实现代码如下: // === File: binary_tree_bfs.java === /* 层序遍历 */ 所示,从左上角顶点出发,首先遍历该顶点的所有邻接顶点,然后遍历下一个顶点的所有邻 接顶点,以此类推,直至所有顶点访问完毕。 图 9‑9 图的广度优先遍历 1. 算法实现 BFS 通常借助队列来实现,代码如下所示。队列具有“先入先出”的性质,这与 BFS 的“由近及远”的思想 异曲同工。 1. 将遍历起始顶点 startVet 加入队列,并开启循环。 2. 在循环的每轮迭代中,弹出队首顶点并记录访问,然后将该顶点的所有邻接顶点加入到队列尾部。 key 而不存储 value 的哈希表,它可以在 ?(1) 时间复杂度下进行 key 的增删查改操作。根据 key 的唯一性,哈希集合通常用于数据去重等场景。 // === File: graph_bfs.java === /* 广度优先遍历 */ // 使用邻接表来表示图,以便获取指定顶点的所有邻接顶点 List- graphBFS(GraphAdjList graph, Vertex 0 码力 | 379 页 | 18.48 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Java 版dth‑first search, BFS), 它體現了一種“一圈一圈向外擴展”的逐層走訪方式。 圖 7‑9 二元樹的層序走訪 1. 程式碼實現 廣度優先走訪通常藉助“佇列”來實現。佇列遵循“先進先出”的規則,而廣度優先走訪則遵循“逐層推進” 的規則,兩者背後的思想是一致的。實現程式碼如下: // === File: binary_tree_bfs.java === /* 層序走訪 */ 接頂點,以此類推,直至所有頂點訪問完畢。 第 9 章 圖 www.hello‑algo.com 198 圖 9‑9 圖的廣度優先走訪 1. 演算法實現 BFS 通常藉助佇列來實現,程式碼如下所示。佇列具有“先入先出”的性質,這與 BFS 的“由近及遠”的思 想異曲同工。 1. 將走訪起始頂點 startVet 加入列列,並開啟迴圈。 2. 在迴圈的每輪迭代中,彈出佇列首頂點並記錄訪問, key 而不儲存 value 的雜湊表,它可以在 ?(1) 時間複雜度下進行 key 的增刪查改操作。根據 key 的唯一性,雜湊集合通常用於資料去重等場景。 // === File: graph_bfs.java === /* 廣度優先走訪 */ // 使用鄰接表來表示圖,以便獲取指定頂點的所有鄰接頂點 List Hello 算法 1.2.0 繁体中文 Java 版dth‑first search, BFS), 它體現了一種“一圈一圈向外擴展”的逐層走訪方式。 圖 7‑9 二元樹的層序走訪 1. 程式碼實現 廣度優先走訪通常藉助“佇列”來實現。佇列遵循“先進先出”的規則,而廣度優先走訪則遵循“逐層推進” 的規則,兩者背後的思想是一致的。實現程式碼如下: // === File: binary_tree_bfs.java === /* 層序走訪 */ 接頂點,以此類推,直至所有頂點訪問完畢。 第 9 章 圖 www.hello‑algo.com 198 圖 9‑9 圖的廣度優先走訪 1. 演算法實現 BFS 通常藉助佇列來實現,程式碼如下所示。佇列具有“先入先出”的性質,這與 BFS 的“由近及遠”的思 想異曲同工。 1. 將走訪起始頂點 startVet 加入列列,並開啟迴圈。 2. 在迴圈的每輪迭代中,彈出佇列首頂點並記錄訪問, key 而不儲存 value 的雜湊表,它可以在 ?(1) 時間複雜度下進行 key 的增刪查改操作。根據 key 的唯一性,雜湊集合通常用於資料去重等場景。 // === File: graph_bfs.java === /* 廣度優先走訪 */ // 使用鄰接表來表示圖,以便獲取指定頂點的所有鄰接頂點 List- graphBFS(GraphAdjList graph, Vertex 0 码力 | 379 页 | 18.79 MB | 10 月前3
 Apache Shiro参考手册中文版Ivy。 对于本教程,请确保你正在使用 Maven 2.2.1 或更高版本。你应该能够键入 mvn -version 命令行提示符,并看到与 下面类似的东西: 现在,在你的文件系统上创建一个新的目录,例如,shiro-tutorial 并在该目录下保存下面的 Maven pom.xml 文件: pom.xml 文件系统,classpath,或分别拥有前缀 file:, classpath:,或 url:的 URL 中获取资源。本例采用 Factory 提取 classpath 根目录下的 shiro.ini 文件并返回 能够提供一个单一的易理解的 Subject 编程 API,无论有多少数据源存在 或你应用程序特定的数据是怎样的。 Realm 通常和数据源是一对一的对应关系,如关系数据库,LDAP 目录,文件系统,或其他类似资源。因此,Realm 接口的实现使用数据源特定的 API 来展示授权数据(角色,权限等),如 JDBC,文件 IO,Hibernate 或 JPA,或其他 数据访问 API。0 码力 | 92 页 | 1.16 MB | 1 年前3 Apache Shiro参考手册中文版Ivy。 对于本教程,请确保你正在使用 Maven 2.2.1 或更高版本。你应该能够键入 mvn -version 命令行提示符,并看到与 下面类似的东西: 现在,在你的文件系统上创建一个新的目录,例如,shiro-tutorial 并在该目录下保存下面的 Maven pom.xml 文件: pom.xml 文件系统,classpath,或分别拥有前缀 file:, classpath:,或 url:的 URL 中获取资源。本例采用 Factory 提取 classpath 根目录下的 shiro.ini 文件并返回 能够提供一个单一的易理解的 Subject 编程 API,无论有多少数据源存在 或你应用程序特定的数据是怎样的。 Realm 通常和数据源是一对一的对应关系,如关系数据库,LDAP 目录,文件系统,或其他类似资源。因此,Realm 接口的实现使用数据源特定的 API 来展示授权数据(角色,权限等),如 JDBC,文件 IO,Hibernate 或 JPA,或其他 数据访问 API。0 码力 | 92 页 | 1.16 MB | 1 年前3
共 17 条
- 1
- 2













