tomcat的安装和使用

Tomcat 想必使用java的人都用过,也很熟悉,对于刚入行的java使用者来说还是很重要的,都需要安装,以及简单的使用,随着经验的增长,可能还需要了解更多的内部实现以及出现相关问题的解决。 不过随着现在技术的推进,各种框架也是越来越便利,封装了很多技术细节,比如现在springboot,很简单创 ... »

九、生产者与消费者模式

生产者消费者模式 生产者消费者模式是程序设计中非常常见的一种设计模式,被广泛运用在解耦、消息队列等场景。 使用生产者消费者模式通常需要在两者之间增加一个阻塞队列作为媒介,有了媒介之后就相当于有了一个缓冲,平衡了两者的能力。 整体如上图所示,最上面是阻塞队列,右侧的 1 是生产者线程,生产者在生产数据 ... »

Java 字符串比较、拼接问题

@(字符串的比较) /——————————————————字符串类型—————————————————/ Java中用于处理字符串常用的有三个类: 1、java.lang.String 2、java.lang.StringBuffer 3、java.lang.StrungBuilder 相同点: 都 ... »

六、线程池(一)

线程池 通过建立池可以有效的利用系统资源,节约系统性能。Java 中的线程池就是一种非常好的实现,从 JDK1.5 开始 Java 提供了一个线程工厂 Executors 用来生成线程池,通过 Executors 可以方便的生成不同类型的线程池。 线程池的优点 降低资源消耗。线程的开启和销毁会消耗资 ... »

五、Java - 集合

一、集合 Java 中的集合类存放于 java.util 包中,是一个存放对象的容器。 集合存放的是对对象的引用,对象本身还是存在于 JVM 堆内存中。 存放的是对象,即引用数据类型,对于基本数据类型采用自动装箱存储。 集合可以存放不同类型(一般情况下声明一个集合时会通过泛型进行约束),不限数量的数 ... »

Java基础--数组

数组 数组是用来存储一堆具有固定大小的相同类型元素 一维数组 一维数组声明 java中声明数组时不能指定长度 int [] arr; //java中推崇的风格 int arr []; // c与c#中推崇的风格,强烈建议java风格 创建数组 创建数组对象会在内存中开辟一整块连续的空间,数组名中引用 ... »

ThreadLocal 内存泄漏问题深入分析

写在前面 ThreadLocal 基本用法本文就不介绍了,如果有不知道的小伙伴可以先了解一下,本文只研究 ThreadLocal 内存泄漏这一问题。 ThreadLocal 会发生内存泄漏吗? 先给出结论: 如果你使用不当是有可能发生内存泄露的 ThreadLocal 和 当前 Thread 栈堆布 ... »

Java Collection秋招复习

抽象类和接口的区别 我们先来看一下抽象类 我们再来看一下接口 由此我们可以知道 1. 接口中没有构造方式 2. 接口中的方法必须是抽象的(在 下`interface default`实现方法) 3. 接口中除了static、final变量,不能有其他变量 4. 接口支持多继承 Java集合 Arra ... »

深入理解Mybatis插件开发

背景 关于Mybatis插件,大部分人都知道,也都使用过,但很多时候,我们仅仅是停留在表面上,知道Mybatis插件可以在DAO层进行拦截,如打印执行的SQL语句日志,做一些权限控制,分页等功能;但对其内部实现机制,涉及的软件设计模式,编程思想往往没有深入的理解。 本篇案例将帮助读者对Mybatis ... »

try finally 执行顺序问题

有return的情况下try catch finally的执行顺序 1. 在遇到Exception 并且没有catch的情况下 语句块没有执行 2. ,终止了 Java 虚拟机的运行, 语句块没有执行 理解一下finally The finally Block The finally block a ... »

理解Java的NIO

同步与阻塞 同步和异步是针对应用程序和内核的交互而言的。 同步:执行一个操作之后,进程触发IO操作并等待(阻塞)或者轮询的去查看IO的操作(非阻塞)是否完成,等待结果,然后才继续执行后续的操作。 异步:执行一个操作后,可以去执行其他的操作,然后等待通知再回来执行刚才没执行完的操作。 非阻塞是针对于进 ... »

Java字符串操作及与C#字符串操作的不同

每种语言都会有字符串的操作,因为字符串是我们平常开发使用频率最高的一种类型。今天我们来聊一下Java的字符串操作及在某些具体方法中与C#的不同,对于需要熟悉多种语言的人来说,作为一种参考。进行诫勉 首先,什么是字符串? 字符串是字符的序列,是作为一种对象而存在。说的直白点,字符串就是一些字符的组合, ... »

Java 基础之一对象导论

第一章 对象导论 1.1 抽象过程 所有编程语言都提供抽象机制。人们所能解决的问题的复杂性直接取决于抽象的类型和质量。 汇编语言是对底层机器的轻微抽象。 我们将问题空间中的元素及其再解空间中的表示称为 对象 。这种思想实质是: 程序可以通过添加新类型的对象使自身适用于某个特定的问题 。 万物皆为对象 ... »

Java 代码重用:操作与上下文重用

目录 "操作重用" "参数化操作" "上下文重用" "上下文作为模板方法" "结束语" 我几乎不需要讨论为什么重用代码是有利的。代码重用(通常)会导致更快的开发与更少的 BUG。一旦一段代码被封装和重用,那么检查程序是否正确只需要检查很少的一段代码。如果在整个应用程序中只需要在一个地方打开和关闭数据 ... »

Java 故障安全异常处理

异常处理代码必须保证其故障保护机制,其中一条重要的规则如下: 在 块抛出的最后一个异常将会在调用堆栈中传递。 所有早期异常将会消失。 如果从一个 或`finally try`块中捕获的异常隐藏。这会在你试图确定异常的原因时产生误导。 下面是 异常处理的经典示例: 如果 构造器抛出一个 异常,你认为会 ... »

Java 异常基础详解

目录 "1. Java 中的异常" "1.1 什么是异常?" "1.2 什么是异常处理?" "1.2.1 异常处理的优势" "1.3 Java 异常类的层次结构" "1.4 异常类型" "1.5 检查和未检查异常之间的区别" "1.6 可能出现异常的常见场景" "1.7 Java 异常处理关键字" ... »

深入浅出:快速排序

前言 排序算法有很多,快速排序是能够突破时间复杂度 O(n)的算法之一。下文中将由浅入深的介绍快速排序的原理。 分而治之 分而治之是一种解决问题的思路,有那么一点“大事化小,小事化了”的感觉。举个例子:求出数组 [1,2,3,5,6,9,8]所有项的和。那么我们首先想到的是遍历数组,每个元素相加即可 ... »

java 内部类 嵌套类

java 内部类 嵌套类 概述 java允许我们把一个类a定义在另一个类b里面,那么这个类a就叫做内部类。例如如下面: 使用方法 内部类的对象只能在与其外部类相关联的情况下才能被创建。 内部类访问外部类实例时可以使用Outer.this,创建内部类实例时使用外部类的实例对象 .new Inner() ... »

java 内部类 嵌套类

概述 java允许我们把一个类a定义在另一个类b里面,那么这个类a就叫做内部类。例如如下面: 如果内部类似Non static的那么被称作内部类 如果内部类是static 的那么被称作嵌套类或者内部静态类 <! more 使用方法 普通的内部类 内部类的对象只能在与其外部类相关联的情况下才能被创建。 ... »