5 东天里的冬天

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 3k+

解决——并发请求丢失header请求头

前段时间在工作的过程中发现并发调用的情况下,部分请求会丢失请求头的部分信息,故在此做下记录自定义Runnable注意RequestAttributes这个字段,是解决问题的关键所在@Slf4jpublic class TaskRunnable implements Runnable { private String taskName; private Runnable runnable; private Map<String, String> con.

2020-08-10 19:51:50

JetCache获取lettuce客户端

JetCache目前支持两种redis客户端,分别是jedis和lettuce,由于自身一些需求,原生的jetCacheAPI满足不了需求,故需要在此基础上使用redis客户端作为支持,目前公司在Apollo上配置了Lettuce客户端,故本文以lettuce客户端为例。新增一个redis配置类import com.alicp.jetcache.autoconfigure.LettuceFactory;import com.alicp.jetcache.autoconfigure.Redi.

2020-06-12 18:27:27

JetCache动态修改name

背景公司因为自己封装的redisUtils查询缓慢,换用了阿里JetCache。由于目前公司基础架构组尚未提供一些查询线上数据的redis小工具,故决定自己封装一个。JetCache基础属性有area,name,key等,area主要用于连接多个缓存系统,故暂时无需考虑,在这个过程中需要考虑的是name,根据官方文档描述,name:指定缓存的名称,不是必须的,如果没有指定,会使用类名+方法名。name会被用于远程缓存的key前缀。另外在统计中,一个简短有意义的名字会提高可读性。如果两个@Cre

2020-06-11 18:09:22

Redis常见问题及通俗易懂的解决方案

缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。缓存正常从Redis中获取,示意图如下:缓存失效瞬间示意图如下:缓存失效...

2020-04-08 17:56:09

基于注解实现通用日志打印

前言最近做项目发现公司所有接口打印日志都需要打印接口调用时间,接口中每次写这段代码实在恶心,故基于面向切面编程使用注解解决该问题。1.定义注解value为对应的接口名称,默认为BaseController@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface OwnL...

2019-12-17 16:49:30

用设计模式消除大量if-else

前言先来看张经典的啊都给神图,感受下大量if-else的“魅力”有时候业务上的拖拉可能要求我去写出如上的多层if-else嵌套代码,如果你碰上了一个对团队成员要求相对比较严格的主管的话,那么恭喜你,死定了……脾气比较爆的大佬可能直接就跟你说要么解决上面问题,要么收拾包袱滚蛋了。那上述代码能否用设计模式相关解决呢,答案是:YES,可以用策略模式+工厂模式。限于本文篇幅,上述的两种...

2019-12-03 09:41:42

上传读取Excel文件内容并入库

需求:读取前端上传的Excel,将数据入库,本工具类仅读取文件内容,不涉及到入库。当然,既然已经拿到了数据,那入库轻而易举。package com.xx.utils;import lombok.extern.slf4j.Slf4j;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.us...

2019-11-14 14:14:36

springboot干货——自定义健康检查指标

springboot——汇总篇前言在系统运行过程中我们需要监控系统运行是否正常,而有时因为系统或者需求的特殊之处,我们需要自定义相关健康指标用以监测我们的系统。本篇博客主要带大家了解下相关内容,不做深入探讨,有兴趣的可以百度。健康检查有两种方式查看,一种是http,另一种是JMX,http方式很好理解,JMX一般可以用jdk的bin目录下的jconsole工具YES表示默认使...

2019-10-28 21:47:36

springboot干货——(十七【二】)读取自定义properties文件

springboot专栏汇总1.目录结构2.pom.xml<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> ...

2019-10-28 20:49:10

SpringCloud教程 | 二.Nacos服务配置与发现

配置管理示例代码:nacos-spring-boot-config-example1.启动Nacos Server2.pom文件添加依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> ...

2019-09-10 17:28:39

SpringCloud教程 | 一.初识并安装Nacos

Nacos官方文档Nacos用途Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式)的服务基础设施。什么是Nacos服务(Service)是 Na...

