网上药店
您现在的位置: 左耳 >> 左耳剧照 >> 正文 >> 正文

左耳听风ARTS第十一周

来源:左耳 时间:2020/8/21

每周完成一个ARTS(Algorithm,Review,Tips,Share):至少做一道leetcode算法题,阅读并点评至少一篇英文技术文章,学习至少一个技术技巧,分享一篇有观点和思考的技术文章.

Algorithm

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。示例1:给定数组nums=[1,1,2],函数应该返回新的长度2,并且原数组nums的前两个元素被修改为1,2。你不需要考虑数组中超出新长度后面的元素。示例2:给定nums=[0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度5,并且原数组nums的前五个元素被修改为0,1,2,3,4。你不需要考虑数组中超出新长度后面的元素。考虑用2个指针,一个在前记作i,一个在后记作j,算法流程如下:1.比较i和j位置的元素是否相等。如果相等,j后移1位,如果不相等,将j位置的元素复制到i+1位置上,i后移一位,j后移1位重复上述过程,直到j等于数组长度。返回i+1,即为新数组长度。classSolution{publicintremoveDuplicates(int[]nums){if(nums.length==0

nums==null)return0;inti=0;intj=1;while(jnums.length){if(nums[i]!=nums[j]){if(j-i1){nums[i+1]=nums[j];}i++;}j++;}returni+1;}}

Review

Hash的交易数据MerkleRoot树主要是用来记录一个智能合约中最终发生的交易信息。

Tips:

1)无条件查询如果只有orderbycreate_time,即便create_time上有索引,也不会使用到。

因为优化器认为走二级索引再去回表成本比全表扫描排序更高。

所以选择走全表扫描,然后根据老师讲的两种方式选择一种来排序

2)无条件查询但是是orderbycreate_timelimitm.如果m值较小,是可以走索引的.

因为优化器认为根据索引有序性去回表查数据,然后得到m条数据,就可以终止循环,那么成本比全表扫描小,则选择走二级索引。

1,执行器查看表定义,发现name、city、age字段的长度之和超过max_length_for_sort_data,所以初始化sort_buffer的时候只放入id和name字段。

2,执行器调用存储引擎的读数据接口,依次获取满足条件的数据的id和name,存入sort_buffer。

3,排序。

4,执行器根据limit条件筛选出id,再次调用引擎读数据的接口获取相应的数据,返回客户端。

整个过程实际上是被执行器拆成了两次查询,共调用两次存储层的读数据接口,所以总的扫描行数需要相加。(

b-

a=)

Share:

Postwoman?APIrequestbuilderpostwoman.io

purpose

转载请注明:http://www.quwenlai.com/zejz/17666.html

  • 上一篇文章:
  • 下一篇文章: 没有了