自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(250)
  • 资源 (1)
  • 收藏
  • 关注

原创 EasyExcel注解实现导出动态下拉框字符超出255

easyexcel动态下拉,突破255字符限制

2024-03-13 10:31:18 801

原创 Java使用自定义注解实现数据脱敏以及字段加解密

Java实现实体类属性数据脱敏,加解密

2023-12-20 13:18:05 506

原创 Java可重入锁(GPT编写)

Java可重入锁是Java并发编程中常用的一种锁机制,它可以允许同一个线程多次获取同一个锁,从而避免死锁和其他并发问题。Java可重入锁的实现基于AQS框架,它通过状态变量state和等待队列来实现锁的获取和释放。Java可重入锁支持可重入性,即同一个线程可以多次获取同一个锁,而不会造成死锁或其他并发问题。

2023-10-18 15:55:46 760

原创 返回yyyy-MM-dd的list

// 返回的日期集合

2023-10-16 17:02:55 122

原创 程序员开发过程中还是需要写注释的

简单说明:关于注释的问题,一直以来都是两面派,一方面认为在快速迭代的开发过程中,添加注释会浪费很多程序员自己的时间,从而影响开发进度,被问责被丢锅...另一方面认为,注释作为开发功能的赘述,不管是对于leader的review还是对于后面维护的人员,都是很友好的行为。详细论述:代码注释可以帮助其他开发人员更好地理解代码的功能和实现方式,也可以帮助自己更好地维护和修改代码。如果代码没有注释,那么其他人在阅读代码时可能会遇到很多困难,也会增加代码维护的难度。当然,写注释也需要注意适度。

2023-10-12 09:36:48 156

原创 基于InsCode实现一个自己的chatgpt

​。

2023-08-17 10:26:37 121

原创 springboot使用http发起远程服务调用,请求参数包含StandardMultipartHttpServletRequest

问题记录方便后续使用

2023-04-27 16:29:26 524 1

原创 我的创作纪念日

希望自己技能分享类的总结越来越多,问题复盘越来越少,有深度的文章越来越多,浅显记录越来越少。1.提升了一些职业技能,比如说springboot整合系列,更轻松应对多种业务场景。没什么成就,更多还是自己吧,坚持学习,保持进步,每天成长一点点,进步一点点。2.记录了生活工作中遇到的问题,进行复盘分析,更好的让自己学会总结和自省。3.记录了一些常用的小工具类,给他人带来便利。

2023-04-23 09:48:39 80

原创 BeanUtils工具类

