
java练习
文章平均质量分 74
你家宝宝
自2018年接触到Java,至今。
展开
-
设计并用Java实现一个简易的规则引擎
使用规则引擎可以很方便的实现一些比较复杂的业务逻辑。本文介绍的简易版,是一个小的通用代码结构。通过组装业务数据,创建执行模版,最终执行,获取到最终结果。原创 2024-09-06 16:48:22 · 1703 阅读 · 0 评论 -
SpringBoot3整合Mybatis-Plus,自定义动态数据源starter
本文旨在SpringBoot3整合Mybatis-Plus,实现动态数据源切换。不使用Mybatis-Plus本身的依赖。自己动手造轮子。本次使用了Java17,SpringBoot3.0.2 ,Mybatis-Spring 3版本。并且自定义starter,提供自定义注解,使用切面实现切换数据源。其中,代码分支master,是多数据源,提供静态切换方法,注解方式切换。代码分支dev,是动态多数据源,在master的基础上,提供运行时,新增或修改,或删除数据源。原创 2024-02-06 14:39:13 · 1544 阅读 · 0 评论 -
用JavaFX写了一个简易的管理系统
自学一下Java FX ,用Java代码写一个简易的客户端。本文项目是Maven项目,使用了Java17,以及mysql。代码仓库:https://gitee.com/fengsoshuai/java-fx-management-system-demo/tree/dev-with-db/启动项目后,自动展示主页面。支持分页查询,搜索,新增,修改,删除,批量删除等功能。整体分为以下几层:使用ctrl+鼠标左键选择要删除的数据。然后点击删除按钮。出现弹窗后,点击确定,即可删除。原创 2024-01-24 21:39:43 · 1645 阅读 · 0 评论 -
Java练习-设计并实现一个字典功能模块
很多Java开发的系统中,可能都需要做一些配置呀,字典之类的设计。这里我提供一个思路,以及针对这个思路做了具体的实现,以供大家参考学习。采用java8,springboot2.7.7,mysql 进行实现。原创 2023-12-12 15:39:29 · 577 阅读 · 0 评论 -
MybatisPlus拦截器实战之数据的加解密和脱敏
看完本文你将能学到什么?Mybatis Plus 的拦截器终极奥义是使用了 Mybatis 的拦截器。只是在原先的基础上,划分的更加细致了。缺点也很明确,没有处理响应结果的钩子方法。Mybatis Plus 中的拦截器的定义是:可以看到Mybatis Plus 拦截器的处理器, 其实现了 ,在内部遍历,处理sql执行前的数据。原创 2023-08-26 17:30:08 · 1366 阅读 · 0 评论 -
使用itextpdf填充表单域并生成pdf
最近手上有个任务,就是需要做一个pdf导出的功能。可选择的技术点比较多,我这边综合考虑之后,使用的是 itext。大致有两种实现思路:1️⃣:使用软件【Adobe Acrobat DC】去做一个pdf模版,将表单域指定好,随后使用代码去填充参数,最终得到一个pdf或字节数组。2️⃣:使用【Freemarker】渲染html页面,最终使用代码将该页面转换为pdf。我这边当前的需求比较适合第一种方式。原创 2023-06-29 09:49:43 · 4007 阅读 · 9 评论 -
Java中查看堆里的信息
java项目发生了OOM;想知道在某种场景下,堆里的信息,从而确认一些代码功能是否正常;类似的情况也是时有发生的,这个时候,我们需要借助java的jmap命令去看看。如果你想可视化的查看还得再加上一个插件 Visual VM。插件有两种用法,如果你只是本地运行的话,建议直接在 IDEA 中安装插件,直接debug 运行就可以了。本文重点是,如果项目是在Linux中跑着,你该怎么查看堆里的内容。原创 2023-06-07 14:56:24 · 1433 阅读 · 0 评论 -
SpringBoot自定义starter之接口日志输出
本文灵感来源是一道面试题。要求做一个可以复用的接口日志输出工具,在使用时引入依赖,即可使用。可能用在多个项目中。问题处理思路是,自定义一个SpringBoot的Starter,可以加入一些功能配置。核心使用自定义注解、Aspect切面来做。用切面去切你的自定义注解即可。那么下面内容就做一下具体实现。PS:本文使用的环境是 SpringBoot 的 2.7.12版本,Java openjdk11,构建工具使用了 Maven。原创 2023-06-05 17:51:25 · 1987 阅读 · 1 评论 -
Idea 生成 JavaDoc文档
使用IDEA生成Java-API文档。这里选择了要生成api的模块、api的输出文档,以及可见性(选择了private表示最低可以生成private的变量、方法),还有设置了编码格式(鼠标左键点击到你想生成JavaDoc的模块。原创 2023-03-22 10:39:37 · 322 阅读 · 1 评论 -
json树路径遍历
近来项目中有个比对报文的需求。因为是做迁移项目,原报文是PHP调用的,现报文是Java调用的,需要比对关键字段是否一致。这就涉及到解析Json。因为要精确到某个字段的路径、值,就得去处理路径与值的映射关系。本文的核心内容是,将Json字符串转换为树形节点,然后遍历树形节点,得到叶子节点对应的路径和值。原创 2023-02-28 12:40:09 · 912 阅读 · 0 评论 -
华为OD机试-运维日志排序
一种写法是,使用 TreeSet 和比较器进行排序,需要注意的是 Set本身是自带去重的,在定义比较器时,需要排除相等的情况。另一种写法,是使用集合类本身的 sort 方法,以及比较器进行排序,因为这里使用的是 list ,不会去重,因此不做特殊处理。运维工程师采集到某产品线网运行一天产生的日志n条,现需根据日志时间先后顺序对日志进行排序,日志时间格式为H:M:S.N。原创 2023-02-25 16:35:56 · 931 阅读 · 0 评论 -
Java程序员常用网站(推荐)
Java程序员常用网站,下载的软件、IDEA插件推荐原创 2023-02-21 15:06:47 · 91968 阅读 · 0 评论 -
菌子导航系统(持续开发中)
本导航网站旨在对接多个三方接口,常用功能集成到导航系统中。目前已经在对接的是有道文本翻译接口、天行数据、自定义枚举生成器。最新分支是 dev 分支。主要是练习Java后端的技术。基本不涉及前端技术。原创 2023-02-11 14:37:50 · 590 阅读 · 0 评论 -
ThreadLocal原理、内存泄漏的验证
本文主要探讨ThreadLocal的原理以及内存泄漏的规避。Java 在多线程中,想要隔离数据,比如数据库对应的连接对象,在多次请求中,如何保证线程安全,并能保证事务的提交、回滚,我们可以使用ThreadLocal原创 2023-02-08 23:30:05 · 486 阅读 · 1 评论 -
xxl-job的入门及简单使用
xxl-job 是美团点评开源出来的一个分布式任务管理平台,操作简单且容易上手。开箱即用,并且拥有对应的中文文档。名字来源自许雪里,是该项目的主要开发人员,名字首字母。本次我们主要用它来做一个定时任务的调用。下面我们来看看具体的操作步骤。我当前使用的java版本是java11,maven 3.6,mysql 8。原创 2023-02-05 12:54:46 · 671 阅读 · 0 评论 -
SpringBoot 2.7.8 自定义 Starter &自动配置
前段时间,SpringBoot 出 3.x 版本了。听说把自动配置给刀了!!置)但是这个在真正开始说要弃用,是在 2.7版本。只是向下兼容了 spring.factories 的配置方式。也就是说两种写法共存。原创 2023-02-02 11:47:03 · 2124 阅读 · 1 评论 -
Java计算代码段的运行时间
在日常开发功能时,同一种功能可能会有多种实现方式。我们需要做一个取舍。最常见的条件就是性能、可读性、可维护性。本篇文章,我们主要讨论“性能”。原创 2022-11-15 21:26:58 · 889 阅读 · 0 评论 -
Java 根据数据库表生成实体类
最终的目标是,生成实体类的内容即可。我这里觉得使用swagger生成代码,放到最终的响应里,也是很不错的。使用的是Java11版本,用到的技术有lombok,swagger,springboot,spring-data,freemarker,druid。所以,这个项目的目的是,根据数据库中的某张表,生成与之对应的实体类。比如我们用的是JPA,要增加一些注解,额外还有lombok的一些注解。最近在做的项目,涉及到数据库的操作了,直接做的是直接调用接口,不用做存库操作。......原创 2022-07-24 13:36:39 · 4992 阅读 · 4 评论 -
简易的动物园管理系统之Java8流式API的重构代码(使用 门面设计模式)
文章目录前言之前的文章本次的源码AnimalTypeEnumSexEnumAnimalAnimalFactoryBaseAnimalBirdCatDogFishAddAnimalFacadeDeleteAnimalFacadeFacadeFacadeUtilMainFacadeSearchAnimalFacadeUpdateAnimalFacadeManagerZooClientZooManagerPrintUtil本次的运行效果结论前言鉴于各位小伙伴对这类入门级程序的热忱,本人对于之前的重构,再次重构原创 2022-05-01 17:06:07 · 2285 阅读 · 0 评论 -
详解Java中的集合框架
java 中的集合框架原创 2022-04-27 19:34:27 · 1187 阅读 · 0 评论 -
Java自定义注解实现校验参数不能为空
文章目录前言1 自定义注解 NotNull2 使用接口实现 NotNull注解的功能3 测试效果4 控制台的异常栈信息前言关于参数校验,一直是个困扰人的事。这次使用注解+反射,实现自己的非空校验。1 自定义注解 NotNullpackage com.example;import java.lang.annotation.*;/** * 注解非空,用于校验实例变量不能为空。实现逻辑在 Check接口中。 */@Target({ElementType.FIELD})@Retention(原创 2022-04-25 15:16:35 · 6182 阅读 · 3 评论 -
工厂设计模式:Java自定义注解实现(写法1)
文章目录1 前言2 代码目录2.1 AnimalMappings.java2.2 AnimalMapping.java2.3 Factory.java2.4 AnimalFactory.java2.5 Animal.java2.6 Cat.java2.7 Dog.java2.8 Fish.java3 测试结果3.1 Client.java1 前言本次练习,使用 java 中的自定义注解,实现工厂设计模式,产生自己想要的实例对象。有以下场景:定义一个动物类,再定义3个子类,分别是 狗,猫,鱼。使用工原创 2022-03-31 22:04:17 · 857 阅读 · 0 评论 -
Java函数式编程为对象分组(按某几个属性)
文章目录写在最前面代码实现使用案例使用示例控制台输出结果写在最前面本文的目的,是对一个数据列表,按照其中的某些属性,进行分组。代码实现package com.example;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.function.Function;import java.util.stream.Collectors;/** * 将数据按照指定策略分原创 2022-03-05 10:47:29 · 693 阅读 · 0 评论 -
Java8中的时间工具类
代码import org.springframework.util.StringUtils;import java.time.Instant;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.format.DateTimeFormatter;import java.util.Date;import java.util.Objects;/**原创 2022-02-17 14:24:41 · 444 阅读 · 0 评论 -
Java抛出异常的一种优雅写法
文章目录写在最前面代码实现BaseExceptionGetLogisticsConfigExceptionGetLogisticsConfigExceptionsLogisticsConfigDao使用时:Client控制台输出写在最前面首先,当前的使用场景是,根据【物流ID】获取【物流配置】,其中可能会抛出一些【获取物流配置异常】。根据这个常见设计了如下程序:实现上,定义了获取物流配置异常 GetLogisticsConfigException ,直接继承BaseException,BaseEx原创 2022-02-11 14:58:40 · 1379 阅读 · 0 评论 -
关于Map做状态映射的问题
文章目录1 问题描述2 问题解决2.1 JAVA 9中 的 Map实现2.2 Hutool中的字典类2.3 自己造轮子2.3.1 一个demo2.3.2 测试使用2.3.3 注意事项2.3.3 注意事项1 问题描述最近工作中,项目里有不少地方需要使用 Map 来做状态映射。这种状态映射的特点是,一次构建,无限使用,不再修改。那么问题来了,在 Java 中,创建 Map ,并向里边填充键值对,是一个比较繁琐的重复性工作。比如将以下的映射关系表达出来:{ 1={1=SF, 2=YT, 3=J原创 2022-01-10 13:48:56 · 600 阅读 · 1 评论 -
Java NIO 练习之简易聊天室
文章目录前言环境介绍练习内容1、结果展示2、主要Java 文件和配置2.1 目录结构2.2 pom.xml2.3 log4j.properties2.4 服务端类 ChatRoomServer2.5 客户端类 ChatRoomClient2.6 服务端启动2.7 客户端启动前言本次练习重在学习使用 Java NIO 中的 Selector、Buffer、Channel等关键部分。环境介绍Java 8 及其以上环境创建一个maven项目使用lombok + log4j练习内容1、结果展示原创 2021-12-20 19:11:20 · 605 阅读 · 0 评论 -
javax.net.ssl.SSLHandshakeExcepsun.security.validator.ValidatorException: PKIX path building failed:
异常java.lang.RuntimeException: java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certifica原创 2021-01-15 11:22:20 · 328 阅读 · 1 评论 -
java.lang.IllegalArgumentException: Invalid ICC Profile Data
异常缘由在java中处理图片打印(转pdf)时,出现这个错误:原因是图片自身属性与java中处理的格式不同。1 常见原因图片格式不属于 RGB 格式,而是CMYK格式java 代码验证package org.feng.photo;import java.awt.color.ColorSpace;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.u原创 2020-11-25 12:20:36 · 671 阅读 · 0 评论 -
Java 8 统计单词个数的三种写法(Word Count)
文章目录思想代码思想三种写法都是先按照一定的规则进行字符串的切分,然后将其统计起来。代码package org.feng.java8;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashMap;import java.util.Map;import java.util.regex.Pattern;import jav原创 2020-10-06 15:17:28 · 1365 阅读 · 3 评论 -
LinkedHashMap 实现LRU缓存淘汰机制
文章目录Java 代码细节分析与HashMap 的关系removeEldestEntry 方法的使用运行测试运行结果Java 代码package org.feng.lru;import java.util.LinkedHashMap;import java.util.Map;/** * 最近最少访问的map * * @author Feng * @date 2020/5/16 14:05 */public class LruLinkedHashMap<K,V> exte原创 2020-05-16 15:48:11 · 860 阅读 · 1 评论 -
简易的动物园管理系统之Java8流式API的重构代码(使用 状态设计模式)
文章目录前言项目结构java 代码AbstractAnimalCatDogLegSwimZooManagerRunTestClient程序运行结果展示最后前言原文链接:https://blog.youkuaiyun.com/FBB360JAVA/article/details/79256570本文重在code review。实现的只是一个简易的管理系统,控制台输入、输入。以及增删改查等操作。项目结构...原创 2020-04-20 10:02:25 · 2647 阅读 · 3 评论 -
java 递归删除文件和文件夹(删除目录和其中的所有文件)
文章目录题目java 代码测试题目编写一个 FileUtil ,提供方法 rmDir(String dir) 来删除非空目录中所有文件和子目录,包括目录本身。java 代码首先得判断,当前是一个目录的话,进行遍历其中的 File 对象。如果不是就直接删除。遍历时如果判断依然是一个目录,就进行递归,如果不是就直接删除。public static void rmDir(String dir...原创 2020-04-14 11:30:12 · 833 阅读 · 0 评论 -
java 读取文本文件,获取某字符串出现的次数
java 代码/** * 读取文本文件(path),获取某字符串(str)出现的次数 * @param path 指定一个文件路径(不能为空) * @param str 目标字符串 * @return 出现次数 */private static int getStrCount(String path, String str){ int count = 0; try {...原创 2020-04-14 11:22:08 · 1766 阅读 · 0 评论 -
Java 14 的五大特性
文章目录前言下载使用1、文本块举例解析2、switch 表达式举例解析3、instanceof 自动转换举例解析4、Record 标志举例测试与解析5、NPE 的一个改动测试前言下载http://jdk.java.net/14/使用请下载最新版本的 idea。使用 2020版本。、设置语言级别。1、文本块使用 3 个 双引号(“““)以及反斜线(\) 和 反斜线加s(\s)来表...原创 2020-04-02 14:55:11 · 867 阅读 · 1 评论 -
牛客网华为机试【字符个数统计】
题目描述编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。输入描述:输入N个字符,字符在ACSII码范围内。输出描述:输出范围在(0~127)字符的个数。示例输入abc输出3题目分析此题要求,计算不同字符的个数,首先想到的就是没有重复,那在 java 中有一个 set 接口,其实现...原创 2020-02-15 12:46:43 · 528 阅读 · 0 评论 -
牛客网华为机试【进制转换(16进制转10进制)】
题目描述写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )输入描述:输入一个十六进制的数值字符串。输出描述:输出该数值的十进制字符串。示例输入0xA输出10题目分析java 中提供了现成的 API 来做进制转换。因此,最为方便的就是使用 API 。参考:JAVA二进制,八进制,十六进制,十进制间进行相互转换另外,题目要求不止一条数据,使...原创 2020-02-15 12:17:36 · 1198 阅读 · 0 评论 -
听说你用 java new 了一个女朋友
前言看到网上,好多人在秀自己 new 的 girl !!本文做一个小练习:读取 json 文件,封装、继承、接口等java 基础的回顾!!项目结构pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns...原创 2020-02-14 14:19:08 · 390 阅读 · 0 评论 -
牛客网华为机试【字符串分隔】
题目描述连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。输入描述:连续输入字符串(输入2次,每个字符串长度小于100)输出描述:输出到长度为8的新字符串数组示例输入abc123456789输出abc000001234567890000000题目分析输入字符串,长度不够8时,拼接上 ...原创 2020-02-13 18:20:20 · 656 阅读 · 0 评论 -
牛客网华为机试【找一个字符的出现次数】
题目描述写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。输入描述:第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。输出描述:输出输入字符串中含有该字符的个数。示例输入ABCDEFA输出1题目分析先是输入一个字符串,可能包含数字、空格、大写字母、小写字母。然后,不管三七二十几,就把他...原创 2020-02-13 16:28:26 · 461 阅读 · 0 评论