已知一个数组,需要将这个数组排序,排序的规则是:按照数组中的元素的某个属性,按照指定的顺序来排序 例如:一个包含Student的学生数组,Student中有一个分组的属性,我们要按照分组,且按照我们指定的顺序来排序 实现方式是试用indexOf查找这个属性在给定的顺序数组中的位置,根据未知的大小来排序,示例如下: public static void main(String[] args) throws Exception { List<Student> students = new ArrayList…

2023-05-15 0条评论 218点热度 0人点赞 admin 阅读全文

有一个List,里面的元素有多个属性,我们需要根据里面的2个(或者多个)属性来对这个List去重。 代码如下: public static void main(String[] args) { List<SomeObject> list = new ArrayList<>(); list.add(new SomeObject("abc", 100)); list.add(new SomeObject("abc", 100)); list.add(new SomeObject("def", 1…

2023-03-05 0条评论 325点热度 0人点赞 admin 阅读全文

阿里云试用OSS的API获取某个文件文件的地址,返回的是http的地址,官方的示例代码如下: String endpoint = "oss-cn-shanghai.aliyuncs.com"; OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); try { boolean exists = ossClient.doesObjectExist(bucketNameStatic, key); if (…

2023-01-28 0条评论 661点热度 0人点赞 admin 阅读全文

开发中常有需求将文件转成byte[]数组的场景,这里总结了一下几种常用的File转bytes的方式(直接转成bytes需要在内存里存放,所以仅使用文件不大的场景,如果遇到的文件很大,那么可能做法不是这样的,例如使用随机读取,一边读取一边处理等方式(RandomAccessFile)): 使用apache commons io 这个库,引入依赖: <dependency> <groupId>commons-io</groupId> <artifactId>commons…

2023-01-01 0条评论 394点热度 0人点赞 admin 阅读全文

默认情况下使用ApachePOI生成的单元格Cell,我们给Cell设置内容后,如果内容比较多,宽度不够的情况下,里面的文字是不换行的,如果希望文本换行,可以有两种做法 将单元格设置为文本自动换行(推荐) HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setWrapText(true); // 设置cellStyle格式为自动换行 cell.setCellStyle(cellStyle); // 给单元格cell设置cellStyle…

2022-12-24 0条评论 494点热度 0人点赞 admin 阅读全文

在网上看很多文章都在说自定义注解的语法,这谁不会,我要的是怎么在项目中用,什么时候自定义,如果你是这样的需求这篇文章一定可以满足你!老样子,文章很长很舒服,建议收藏反复阅读!喜欢记得点赞哦~ 本文章会从以下几点全面讲解Java注解: 注解概念和分类 自定义注解 通过SpringBoot + AOP实现 2个 自定义注解的应用案例 案例的深入优化,以及Spring框架中的相同注解源码 Java8重复注解和类型注解 从JDK5刚推出注解,到Java8的重复注解全面介绍Java注解的所有知识点,看完本篇文章你将会: 知道…

2022-12-15 0条评论 468点热度 0人点赞 admin 阅读全文

之前的文章有介绍利用Puppeteer部署Docker,生成截图,详见:https://blog.terrynow.com/2022/10/29/use-node-puppeteer-docker-mingalevme-screenshoter-as-service-to-fullscreen-screenshot-and-support-chinese/,不过并不能生成PDF,本次介绍另一个Docker镜像,是生成PDF的。 镜像地址是: https://hub.docker.com/r/hmtx/puppete…

2022-12-13 0条评论 676点热度 0人点赞 admin 阅读全文

一、前言 策略模式可能是在工作中使用最多的,也是在面试中最常提到的,代码重构和优化的必备!小编之前也是一直说,其实没有真正的实战;最近有了机会实战了一下,来分享一下使用心得和在企业级的使用! 二、策略模式 1. 什么是策略模式 策略模式,英文全称是 Strategy Design Pattern。在 GoF 的《设计模式》一书中,它是这样定义的: 定义一族算法类,将每个算法分别封装起来,让它们可以互相替换。策略模式可以使算法的变化独立于使用它们的客户端(这里的客户端代指使用算法的代码)。 2. 策略模式结构组成 S…

2022-12-10 0条评论 319点热度 0人点赞 admin 阅读全文

Lombok使⽤ 同时使⽤@Data和@Builder ,构建无参构造器报错!编译不通过。如下图: Lombok使⽤@Data可以⽣成⽆参构造和类⾥⾯所有属性的getter/setter⽅法。可以简化我们代码的开发。(需要安装Lombok插件和引⼊Lombok依赖)。 例如下⾯的⼀个实体类,引⼊Lombok后,可以⾃动⽣成GET/SET⽅法和⽆参构造函数。 编译后的class为:可以看到不仅帮我们生成了get和set ,同时也有默认的无参构造器   那么怎么自动生成有参构造器呢?使用@Builder注解,…

2022-12-06 0条评论 442点热度 0人点赞 admin 阅读全文

默认情况下用ApachePOI生成的Excel,单元格Cell所在的那一列(Column)的宽度都很窄,用户下载后,需要每一个单元格都手动拉宽才能显示内容,比较不方便。 POI中可以有以上几种方式,从代码中设置单元格宽度: 宽度的参数要乘以256,这是怎么回事呢?其实,这个参数的单位是1/256个字符宽度,20 * 256 就是20个字符的宽度 # 我们假设要给单元格设置宽度是20 (以下都要将需要的宽度乘以256传进去) # 设置Sheet下所有的单元格的默认宽度是20 sheet.setDefaultColum…

2022-11-29 0条评论 799点热度 0人点赞 admin 阅读全文
1234520