自定义博客皮肤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)
  • 收藏
  • 关注

原创 spring boot配置文件配置Pointcut表达式

spring boot 切面Aspect expression配置化1、背景2、解决方案3、总结1、背景最近写了一个日志切面,打印所有业务日志,切面放在common包,所有下游微服务都会引用该包。由于下游服务项目的包路劲都有差异,所以日志切面表达式就切了公司的groupId路径下所有的controller方法。本来好好的,有一天一个服务说,我不想打印所有的controller日志,你给我干掉,那我肯定不能啊,毕竟还有好多其他服务要打印日志呢。于是就对日志切面进行改造,考虑到每个服务的包路径都有差异,想着

2022-04-15 10:50:03 1630 1

原创 【无标题】AOP统一业务日志

打印日志package com.dst.mid.common.aop.apilog;import cn.hutool.core.date.DateUtil;import cn.hutool.core.date.TimeInterval;import cn.hutool.json.JSONUtil;import com.dst.mid.common.entities.result.PageInfoPlusResult;import com.dst.mid.common.entities.resu

2022-04-01 14:16:16 520

原创 Mysql表结构差异比较

Mysql表结构差异比较1、背景2、解决方案3、总结1、背景我们在开发过程中,大部分情况下都是好几个版本一起并行,有时候如果某个版本表结构改动较大,但是忘记了记录DDL脚本,这个时候需要人工去把新增或修改的DDL脚本整理出来(主要是为了解决 数据库新增字段,以及修改字段类型,新建数据库表,索引新增等等),但人工手动梳理不仅效率慢,而且容易出错,这里记录下我使用的工具–Navicat。2、解决方案打开navicat,选择工具–>结构同步:选择好数据库连接以及表结构,点击比对比

2022-03-05 11:35:34 2798

原创 mybatis-plus自带分页和pagehelper分页jar包冲突处理

mybatis-plus自带分页和pagehelper分页jar包冲突处理

2022-02-21 11:27:56 6710

原创 Java8 Stream map与peek的区别

Java8 Stream map与peek的区别入参不同,map要求function入参,而peek要求Consumermap需要返回值,peek不需要peek接收一个没有返回值的λ表达式,可以做一些输出,外部处理等。map接收一个有返回值的λ表达式,之后Stream的泛型类型将转换为map参数λ表达式返回的类型注意:java中的Stream带有lazy执行特征,在整个操作过程中, 只有遇到terminate操作函数,才会触发stream的整体运算。即,如果没有terminate动作,中间不论做

2021-10-09 15:35:45 1782

原创 Java验证码-easyCaptcha

Java验证码-easyCaptcha简介EasyCaptcha官方地址效果展示代码演示Demo1、maven依赖2、代码验证简介Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。EasyCaptcha官方地址github地址: https://github.com/whvcse/EasyCaptcha效果展示代码演示Demo1、maven依赖<dependency> <groupId>com.github.wh

2021-06-07 18:55:40 349

原创 Chrome snippets 小脚本

Chrome snippets 小脚本平时想测试编写一些JS脚本的时候,可以借助Chrome浏览器的snippets功能首先,打开浏览器开发者工具(右键浏览器检查或者直接f12都行),找到sources选项然后选择snipptes选项卡,如果没有看到snipptes,可以点下面板上的>>就可以看到了在snipptes界面可以create new snipptes,新建后就可以在右侧窗口编写代码了,然后保存保存完snipptes片段后,右键文件,运行,对应的结果便会出现在console

2021-05-19 18:03:49 919 3

原创 vue项目nginx部署

vue项目nginx部署1、执行npm run build打包vue项目,得到dist目录2、把dist目录拷贝到nginx的html目录下面3、配置nginx.conf文件4、启动nginx,测试1、执行npm run build打包vue项目,得到dist目录npm run build ##这里主要看你webpack里面配置的命令是啥,默认是npm run build2、把dist目录拷贝到nginx的html目录下面3、配置nginx.conf文件主要配置下server里面的几个配置

2021-05-19 16:10:31 282

转载 Vue el与$mount的区别

Vue el与$mount的区别先阅读官网:https://cn.vuejs.org/v2/api/#elhttps://cn.vuejs.org/v2/api/#vm-mount同:均是用来挂载对象的,作用相同,但是使用方法有所差异(如下实例);异:el是vue的一个option,$mount是vue的一个实例方法;/* 此时是未挂载状态,页面是不显示的 *///此时可以使用下面A或B来挂载,都可以new Vue({ router, store, render: h =&g

