自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于 Docker 的 MySQL 主从复制搭建(Mac M1版本)

File和Position设置不对,需要重新去mysql_master里面查看。

2023-08-30 14:28:55 736 1

原创 Java接入支付宝支付

springboot接入支付宝app支付

2023-08-22 20:10:37 645

原创 Java,图片添加二维码和文字水印,合并为一张图

在开发时需要将图片和文字和二维码合并成一张图

2023-03-09 20:27:16 844

原创 ThreadLocal异步线程池传值

准备工作详细准备请看我上一篇文章《ThreadLocal在不同线程中的传递》1)引入依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/transmittable-thread-local --> <dependency> <groupId>com.alibaba</groupId> <artifactId&g

2021-04-27 20:46:02 1193 1

原创 MySQL 日期加减天数

增加时间DATE_ADD(),ADDDATE(),ADDTIME()以DATE_ADD()示范,NOW()表示当前时间SQL语句含义select date_add(now(), interval 1 day);加1天select date_add(now(), interval 1 hour);加1小时select date_add(now(), interval 1 minute);加1分钟select date_add(now(), interval

2021-04-25 09:53:24 2355

原创 ThreadLocal在不同线程中的传递

在工作中遇到了一个ThreadLocal传值问题。因为公司业务有一个接口非常慢,所以想着使用异步的方法进行优化但是因为业务中有redis分布式锁,而锁的值是用ThreadLocal来存储的,所以异步后会导致值丢失,锁无法释放才有了本篇文章,研究ThreadLocal如何在不同线程中传递首先来说一下线程传值的问题现象解决方案介绍同一线程之间传递值ThreadLocal给线程提供一个本地变量,当线程消失的时候,所有的本地示例都会被回收父子线程之间传递值Inherit.

2021-04-22 16:49:54 1302

原创 比POI好用的EasyExcel简单使用记录

今天看到了一篇文章说了POI和EasyExcel的区别(说的是EasyExcel是基于java的简单、省内存的Excel,),因为我只用过POI,所以想试一下EasyExcel如何使用,所以才有了这篇文章EasyExcel的官方文档地址:https://www.yuque.com/easyexcel/doc/easyexcel1、引入依赖 <dependencies> <dependency> <groupId>org.s.

2021-02-07 20:31:06 516

原创 SpringData JPA 中findAll 进行OrderBy排序

今天用实现一个查询全部列表倒序的功能时踩了坑,所以写下这篇文章来记录1. 出问题的写法List<T> findAllOrdeByTimeDesc();2.报错信息 No property desc found for type Date! 3.正确写法List<T> findAllByOrdeByTimeDesc();需要在findAll后面再加上一个By...

2021-01-12 20:05:13 5752 2

原创 MybatisPlus 代码生成器

近来项目中用到了MybatisPlus,顺带研究了一下代码生成器所以就有了这篇博客,用来记录一下1.引入依赖<!--代码生成--> <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator --><dependency> <groupId>com.baomidou</groupId> <artifactId>.

2020-12-25 11:58:01 134 2

原创 解决Java8 分组groupingBy 后排序不变的问题

在工作中遇到了java8 stream groupBy 分组排序失效的问题在此记录一下解决方案预期效果: 按照年纪倒序并分组实际结果:返回的数据是杂乱无章,并没有按照年纪倒序示例代码如下:import java.util.Comparator;import java.util.List;import java.util.Map;import java.util.stream.Collectors;import java.util.stream.Stream;/** * @auth.

2020-12-03 20:11:02 2237 1

原创 redis分布式锁(springboot实现)

在公司的项目中用到了分布式锁,但只会用却不明白其中的规则所以写一篇文章来记录使用场景:交易服务,使用redis分布式锁,防止重复提交订单,出现超卖问题分布式锁的实现方式基于数据库乐观锁/悲观锁Redis分布式锁(本文)Zookeeper分布式锁redis是如何实现加锁的?在redis中,有一条命令,实现锁SETNX key value该命令的作用是将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。设置成功,返.

2020-11-25 19:24:34 788

原创 比Guava高效的Caffeine使用

最近了解到本地缓存有比Google开发的Guava效率更高的Caffeine,所以有了本篇文章简单来使用了解一下Caffeinegithub官方地址:https://github.com/ben-manes/caffeine/环境配置:JDK:1.8Caffeine 版本:2.8.6springboot版本:2.4.01. Caffeine 性能图2. Caffeine 配置说明参数类型描述initialCapacityinteger初始的缓存空间大小.

2020-11-23 18:46:46 518

原创 单例模式的4种写法,你知道吗?

单例模式1. 懒汉式/** * 懒汉式 * * @author by miao * @date 2020/11/9 11:46 */public class SingletonOne { private static SingletonOne instance; /** * 私有化类的构造器,让外部无法调用 */ private SingletonOne() { } public static SingletonOne get

2020-11-10 11:08:07 148

原创 jdk1.8 flatMap使用

用法:Stream.of(T… values).flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)基本数据类型import java.util.ArrayList;import java.util.Collection;import java.util.List;import java.util.stream.Collectors;import java.util.stream.St.

2020-10-23 20:28:46 1483

原创 线程实现的三种方式其实是同一种?

“从我实习面试开始就有在面试中遇到过这个问题:创建线程有几种方法记得当时的回答是:在jdk1.5之后有三种创建方式1.继承Thread类2.实现Runnable接口3.实现Callable接口工作之后回顾这个问题就会想到,这三种方式的不同点在哪呢?所有有了探究的这篇文章虽然网上已经有很多文章珠玉在前,但是我还是想写一篇我自己的文章,如果写的不好,请见谅先来实现最基本的创建线程的三种方式吧1.继承Thread类/** * @author miao */public class Th

2020-09-24 19:36:06 188

原创 go入门一:简介与环境安装

“关于学习Go语言,我想说的是,既有公司的业务中有关于go的部分,也有为自己的发展道路上添砖加瓦的想法,毕竟多点一个技能树总是好的Go的简介:“Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放

2020-09-21 10:01:14 119

原创 Java值传递证明

从我实习面试开始就有在面试中遇到过这个问题:Java是值传递还是引用传递?当时的我只会背背面试题,但是网上的答案有些还是错的,导致我决心写这一篇文章。虽然网上已经有很多文章珠玉在前,但是我还是想写一篇我自己的文章,如果写的不好,请见谅文章开始之前我们还是来解答Java是值传递还是引用传递?这个问题吧!答案自然是:Java是值传递给定结论后我们再来解释一下什么叫 值传递&引用传递值传递:值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到.

2020-09-15 14:16:16 243

原创 计算两个日期之间相差天数与小时

import java.time.Duration;import java.time.LocalDateTime;import java.time.ZoneId;import java.util.Date;/** * @author miao */public class DateUtils { /** * LocalDateTime convert Date * * @param localDateTime localDateTime *.

2020-09-12 16:58:23 1092

原创 gt,gte,lt,lte缩写代表的意思

最近使用到mongoTemplate时候老是忘记掉这些,所以写篇文章记录下来缩写英文翻译含义gtgreater than大于gtegreater than or equal大于等于ltless than小于lteless than or equal小于等于eqequal等于neqnot equal不等于...

2020-09-12 16:38:12 2588

原创 通过ip定位经纬度,城市与国家

因为公司最近要做一个ip查询经纬度在地图上显示的功能,而且有海外的ip,所以高德地图百度地图这些收费的api就暂时先不考虑了。寻觅了良久,终于找了一个符合我们目前需求的在线api,官网地址:https://ip-api.com/docs/api:json,还支持各种语言的返回结果哦现在来写例子吧pom.xml 加入lombok的依赖,主要是为了异常时打印日志<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok.

2020-09-08 17:21:12 2227

原创 线程池部分源码详解

ThreadPoolExecutor属性定义的解释 // Integer总共有32位,最右边29位表示工作线程数,最左边3位表示线程池状态,简单来说,3个二进制位可以表示从0至7的8个不同数值 private static final int COUNT_BITS = Integer.SIZE - 3; // 线程池的容量 2^29 - 1 = 536870911即 000-11111111111111111111111111111 private static final int C

2020-09-03 11:14:54 145

原创 二进制的与,或,左右移运算及原码补码反码

阅读源码时候发现自己对这些运算还不熟悉,所以写篇文章记录下来符号描述说明0 00 11 01 1|或两个位都为1时才为10 | 0 = 00 | 1 = 11 | 0 = 11 |1 = 1&与两个位都为0时才为00 & 0 = 00 & 1 = 01 & 0 = 01 & 1 = 1^异或两个位相同为0,不同为10 ^ 0 = 00 ^ 1 = 11 ^ 0 = 11 ^ 1 = .

2020-09-01 14:07:43 297

原创 自定义线程工厂与拒绝策略的实现

继上一篇由浅及深认识线程池,本篇文章来写自定义线程工厂与拒绝策略上一篇文章链接:由浅及深认识线程池一:自定义线程工厂创建 MyThreadFactoryimport java.util.concurrent.ThreadFactory;import java.util.concurrent.atomic.AtomicInteger;/** * 自定义线程工厂,实现自定义线程命名 * * @author miao */public class MyThreadFactory im.

2020-09-01 10:48:30 217

原创 由浅及深认识线程池

线程池一:线程池介绍1.1 概念线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程1.2 工作机制CPU将任务提交给线程池,线程池拿到任务后,在内部寻找空闲的线程来处理任务1.3 使用原因多线程运行时,频繁的进行线程的创建和销毁,会过度的消耗系统资源1.4 组成部分线程池管理器(ThreadPoolManage):用来创建并管理线程池工作线程(workThread):线程池中的线程任务队列(Queu

2020-08-30 22:32:06 144

原创 如何在springboot中使用@Value注入map,list,数组对象

1、注入mapyml文件:spring: mysql: ip: "{dev: "127.0.0.1:3306",prod: "192.168.31.321:3306"}"java代码注入:@Value("#{${spring.mysql.ip}}")private Map<String,String> map;但是有一点需要注意的是:在上面map中,一定要用””把map所对应的value包起来,要不然解析会失败,导致不能转成 Map<String,String&gt

2020-08-12 09:34:12 15109 5

原创 parallelStream reduce操作的坑

在实际项目中遇到了parallelStream().reduce数目计算错误问题,就是使用并行流计算结果偏大测试代码 @Test void testParallelStream() { List<Integer> collect = Stream.of(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9).collect(Collectors.toList()); Syste.

2020-07-15 20:39:09 1329 1

原创 redis计算两地经纬度

通过Redis拓展的GEO数据类型查询两地之间的距离最近了解到redis还有几种拓展数据类型,GEO,hyperLogLog,bitmapsGEOGEOADD locations 116.419217 39.921133 beijinGEOPOS locations beijinGEODIST locations tianjin beijin km 计算距离GEORADIUSBYMEMBER locations beijin 150 km 通过距离计算城市注意:没有删除命令 它的本质

2020-07-13 20:20:01 727

原创 LocalDateTime获取上一个时间点和下一个时间点

LocalDateTime获取上一个时间点和下一个时间点//获取下一个时间点,如现在为15:30,上一个整点时间点为,16:00LocalDateTime.now().plusHours(1) .toLocalDate().atTime(LocalDateTime.now().plusHours(1).getHour(), 0, 0);//获取上一个时间点,如现在为15:30,上一个整点时间点为,15:00LocalDateTime.now().minusHours

2020-07-11 16:00:12 5450 2

原创 Hexo个人博客之yilia主题阅读量和文章字数统计

前言:关于yilia的配置修改我已近写在上一篇文章中了,本文章主要讲的是文章阅读量和文章字数统计1. 添加不蒜子统计文章访问量打开D:\blog_hexo\themes\yilia\layout\_partial\footer.ejs,用以下代码替换<footer id="footer"> <div class="outer"> <div id="footer-info"> <div class="footer-left"> .

2020-06-26 19:08:45 717

原创 Hexo个人博客之yilia主题的安装和配置

前言,本篇文章讲述的是yilia主题的安装与配置,关于hexo的安装及github部署可以去看我的上一篇文章Hexo yilia主题搭建自己的github个人博客(一)1.yilia主题的安装(在文件夹目录下使用git bash) git clone http://github.com/litten/hexo-theme-yilia.git themes/yilia2.打开D:\blog_hexo\_config.yml修改主题更改后重新运行hexo s -g 命令,查看本地效果.

2020-06-26 15:34:03 707 4

原创 Hexo个人博客之hexo的安装与部署

前言:本文章的前提是默认你已经安装了git,node,npm,电脑也与github建立 了联系1. 在D盘下创建"blog_hexo"文件夹并查询自己电脑是否已经安装好需要的东西2.安装淘宝镜像源(如果错误就重来,因为连接可能不稳定,不要害怕多试几次就可以了)npm install -g cnpm --registry=https://registry.npm.taobao.org3.安装Hexo (如果失败重新来过就可以了)cnpm install -g hexo-c.

2020-06-26 10:19:49 686

原创 记录 Linux安装MongoDB

记录 Linux安装MongoDB环境:服务器:阿里云CentOS 7MongoDB版本: 4.2.71.官网下载官网链接可以通过下tag或者通过wget下载2.解压//解压tar -zxvf mongodb-linux-x86_64-rhel70-4.2.7.tgz//重命名mv mongodb-linux-x86_64-rhel70-4.2.7 mongodb3.创建专门的负责的用户并赋予权限cd /usr/local/mongodb groupadd mongod

2020-05-25 19:45:16 140

原创 win10 安装 Navicat Premium 15

安装步骤一步一步来就可以了https://www.yuque.com/docs/share/77781a71-148c-48d2-9706-56cae8153796?#

2020-05-16 14:49:49 760

原创 MybatisPlus 批量更新 异常 java.sql.SQLException: sql injection violation, multi-statement

前言:使用MybatisPlus批量更新数据库时抛异常:java.sql.SQLException: sql injection violation, multi-statement找到报错的sql: <select id="batchUpdateCategory"> <foreach collection="list" item="bean" index="index" open="" close="" separator=";"> .

2020-05-15 13:55:11 2096

原创 SpringBoot整合SpringEmail 批量发送邮件

SpringBoot整合SpringEmail 批量发送邮件前言:公司目前有个业务就是向订阅了客户发送邮件,所以我把这块的内容记录下来1.引入依赖 <!-- email--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail

2020-05-08 19:18:09 3483 3

原创 IDEA maven 项目修改后代码不生效,需要mvn install 后才生效

IDEA maven 项目修改代码不生效,mvn clean、install 后才生效场景:正常情况下修改完代码,运行项目就会立即生效的。但是突然有一天发现运行的还是老的代码,新代码根本没有生效。通过 mvn clean、 install 后,再运行就可以了,但是这样明显是不正常的,而且也非常麻烦。解决方案:1.重新 import project 导入项目,就可以解决问题2.删除.ide...

2020-04-27 11:50:04 8962 13

原创 记录在项目中乐观锁的简单使用

记录在项目中乐观锁的简单使用前言:项目中有一个商品表,当购买商品表的时候份额会减一,当有多个购买请求时,可能会出现超卖现象,所以为了避免这个问题,我们就简单的用来乐观锁(毕竟是个小项目)我们工作用的是spring data jpa ,所以就是在实体类中使用加上一个@Version注解实体类 MallProduct@Data@Entity@DynamicUpdate@Accesso...

2020-04-10 15:48:19 583

原创 阿里云Linux服务器安装docker

阿里云Linux服务器安装docker1. 查看Linux服务器内核版本(docker要求CentOS系统内核版本高于3.10)uname -r2. 确保yum包更新到最新yum update因为我已经更新过了,小伙伴执行这个命令后让你确认是否安装,直接Y就行了3. 卸载旧版本docker(如果已经安装过旧版本的话)yum remove docker docker-comm...

2020-04-07 09:57:34 809

原创 免费分享jdk1.8中文API文档

免费分享jdk1.8中文API文档网盘地址:链接:https://pan.baidu.com/s/1tERl218P2DvW1ZZUSX2l-w提取码:77l9

2020-04-03 09:42:00 296

原创 记录使用redis过期回调解决订单超时问题

记录使用redis过期回调解决订单超时问题此文章主要是之前一篇文章的拓展,上一篇文章说到,订单超时有三种处理方法,这篇文章记录的就是第二种解决方法上一篇文章地址记录使用rabbit mq处理订单超时业务下面开始实际操作修改redis相关事件配置,添加 notify-keyspace-events Ex直接修改redis.conf文件或者使用RedisDesktopManag...

2020-04-02 09:39:07 1744

空空如也

空空如也

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

TA关注的人

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