随笔分类 -  springboot

摘要:前言 限流是分布式系统设计中经常提到的概念,在某些要求不严格的场景下,使用Guava RateLimiter就可以满足。但是Guava RateLimiter只能应用于单进程,多进程间协同控制便无能为力。本文介绍一种简单的处理方式,用于分布式环境下接口调用频次管控。 如何防止恶意IP攻击某些暴露的接 阅读全文
posted @ 2020-03-29 19:30 hjzqyx 阅读(2316) 评论(1) 推荐(0) 编辑
摘要:国际化信息理解 国际化信息也称为本地化信息 。 Java 通过 java.util.Locale 类来表示本地化对象,它通过 “语言类型” 和 “国家/地区” 来创建一个确定的本地化对象 。举个例子吧,比如在发送一个具体的请求的时候,在header中设置一个键值对:"Accept-Language" 阅读全文
posted @ 2019-09-16 09:09 hjzqyx 阅读(9501) 评论(0) 推荐(0) 编辑
摘要:上一篇(基于zookeeper实现分布式配置中心(一))讲述了zookeeper相关概念和工作原理。接下来根据zookeeper的特性,简单实现一个分布式配置中心。 配置中心的优势 1、各环境配置集中管理。 2、配置更改,实时推送,jvm环境变量及时生效。 3、依靠配置变更,动态扩展功能,减少二次上 阅读全文
posted @ 2019-06-06 16:43 hjzqyx 阅读(4243) 评论(14) 推荐(2) 编辑
摘要:前两篇(Spring MVC源码——Root WebApplicationContext 和 Spring MVC源码——Servlet WebApplicationContext)讲述了springmvc项目创建上下文的过程,这一篇带大家了解一下springboot项目创建上下文的过程。 Spri 阅读全文
posted @ 2019-05-13 09:13 hjzqyx 阅读(3108) 评论(0) 推荐(1) 编辑
摘要:一、前言 最近做了电子发票的需求,分省开票接口和发票下载接口都有一定的延迟。为了完成开票后自动将发票插入用户微信卡包,目前的解决方案是利用线程池,将开票后插入卡包的任务(轮询分省发票接口,直到获取到发票相关信息或者轮询次数用完,如果获取到发票信息,执行发票插入微信卡包,结束任务)放入线程池异步执行。 阅读全文
posted @ 2019-04-06 23:08 hjzqyx 阅读(2088) 评论(3) 推荐(0) 编辑
摘要:一、Spring异步调用底层原理 开启异步调用只需一个注解@EnableAsync @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(AsyncConfigurationSelector 阅读全文
posted @ 2019-03-18 17:50 hjzqyx 阅读(3395) 评论(0) 推荐(2) 编辑
摘要:一、前言 本文章所讲并没有基于Aspectj,而是直接通过Cglib以及ProxyFactoryBean去创建代理Bean。通过下面的例子,可以看出Cglib方式创建的代理Bean和ProxyFactoryBean创建的代理Bean的区别。 二、基本测试代码 测试实体类,在BPP中创建BppTest 阅读全文
posted @ 2019-03-03 00:50 hjzqyx 阅读(4682) 评论(7) 推荐(2) 编辑
摘要:前言 之前研究了一下如何使用ScheduledThreadPoolExecutor动态创建定时任务(Springboot定时任务原理及如何动态创建定时任务),简单了解了ScheduledThreadPoolExecutor相关源码。今天看了同学写的ThreadPoolExecutor 的源码解读,甚 阅读全文
posted @ 2019-02-12 14:13 hjzqyx 阅读(560) 评论(0) 推荐(0) 编辑
摘要:一、前言 上周工作遇到了一个需求,同步多个省份销号数据,解绑微信粉丝。分省定时将销号数据放到SFTP服务器上,我需要开发定时任务去解析文件。因为是多省份,服务器、文件名规则、数据规则都不一定,所以要做成可配置是有一定难度的。数据规则这块必须强烈要求统一,服务器、文件名规则都可以从配置中心去读。每新增 阅读全文
posted @ 2019-02-07 22:02 hjzqyx 阅读(35655) 评论(3) 推荐(6) 编辑
摘要:一、前言 最近负责支付宝小程序后端项目设计,这里主要分享一下用户会话、接口鉴权的设计。参考过微信小程序后端的设计,会话需要依靠redis。相关的开发人员和我说依靠Redis并不是很靠谱,redis在业务高峰期不稳定,容易出现问题,总会出现用户会话丢失、超时的问题。之前听过JWT相关的设计,决定尝试一 阅读全文
posted @ 2019-01-20 00:25 hjzqyx 阅读(6532) 评论(4) 推荐(2) 编辑
摘要:一、前言 最近带着两个兄弟做支付宝小程序后端相关的开发,小程序首页涉及到很多查询的服务。小程序后端服务在我司属于互联网域,相关的查询服务已经在核心域存在了,查询这块所要做的工作就是做接口中转。参考了微信小程序的代码,发现他们要么新写一个接口调用,要么新写一个接口包裹多个接口调用。这种方式不容易扩展。 阅读全文
posted @ 2019-01-10 18:42 hjzqyx 阅读(2538) 评论(2) 推荐(0) 编辑
摘要:一、前言 由于之前写过的一片文章 (java接口签名(Signature)实现方案 )收获了很多好评,此次来说一下另一种简单粗暴的签名方案。相对于之前的签名方案,对body、paramenter、path variable的获取都做了简化的处理。也就是说这种方式针所有数据进行了签名,并不能指定某些数 阅读全文
posted @ 2018-12-26 13:51 hjzqyx 阅读(22460) 评论(26) 推荐(0) 编辑
摘要:CacheManager基本配置 请参考博文:springboot2.0 redis EnableCaching的配置和使用 RedisCacheManager构造函数 RedisCacheManager需要一个 RedisOperations实例,一般是RedisTemplate。还有一个不必须的 阅读全文
posted @ 2018-12-10 15:42 hjzqyx 阅读(9102) 评论(0) 推荐(0) 编辑
摘要:一、前言 高效、合理的使用hibernate-validator校验框架可以提高程序的可读性,以及减少不必要的代码逻辑。接下来会介绍一下常用一些使用方式。 二、常用注解说明 三、定义校验分组 四、定义校验Bean 请自行参考:@Validated和@Valid区别 五、validator基本使用 这 阅读全文
posted @ 2018-11-13 18:56 hjzqyx 阅读(9549) 评论(0) 推荐(4) 编辑
摘要:一、前言 公司中的项目虽然已经用了很多的新技术了,但是日志的底层框架还是log4j,个人还是不喜欢用这个的。最近项目再生产环境上由于log4j引起了一场血案,于是决定升级到log4j2。 二、现象 虽然生产环境有多个结点分散高并发带来的压力,但是消息中心上一周好多接入方接入,导致并发量一下就增多了, 阅读全文
posted @ 2018-11-09 20:50 hjzqyx 阅读(22319) 评论(0) 推荐(2) 编辑
摘要:一、接口开关功能 1、可配置化,依赖配置中心 2、接口访问权限可控 3、springmvc不会扫描到,即不会直接的将接口暴露出去 二、接口开关使用场景 和业务没什么关系,主要方便查询系统中的一些状态信息。比如系统的配置信息,中间件的状态信息。这就需要写一些特定的接口,不能对外直接暴露出去(即不能被s 阅读全文
posted @ 2018-11-04 01:08 hjzqyx 阅读(3593) 评论(0) 推荐(0) 编辑
摘要:一、前言 spring为开发人员提供了两个搜索注解的工具类,分别是AnnotatedElementUtils和AnnotationUtils。在使用的时候,总是傻傻分不清,什么情况下使用哪一个。于是我做了如下的整理和总结。 二、AnnotationUtils官方解释 功能 用于处理注解,处理元注解, 阅读全文
posted @ 2018-10-15 15:54 hjzqyx 阅读(14060) 评论(0) 推荐(5) 编辑
摘要:一、前言 javax.servlet.http.HttpServletRequestWrapper 是一个开发者可以继承的类,我们可以重写相应的方法来实现session的自定义以及缓存InputStream,在程序中可以多次获取request body的内容。 二、自定义seesion 也许大家都用 阅读全文
posted @ 2018-10-10 15:52 hjzqyx 阅读(8686) 评论(0) 推荐(1) 编辑
摘要:预祝大家国庆节快乐,赶快迎接美丽而快乐的假期吧!!! 前言 在为第三方系统提供接口的时候,肯定要考虑接口数据的安全问题,比如数据是否被篡改,数据是否已经过时,数据是否可以重复提交等问题。其中我认为最终要的还是数据是否被篡改。在此分享一下我的关于接口签名的实践方案。如果这种方案不是很好理解,请参考另一 阅读全文
posted @ 2018-09-30 12:04 hjzqyx 阅读(71484) 评论(72) 推荐(11) 编辑
摘要:一、Bean的自注册过程 二、自注册过程说明 ConfigurationClassParser解析流程 1、处理@PropertySources注解,配置信息的解析 2、处理@ComponentScan注解:使用ComponentScanAnnotationParser扫描basePackage下的 阅读全文
posted @ 2018-09-27 09:47 hjzqyx 阅读(4086) 评论(0) 推荐(1) 编辑