
Java
文章平均质量分 54
boonya
资深Java,热衷大数据,Python爬虫,持续探索副业中,有需要的可以加我微信联系:boonya221
展开
-
Java语言cron4j轻量调度框架
前言:cron4j是一个轻量级的java任务调度工具,可以采用Unix Crontab语法来设置任务调度时间。1、官方学习网址:http://www.sauronsoftware.it/projects/cron4j/manual.php2、快速开发示例import it.sauronsoftware.cron4j.Scheduler;public class Quickstart {原创 2013-09-10 11:48:58 · 12745 阅读 · 1 评论 -
Timer、TimerTask实现定时业务处理
1、编写任务 package com.boonya.timer; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimerTask; /** * myTask.java * 功能:编写定时执行的任务 * @author boonya * @version 1.0 2012-1原创 2013-03-13 20:58:05 · 2771 阅读 · 0 评论 -
Java数据结构避坑指南
Java中有一些坑需要我们去记忆,例如:Arrays.asList() 不支持add和remove操作,与之类似的都将在此进行记录。原创 2023-05-03 17:00:16 · 476 阅读 · 1 评论 -
Java数据结构避坑指南
发生此错误的主要原因是java.util.Arrays类的asList方法返回一个嵌套在类java.util.Arrays中的ArrayList对象。ArrayList扩展了java.util.AbstractList,但没有实现add或remove方法。因此,当在列表对象上调用此方法时,它调用AbstractList类的添加或删除方法,从而抛出此异常。此外,asList方法返回的列表是固定大小的列表,因此不能修改。下面的示例在尝试添加时将导致。后续还有继续补充.....原创 2023-05-03 16:54:29 · 393 阅读 · 0 评论 -
Java编译器插件Manifold(流形)
Manifold是一个Java编译器插件,它的特性包括元编程、属性、扩展方法、操作符重载、模板、预处理器等等。原创 2023-04-21 19:11:49 · 1292 阅读 · 0 评论 -
jenv for windows[快速切换windows java版本
在实际的开发中,新老系统需要在不同的JDK版本之间进行切换,jenv提供了这种比较快捷的方式。原创 2023-04-14 17:10:18 · 1356 阅读 · 0 评论 -
Java ?不定类型与泛型的使用解决List继承参数
?表示不确定的数据类型。下面我们来看看怎么使用。原创 2022-05-25 19:36:01 · 1332 阅读 · 0 评论 -
Java实现生产者消费者的PV操作信号量操作
定义一个信号量对象,同时定义生产者和消费者,让生产者和消费者互相等待。生产者每次生产一个对象放入队列,通知消费者消费;消费者每次只消费一个队列对象数据,消费完再通知生产者生产。实现的效果就是交替执行生产和消费。原创 2022-03-07 16:16:27 · 3090 阅读 · 0 评论 -
如何在 Java 应用程序中使用 JaCoCo 生成代码覆盖率报告?
测试是软件开发生命周期中最重要的部分。未经测试,软件无法部署。为了测试 Java 应用程序,我们主要使用 Junit。JUnit 框架是一个用于测试的 Java 框架。现在,当需要在 Java 中执行测试时,JUnit 被用作标准。但是什么是代码覆盖率,什么是 JaCoCo?代码覆盖率是一种软件指标,用于衡量在自动化测试期间执行了多少行代码。换句话说,我们也可以说代码覆盖率描述了自动化测试覆盖的代码百分比,它检查哪些代码部分在测试套件期间运行,哪些不运行。翻译 2022-03-07 15:02:14 · 1104 阅读 · 0 评论 -
Java使用函数式接口处理if-else的策略模式
Java使用函数式接口处理if-else的策略模式,替代策略模式。原创 2022-01-27 16:12:16 · 1257 阅读 · 0 评论 -
JDK8 JVM运行时系统级参数
JDK 运行时参数列表。原创 2022-01-27 15:16:46 · 715 阅读 · 0 评论 -
为什么Java 服务Docker容器耗尽了系统内存
我们在运行Docker 实例的时候应该规划一个内存,不能无限制的去让Docker耗尽系统内存。这就是为什么Docker的内存跟我们的Java应用分配的不一样的原因。原创 2021-12-14 18:37:05 · 1154 阅读 · 0 评论 -
Java免费文件安全加密解密
官网地址:C#/VB.Net Excel, Word, PowerPoint, PDF Component - Welcome to e-iceblue Company LtdJava集成Excel加解密示例配置文件文件枚举package com.boonya.spring.mybatis.plus.enums;import lombok.Getter;@Getterpublic enum FileType { EXCEL(".xls","Excel"), .原创 2021-11-17 19:03:56 · 597 阅读 · 0 评论 -
Spring利用InitializingBean定义基于业务队列处理Handler
在各种高效的编程框架中都有Handler身影,将一类业务通过Handler统一输出可以简化业务编程。比如:业务编号、业务持久化处理、业务异常等处理。定义Handler类public interface ServiceHandler { ServiceType type(); void execute(String data); void handleException(String data);}定义类似面向过程编程的需求处理项目结构:接口:.原创 2021-09-06 11:32:29 · 385 阅读 · 0 评论 -
Java队列和线程池消费处理的简单设计
目录实现目标目标分析线程池设计队列与线程池结合实现目标队列缓冲业务数据 线程空闲忙碌识别 任务处理的进度控制目标分析进度控制:需要将队列里面总任务和线程消费的任务进行记录,实现一个completed/total 这样的控制。线程池控制:线程池使用计数器,在完成任务和新增任务进行原子操作维护计数器数量。线程池设计线程池实际上就是一个线程的池化处理,一般会初始化几个线程,需要使用线程时从池子里面拿,池子里面的总容量占用多少可以用来标记线程繁忙和空闲。线程池的设...原创 2020-12-03 13:08:05 · 1694 阅读 · 0 评论 -
Java JDK1.8时间区间计算类Period和Duration
在Java项目中,时间格式化在很多时候都会用到。在JDK1.8之前我们都是通过自己封装的时间工具类来实现,在1.8之后我们可以使用它提供的Period和Duration来实现时间区间和转换计算。使用这两个工具,我们可以计算年、月、日、周、天、时、分、秒、纳秒等。目录传统封装Util工具Period时间区间计算Duration时间计算传统封装Util工具这种工具类在项目中非常普遍:package com.patrol.beans.util;import java.text.P原创 2020-09-29 09:50:14 · 1636 阅读 · 0 评论 -
Java基于队列和数据库批量维护用户在线离线状态和位置信息
目录前言介绍用户数据迁移用户状态数据批量处理队列数据批量消费前言介绍系统用户实时位置都保存在redis中,我们采用redis过期方式来监听用户位置离线,离线的用户key会放入对应的队列进行消费(这里的队列可以是Java队列也可以是RabbitMQ之类的消息中间件,我们采用的是ConcurrentLinkedQueue)。项目中对用户实时位置有两个要求(特殊行业对人员位置安全规范的要求):a.用户最后一次经纬度实时位置更新到数据库 b.用户离线后更新用户在线状态为了解决每次用户原创 2020-08-29 22:04:41 · 950 阅读 · 1 评论 -
Java 操作Fastjson JSON字符串转义正确处理方式
经常使用字符串替换replace或者replaceAll ,而replaceAll是基于正则表达式实现的。目录替换源码错误示例正确示例真实示例替换源码/** * Replaces each substring of this string that matches the given <a * href="../util/regex/Pattern.html#sum">regular expression</a> with the原创 2020-08-11 16:46:47 · 5502 阅读 · 0 评论 -
Java 并发写文件加锁处理(阿里云OSS HTTP文件迁移)
文件多线程写的情况下需要加锁处理:提供三种方式写入文件内容。 /** * 追加写入内容到目标文件 * * @param dwCode * @param rowsContent * @param destFile */ private synchronized void writeIntoFile(String dwCode,String rowsContent,File destFile){ log.info("wr.原创 2020-06-11 17:03:52 · 1106 阅读 · 0 评论 -
Java 字符串效率拼接测试报告—StringBuffer效率之王
目录实验报告测试代码StringBufferStringBuilder如何推导结论?从https://www.cnblogs.com/twzheng/p/5923642.html一文的结论进行验证。发现效率StringBuilder和StringBuffer的结果是相反的,故此本文加以论证。实验报告StringBuffer>StringBuilde...原创 2020-05-06 22:34:22 · 810 阅读 · 0 评论 -
Java并发编程线程任务返回值及顺序问题解决方案
目录核心知识点无返回值并发执行顺序控制有返回值或先后顺序控制Future FutureTask CompletionService CompletableFutrue比较CountDownLatchCyclicBarrierFutureTaskCompletionServiceCompletableFuture核心知识点无返回值并发执行顺序控制...原创 2020-04-01 14:13:25 · 1708 阅读 · 0 评论 -
Java中使用Atomic*实现原子锁线程安全
原子锁类型是JDK Atomic*相关的类。如AtomicInteger、AtomicLong 等等。package com.forestar.xht.util;import java.util.concurrent.atomic.AtomicInteger;/** * 原子锁 * * @author PJL * */public class AtomicLock {...原创 2019-11-11 21:28:50 · 1404 阅读 · 0 评论 -
Java 快速实现二维码图片项目路径生成和文件压缩下载
Java 快速实现二维码图片项目路径生成和文件压缩下载。Zxing工具类在这个小demo中基本用不到,需要做复杂的二维码还是可以的,如二维码嵌入Logo图片等。目录Zxing二维码生成工具服务器快速二维码图片管理二维码图片生成工具图片压缩下载工具二维码控制器测试效果生成二维码下载ZIP压缩文件Zxing二维码生成工具pom.xml<!-- G...原创 2019-10-21 17:41:25 · 1065 阅读 · 1 评论 -
Java中数据分页显示之PageBean
1、编写PageBean工具类: package com.accp.page.util;import java.util.ArrayList;import java.util.List;public class PageBean {private原创 2011-08-31 17:05:44 · 21226 阅读 · 0 评论 -
Java中数据分页显示之HibernateTemplate
1、使用SSH框架(配置环境); 2、编写实现的基础类BaseDao:package com.accp.jboa.dao;import java.io.Serializable;import java.sql.SQLException;import java.原创 2011-08-31 17:50:25 · 1278 阅读 · 0 评论 -
Java程序排序之希尔排序
1、希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。2、希尔排序基本思想:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2 该方法实质上是一种分组插入方法。 给定原创 2011-09-01 14:31:50 · 3881 阅读 · 0 评论 -
Java程序排序之分配排序
分配排序的基本思想:排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序.它们的时间复杂度可达到线性阶:O(n)。箱排序(Bin Sort)1、箱排序的基本思想 箱排序也称桶排序(Bucket Sort),其基本思想是:设置若干个箱子,依次扫描待排序的记录R[0],R[1],…,R[n-1],把关键字等于k的记录全都装入到第k个箱子里(分配),然后按序号依次转载 2011-09-01 15:19:55 · 1084 阅读 · 0 评论 -
Java程序排序之选择排序
1、选择排序的基本思想每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。我们主要介绍简单选择排序、树型选择排序和堆排序。 简单选择排序的基本思想:第i趟简单选择排序是指通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换。共需进行i-1趟比较,直到所有记录排序完成为止。例如:进行第i趟选择时,从当前候选原创 2011-09-01 15:11:43 · 4277 阅读 · 2 评论 -
Java程序排序之插入排序
1、插入排序:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。2、插入排序算法步骤 1.从有序数列和无序数列{a2,原创 2011-09-01 14:10:36 · 1724 阅读 · 0 评论 -
Java程序排序之交换排序
1、定义交换排序:根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。2、 Java实现:public static void main(String[] args) { Scanner sc=new Scanner(System.in); int[]score=new int [5原创 2011-09-01 15:01:16 · 1542 阅读 · 0 评论 -
Java正则表达式实现web端输入验证
1、Java正则表达式基础 常用的规则符号. 表示任意一个字符原创 2013-02-18 22:52:48 · 6346 阅读 · 0 评论 -
Java实现mysql存储过程调用
-------------------------------开篇基础简介--------:存储过程通常有以下优点:[复习/更新/记忆/扩容/参考]--你的大脑有多大内存?(1).存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。(2).存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新原创 2013-02-19 19:42:28 · 10987 阅读 · 2 评论 -
Java NIO基础知识
转自:http://www.iteye.com/topic/8344471. 基本 概念 IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。 所有语言运行时系统提供执行 I/O 较高级别的工具。 (c 的 printf scanf,java 的面向对象封装 ) 2. Java 标准 io 回顾转载 2013-02-26 22:38:05 · 1028 阅读 · 0 评论 -
Java 核心编程之并发简介
1、谈谈Java中的并发自从java创建以来就已经支持并发的理念,如线程和锁。这篇指南主要是为帮助java多线程开发人员理解并发的核心概念以及如何应用这些理念。本文的主题是关于具有java语言风格的Thread、synchronized、volatile,以及J2SE5中新增的概念,如锁(Lock)、原子性(Atomics)、并发集合类、线程协作摘要、Executors。开发者通过这些基础的接转载 2013-02-26 23:34:17 · 1317 阅读 · 0 评论 -
Java日期函数转换和时区设置
前言:java.util.Date代表一个时间点,其值为距公元1970年1月1日 00:00:00的毫秒数,所以它是没有时区和Locale概念的。java通过如下形式取得当前时间点:Date now = new Date(); //这个时间点与本地系统的时区无关注意:在某些场景中使用字符串转时间转换成“yyyy-MM-dd HH:mm:ss”的Date类型是转换不成功的,一般推荐使用Cal原创 2013-04-26 23:52:43 · 1962 阅读 · 0 评论 -
CGlib的动态代理使用示例
1、cglib简述 Cglib是一个优秀的动态代理框架,它的底层使用ASM在内存中动态的生成被代理类的子类,使用CGLIB即使代理类没有实现任何接口也可以实现动态代理功能。CGLIB具有简单易用,它的运行速度要远远快于JDK的Proxy动态代理:使用CGLIB需要导入以下两个jar文件: $1: asm.jar – CGLIB的底层实现 $原创 2013-10-13 23:36:49 · 7754 阅读 · 0 评论 -
Java中Hibernate数据分页显示之QBC
1、使用HIbernate自带工具类(HibernateSessionFactory):public List getAllNoteByPageBean(int index,int pageSize){ Session session=HibernateSessi原创 2011-08-31 17:27:21 · 2809 阅读 · 0 评论 -
Java中数据库访问之JDBC
1、实现多种数据库访问机制:原理:采用属性文件(xxx.properties)来修改不同数据库的访问。例如:db.properties文件下(访问Oracle数据库): driver=oracle.jdbc.driver.OracleDriver ur原创 2011-08-31 18:16:25 · 962 阅读 · 0 评论 -
Java 实现断点续传 (HTTP)
公司需要用Java做断点续传的实现,没有接触过,不过根据自己的理解就是文件接着上次传输的继续完成传输,具体的操作看到IBM这位仁兄的例子确实帮了大忙了,感谢!原文地址:http://www.ibm.com/developerworks/cn/java/joy-down/index.html断点续传的原理其实断点续传的原理很简单,就是在 Http 的请求上和一般的下载有所不同转载 2013-12-17 23:04:12 · 4794 阅读 · 2 评论 -
Apache FTP多线程文件上传、下载、修改文件名、删除
请参考上一篇章:Apache FTP文件上传、下载、修改文件名、删除原创 2014-04-24 16:46:16 · 6208 阅读 · 1 评论