快捷键 作用 备注 删除当前行 dd 查找某个内容 /content 使用n下一个,N上一个 保存离开 ZZ 复制粘贴 y p 撤回上一次操作 u 移动到单词末尾 e 移动到行末 $ 移动到行首...b 向下/上翻半页 ctrl + d/ctrl + u 跳转至第多少行 数字 + G 百分比跳转 直接输入10%,50%等 跳转多少行/多少字 数字 + hjkl 选中当前行 V 其实是进入行编辑模式...,进入会自动选择当前行 ctrl + v 块选择,可以用来多行注释和取消注释
to fname] -D 调试模式 -n 不使用交换文件,只使用内存 -r 列出交换文件并退出 -r(跟文件名) 恢复崩溃的会话 -L 同 -r...在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。...在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按键ESC即可。 末行模式 末行模式也称ex转义模式。...进入插入模式: i: 插入光标前一个字符 I: 插入行首 a: 插入光标后一个字符 A: 插入行未 o: 向下新开一行,插入行首 O: 向上新开一行,插入行首 进入命令模式: ESC:从插入模式或末行模式进入命令模式...按行移动,选中文本可视模式可以配合 d, y, >>, 块的删除,复制,左右移动 替换操作: r: 替换当前字符 R: 替换当前行光标后的字符 查找命令: /: str查找 n:
这个函数会尝试在原有内存块后面直接增加所需的空间,如果这样做不可行(比如原有内存块后面没有足够的连续空间),realloc会另外找一块足够大的内存,将原有数据复制到新内存块中,并释放原有的内存块。...这个函数的主要目的是在顺序列表满时自动扩容,以便能够继续添加元素。它首先检查列表是否已满,然后计算新的容量,并使用realloc函数尝试调整数组的大小。...4 : ps->capacity * 2; // 使用realloc函数尝试调整顺序列表的数组大小 // realloc可能会改变原有内存块的位置...尾插函数SeqListPushBack直接在末尾添加新元素 // 尾插法:在顺序列表的末尾插入一个新元素 void SeqListPushBack(SL* ps, SQDataType x) {...} 4.6顺序表头插 在插入新元素之前,它们都首先检查当前的容量是否足够,如果不够则调用 SeqListCheckCapacity 函数进行扩容。
i:插入光标前一个字符 I:插入行首 a:插入光标后一个字符 A:插入行末 o:向下新开一行,插入行首 O:向上新开一行,插入行首 移动光标 h:左移 j:下移...y 选择了某一块后,复制到缓冲区待用 yy 复制当前行 nyy 复制n行 yG 复制到最后一行 p:在光标所在位置向下新开辟一行,粘贴,大写表示在光标之上 所有的y换成d,就是把复制变成了剪切...+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/ 不加 g,表示只对搜索字符串的首次出现进行替换; g放在命令末尾,表示对搜索字符串的每次出现进行替换...4 set autoindent " 设置自动缩进:即每行的缩进值与上一行相等 set cindent " 使用 C/C++ 语言的自动缩进方式...molokai set nobackup " 取消备份文件 " 默认情况下,文件保存时,会额外创建一个备份文件,它的文件名是在原文件名的末尾
gets()函数的替代品 过去常使用fgets函数来代替gets函数,在输入处理方面与gets函数略有不同。...,不过puts函数在显示改字符串时又在末尾添加了换行符,因此apple pie后面又一行空行。...由此可见如果输入太长,超过数组可容纳的字符数时,fgets函数最容易使用,而且可以选择不同的处理方法,如果想让程序急促使用输入行中超出的字符可以参考案例二中的处理方法,如果想丢弃初入行的超出字符,可以参考案例三中的处理方法...scanf()函数 使用scanf()和%s转换说明读取字符串。scanf()和gets()或者fgets()的区别在于它们如何缺点字符串的末尾。...scanf()和gets()类似,也存在一些潜在的缺点:如果输入行的内容过长,scanf()也会导致数据溢出,不过可以在%s转换说明中使用字段宽度可以防止溢出。
在源代码中每行可执行语句生成的代码之后附加一段更新覆盖率统计结果的代码,也就是插桩(后面详细介绍);3、 Gcc编译,会生成*.gcno文件,它包含重建基本块图和相应块的源码的行号信息;4、 在最终可执行文件中...三、原理(插桩)gcov是使用 基本块BB 和 跳转ARC 计数,结合程序流图来实现代码覆盖率统计的:图2 程序流图基本块BB:如果一段程序的第一条语句被执行过一次,这段程序中的每一个都要执行一次,称为基本块...所以对部分 ARC插桩,只要满足可以统计出来所有的BB和ARC的执行次数即可。...*count;//指向bx2的指针 long ncounts;//桩点个数 struct bb *next;//下一个文件的BX2信息};1、GCC在插桩的过程中会向源文件的末尾插入一个静态数组...,在调用main之前会有一个类似构造函数的函数,进行构建链表。
可视模式:在选择文本之前,需要先进入可视模式。Vi提供了三种可视模式:字符可视模式、行可视模式和块可视模式。字符可视模式:按v进入,使用方向键选择要复制的文本。...# 进入可视模式并选择文本v # 进入字符可视模式V # 进入行可视模式Ctrl-v # 进入块可视模式2....编辑操作在Vi中,编辑操作主要包括删除、复制、粘贴、替换和缩排等。删除文本:x 删除光标所在字符。dw 删除从光标位置到单词末尾的字符。d0 删除从光标位置到行首的字符。...# 设置折叠方式并折叠代码:set fdm=markerzc # 折叠当前代码块zo # 打开当前折叠的代码块8. 高效编辑技巧标记和跳转:使用m命令添加标记,使用''或'`命令跳转到标记位置。...快速匹配:使用*或#命令查找当前单词的下一个或上一个匹配项。文本对象:使用vi{}、va{}、vi()等命令选中括号内的内容。多行缩进:在可视模式下,使用>或<命令增加或减少缩进。
,是从时间和数据使用频率来决定的, 实现:LFU的每个数据块都有一个引用计数,所有数据块按照引用计数排序,具有相同引用计数的数据块则按照时间排序; 缺点:需要记录所有数据的访问记录,内存消耗较高;需要基于引用计数排序...链表 上一节说数组的时候,我一直强调要一段连续的空间,链表就不需要,他是通过“指针”将一组零散的内存块串联起来使用,不需要连续只要有空间就够了。...在操作链表的时候,要格外注意二点: 边界问题,例如插入有头插尾插中间插入,要注意额外的操作; 代码顺序,防止丢失指针 单链表 ?...,将会被移到链表的尾部,put使用的也是尾插法; 同时get是从尾部开始访问,所以等于越常使用的数据,遍历的时间越短。...LRU 初始化启动 true LRU 缓存初始化的时候,就用了这个 accessOrder,设置为true,从而最近被访问到的数据放到了链表末尾,链表前面的数据是长时间没有使用的,从链表末尾开始访问的话
) 3.2 sed 选项 选项 功 能 -e 进行多项编辑,即对输入行应用多条 sed 命令时使用 -n 取消默认的输出 -f 指定 sed 脚本的文件名 4.退出状态 sed...不同的是,sed 使用的正则表达式是括在斜杠线"/"之间的模式。 如果要把正则表达式分隔符"/"改为另一个字符,比如 o,只要在这个字符前加一个反斜线,在字符后跟上正则表达式,再跟上这个字符即可。...默认情况下,sed 把输入行打印在屏幕上,选项-n 用于取消默认的打印操作。当选项-n 和命令 p 同时出现时,sed 可打印选定的内容。...sed '/my/p' datafile #默认情况下,sed把所有输入行都打印在标准输出上。如果某行匹配模式my,p命令将把该行另外打印一遍。 ...sed 先将输入行从文件复制到模式空间里,然后对该行执行 sed 命令,最后将模式空间里的内容显示在屏幕上。如果发出的是命令 d,当前模式空间里的输入行会被删除,不被显示。
1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串......线性表在逻辑上是线性结构,也就说是连续的一条直线。...在头文件SeqList.h中声明定义一下这个顺序表,然后声明基本功能,那么顺序表的基本功能就是增删查改,头插头删,尾插尾删。...尾删就是在数组的末尾插入需要的数据,首先我们要判断一下空间是否满了,满了的话就使用realloc进行扩容,使用另外一块空间tmp来接收,如果成功则将tmp这块空间给a,然后将capacity乘上2。...数组的末尾也就是size元素个数,因为size是下标加1,所以直接在size这个位置上插入就行了,然后将size++。
从时间角度出发,(2)可以观察到,有些行人可能会消失在序列的末尾,如上图(b)中列所示。而有些行人会在序列的开始阶段受到遮挡,如上图(b)右侧所示,这些现象提供了非常关键时间注意力线索。...,并通过余弦相似度计算相似度: 计算得到的匹配概率 可以看作是当前输入行人特征中包含有背景干扰项的概率,作者认为背景干扰项存在多种,因此使用M个记忆向量分别进行存储,通过加权求和可以得到聚合记忆特征...: 之后使用同样的方式对空间模块细化后的特征向量 计算全局平均池化,并与记忆模块匹配得到的结果 相乘就得到整个网络的最终输出,作为当前输入行人序列的特征。...然后从每个块中随机选择一帧构成序列再送入网络。...对于时间记忆模块,作者也可视化了一部分具有相同匹配key的输入序列,如下图所示,可以观察到每个key检索到的序列具有相似的时序模式,如下图左侧的序列中,行人都是在序列的末尾消失,在右侧的序列中,行人的外观在整个序列中都非常相似
剪切行(空选) Ctrl+C 复制行(空选) Alt+ ↑ / ↓ 向上/向下移动行 Shift+Alt + ↓ / ↑ 向上/向下复制行 Ctrl+Shift+K 删除行 Ctrl+Enter 在下面插入行...Ctrl+Shift+Enter 在上面插入行 Ctrl+Shift+\ 跳转到匹配的括号 Ctrl+] / [ 缩进/缩进行 Home/End 转到行首/行尾 Ctrl+Home 转到文件开头 Ctrl...Ctrl+0 折叠所有区域 Ctrl+K Ctrl+J 展开所有区域 Ctrl+K Ctrl+C 添加行注释 Ctrl+/ 添加行注释 Ctrl+K Ctrl+U 删除行注释 Shift+Alt+A 添加块注释...插入光标 Ctrl+Alt+ ↑ / ↓ 在上方/下方插入光标 Alt+Click 插入光标 Ctrl+Alt+ ↑ / ↓ 在上方/下方插入光标 Ctrl+U 撤消上一次光标操作 Shift+Alt+I 在选定的每一行的末尾插入光标...Ctrl+K Enter 保持预览模式编辑器打开 Ctrl+Tab 下一个打开 Ctrl+Shift+Tab 打开上一个 Ctrl+K P 复制活动文件的路径 Ctrl+K R 在资源管理器中显示活动文件
行结构为例,给出结构图 2 (a) BB 结构,(b) BB 行信息结构,在本章末尾覆盖率解析部分,我们利用这个结构图还原代码执行次数(每行等高格代表 64bit): ?...降低使用成本 在接入方面,接入增量代码测试覆盖率工具只需一次接入配置,同步到代码仓库后,团队中成员无需配置即可使用,降低了接入成本。...在使用方面,考虑到插桩在编译时进行,对全部代码进行插桩会很大程度降低编译速度,我们通过解析 Podfile(iOS 开发中较为常用的包管理工具 CocoaPods 的依赖描述文件),只对 Podfile...中使用本地代码的仓库进行插桩(可配置指定仓库),降低了团队的开发成本。...开发者只需进行接入配置,再次运行时,工程中那些作为本地仓库进行开发的代码库会被自动插桩,并在 .git 目录插入 hooks 信息;当开发者使用模拟器进行需求自测时,插桩统计结果会被自动分发出去;在代码被推到远端前
sed的常用参数 -n 屏蔽默认输出;如果不加-n选项会全部输出文本满足条件的行再重复输出 -r 如果使用扩展正则,则需要添加-r选项,默认不支持扩展正则,只支持标准正则 -i 直接修改源文件;不加-i...多行时除最后一行外,每行末尾需用“\”续行 b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。 c 用此符号后的新文本替换当前行中的文本。...列出非打印字符 n 读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理 N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。...g 在行内进行全局替换 w 写并追加模板块到file末尾。将所选的行写入文件 W 写并追加模板块的第一行到file末尾。...x 交换暂存缓冲区与模板空间的内容 y 将字符替换为另一字符(不能对正则表达式使用y命令) p 打印行,常与-n一起用 = 打印当前行号码。
但有的时候,领导做的太过分,我们也要站起来反抗,不然后面也不会有太大的发展。 就像一位程序员朋友所经历的:这月15号辞职了,之前在在公司技术部门,由于自己入行比较早,老板下了个任务,让公关一个小项目。...订好了奖金3万块,我带着3个兄弟起早贪黑的干了2个月。结果我只拿到了6千块的奖金,而其他的3个兄弟每人两千,当晚我才知道被经理抢功了。...当时其实觉得气不过,插了16行的代码,bug更是多不胜数,反正也打算不干了。 1、领导抢功是职场常态 凡是有过多年职场经验的人,都对领导抢功这件事有所了解。...这就像是研究生导师带着学生做课题一样,最后做出了成功,在署名的时候,也很少会写上那些为这个课题贡献的学生名字。同样的道理在职场上,也是如此。...2、遇到了不靠谱的公司和领导,辞职为妙 在现实中职场上,会存在诸多的潜规则,这些潜规则若是能够利用得好的话,无异于如虎添翼,若是不能够充分的利用,也就成为了自己前进道路上的拦路虎。
使用保持空间可以完成以上任务,因为可以用保持空间存储输入行的备份而将需要转换的部分独立出来,然后在模式空间进行转换。...the Match statement 从这个脚本可以看出,灵活地使用保持空间对于隔离和操作输入行的某部分内容很有用。...一旦一个替换被执行,其后的 t 命令就使控制到达脚本的末尾。如果在 .Rh 行上有三个参数,那么第一个替换命令之后的 t 命令为真,sed 继续执行下一个输入行。...如果上面的脚本是一个更大的脚本中的一部分,可以使用标签(如形象地命名为“break”)直接转移到分组命令的末尾,然后继续执行其它一些命令。...使用 sed 的正常控制流,下一个输入行被读入模式空间,并且控制返回到脚本的顶端。每次尝试匹配模式时,都可以用相同的方式使用分支。
您还需要一个合理的monospace字体来正确地支持Unicode块字符,为此我衷心推荐Adobe的源代码专业版....按键顺序插入来建立索引 在索引中按键顺序插入行的效率更高,主要有两个原因: 1.页面可以被完全填满,数据库(经过充分的优化)可以检测“批量加载”行为,并通过创建新的空页面来有效地分割页面,而不是将页面分成两半...下面是一个只有主键聚集索引的表的例子,通过按键顺序插入行来构建: $ innodb_space -s ibdata1 -T test/t space-lsn-age-illustrate ?...接下来是32个单独分配的“片段”页,它们首先在索引中分配,然后才切换到分配完整的区段。然后,索引页会一直运行到使用空间的末尾。...您可以在这里看到,随机插入索引在1043个页面上比有序插入索引在737个页面上大41%。另外,还有206个页面没有使用,使得实际磁盘空间使用增加了57%。
而且关键是: 免费 中文 插件多 所以,我将电脑上的各种文本阅读器都替换成了VSCode。 但是使用新的软件,往往就会开始新的一轮的快捷键的学习了。...Ctrl+X代替) Ctrl+Enter 在下面插入行 Ctrl+Shift+Enter 在上面插入行 Ctrl+Shift+\ 跳转到匹配的括号 Ctrl+] / [ 缩进/凸出行 Home / End...介绍一些多行操作的快捷键 快捷键 描述 Alt+Click 插入光标 Ctrl+Alt+ ↑ / ↓ 在上方/下方插入光标 Ctrl+U 撤消上次光标操作 Shift+Alt+I 在选定的每行末尾插入光标...可能是我接触的比较少吧。 2.6 富语言编辑快捷键 主要介绍富语言编辑的各种快捷键 如果有建议内容,可以通过Ctrl+I 在弹出的浮动块中就会显示相关建议。...(因为使用了快捷键`符号Tab键上面,所以样式显示的有差异。)
一.了解项目功能 在本次项目中我们的目标是实现一个顺序表: 该顺序表使用动态内存分配,可以用来存储任意数量的同类型数据....这里的第一行使用的typedef类定义的作用是方便我们后续在使用顺序表时对存储的数据类型做更改,比如后续我们不想存储int类型数据了,就可以很方便的在这里对数组类型做更改.比如改成char类型,或者double...因此,我们应该始终使用有效的指针变量来接收malloc函数返回的指针,以确保我们能够正确地访问和释放动态分配的内存块。...这三种方式都可以实现顺序表的元素插入,接下来我们分别来看一下这三种插入: 顺序表元素尾插 尾插元素:将元素插入到顺序表的最后一个位置,只需要在arr数组的末尾添加元素即可。...=0的位置插入元素时,其实就相当于顺序表的头插了,当我们要求在pos=size的位置插入元素时,其实就相当于顺序表的尾插了.因此,如果写了任意指定位置插入函数,我们就完全不再需要再写头插和尾插函数了.因为任意指定位置插入函数就可以很好的实现头插和尾插的功能
上一篇里我们详述了多边形马赛克的实现步骤,末尾提出了一个思考:如何在涂抹时让马赛克逐块显示呢? 再回顾一下多边形马赛克的实现。首先进行图片预处理,将原图转成bitmap后生成铺满马赛克的全图。...手指移动的时候从touch回调里获取坐标点,在这些点之间进行插值,然后以插值之后的路径点为圆心将马赛克图层里对应的区域贴过去,这样就完成了对图像的特定区域打码的处理。...试想一下,如果上述步骤不变,要想让多边形马赛克一块一块的显示出来,首先得计算手指移动时经过了哪些马赛克块。具体来说,也就是在每一次touchMove的回调都需要计算若干个圆形与哪些多边形马赛克相交。...具体来说,则是遍历插值之后的坐标点,找到距离该点在特定半径之内的马赛克重心,然后绘制这些马赛克块。...也就是说,在1/60秒的时间里,我们需要完成插值、找到马赛克块、以及绘制马赛克块等步骤,如果在绘制的时候还需要计算平均rgb值,有可能会因为计算量太大而造成UI卡顿。
领取专属 10元无门槛券
手把手带您无忧上云