精华内容
下载资源
问答
  • // 创建运算符,顺序 String postfix=""; // 记载后缀表达式 int i=0; while(i()) { char ch=expstr.charAt(i); switch(ch) { case'+': //遇到+、-运算符,与栈顶元素比较 ...
  • 枸杞的由来和技术

    2021-01-02 15:11:32
    什么意思呢?就是只要 <code>tsserver</code> 这个模块启动,就可以享受到来自于 TypeScript 本身提供的智能代码补全和代码重构功能。而这样代码补全和重构基于类型、定义、模块的精准补全和重构ÿ...
  • 例如下图 很显然,这一题就是要求对于每一个矩形而言,它往左或右最多的比他高的矩形的个数, 也就是说,对于输入的那个数组,我们只要求出每一个元素能往左右延伸到什么地方即可,延伸的定义不比它小的才。...

    题目点此跳转

    思路

     题目意思是有一个由许多矩形组成的一个图形(下底对齐), 求这个图形里能找到的最大矩形的面积, 输入的是各个矩形的高度。 例如下图

    这里写图片描述

     很显然,这一题就是要求对于每一个矩形而言,它往左或右最多的比他高的矩形的个数, 也就是说,对于输入的那个数组,我们只要求出每一个元素能往左右延伸到什么地方即可,延伸的定义是不比它小的才行。
     使用单调栈是解决这个问题的一个很好的办法。
     我们维护一个单调栈,将数组从左到右入栈, 但是在入栈前要检查一下栈顶元素是不是比它大,如果比它大的话,说明栈顶元素就能扩展到这里了,那么就找到了栈顶元素的一个边界。 左右各扫一次就行了。
     总结一句话,每次出栈的时候就是找到这个出栈元素边界的时候。

    代码

    LL n, a[maxn], dp[maxn], ans;
    LL q[maxn], p[maxn], ft, rr;
    
    int main() {
        while(scanf("%lld", &n) == 1 && n) {
            for(int i = 1; i <= n; ++i) scanf("%lld", &a[i]);
            ft = rr = 0;
            q[rr++] = a[1], p[rr-1] = 1; a[n+1] = -1; ans = 0;
            for(int i = 2; i <= n+1; ++i) {
                while(rr > ft && q[rr-1] > a[i]) {
                    dp[p[rr-1]] = i-p[rr-1]; --rr;
                }
                q[rr++] = a[i], p[rr-1] = i;
            }
            ft = rr = 0;
            q[rr++] = a[n], p[rr-1] = n; a[0] = -1;
            for(int i = n-1; i >= 0; --i) {
                while(rr > ft && q[rr-1] > a[i]) {
                    dp[p[rr-1]] += p[rr-1]-i-1; --rr;
                }
                q[rr++] = a[i], p[rr-1] = i;
            }
            ans = 0;
            for(int i = 1; i <= n; ++i) ans = max(ans, dp[i]*a[i]);
            printf("%lld\n", ans);
        }
    
        return 0;
    }
    展开全文
  • 问题1:这个Material Output我就看不懂,里面的三个节点是什么意思? 如果我们要解决我们现在要处理的这个目标,实际上我们只需要理解surface就,surface代表着物体的,就是表面的颜色会呈现什么情况。 volume...

    目标

    • 在blender的球上实现Toon Shader,理解blender着色器的工作原理。
    • 完全通过自己的思考,不参考任何完整的教程,可以参考官方文档。

    初始工程

    1. 建球,改灯光颜色。

    在这里插入图片描述

    问题1:这个Material Output我就看不懂,里面的三个节点是什么意思?

    • 如果我们要解决我们现在要处理的这个目标,实际上我们只需要理解surface就行,surface代表着物体的,就是表面的颜色会呈现什么情况。
    • volume代表着物体的内部,可以制作类似体积雾,烟火颗粒之类的物体。
    • displacement代表表面的凹凸贴图或者法线贴图,可以制作皮肤纹理,或者皱纹之类的物体。
    • 参考:https://docs.blender.org/manual/en/3.0/render/shader_nodes/output/material.html

    2. 我们添加一个Diffuse Shader

    • Diffuse着色器代表着漫反射着色器,是最简单的着色器之一,主要的参数就是基础颜色为和粗糙度。
    • 效果大概长这样。
    • (光线的颜色我调成了黄色。)
      在这里插入图片描述

    问题2:顶点着色器和片元着色器呢?BSDF是什么意思?

    • 我们上一个博客了解了,我们应该通过顶点着色器和片元着色器来对物体进行着色,但是随着渲染技术的迭代,人们发现我们其实只需要控制小部分的参数就能够完美的生成各种材质,我们不应该花时间在写很复杂的着色器代码。
    • 所以BSDF,也叫原理化着色器诞生了,它的作用就是通过控制少量参数完成顶点着色器和片元着色器的工作
    • 简单来说,BSDF接收外部各种信息(光照等)作为输入(在着色器中被省略),输出的是物体每个像素的RGB,我们只需要关注他的基础参数即可

    问题3:那Diffuse BSDF输出的是什么?

    • 按照我的理解,Diffuse BSDF实际上输出的就是每个物体上的每个像素和对应的RGB颜色。
    • 所以我们要做的就是对每个每个像素对应的RGB颜色进行操作即可。

    问题3:那也就是说Material Output的Surface输入的也是[(像素,RGB)]这种感觉?

    • 其实surface的鲁棒性非常好,你给他随便丢一个向量进去,它似乎也能跑出结果,例如:
      在这里插入图片描述
    • 我在blender甚至找不到单个向量,那么两个零向量相加也行,最后跑出来必然是全黑呗。
      在这里插入图片描述
    • 这样跑出来的就是全白了。
      在这里插入图片描述
    • 测试一下纯红色。
      在这里插入图片描述
    • 甚至一个单值都不会报错,所以如果你的着色器出问题了,debug其实特别麻烦,因为系统的健壮性太好了。
    • 调试这个方面这个做得不如虚幻引擎好,虚幻可以实时看到数值。

    3. 思考怎么样才能够实现toon的效果。

    • 实际上toon就是亮的地方都是一个颜色,暗的地方都是一个颜色,我们如果能直接做一个向量的大于小于就好了,但是blender并没有提供那样的节点。
    • 那我们先尝试使用greater than节点。
      在这里插入图片描述
    • 我们发现这样子应该是该像素的范数(长度)超过0.4的为亮面(值为1),暗面的值为0。
    • 那这不就好办了,我直接引入一个RGB色彩,和它相乘,那么1的值全部变为那个颜色。
      在这里插入图片描述
    • 然后0的值,只要和暗面的颜色相加,就可以得到我们想要的颜色。

    在这里插入图片描述

    • 最后的结果是这样的,但总感觉有点不对,这完全失去了材质原本的颜色。
    • 按理说应该是根据本身的颜色做一个暗面的降档。
      在这里插入图片描述
    • 或者是多段的明暗分界线非常明显,而并不是这样只有一个明暗分界线。

    4. 重新整理思路

    • 首先我们要划分多个档,例如说我们划分3个档次,一个是向量长度大于0.6的,一个是向量长度大于0.2小于0.6的,一个是向量长度小于0.2的。
    • 当向量长度大于0.6,我们可以取原色,因为高光的颜色已经足够纯净。[区块1]
    • 当向量长度在0.2-0.6的时候,我们把它阶梯化为3层,分别是0.2,0.4和0.6,而向量方向不变。[区块2]
    • 当向量长度小于0.2的时候,我们直接赋予一个我们指定的颜色。[区块3]

    4.1. 书写区块1

    • 大于0.6的和原色相加。

    在这里插入图片描述

    4.2. 书写区块2

    • 小于0.6的,我们通过snap把所有在0.4-0.6的值挂在0.4,所有0.2-0.4的值挂在0.2,所有0.0-0.2的挂在0。
      在这里插入图片描述

    4.3. 书写区块3

    • 小于0.2的,我们自己指定颜色。
      在这里插入图片描述

    4.4. 最后相加就是结果

    在这里插入图片描述

    4.5. 渲染效果

    在这里插入图片描述

    • 是不是感觉有点那味了,如果我们一开始选用的着色器带有辉光,则效果会更好,这些留到下一个章节。
    • 不知道为什么,CSDN的动图放不上来。

    一些帮助学习的网站

    • https://nme.babylonjs.com/
    展开全文
  • js引擎在解释执行源代码时,会给基本类型值在区 分配内存,给引用类型值在堆区分配内存,那么函数作为一个对象该...执行环境栈是什么意思?和基本类型值存储的那个是一样的吗?本人跨前端小白,还请高人指点迷津
  • 我们先来理解一下这句话是什么意思。先上一小段代码 int num = 100; Object ref = new Object(); 上面两代码,第一声明了一个整型变量,它是放在程序上的。 它是放在程序上的。 这又是啥意思呢?我们...

    WeakReference, SoftReference

    Java中有四种引用类型,分别是Strong, Soft, Weak, Phantom

    Strong ref:强引用,被引用的对象在gc的时候不会被回收。

    我们先来理解一下这句话是什么意思。先上一小段代码

    int num = 100;
    Object ref = new Object();
    

    上面两行代码,第一行声明了一个整型变量,它是放在程序栈上的。

    它是放在程序栈上的。

    这又是啥意思呢?我们给上面的代码包在方法里面。

    public void static main(String[] args) {
        foo();
    }
    
    public void foo() {
        int num = 100;
        Object ref = new Object();
    }
    

    放在程序栈上的意思,就是int num这个变量,在foo方法执行完毕后,就因为程序栈退栈而被销毁了,所以使用到的内存也被回收了。

    但是Object ref的情况就有些不同了。ref这个引用本身是放在程序栈上的,它也随着foo方法执行完毕,退栈而销毁,但是后面new Object所创建的数据,是存放在heap上的,当foo方法执行完毕后,Object对象还不一定被回收了。

    在上面代码片段中,Object这个存在于heap上的数据块,就被ref这个引用(名词)所引用(动词)着。

    上面的句子读着难受,我们换个说法:Object这个存在于heap上的数据块,就被ref这个指针所引用着。

    如果把它们想象成现实世界的实物,那么我手里拿着ref这个对象,我就能发现它上面连着一根线,顺藤摸瓜,我们就能找到一个叫Object的数据。

    再回到四种引用上面来:

    • Strong ref:强引用,被引用的对象在gc的时候不会被回收。
    • Soft ref:软引用,它引用的东西会在触发OOM的时候释放掉,换句话说,soft引用的东西和普通的没区别,但是当内存紧张的时候,可能会被释放掉。
    • Weak ref: 弱引用,当一个对象只有弱引用引用时,会在gc的时候被回收掉。
    • Phantom ref:虚引用,emm,总之就是有点玄学,还不知道具体啥用。

    ReferenceQueue

    这个队列的作用,是当GC将一些引用回收的时候,将*Reference对象放到这个队列里面,这样就可以通过poll方法获取到了。

    也就是说,这个对象一开始是空的,每当系统GC回收掉WeakReference或者另外两种引用所指向的对象,就会将这个Reference对象放进这个Queue中。相当于告诉你:“我已经回收掉一些对象了,你看看需不需要做什么特殊的操作”。

    光看文档和各种文章,其实还是一脸懵逼,于是我做了下面一个实现。

    实验

    注意以下:

    • weak1是直接引用一个对象,这个对象没有被任何强引用持有,因此按预期,一次GC后,就会被回收
    • weak2是被一个强引用持有,同时也被一个weak引用持有,按照预期,强引用一直在的话,是不会被回收的。如果它与强引用断开关系,那么会被回收。
    • list里面是存放Soft引用,我会一直往里面加数据,按照预期,当触发GC的时候,会回收里面的数据。
    • ReferenceQueue,我使用另一个独立的线程一直去poll里面的值,当有数据被回收的时候,就可以poll到一个东西。
    public class Main {
    
        public static class Data {
            int mVar = 0;
    
            byte[] bitmap;
    
            public Data(int d) {
                mVar = d;
            }
    
            public Data(byte[] data) {
                bitmap = data;
            }
        }
    
        public static void main(String [] args) {
    
            ReferenceQueue<WeakReference> queue = new ReferenceQueue<>();
    
            WeakReference<Data> weak1 = new WeakReference(new Data(100), queue);
    
            Data fuck2 = new Data(200);
            WeakReference<Data> weak2 = new WeakReference(fuck2, queue);
    
            int i = 1;
    
            List<SoftReference<Data>> list = new LinkedList<>();
    
            // 这里在实验ReferenceQueue的作用
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while (true) {
                        if (queue.poll() != null) {
                            System.out.println("--------------- t2: something is null");
                        }
                    }
                }
            }).start();
    
            while (true) {
    
                if (i == 10) {
                    fuck2 = null;
                    System.out.println("let fuck2 -> null");
                }
    
                // 每5次,就执行一下gc
                if (i % 5 == 0) {
                    Runtime.getRuntime().gc();
                    System.out.println("try gc...");
                }
    
                // 这里是在尝试占用内存,触发soft回收
                if (i >= 15) {
                    System.out.println(Runtime.getRuntime().freeMemory() + ", " + Runtime.getRuntime().maxMemory() + ", " + Runtime.getRuntime().totalMemory());
                    list.add(new SoftReference(new Data(new byte[(int) (Runtime.getRuntime().freeMemory())]), queue));
                    Runtime.getRuntime().gc();
                }
    
                // fuck1数据只有弱引用引用,所以第一次gc就会回收
                Data data = weak1.get();
                if (data == null) {
                    System.out.println("fuck1 hasBeen release");
                } else {
                    System.out.println("fuck1 living!");
                }
    
                // fuck2 有一个强引用,有一个弱引用,当第10次执行的时候,移除强引用,再gc,就会被回收
                Data dat2 = weak2.get();
                if (dat2 == null) {
                    System.out.println("fuck2 hasBeen release");
                } else {
                    System.out.println("fuck2 living!");
                }
    
                i++;
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    接下来看输出的内容,我会将关键的信息用注释放在输出内容的后面

    fuck1 living!
    fuck2 living!
    fuck1 living!
    fuck2 living!
    fuck1 living!
    fuck2 living!
    fuck1 living!
    fuck2 living!
    try gc... // 首次GC
    fuck1 hasBeen release // weak1 被释放,符合预期
    fuck2 living! // weak2 没有被释放,符合预期
    --------------- t2: something is null // 新线程poll到东西了,说明刚刚有东西被释放,符合预期
    fuck1 hasBeen release
    fuck2 living!
    fuck1 hasBeen release
    fuck2 living!
    fuck1 hasBeen release
    fuck2 living!
    fuck1 hasBeen release
    fuck2 living!
    let fuck2 -> null // 手动接触weak2的强引用关系
    try gc...
    fuck1 hasBeen release
    --------------- t2: something is null // queue又poll到了,符合预期
    fuck2 hasBeen release // weak2也被回收了,符合预期
    fuck1 hasBeen release
    fuck2 hasBeen release
    fuck1 hasBeen release
    fuck2 hasBeen release
    fuck1 hasBeen release
    fuck2 hasBeen release
    fuck1 hasBeen release
    fuck2 hasBeen release
    try gc...
    255742864, 3817865216, 257425408 // 接下来开始一直给list加数据
    fuck1 hasBeen release
    fuck2 hasBeen release
    255851920, 3817865216, 513277952
    fuck1 hasBeen release
    fuck2 hasBeen release
    255852440, 3817865216, 769130496
    fuck1 hasBeen release
    fuck2 hasBeen release
    255852440, 3817865216, 1024983040
    fuck1 hasBeen release
    fuck2 hasBeen release
    255852440, 3817865216, 1280835584
    fuck1 hasBeen release
    fuck2 hasBeen release
    try gc...
    255852536, 3817865216, 1536688128
    fuck1 hasBeen release
    fuck2 hasBeen release
    256376632, 3817865216, 1793064960
    fuck1 hasBeen release
    fuck2 hasBeen release
    256376728, 3817865216, 2049441792
    fuck1 hasBeen release
    fuck2 hasBeen release
    256376728, 3817865216, 2305818624
    fuck1 hasBeen release
    fuck2 hasBeen release
    256376728, 3817865216, 2562195456
    fuck1 hasBeen release
    fuck2 hasBeen release
    try gc...
    256376752, 3817865216, 2818572288
    fuck1 hasBeen release
    fuck2 hasBeen release
    123207480, 3817865216, 2941779968
    --------------- t2: something is null   // 注意到这里,终于触发了GC,一下子poll了很多数据,说明soft里面的引用数据都被回收了
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    fuck1 hasBeen release
    fuck2 hasBeen release
    160092384, 3817865216, 286261248
    fuck1 hasBeen release
    fuck2 hasBeen release
    244181792, 3817865216, 532152320
    fuck1 hasBeen release
    fuck2 hasBeen release
    244318104, 3817865216, 776470528
    fuck1 hasBeen release
    fuck2 hasBeen release
    try gc...
    244318200, 3817865216, 1020788736
    fuck1 hasBeen release
    fuck2 hasBeen release
    244842296, 3817865216, 1265631232
    fuck1 hasBeen release
    fuck2 hasBeen release
    244842392, 3817865216, 1510473728
    fuck1 hasBeen release
    fuck2 hasBeen release
    244842392, 3817865216, 1755316224
    fuck1 hasBeen release
    fuck2 hasBeen release
    244842392, 3817865216, 2000158720
    fuck1 hasBeen release
    fuck2 hasBeen release
    try gc...
    244842488, 3817865216, 2245001216
    fuck1 hasBeen release
    fuck2 hasBeen release
    245366584, 3817865216, 2490368000
    fuck1 hasBeen release
    fuck2 hasBeen release
    245366680, 3817865216, 2735734784
    fuck1 hasBeen release
    fuck2 hasBeen release
    241025560, 3817865216, 2981101568
    fuck1 hasBeen release
    fuck2 hasBeen release
    234681496, 3817865216, 3213885440
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    --------------- t2: something is null
    fuck1 hasBeen release
    fuck2 hasBeen release
    
    

    总结

    这样,基本就明白了WeakReference和SoftReference,以及ReferenceQueue的特性了。

    WeakReference可以使用在一些observer list上,比如你的界面需要持续监听一个事情,需要严格的调用成对的方法,addListener,removeListener,但是保不齐什么时候忘记了,或者因为一些特殊的情况,导致没有调用remove,这样你这个界面整个对象都被listener list一直持有了,就相当于内存泄露了。这个时候,可以使用WeakReference,这样就算没有remove,gc也能干掉。

    SoftReference可能在实现一些缓存上会比较有用。

    ReferenceQueue相当于给我们一个能力去知道我的对象什么时候被回收了,那么如果需要做一些后续的事情,就可以依靠这个时机。

    参考资料

    展开全文
  • java.lang.StackOverflowError

    2020-05-04 00:08:12
    于是,我又去查了Root Cause java.lang.StackOverflowError到底什么意思。 最终查到这个Stack, 一种数据结构, 会占用一块内存空间。每调用一次Java Method,就会往虚拟机中压入一个栈帧,在方法结束之前...

    开局一张图
    在这里插入图片描述

    一大堆提示第19行错误,于是我又回去看了下我的代码
    在这里插入图片描述
    其中,第19行并没有发现什么问题。于是,我又去查了Root Cause java.lang.StackOverflowError到底是个什么意思。
    最终查到这个Stack是个栈, 是一种数据结构, 会占用一块内存空间。每调用一次Java Method,就会往虚拟机栈中压入一个栈帧,在方法结束之前都不会出栈. 所以可以直接推理出在一个java线程运行过程中,如果同时调用的方法过多(比如递归的调用一个方法),就会出现这个异常。
    结合报错看,提示了一堆19行,不难看出这个doGet方法被一直循环调用导致内存不够了,于是又仔细检查这个Servlet的全部代码,最终发现是doGet和doPost写反了在这里插入图片描述
    改完后不报错了!
    在这里插入图片描述
    总结,遇到java.lang.StackOverflowError,可能每个人错误的地方不相同,但是其本质就是因为内存不够,一般都是因为恶性循环,所以只要从这个思路着手就能解决问题。

    参考博文:https://zazalu.space/2019/09/17/java-memory-error-solution-Theoretically/

    展开全文
  • 之字形打印二叉树

    千次阅读 2017-12-04 09:45:21
    将一棵二叉树按“之”字型打印是什么意思呢?如下图所示的二叉树,遍历之后打印结果如右图,即为二叉树的之字型打印。 分析题意:当打印奇数时,按照从左到右的顺序打印,当打印偶数时,要按照从右往左相反的...
  • 有时候,程序员必须注意将要处理的数据是什么类型。你是直接操纵对象,还是用某种基于特殊语法的间接表示(例如C和C++里的指针)在操纵对象? 所有的这一切在java里都得到了简化。一切被视为对象,因此可采用单一...
  • ATPCS

    2016-02-09 14:37:00
    ATPCS: Arm Thumb procedure Call Standard的缩写。...如果我们要在汇编指令中调用C函数,那么我们就要知道我们如何给C函数传递参数,哪个寄存器表示什么意思,C中的数据栈是如何使用的,我们如何获得函数的返回...
  • 考研算法之找出数组最大子序列长度 下面看看这道题 首先看到这道题的时候有点懵,刚一开始想到的最大递增子序列应该3,7,101...然后又去仔细看了下题目(意思是可以删除,只要递增就了) 然后我想的是栈 ...
  • 利用的基本操作写出先序遍历二叉树的非递归算法 要求进栈的元素最少, ...(3)最后一代码 if (top>0) bt=s[top--] 是什么意思? (4)如果是中序或后序,入栈顺序又是什么? 谢谢大神们啦~~ O(∩_∩)O
  • JAVA实现单链表超详解(图解)

    千次阅读 2020-07-30 14:27:59
    这一篇,说一下java的单链表的实现...那,我们知道这代码是一个对象的实例化,那这代码到底是什么意思呢? 我们这样理解: stu这个变量存储在内存中,右边的new Student()存储在堆内存中,就像这样: 也就是可以
  • 数据结构入门准备

    2019-11-12 15:32:57
    重点线性表,二叉树,现在你只需要知道就,至于什么意思,以后再说 接下来就要做一些准备了,了解以下知识,我做了一下简单的介绍 变量类型 控制语句 函数 逻辑结构与存储结构 变量类型 1.基本类型:int float...
  • POJ1222-EXTENDED LIGHTS OUT POJ3279-Fliptile POJ1753-Flip Game 为什么将着三个题放一起讲呢?...给你56列的01矩阵,0代表该点的灯关闭的,1代表该点的灯开着的,要求出每一灯是否按下...
  • buu ctf [FlareOn6]Overlong

    2020-08-07 21:19:57
    1.overlong的意思为太长了的意思,可能提示 2.ida 打开,主函数如下 前几行都没毛病,7,8,9可能潜在,看看第七的函数 没什么异常,再看看7传过去的参数,&unk_402008,和后面的28,但是unk的长度绝对超过...
  • 第一次作业总结

    2016-09-26 19:19:00
    计划上:在之前的想了一下怎么设计 通过定义运算符...通过将分数转化成小数 括号内先运算 乘除再运算将算式转化成最为简单的一加减算式 但平常没有养成写注释的习惯导致后面也不大记得前面写的是什么意思了= = ...
  • 4.1.5 用过哪些Map类,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么,比如存储方式,hashcode,扩容,默认容量等。 4.1.6 JAVA8的ConcurrentHashMap为什么放弃了分段锁,有...
  • 下面的代码输出是什么,为什么? 1、sizeof()和strlen()的使用? 答: 1.从功能定义上,strlen函数,用来求字符串的长度,sizeof函数是用来求指定变量或变量类型等所占用内存的 大小; 2.sizeof是运算符,而strlen是C...
  • </li><li>这个项目带给你的成长是什么,当然别说让我学会了某某 API 这种没价值的内容。</li></ol> 另外项目这块还要结合着简历来说,因为面试官问你项目肯定是从简历上得来的问题,下文中会写到...
  • 4.C#中的委托是什么?事件是不是一种委托? 答 : 委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。 是,是一种特殊的委托 5.override与重载的区别 答 : override 与重载的...
  • 现代前端程序员刚一入就要选择一款前端框架来作为自己的技术,比如Vue,React,Angular等。包括各种公司的招聘信息上也会写上自己希望应聘者掌握至少一种前端框架。所以很多人就会有一种困惑&...
  • 如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈。 5.什么是平衡二叉树? 左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1。 6.堆栈溢出一般是由什么原因导致的? 没有回收垃圾...
  • 然而我的问题是什么呢? 是spring是如何给这个request赋值的? 我想知道spring内部是如何实现的? 实现这个接口后,spring 是如何给他赋值的? 请高手解释? 我的理解 是spring用了动态代理...
  • 有N 张桌子, N 把椅子, 白板, 投影机等等,这些是什么,刚才咱们说了,这就是对象,能看 到的一个个的实体,可以说这个电脑教室的单位就是这一个个的实体对象, 它们共同组成了这个 电脑教室,那么我们是做程序,...
  • 27、GC是什么? 为什么要有GC?  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象...
  • java 面试题 总结

    2009-09-16 08:45:34
    24、GC是什么? 为什么要有GC?  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

栈行是什么意思