自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 MySQL8 over()窗口函数的用法

本文主要介绍MySQL8的over窗口函数的新特性,我们再做开发过程中也经常能用到,可以使代码变得更优雅,提高系统的性能。

2022-06-24 11:49:43 1016 1

原创 MyBatisPlus分页插件的使用

再开发过程中市场要写分页的功能,这里介绍mybatisplus分页插件的使用

2022-05-18 17:59:31 459

原创 Nginx详解

前言今天有空分享一下Ngninx在实际开发过程中的一些只是,只要掌握了这篇文章《Nginx详解》的知识,带你掌握nginx。我写博客的目的是记录一下,将自己的知识分享给有需要的人。在这个世界上,唯一确定的就是不确定的人生。哪天自己不做程序员了,在互联网上留有自己的足迹,人活在世上总得留下点什么,证明自己曾经来过,是一件值得回忆和高兴的事。目录1 Nginx的基本概念(1) Nginx是什么,做什么事情(2) 方向代理(3) 负载均衡(4) 动静分离2 Nginx安装、常用命令和配置文件

2022-05-07 14:06:53 6637

原创 MySql递归RECURSIVE的详解

背景:在实际开发的过程中,我们会遇到一些数据是层级关系的、要展示数据子父级关系的时候,第一个解决方案:将数据库中的所有数据都查询出来用Java代码进行处理。第二个解决方案:可以考虑MySql中的RECURSIVE递归进行数据的查询。具体选择什么样的方法去实现,结合自己项目需求考虑。目前有这样的一张关系属性表:需求1 :找到名字为“隔壁老王”的所有的后代(父查子) -- 递归找出隔壁老王的所有的后代(父找子) WITH RECURSIVE temp(ID,USERNAME,PID,pName

2022-04-24 12:06:12 8028 1

原创 Java实现redis的key生成策略

在开发过程中,为了提高访问的效率,不免会用到redis。比如本例子中使用某种条件去查询某种数据,但是每次去数据库中查询速度会很慢,此时可以考虑将第一次查询的结果放到redis缓存中,当第二次查询的时候,直接从redis缓存中取就可以。redis中事key-value。所以可以考虑将查询条件作为key,所以这里拿查询条件作为key写了个通用的方方,即key的生成策略。当让每个方法都将查询的条件转成字符串这样写也可以,但是抽出来,这样能做到代码的公用,减少冗余代码。注意要现在启动类中加上启动缓存的注解@En

2022-04-07 15:14:31 2256

原创 Java冒泡排序详解

前言在开发过程过,我没很多时候会接触到排序的情况,今天介绍一下用Java代码如何实现冒泡排序。冒泡排序的思想:冒泡排序的核心思想:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。......

2022-04-02 16:07:00 2206

原创 lombok中@EqualsAndHashCode(callSuper = true)和@ToString(callSuper = true) 注解的使用

如果domain中没有重写toString, 且使用了@Data注解, 调用toString时只会打印子类本身的属性值, 如果想要打印父类的属性:方式一:重写tostring方式二:子类加上@Data和@ToString(callSuper = true)两个注解, 父类也使用注解@Data解释:@EqualsAndHashCode(callSuper = true)该注解用于子类对象之间进行比较的时候,equals和hashcode将父类对象属性算进去,根据父类和子类共同的属性去比较。不加

2022-03-17 10:54:31 417

原创 list按照对象的某个属性进行分组

先创建一个类/** * @author qiuhongyu * @date 2022/3/3 15:01 */@Data@NoArgsConstructor@AllArgsConstructorpublic class Personnel implements Serializable { /** * 姓名 */ private String name; /** * 年龄 */ private Integer age

2022-03-03 15:19:20 420

原创 获取list集合中的交集、并集

获取list集合中的交集@Testpublic void intersection() { List<Integer> list1 = new ArrayList<>(); list1.add(1); list1.add(2); list1.add(3); list1.add(4); list1.add(5); List<Integer> list2 = new ArrayList<>();

2022-03-03 15:00:05 467

原创 list集合中的数据按照指定的长度进行切分

list按照指定的长度进行切分,下面例子展示按照三个数据进行切分(即满三个数据就放到一个list中) @Test public void test3() { List<Integer> qhyList = new ArrayList<>(); qhyList.add(1); qhyList.add(2); qhyList.add(3); qhyList.add(4); qh

2022-03-03 14:44:26 1814

原创 java8对list进行升序和降序排序

package com.ways.price.overallMarket;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import java.util.ArrayList;import java.util.Comparator;import java.util.List;import java.util.stream.Collectors;/**

2022-02-28 11:31:32 4762

原创 多线程并发进行,所有线程都执行完成才往下执行主线程

//需求:多个线程并发进行,所有线程都执行完成才执行最后的输出语句 System.out.println("子线程执行完,主线程继续执行"); private CountDownLatch countDownLatch = new CountDownLatch(10); private ExecutorService executorService = new ThreadPoolExecutor( 10, 20,.

2022-02-25 17:11:51 1419

原创 Java使用poi/easyexcel操作excel

前言在工作的开发过过程中,我们总会遇到将数据导出到excel的需求,下面会讲解当今比较流行的两个工具实现使用Java操作excel1:poi2:easyexcelPOI介绍使用poi会相对比较原生,相较于easyExcel比较复杂针对上图的基本功能的 1 2,workbook的实现类有三个接口。其中SXSSFWorkbook操作excel07版XSSF的升级,速度比XSSF更快。具体下面有写POI实战-写的操作:都入相关依赖<!--xls 03-->&lt

2021-11-28 21:28:31 1112

原创 java计算时间区间内月份的个数

public static void main(String[] args) throws ParseException { Calendar c1 = Calendar.getInstance();//实例化 Calendar c2 = Calendar.getInstance(); SimpleDateFormat sdf=new SimpleDateFormat("yyyyMM"); String s = "20210..

2021-11-16 13:59:46 602

原创 MySQL对区间数据进行统计

在开发过程中,会遇到对区间段的数据进行处理,比如需求:统计各个分数段的人数源数据:对每一个区间进行分组统计

2021-10-28 17:54:19 1182

原创 mysql实现分组取每组前几名

在开发过程中,会遇到分组后取每一组排名前几的几个人,具体实现的sql如下:需求:按category分组,查出achievement最高的每组的前三名

2021-10-17 21:12:36 6328 3

原创 在使用mysql的group_count()函数时遇到的一些坑

前言:group_concat是以分组后将同组数据连接起来。group_concat默认长度为1024用group_concat连接字段的时候是有长度限制的,超过了默认长度,他就会将默认长度后面的截断。默认长度可以修改,所以我当初在开发过程中中没有改他的默认长度,当数据库中的数据长度超过1024时候,发现大于1024长度后面的数据竟然没有了。修改group_concat默认长度的方法:使用group_concat_max_len系统变量,可以设置允许的最大长度。程序中进行这项操作的语法如下,

2021-09-26 16:15:38 2738

原创 MySQL排名处理(分并列和非并列的情况)

数据准备在数据库中创建一张user表,表中有成绩字段。表创建好后想数据库中添加一些数据。现在数据库中有如下数据情况一:不管分数相不相同,都按顺序排名(1、2、3、4、5)SELECT a.username, a.gender, a.achievement, @rownum := @rownum + 1 AS ranking FROM ( SELECT a1.username, a1.gender, a1.achievement FROM `user` a1 ORDER BY a1.ac

2021-09-17 17:04:19 1628

原创 json与对象之间的转换

代码实现首先在pom文件中添加需要的依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.72</version></dependency>然后import lombok.Data;import java.io.Serializable;im

2021-09-08 20:46:34 136

原创 idea部署ssm项目教程

下面部署的步骤按照图片的顺序一步一步往下最后就可以部署成功了。

2021-09-02 15:18:01 1380

原创 SpringBoot整合knife4j生成在线接口文档

首先需要再项目的pom文件中添加所需要的依赖 <!-- knife4j在线接口文档 --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>${knife4j.version}<

2021-09-01 17:03:11 252

原创 RestTemplate绕过证书验证

前言当我们再开发过程中使用RestTemplate进行远程调用的时候,需要调用的接口的协议是https的时候,此时调用接口就会失败,原因https协议需要安全证书。解决的办法可以使用绕过证书的方式,然后再进行远程接口的调用。具体代码实现import com.huawei.vdmserver.portal.common.interceptor.LoggingClientHttpRequestInterceptor;import org.apache.http.client.HttpClient;im

2021-09-01 16:52:14 1193

原创 mysql对手机号中间四位做脱敏处理

select REPLACE(a.phone, SUBSTR(a.phone,4,4), '****') as phone from ums_member a;

2021-08-31 10:11:47 2105 1

原创 幂等性详解

幂等性概念多次请求某一个资源对于资源本身应该具有同样等结果,也就是说,其任意多次执行对资源本身所产生等影响的结果均与第一次执行的影响的结果相同。(多次请求的资源都是相同的导致数据库存储脏数据)产生幂等性场景网络波动, 可能会引起重复请求用户重复操作,用户在操作时候可能会无意触发多次下单交易,甚至没有响应而有意触发多次交易应用使用了失效或超时重试机制(Nginx重试、RPC重试或业务层重试等)页面重复刷新使用浏览器后退按钮重复之前的操作,导致重复提交表单使用浏览器历史记录重复提交表单浏览器重

2021-08-23 16:55:00 399

原创 java对时间处理工具类

Java对时间处理相关工具类本文章主要对日期时间的计算的一些处理,本人整理出了工具类,需要使用的时候直接拿来使用即可。package com.ways.mvp.common.util;import com.ways.mvp.common.constant.GlobalConstants;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * @Auther: qiuh

2021-08-23 16:52:33 121

原创 Mysql解压版安装教程

前言在程序的开发过程中,避免不了与数据打交道,数据的存储离不开数据库的支持,此教程主要展示在win10的机器下如何安装解压版的关系型数据库Mysql。具体安装过程本教程以5.7.31版本的MySQL为例先到官网中下载Mysql zip压缩包,然后解压,刚解压出来的文件夹是没有红框中的这两个文件的,所以要手动创建一下(具体怎么创建my.ini和data下面会有介绍)然后在环境变量中添加bin所在的路径创建一个空的data文件夹,再创建一个my.ini文件(如图所示)将一下内容复制到ini文

2021-07-02 09:35:23 132

原创 SpringBoot全局异常处理

SpringBoot全局异常处理 在项目开发过程中,会出现各种各样的异常,但是每一个异常都要在项目中一个个处理的话,我们 编写的代码就会出现过多冗余,降低了代码的复用性,违背了编码过程中要避免代码冗余的理念。具体代码实现自定义异常:package com.huawei.vdmserver.portal.common.exception;import com.huawei.vdmserver.portal.common.constant.ResponseCode;import lombok.

2021-07-01 13:44:05 40

原创 java反射的应用:动态代理和静态代理

java反射的应用:动态代理和静态代理详解代理设计模式的原理: 使用一个代理将对象包装起来,然后用该代理的一项取代原始的对象。 任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。静态代理:特征是代理类和目标对象的类都是在编译期间确定下来,不利于程序的扩展。同时,每一个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理。最好可以通过以恶代理类完成全部的代理功能。动态代理:是指客户通过代理类来调用其他对象的方法,并且是在程序运行是根据需要

2021-07-01 11:23:43 75

原创 SpringBoot全局日志打印

这里写自定义目录标题SpringBoot全局日志打印具体代码实现SpringBoot全局日志打印 日志在项目中是一个非常重要的存在,但是在做项目的过程中,每次都要在项目中打印请求和响应的报文非常的 麻 烦,代码重复度高,所以在项目中进行全局日志的打印是非常又必要的。下面是具体代码的实现。此方法 可以解决日志打印的时候日志混乱打印的问题。具体代码实现package com.qhy.aspect;import com.alibaba.fastjson.JSON;import lo

2021-07-01 10:29:22 559

空空如也

空空如也

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

TA关注的人

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