工作中偶尔就会遇到后端同学丢来一个列表,要我们自己组装成一个树结构渲染到页面上,本文以两种不同方式探索生成树的算法思想。...背景介绍 可组装成树结构的数组一般有以下几个要素: id 当前节点id parentId 当前节点的父节点id children 子节点列表(可能不会在接口中返回,需要组装时候自己加上) 原始结构:...目标结构: 关键就是一维数组中通过parentId找到其对应的父节点并添加到父节点的children数组中。...实现方案 最直接的方式就是遍历数组,并把找到的子节点逐一添加到父节点中 function listToTreeSimple(data) { const res = []; data.forEach...看起来竟然递归性能最佳 但是数据量稍微大一点…… (上面递归,下面非递归) 资源 原始数据列表 const list = [ { id: 1001, parentId: 0,
大家好,又见面了,我是你们的朋友全栈君。...1、将一个文件夹下的所有内容复制到另一个文件夹下 cp -r /home/packageA/* /home/cp/packageB/ 或 cp -r /home/packageA/..../home/cp/packageB/ 这两种方法效果是一样的。...2、将一个文件夹复制到另一个文件夹下 cp -r /home/packageA /home/packageB 运行命令之后packageB文件夹下就有packageA文件夹了。...3、删除一个文件夹及其下面的所有文件 rm -r /home/packageA 4、移动一个文件夹到另一个文件夹下面 mv /home/packageA /home/packageB/ 或 mv /home
您可以使用这些快捷方式指定相对路径,无论是在ls之类的命令中,还是在我们尚未讨论的其他命令中。要将当前位置移动到另一个目录,我们使用cd命令。...虽然这通常是首选的行为,但有时候目录列表太长,或者默认情况下没有正确排序。shell允许我们将输出从一个命令定向到另一个命令,直到输出对我们有用为止。...如果在命令末尾添加双&&),shell将一直等到前一个命令成功完成后才执行下一个命令。您可以使用此功能将一系列依赖于前面命令的成功的命令串在一起。...除了C-n和C-p访问历史记录中的下一个和上一个命令之外,以下键绑定使得更容易在bash-terminal中导航文本(C表示ctrl,M-表示alt): C-a将光标移动到行的开头 C-e将光标移动到行尾...C-f 将光标向前移动一个字符 C-b 将光标移回一个字符 M-f 将光标向前移动一个单词 M-b 将光标移回一个单词 更多信息 怎么样,学会了吗?
今天实习公司分配了一个数据处理的任务。...在将列表中的字符串连接成一个长路径时,我遇到了如下问题: import os path_list = ['first_directory', 'second_directory', 'file.txt...这我就纳闷了: ['first_directory', 'second_directory', 'file.txt'] 细思后想明白了,os.path.join 的输入必须是一个或多个 str ,而不能是...字符串列表的本质依然是list。指令把 字符串列表 理解成了一个 str ,就相当于对 单str 进行 os.path.join ,最后当然没变化啦。 ...os.path.join(path_list) head = '' for path in path_list: head = os.path.join(head, path) print head 终于将列表中的字符串连接成了一个完整的长路径
Target:指定新链接引用的路径(相对或绝对) 如将G盘的123文件夹映射到L盘并重命名为test mklink 硬链接/H和符号链接/D的区别 硬链接只能用于文件,不能用于文件夹,而且硬链接和目标文件必须在同一个分区或者卷中...但是硬链接具有以下一些不同的地方。 (1)硬链接必须引用同一个分区或者卷中的文件,而符号链接可以指向不同分区或者共享文件夹上的文件或者文件夹。...(7)硬链接看上去和真的文件一模一样(实际上就是真实的文件),不像符号链接那样有一个快捷方式的小箭头,但是硬链接并不会增加磁盘空间的占用。...如分别用 mklink /D dird tdir 和 mklink /J dirj tdir 创建 dird、dirj 对相对目录的 tdir 的符号链接和目录联接,之后将 dird、dirj 移动到其它目录下.../J dirj c:\demo\tdir 创建 c:\demo\tdir 的符号链接和目录联接,再将这两个目录链接移动到其它目录下,则 dird 和 dirj 均可正常指向 c:\demo\tdir;
而且写文件、查找翻页什么的 比我用鼠标快多了,那熟练的快捷键看的我一愣一愣的 ---- 光标移动: h或退格: 左移一个字符; l或空格: 右移一个字符; j: 下移一行; k: 上移一行; gj: 移动到一段内的下一行...w: 前移一个单词,光标停在下一个单词开头; W: 移动下一个单词开头,但忽略一些标点; e: 前移一个单词,光标停在下一个单词末尾; E: 移动到下一个单词末尾,如果词尾有标点,则移动到标点; b:...后移一个单词,光标停在上一个单词开头; B: 移动到上一个单词开头,忽略一些标点; (: 前移1句。...n%: 到文件n%的位置。 zz: 将当前行移动到屏幕中央。 zt: 将当前行移动到屏幕顶端。 zb: 将当前行移动到屏幕底端。...在当前位置插入另一个文件的内容。
关注我带你看更多技术知识和面试 还是蛮简单的 思路如果会了; 思路如下: 将其中一个数组中的非零元素获取到 并依次次放在数组中 ,, 剩下的空位赋值为 0 就好了 详细的话: 定义两个下标 (...相当于快慢下标),然后慢下标对应的值为 等于非零的值(通过快下标获取到的), 差的补0; public class Day4_demo6 { public static void main(String...nums.length;i++){ System.out.print(nums[i]+" "); } int fast = 0,slow=0; //定义两个下标
首先,Atom自带许多Emacs的快捷键来浏览文档。要想上移或者下移一个字符,你可以按ctrl-P和ctrl-N。左移或右移一个字符,按ctrl-B和ctrl-F。...这样等同于按下方向键,但是一些人不喜欢把他们的手移到方向键的位置。 除了单个字符的移动,还有一些其他的用于移动的快捷键。 alt-B, alt-left 移动到单词开头。...alt-F, alt-right 移动到单词末尾。 cmd-right, ctrl-E 移动到整行末尾 cmd-left, ctrl-A 移动到整行开头 cmd-up 移动到文件开头。...cmd-down 移动到文件末尾。 你也可以使用ctrl-G,通过指定一行(和列)来直接移动光标。这会弹出一个对话框问你想要跳到哪一行。...如果你按下shift-F2则会跳到上一个。 通过按下ctrl-F2,你可以看到当前项目中的所有书签的列表,并可以快速筛选它们,跳到任何一个书签的位置。
Fn–左箭头 Home:滚动到文稿开头 Fn–右箭头 End:滚动到文稿末尾。 Command–上箭头 将插入点移至文稿开头。 Command–下箭头 将插入点移至文稿末尾。...Option–右箭头 将插入点移至下一字词的词尾。 Shift–Command–上箭头 选中插入点与文稿开头之间的文本。 Shift–Command–下箭头 选中插入点与文稿末尾之间的文本。...Option–Shift–右箭头 将文本选择范围扩展到当前字词的词尾,再按一次则扩展到后一字词的词尾。 Control-A 移至行或段落的开头。 Control-E 移至行或段落的末尾。...按住 Command 键拖移 将拖移的项目移到其他宗卷或位置。拖移项目时指针会随之变化。 按住 Option 键拖移 拷贝拖移的项目。拖移项目时指针会随之变化。...按住 Option-Command 键拖移 为拖移的项目制作替身。拖移项目时指针会随之变化。 按住 Option 键点按开合三角 打开所选文件夹内的所有文件夹。这个快捷键仅在列表视图中有效。
连按 Command 键:在单独的标签页或窗口中打开文件夹。 按住 Command 键拖移到另一个宗卷:将拖移的项目移到另一个宗卷,而不是拷贝它。 按住 Option 键拖移:拷贝托移的项目。...拖移时按住 Option-Command:为拖移的项目制作替身。拖移项目时指针会随之变化。 按住 Option 键点按开合三角:打开所选文件夹内的所有文件夹。这个快捷键仅在列表视图中有效。...Fn–左箭头:Home:滚动到文稿开头。 Fn–右箭头:End:滚动到文稿末尾。 Command–上箭头:将插入点移至文稿开头。 Command–下箭头:将插入点移至文稿末尾。...Option–右箭头:将插入点移至下一字词的词尾。 Shift-Command–上箭头:选中插入点与文稿开头之间的文本。 Shift-Command–下箭头:选中插入点与文稿末尾之间的文本。...Option–Shift–左箭头:将文本选择范围扩展到当前字词的词尾,再按一次则扩展到后一字词的词尾。 Control–A:移至行或段落的开头。 Control–E:移至行或段落的末尾。
Fn-左箭头Home:滚动到文稿开头 Fn-右箭头End:滚动到文稿末尾 Command-上箭头将插入点移至文稿开头。...Shift- Command-上箭头选中插入点与文稿开头之间的文本 Shift- Command-下箭头选中插入点与文稿末尾之间的文本 sht- Command-左箭头选中插入点与当前行行首之间的文本。...Contro|-A移至行或段落的开头。 Control-E移至行或段落的末尾, Control-F向前移动一个字符。 Control-B向后移动一个字符。...按住 Command键拖移将拖移的项目移到其他宗卷或位置。拖移项目时指针会随之变化。 按住 Option键拖移拷贝拖移的项目。拖移项目时指针会随之变化。...按住 Option- Command键拖移为拖移的项目制作替身。拖移项目时指针会随之变化。 按住 Option键点按开合三角打开所选文件夹内的所有文 件夹。这个快捷键仅在列表视图中有效。
要了解更多快捷键,请查看您所用 app 的菜单。每个 app 都有其自己的快捷键,并且一个 app 中使用的快捷键可能不适用于另一个 app。...Fn–左箭头开头:滚动到文稿开头。Fn–右箭头结尾:滚动到文稿末尾。Command–上箭头将插入点移至文稿开头。Command–下箭头将插入点移至文稿末尾。...Control-A移至行或段落的开头。Control-E移至行或段落的末尾。Control-F向前移动一个字符。Control-B向后移动一个字符。Control-L将光标或所选内容置于可见区域中央。...Command-Option-V移动:将剪贴板中的文件从其原始位置移动到当前位置。...拖移时按 Command-Option为拖移的项目制作替身。拖移项目时指针会随之变化。Option-点按伸缩三角形打开所选文件夹内的所有文件夹。此快捷键仅在列表视图中有效。
h或退格: 左移一个字符; l或空格: 右移一个字符; j: 下移一行; k: 上移一行; gj: 移动到一段内的下一行; gk: 移动到一段内的上一行; +或Enter: 把光标移至下一行第一个非空白字符...w: 前移一个单词,光标停在下一个单词开头; W: 移动下一个单词开头,但忽略一些标点; e: 前移一个单词,光标停在下一个单词末尾; E: 移动到下一个单词末尾,如果词尾有标点,则移动到标点; b:...后移一个单词,光标停在上一个单词开头; B: 移动到上一个单词开头,忽略一些标点; ge: 后移一个单词,光标停在上一个单词末尾; gE: 同 ge ,不过‘单词’包含单词相邻的标点。...n%: 到文件n%的位置。 zz: 将当前行移动到屏幕中央。 zt: 将当前行移动到屏幕顶端。 zb: 将当前行移动到屏幕底端。 4.3 标记 使用标记可以快速移动。...C-u: 从当前位置移动到命令行开头。 C-b: 移动到命令行开头。 C-e: 移动到命令行末尾。 Shift-Left: 左移一个单词。 Shift-Right: 右移一个单词。
Fn–左箭头 开头:滚动到文稿开头。 Fn–右箭头 结尾:滚动到文稿末尾。 Command–上箭头 将插入点移至文稿开头。 Command–下箭头 将插入点移至文稿末尾。...Option–右箭头 将插入点移至下一字词的词尾。 Shift–Command–上箭头 选中插入点与文稿开头之间的文本。 Shift–Command–下箭头 选中插入点与文稿末尾之间的文本。...Option–Shift–右箭头 将文本选择范围扩展到当前字词的词尾,再按一次则扩展到后一字词的词尾。 Control-A 移至行或段落的开头。 Control-E 移至行或段落的末尾。...Control-F 向前移动一个字符。 Control-B 向后移动一个字符。 Control-L 将光标或所选内容置于可见区域中央。 Control-P 上移一行。...拖移时按住 Option-Command 为拖移的项目制作替身。拖移项目时指针会随之变化。 Option-点按开合三角形 打开所选文件夹内的所有文件夹。这个快捷键仅在列表视图中有效。
先上效果图 [在这里插入图片描述] --- 前言 前些天有个朋友问我,要实现一个树状的列表要怎么做,根据一个完全符合规则但是却很头疼的一个Json解析来实现,见下格式,对于有些Android开发者来说,...既然要逐级嵌套,先来一个LinearLayout,当然这个列表是可滑动的,外层嵌套一个ScrollView即可,Activity布局那就是这样的: 的item,一种是不带子布局的item,当遇到有嵌套的情况,即存在next字段,就可以使用带子布局的item,反之则是另一个!...存在子节点使用带有子布局的item,反之使用另一个!...,如果遇到需要加载更多的情况下,可以直接判断ScrollView是否滚动到底部,并且上次的网络加载是否完成,达成条件则再次调用27行代码进行插入即可!
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]。输出: [1,3,12,0,0]。...说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。力扣283。 答案2021-10-31: 一次遍历即可。双指针都从左往右遍历,其中一个指针遇0不右走遇1右走,另一个变量一直往右走。...遇到0,两个指针的值交换。 时间复杂度:O(N)。 额外空间复杂度:O(1)。 代码用golang编写。
基本移动 h或退格: 左移一个字符; l或空格: 右移一个字符; j: 下移一行; k: 上移一行; gj: 移动到一段内的下一行; gk: 移动到一段内的上一行; +或Enter: 把光标移至下一行第一个非空白字符...w: 前移一个单词,光标停在下一个单词开头; W: 移动下一个单词开头,但忽略一些标点; e: 前移一个单词,光标停在下一个单词末尾; E: 移动到下一个单词末尾,如果词尾有标点,则移动到标点; b:...后移一个单词,光标停在上一个单词开头; B: 移动到上一个单词开头,忽略一些标点; ge: 后移一个单词,光标停在上一个单词末尾; gE: 同 ge ,不过‘单词’包含单词相邻的标点。...n%: 到文件n%的位置。 zz: 将当前行移动到屏幕中央。 zt: 将当前行移动到屏幕顶端。 zb: 将当前行移动到屏幕底端 标记 使用标记可以快速移动。...:[n]r filename在第n行插入另一个文件的内容。 :r !date 在光标处插入当前日期与时间。同理,:r !
连按 Command 键:在单独的标签页或窗口中打开文件夹。 按住 Command 键拖移到另一个宗卷:将拖移的项目移到另一个宗卷,而不是拷贝它。 按住 Option 键拖移:拷贝托移的项目。...拖移时按住 Option-Command:为拖移的项目制作替身。拖移项目时指针会发生变化。 按住 Option 键点按开合三角:打开所选文件夹内的所有文件夹。这个快捷键仅在列表视图中有效。...Fn-左箭头:Home:滚动到文稿开头。 Fn-右箭头:End:滚动到文稿末尾。 Command-上箭头:将插入点移至文稿开头。 Command-下箭头:将插入点移至文稿末尾。...Option-右箭头:将插入点移至下一字词的词尾。 Shift-Command-上箭头:选中插入点与文稿开头之间的文本。 Shift-Command-下箭头:选中插入点与文稿末尾之间的文本。...Option-Shift-右箭头:将文本选择范围扩展到当前字词的词尾,再按一次则扩展到下一字词的词尾。 Control-A:移至行或段落的开头。 Control-E:移至行或段落的末尾。
命令大全,最详细(建议收藏) 光标的移动 h - 左移光标 j - 下移光标 k - 上移光标 l - 右移光标 gj - 下移光标(折行文本) gk - 上移光标(折行文本) H - 移动到当前页面顶部...M - 移动到当前页面中间 L - 移动到当前页面底部 w - 移动到下个单词开头 W - 移动到下个单词开头(单词含标点) e - 移动到下个单词结尾 E - 移动到下个单词结尾(单词含标点) b...- 移动到上个单词开头 B - 移动到上个单词开头(单词含标点) ge - 移动到上个单词结尾 gE - 移动到上个单词结尾(单词含标点) % - 跳转到配对的符号(默认支持的配对符号组:: '()',...,$d - 删除当前行到文件末尾 :.,1d - 删除当前行到文件开头 :10,$d - 从第 10 行到文件末尾 :g/{pattern}/d - 删除所有包含模式的行 :g!...:vim[grep] /foo/ **/* :cn[ext] - 移动至下一个 :cp[revious] - 移动至上一个 :cope[n] - 打开搜索结果列表 :ccl[ose] - 关闭 quickfix
j: 向下移动 k: 向上移动 xh: 向左移动x个字符距离 单词移动: w: 将光标移动到下一个单词的开头 b: 将光标移动到前一个单词的开头 e: 将光标移动到下一个单词的词末 E: 移动到单词的结尾...(忽略标点符号) ge: 将光标移动到上一个单词的词末 2w: 指定移动的次数 行移动: $: 将光标移动到当前行的行尾 0:将光标移动到当前行的行首 ^:将光标移动到当前行的第一个非空字符 2|:移到当前行的第...在屏幕中移动 xG: 跳转到指定的第x行,G移动到文件按末尾, ``(2次单引号)返回到跳转前的位置 gg: 移动到文件开头 x%: 移动到文件中间,就使用50% H: 移动到home M: 移动到屏幕中间...将光标移动到屏幕的顶部 zb:将光标移动到屏幕的底部 设置跳转标记 mx,my,mz设置三个位置,以m开头,后可接任意字母 `x, `y, `z 可以跳转到各自设置的位置 文本操作 文本插入操作 i:...放弃缓冲区的修改,恢复到文件打开时的状态 :edit file 编辑另一个文件 :wnext 保存当前缓冲区的修改并跳转到缓冲区列表中的下一个文件 :set autowrite:自动保存 标签页与折叠栏
领取专属 10元无门槛券
手把手带您无忧上云