2019-09-10 16:58:13

springboot——Spring下动态选择接口实现类(以多方式动态查询maxcompute为例)

前言最近有个需求是需要通过数据源类型来动态切换数据源的操作,所有配置通过读取配置文件获取。与一般的选择实现类最大的区别是本文是动态选择,不需要通过@Qualifier注释写死实现类。看了下网上相关资料较少,且存在部分不一定正确的情况,故写此篇博客以作记录,也希望碰到此问题的小伙伴能够少走弯路。注:本文以postgresql和maxcompute官方SDK两种查询方式查询maxcompute...

2019-07-24 14:54:49

mybatis获取自增长id

需求mybatis在插入数据的同时获取自增长id的值以供接下来的业务使用;代码mapperpublic interface CustomizedConditionMapper { //插入数据并返回当前id int insertSelective(CustomizedConditionPO customizedConditionPO);}mapp...

2019-05-24 14:27:59

springboot——工具类中使用@Value给静态变量注入值

在SpringBoot中使用@value注解只能给普通变量注入值,不能直接给静态变量赋值,直接给静态变量赋值的话这些值会一直为null。解决方案:若要给静态变量赋值,可以使用set()方法,首先在对应的类上加上@Component注解,在set方法上使用value注解(注意set方法不是静态的,否则无法赋值),如下:@Componentpublic class Datahub {...

2019-04-16 13:52:12

mybatis返回复合类型参数

返回的数据模型package com.imooc.myo2o.entity; import java.util.Date;import java.util.List; public class Shop { private Long shopId; private Long ownerId; private Long shopCategoryId; private St...

2019-04-13 11:16:49

springboot扩展机制——spring factories

前言最近给公司的数据中心做接口服务,在服务中需要给服务消费者设置熔断返回内容,即像dubbo那样,提供对应的jar包给消费者,具体代码如下图,在这个过程中就涉及到了spring.factories文件的处理,之前对其内容一知半解,趁此机会了解了下,以作记录。简介Spring Boot中有一种非常解耦的扩展机制:Spring Factories。这种扩展机制实际上是仿照Java中的S...

2019-04-12 17:50:53

springboot源码分析——SpringBoot的启动过程

启动类SpringBoot的启动很简单,代码如下: @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); ...

2019-04-12 17:18:55

springboot干货——(十二【二】)springboot整合postgresql(maxcompute多数据源)

前言应最近公司项目需要,需要将部分数据量特别大的查询直接走阿里的maxcompute,小数据量的查询走mysql,故在原来的项目上集成了多数据源。关于springboot多数据源的整合可以参考之前的博客springboot干货——(十二)多数据源配置之mybatis,本篇博客主讲如何通过mybatis集成maxcompute1.pom.xml中加入相关依赖<!--postg...

2019-03-12 15:07:19

ElasticSearch教程——基于completion suggest实现搜索提示

ElasticSearch汇总请查看:ElasticSearch教程——汇总篇 前言completion suggest也叫自动完成,搜索推荐,搜索提示 ,一般多叫自动完成,即auto completion。比如说我们在百度,搜索,你现在搜索“大话西游” --> 百度,自动给你提示,“大话西游电影”,“大话西游小说”, “大话西游手游”等,不用你把所有你想要输入的文本都输入...

2019-02-05 11:45:07

ElasticSearch教程——使用search template将搜索模板化

ElasticSearch汇总请查看:ElasticSearch教程——汇总篇 前言搜索模板,search template,高级功能,就可以将我们的一些搜索进行模板化,然后的话,每次执行这个搜索,就直接调用模板,给传入一些参数就可以了。 常用情况比如说,一般在大型的团队中,可能不同的人,都会想要执行一些类似的搜索操作这个时候,有一些负责底层运维的一些同学,就可以基于se...

2019-02-04 16:51:08

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。