Java
文章平均质量分 53
hornsey2012
这个作者很懒,什么都没留下…
展开
-
Java主流发布版本下载地址及各版本支持时间
主流版本下载地址Java SE 18Java SE 17.0.2 (LTS)Java SE 11.0.14 (LTS)Java SE 8u321Java SE 7Java SE 6各版本支持时间原创 2022-04-13 14:07:19 · 1588 阅读 · 0 评论 -
一文带你了解死锁
文章目录什么是死锁示例工具检测如何解决资源有序分配法什么是死锁死锁就是两个或多个线程并行执行时,彼此等待对方持有的资源,从而形成了一种僵持状态。死锁形成有4个条件:互斥持有资源并等待不可剥夺形成环路示例我们创建两个线程,分别为线程A和线程B。在线程A中,将获取资源A,睡眠一秒,然后获取资源B。在线程B中,将获取资源B,睡眠一秒,然后获取资源A。代码示例如下:public class DeadLockDemo { private static Object resourceA原创 2021-03-07 18:28:41 · 217 阅读 · 1 评论 -
IO模型图解
详情见图IO模型用户空间与内核空间 11.1. 运行用户程序和系统程序的地方,用户程序通过系统调用接口调用系统资源 11.2. top 11.2.1. CPU耗时 1PIO与DMA 12.1. PIO 12.1.1. 数据通过CPU存储转发,从磁盘读取到内存中 12.2. DMA 12.2.1. 不经过CPU直接进行磁盘和内存(内核空间)的数据交换 1缓存IO与直接IO 13.1. 缓存IO(标准IO) 13.1.1. 数据:磁盘->DMA copy到内核空间->C原创 2020-05-17 01:03:10 · 791 阅读 · 0 评论 -
Guava学习笔记-Splitter
Guava文章目录Guava1、背景2、说明3、示例3.1 简单使用3.2 包含空字符3.3 跳过空字符3.4 结果去除首尾空格3.5 固定长度分割3.6 指定分割符并限制生成集合数目3.7 使用正则表达式分割3.8 使用正则表达式分割成map4、延伸参考链接1、背景对长字符串进行分割,生成一个集合。2、说明功能与string.split类似,但更加强大。3、示例3.1 简单使用p...原创 2020-04-05 22:23:07 · 398 阅读 · 0 评论 -
Guava学习笔记-Joiner
Joiner文章目录Joiner1、背景2、说明依赖3、示例3.1 普通连接3.2 跳过空元素3.3 默认值替换空元素3.4 结果放入stringbuilder3.5 写入文件3.6 使用stream3.7 使用stream并替换默认值3.8 连接map3.9 连接map输出到stringbuilder4、延伸参考链接1、背景需要连接字符串集合中的所有元素,形成一个长字符串。2、说明依赖...原创 2020-03-31 01:23:20 · 497 阅读 · 0 评论 -
Easypoi使用简介
Easypoi使用简介在项目中,有时会出现需要将数据库数据导出报表等功能,这时一般会用到poi库。poi是一个专门给Java程序提供格式文档读写功能的API接口,包括各种微软的格式文档入excel、word等。最常用的还是Excel格式导入导出。Easypoi是在poi接口基础上进行了封装,简化了操作。使用Easypoi导出仅需以下几步:添加依赖项改造模型,添加注解从数据库查询数据...原创 2019-08-02 21:24:16 · 16275 阅读 · 11 评论 -
Netty入门——手写Dubbo框架
Dubbo框架本身就是一个RPC框架。RPC的服务提供者将自身的服务名、IP和端口存放在服务协调器ZK的某个节点下,服务消费者通过监听ZK的该节点,获取可调用的服务名,以及服务提供者的IP和端口信息。本文使用netty实现一个简单的Dubbo框架,使用zk作为注册服务器,完成RPC的整个过程。原创 2019-08-24 17:23:18 · 1174 阅读 · 0 评论 -
jasypt库的使用
jasypt库的使用1.简介Jasypt是一个Java简易加密库,用于加密配置文件中的敏感信息,如数据库密码。jasypt库与springboot集成,在实际开发中非常方便。2.添加依赖jasypt开发者开发了starter,添加jasypt-spring-boot-starter依赖就可以了。该库中有使用到slf4j依赖,若单独测试,需添加相应依赖,或直接添加spring-boot-st...原创 2019-08-28 16:38:36 · 3619 阅读 · 0 评论 -
Session与Token
Session和token是网络连接中常用到的两种机制,一般用来保持连接的客户端信息,但两种实现存在差异。sessionsession是由Web服务器维护的一种连接信息,可以用来存储当前连接的客户端相关信息。session默认超时时间为30分钟,可进行配置。使用postman进行接口测试时,每次连接使用一个新的session。如果两个连接想使用同一个session,可以在将第一个请求返回的JS...原创 2019-06-01 16:23:46 · 886 阅读 · 0 评论 -
Java基础之String对象
String是Java中很常见的一种存储类型,也是JVM中占有空间最大的一类对象。它的使用很常见,也很基础,但是,却也藏着一些不细心难以发现的知识点。如下代码 String str1 = "hello"; String str2 = new String("hello"); String str3 = new String("hello").intern(); System.ou...原创 2019-05-31 23:21:00 · 215 阅读 · 1 评论 -
JAVA8 十大新特性详解
“Java is still not dead—and people are starting to figure that out.”本教程将用带注释的简单代码来描述新特性,你将看不到大片吓人的文字。一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:复制代码代码如下:转载 2016-01-19 17:36:10 · 431 阅读 · 0 评论 -
Java读取文件夹大小的6种方法及代码
转自:http://www.codeceo.com/article/6-ways-java-direct.html这篇文章介绍了JAVA读取文件夹大小的几种方法实例,有需要的朋友可以参考一下。(一)单线程递归方式package com.taobao.test;import java.io.File;public class TotalFileSizeSequential {转载 2016-01-25 12:14:44 · 2292 阅读 · 2 评论 -
JavaIO流分析总结
Java中的流,可以从不同的角度进行分类。按照数据流的方向不同可以分为:输入流和输出流。按照处理数据单位不同可以分为:字节流和字符流。按照实现功能不同可以分为:节点流和处理流。 输出流: 输入流:因此输入和输出都是从程序的角度来说的。字节流:一次读入或读出是8位二进制。字符流:一次读入或读出是1转载 2015-12-26 11:21:29 · 388 阅读 · 0 评论 -
执行器Executor
1、newCachedThreadPool()在程序执行过程中创建与所需数量相同的线程2、newFixedThreadPool(int n)一次预先创建n条固定数目的线程3、newSingleThreadExecutor()预先创建一条线程,相当与n为1的newFixedThreadPoolpublic class E1 implements Runnable {原创 2016-01-27 23:47:27 · 408 阅读 · 0 评论 -
Callable接口学习
Callable是Java线程使用中提供的一个具有类型参数的泛型接口,通过实现该接口的call(),可以创建一个该返回值的实例。调用实例需要使用ExecutorService.submit()。下面的例子中,通过传入一个参数n,生成一个斐波拉契数列,然后将数列的和计算后返回。package concurrency21;import java.util.ArrayList;原创 2016-01-27 23:44:20 · 506 阅读 · 0 评论 -
使用pinyin4j完成中文拼音转换
pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库,作者是Li Min (xmlerlimin@gmail.com)。以下是一些具体的介绍和使用方式。 1. pinyin4j的官方下载地址http://sourceforge.net/projects/pinyin4j/files/,目前最新的版本是2.5.0 2.转载 2015-11-23 14:56:22 · 1452 阅读 · 0 评论 -
按字母排列的中国城市名称大全
/** * Created by hornsey on 2015/11/20. */public class Cities { public static final String[] mCitiesStrings = { "A","阿坝","阿拉善","阿里","安康","安庆","鞍山","安顺","安阳","澳门","B","北京","白银",原创 2015-11-20 15:05:39 · 18385 阅读 · 0 评论 -
Java学习:Timer与ScheduledExecutorService的区别
java.util.Timer计时器有管理任务延迟执行("如1000ms后执行任务")以及周期性执行("如每500ms执行一次该任务")。但是,Timer存在一些缺陷,因此你应该考虑使用ScheduledThreadPoolExecutor作为代替品,Timer对调度的支持是基于绝对时间,而不是相对时间的,由此任务对系统时钟的改变是敏感的;ScheduledThreadExecutor只支转载 2015-11-04 09:36:14 · 4182 阅读 · 0 评论