简易微信公众号对接项目,每日定时发送天气信息,信息内容可DIY
什么是 ThreadLocal? ThreadLocal 诞生于 JDK 1.2,用于解决多线程间的数据隔离问题。也就是说 ThreadLocal 会为每一个线程创建一个单独的变量副本。ThreadLocal 有什么用?ThreadLocal 最典型的使用场景有两个:ThreadLocal 可以用来管理 Session,因为每个人的信息都是不一样的,所以就很适合用 ThreadLocal 来管理;
线程池的创建分为两种方式:ThreadPoolExecutor 和 Executors,上一节学习了 ThreadPoolExecutor 的使用方式,本节重点来看 Executors 是如何创建线程池的。 Executors 可以创建以下六种线程池。FixedThreadPool(n):创建一个数量固定的线程池,超出的任务会在队列中等待空闲的线程,可用于控制程序的最大并发数。CachedThre
线程池介绍线程池(Thread Pool):把一个或多个线程通过统一的方式进行调度和重复使用的技术,避免了因为线程过多而带来使用上的开销。为什么要使用线程池?可重复使用已有线程,避免对象创建、消亡和过度切换的性能开销。避免创建大量同类线程所导致的资源过度竞争和内存溢出的问题。支持更多功能,比如延迟任务线程池(newScheduledThreadPool)和缓存线程池(newCachedThread
线程介绍线程(Thread)是程序运行的执行单元,依托于进程存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化,因而也被称为轻量级的进程。什么是进程进程(Processes)是程序的一次动态执行,是系统进行资源分配和调度的基本单位,是操作系统运行的基础,通常每一个进程都拥有自己独立的内存空间和系统资源。简单来说,进程可以被当做是一
反射反射机制是 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect)的能力。简单来说就是通过反射,可以在运行期间获取、检测和调用对象的属性和方法。反射的使用场景在现实中反射的使用场景有很多,比如以下几个。使用场景一:编程工具 IDEA 或 Eclipse 等,在写代码时会有代码(属性或方法名)提示,就是因为使用了反射。使用场景二:很多知名的框架,为了让程序更优雅更简洁,也
IO 介绍IO 是 Input/Output 的缩写,它是基于流模型实现的,比如操作文件时使用输入流和输出流来写入和读取文件等。IO 分类传统的 IO,按照流类型我们可以分为:字符流字节流其中,字符流包括 Reader、Writer;字节流包括 InputStream、OutputStream。 传统 IO 的类关系图,如下图所示:IO 使用了解了 IO 之间的关系,下面我们正式进入实战环节,分别
队列(Queue):与栈相对的一种数据结构, 集合(Collection)的一个子类。队列允许在一端进行插入操作,而在另一端进行删除操作的线性表,栈的特点是后进先出,而队列的特点是先进先出。队列的用处很大,比如实现消息队列。Queue 类关系图,如下图所示:注:为了让读者更直观地理解,上图为精简版的 Queue 类关系图。本文如无特殊说明,内容都是基于 Java 1.8 版本。队列(Queue)1
泛型1)为什么要用泛型?在泛型没有诞生之前,我们经常会遇到这样的问题,如以下代码所示:ArrayList arrayList = new ArrayList(); arrayList.add("Java"); arrayList.add(24); for (int i = 0; i < arrayList.size(); i++) { String str = (String) ar
集合有两个大接口:Collection 和 Map,本文重点来讲解集合中另一个常用的集合类型 Map。以下是 Map 的继承关系图:Map 简介Map 常用的实现类如下:Hashtable:Java 早期提供的一个哈希表实现,它是线程安全的,不支持 null 键和值,因为它的性能不如 ConcurrentHashMap,所以很少被推荐使用。HashMap:最常用的哈希表实现,如果程序中没有多线程的
克隆在开始学习克隆之前,我们先来看看下面的代码,普通的对象复制,存在什么问题?class CloneTest { public static void main(String[] args) throws CloneNotSupportedException { // 等号赋值( 基本类型) int number = 6; int numbe
先来看看集合的继承关系图,如下图所示:其中:外框为虚线的表示接口,边框为实线的表示类;箭头为虚线的表示实现了接口,箭头为实线的表示继承了类。为了方便理解,我隐藏了一些与本文内容无关的信息,隐藏的这些内容会在后面的章节中进行详细地介绍。从图中可以看出,集合的根节点是 Collection,而 Collection 下又提供了两大常用集合,分别是:List:使用最多的有序集合,提供方便的新增、修改、删
抽象类和接口的应用
Java 的各种内部类:静态内部类、成员内部类、局部内部类、匿名内部类,它们特点和区别,枚举类使用,枚举类在编译之后,其实还是普通的最终类(final class)。
Object 类的详细介绍以及面试题
数组的定义与使用数组是 Java 编程中最重要的数据结构之一,也是最基本的数据结构,Java 中的常用集合 ArrayList、HashMap 等内部的实现都使用到了数组结构。数组是只能用来存储一种类型的集合,可以通过下标访问数值中的所有元素。数组的声明方式有以下两种,如整数型数组,请参考下面代码:方式一:int[] arr;方式二:int arr[];大部分情况下,我们会使用第一种方式 int[
在 JDK 8 之前,Java 语言为我们提供了两个类用于操作时间,它们分别是:java.util.Date 和 java.util.Calendar,但在 JDK 8 的时候为了解决旧时间操作类的一些缺陷,提供了几个新的类,用于操作时间和日期,它们分别是:LocalTime、LocalDateTime、Instant,都位于 java.time 包下。时间的操作在我们日常的开发中经常见到,比如,
在程序开发中,异常处理也是我们经常使用到的模块,只是平常很少去深究异常模块的一些知识点。比如,try-catch 处理要遵循的原则是什么,finally 为什么总是能执行,try-catch 为什么比较消耗程序的执行性能等问题,我们本讲内容都会给出相应的答案,当然还有面试中经常被问到的异常模块的一些面试题,也是我们本篇要讲解的重点内容。异常处理基础介绍先来看看异常处理的语法格式:try{ ...
算术运算符Java 中的算法运算符,包括以下几种:算术运算符名称举例+加法1+2=3-减法2-1=1*乘法2*3=6/除法24/8=3%求余24%7=3++自增1int i=1;i++--自减1int i=1;i--我们本讲要重点讲的是 “++” 和 “--”,其他的算术运算符相对比较简单直观,本讲就不花精力去讲解了,之所以要把 “++” 和 “--” 单独拿出来讲,是因为在使用他们的时候有很多坑
字符串介绍字符串是程序开发当中,使用最频繁的类型之一,有着与基础类型相同的地位,甚至在 JVM(Java 虚拟机)编译的时候会对字符串做特殊的处理,比如拼加操作可能会被 JVM 直接合成为一个最终的字符串,从而到达高效运行的目的。1 String 特性String 是标准的不可变类(immutable),对它的任何改动,其实就是创建了一个新对象,再把引用指向该对象;String 对象赋值之后就会在
基本数据类型Java 基本数据按类型可以分为四大类:布尔型、整数型、浮点型、字符型,这四大类包含 8 种基本数据类型。布尔型:boolean整数型:byte、short、int、long浮点型:float、double字符型:char8 种基本类型取值如下:数据类型代表含义默认值取值包装类boolean布尔型false0(false) 到 1(true)Booleanbyte字节型(byte)0﹣
Java 程序是如何执行的要了解任何一门编程语言,首先需要从宏观的视角把握全局,掌握其整体框架,然后再深入每个知识点进行学习和理解,这样才能快速掌握一项技能。学习Java也不例外。在本节中,我们将从整体的角度来看待Java的精髓。Java 介绍Java 诞生于 1991 年,Java 的前身叫做 Oak(橡树),但在注册商标的时候,发现这个名字已经被人注册了,后来团队的人就在咖啡馆讨论这件事该怎么
Redis 面试题汇总1.Redis 使用场景有哪些?答:Redis 使用场景如下:记录帖子点赞数、点击数、评论数缓存近期热帖缓存文章详情信息记录用户会话信息2.Redis 有哪些功能?答:Redis 功能如下:数据缓存功能分布式锁的功能支持数据持久化支持事务支持消息队列3.Redis 支持哪些数据类型?答:Redis 支持的数据类型如下:String 字符串List 列表Set 无序集合ZSet
SpringBoot 整合sftp 实现文件的上传和下载1.引入pom文件依赖<!--sftp核心依赖包--> <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.54&l
k8s集群搭建主机规划作用IP地址操作系统配置Master192.168.168.128Centos7.9 基础设施服务器2颗CPU 2G内存 50G硬盘Node1192.168.168.129Centos7.9 基础设施服务器2颗CPU 2G内存 50G硬盘Node2192.168.168.130Centos7.9 基础设施服务器2颗CPU 2G内存 50G硬盘环境搭建本次环境搭建需要安装三台C
Liunx配置sftp前言SFTP(SSH File Transfer Protocol,也称 Secret File Transfer Protocol)是一种安全的文件传输协议,一种通过网络传输文件的安全方法;它确保使用私有和安全的数据流来安全地传输数据。SFTP传输文件的过程,如下图:SFTP是基于默认的22端口,是ssh内含的协议,只要启动了sshd就可以使用。sftp采用的是ssh加密隧
GIT的使用以及分支策略
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号