public class BeanUtils { private static final String DEFAULT_HYPHEN = "-"; /** * 对象拷贝,先使用Spring的BeanUtils进行浅拷贝,再尝试拷贝属性名称相同、但类型不同的字段 * * @param source 源对象 * @param target 目标对象 */ public static void copyProperties(Objec

2023-04-07 16:13:15 147

原创 近期bug修复及开发问题小结

问题小结

2023-03-14 14:48:38 100

原创 json对象出现$ref: “$.list[0]“

循环引用:当一个对象包含另一个对象时,fastjson就会把该对象解析成引用。

2023-03-14 14:40:56 861

原创 MySQL使用行号分页

MySQL查询优化(无主键无索引分页查询)

2023-02-08 19:18:20 135

原创 RocketMQ相关面试题简单整理

RocketMQ面试题整理

2022-06-29 16:11:27 1839

原创 Java使用poi解析excel工具类

package cn.com.gome.scot.alamein.business.report.common.util;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.FileN

2022-05-18 17:51:09 758

原创 Java常用excel导出实现

最近在做很多报表相关的开发,包括使用shell和hive将大数据汇总,然后页面做展示,还有将结果导出excel发送给相关负责人,由于导出表格的时候,有很多场景,现在针对几种常用场景,进行一些整理,方便以后使用。1.少量数据,使用alibaba.excel.EasyExcelExcelUtils.java:@Slf4jpublic class ExcelUtils { /** * Excel模板导出 * * @param templateInputStream

2022-03-11 14:43:29 2784

原创 近期一些开发规范上的问题记录

1.log打印一定要在接口调用处和数据返回处加上log打印调用方法名和出入参,方便日志排查。在业务逻辑开发处,对一些关键点进行日志打印,方便在逻辑处理时进行问题排查。日志需要精简,不需要过多,能简单明确定位到问题即可。2.精度问题普通的Double类型直接做加减乘除的时候会出现精度缺失,需要用用BigDecimal类。 public double add(double d1,double d2){ BigDecimal bd1 = new BigDecimal(Doubl

2021-12-02 15:18:01 107

原创 Command line is too long

Command line is too long. Shorten command line for SpringBootMainApplication or also for Application找到.idea文件夹下面的workspace.xml文件,搜索到PropertiesComponent,在标签下增加一行:<property name="dynamic.classpath" value="true" />即可解决...

2021-12-02 11:00:13 100

原创 Dubbo远程调用文件上传服务

背景:由于公司内部使用dubbo作为远程服务调用,在使用其他系统的文件上传服务时,系统出现报错。 @ResponseBody @RequestMapping(value = "uploadResourceImg", headers = "content-type=multipart/form-data", method = RequestMethod.POST) public RestResult<ResultDto> uploadImage(@RequestPa

2021-11-04 20:24:54 708

原创 20210907生产问题记录

背景以前写过一个定时任务,每天将mongodb的数据同步到MySQL,使用的是xxjob作为定时任务框架,一直都是正常使用的,今天发现生产环境在7月19日之后就没有了数据,但是使用elk平台还有xxjob的控制台查看定时任务记录,都是正常状态。分析排查首先确定是否写对了数据库,是否有数据库配置的修改,经过确定排除了此种情况。后来查看服务器的日志打印,发现有一条 Could not set property 'id' of 'class com.jpgk.entity.report.OrgWareho

2021-09-07 20:37:53 218

原创 2021-08-26Dubbo踩坑笔记

背景由于项目是多人协作,服务调用使用的dubbo,在定义接口出入参的时候,我自己定义了一个基本入参xxxReq,包含了两个分页属性,后续有其他同事将此类继承了一个BaseReq。base中包含分页字段。本地单元测试,接口都能根据分页数据的值查询出对应的数据,但是dubbo Consumer端查出的数据一直是走的默认数据。而且服务器上,根据分页条目的属性名查询日志,根本查不到日志输出,由于默认数据与数据库条目还是一致的,所以错误的以为触发了dubbo的缓存机制,并没有真正的将请求打到服务器上,也导致排查错

2021-08-27 15:17:47 246

原创 Dubbo原理学习(二)

Dubbo SPI在前面的学习中ServiceConfig中有一段private static final Protocol protocol = (Protocol)ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();点击进入Protocol ,可以看到一个特殊的注解@SPI。学习一下:java spi机制SPI,Service Provider Interface,主要是被框架的开发人员使用,比

2021-08-18 19:52:21 139

原创 Dubbo原理学习(一)

Dubbo简介项目中使用dubbo作为rpc框架,而且以前一直也是有过使用经验,但是没有深入学习过,近期项目进度不紧,就简单学习一下深入原理。dubbo官方文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html开头开始一张众所周知的dubbo原理图:节点角色说明Provider 暴露服务的服务提供方Consumer 调用远程服务的服务消费方Registry 服务注册与发现的注册中心Monitor 统计服务的调用次数和调用时间的监

2021-08-16 16:53:53 312

原创 List聚合

需求:数据库查出一批集合,时间各不相同,但是现在要求对同一天的金额和总数再次叠加处理:@Data@AllArgsConstructor@NoArgsConstructorpublic class ResultDO { private String times; private Double price; private Long count;}public class DataTest { public static void main(String[] a

2021-05-19 14:31:18 479

原创 BeanCopy

package com.example.demo.util;import com.baomidou.mybatisplus.extension.exceptions.ApiException;import net.sf.cglib.beans.BeanCopier;import net.sf.cglib.beans.BeanMap;import org.springframework.objenesis.ObjenesisStd;import java.util.ArrayList;impo

2021-05-13 17:52:46 215

原创 String转换List<JSONObject>

/** * 字符串格式化 */ public static List<JSONObject> getList(String data){ ObjectMapper mapper = new ObjectMapper(); JavaType javaType = getCollectionType(ArrayList.class, JSONObject.class); List<JSONObject> ...

2021-05-12 10:59:25 1419 1

原创 Mybatis-Plus 3.2.0与3.4.0的坑

批量插入3.2.0版本中,IService有一个看着很迷惑人的一个方法boolean saveBatch(Collection<T> entityList, int batchSize);以为这个是批量插入,其实不然,跟随代码进入底层会发现: public boolean saveBatch(Collection<T> entityList, int batchSize) { String sqlStatement = this.sqlStatemen

2021-04-03 15:42:32 1551 1

原创 对List进行分割的几种方式

1、使用google guava对List进行分割需要引入google guava依赖,引入后可以使用,简单方便但是需要引入额外依赖,如果不介意可以使用。//假设查询出很多用户信息List<User> users = userService.findAll();//按每100个一组分割List<List<User>> parts = Lists.partition(users, 100);parts.stream().forEach(list -> {

2021-04-02 13:31:21 30874

原创 java获取一天的起止时间

Calendar calendar = new GregorianCalendar(); // 0可以修改,0代表当前时间,-1代表前一天 calendar.add(Calendar.DAY_OF_MONTH,0); //一天的开始时间 yyyy:MM:dd 00:00:00 calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINU...

2021-03-30 15:27:25 1849

原创 2020-12-28踩坑记录

public static void main(String[] args) { boolean b1 = Boolean.parseBoolean("true"); System.out.println("b1=" + b1);//b1=true b1 = Boolean.parseBoolean("false"); System.out.println("b1=" + b1);//b1=false boolean b2 = Boolean.valueOf("t

2020-12-28 18:07:17 130

原创 HTML简单入门学习(二)

分析一个简单HTML文档样例:<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>我的测试站点</title> </head> <body> <p>这是我的页面</p> </body></html>分析如下:在HTML中应用CSS和JavaScr

2020-12-24 20:39:45 160

原创 HTML简单入门学习(一)

什么是 HTML?HTML (HyperText Markup Language) 不是一门编程语言,而是一种用来告知浏览器如何组织页面的标记语言。HTML 可复杂、可简单,一切取决于开发者。它由一系列的元素(elements)组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈现或者工作。 一对标签( tags)可以为一段文字或者一张图片添加超链接,将文字设置为斜体,改变字号,等等。剖析一个 HTML 元素这个元素的主要部分有:开始标签(Opening tag):包含元素的名称(本例为

2020-12-23 20:52:50 114

原创 有人见星辰,有人见尘埃

思考年前匆匆忙忙的走,匆匆忙忙的离职。以为从北京回到家,就能缓缓休息一下,结果年后的疫情原因,让自己变成了休长假。看似枯燥且无聊的生活,让我找到了生活的一些思考,开始试着读书,去看一些经典文学,哲学文献,也开始对各种各样的人生和世界有了自己的一个认识,慢慢的也就觉得一切都是那么平和与自然。年后匆匆忙忙的回,匆匆忙忙的入职。回到北京的生活,似乎并没有入想象般的那么不堪。由于隔离原因,换了个自己喜欢的环境。刚入职就远程办公的心情,自己孤独一人隔离在屋子里解决食宿问题,与看似自在的生活有着强烈的

2020-12-22 20:46:28 645 1

原创 序列化和反序列化学习(三)

几种常见的序列化和反序列化协议ThriftThrift是Facebook开源提供的一个高性能,轻量级RPC服务框架,其产生正是为了满足当前大数据量、分布式、跨语言、跨平台数据通讯的需求。 但是,Thrift并不仅仅是序列化协议,而是一个RPC框架。相对于JSON和XML而言,Thrift在空间开销和解析性能上有了比较大的提升,对于对性能要求比较高的分布式系统,它是一个优秀的RPC解决方案;但是由于Thrift的序列化被嵌入到Thrift框架里面,Thrift框架本身并没有透出序列化和反序列化接口,这导致

2020-12-21 22:47:44 84

原创 2020-12/18-19停更说明

哈哈和好朋友合作整了点东西,做了两天工具人,不过工具人也是很欢乐的,哈哈收获也很多,更多的是无法表达的,愿我们都能做更好的自己~

2020-12-20 22:45:26 120

原创 序列化和反序列化学习(二)

几种常见的序列化和反序列化协议互联网早期的序列化协议主要有COM和CORBA。COM主要用于Windows平台,并没有真正实现跨平台,另外COM的序列化的原理利用了编译器中虚表,使得其学习成本巨大(想一下这个场景, 工程师需要是简单的序列化协议,但却要先掌握语言编译器)。由于序列化的数据与编译器紧耦合,扩展属性非常麻烦。CORBA是早期比较好的实现了跨平台,跨语言的序列化协议。COBRA的主要问题是参与方过多带来的版本过多,版本之间兼容性较差,以及使用复杂晦涩。这些政治经济,技术实现以及早期设计不成

2020-12-17 19:44:35 134 1

原创 kafka生产者报错Failed to update metadata after 60000 ms.

背景由于新增一个对接渠道,系统要对Kafka的消息进行消费,由于对接方目前没有环境,所以自己本地开发,并且使用环境中的一台kafka作为开发使用,本地自己设置producer和consumer,分别作为生产者和消费者。producerconsumer问题同样的topic和groupid,但是在使用的过程中,在producer提供消息的时候,出现了Failed to update metadata after 60000 ms.网上搜索多数都是要求更改kafka的配置文件中的信息,但是此kaf

2020-12-16 17:17:18 12904 2

原创 序列化和反序列化学习(一)

概述序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中;另一方面,它们会以其他更容易理解的概念出现,例如加密、持久化。然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式、大数据量系统设计里面更为显著。互联网的产生带来了机器间通讯的需求,而互联通讯的双方需要采用约定的协议,序列化和反序列化属于通讯协议的一部分。通讯协议往往采用分层模型,不同模型每层的功能定义以及颗粒度不同,例如:TCP/IP协议是一个

2020-12-15 20:41:46 175

原创 java魔数

背景以前偶尔听朋友说过魔数,但是从来没有深入学习过,最近又开始经常听到这个字眼,所以觉得有必要认真了解一下。。。类型1、标识文件类型的“魔数”大多数情况下,我们是通过扩展名来识别一个文件的类型的,比如一些.java,.txt文件等,我们都能清楚知道它是什么文件,那一旦一个文件的扩展名被修改过,怎么识别一个文件的类型呢,这就是用到了魔数。很多类型的文件,其起始的几个字节内容都是固定的,因此这几个字节的内容也被称为魔数。因为根据这几个字节的内容就可以确定文件类型了,有了这些魔数,我们就可以很方便的区分

2020-12-14 20:45:47 1283 1

原创 Java通过URL发送GET或者POST请求

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.io.UnsupportedEncodingException;import java.net.URL;import java.net.URLConnection;import java.util.Iterator;import java

2020-12-13 21:34:53 293 1

原创 OAuth2.0授权码模式流程详细

流程图之前受朋友启发学习了一下阮一峰的理解OAuth2.0,里面的流程图如下:感觉不是很直观,有一点点难理解,找到了一个稍微美观一些的流程图,如下:步骤详情以及参数步骤1、用户访问客户端,后者将前者导向认证服务器2、用户选择是否给予客户端授权3、假设用户给予授权,认证服务器将用户导向客户端事先指定的重定向URI,同时附上一个授权码4、客户端收到授权码,附上早先的重定向URI,向认证服务器申请令牌。这一步是在客户端后台的服务器上完成的,对用户不可见。5、认证服务器核对了授权码和重定向的UR

2020-12-12 21:04:32 3357

文件上传下载模板-excel模板下载,按照模板内容可以插入到对应表

文件上传下载模板-excel模板下载,按照模板内容可以插入到对应表

2023-05-05

SpringBoot经典学习笔记.pdf

网络上传播的关于springboot的开发学习笔记,适用于初学者在入门阶段学习使用,关于注解开发还有一些底层简单实现。

2020-06-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除