堆栈

11.3 写些东西吧

独自空忆成欢 提交于 2019-12-03 09:52:29
  因为自己最近也在准备面试,就打算写一些有关面试的东西,也算加深记忆; 1.meta标签的定义   meta标签是head部的一个辅助性标签,提供关于HTML文档的元数据,他并不会显示在页面上,但对于机器是可读的,可用于浏览器(如何显示内容或重新加载页面),SEO或其他web服务。 作用   seo优化,定义页面使用语言,自动刷新并指向新的页面,实现网页转换的动态效果,控制页面缓冲,网页定级评价,控制网页显示的窗口。 2.ajax的过程   (1)创建XHR对象,也就是创建一个异步调用对象。   (2)创建一个新的http请求,并指定请求的方法,url及验证信息   (3)设置响应http请求状态变化的函数   (4)发送http请求   (5)获取返回的数据   (6)使用dom和js实现局部刷新 3.什么是闭包   闭包其实相对于比较难理解一些,不过它基本可以解释为是在另一个作用域内创建一个封闭的词法范围。   闭包另一个应用是创建私有变量和方法。   在JS中没有明确的方法来创建私有方法,但闭包可以有私有方法。 4.this关键字   this一般表示当前所在对象。   js中的This关键字由函数的调用者决定,谁调用this就指向哪个,如果找不到调用者,this将指向windows对象。 5.js如何处理同步和异步   js是一种只有一个调用堆栈的单线程编程语言

汇编对比函数参数进堆栈顺序

你离开我真会死。 提交于 2019-12-03 04:49:36
1、C语言函数参数是按照倒序进栈,即函数调用时,最右边的参数最先压栈,由调用者恢复堆栈指针。 2、Pascal语言函数约定和C约定正好相反,它规定参数是从左向右传递,由被调用者恢复堆栈。 3、 __stdcall 这是一种函数调用方式。 __stdcall方式函数的参数压栈顺序从右到左,是Pascal 缺省调用方式,通常用于win32 API中,自己在退出时清空栈。 __stdcall将参数压栈是按C语言的顺序(从右到左),但与C语言不同的是它是由被调用者将参数从栈中清除,所以它的编译文件比_cdecl小。 __stdcall是Windows API函数中默认的调用约定,VB、VFP等也采用这个约定。 __cdecl是C语言采用的默认调用方法,对于传送参数的内存栈却是由调用者来维护的。实现可变参数的调用只能用该方法。是MFC的缺省调用参数。 __fastcall方式的函数采用寄存器传递参数,VC将函数编译后会在函数名前面加上"@"前缀,在函数名后加上"@"和参数的字节数。 来源: https://www.cnblogs.com/alhope/p/11778464.html

Jconsole与Jmx 分析JVM状况(下) 转

