
Java
Java的学习之路
杰肥啊
一个想变强的挨踢男,很笨,但却很努力。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Java】Lambda表达式
Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,将代码像数据一样传递,这样可以写出更简洁、更灵活的代码,作为一个更紧凑的代码风格,使Java语言表达能力得到了提升。原创 2024-01-15 09:50:36 · 999 阅读 · 0 评论 -
【Java】SpringBoot整合xxl-job学习使用详解
Xxl-Job是一款优秀的开源调度平台,用于管理和调度各种类型的任务,报告定时任务、分布式任务。以上就是我根据xxl-job官网的中文文档配合自己的实操写出来的体会,大家可以蛮看看,如果你经常用SpringTask的话对这个应该很快就能上手,因为我感觉它就是为了解决当初SpringTask那些轻量级定时框架留下的问题,做的一个比较全面的解决方案。其实底层原理就是执行器注册到调度中心之后,调度中心给每个执行器都分给他们2个参数,一个是机子的总数,一个是当前机子的索引数。原创 2024-01-02 15:49:28 · 5507 阅读 · 8 评论 -
【Java】判断对象类型是否是基本类型或者它们的包装类
有时候我们在判断对象类型的过程中,或者序列化对象的时候都可能需要避开一些基本类型的对象,以下就是判断当前对象是否是基本类型或者基本对象的包装类方法。为判断是否是基本类型或者它们的包装类。引入commons-lang3依赖。这里面有一个工具类叫做。原创 2023-02-16 13:45:24 · 4190 阅读 · 0 评论 -
【Web】浅谈Http的请求方式和数据请求格式ContentType
我本来Http的请求方式和数据请求格式是大家开发过程中都默认知道的事情,直到我发现我的前端竟然不知道表单请求的时候,我觉得我有必要跟大家一起来讨论一下这个话题了。有可能我的前端小伙伴在学习的时候一开始就入手现在比较流行的前端框架如Vue、React等,他们已经习惯了请求方式用POST,GET,然后请求格式用application/json,不知道原来除了这些常用的,还有其他的一些请求问题。很多人不太知道请求方式跟数据的请求格式。原创 2022-12-28 17:30:54 · 1517 阅读 · 2 评论 -
【Java】集合流操作根据对象指定的多个属性进行降序升序排序
这里我就话不多说,直接集合流操作根据对象指定的多个属性进行降序升序排序上例子,上Student类哈哈。原创 2022-11-03 17:33:56 · 1257 阅读 · 0 评论 -
【Java】集合流操作根据某个对象的属性去重并保持集合顺序不变
有时候我们从数据库查询到数据之后,想对数据进行一个去重操作,但是从数据库那拿到的是一个对象的集合,这时候我们应该怎么办呢?这里其实就是涉及一个集合流中如何根据某个对象的属性进行去重的问题。接下来我直接用例子进行实现,需要的小伙伴直接拿到代码稍微改一点点就可以了。原创 2022-10-26 20:16:13 · 2256 阅读 · 6 评论 -
【Java】获取Class类的非静态字段的方式
但是我们在有些业务中通过反射想得到非静态的字段,这时候我们应该怎么办呢,添加下面的这个判断即可。原创 2022-10-08 14:47:51 · 1076 阅读 · 2 评论 -
【Java】Java8集合流的基本使用操作和场景
说有一天领导跟你说,得到了上面这样的一个数据,他想变成一种映射关系,什么样的映射关系呢。 这样的一个Map,便于后续的代码可以直接通过Map.getKey(名字)来获取指定的学生对象。args1: 最终你要变成Map的key,你最后要拿到Map,你的告诉人家你拿对象里面的什么属性做key吧。args2: 最终你要的value是什么,o->o的意思就是原来是啥就是啥我不做更换,因为我们就是要学生对象。需求:得到学生数据,假设年级一样的我认为就是一个数据,重复的我不想要。原创 2022-09-23 15:20:46 · 1632 阅读 · 0 评论 -
【Java】poi-tl实现导出Word模板并动态渲染数据
最近做项目的时候会遇到要求要导出以docx格式结尾的报告文件,于是我就在思考有没有一个比较好用的第三方类库能解决在word上渲染数据的问题。之前也尝试用过poi,感觉不大好用,代码比较复杂且没有什么特别好的支持。于是乎在网上搜索了很久,找到了一个第三方组件库还挺好用的,那就是poi-tl。poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性。原创 2022-09-02 10:54:13 · 8413 阅读 · 3 评论 -
【MybatisPlus】ORA-01795 列表中的最大表达式数为1000
以下代码纯楼主手打,有错误地方还请谅解,看思路就行。在使用过程中,报错。我们由一个业务场景来慢慢引出最终的问题,。此时我们会想到的sql语句如下,由此我们使用的代码应该这么写,这时候一执行,咔直接报了开头的错误,。特别注意,MySQL数据库暂时还不会,阈值在哪个值我还目前没测。原因是这个报错信息也非常明确了,就是。因为超过了1000条,无可厚非,不管什么方案,我们先做的肯定都有一步,那就是把拿到的数据进行分组。这里楼主会用到一个很好用的工具类,分组代码也不用自己写了。只要加一个依赖分组方法类的方法方原创 2022-07-19 22:11:47 · 4665 阅读 · 0 评论 -
【SpringBoot】Java邮件发送SpringBoot+JavaMailSender的使用:简单邮件发送
最近项目中有一个小需求就是完成一些特定业务之后,给目标方发送一个邮箱通知,告知某某操作已经完成。为了实现这个功能,我使用的是Spring提供的。接下来我将一步一步的带大家快速完成一个demo案例。............原创 2022-07-18 10:21:41 · 2301 阅读 · 0 评论 -
【Java】Map的getOrDefault方法使用,避免为null的坑
我们知道在之后,Map的方法中新增了一个方法。从字面上看,我们可以大胆猜测一下,它很有可能解决的是我们获取对应key/value时,如果value是null,提供一个默认值的一个方法。现在有一个需求,这时候就很奇怪了,难道新增的这个方法不是我们预期的那个运行思路么?竟然给了默认值之后,还是null。这时候我们不得不看一下源码了,以下是方法的源码。从return 部分我们突然就明白了,它是先把key对应的值赋值给了v,然后或者key如果存在就直接返回v。也就是说,它其实表达的并不是说当value为null原创 2022-06-16 09:28:54 · 5181 阅读 · 1 评论 -
【Java】Java POI 设置Excel单元格上下标
背景由于最近楼主做的是新冠检测相关的系统,其中有涉及导出Excel的需求。按平时封装的导出工具类基本也就满足了,但是最近来了一个要求某些列要有上下标,所以给大家贴出上下标的关键代码,以后抄作业的时候可以快速找到,不要在这个问题上浪费太多时间。代码时间public static void main(String[] args) throws IOException, IOException { //创建标题 List<TableHeader> tableHe原创 2022-04-14 10:15:42 · 2191 阅读 · 3 评论 -
【JavaEE】JavaWeb的HttpServletResponse下载功能的关键代码
//通过Response把数据以Excel格式保存String filename="下载.xlsx";response.reset();response.setContentType("application/octet-stream;charset=UTF-8");response.setCharacterEncoding("UTF-8");//输入流 根据自己业务形成的输入流FileInputStream is = new FileInputStream("某路径");try(Output原创 2022-01-04 10:03:29 · 344 阅读 · 0 评论 -
【SpringCloud】no available service ‘null‘ found, please make sure registry config correct
这个错误大概是由于配置分组事务错误导致的,分组事务的作用楼主猜测大概是用于集群时标注节点,如果有出现宕机可以快速做切换,达到应用最大可用。那么可以由下面几个地方去排查。组件版本不匹配在SpringCloudAlibaba组件中都对应着相应的版本,如果不按照匹配的版本来运行,确实会走很多弯路,打开官网的版本说明可查看。https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E分组原创 2021-12-20 15:22:31 · 4572 阅读 · 0 评论 -
【SpringCloud】SpringCloud feign的fallback操作
第一步在你的Feign客户端接口上实现一个子类@FeignClient(name = "stock-service",fallback= StockFeignFallback.class)public interface StockFeign { //测试超时时间 @PostMapping("stock/feign-timeout") String feignTimeOut();}@Componentpublic class StockFeignFallback impl原创 2021-12-15 23:14:38 · 1220 阅读 · 0 评论 -
【SpringCloud】OpenFeign的自定义拦截器
自定义拦截器/***@Description 自定义feign拦截器*@Author wengzhongjie*@Date 2021/12/15 10:04*@Version*/public class CustomFeignInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) {原创 2021-12-15 10:36:25 · 2655 阅读 · 0 评论 -
【SpringCloud】Nacos2.0.3版本集群部署步骤
文章目录创建三个nacos数据交由Mysql管理修改端口创建cluster.confNginx进行负载均衡最终效果因为我安装的Linux系统给的内存不是很大,所以用Window系统给大家说明Nacos集群运行。在Linux操作跟Window修改的东西一模一样,具备Linux参考价值。总共操作可以分为以下五大步创建三个nacos数据交由Mysql管理修改端口创建cluster.conf由Nginx进行负载均衡创建三个nacos将nacos-server复制粘贴弄成原创 2021-12-13 21:42:20 · 2877 阅读 · 7 评论 -
【Java】根据头数据判断文件类型,非后缀名判断方式
有人说判断文件类型不是挺简单的吗?直接鼠标右键,点击属性,或者直接看后缀名不就完事了。在项目开发中,许多同行都是直接通过文件后缀的方式进行判断(当然不是我自己开发的,我也不愿意去改,哈哈!!)。不是说这样的方式不行,是有点不安全。 上传文件如果不做好安全控制的话,攻击者很有可能上传一些恶意攻击脚本,然后再执行,达到不可告人的目的。于是我们需要原创 2021-10-28 20:33:05 · 2227 阅读 · 0 评论 -
【Java】Jwt基本原理及工具类使用
介绍Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。基于session认证所显露的问题Session: 每个用户经过我们的应用认证之后,我们原创 2021-09-24 15:10:41 · 832 阅读 · 0 评论 -
【Java】基于FastJson的JSON工具类封装
话不多说,直接怼代码,建议封装到自己的工具类中。/***@discrption:JSON相关操作工具类*@user:Gaby*@createTime:2019-11-13 19:12*/public class JSONUtils { /** * 对象序列化 * @param obj 对象 * @return */ public......原创 2020-02-05 23:15:45 · 798 阅读 · 0 评论 -
【Java】雪花算法产生的19位Long类型id返回前端精度丢失问题解决
有时候我们数据库表的主键会设置为Long类型,这时候如果使用雪花算法或者其他手段,在插入数据库时数值是20位的数,这时候返回给前端就会造成精度丢失,以下是用注解方式解决该问题。FastJson序列机制下的项目@JSONField(serializeUsing = ToStringSerializer.class)@JSONField(serializeUsing = ToStringSerializer.class)private Long id;Jackson序列机制下的项目@Json原创 2021-09-22 11:19:53 · 2149 阅读 · 0 评论 -
【SpringBoot】SpringBoot基础入门学习
SpringBoot基础学习目标:能够理解Spring的优缺点能够理解SpringBoot的特点能够理解SpringBoot的核心功能能够搭建SpringBoot的环境能够完成application.properties配置文件的配置能够完成application.yml配置文件的配置能够使用SpringBoot集成Mybatis能够使用SpringBoot集成Junit能够使用SpringBoot集成SpringData JPA一、SpringBoot简介1.1 原有Spri原创 2021-08-18 22:08:08 · 520 阅读 · 0 评论 -
【Eclipse】eclipse在文件夹下可以打开,桌面快捷方式报错
找到桌面的eclipse快捷方式,右键->属性->兼容性,选择以管理员身份运行,完美解决问题。原创 2021-08-16 15:41:10 · 1458 阅读 · 0 评论 -
【Java】函数式接口基础概念
如果说,一个接口必须实现的抽象方法有且只有一个的话,那么这个接口就是函数式接口。//这个接口中,有且只有一个方法,是实现类必须实现的,所以这个是函数式接口。interface Test1{ void sayHello();}//这个接口中,实现类必须实现的方法有2个,所以这个不是一个函数式接口。interface Test2{ void sayHello(); void sayByeBye();}//这个接口中,实现类必须实现的方法有0个,所以这个不是一个函数式接口。原创 2021-06-09 15:09:58 · 188 阅读 · 0 评论 -
【Java】window系统JDK7,JDK8环境安装详细教程
文章目录第一步 简述第二步 安装包安装第三步 指明环境变量第四步 检验第四步 检验我发现最近有很多童鞋一直问我JDK环境怎么安装,这里我做一个详细步骤的讲解,以window系统为例,Linux系统的话 原理和思想是一样的,参照网上其他的Linux安装步骤也是能很快完成的。第一步 简述你得有个JDK安装包,没有的去官网下。我这里就用JDK7+给大家掩饰,因为我电脑上有JDK8+了,我就卸载再重新装了。(当你懂原理之后你会发现,其实你电脑上装多少个JDK都行,不用卸载)第二步 安装包安装双击你的JDK原创 2021-05-21 19:30:20 · 6631 阅读 · 0 评论 -
【Java】集合流groupingBy实用用法
在项目中有一种常见数据封装需求,这里以产品的图片来说明。返回给前端的数据格式可能长成这样{ "data":{ "title":"我是产品的标题,请忽略我", "images":["https://xxx.jpg","https://yyy.jpg"], "video":"https://xxx.mp4" }}但是你在数据库中拿到产品的资源信息的时候可能长成这样[ {"type":1,"path":"https://xxx.j原创 2021-04-08 18:58:35 · 2590 阅读 · 0 评论 -
【Java】集合流中toMap常用用法
有时候我们在数据库中经常会查询到如下的数据集合,我以资源数据为例。[{"type":1,"path":'https://www.xxx.com/x.jpg'},{"type":2,"path":'https://www.xxx.com/y.jpg'}]此时我们想把这样的集合数据(你肯定能知道在这个集合中不同的type只有一条数据)根据资源类型type进行分组, 当然我再次强调,我要实现的是分组后,value不再是List的情况,如果想要变成List,用groupBy写法更合适。以下是java原创 2021-04-08 18:45:49 · 4271 阅读 · 0 评论 -
【Java】java.util.UnknownFormatConversionException Conversion = ‘%‘
在编写代码过程中,我们往往会遇到下面此种需求。对不起,银行的年利率为 5%要求: 输出以上这句话,但是5是可变的。常规做法String templateStr="对不起,银行的年利率为%s%";System.out.println(String.format(templateStr,"10"));理想结果对不起,银行的年利率为10% 真实结果java.util.UnknownFormatConversionException: Conversion = '%'这啥意思,就是St原创 2021-04-07 15:16:20 · 4596 阅读 · 1 评论 -
【多线程】Semaphore公平与非公平信号量的测试
有些时候,获得许可的顺序与线程启动的顺序有关,这时候信号量就要分为公平与非公平的。所谓的公平信号量是获得锁的顺序与线程启动的顺序有关,但是不代表100%地获得信号量,仅仅是在概率上能得到保证。而非公平信号量就无关紧要了,乱序。测试类 SemaphoreDemo3 代码如下:/***@discrption: 公平与非公平信号量测试*@user:Gaby*@createTime: 2021/3/26 15:41*/public class SemaphoreDemo3 { public原创 2021-03-26 16:05:08 · 533 阅读 · 0 评论 -
【Java】Zookeeper的Java客户端Api操作
Zookeeper的使用版本3.4.9这里使用的Java客户端框架是curator,以下是对应版本的依赖。<!--测试包--><dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version></dependency><!--curator原创 2021-03-17 11:07:12 · 337 阅读 · 0 评论 -
【Java】Arrays.asList()的集合不能add()和remove()
java.lang.UnsupportedOperationException基本代码//添加数据List<Integer> numberList = Arrays.asList(1);numberList.add(2);//遍历for (Integer num : numberList) { System.out.println(num);}以上是很多时候快速创建有限数据集合的写法,很多人会觉得自己写的好像没有问题啊,从表面上看似乎跟我们想象中的写法应该就是这样啊,为原创 2021-03-10 11:56:30 · 6897 阅读 · 6 评论 -
MybatisPlus如何只取一条记录
不管是用MP2.X版本的还是MP3.X版本的小伙伴都会发现,在其IService接口中 并没有一个可以直接获取一条记录的方法。MP2.x提供selectOne方法@Overridepublic T selectOne(Wrapper<T> wrapper){ return SqlHelper.getObject(baseMapper.selectList(wrapper));}查询多条记录,如果存在则返回List.get(0)位置上的数据。MP3.x提供getOne方法原创 2021-02-26 17:42:19 · 56114 阅读 · 21 评论 -
【Java】二代身份证号校验的工具类Java代码可直接使用
这是校验身份证合法性的工具类,需要的同学可以直接复制粘贴去用,没有其他依赖。package com.gaby.util;import java.text.ParseException;import java.text.SimpleDateFormat;/***@discrption:身份证 * 计算公式:前17位的每个数字乘以自己对应的系数 所得之和除以11 查看余数 余数为指定数......原创 2019-07-08 16:46:02 · 2236 阅读 · 0 评论 -
【Java】多线程异步编排CompletableFuture的Api方法学习
异步任务编排CompletableFuture特别说明:JDK1.8+之后引入 CompletableFuture背景在一些需求中,我们常常要给前端返回一些复杂的视图数据,数据之间可能有关联,比如查询了A数据之后才可以根据A数据中的一些信息来查询B数据。再比如 查询A数据与查询B数据一般没有相关性。假设查询A数据需要1秒,查询B数据需要1秒,那么以往的写法中,第一种情况返回给前端的时间总共花费2秒,第二种情况返回给前端的时间也会是2秒。但这并不是我们愿意看到的,既然A数据跟B数据没有依赖性很强原创 2020-12-16 15:38:33 · 5434 阅读 · 4 评论 -
【JavaEE】Caused by java.lang.IllegalStateException Unable to complete the scan for annotations forweb
Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [] due to a StackOverflowError. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies. The class hiera原创 2020-08-14 13:05:22 · 1769 阅读 · 0 评论 -
【JavaEE】关于Controller层注入HttpServletResponse,自身的返回结果失效了
由于后端的返回数据采用统一的数据结构,所以不管是SpringBoot还是SpringMVC,都运用了ResponseBodyAdvice类以及@ControllerAdvice注解来辅助。项目中有一个接口是来接收公众号推事件的。最近不知道怎么的,一直出现报警,提示我没有响应内容给微信。@POSTMapping("xxx")public void xxx(HttpServletResponse response){ }虽然我返回的是void ,但是我底层有做返回统一数据的封装,平时项目也在原创 2020-07-30 17:14:58 · 5438 阅读 · 2 评论 -
【Java】ImageIO.read()报错,提示Unsupported Image Type
该图片被PS或者美图秀秀总之其他软件修改过,虽然后缀是.jpg或者.png,但是系统他不瞎,一般真正计算是否是图片 用的是魔数值。原创 2020-02-27 21:36:25 · 3904 阅读 · 0 评论 -
【JavaEE】SpringMVC中配置过滤器将POST请求转换为PUT和DELETE请求
配置SpringMVC中支持PUT请求以及DELETE请求,直接上配置,不扯理论。<!-- spring-filter --><filter> <filter-name>httpPutFormContentFilter</filter-name> <filter-class>org.springframework.we...原创 2019-12-25 10:40:30 · 2751 阅读 · 0 评论 -
【JavaEE】解决session共享后,session监听销毁事件失效
使用spring-session-redis之后,很多人发现session死亡,自己写的监听器并不能监听到。可以使用以下写法,楼主亲测有效。创建一个SpringSessionConfiguration类@Configurationpublic class SpringSessionConfiguration { @EventListener public void onSes......原创 2019-12-24 10:23:33 · 2090 阅读 · 0 评论