这篇文章是应网友之邀所写,主要描述一下我们访问网站时, 从输入网址到最后浏览器呈现内容,中间发生了什么。之前写过两篇文章《我是一个网卡》,《我是一个路由器》描述了一个电脑如何通过DHCP、ARP、NAT等上式获取IP、然后访问网络的过程,主要专注在传输层和网络层。今天的文章主要专注于应用层,我拿了一个很简单的网络结构来讲。假定本机已经获取了IP地址,各种网络
......
394
0
0
2022-04-22
系统上运行着诸多进程,通过 jps 命令能够快速有效识别 Java 进程。在 Linux 中,有一些用于查看系统上运行进程的命令。进程是指由内核管理的正在进行的事件。每启动一个应用程序时,就会产生一个进程,但也有许多在计算机后台运行的进程,如保持系统时间准确的进程、监听新文件系统的进程、索引化文件的进程等。有一些可以用来监测这些进程的实用
......
357
0
0
2022-04-22
对象漏标
垃圾回收的并发标记阶段,gc线程和应用线程是并发执行的,所以一个对象被标记之后,应用线程可能篡改对象的引用关系,从而造成对象的漏标、误标。
误标没什么关系,顶多造成浮动垃圾,在下次gc还是可以回收的。
漏标的后果是致命的,把本应该存活的对象给回收了,从而影响的程序的正确性。
为了解决在并发标记过程中,存活对象漏标的情况,GC HandBoo
......
339
0
0
2022-04-22
手动安装可以让用户更好的控制 Java 运行时环境。使用 Linux 发行版的软件包管理工具来安装 Java 软件包 是很容易的。然而,有时你需要手动安装 Java。这对基于 Java 的应用服务器(如 Tomcat 或 JBoss)的管理员特别重要。许多开源和专有软件产品都依赖于这些服务。开发者或运行时套件?Java 虚拟机Java Virtua
......
349
0
0
2022-04-22
如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的实践者
这7种作用于不同分代的垃圾收集器,如果两个收集器之间有连线,就说明它们可以搭配使用,收集器所处的位置表示它们是属于新生代收集器或老年代收集器。
Serial收集器
Serial收集器是一个单线程工作的收集器,但它的“单线程”的意义不仅仅是它只会使用一个处理器或一个收集线程去完成垃圾
......
370
0
0
2022-04-22
无论你喜欢哪个发行版和包管理器,都可以都很容易地在你的 Linux 系统上安装 Java。把 Java 安装到你的 Linux 桌面上有多种方法。一个明显的方式是使用你的 Linux 发行版中提供的软件包。请注意,这并不适合所有人。例如,有些用户可能需要一个非常具体的 Java 版本。在你开始之前,你必须确定你需要“哪种 Java”。你是否只需要运行一些&n
......
384
0
0
2022-04-21
常见的垃圾回收算法
GC Roots
在Java语言中,GC Roots包括以下几类元素:
虚拟机栈中引用的对象,比如:各个线程被调用的方法中使用到的参数,局部变量等
本地方法栈内JNI(通常说的本地方法)引用的对象
方法区中类静态属性引用的对象,比如:Java类的引用类型静态变量
方法区中常量引用的对象,比如:字符串常量池(String Tab
......
430
0
0
2022-04-21
如何使用 Java 开发工具包中的 Java 监控和管理控制台。Java 开发工具包(JDK)提供了开发 Java 应用程序的二进制文件、工具和编译器。其中一个有用的工具是 jconsole。为了演示,我将使用 WildFly J2EE 应用服务器,它是 JBOSS 开源应用服务器项目的一部分。首先,我启动了一个独立的实例。~/wildfly/24
......
493
0
0
2022-04-21
在学习建立在 Java 之上的所有相关工具时,了解 Core Java 会给你带来很大的优势。计算机编程(也被称为 编码)的重点不是使用哪种编程语言,而是发展编程逻辑和学习像程序员一样思考。你一开始使用的编程语言应该是在这一努力过程中对你帮助最大的语言。因此,你必须问自己一个问题,“作为一个程序员,你想开发什么?”例如,如果你想从事安卓应用开发、视
......
433
0
0
2022-04-21
问题引入
什么是GC垃圾回收(Garbage Collection),为什么需要GC回收(Garbage Collection)?
什么是垃圾?
垃圾(Garbage)是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。
为什么需要GC?
如果不及时的对垃圾进行清理,那么这些垃圾对象所占用的对象,一直会保留到应用程序结束,
......
353
0
0
2022-04-21
生产消费者模式使用阻塞队列控制消息的产生和消费代码实现:class MessageQueue {
private final LinkedList<Message> list = new LinkedList<>();
private final int capacity;
public Mess
......
394
0
0
2022-04-21
背景介绍Java源代码被编译为Class文件之后,Class文件结构是JVM加载Class,实例化对象,和进行方法调用的重要依据.每个 Class 文件都是由 8 字节为单位的字节流组成,所有的 16 位、32 位和 64 位长度的数 据将被构造成 2 个、4 个和 8 个 8 字节单位来表示。多字节数据项总是按照 Big-Endian1的顺 序进行存储。在
......
321
0
0
2022-04-21
保护性暂停模式Guarded Suspension Pattern线程间通信模型,Future和Promise的实现原理代码实现:class GuardedSuspension {
private Object response;
public Object get () {
synchronized (this)
......
426
0
0
2022-04-21
前一段时间一直在做性能调优的工作,颇有收获。因此,简单的总结并分享下研究成果。性能调优很有趣但也是个无底洞,不可能在一篇文章全部阐述完。这里只是提供一个方向,以后碰到了知道可以从方向方面入手即可。具体如下:代码层面for循环中不要利用 + 号去拼接字符串在循环次数比较多的for循环中,我们也不要利用 + 号去拼接字符串。具体例子如下:具体解决方法如下:根据具
......
365
0
0
2022-04-21
听说,你已经开始学习 Java 编程了?很好。你想在你的 Linux 系统上运行 Java 程序?那就更好了。让我告诉你如何在 Ubuntu 和其他 Linux 发行版的终端中运行 Java。在 Ubuntu 中运行 Java 程序让我们在这里按正确的步骤进行。第一步:安装 Java 编译器要运行一个 Java 程序,你需要先编译该程序。为此你需要 Java
......
364
0
0
2022-04-20