引言 最近由于业务的需要,需要接入下阿里云的一个接口,打开文档看了看这个接口看下来还是比简单的目测个把小时就可以搞定,但是接入的过程还是比较坎坷的.首先我看了看他给的示例,首先把阿里云文档推荐的demo下载下来,把它的例子跑起来,替换下几个必要的参数比如秘钥啥的.这些秘钥一般公司都会有专职的人员与阿里云去对接,你只要负责管他要就行了.不过也不排除也有得公司需要自己去对接阿里云.说到这里就想吐槽下,对接阿里云的时候技术支持群居然是钉钉,所以需要他们的支持就必须要下载个钉钉, 电脑上莫名的有需要多装…
一.使用场景 定时任务在开发中还是比较常见的,比如:定时发送邮件,定时发送信息,定时更新资源,定时更新数据等等... 二.准备工作 在Spring Boot程序中不需要引入其他Maven依赖 (因为spring-boot-starter-web传递依赖了spring-context模块) <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-start…
运用Spring Aop,一个注解实现日志记录 1. 介绍 我们都知道Spring框架的两大特性分别是 IOC (控制反转)和 AOP (面向切面),这个是每一个Spring学习视频里面一开始都会提到的.在日常项目中,我们也会经常使用IOC控制反转,但是却感觉AOP很少会运用到.其实AOP大有用处,甚至可以让你偷偷懒. 举一个例子,假如现在要让你记录每一个请求的请求IP,请求的方法,请求路径,请求的参数,返回参数,你会怎么做?你会想,那简单啊,我直接 log.info("xxxx")…
背景介绍 公司最近做分库分表业务,接入了 Sharding JDBC,接入完成后,回归测试时发现好几个 SQL 执行报错,关键这几个表都还不是分片表.报错如下: 这下糟了嘛.熟悉 Sharding JDBC 的同学应该知道,有很多 SQL 它是不支持的.官方截图如下: 如果要去修改这些复杂 SQL 的话,可能要花费很多时间.那怎么办呢?只能从 Sharding JDBC 这里找突破口了,两天的研究,出来了下面这个只需要加一个注解轻松解决 Sharding Jdbc 不支持复杂 SQL 的方案.…
这一周线上碰到一个诡异的BUG. 线上有个定时任务,这个任务需要查询一个表几天范围内的一些数据做一些处理,每隔十分钟执行一次,直至成功. 通过日志发现,从凌晨5:26分开始到5:56任务执行了三次,三次都因为SQL查询超时而执行失败,而诡异的是,任务到凌晨6:00多就执行成功了. 每天都是凌晨五点多失败,凌晨六点执行成功. 点开异常日志一看是这样的: 总结来说就是MySQL查询超时. 像这种稳定复现的BUG,我原以为只需三分钟能定位,没有想到却耗费了我半天的时间. 排查之路 Explain 看到…
package com.itmuch.cloud; import org.springframework.cloud.netflix.feign.FeignClient; import com.itmuch.cloud.entity.User; import com.itmuch.config.FeignConfiguration; import feign.Param; import feign.RequestLine; /** * 客户端请去 * @author Administrator…
本文主要讲解如果通过注解实现对路由中的路径进行自定义编码 背景 近期由于项目中需要,所以需要通过Feign封装一个对Harbor操作的sdk信息. 在调用的过程中发现,当请求参数中带有"/"时,Feign默认会将"/"当成路径去解析,而不是当成完整的一个参数解析,实例如下 请求路径为:api/v2.0/projects/{projectName}/repositories 注解参数为:@PathVariable("projectName") 正常…
@Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性.如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic    示例:    //根据birth计算出age属性    @Transient    public int getAge() {    return getYear(new Date()) - getYear(birth);    } 这个东东还是挺有用的.Hibernate的一个注释 @Tr…
在前面的博客中,我给大家演示了使用 @SentinelResource 定义资源完成限流的例子, 下面就从源码解析开始,看下SentinelResource是如何实现限流的,以及@SentinelResource提供了哪些功能,支持哪些属性. @SentinelResource可以说是Sentinel学习的突破口,搞懂了这个注解的应用, 基本上就搞清楚了 Sentinel 的大部分应用场景. 一.@SentinelResource 解析 Sentinel 提供了 @SentinelResourc…
一.说明 单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼.本文主要介绍 同域 和 跨域 两种不同场景单点登录的实现原理,并使用 Spring Security 来实现一个最简单的跨域 SSO客户端 .   二.原理说明 单点登录主流都是基于共享 cookie 来实现的,下面分别介绍 同域 和 跨域 下的两种场景具体怎样实现共享 cookie 的 2.1. 同域单点登录 适用场景:都是企业自己的系统,所有系统都使用同一个一级域名通过不同的…