程序执行的原理要彻底搞明白那一堆概念及其它们之间的关系似乎并不是一件容易的事,这是因为大部分C#程序员并不了解托管堆(简称“堆”)和线程栈(简称“栈”),或者知道它们,但了解得并不深入,只知道:引用类型保存在托管堆里,而值类型“通常”保存在栈里。要搞明白那一堆概念的关系,我认为先要明白程序执行的基本...
题目
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min,push及pop的时间复杂度都是O(1).思路
使用两个栈,一个数据栈用来存放数据,一个辅助栈用来存放最小值.#include
#include template class StackWithMin
{
publi...
分类:
其他好文 时间:
2015-08-20 16:55:34
阅读次数:
145
数组,异质结构以及指针的详解
前言
昨天看了一部韩国电影,老千2,看到凌晨5点,不过发现韩国的棒子们确实养眼,女的贼拉漂亮,还有大尺度哦~
咱们上一次分析了过程(方法)的实现,其中精妙的栈帧占据了首要的地位,不知道各位还能否记忆起来.今天咱们一起来看看数组的相关内容,相比之下,数组和流程控制与过程的实现难度差不多,尤其是动态数组可能还要稍微难一些,因为大家做好...
分类:
编程语言 时间:
2015-08-20 16:52:38
阅读次数:
149
当我们在用C++做底层驱动的时候,经常会遇到内存不足的警告,究其原因,往往是因为内存出现溢出,泄露或者越界等原因。那么他们之间有什么联系吗?
内存溢出(out of memory)
是指程序在申请内存时,没有足够的内存空间供其使用。
内存泄漏(memory leak)
是指程序在申请内存后,无法释放已申请的内存空间,占用有用内存。
注:内存泄漏最终会导致内存溢出
简单理解,内...
分类:
编程语言 时间:
2015-08-20 15:21:29
阅读次数:
151
jvm的垃圾回收是个老生常谈的问题,在这里,我会从以下一个方面来和大家聊聊垃圾回收。
1 在哪里收垃圾?
2 哪些内容可认为是垃圾?
3 怎么回收垃圾?
4 gc报告的阅读
在哪里收垃圾
这里,我建议大家先读一下拙作: java内存管理
上图中的5部分:
虚拟机栈,本地方法栈,程序计数器三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行...
分类:
编程语言 时间:
2015-08-20 13:17:52
阅读次数:
209
栈、队列、链表都有他们各自的好处,同样的也有弊端的存在。
如果我想要一个有序的数组和链表这个当然很好实现。现在我要在这几个数据结构中查找一个值。先说数组,因为是有序的通过二分查找很快的就可以找到。查找的效率还是很高的,但如果要是插入呢,为了保证有序,我要先找到插入位置,然后再将比插入数字大的数字依次向后移动;这时的第一反应就是链表!他打插入速度很快,只要改变指针的指向就可以了。但是链表大查找要从头开始找啊。只有知道了前一个元素的地址才能知道下一个地址。所以链表查找起来又费劲了。这时候就有人引进了...
分类:
编程语言 时间:
2015-08-20 13:12:44
阅读次数:
132
【151-Evaluate Reverse Polish Notation(计算逆波兰式)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题 Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +, -, *, /. Each ope...
分类:
编程语言 时间:
2015-08-20 07:59:47
阅读次数:
185
java虚拟机规范规定的java虚拟机内存其实就是java虚拟机运行时数据区,其架构如下:
其中方法区和堆是由所有线程共享的数据区。
Java虚拟机栈,本地方法栈和程序计数器是线程隔离的数据区。
(1).程序计数器:
是一块较小的内存空间,其作用可以看作是当前线程所执行的字节码的行号指示器,字节码解析器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。程...
分类:
编程语言 时间:
2015-08-20 01:34:28
阅读次数:
155
jvm虚拟机对内存管理主要体现在堆内存的管理上,我们可以在启动jvm的时候设置jvm对内存大小及调整策略。 1.jvm启动参数: -Xms:jvm启动时初始堆大小。 -Xmx:jvm堆的最大值。 -Xss:线程栈大小。 -Dname=value:jvm全局属性设置。 ...
分类:
其他好文 时间:
2015-08-20 01:00:39
阅读次数:
132
从下午坑到网上。。原来noip的数据真是太弱了,若干的地方写挂结果还随便过= =最坑的就是网上有些题解没考虑周全。。。然而noip数据太弱了noip数据太弱了noip数据太弱了第一步是找直径,用两次bfs(或者dfs,Linux下系统栈挺大的。。)解决。找出其中一条直径就可以了,虽然蒟蒻不会证明但是...
分类:
其他好文 时间:
2015-08-20 00:58:49
阅读次数:
578