- 博客(64)
- 资源 (17)
- 收藏
- 关注
原创 Swagger 详解
Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。总体来说,Swagger提供了一套标准的注解,开发者可以通过这些注解来描述他们的API,然后Swagger可以根据这些注解生成可交互的API文档。swagger2 最常用的5个注解。
2024-04-03 16:35:53 166
原创 JSR303参数校验与全局异常处理
我们在日常开发中,避不开的就是参数校验,有人说前端不是会在表单中进行校验的吗?在后端中,我们可以直接不管前端怎么样判断过滤,我们后端都需要进行再次判断, 为了安全。因为请求很容易绕过前端,比如当测试使用 PostMan 来发送请求,如果后端没有校验,不就乱了吗?肯定会有很多异常的。JSR-303规范(Bean Validation规范)提供了对 Java EE 和 Java SE 中的 Java Bean 进行验证的方式。该规范主要使用注解的方式来实现对 Java Bean 的验证功能。
2024-03-14 18:04:40 916
原创 统一异常处理ControllerAdvice
在我们日常的开发过程中,通常会根据业务定义属于自己的异常,所以通过定制自己的异常处理器,来处理项目中大大小小、各种各样的异常。1、@ExceptionHandler注解标注的方法:用于捕获Controller中抛出的不同类型的异常,从而达到异常全局处理的目的;首先,ControllerAdvice本质上是一个Component,因此也会被当成组件扫描,一视同仁,扫扫扫。3、@InitBinder注解标注的方法:用于请求中注册自定义参数的解析,从而达到自定义请求参数格式的目的;
2024-03-14 16:22:05 427
原创 消息防骚扰方案设计
小时是精确防骚扰,当天的过期时间是自然天,即当前时间到晚上23:59:59,月有大小月之分,大月31天,小月30天,没必要精准区分,都以30天为准。修改可能不会立即生效,等待五分钟之后再起作用。
2024-03-06 10:58:52 141
原创 MySql的CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP
CURRENT_TIMESTAMP,则无论这个字段有木有set值都插入当前系统时间。在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它。在创建新记录的时候把这个字段设置为0,以后修改时刷新它。表示每次更新这条数据的时候,该字段都会更新成当前时间。在创建新记录和修改现有记录的时候都对这个数据列刷新。表示当插入数据的时候,该字段默认值为当前时间。TIMESTAMP的变体。
2024-03-06 10:51:38 300
原创 Java正则表达式以及Pattern和Matcher类详解
概述正则表达式一、概述用来描述或者匹配一系列符合某个语句规则的字符串二、单个符号1、英文句点.符号:匹配单个任意字符。表达式t.o可以匹配:tno,t#o,teo等等。不可以匹配:tnno,to,Tno,t正o等。2、中括号[]:只有方括号里面指定的字符才参与匹配,也只能匹配单个字符。表达式:t[abcd]n 只可以匹配:tan,tbn,tcn,tdn。不可以匹配:thn,tabn,tn等。3、| 符号。相当与“或”,可以匹配指定的字符,但是也只能选择其中一项进行匹配。表达式:t(a|b
2022-04-22 17:20:31 1005
原创 MySQL基础教程
一、 连接MySQL格式: mysql -h主机地址 -u用户名 -p用户密码1.1 连接到本机上的MYSQL首先打开命令窗口,然后进入目录mysql\bin,再键入命令mysql -uroot -p,回车后提示你输密码.注意:用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>1.2 连接到远程主机上的MYSQL假设远程主机的IP为:
2021-08-30 10:21:18 199
原创 【Java】 数组转 List 的三种方式及对比
本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解析。一、 (最高效) 通过集合工具类Collections.addAll()方法,支持增删改查等方法通过Collections.addAll(arrayList, strArray)方式转换,根据数组的长度创建一个长度相同的List,然后通过Collections.addAll()方法,将数组中的元素添加到List中,这是最高效的方法。使用场景:需要在将数组转换为List后,对List进行增删改
2021-08-12 16:12:34 750
原创 线程的 run() 和 start() 的区别
线程的 run() 和 start() 有什么区别?调用 start() 方法是用来启动线程的,轮到该线程执行时,会自动调用 run();直接调用 run() 方法,无法达到启动多线程的目的,相当于主线程线性执行 Thread 对象的 run() 方法。一个线程对线的 start() 方法只能调用一次,多次调用会抛出 java.lang.IllegalThreadStateException 异常;run() 方法没有限制。总结: run() 方法相当于启动Thread类里面的一个普通方法, sta
2021-06-10 15:14:11 357
原创 java枚举比较使用equals还是==
建议使用==。避免NPE能正常工作更快运行时是安全的编译期也是安全的其实二者皆可以,没有任何问题。我们查看 Enum.java 中 equals 方法的源码,可以看到其也是使用 == 来实现。public final boolean equals(Object other) { return this==other;}额外答案能在枚举中使用 == 进行判断?答案是肯定的,因为枚举有着严格的实例化控制,所以你可以用 == 去做比较符,这个用法,在官方文档中也有明确的说明。
2021-06-08 15:49:06 2348
原创 JPA 中的 nativeQuery = true
在 JPA 的 @Query 注解中有个属性 nativeQuery其默认值是false。package org.springframework.data.jpa.repository;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPol
2021-06-03 20:25:09 2808
原创 Jackson的序列化及反序列化【@JsonValue及@JsonCreator注解】
Jackson的序列化@JsonValue注解@JsonValue 可以用在get方法或者属性字段上,一个类只能用一个,当加上@JsonValue注解时,序列化时只返回这一个字段的值,而不是这个类的属性键值对。Teacher.classpackage org.zpli.springdemo.bean;import com.fasterxml.jackson.annotation.JsonValue;import lombok.Getter;import lombok.Setter;/**
2021-06-03 15:49:41 2727 5
原创 Jackson API指南
Jackson 概述 与 依赖市面上用于在 Java 中解析 Json 的第三方库,随便一搜不下几十种,其中的佼佼者有 Google 的 Gson, Alibaba 的 Fastjson 以及本文的 jackson。我们在学习一门技术之前,首选要了解这门技术的优劣性,以及它和同等技术的对比。fastjson这么快老外为啥还是热衷 jackson?使用 Jackson 导入 jackson-databind、 jackson-annotations、jackson-core 3 个主要模块
2021-05-19 17:51:02 627
原创 Spring 注解
这里写自定义目录标题Spring 注解@ConditionalOnPropertySpring 注解@ConditionalOnProperty@ConditionalOnProperty的作用是判断一个Property属性,是否符合我们的条件,符合则让该注解修饰的类或者方法生效,否则不生效。我们在Spring Boot中可以通过@ConditionalOnProperty来控制Configuration配置类是否生效。ConditionalOnProperty注解的源码。@Retention(
2021-04-19 15:49:32 135
原创 Mock 及 Mockito 教程
Mockito 教程Mockito框架官方地址mockito,文档地址,中文版文档。Mockito库能够Mock对象、验证结果以及打桩(stubbing)。1. Mock和Mockito的关系在软件开发中提及mock,通常理解为模拟对象。为什么需要模拟? 在我们一开始学编程时,我们所写的对象通常都是独立的,并不依赖其他的类,也不会操作别的类。但实际上,软件中是充满依赖关系的,比如我们会基于service类写操作类,而service类又是基于数据访问类(DAO)的,依次下去,形成复杂的依赖关系。单
2021-04-14 17:08:13 6012
原创 Mac查看端口占用情况
终端命令的方式查看端口情况1.查看端口被哪个程序占用 sudo lsof -i tcp:port如: sudo lsof -i tcp:80822.看到进程的PID,可以将进程杀死。 sudo kill -9 PID 如:sudo kill -9 3210
2021-04-08 11:47:58 5131
原创 JsonPath 教程
JsonPath 教程JsonPath 的介绍JsonPath 是一种简单的方法来提取给定 JSON 文档的部分内容。 JsonPath 有许多编程语言,如 Javascript、Python、PHP 和 Java。JsonPath 提供的 json 解析能力非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的 json 内容。github 上有 JsonPath 的应用:JsonPathJsonPath 可以在 Central Maven 仓库中找到,可以看到最新版本已经到了2
2020-11-04 17:33:15 1459
原创 Optional的理解与使用
从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。但是 Optional 的意义显然不止于此。我们从一个简单的用例开始。在 Java 8 之前,任何访问对象方法或属性
2020-10-20 17:02:23 1932
原创 Spring Data Rest 指南
Spring Data Rest一.Restful简介REST是一种Web软件结构风格,而不是一种标准,匹配或兼容这种架构风格称之为REST服务,REST服务简洁并且有层次,REST通常基于HTTP,URI和XML以及HTML这些现有的广泛流行的协议和标准,在REST中,资源是由URI来指定的,对资源的增删改查也是通过HTTP协议提供的POST,PUT,GET,DELETE等方法实现,使用REST可以更高效率的利用缓存来提高响应速度,同时REST中的通信会话状态有客户端来维护,这可以让不同服务器来处理一
2020-10-10 18:18:20 2331
转载 jackson @JsonIgnoreProperties与@JsonIgnore基本使用
问题由来:springboot项目中定义了很多类,我们在rest返回中直接返回或者在返回对象中使用这些类,spring已经使用jackson自动帮我们完成这些的to json。但是有时候自动转的json内容太多,或者格式不符合我们的期望,因此需要调整类的to json过程,或者说希望自定义类的json过程。解决办法:使用@JsonIgnoreProperties、@JsonIgnore、@JsonFormat。@JsonIgnore注解用来忽略某些字段,可以用在变量或者Getter方法上,用在Set
2020-09-14 10:28:45 568
原创 算法(冒泡排序、插入排序、选择排序、快速排序、二分查找)
二分法查找package algorithm;/** * @Description: 二分查找 * @author: zpli * @Date: 2020/6/1 9:30 */public class BinarySearch { public static void main(String[] args) { int[] arr = new int[]{1, 2, 3, 3, 5, 7, 8, 9}; int digest = 4;
2020-06-02 10:49:39 226
原创 SSM常见面试题总结(超详细回答)
https://blog.csdn.net/a745233700/article/details/80959716
2020-05-18 15:59:03 7299
原创 Java 网络编程 之 socket 的用法与实现
Java 网络编程 之 socket 的用法与实现一、概念TCPTCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内 另一个重要的传输协议。在因特网协议族(Internet pro...
2020-04-16 11:11:17 238
原创 try catch finally的执行顺序
结论:1、不管有没有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的;4、finally中最好不...
2020-04-09 13:38:00 247 2
原创 JAVA实现AES加密
1. 因子上次介绍了《JAVA实现DES加密》,中间提到近些年DES使用越来越少,原因就在于其使用56位密钥,比较容易被破解,近些年来逐渐被AES替代,AES已经变成目前对称加密中最流行算法之一;AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据。本文就简单介绍如何通过JAVA实现AES加密。2.JAVA 实现package org.zpli.java8.safe...
2020-04-02 16:50:06 425
原创 JAVA实现DES加密
DES加密介绍DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现。JAVA实现package org.zpli.j...
2020-04-02 16:41:20 3112 2
原创 CAS系列博客
https://blog.csdn.net/u010475041/category_7156505.htmlhttps://blog.csdn.net/yelllowcong/article/details/86250566https://blog.csdn.net/anumbrella/category_7765386.html
2020-03-31 10:39:01 169
原创 大佬博客推荐
My Sunshine https://blog.wuwii.com/Edison Zhou https://www.cnblogs.com/edisonchou/category/625054.html十三 https://www.cnblogs.com/han-1034683568/p/6634711.html#blogTitle4五月的仓颉 https://www.cnblogs.c...
2020-03-27 14:27:11 263
原创 JVM进阶(三) 内存分配与回收策略
虚拟机中的堆分为年轻代和年老代。永久代是非堆内存,它又叫做方法区(一般的说法),主要存储已被加载的类信息、常量、静态变量。而该区域在java8已被删除,取而代之的是元空间。堆是整个Java内存模型中占用最大的一部分,而且不是连续的。当有需要分配内存的时候,一般有两个方法分:指针碰撞和空闲列表。该部分的内存回收是由虚拟机的垃圾收集器GC进行管理的。 堆是存放对象以及数组的...
2020-03-26 18:34:16 143
zepto中文API
2017-09-14
w3cschool中文API
2017-09-14
css4.0中文API
2017-09-14
jQuery中文API
2017-09-14
JavaScript中文API
2017-09-14
HTM5中文API
2017-09-14
bootstrap中文API
2017-09-14
angularJS中文API
2017-09-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人