slice

JS substring substr slice区别

谁说胖子不能爱 提交于 2020-02-05 04:28:52
1、api说明 (1) substring str.substring(indexStart[, indexEnd]) substring 提取从 indexStart 到 indexEnd ( 不包括 )之间的字符。特别地: 如果 indexStart 等于 indexEnd , substring 返回一个空字符串。 如果省略 indexEnd , substring 提取字符一直到字符串末尾。 如果任一参数小于 0 或为 NaN ,则被当作 0。 如果任一参数大于 stringName.length ,则被当作 stringName.length 。 如果 indexStart 大于 indexEnd ,则 substring 的执行效果就像两个参数调换了一样。 说明:参数不支持 负数 ! (2) substr str.substr(start[, length]) tart 是一个字符的索引。首字符的索引为 0,最后一个字符的索引为 字符串的长度减去1。 substr 从 start 位置开始提取字符,提取 length 个字符(或直到字符串的末尾)。 如果 start 为正值,且大于或等于字符串的长度,则 substr 返回一个空字符串。 如果 start 为负值,则 substr 把它作为从字符串末尾开始的一个字符索引。如果 start 为负值且 abs(start)

slice,substr和substring的区别

亡梦爱人 提交于 2020-02-05 04:28:41
首先,他们都接收两个参数,slice和substring接收的是起始位置和结束位置(不包括结束位置),而substr接收的则是起始位置和所要返回的 字符串长度 。直接看下面例子: 1 var test = 'hello world';2 3 alert(test.slice(4,7)); //o w4 alert(test.substring(4,7)); //o w5 alert(test.substr(4,7)); //o world 这里有个需要注意的地方就是:substring是以两个参数中较小一个作为起始位置,较大的参数作为结束位置。 如: alert(test.substring(7,4)); //o w 接着,当接收的参数是负数时,slice会将它字符串的长度与对应的负数相加,结果作为参数;substr则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数;substring则干脆将负参数都直接转换为0。测试代码如下: 1 var test = 'hello world';2 3 alert(test.slice(-3)); //rld4 alert(test.substring(-3)); //hello world5 alert(test.substr(-3)); //rld6 alert(test.slice(3,-4)); //lo w7 alert

关于视频的一些概念

南楼画角 提交于 2020-02-05 00:42:18
http://www.samirchen.com/video-concept/ 关于视频的一些概念 2016-01-28 视频相关概念 视频文件格式 文件格式这个概念应该是我们比较熟悉的,比如我们常见的 Word 文档的文件格式是 .doc ,JPG 图片的文件格式是 .jpg 等等。那对于视频来说,我们常见的文件格式则有: .mov 、 .avi 、 .mpg 、 .vob 、 .mkv 、 .rm 、 .rmvb 等等。文件格式通常表现为文件在操作系统上存储时的后缀名,它通常会被操作系统用来与相应的打开程序关联,比如你双击一个 test.doc 文件,系统会调用 Word 去打开它。你双击一个 test.avi 或者 test.mkv 系统会调用视频播放器去打开它。 同样是视频,为什么会有 .mov 、 .avi 、 .mpg 等等这么多种文件格式呢?那是因为它们通过不同的方式实现了视频这件事情,至于这个不同在哪里,那就需要了解一下接下来要说的「视频封装格式」这个概念了。 视频封装格式 视频封装格式,简称视频格式,相当于一种储存视频信息的容器,它里面包含了封装视频文件所需要的视频信息、音频信息和相关的配置信息(比如:视频和音频的关联信息、如何解码等等)。一种视频封装格式的直接反映就是对应着相应的视频文件格式。 下面我们就列举一些文件封装格式: AVI 格式 ,对应的文件格式为

golang用slice、list当queue

