
java编程语言
文章平均质量分 96
java编程语言
大隐隐于野
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 8系列之重新认识HashMap
摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和Tre原创 2021-08-27 16:26:34 · 52 阅读 · 0 评论 -
LeetCode 公交路线(广度优先搜索)
我们有一系列公交路线。每一条路线 routes[i] 上都有一辆公交车在上面循环行驶。例如,有一条路线 routes[0] = [1, 5, 7],表示第一辆 (下标为0) 公交车会一直按照 1->5->7->1->5->7->1->… 的车站路线行驶。假设我们从 S 车站开始(初始时不在公交车上),要去往 T 站。 期间仅可乘坐公交车,求出最少乘坐的...转载 2019-11-22 16:25:12 · 1185 阅读 · 0 评论 -
maven依赖基本原则
一、依赖范围1.Compile struts2-core编译(compile)时需要 测试时需要,,运行时需要,打包时需要2.Provided jsp-api.jar servlet-api.jar编译(compile)时需要,测试(test)时也需要 ,运行时不需要,打包时不需要3.Runtime 数据库驱动包编译时不需要,测试时需要,,运行时需要,打包时需要4.Test junit.jar编译时不需要,测试时需要,运行时不需要,打包也不需要二、依...原创 2020-10-16 15:37:24 · 448 阅读 · 0 评论 -
一个 Java 线程池bug引发的 GC 机制思考
问题描述前几天,在帮同事排查一个线上偶发的线程池错误逻辑很简单,线程池执行了一个带结果的异步任务。但是最近有偶发的报错: java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@a5acd19 rejected from java.util.concurren...原创 2020-03-17 11:21:34 · 288 阅读 · 0 评论 -
BlockingQueue的基本原理
展开1. 前言BlockingQueue即阻塞队列,它算是一种将ReentrantLock用得非常精彩的一种表现,依据它的基本原理,我们可以实现Web中的长连接聊天功能,当然其最常用的还是用于实现生产者与消费者模式,大致如下图所示:在Java中,BlockingQueue是一个接口,它的实现类有ArrayBlockingQueue、DelayQueue、 LinkedBlockingD...原创 2020-03-04 18:42:22 · 2129 阅读 · 0 评论 -
Guava的event bus
Guava的event busguava,https://github.com/google/guava 是一个非常有名的Java类库,提供了很多在日常开发中常用的集合、函数接口等。此外,guava还提供了一个模块叫做event bus,生产者往event bus上投递消息,event bus负责回调订阅了此类消息的回调函数,实现了消息生产者和消费者之间的解耦和异步处理。以下是一个简单的例子...原创 2019-08-31 08:36:08 · 720 阅读 · 0 评论 -
Google-Guava-EventBus源码解读
Guava是Google开源的一个Java基础类库,它在Google内部被广泛使用。Guava提供了很多功能模块比如:集合、并发库、缓存等,EventBus是其中的一个module,本篇结合EventBus源码来谈谈它的设计与实现。概要首先,我们先来预览一下EventBus模块的全部类图:类并不是多而且几乎没有太多继承关系。下面,我们来看一下各个类的职责:EventBus:...原创 2019-08-30 14:23:35 · 440 阅读 · 0 评论 -
java读取excel的工具类-POI解析excel
java读取excel的工具类-POI解析excel分享一个操作excel的工具类,这个工具分3个部分,ExcelUtil.java //工具类ExcelSheetPO.java //实体对象ExcelVersion.java //版本枚举可以把excel数据读取到内存中,转换为List<List<Object>>,也可以根据List<...转载 2019-07-26 22:06:02 · 1120 阅读 · 0 评论 -
java中导入导出excel
Java中导入、导出Excel一、介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样在我们实际的开发中,很多时候需要实现导入、导出Excel的应用。目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和JavaExcel...转载 2019-07-26 21:40:43 · 247 阅读 · 0 评论 -
poi解析excel
poi解析excel20190723更新一个bug在getValueFromCell()方法中String typeName = expectClazz.getTypeName(); 变更为 String typeName = expectClazz.getSimpleName(); 同时增加支持类型限制,也就是其中的supportTypeList,表达了该工具类支持excel中的数...转载 2019-07-26 11:41:14 · 352 阅读 · 0 评论 -
centos7.0 idea中文输入问题
/etc/profile:export JAVA_HOME=/opt/jdk/jdk1.8.0_212export PATH=$PATH:$JAVA_HOME/binexport IDEA_JDK=$JAVA_HOMEexport JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/libexport...转载 2019-07-24 23:58:36 · 912 阅读 · 0 评论 -
IDEA 实用功能Auto Import:自动优化导包(自动删除、导入包)
IDEA 实用功能Auto Import:自动优化导包(自动删除、导入包)JetBrains公司的intellij Idea堪称JAVA编程界的苹果,用户体验非常好下面介绍一下IDEA的一个能显著提升写代码效率的非常好用的功能设置—— Auto ImportAuto Import的功能是可以帮助我们自动删除无用的包Import(未被引用),以及自动Import填充尚未导入的包。完...转载 2019-07-24 23:39:18 · 446 阅读 · 0 评论 -
Java – How to download a file from the Internet
Java – How to download a file from the InternetBymkyong|March 16, 2017| Viewed : 42,123 |+192 pv/wThis article shows you how to download a file from an URL by using the following methods :A...转载 2019-07-24 23:29:25 · 246 阅读 · 0 评论 -
将父类的属性赋值给子类(利用反射)
public class A { private String a; private String b; public String getA() { return a; } public void setA(String a) { this.a = a; } public S...转载 2019-07-03 11:05:55 · 2054 阅读 · 0 评论 -
SpringBoot执行定时任务
SpringBoot执行定时任务1、在启动类中加入@EnableScheduling来开启定时任务。package com.example.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplicati...转载 2019-06-30 22:54:46 · 14786 阅读 · 0 评论 -
玩转SpringBoot之定时任务详解
玩转SpringBoot之定时任务详解阅读目录:序言 一、静态:基于注解 二、动态:基于接口 三、多线程定时任务阅读正文:回到顶部序言使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式:一、基于注解(@Scheduled) 二、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据...转载 2019-06-30 22:39:12 · 248 阅读 · 0 评论 -
ThreadPoolExecutor线程池核心参数详解
理解ThreadPoolExecutor线程池的corePoolSize、maximumPoolSize和poolSize我们知道,受限于硬件、内存和性能,我们不可能无限制的创建任意数量的线程,因为每一台机器允许的最大线程是一个有界值。也就是说ThreadPoolExecutor管理的线程数量是有界的。线程池就是用这些有限个数的线程,去执行提交的任务。然而对于多用户、高并发的应用来说,提交的任...转载 2019-06-26 16:34:43 · 32169 阅读 · 6 评论 -
BigDecimal.setScale 处理java小数用法
BigDecimal.setScale()方法用于格式化小数点:setScale(1)表示保留一位小数,默认用四舍五入方式setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4setScale(1,BigDecimal.ROUND_HAL...转载 2019-06-25 10:15:09 · 1221 阅读 · 0 评论 -
Java集合及concurrent并发包总结
Java集合及concurrent并发包总结1.集合包 集合包最常用的有Collection和Map两个接口的实现类,Colleciton用于存放多个单对象,Map用于存放Key-Value形式的键值对。 Collection中最常用的又分为两种类型的接口:List和Set,两者最明显的差别为List支持放入重复的元素,而Set不支持。 List最常用的实现类有:Arra...转载 2019-05-14 21:30:28 · 351 阅读 · 0 评论 -
Linux IO模式及 select、poll、epoll详解
Linux IO模式及 select、poll、epoll详解linux 服务器开发171.3k 次阅读 · 读完需要 50 分钟294注:本文是对众多博客的学习和总结,可能存在理解错误。请带着怀疑的眼光,同时如果有错误希望能指出。同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的...转载 2019-05-14 17:20:25 · 164 阅读 · 0 评论 -
JAVA多线程和并发基础面试问答
JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Ja...转载 2019-05-13 16:52:55 · 138 阅读 · 0 评论 -
Java 并发编程笔记:如何使用 ForkJoinPool 以及原理
Java 并发编程笔记:如何使用 ForkJoinPool 以及原理前言Java 1.7 引入了一种新的并发框架—— Fork/Join Framework。本文的主要目的是介绍 ForkJoinPool 的适用场景,实现原理,以及示例代码。TLDR;如果觉得文章太长的话,以下就是结论:ForkJoinPool不是为了替代ExecutorService,而是它的补充,在某...转载 2019-05-13 16:11:42 · 387 阅读 · 0 评论 -
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中...转载 2019-05-13 15:14:30 · 164 阅读 · 0 评论 -
不可不说的Java“锁”事
前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体...转载 2019-05-13 00:01:55 · 156 阅读 · 0 评论 -
Java常见问题分析
Java常见问题分析一、JVM简介1.JVM内存模型实际占用内存大小:-XX:MaxPermSize + -Xmx + -Xss + -XX:MaxDirectMemorySize如图一:主要分为:非堆内存+堆内存+栈内存+堆外内存JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的在JVM中堆之外的内存称为...转载 2019-05-13 00:00:41 · 307 阅读 · 0 评论 -
Java线上应用故障排查之一:高CPU占用
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障。通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题。但是,怎么定位到具体线程或者代码呢?首先显示线程列表:ps ...转载 2019-05-12 23:51:59 · 164 阅读 · 0 评论 -
如何排查CPU占用过高以及常见的几种情况
在最近上线过程中遇到cpu占用率过高问题由于问题已解决,此时仅重现操作方法1.先用top命令,找到cpu占用最高的进程 PID如上图2.再用ps -mp pid -o THREAD,tid,time查询进程中,那个线程的cpu占用率高 记住TID3.jstack 29099 >> xxx.log打印出该进程下线程日志4.sz xxx....转载 2019-05-12 23:50:44 · 28393 阅读 · 1 评论 -
epoll
epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/pol...转载 2019-05-12 23:32:43 · 266 阅读 · 0 评论 -
Java NIO浅析
Java NIO浅析2016年11月04日作者: 王烨文章链接9969字20分钟阅读NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。那么NIO的本质是什么样的呢?它是怎样与事件模型结合来解放线程、提高...转载 2019-05-10 14:29:04 · 189 阅读 · 0 评论 -
Java NIO:NIO概述
Java NIO:NIO概述 在上一篇博文中讲述了几种IO模型,现在我们开始进入Java NIO编程主题。NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题。本文下面分别从Java NIO的几个基础概念介绍起。 以下是本文的目录大纲: 一.NIO中的几个基础概念 二.Channel 三.Buffer 四.Selector 若有不正之处,...转载 2019-05-09 17:45:11 · 164 阅读 · 0 评论 -
Java NIO:浅析I/O模型
也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和P...转载 2019-05-09 15:09:18 · 188 阅读 · 0 评论 -
Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是...转载 2018-11-28 11:14:12 · 297 阅读 · 0 评论 -
spring面向切面aop拦截器
spring中有很多概念和名词,其中有一些名字不同,但是从功能上来看总感觉是那么的相似,比如过滤器、拦截器、aop等。过滤器filter、spring mvc拦截器Interceptor 、面向切面编程aop,实际上都具有一定的拦截作用,都是拦截住某一个面,然后进行一定的处理。在这里主要想着手的是aop,至于他们的比较,我想等三个都一一了解完了再说,因此这里便不做过多的比较。在我目前的...转载 2019-07-25 16:40:42 · 465 阅读 · 1 评论 -
SpringBoot Schedule 配置
1. 定时任务实现方式定时任务实现方式:Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章将不做详细介绍。 使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂,有空介...转载 2019-07-24 22:59:10 · 1342 阅读 · 0 评论 -
Spring Boot干货系列:(一)优雅的入门篇
前言Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度一直很高,所以决定花时间来了解和学习,为自己做技术储备。正文首先声明,Spring Boot不是一门新技术,所以不用紧张。从本质上来说,Spring Boot就是Spring,它做了那些没有它你也会去做的Spring Bean配置。它使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一...转载 2019-05-07 16:22:32 · 198 阅读 · 0 评论 -
Java高性能异步处理框架-Disruptor
1、Disruptor 简介Disruptor 是实现了“队列”的功能,而且是一个有界队列。【有界队列】 那么它的应用场景自然就是“生产者-消费者”模型的应用场合了。2、与BlockingQueue 区别BlockingQueue 是一个 FIFO 队列,生产者(Producer)往队列里发布(publish)一项事件(或称之为“消息”也可以...转载 2019-11-18 18:16:20 · 2259 阅读 · 0 评论