自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql新增

数据库新增

2022-06-22 18:17:13 284

原创 自定义Mybatis拦截器 与PageHelper插件冲突问题

拦截器失效

2022-04-28 10:20:49 1893

原创 stringboot 集成redisTemplate并开启过期回调

stringboot 集成redisTemplate并开启过期回调1 引入pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>2.添加配置文件# redi

2021-10-20 10:43:24 893

原创 二分法查询数组

二分法查询数组二分搜索是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。package com.runlion.ehm.admin.service;/** * @author gongxp * @description * @d

2021-08-06 11:46:06 282

转载 Java必会的工具库

1. Java自带工具方法1.1 List集合拼接成以逗号分隔的字符串// 如何把list集合拼接成以逗号分隔的字符串 a,b,cList<String> list = Arrays.asList("a", "b", "c");// 第一种方法,可以用stream流String join = list.stream().collect(Collectors.joining(","));System.out.println(join); // 输出 a,b,c// 第二种方法,其实S

2021-07-19 09:36:32 105

原创 springboot启动加载

1: 定义一个类 implements ApplicationRunner, Ordered

2021-07-07 16:11:39 132

转载 springboot项目中访问druid内置监控页面

1、首先加入druid依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId><version>1.1.9</version>2、设置配置文件:# 数据库访问配置# 主数据源,默认的spring.datasource.type=com.alibaba.drui

2021-06-07 11:29:19 543

原创 一个注解搞定接口防刷!

说明:使用了注解的方式进行对接口防刷的功能,非常高大上,第一个版本,欢迎同事提出批评意见技术要点:springboot的基本知识,redis基本操作。第一步: 写一个注解类@Retention(RUNTIME)@Target(METHOD)public@interface AccessLimit {int seconds();int maxCount();boolean needLogin()default true;}```第二步: 就是在Interceptor拦截器中实现``

2021-03-02 14:51:23 180

转载 kill -9 命令在分布式系统中的缺点

kill -9 命令在分布式系统中的缺点我相信很多人都用过kill -9 pid 这个命令,彻底杀死进程的意思,一般情况我们使用它没有上面问题,但是在我们项目中使用它就有可能存在致命的问题。由于kill -9 属于暴力删除,所以会给程序带来比较严重的后果,那究竟会带来什么后果呢?举个栗子:转账功能,再给两个账户进行加钱扣钱的时候突然断电了?这个时候会发生什么事情?对于InnoDB存储引擎来说,没有什么损失,因为它支持事务,但是对于MyISAM引擎来说那简直就是灾难,为什么?假如给A账户扣了钱,现在需要

2021-01-16 10:10:52 504

原创 分布式锁到底用Redis和Zookeeper那个好用

redis 实现分布式锁:首先redis是单线程的,即一个线程处理所有网络请求,其他模块仍用了多个线程.1,第一种就是在set完key之后,直接设置key的有效期 ,为key设置一个超时时间,单位为second,超过这个时间锁会自动释放,避免死锁.这种方式相当于,把锁持有的有效期,交给了redis去控制.如果时间到了,那redis就直接给你删了,其他服务器就可以继续去setnx获取锁.2,第二种方式,就是把删除key权利交给其他的服务器,那这个时候就需要用到value值了,比如服务器1,设置了va

2020-11-28 13:35:26 410

原创 解决SimpleDateFormat 线程安全三种方法

##题目:在多线程环境下,SimpleDateFormat 是线程安全的吗?不是,非常不幸,DateFormat 的所有实现,包括 SimpleDateFormat 都不是线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中使用,如 将 SimpleDateFormat 限制在 ThreadLocal 中。如果你不这么做,在解析或者格式化日期的时候,可能会获取到一个不正确的结果。因此,从日期、时间处理的所有实践来说,我强力推荐 joda-time 库。发问题的根源。想象一下,在一个多线

2020-10-12 15:39:38 481

原创 mybatisPlus简答配置

mybatisPlus 自动set 创建人 创建时间mybatisPlus在久层框架中还是比较火的,虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。这里就不说是使用方法了,简单说几个使用配置1 自动set id可以创建一个实体类 实现 IdentifierGenerator 画布多说,上代码/** * @author gongxp * @desc

2020-09-18 11:01:12 216

原创 Stream流入门

说到Stream便容易想到I/O Stream,而实际上,谁规定“流”就一定是“IO流”呢?在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。流式思想类似于工厂车间的“生产流水线”。这张图中展示了过滤、映射、跳过、计数等多步操作,这是一种集合元素的处理方案,而方案就是一种“函数模型”。图中的每一个方框都是一个“流”,调用指定的方法,可以从一个流模型转换为另一个流模型。而最右侧的数字3是最终结果。当使用一个流的时候,通常包括三个基

2020-09-15 14:53:33 228

原创 ThreadLocal配合登录使用

很多系统登录之后会把用户信息存到rides中,因为代码中要获取当前登录人,获取当前登录人的方法是前端传过来token,解析token来获取缓存的中用户信息,方法很多,大概都离不开token如果单纯从请求里面获取token,那子线程是获取不到当前登录人的,所以,可以把tokne存到ThreadLocal里面实现代码如下:public class TokenHolder {private static final ThreadLocal<String> CACHE = new Inheri

2020-09-15 14:37:21 618

原创 为什么 Java 中“1000==1000”为false,而”100==100“为true?这是一个挺有意思的讨论话题。

如果你运行下面的代码:Integer a = 1000, b = 1000;System.out.println(a == b);//1Integer c = 100, d = 100;System.out.println(c == d);//2你会得到falsetrue基本知识我们知道,如果两个引用指向同一个对象,用表示它们是相等的。如果两个引用指向不同的对象,用表示它们是不相等的,即使它们的内容相同. 即 == 实际比较的是地址值.因此,后面一条语句也应该是false .这就是它有

2020-09-15 14:25:45 108

转载 UUID订单单号生成器

UUID订单单号生成器/** 订单号生成(NEW) **/private static final AtomicInteger SEQ = new AtomicInteger(1000);private static final DateTimeFormatter DF_FMT_PREFIX = DateTimeFormatter.ofPattern(“yyMMddHHmmssSS”);private static ZoneId ZONE_ID = ZoneId.of(“Asia/Shanghai”

2020-09-15 14:13:43 905 1

原创 单号生成器

##RedisTemplate单号生成器描述因为redis是线程安全的,所以可以用redis作为单号生成器代码如下/**@author gxp@description 单号生成器@date 2018/8/31 10:45*/public class OrderNoUtil {private static RedisTemplate<String, Object> redisTemplate;static {if (null == redisTemplate)

2020-09-15 14:06:36 656

空空如也

空空如也

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

TA关注的人

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