精华内容
下载资源
问答
  • 局部最小值位置

    2018-06-07 08:55:48
    定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0]<arr[1],那么arr[0]是局部最小;如果arr[N-1]<arr[N-2],那么arr[N-1]是局部最小;如果0<i&...

    定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0]<arr[1],那么arr[0]是局部最小;如果arr[N-1]<arr[N-2],那么arr[N-1]是局部最小;如果0<i<N-1,既有arr[i]<arr[i-1]又有arr[i]<arr[i+1],那么arr[i]是局部最小。 给定无序数组arr,已知arr中任意两个相邻的数都不相等,写一个函数,只需返回arr中任意一个局部最小出现的位置即可.

    class Solution {
    public:
        int getLessIndex(vector<int> arr) {
            int n=arr.size();
            if(n==0)
                return -1;
            if(n==1)
                return 0;
            if(arr[0]<arr[1])
                return 0;
            if(arr[n-1]<arr[n-2])
                return n-1;
            int left=1;
            int right=n-2;
            while(left<=right)
            {
                    int mid=left+(right-left)/2;
                    if(arr[mid]<arr[mid-1]&&arr[mid]<arr[mid+1])
                        return mid;
                    else if(arr[mid]>arr[mid-1])
                        right=mid-1;
                    else if(arr[mid]>arr[mid+1])
                        left=mid+1;
            }
            return -1;
        }
    };

    展开全文
  • 什么是程序的局部性原理

    千次阅读 2019-12-02 11:38:14
    01、前言 作为有追求的程序员,我们日常在写代码的时候往往都会运用很多奇技淫巧,不单单是为了炫耀我们的技术,更是为了追求更高的效率。...说到局部性原理,那我们首先要知道什么是局部性原理,局部性原理...

    01、前言

    作为有追求的程序员,我们日常在写代码的时候往往都会运用很多奇技淫巧,不单单是为了炫耀我们的技术,更是为了追求更高的效率。了解局部性原理,可以有效的帮助我们理解和写出更好的代码,对于局部性原理可能有的小伙伴知道,有的小伙伴不知道,知道的小伙伴就当做复习知识点,不知道的小伙伴也没关系,接着往下看就知道了。

    02、什么是局部性原理

    说到局部性原理,那我们首先要知道什么是局部性原理,局部性原理分为两部分:

    • 时间局部性:指的是在程序运行过程中最近被引用到的存储器位置在程序执行后期还会被多次引用到的可能性很大。
    • 空间局部性:指的是程序运行过程中如果一个存储器的位置被引用,那么在程序执行后期该存储器附近的位置被引用的可能性很大。

    简单来说就是一个变量在程序运行过程中,如果被引用过一次,那后续很有可能会再被引用到;一个变量被访问到过后,这个变量所在的位置附近的位置很有可能在程序后续运行中被访问到。

    03、示例

    上面是通过理论来说明的,下面我们通过一段代码来看看局部性y原理

    public int sum(int[] array) {
            int sum = 0;
            for (int i = 0; i < array.length; i++) {
                sum = sum + array[i];
            }
            return sum;
    }
    

    从上面的这段代码来看,就是一个很简单的数组元素求和,这里我们主要看 sum 和 array 两个变量,我们可以看到 sum 在每次循环中都会用到,另外它只是一个简单变量,所以我们可以看到,sum 是符合我们上面提到的时间局部性,再访问一次后还会被继续访问到,但是它不存在我们所说的空间局部性了。

    相反的,array 数组中的每个元素只访问一次,另外数组底层的存储是连续的,所以 array 变量符合我们上面提到的空间局部性,但是不符合时间局部性。

    这只是局部性原理的简单示例,对于局部性原理还有很多地方会用到,我们如果能熟练的掌握和使用,对我们的帮助会很大的。

    04、相关应用

    4.1、CPU 缓存

    上面的示例其实很简单,相信大家都能理解,另外局部性原理其实在我们日常使用的软件中随处可见,并且在操作系统中也少不了。我们知道 CPU 的速度是非常快的,而且 CPU 与内存之间有多级缓存,如下图(图片来源于网络)

    image-20191129115010857.png

    为了充分的利用 CPU,操作系统会利用局部性原理,将高频的数据从内存中加载的缓存中,从而加快 CPU 的处理速度。

    4.2、广义局部性

    其实我们的局部性原理不单单是上面提到的狭义性的局部性,还可以是广义的局部性。我们系统里面的热点数据,CDN 数据,微博的热点流量等等这些都利用了局部性原理。只是我们可能没有意识到而已,实际上已经在使用了。我们会通过 Redis 缓存热点数据,会通过 CDN 提前加载图片或者视频资源,等等,都是因为这些数据本身就符合局部性原理,合理的利用局部性可以得到了能效、成本上的提升。

    4.3、利弊结合

    任何事情都是多面性的,局部性原理虽然我们使用起来很不错,可以提高系统性能,但是在有些场景下,我们是需要避免局部性原理的出现的。或者说出现了这种情况,我们需要人工处理。我们可以试想一下,如果在我们的一个大数据处理平台上,由于局部性原理的存在,导致我们部分节点数据庞大运算吃力,部分节点数据量小十分空闲,这种情况自然是不合理,我们就需要把数据按照业务场景进行重新分配,以达到整个集群的最大利用。

    05、总结

    今天给大家介绍了一下局部性原理,我们提到了时间局部性和空间局部性,通过一个代码示例和几个业务场景给大家简单介绍了局部性的使用。最后也提到局部性原理有利也有弊,我们需要根据业务场景和需求合理话的使用。

    展开全文
  • 局部变量的位置分配

    2014-06-19 15:53:14
    局部变量保存在栈里 栈和堆的区别是 栈是系统根据变量大小自动分配空间的 堆是你用new,malloc等手动分配空间的 局部变量保存在栈内存区; 栈内存区的地址是连续的,由系统控制速度较快而 堆内存区的地址是不...

    局部变量保存在栈里
    栈和堆的区别是
    栈是系统根据变量大小自动分配空间的
    堆是你用new,malloc等手动分配空间的

    局部变量保存在栈内存区;
    栈内存区的地址是连续的,由系统控制速度较快而
    堆内存区的地址是不连续的,它是系统将空闲内存块链接起来的链表,
    用户用new/malloc请求分配时,找到第一个满足大小要求的块从链表中删除此节点,
    然后分给用户,没有栈内存速度快,但是很灵活。

    操作系统给程序运行的内存非了4个区域:
    1 代码区:顾名思义就是存放运行的代码的
    2 全局数据区: 存放全局数据和静态数据以及常量.
    3 栈区 函数调用时的返回地址,参数压栈,局部变量,返回数据等都存放在栈区.
    4 堆区,存放程序动态分配的内存(new,malloc等函数分配的)
    栈内存是由系统自己分配和释放的,而堆内存要由程序员自己全全控制的,否则会出现内存泄露.
    展开全文
  • //在数组中找到一个局部最小的位置 public class MinArr{ //(1)获得局部最小的位置 public static int GetMinArr(int[]arr) { if(arr==null||arr.length==0) { return Integer.MIN_VALUE; } if(arr.

    //在数组中找到一个局部最小的位置
    public class MinArr{
    	
        //(1)获得局部最小的位置
        public static int GetMinArr(int[]arr)
        {
        	if(arr==null||arr.length==0)
        	{
        		return Integer.MIN_VALUE;
        	}
        	if(arr.length==1)
        	{
        		return arr[0];
        	}
        	if(arr[0]<arr[1])
        	{
        		return arr[0];
        	}
        	if(arr[arr.length-1]<arr[arr.length-2])
        	{
        		return arr[arr.length-1];
        	}
        	int re=0;
        	for(int i=1;i<arr.length-1;i++)
        	{
        		if(arr[i-1]>arr[i]&&arr[i]<arr[i+1])
        		{
        			re=arr[i];
        			break;
        		}
                 
        	}
        	return re;		
    
        }
        
        //(2)二分查找算法(时间复杂度O(logN),空间复杂度O(1))
        public static int GetMinArr2(int[]arr)
        {
        	if(arr==null||arr.length==0)
        	{
        		return -1;
        	}
        	if(arr.length==1)
        	{
        		return arr[0];
        	}
        	if(arr[0]<arr[1])
        	{
        		return arr[0];
        	}
        	if(arr[arr.length-1]<arr[arr.length-2])
        	{
        		return arr[arr.length-1];
        	}
        	int left=1;
        	int right=arr.length-2;
        	int mid=0;
        	while(left<right)
        	{
        		mid=(left+right)/2;
        		if(arr[mid]>arr[mid-1])
        		{
        			right=mid-1;
        		}else if(arr[mid]>arr[mid+1]){
                    left=mid+1;
        		}else{
        			 return arr[mid];
        		}
    
        	}
        	return arr[left];
        }
    	public static void main(String[]args)
    	{
    	   //System.out.println("Hello");
    		int[]arr1={1};
    		int[]arr2={4,3,5,7,9};
    		System.out.println(GetMinArr(arr1));
    		System.out.println(GetMinArr(arr2));
    		System.out.println(GetMinArr2(arr2));
    	}
    }


    展开全文
  • 案例一:局部值最小位置
  • 什么是缓存的局部性原理?

    千次阅读 2019-10-18 20:05:56
    如果一个内存位置被重复的引用,那就是有了时间局部性,如果一个内存位置被引用了,很快这个位置的附近位置也被引用了,这就有了空间局部性。   由于缓存中的数据是一个个数据块,每个数据块包含几十到几千...
  • 成员变量在堆内存里,局部变量在栈内存里。(基础类型) 我有疑惑: 既然成员变量存在于对象中,对象存在于堆中,所以成员变量存在于堆中。那么按照这样的推理,局部变量存在于方法中,而方法存在于对象中,对象存在...
  • B:在局部位置,可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能 面试题: 局部内部类访问局部变量的注意事项? A:局部内部类访问局部变量必须用final修饰 B:为什么呢? 局部变量是...
  • 生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁;...操作系统和编译器通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行的时候被加载。局部变量则分配在堆栈里面 。
  • 时间局部性和空间局部

    千次阅读 2019-05-29 15:56:22
    在CPU访问寄存器时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理。...空间局部性(spatial locality):如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。 ...
  • 成员变量在堆内存里,局部变量在栈内存里。(基础类型) 疑问点: 既然成员变量存在于对象中,对象存在于堆中,所以成员变量存在于堆中。那么按照这样的推理,局部变量存在于方法中,而方法存在于对象中,对象存在于...
  • 文章目录1、局部性分类1)时间局部性2)空间局部性3)局部性原理举例2、对程序数据引用的局部性3、评价局部性提出问题:为什么有良好局部性的程序通常比局部性差的程序运行得更快?参考 1、局部性分类 局部性原理对...
  • C语言未初始化的局部变量是多少?

    千次阅读 2020-07-17 17:41:15
    C语言中,未初始化的局部变量到底是多少? 答案往往是: 与编译器有关。 可能但不保证初始化为0。 未确定。 总之,全部都是些一本正经的形而上答案,这很令人讨厌。 但凡一些人给你滔滔不绝地扯编译器,C库,...
  • JAVA中的成员变量存储在堆内存中,而局部变量存在于栈内存中JAVA中的成员变量存储在堆内存中,而局部变量存在于栈内存中
  • 局部最小值位置 元素最左出现 循环有序数组最小值局部最小值位置定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0]public class Solution { public int getLessIndex(int[] ...
  • 定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0][1],那么arr[0]是局部最小;如果arr[N-1][N-2],那么arr[N-1]是局部最小;如果0,既有arr[i][i-1]又有arr[i][i+1],那么arr...
  • 去年我们部门在17届大学生在转正述职答辩时,有位同学(同事)被领导提出一个问题:“c语言局部变量应该注意什么?” 当时我的第一反应就是,static静态变量,命名与全局变量避免冲突。我记得那位同学说的是注意内存...
  • 如果这么理解是正确的话,那么局部变量表是什么时候生成的? 2. 局部变量表中Slot为2的位置储存了a这个变量,这个2是一个类似于地址索引之类的东西,指向变量a的地址空间,而操作数栈是根据这个索引将变量的值保存...
  • 局部搜索

    千次阅读 2019-06-08 00:10:10
    局部搜索 局部搜索是一种用于解决计算上难以优化的问题(NP Problem)的启发式方法. 局部搜索从当前结点出发,通常只移动到他的邻近状态,不保留路径,根据目标函数寻找最优的状态。局部搜索的优点有: 只用很少...
  • 局部性原理

    千次阅读 2018-05-26 17:50:22
    1、什么是局部性原理? 一个编写良好的计算机程序,它们倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身,我们称这种程序具有良好的局部性。这种倾向性,我们称之为局部性原理,是一个...
  • 运行实例方法时,第0位索引slot指向的是当前方法引用的"this'关键字,那非实例方法(static)的第0位索引又是什么呢?
  • 全局变量和局部变量的存储位置

    千次阅读 2015-09-26 17:25:52
    全局变量和局部变量在内存中的区别是什么? 正确答案: B C 你的答案: C (错误)二者没有区别 生存周期不同 作用范围不同 占用的内存的大小一样程序的局部变量存在于( 堆栈 )中,全局变量存在于( 静态区 )中,...
  • 前面有小伙伴问了这样一个问题:我将EWIAR中的一个函数拷贝到MDK-ARM中之后,发现编译出错了。为什么在EWARM中可以编译通过,但在MDK-ARM中会出错呢?我一看...
  • 局部

    千次阅读 2015-10-16 11:08:16
    一个编写良好的计算机程序倾向于展示出良好的局部性(locality)。也就是,它们倾向于引用的数据项邻近于其他最近引用过的数据项,或者邻近于最近自我引用过的数据项。这种倾向性,被称为局部性原理(principle of ...
  • 图片局部放大

    千次阅读 2018-08-29 11:31:41
    通过判断鼠标位置来显示大图片的局部位置,来实现图片放大的效果。 步骤 首先是布局,在这里布局我就不细说了, 大致就是将小图片展示出来,大图片隐藏起来, 然后将大图片外层的div加一个超出部分隐藏, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 428,468
精华内容 171,387
关键字:

局部是什么部位