什么是Servlet(原理,从访问到方法)

Servlet简介

Servlet是SUN公司提供的一门用于开发动态WEB资源的技术。SUN公司在其API中提供了一个Servlet接口,用户若想开发一个动态WEB资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:

  • 编写一个Java类,实现Servlet接口;
  • 把开发好的Java类部署到WEB服务器中。

那么我们不仅要问,写好的Servlet会在WEB应用中的什么位置上呢?位置如下如所示。

阅读更多

搞定JVM垃圾回收就是这么简单

写在前面

本节常见面试题:

问题答案在文中都有提到

  • 如何判断对象是否死亡(两种方法)。
  • 简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。
  • 如何判断一个常量是废弃常量
  • 如何判断一个类是无用的类
  • 垃圾收集有哪些算法,各自的特点?
  • HotSpot为什么要分为新生代和老年代?
  • 常见的垃圾回收器有那些?
  • 介绍一下CMS,G1收集器。
  • Minor Gc和Full GC 有什么不同呢?
阅读更多

可能是把Java内存区域讲的最清楚的一篇文章

写在前面(常见面试题)

基本问题

  • 介绍下 Java 内存区域(运行时数据区)
  • Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)
  • 对象的访问定位的两种方式(句柄和直接指针两种方式)

拓展问题

  • String类和常量池
  • 8种基本类型的包装类和常量池
阅读更多

实现一个免费的图片上传Web Server

一. 框架

  • 选用express框架
1
2
npm init
npm install express --save
二. 简单测试请求
  • 在当前目录新建index.js文件
1
2
3
4
5
6
7
8
9
10
const express = require("express");

const app = express();

app.get("/", (req, res) => {
res.send("Hello Node.js");
});

const port = 3000;
app.listen(port);
  • 复制代码在终端输入: node index.js

  • 在浏览器中打开 127.0.0.1:3000

阅读更多

Netty-使用Netty传输POJO对象

Netty-使用Netty传输POJO对象

  • 使用Netty传输POJO对象,重点在于对象的序列化,序列化后的对象可以通过TCP流进行网络传输,结合Netty提供的对象编解码器,可以做到远程传输对象。
  • 下面我们来看一个例子:模拟订票
  • 首先Java序列化的POJO对象需要实现java.io.Serializable接口。
阅读更多

写博客的一些推荐

写博客的一些个人推荐

1、使用markdown

  • 你如果经常上github这个神奇的网站。你会看到README.md ,没错,就是 markdown写的
  • 大家可以问问身边的大牛们,哪个不用markdown?就连渣渣程序猿的我也在用。
  • 用它写博客,你会感受到一个字:爽!如果你还没有用过markdown,听我的,抓紧试一试。
阅读更多

使用nio进行大文件复制

NIO概述

什么是NIO?

  • Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。
  • Java NIO: Channels and Buffers(通道和缓冲区)
  • 标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。
  • Java NIO: Non-blocking IO(非阻塞IO)
  • Java NIO可以让你非阻塞的使用IO,例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区写入通道也类似。
  • Java NIO: Selectors(选择器)
  • Java NIO引入了选择器的概念,选择器用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。
  • 注意:传统IT是单向。 NIO类似
阅读更多