倾然丶 夕夏残阳落幕 提交于 2019-12-03 04:45:32
出处: Jconsole与Jmx 分析JVM状况(下) 线程(ThreadMXBean ) 从 Jconsole 画面取得线程画面如下: 左下角列出了所以正在运行的线程。通过点击某个线程,右下脚可以看到这个线程的相关信息。 Mean 中提供 ThreadMXBean 相关属性和操作如下 详细个属性说明请看http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/java/lang/management/ThreadMXBean.html 代码中取得 ThreadMXBean public class JmxRemote { public static void main(String[] args) { try {JMXServiceURL address = new JMXServiceURL( "service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi"); JMXConnector connector = JMXConnectorFactory.connect(address); MBeanServerConnection mbs = connector.getMBeanServerConnection(); ThreadMXBean threadBean =

jmc使用说明

匿名 (未验证) 提交于 2019-12-03 00:38:01
实验JDK版本:jdk1.8.0_73 JMC:5.5(最新已经6.0了支持jdk9) JMC:Java Mission Control 伴随着5月份oracle的一份开源声明―- JMC Open Sourced JMC又一次备受关注。 JMC是源自JRockit JVM的一套监控和管理工具,Oracle在发布JAVA 7u4(Java 7 Update 40)时将其包含在JDK中,用户不再需要单独下载。 使用 JMC可以监视和管理 Java 应用程序,不会导致相关工具类的大幅度性能开销,它使用为 Java 虚拟机 (JVM) 的普通自适应动态优化收集的数据。 主要部分 JVM浏览器:显示了正在运行的 Java 应用程序及其 JVM,每个JVM实例称为一个JVM连接。JVM浏览器允许用户列出并连接到本地和远程运行的 Java 应用。它能够使用 Java 发现协议(JDP)自动地发现本地和远程运行的 Java 进程。 JMX 控制台:能够通过 JMX 接口管理并监控 JDK ,实时收集并显示其特征。它提供了实时集合、堆使用情况、CPU 负载以及其他通过 MBeans 暴露的和在 MBean 服务器中注册的信息,并可通过托管 Bean (MBean) 更改一些运行时属性。还可以创建在特定事件上触发的规则 (例如,如果应用程序的 CPU 占用率达到了 90%,则发送电子邮件)。 JFR

jmc使用说明

匿名 (未验证) 提交于 2019-12-03 00:37:01
实验JDK版本:jdk1.8.0_73 JMC:5.5(最新已经6.0了支持jdk9) JMC:Java Mission Control 伴随着5月份oracle的一份开源声明―- JMC Open Sourced JMC又一次备受关注。 JMC是源自JRockit JVM的一套监控和管理工具,Oracle在发布JAVA 7u4(Java 7 Update 40)时将其包含在JDK中,用户不再需要单独下载。 使用 JMC可以监视和管理 Java 应用程序,不会导致相关工具类的大幅度性能开销,它使用为 Java 虚拟机 (JVM) 的普通自适应动态优化收集的数据。 主要部分 JVM浏览器:显示了正在运行的 Java 应用程序及其 JVM,每个JVM实例称为一个JVM连接。JVM浏览器允许用户列出并连接到本地和远程运行的 Java 应用。它能够使用 Java 发现协议(JDP)自动地发现本地和远程运行的 Java 进程。 JMX 控制台:能够通过 JMX 接口管理并监控 JDK ,实时收集并显示其特征。它提供了实时集合、堆使用情况、CPU 负载以及其他通过 MBeans 暴露的和在 MBean 服务器中注册的信息,并可通过托管 Bean (MBean) 更改一些运行时属性。还可以创建在特定事件上触发的规则 (例如,如果应用程序的 CPU 占用率达到了 90%,则发送电子邮件)。 JFR

函数调用约定

匿名 (未验证) 提交于 2019-12-03 00:34:01
整理笔记的时候发现的函数调用约定笔记,但是忘了在哪看到的了。 __cdecl 是C/C++和MFC程序默认使用的调用约定,也可以在函数声明时加上__cdecl关键字来手工指定。采用__cdecl约定时,函数参数按照从右到左的顺序入栈,并且由调用函数者把参数弹出栈以清理堆栈。因此,实现可变参数的函数只能使用该调用约定。由于每一个使用__cdecl约定的函数都要包含清理堆栈的代码,所以产生的可执行文件大小会比较大。__cdecl可以写成_cdecl。 __stdcall 调用约定用于调用Win32 API函数。采用__stdcal约定时,函数参数按照从右到左的顺序入栈,被调用的函数在返回前清理传送参数的栈,函数参数个数固定。由于函数体本身知道传进来的参数个数,因此被调用的函数可以在返回前用一条ret n指令直接清理传递参数的堆栈。__stdcall可以写成_stdcall。 __fastcall 约定用于对性能要求非常高的场合。__fastcall约定将函数的从左边开始的两个大小不大于4个字节(DWORD)的参数分别放在ECX和EDX寄存器,其余的参数仍旧自右向左压栈传送,被调用的函数在返回前清理传送参数的堆栈。__fastcall可以写成_fastcall。 __stdcall 调用约定相当于16位动态库中经常使用的PASCAL调用约定。在32位的VC++5

内存中堆栈的理解与C++基本语法

匿名 (未验证) 提交于 2019-12-03 00:32:02
一个C/C++编译的程序的内存分配一般为: - 栈区 - 堆区 - 全局区(静态)static: 全局变量和静态变量在一块区域,未初始化的全局变量及静态变量在响铃的另一块区域,程序结束后由操作系统释放 - 文字常量区:字符串存放处,在程序结束后由操作系统释放 - 程序代码区: 函数体二进制代码经过编译后的存放处 例子程序 int a = 0 ; 全局初始化区 char *p1; 全局未初始化区 main() { int b; 栈 char s[] = "abc" ; 栈 char *p2; 栈 char *p3 = "123456" ; 123456 在常量区,p3在栈上。 static int c = 0 ; 全局(静态)初始化区 p1 = ( char *) malloc ( 10 ); p2 = ( char *) malloc ( 20 ); 分配得来得 10 和 20 字节的区域就在堆区。 strcpy (p1, "123456" ); 123456 放在常量区,编译器可能会将它与p3所指向的 "123456" 优化成一个地方。 } 申请方式 在C++中,stack 由系统自动分配空间,而heap需要自己申请,并指明大小。 p2 = ( char *) malloc ( 10 ) //p2指针对应的地址是一块10字节,储存变量类型为char的内存空间 在申请栈空间时

堆栈于队列的使用 (C++)

匿名 (未验证) 提交于 2019-12-03 00:29:01
堆栈 stack 先进后出 stack类中包含以下几个成员函数: empty() 堆栈为空则返回真 pop() 移除栈顶元素(不会返回栈顶元素的值) push() 在栈顶增加元素 size() 返回栈中元素数目 top() 返回栈顶元素 例子: 队列 queue 先进先出 queue类包含以下成员函数: back() 返回最后一个元素 empty() 如果队列空则返回真 front() 返回第一个元素 pop() 删除第一个元素 push() 在末尾加入一个元素 size() 返回队列中元素的个数 例子: # include <iostream> # include <queue> using namespace std; struct chess{ int row; int col; }; int main() { queue<chess> que; chess ch[1000]; for(int i=0;i<10;i++){ ch[i].row = i; ch[i].col = i+1; que.push(ch[i]); } cout<<que.front().row<<" "; cout<<que.front().col<<endl; que.pop(); cout<<que.front().row<<" "; cout<<que.front().col<<endl;

[现代操作系统] I/O之硬件原理

匿名 (未验证) 提交于 2019-12-03 00:28:02
I/O 硬件原理 把信息存储在固定大小的块中, 每个块都有自己的地址. 每个块可以独立于其他块读写. 如 硬盘, CD-ROM , USB 盘 … 字符设备以字符为单位发送或接收一个字符流, 而不考虑任何块结构. 它是不可寻址的. 如打印机, 网络接口, 鼠标 (用作指点设备)… I/O 设备一般由两部分组成: 机械部分和电子部分. 电子部分就是设备控制器. 常以插入 (PCI) 扩展槽中的印刷电路板的形式出现. 控制器与设备之间的接口是很低层次的接口. 它的任务就是把串行的位流转换为字节块, 并进行必要的错误校正. 每个控制器有几个寄存器, OS 可以读写来了解, 更改设备的状态信息. 控制器还有 OS 可以读写的 数据缓冲区 . 问题来了: CPU 如何与设备的控制寄存器和数据缓冲区通信. 方法一: 每个控制寄存器被分配一个 I/O 端口 (所有端口形成端口空间, 受保护不被普通用户访问). 然后可以设置指令来读写, 如 IN REG, PORT 将读取控制器寄存器 PORT 中的内容到 CPU 寄存器 REG 方法二: 内存映射 I/O. 将所有控制寄存器映射到内存空间, 都被分配唯一的地址, 且这些内存地址不会再分配. CPU 读入一个字时, 不论是从内存还是 I/O 端口, 都将目的地址放在总线的地址线上, 总线控制线置 READ 信号看. 还要用一条线表明是 I/O

uc/OS III任务的理解

匿名 (未验证) 提交于 2019-12-03 00:21:02
任务的概念 在实际应用中一般是将工作拆分为多个任务的,并且每个任务都是可靠的。在使用uC/OS就可以很好的解决这个问题,任务又叫线程,在对于单个CPU来说,在任何时刻,都是只能有有一个任务被执行。 uC/OS-III 支持多任务且对任务数量没有限制,任务数仅取决于处理器内存的大小(RAM)。多任务调度是任务间占用CPU 的过程。CPU 有根据算法切换任务。多任务调度让人感觉到是有多个CPU在运行,并最大化利用CPU。多任务调用有助于模块化应用,是最重要的功能之一,能帮助程序员管理复杂的实时性应用。它也使程序易于设计和维护。 任务用于监控输入、更新输出、计算、循环控制、显示、读按钮和键盘、与其它系统交流等。有些应用中可能只包含少数任务,有些应用中也可能包含上百个任务。任务数多并不意味这设计有多好或者有多有效,这依赖于应用的需要。任务的功能也要根据应用设计。一个任务可能只需要工作几微秒,然而有些任务可能就需要工作几十毫秒了。 在大多数嵌入式系统中,任务通常是无限循环的。任务不能像C 函数那样,它是不能return 的。 当任务第一次执行时,会传入一个变量"p_arg"。这是一个指向void的指针。用于变量的地址、结构体地址、或者函数的地址等。只运行一次的任务结束时必须通过调用OSTaskDel()删除自己。这样可以使系统中的任务数减少。在任务体中,任务可以调用uC/OS