2021-05-13 18:15:40 1208

转载 动态的为ElasticSearch的@Document指定index

动态的为ElasticSearch的@Document指定index 前言 由于项目定义了配置中心,分了开发库,测试库,预生产,每次发布都需要改项目中所定义的常量,希望动态为Document指定IndexName,找了好久,终于找到。 第一种,直接定义一个实体类 @Value("${etrali.indexname}")private String indexName; @Beanpubli

2021-05-12 17:52:34 905

原创 Elasticsearch设置查询数量的限制

Elasticsearch设置查询数量的限制问题描述The maximum value of from + size for searches to this index. Defaults to 10000. Search requests take heap memory and time proportional to from + size and this limits that memory官方文档https://www.elastic.co/guide/en/elasti

2021-05-12 16:32:09 1883

原创 SpringBoot中@EventListener使用

SpringBoot中@EventListener使用1、不设置value值,采用参数形式创建事件监听,只能监听一个事件2、设置value值,可以设置一个事件或者多个事件1、不设置value值,采用参数形式创建事件监听,只能监听一个事件@Componentpublic class MyEvenntListener { @EventListener public void doMyEvent(MyEvent01 myEvent01){ System.out.printl

2021-05-08 10:35:09 1586

原创 SpringCloud-gateway配置一

SpringCloud-gateway配置一1、RouteDefinition--路由定义2、PredicateDefinition1、RouteDefinition–路由定义这是一个properties类,可以自己配置route规则,源码如下/* * Copyright 2013-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); *

2021-05-07 15:36:31 221

原创 FeignClient Get请求参数问题

FeignClient Get请求参数问题1、方式一【参数少推荐】2、方式二【不推荐】3、方式三【强烈推荐】当用feign调用get请求时,可以使用如下几种方式:1、方式一【参数少推荐】参数不多的时候,可以直接通过@RequestParam,类似URL拼接参数 @ApiOperation(value = "根据文件ID修改文件") @GetMapping("/getFileInfo") R updateBizNo(@Valid @RequestParam List<Lon

2021-05-03 15:10:00 2074

原创 RabbitMQ的安装以及使用--Windows环境

RabbitMQ的安装以及使用--Windows环境一、RabbitMQ介绍1、RabbitMQ简介2、RabbitMQ简介(白话)二、RabbitMQ安装1、安装erlang2、安装RabbitMQ3、配置erlang和rabbitmq环境变量(1)erlang环境变量配置(2)RabbitMQ环境变量配置三、RabbitMQ测试四、简单的整合Java测试1、创建一个普通的maven项目,引入rabbit依赖2、新建生产者3、新建消费者4、启动生产者,观察控制台,发现新增了一个hello队列,并且有一条消

2021-04-29 11:39:33 443 1

原创 JVM调优实战

JVM调优实战1、JVM基础参数配置2、JVM常用命令3、调优工具1、JVM基础参数配置-Xmx 最大堆内存-Xms 最小堆内存一般来说,在项目正式上线的时候,最大堆内存和最小堆内存需要设置成一样大小,防止JVM自动对内存自动扩展。因为JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指 定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。因此服

2021-04-12 15:40:14 240

原创 Java自定义一个有序队列

Java自定义一个有序队列1、简介与说明2、具体代码实现1、有界队列2、测试1、简介与说明这里主要是利用数组,实现一个线程安全的有界队列,不支持扩容。数据结构:这里使用的数组算法:FIFO,遵循队列先进先出原则线程安全:利用synchronized关键字加锁以及线程之间通讯确保队列安全2、具体代码实现1、有界队列/** * 定义一个线程安全有界消息队列 * 1、数据结构:数组 * 2、具体算法:FIFO,先进先出 */public class BlockContainer&lt

2021-03-29 21:11:41 417

原创 Java线程安全计数器

三种方式实现计数器1、简介说明1、简介说明这篇博客主要记录下Java在多线程情况下,集中线程安全的计数器的一个实现。主要使用了三种不同的方式实现。synchronized方式,排它锁、独占锁、非公平锁,悲观锁Lock方式,公平锁,非公平锁,悲观锁CAS自旋锁,乐观锁,效率最高代码:/** * 线程安全问题 * 计数器 */public class Counters { /** * 利用synchronized关键字控制方法的原子性 * 排它锁、独占锁、

2021-03-29 00:41:18 1314

原创 Java类加载过程

Java类加载过程1、JVM内存结构2、类的加载介绍3、类加载过程1、加载2、连接1、验证2、准备3、解析3、初始化4、总结1、JVM内存结构要了解Java类的加载过程,我们必须先了解下JVM的体系结构,这里从网上找了几张图,整体结构如下:2、类的加载介绍类的加载:指的是将类的class文件转换成二进制文件读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区域的Class对象,Class

2021-03-25 12:46:44 179

原创 观察者模式和发布订阅模式区别

观察者模式和发布订阅模式区别观察者模式和发布订阅模式区别:一、从表面上看:二、往更深层次讲:三、从使用层面上讲:四、总结:观察者模式和发布订阅模式区别:一、从表面上看:观察者模式里,只有两个角色 —— 观察者 + 被观察者而发布订阅模式里,却不仅仅只有发布者和订阅者两个角色,还有一个经常被我们忽略的 —— 经纪人Broker二、往更深层次讲:观察者和被观察者,是松耦合的关系发布者和订阅者,则完全不存在耦合三、从使用层面上讲:观察者模式,多用于单个应用内部发布订阅模式,则更多的是一种跨

2021-03-24 18:06:33 208

原创 观察者模式

观察者模式1、观察者模式介绍2、使用场景以及例子1、简单的使用2、扩展使用--公司业务与汇率3、通过Java自带的类实现观察者3、总结1、观察者模式介绍观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式是一种对象行为型模式,其主要优点如下。降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。符合依赖倒置原则。目标与观察者

2021-03-24 17:39:09 177

原创 单例设计模式

单例设计模式1、单例设计模式介绍2、几种实现单例的方式1、懒汉式,线程不安全2、懒汉式,线程安全3、饿汉式,线程安全5、登记式/静态内部类6、枚举3、应用场景1、单例设计模式介绍单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。一个对象。注意:

2021-03-18 18:11:49 45

原创 JVM内存结构

JVM内存结构

2021-03-03 17:14:11 43 1

原创 spring获取容器中的对象

spring获取容器中的对象一、代码工具类二、使用三、注意事项以及说明一、代码工具类package com.feifan.study.util;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.sprin

2021-03-03 17:09:27 2294 2

原创 公匙私匙加密解密

前言:前段时间刚好做了一个统一支付微服务版的项目,这里记录一下我曾今踩过的一些坑以及一些和银行打交道的经验。正文:今天说下银行接口中的加密和签名,加密我相信大家都听到过,无非就是对称加密和非对称加密,当然,MD5除外,这个东西加密后时不能逆向的,即明文加密后的内容不能重新解析成明文,哈哈。扯皮扯完了,说说正事,一般我们对接银行的接口,银行会提供一个接口文档给我们,有的银行比较人道,...

2019-03-15 15:16:07 2579

转载 Common IO 使用小结

转 【跟我学apache-commons】【四】commons-io的使用 2015年07月03日 16:43:34 chenjazz 阅读数:6980 ...

2019-03-12 16:19:33 6567 1

原创 Java密匙库(keystore)的基础知识

一、keystore是什么keystore是java的密钥库,用来进行通信加密用的,比如数字签名;还有用来保存密钥对的,比如公钥和私钥。一般多用作银行接口相关,保证通讯安全。keystore一般格式为json格式,类似如下:二、利用keystore签名   ...

2019-02-12 17:40:13 3397

原创 Java中SSL认证&认识SSL和TLS协议

简介:SSL(Secure Sockets Layer)为安全套阶层,TLS(Transport Layer Security)为传输安全层,两者是为网络通信提供安全及数据完整性的一种安全协议,TLS&amp;SS在传输层对网络进行加密。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol...

2019-02-12 14:11:35 1282

原创 Java自定义注解的实现与使用

前言:今天聊的是注解,但其实单纯说注解,注解本身没有任何的作用。简单说和注释没啥区别,而它有作用的原因是:注解解释类,也就是相关对代码进行解释的特定类。一般这些类使用反射是可以拿到的。因此,通过注解和反射这两者的结合使用,是可以做到很多功能的。不知道各位小伙伴有没有留意过,很多框架都是使用了注解。如果再深入的看一看源码就会发现,很多注解是和反射一起使用的。因此今天咱们也让通过注解+反射...

2019-02-11 16:21:49 184

空空如也

空空如也

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

TA关注的人

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