时光怂恿深爱的人放手 提交于 2020-02-03 21:48:33
背景 golang没有queue这种类型,不过可以用slice、list模拟 slice当queue 声明队列 var queue []int 入队一个元素: queue = append(queue, 1) 出队一个元素: if len(queue) > 1 { queue = queue[1:] } 问题:当不断入队列时,需不停的扩容 list当queue 初始化一个队里: queue := list.New() 入队一个元素: queue.PushBack(1) 出队一个元素: if queue.Len() > 1 { queue.Remove(queue.Front()) } 实例:层次遍历二叉树 list题解 func levelOrderBottom(root *TreeNode) [][]int { var result [][]int if root == nil { return result } queue := list.New() queue.PushBack(root) for queue.Len() > 0 { curlen := queue.Len() var curList []int for i:= 0; i < curlen; i++ { curTree := queue.Remove(queue.Front()).(*TreeNode)

Go语言初探

China☆狼群 提交于 2020-02-02 07:42:11
Go语言基础 规则 大写字母开头变量为共有变量,小写字母开头为私有变量(函数类似) Iota iota枚举(默认开始值为0,const中每增加一行,值加1) slice 引用类型(类似于动态数组),相比于array,它没有长度限制 make & new make返回初始化后的值(非零),只能被用于slice、map、channel new返回指针,一般很少被使用 goto(无条件跳转,配合标签使用,无条件跳转至标签,可用于跳出循环) 由于可随意跳转,在庞大的系统中不利于debug,所以在coding中会通过结构化程序设计来规避这类问题,那么,在go语言设计者为何会继续沿用goto呢? 最开始提出goto有害论主要是当时的背景导致的,最开始使用的是非结构化的过程语言,例如BASIC和各种汇编语言 可读性强,可以书写出干净的退出功能(将所有退出方式统一编辑,利用goto进行跳转) 低级性能改进,goto语句执行的非常快 defer(延迟语句,函数执行到最后会按照逆序执行defer语句,可用于处理资源泄漏问题) 在函数中使用时,采用先进后出模式 panic & recover(go没有异常机制,使用这两个内置函数来代替异常机制) 调用panic中断函数执行(但defer语句仍然会被执行),退出执行 利用recover + defer可以捕获panic的输入值,并恢复正常执行

Go的切片:长度和容量

女生的网名这么多〃 提交于 2020-01-31 02:18:16
虽然说 Go 的语法在很大程度上和 PHP 很像,但 PHP 中却是没有“切片”这个概念的,在学习的过程中也遇到了一些困惑,遂做此笔记。 困惑1 :使用 append 函数为切片追加元素后,切片的容量时变时不变,其扩容机制是什么? 困惑2 :更改切片的元素会修改其底层数组中对应的元素。为什么有些情况下更改了切片元素,其底层数组元素没有更改? 一、切片的声明 切片可以看成是数组的引用。在 Go 中,每个数组的大小是固定的,不能随意改变大小,切片可以为数组提供动态增长和缩小的需求,但其本身并不存储任何数据。 /* * 这是一个数组的声明 */ var a [5]int //只指定长度,元素初始化为默认值0 var a [5]int{1,2,3,4,5} /* * 这是一个切片的声明:即声明一个没有长度的数组 */ // 数组未创建 // 方法1:直接初始化 var s []int //声明一个长度和容量为 0 的 nil 切片 var s []int{1,2,3,4,5} // 同时创建一个长度为5的数组 // 方法2:用make()函数来创建切片:var 变量名 = make([]变量类型,长度,容量) var s = make([]int, 0, 5) // 数组已创建 // 切分数组:var 变量名 []变量类型 = arr[low, high],low和high为数组的索引。

In python, what is the difference between slice with all the element and itself? [duplicate]

爱⌒轻易说出口 提交于 2020-01-30 11:04:28
问题 This question already has answers here : What is the difference between slice assignment that slices the whole list and direct assignment? (4 answers) Closed 8 days ago . I saw a following line and I have difficulty understanding why someone would express it this way. numbers = list(range(10)) numbers[:] = [n for n in numbers if n % 2 == 0] I attempted following line and it gives me the same result. numbers = [n for n in numbers if n % 2 == 0] I understand that [:] means that its array with

Insert value in a slice at given index

 ̄綄美尐妖づ 提交于 2020-01-30 04:12:09
问题 Given array1 := []int{1, 3, 4, 5} array2 := []int{2, 4, 6, 8} I want to insert array2[2] i.e 6 at array1[1] i.e before 3 so that array1 becomes a slice of {1, 6, 3, 4, 5} . How can I do it? Most the techniques I read online involve using the : operator but results in remaining elements being inserted as well. How can I append single values at an index in a slice? 回答1: Simple, efficient and logical way: Make sure array1 has enough capacity (length) to accomodate the new, insertable element. To

MongoDB学习笔记(查询)

丶灬走出姿态 提交于 2020-01-28 05:03:41
1. 基本查询: 构造查询数据。 > db.test.findOne() { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35, "genda" : "male", "email" : "stephen@hotmail.com" } --多条件查询。下面的示例等同于SQL语句的where name = "stephen" and age = 35 > db.test.find({"name":"stephen","age":35}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35, "genda" : "male", "email" : "stephen@hotmail.com" } --返回指定的文档键值对。下面的示例将只是返回name和age键值对。 > db.test.find({}, {"name":1,"age":1}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35 } --指定不返回的文档键值对。下面的示例将返回除name之外的所有键值对。 > db

VTM3.0代码阅读:xCheckRDCostMerge2Nx2N函数

回眸只為那壹抹淺笑 提交于 2020-01-27 08:39:28
xCheckRDCostMerge2Nx2N在xCompressCU函数中调用,用来测试Merge模式、mmvd模式以及CIIP模式。 首先由getInterMergeCandidates获取merge候选模式信息,存储于,mergeCtx。同时由merge列表获取MMVD模式的两个baseMV。 如果不进行fastMerge,则跳过SATD直接进行RDO选最优 fastMerge时,对7个merge候选模式进行SATD,分别进行MC获得pred像素,选取cost最小的4个merge候选;对于MMVD模式分别以这两个mv为中心进行4方向8步长的计算,得到最优的baseMV、方向和步长。CIIP模式则选择经过SATD之后的前4个merge模式,分别于帧内模式结合,选取最优的merge模式和帧内模式。 对RdModeList中的merge候选、MMVD模式以及CIIP模式,统一进行RDO选择最优。 void EncCu : : xCheckRDCostMerge2Nx2N ( CodingStructure * & tempCS , CodingStructure * & bestCS , Partitioner & partitioner , const EncTestMode & encTestMode ) { const Slice & slice = * tempCS - >