本文旨在通过重写Comparator接口的compare()方法实现对List的升序、降序、倒序排序。 首先明确一点: compare(Integer o1, Integer o2…
简介 线程是基本的调度单位,它被包含在进程之中,是进程中的实际运作单位,它本身是不会独立存在。一个进程至少有一个线程,进程中的多个线程共享进程的资源。 Java中创建线程的方式有多…
目的 搭建爬虫平台,爬取某豆瓣电影的评论信息。 准备 webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。webmagic的核…
前言 EventBus 是 Guava 的事件处理机制,是观察者模式(生产/消费模型)的一种实现。 观察者模式在我们日常开发中使用非常广泛,例如在订单系统中,订单状态或者物流信息的…
Java跨平台原理(字节码文件、虚拟机) C/C++语言都直接编译成针对特定平台机器码。如果要跨平台,需要使用相应的编译器重新编译。 Java源程序(.java)要先编译成与平台无…
HashMap 是 Java 中最常见数据结构之一,它能够在 O(1) 时间复杂度存储键值对和根据键值读取值操作。本文将分析其内部实现原理(基于 jdk1.8.0_231)。 &n…
Java 集合类中的 Map.get() 方法返回指定键所映射的值。如果此映射不包含该键的映射关系,则返回 null。 语法: get(Object key)) 参数说明: key…
在执行一系列带有IO操作(例如下载文件),且互不相关的异步任务时,采用多线程可以很极大的提高运行效率。线程池包含了一系列的线程,并且可以管理这些线程。例如:创建线程,销毁线程等。本…
在后端开发的过程中,都逃不开与文件传输特别是图片的传输打交道,但是因为现在各种拍照设备发展越来越快,拍出的照片更是越来越清晰,但是照片文件的大小也是越来越大了,手机拍照小则2M大则…
Java socket 封装了传输层的实现细节,开发人员可以基于 socket 实现应用层。本文介绍了 Java socket 简单用法。 1. 传输层协议 传输层包含了两种协议,…
游戏界面基本布局 贪吃蛇是基于JFrame的一款小游戏。它主要有两部分组成,一个是显示区域,一个是按钮区域。这两个区域都用JPanel来实现。 首先需要创建一个基于JFrame的类…
Gradle 插件代码可以在 build.gradle 中,buildSrc 项目中,以及独立的插件项目中编写。本文将介绍如何在一个独立的项目中使用 Java 语言编写 Gradl…