Java基础技术记录
文章平均质量分 51
Vicolen.Hao
天下风云出我辈,一入江湖岁月催。
展开
-
Java递归、非递归构建具有无线层级父子关系的目录、菜单
1、背景 项目开发中,比如一本书,具有多级目录;一个一级分类下面还有二级分类,二级下面有三级…。此时需要后端返回一颗完整的无限层级的菜单树。2、思路 构建树的一般思想都是使用Map之类的映射处理或者使用递归之类的处理,Map有个好处是直观明了,具体实现可见本人的另外一篇(Java使用Map构建无限层级树)。但是递归对数据保护的比较好。本处介绍一下使用递归来构建树:找出所有的顶级父级,组装成List。递归找出每一个顶级父级的孩子节点。3、实现import com.alibaba.fast原创 2021-07-24 20:38:12 · 2003 阅读 · 4 评论 -
Spring/SpringBoot使用多数据源时,导致Mybatis插件PagerHelper失效问题解决方案
笔者在使用多数据源后,出现MyBatis插件PageHelper完全失效的问题,导致每次查询都不进行翻页,查询处所有的数据。这是因为配置多数据源时,必然要重写SqlSessionFactory(MyBatis的接口),这就导致默认的插件加载失效,此时就需要重新绑定PageHelper插件了。1. 配置插件/** * 配置插件 * * @return bean */ @Bean(name = "plugins") public Interce原创 2020-10-10 20:22:24 · 2243 阅读 · 1 评论 -
Spring/SpringBoot实现配置多数据源和常见问题
在做SpringBoot项目开发时,有时需要配置多个数据源。今天记录一下多数据源的配置。1. 设置数据源枚举,通过枚举作为数据源Map的key获取数据源,实现动态切换数据源实现代码:/** * 描述:数据源枚举 */public enum DataSourceEnum { /**默认数据源**/ DB_DEFAULT, /**另外的数据源**/ DB_REPLICATION}2. 配置properties文件:配置多个数据源(备注:前缀可以自己定义)原创 2020-10-09 21:11:58 · 1153 阅读 · 0 评论 -
Java多线程 JUC之线程池的使用详解及其扩展分析(ThreadPoolExecutor、ForkJoinPool等)
一 前言谈线程池前有必要回顾一下多线程,原创 2020-07-26 21:11:04 · 390 阅读 · 0 评论 -
Java :AES算法加密解密工具(防止出现在Win系统能够加解密,在来Linux不能加解密问题)
import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import org.apache.commons.lang3.StringUtils;import org.springframework.stereotype.Com原创 2020-07-20 18:47:53 · 465 阅读 · 0 评论 -
RAM、ROM、高速缓存(Cache)的联系和区别
RAM(Random Access Memory): 随机存储器,俗称内存,我们常说的电脑内存8g,指的就是这个(也不完全正确)。RAM要求每时每刻都不断地供电,否则数据会丢失。它由半导体材料制作,是计算机的工作场所。ROM(Read Only Memory): 只读存储器,应用于硬盘存储。一般由磁性材料制作,用来存放暂时不用的信息,只有加载到内存(RAM)中才能被CPU处理。即CPU与硬盘不发生直接的数据交换。Cache (高速缓冲存储器) Cache介于CPU与RAM之间,是一个读写速度比R原创 2020-07-11 22:59:08 · 13796 阅读 · 0 评论 -
Java去除完全闭合html标签、去除部分未闭合的html标签的几种方式
1. 使用正则表达式去除html标签 /** * 去除Html标签 * * @param html * html内容 * @return 去除标签后的文本 */ public static String dislodgeHtmlLabel(String html) { if (Objects.isNull(html)) { return ""; }原创 2020-06-29 12:48:35 · 1512 阅读 · 0 评论 -
ElasticSearch Java查询某字段既不为null也不为空的条目
最近需要查询某个字段既不为null也不为"",但网上有很多关于ES查询某些字段为null和""的博文,研究了一下,发现有三种方案。方案一: 使用existsQuery关键字,查询出某些字段存在(值为null)的条目,但是不能过滤出值为""的字段 BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); List<QueryBuilder> must = boolQueryBuilder.原创 2020-06-09 20:04:14 · 13406 阅读 · 3 评论 -
Apache POI解析word为html出现:......converter.core.XWPFConverterException: java.lang.NullPointerException
使用Apache poi解析word文档为html文件时出现空指针异常:报错一:org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerExceptionat org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.convert(XHTMLC...原创 2019-12-13 15:31:40 · 6507 阅读 · 11 评论 -
Java构造前端vue使用的树(或者使用Java构造常用的部门树等)
Web项目开发中,由于前端框架的限制,很多时候需要将返回的数据加工后再返回给前端。最典型的就是返回一棵部门层级关系的树。下面即是一棵带有层级的文档标题树,和我们书籍的目录结构一样。 在树的结构中,每一个节点都需要有一颗父级节点,即使是顶级节点,也需要给其父节点赋值。比如,在下面的带有父子关系的线性结构中,有些id的parentId是null的,此时就需要将parentId为null赋值为...原创 2019-12-05 19:13:00 · 738 阅读 · 0 评论 -
SpringBoot(Spring+Java8)实现去除controller层的String(含包装类)类型参数的首尾空格
目前SpringBoot非常流行,大大简化了Spring整合Mybatis,SpringMVC的配置。但是另外的一件烦心事来了,那就是写接口时候,前后端都需要对String类型的字段做好去首尾空格处理,该项工作简单但是繁琐,虽不费心,但是劳神。在这里写了个注解,在接口进入controller前实现去除字符串去除首尾空格功能。定义注解:import java.lang.annotation.Do...原创 2019-12-03 19:49:58 · 2319 阅读 · 0 评论 -
Java实现将ASCII码转化为中文显示和将ASCII编码的HTML文件转化为中文的HTML文件
今天就在开发过程中遇到的问题,给大家分享一下将ASCII码转化为中文显示的例子。 /** * ASCII转换为字符串 */ public static void transAscii2Chinese() throws UnsupportedEncodingException { // ASCII码 String string ...原创 2019-11-13 19:15:56 · 2809 阅读 · 3 评论 -
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置(Java实现及解析)
题目:给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2说明:被除数和除数均为...原创 2019-11-01 20:20:12 · 312 阅读 · 0 评论 -
快速排序---从大到小和从小到大(Java)
快速排序: 快速排序由于排序效率在同为O(nlogn)的几种排序方法中效率较高,因此经常被采用,再加上快速排序使用了分治法的思想,算是基础排序中比较高档的一种排序了。基本思想1.先从数列中取出一个数作为基准数,可以是第一个,也可是中间的或者最后的,但是第一步要把这个基准数与数组最后一位对换。2.将比这个数大(小)的数全放到它的右边,小于或等于(大于或等于)它的数全放到它的左边。3.对左...原创 2019-10-30 19:31:42 · 8207 阅读 · 0 评论 -
如何实现一个内存缓存工具类(CacheUtil)
实现一个内存缓存工具类,可以是单机缓存。有超时机制。能控制总条数。实现各种策略的更新机制。效率越高越好。这个是最近组内集体学习出的一个简单练习题。/** * 简易缓存工具 */package com.hao.cache;import java.io.ByteArrayOutputStream;import java.io.IOException;import java...原创 2019-09-26 15:04:41 · 2323 阅读 · 0 评论 -
如何在使用时(节约资源,防止不用也被创建)创建单例模式并保证线程安全
很多框架中,单例模式是一个非常常见的设计模式,创建单例模式也非常简单:public class Singleton { // 1.构造器私有化,使得外部不能实例化(饿汉式-->不管用不用,都创建它) private Singleton() { } // 2.本类内部创建对象实例,不管用不用都创建,项目启动时即加载 private final ...原创 2019-09-17 19:40:09 · 236 阅读 · 0 评论 -
Java实现随机生成定长和不定长度的汉字
随机长度的汉字生成原创 2019-07-16 20:28:05 · 505 阅读 · 0 评论 -
Java实现流的复制,解决流不可重用问题
背景介绍在使用Java进行流操作的过程中,会出现需要重复使用流的情况,但是InputStream接口并未实现cloneable接口,因此不能实现复制,这是就要用到把流转换为另外一种形式,然后存入内存之中,并再次转化为流。实现代码public class CopyStream { public static void main(String[] args) throws IOExce...原创 2019-06-27 19:44:42 · 2588 阅读 · 0 评论