java
文章平均质量分 60
记录分享java各种问题及语法。
月轩居士
Archimedes said: give me a fulcrum,I will move the earth.Program ape said: give me a keyboard,I can change the world.
展开
-
Java中@Pattern注解常用的校验正则表达式
项目开发中经常会遇到对用户输入内容的限制和校验,标识字段有严格命名限制,用户输入校验这部分工作前端可以做,当然后端也可以通过在实体类中添加注解的方式实现参数校验。其底层原理还是拦截器拦截请求,对带有相关注解的属性字段进行处理(非空、大小、长度、内容等判断和校验)。原创 2024-03-28 16:32:45 · 2514 阅读 · 0 评论 -
实现 PDF 添加水印的五种方式
PDF(Portable Document Format,便携式文档格式)是一种流行的文件格式,它可以在多个操作系统和应用程序中进行查看和打印。在某些情况下,我们需要对 PDF 文件添加水印,以使其更具有辨识度或者保护其版权。本文将介绍如何使用 Spring Boot 来实现 PDF 添加水印的方式。原创 2024-03-17 19:15:28 · 3774 阅读 · 0 评论 -
关于Java获取时间戳的方法
Java有两个取时间戳的方法:System.currentTimeMillis() 和 System.nanoTime(),它们的使用场景是有区别的。# System.currentTimeMillis() 存在性能问题?答案是否定的。这两个方法性能差异取决于操作系统。Windows:在 Windows 下,System.currentTimeMillis() 比 System.nanoTime() 要快很多,这是因为 Windows 系统为前者提供的只是一个缓存变量,而后者则是实时的原创 2022-03-11 02:15:12 · 772 阅读 · 0 评论 -
mybatis-mate 简介
简介mybatis-mate 为 mp 企业级模块,支持分库分表,数据审计、数据敏感词过滤(AC算法),字段加密,字典回写(数据绑定),数据权限,表结构自动生成 SQL 维护等,旨在更敏捷优雅处理数据。主要功能 字典绑定 字段加密 数据脱敏 表结构动态维护 数据审计记录 数据范围(数据权限) 数据库分库分表、动态据源、读写分离、数据库健康检查自动切换。 使用1.依赖导入Spring Boot 引入自动依赖注解包..原创 2021-11-06 16:50:14 · 11107 阅读 · 3 评论 -
接口开发事项
做接口需要考虑的问题什么是接口接口无非就是客户端请求你的接口地址,并传入一堆该接口定义好的参数,通过接口自身的逻辑处理,返回接口约定好的数据以及相应的数据格式。接口怎么开发接口由于本身的性质,由于和合作方对接数据,所以有以下几点需要在开发的时候注意:1.定义接口入参:写好接口文档2.定义接口返回数据类型:一般都需要封装成一定格式,确定返回json还是xml报文等见如下返回数据定义格式:package com.cai...原创 2021-09-10 11:17:37 · 447 阅读 · 0 评论 -
Java中的finally执行场景
一、前言在开发过程中时常会遇到异常处理(try-catch),这时候就会涉及到finally执行的问题,所以特地写这篇文章深入研究一下finally的执行情况和返回值的情况。二、finally一定会执行吗?先给答案:肯定不是。我们可以看两种情况:2.1 在执行try块之前直接return,我们发现finally块是不会执行的public class TryCatchTest { private static int total() { int i = 11;.原创 2021-06-30 15:53:53 · 356 阅读 · 0 评论 -
Java 开发实用工具类
有很多工具类库,可以大大简化代码量,提升开发效率,很多的开发者却不知道。而这些类库早就成为了业界标准类库,大公司的内部也都在使用。1. Java自带工具方法1.1 List集合拼接成以逗号分隔的字符串// 如何把list集合拼接成以逗号分隔的字符串 a,b,cList<String> list = Arrays.asList("a", "b", "c");// 第一种方法,可以用stream流String join = list.stream().col...原创 2021-06-25 10:13:37 · 271 阅读 · 0 评论 -
JavaBean与Map互转
一、摘要在实际开发过程中,经常碰到需要进行对象与map之间互转的问题,其实对于对象、Map 之间进行互转有很多种方式,下面我们一起来梳理一下:利用 JSON 工具包,将对象转成字符串,之后再转成 Map,这种需要转换2次,相对来说效率比较底; 利用 Java 反射,获取 Bean 类的属性和值,再转换到 Map 对应的键值对中,相对来说这种方法效率高些,在实现上比较麻烦; 利用 Java 的内省(Introspector) 实现,获取 Bean 类的属性和值,Map与对象互转,效率比较高;.原创 2021-04-20 20:32:00 · 3849 阅读 · 0 评论 -
Java日志框架——log4j2
Logback算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了。不过logback最近一个稳定版本还停留在 2017 年,好几年都没有更新;logback的兄弟 slf4j 最近一个稳定版也是2017年,有点凉凉的意思。而且 logback的异步性能实在拉跨,功能简陋,配置又繁琐,远不及Apache 的新一代日志框架 -Log4j2目前来看,Log4j2 就是王者,其他日志框架都不是对手!Log4j2简介Apache Log4j 2是 Log4j(1) 的升..原创 2021-04-13 15:23:45 · 1582 阅读 · 0 评论 -
将GBK编码转换成UTF-8编码
将GBK编码的字符串转换为UTF-8编码 /** * 将GBK编码转换成UTF-8编码 * */ protected String gbkConvertToUtf8(String str) throws UnsupportedEncodingException { if (StringUtils.isNotBlank(str)) { //转换成gbk编码 String gbkChinese..原创 2021-03-23 22:00:32 · 15378 阅读 · 0 评论 -
JSONObject转换为Map<String, String>对象
方法一JSONObject obj = new JSONObject();{obj.put("key1", "value1");obj.put("key2", "value2");obj.put("key3", "value3");}Map<String, String> params = JSONObject.parseObject(obj.toJSONString(), new TypeReference<Map<String, String>>.原创 2021-03-17 19:43:32 · 12386 阅读 · 0 评论 -
货币金额转换为大写形式
在项目中我们时常会用到将金额转化为中文大写的情况,今天我就把我之前写的一个工具类分享给大家,亲测可以适用于大多数的场景。package com.test;import java.math.BigDecimal;/** * * * 数字转换为汉语中人民币的大写 * */public class NumberToCN { /** * 汉语中数字大写 */ private static final String[] CN_UPPER_NUMBER原创 2021-03-15 21:37:29 · 222 阅读 · 0 评论 -
自定义java8通用Builder
一、前言最近学习了一下java8的语法,发现了一个比较好用的一对逆运算接口:Supplier:这个接口是用来创建对象的,最大的特点是懒加载。Supplier源码:@FunctionalInterfacepublic interface Supplier<T> { /** * Gets a result. * * @return a result */ T get();}调用方法Demo:@Setter.原创 2021-01-27 18:20:55 · 1214 阅读 · 3 评论 -
Google guava工具类的介绍和使用
概述工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来。所以就诞生了guava。guava的优点:高效设计良好的API,被Google的开发者设计,实现和使用遵循高效的java语法实践使代码更刻度,简洁,简单节约时间,资源,提高生产力Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections]缓存 [caching]原生类型支持 [primit原创 2020-12-19 11:00:27 · 482 阅读 · 1 评论 -
MapStruct简介及使用
为什么需要MapStruct ?首先,我们先说一下MapStruct这类框架适用于什么样的场景,为什么市面上会有这么多的类似的框架。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。很多人都对三层架构、四层架构等并不陌生。甚至有人说:"计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决,如果不行,那就加两层。"但是,随着软件架构分层越来越多,那么各个层次之间的数据模型就要面临着相互转换的问题,典型的就是我们可以在代码中见到各种O,如DO、DTO、VO等。一般情况下,原创 2020-08-12 10:45:25 · 3466 阅读 · 0 评论 -
java BigDecimal累加实现
BigDecimal total=BigDecimal.ZERO;for (int i = 0; i < 5; i++) { BigDecimal number= new BigDecimal(1); total= total.add(number) ;}System.out.println(total);原创 2020-04-20 23:21:29 · 3865 阅读 · 0 评论 -
Java8 四大核心函数式接口
一、消费型接口: 基本格式:Consumer<T> 接受一个输入参数并且无返回值。 方法调用:void accept(T t); 使用示例:@Testpublic void testConsumer() { handle(6, (x) -> System.out.println(x + 2));}public void handle(i...原创 2019-12-23 20:21:44 · 196 阅读 · 0 评论 -
LocalDate计算两个日期间的间隔
LocalDate提供了until()方法,用于计算了两个日期之间的年、月和日的周期;举个栗子:计算“2017-08-28”“2018-09-30”两日期间间隔的几年几个月零几天LocalDate localDate1 = LocalDate.parse("2017-08-28");LocalDate LocalDate2 = LocalDate.parse("2018-09-30")...原创 2019-12-23 15:08:21 · 7838 阅读 · 0 评论 -
JDK1.8新特性---Stream 流操作
前言我们都知道 Lambda 和 Stream 是 Java 8 的两大亮点功能,在前面的文章里已经介绍过 Lambda 相关知识,这次介绍下 Java 8 的 Stream 流操作。它完全不同于 java.io 包的 Input/Output Stream ,也不是大数据实时处理的 Stream 流。这个 Stream 流操作是 Java 8 对集合操作功能的增强,专注于对集合的各种高效、便...原创 2019-12-11 18:06:27 · 365 阅读 · 0 评论 -
JavaBean与map之间的相互转换
javabean对象和map之间的转换import org.springframework.cglib.beans.BeanMap;public class BeanUtils { /** * 将对象转换为map * * @param bean * @return */ public static <T> M...原创 2019-12-04 13:34:04 · 1676 阅读 · 0 评论 -
jdk1.8 新特性——LocalDate和LocalDateTime
JDK1.8中,新增了两个处理日期和时间的类,一个是LocalDate,另一个是LocalTime,下面将分开将这两个类的方法列举出来并将里面的方法进行说明。1、LocalDateLocalDate主要是用来处理日期的类,主要有以下方法:1.1LocalDate.now() 获取当前日期;1.2LocalDate.of(int year, int month, int d...原创 2019-11-17 17:50:24 · 439 阅读 · 0 评论 -
lombok构造模式
lombok常用注解@Getter / @Setter可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。@EqualsAndHashCode默认情况下,会使用所有非瞬态(non-transient)和非静态(non-s...原创 2019-11-10 23:16:32 · 3634 阅读 · 1 评论 -
jdk1.8 新特性——lambda
一、引言java8最大的特性就是引入Lambda表达式,即函数式编程,可以将行为进行传递。总结就是:使用不可变值与函数,函数对不可变值进行处理,映射成另一个值。二、java重要的函数式接口1、什么是函数式接口函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型。使用@FunctionalInterface注解修饰的类,编译器会检测该类是否只有一个抽象方法或接口,否则,...原创 2019-11-08 18:41:48 · 262 阅读 · 0 评论 -
BigDecimal 运算及取小数位
一、介绍 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使...原创 2019-11-04 19:16:57 · 20690 阅读 · 0 评论 -
Java中的线程之线程间的通信
两个线程间的通信这是我们的线程:执行效果:谁抢到资源,谁运行~实现线程交替执行:这里主要用到了两个内容1)创建一个标记 flag,让程序进行判断:当flag != 1 时,print1 进入等待,执行 print2,然后让 flag=1,唤醒正在等待·的线程,当flag != ...原创 2018-07-24 17:32:56 · 245 阅读 · 0 评论 -
同一台电脑安装两个jdk版本
1 . 准备两个版本的jdk我的两个jdk路径为:D:D:\Program Files\Java\jdk1.7.0_80 D:\Program Files\Java\jdk1.8.0_1112 . 设置两个子JAVA_HOME,一个总设置两个子JAVA_HOME:JAVA_HOME7 = D:\Program Files\Java\jdk1.7.0_80 JAVA_HOME8...原创 2018-07-19 15:07:14 · 2960 阅读 · 0 评论 -
Java 对象排序详解
在Collection框架中,主要使用的类是来自List接口中的ArrayList,以及来自Set接口的HashSet、TreeSet,我们经常处理这些Collections的排序。看看如何对给定的整数集合(5,10,0,-1)进行排序:数据(整数)存储在ArrayList中private void sortNumbersInArrayList() { L...原创 2018-08-01 11:55:26 · 662 阅读 · 0 评论 -
HashMap源码实现原理及底层结构
Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap。HashMap:HashMap是数组+链表实现的,它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为n...原创 2018-08-21 18:13:27 · 1112 阅读 · 0 评论 -
将格林威治时间格式化为指定格式
private static SimpleDateFormat sfEnd = new SimpleDateFormat("yyyy-MM-dd"); /** * 标准化时间显示 * yyyy-MM-dd HH:mm:ss * @param dateStr * @return */ public static String form...原创 2019-04-10 16:00:44 · 1031 阅读 · 0 评论 -
java Robot 类模拟键盘按键和鼠标点击(全局模拟)
Robot类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。 使用该类生成输入事件与将事件发送到 AWT 事件队列或 AWT 组件的区别在于:事件是在平台的本机输入队列中生成的。例如,Robot.mouseMove 将实际移动鼠标光标,而不是只生成鼠标移动事件。 我们可以利转载 2015-08-28 09:00:34 · 20386 阅读 · 1 评论 -
Java泛型中的类型擦除
泛型,可以称之为一个孤独的守门者。为什么称泛型是个守门者。这只是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇。泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉。文章开始的地方,先给大家奉上一道经典的测试题。List<String> l1 = new ArrayList<...原创 2018-07-24 16:47:17 · 495 阅读 · 1 评论 -
Java 编程中关于异常处理的10个最佳实践
异常处理是Java 开发中的一个重要部分。它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等。Java提供了几个异常处理特性,以try,catch 和 finally 关键字的形式内建于语言自身之中。Java 编程语言也允许你创建新的异常,并通过使用 throw 和 throws关键字抛出它们。事实上,在Java编程中,Java的异常...原创 2018-07-24 16:24:52 · 222 阅读 · 0 评论 -
java字符串反转方法总结
描述:给我一个字符串,例如I love java,输出: java love I方法一[java] view plaincopypublic class StringReverse { public void swap(char[] arr, int begin, int end) {转载 2015-09-10 11:22:52 · 613 阅读 · 0 评论 -
Java正则表达式Pattern和Matcher详解
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。 它包括两个类:Pattern和Matcher 。Pattern: 一个Pattern是一个正则表达式经编译后的表现模式。 Matcher: 一个Matcher对象是一转载 2015-09-10 11:17:24 · 594 阅读 · 0 评论 -
Java基础 之隐藏、复写、遮掩、遮蔽、和重载
覆写覆写(override):一个实例方法可以overide在其超类中可以访问到的具有相同签名的所有方法,从而可以动态分派(dynamic dispatch) VM基于运行时类型来选择要调用的覆写方法。 java代码:查看复制到剪贴板打印class Base { public void f() {原创 2015-09-09 14:53:57 · 3318 阅读 · 1 评论 -
Java基础之自增(++)和自减(--)运算符
自增(++):将变量的值加1,分前缀式(如++i)和后缀式(如i++)。前缀式是先加1再使用;后缀式是先使用再加1。 · 自减(--):将变量的值减1,分前缀式(如--i)和后缀式(如i--)。前缀式是先减1再使用;后缀式是先使用再减1。 一、Java代码 1. int i = 0; 2. int j = i++; 3. int k = --i;转载 2015-09-02 14:12:31 · 5044 阅读 · 2 评论 -
Java之 出入门卫管理系统(一)
这个系统包含了四块,第一块就是人员管理,经理分配三位分别有“ABC"权限的人,分别管理请假申请,请假审批,门卫登记管理。同时不属于本公司的内部人员,如别的公司的人员如果想到本公司访问,也是先通过这”ABC“权限的三个人代为写来访申请,来访审批,来访门卫登记管理。 具体步骤如下: 因为后面都会用到很多相同的方法,和相同的属性,所以我先建立了两个接口让后面的方法类和转载 2015-08-28 09:50:09 · 2078 阅读 · 2 评论 -
收集的java一些资料
1.substring截取字符substring截取字符最后一个用String类的substring(int from,int to)方法去截字符串位置为from到to-1位置的字符substring(int index)方法去截字符串位置index-1及以后的所有字符串,注意字符串的字符位置是从0开始的,substring(int from ,int to)方法是前闭后开的,即[from,to原创 2015-08-28 09:15:58 · 764 阅读 · 0 评论 -
java字符串缓冲池分析
java的虚拟机在内存中开辟出一块单独的区域,用来存储字符串对象,这块内存区域被称为字符串缓冲池。那个java的字符串缓冲池是如何工作的呢?String a = "abc";String b = "abc";String c = new String("xyz");123例如上边的代码: String a = “abc”; 创建字符串的时候先查找字符串缓冲转载 2015-08-28 09:00:52 · 649 阅读 · 0 评论 -
手动配置SSH框架
注:本文使用版本:struts-2.3.4、spring-3.2.1、hibernate-4.1.4一、框架的下载1、Struts2:http://struts.apache.org/download 2、Spring:http://www.springsource.org/download/community3、Hibernate:http://sourceforge.net转载 2015-08-27 14:02:12 · 442 阅读 · 0 评论