JVM 的栈帧
栈帧是支持 JVM 进行方法调用和执行的数据结构,它是 JVM 运行时的数据区域的栈元素,其中包含了方法的局部变量表、操作数栈、动态链接方法,和返回地址等信息。
栈帧是支持 JVM 进行方法调用和执行的数据结构,它是 JVM 运行时的数据区域的栈元素,其中包含了方法的局部变量表、操作数栈、动态链接方法,和返回地址等信息。
在 JVM 运行时的数据区域中了解到了 JVM 的内存模型,那么既然使用了内存,就要考虑如何回收内存。与 C 语言不同,Java 不需要开发人员人工回收内存,而是交给 Java 的垃圾回收机制来完成。
做技术,不能只知其然而不知其所以然。在知道了工具的原理之后,才能更高效的使用这个工具。在程序的世界里,源码里面没有秘密,看懂了源码,也就看懂了原理。
这次就来阅读一下 ArrayList
的源码。
Servlet(Server Applet),全称 Java Servlet,是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。本系列将一步步地写出一个 Servlet 程序。
这篇博文将演示如何创建和使用 filter。
Servlet(Server Applet),全称 Java Servlet,是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。本系列将一步步地写出一个 Servlet 程序。
这篇博文将演示如何使用 cookie
和 session
进行会话追踪。
生产者与消费者问题 (Producer-consumer problem),也叫有限缓冲问题 (Bounded-buffer problem),是一个经典的多线程同步问题案例。
该问题中有两个线程共享一个固定大小的缓冲区,一个线程作为生产者,负责向缓冲区中放入数据;另一个线程作为消费者,负责从缓冲区中取出数据。该问题的重点在于,要保证当缓冲区满时,生产者不能继续向其中放入数据,而当缓冲区空时,消费者也不能从缓冲区中取出数据。
那么要保证以上两点,需要在缓冲区空时休眠消费者线程,并当缓冲区有数据之后唤醒消费者线程;以及当缓冲区满时休眠生产者线程,在缓冲区有空闲空间后唤醒生产者线程,或者直接在缓冲区满时放弃未存入缓冲区的数据。
这个问题的难点在于可能会产生死锁。当陷入死锁时,生产者和消费者都会处于休眠状态,并等待对方唤醒自己。
Servlet(Server Applet),全称 Java Servlet,是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。本系列将一步步地写出一个 Servlet 程序。
这篇博文将演示如何分别处理 GET
和 POST
请求,以及处理请求中的参数。
Servlet(Server Applet),全称 Java Servlet,是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。本系列将一步步地写出一个 Servlet 程序。
这篇博文将介绍一些后面会用到的接口和类。