自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Springboot国际化信息(i18n)解析

国际化信息理解国际化信息也称为本地化信息 。 Java 通过 java.util.Locale 类来表示本地化对象,它通过 “语言类型” 和 “国家/地区” 来创建一个确定的本地化对象 。举个例子吧,比如在发送一个具体的请求的时候,在header中设置一个键值对:"Accept-Language":"zh",通过Accept-Language对应值,服务器就可以决定使用哪一个区域的语...

2019-09-16 09:09:00 545

转载 基于RobotFramework实现自动化测试

Java + robotframework + seleniumlibrary使用Robot Framework Maven Plugin(http://robotframework.org/MavenPlugin/)执行自动化测试chromedriver下载: http://chromedriver.storage.googleapis.com/index.htmlchrome...

2019-08-11 15:58:00 611

转载 Redis分布式锁实战

背景目前开发过程中,按照公司规范,需要依赖框架中的缓存组件。不得不说,做组件的大牛对CRUD操作的封装,连接池、缓存路由、缓存安全性的管控都处理的无可挑剔。但是有一个小问题,该组件没有对分布式锁做实现,那就要想办法依靠缓存组件自己去实现一个分布式锁了。什么,为啥要自己实现?有现成的开源组件直接拿过来用不就行了,比如Spring-Integration-Redis提供Redis...

2019-08-05 08:43:00 451

转载 基于zookeeper实现分布式配置中心(二)

  上一篇(基于zookeeper实现分布式配置中心(一))讲述了zookeeper相关概念和工作原理。接下来根据zookeeper的特性,简单实现一个分布式配置中心。配置中心的优势1、各环境配置集中管理。2、配置更改,实时推送,jvm环境变量及时生效。3、依靠配置变更,动态扩展功能,减少二次上线带来的成本。4、减少开发人员、运维人员修改配置带来的额外开销。...

2019-06-06 16:43:00 301

转载 基于zookeeper实现分布式配置中心(一)

    最近在学习zookeeper,发现zk真的是一个优秀的中间件。在分布式环境下,可以高效解决数据管理问题。在学习的过程中,要深入zk的工作原理,并根据其特性做一些简单的分布式环境下数据管理工具。本文首先对zk的工作原理和相关概念做一下介绍,然后带大家做一个简单的分布式配置中心。zookeeper介绍  zookeeper是一个分布式协调框架,主要是解决分布式应用中经常遇...

2019-05-19 09:07:00 143

转载 Springboot源码——应用程序上下文分析

  前两篇(Spring MVC源码——Root WebApplicationContext和 Spring MVC源码——Servlet WebApplicationContext)讲述了springmvc项目创建上下文的过程,这一篇带大家了解一下springboot项目创建上下文的过程。SpringApplication引导类SpringApplication类用于启动或者...

2019-05-13 09:13:00 131

转载 Spring MVC源码——Servlet WebApplicationContext

上一篇笔记(Spring MVC源码——Root WebApplicationContext)中记录了下 Root WebApplicationContext 的初始化代码.这一篇来看 Servlet WebApplicationContext 的初始化代码DispatcherServlet是另一个需要在web.xml中配置的类, Servlet WebApplicationC...

2019-05-07 13:16:00 122

转载 Spring MVC源码——Root WebApplicationContext

Spring MVC源码——Root WebApplicationContext  打算开始读一些框架的源码,先拿 Spring MVC 练练手,欢迎点击这里访问我的源码注释, SpringMVC官方文档一开始就给出了这样的两段示例:WebApplicationInitializer示例:public class MyWebApplicationInitializer i...

2019-05-06 15:22:00 154

转载 线程池优化之充分利用线程池资源

一、前言  最近做了电子发票的需求,分省开票接口和发票下载接口都有一定的延迟。为了完成开票后自动将发票插入用户微信卡包,目前的解决方案是利用线程池,将开票后插入卡包的任务(轮询分省发票接口,直到获取到发票相关信息或者轮询次数用完,如果获取到发票信息,执行发票插入微信卡包,结束任务)放入线程池异步执行。仔细想一想,这种实现方案存在一个问题,线程池没有充分的利用。为什么没有充分的利用?下...

2019-04-06 23:08:00 285

转载 Spring异步调用原理及SpringAop拦截器链原理

一、Spring异步调用底层原理  开启异步调用只需一个注解@EnableAsync@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AsyncConfigurationSelector.class)public @interface EnableAsy...

2019-03-18 17:50:00 205

转载 使用pdfBox实现pdf转图片,解决中文方块乱码等问题

一、引入依赖<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>fontbox</artifactId> <version>2.0.13</version></dependency&g...

2019-03-10 23:50:00 654

转载 Spring BPP中优雅的创建动态代理Bean

一、前言  本文章所讲并没有基于Aspectj,而是直接通过Cglib以及ProxyFactoryBean去创建代理Bean。通过下面的例子,可以看出Cglib方式创建的代理Bean和ProxyFactoryBean创建的代理Bean的区别。二、基本测试代码  测试实体类,在BPP中创建BppTestDepBean类型的代理Bean。@Componentpubli...

2019-03-03 00:50:00 188

转载 转载:ThreadPoolExecutor 源码阅读

前言  之前研究了一下如何使用ScheduledThreadPoolExecutor动态创建定时任务(Springboot定时任务原理及如何动态创建定时任务),简单了解了ScheduledThreadPoolExecutor相关源码。今天看了同学写的ThreadPoolExecutor 的源码解读,甚是NB,必须转发一下。读了一下 ThreadPoolExecutor 的源码...

2019-02-12 14:13:00 107

转载 Springboot定时任务原理及如何动态创建定时任务

一、前言  上周工作遇到了一个需求,同步多个省份销号数据,解绑微信粉丝。分省定时将销号数据放到SFTP服务器上,我需要开发定时任务去解析文件。因为是多省份,服务器、文件名规则、数据规则都不一定,所以要做成可配置是有一定难度的。数据规则这块必须强烈要求统一,服务器、文件名规则都可以从配置中心去读。每新增一个省份的配置,后台感知到后,动态生成定时任务。二、Springboot引入定时...

2019-02-07 22:02:00 1698

转载 SpringSecurity整合JWT

一、前言  最近负责支付宝小程序后端项目设计,这里主要分享一下用户会话、接口鉴权的设计。参考过微信小程序后端的设计,会话需要依靠redis。相关的开发人员和我说依靠Redis并不是很靠谱,redis在业务高峰期不稳定,容易出现问题,总会出现用户会话丢失、超时的问题。之前听过JWT相关的设计,决定尝试一下。二、什么是JWT  JSON Web Token(JWT)是一个开放标准...

2019-01-20 00:25:00 111

转载 SpringMvc接口中转设计(策略+模板方法)

一、前言  最近带着两个兄弟做支付宝小程序后端相关的开发,小程序首页涉及到很多查询的服务。小程序后端服务在我司属于互联网域,相关的查询服务已经在核心域存在了,查询这块所要做的工作就是做接口中转。参考了微信小程序的代码,发现他们要么新写一个接口调用,要么新写一个接口包裹多个接口调用。这种方式不容易扩展。由于开发周期比较理想,所以决定设计一个接口中转器。二、接口中转器整体设计  ...

2019-01-10 18:42:00 268

转载 HashMap 源码阅读

前言  之前读过一些类的源码,近来发现都忘了,再读一遍整理记录一下。这次读的是 JDK 11 的代码,贴上来的源码会去掉大部分的注释, 也会加上一些自己的理解。Map 接口    这里提一下 Map 接口与1.8相比 Map接口又新增了几个方法:  这些方法都是包私有的static方法;of()方法分别返回包含 0 - 9 个键值对的不可修改的Map;...

2019-01-06 23:56:00 100

转载 支付宝敏感信息解密

  支付宝官方解密文档:https://docs.alipay.com/mini/introduce/aesString response = "小程序前端提交的";//1. 获取验签和解密所需要的参数Map<String, String> openapiResult = JSON.parseObject(response, ne...

2018-12-27 13:19:00 1234

转载 java接口签名(Signature)实现方案续

一、前言  由于之前写过的一片文章 (java接口签名(Signature)实现方案)收获了很多好评,此次来说一下另一种简单粗暴的签名方案。相对于之前的签名方案,对body、paramenter、path variable的获取都做了简化的处理。也就是说这种方式针所有数据进行了签名,并不能指定某些数据进行签名。二、签名规则  1、线下分配appid和appsecret,针对...

2018-12-26 13:51:00 1180

转载 Nginx配置以及域名转发

工程中的nginx配置#user nobody;worker_processes 24;error_log /home/xxx/opt/nginx/logs/error.log;pid /home/xxx/opt/nginx/run/nginx.pid;events { use epoll; worker_con...

2018-12-14 13:26:00 137

转载 RedisCacheManager设置Value序列化器技巧

CacheManager基本配置  请参考博文:springboot2.0 redis EnableCaching的配置和使用RedisCacheManager构造函数/** * Construct a {@link RedisCacheManager}. * * @param redisOperations */@SuppressWarnings(...

2018-12-10 15:42:00 303

转载 kafka告警简单方案

一、前言  为什么要设计kafka告警方案?现成的监控项目百度一下一大堆,KafkaOffsetMonitor、KafkaManager、 Burrow等,具体参考:kafka的消息挤压监控。由于本小组的项目使用的kafka集群并没有被公司的kafka-manager管理,所以只能自己简单做一个告警。二、告警方案    首先需要两个定时任务,之间的通信依靠延迟队列。 ...

2018-12-04 15:53:00 340

转载 kafka-manager配置和使用

kafka-manager配置  最主要配置就是用于kafka管理器状态的zookeeper主机。这可以在conf目录中的application.conf文件中找到。kafka-manager.zkhosts="my.zookeeper.host.com:2181"  当然也可以声明为zookeeper集群。kafka-manager.zkhosts="my....

2018-11-20 00:04:00 348

转载 高效使用hibernate-validator校验框架

一、前言  高效、合理的使用hibernate-validator校验框架可以提高程序的可读性,以及减少不必要的代码逻辑。接下来会介绍一下常用一些使用方式。二、常用注解说明限制说明@Null限制只能为null@NotNull限制必须不为null@AssertFalse限制必须为false@Assert...

2018-11-13 18:56:00 470

转载 Springboot集成ES启动报错

报错内容  None of the configured nodes are availableelasticsearch.yml配置cluster.name: ftestnode.name: node-72node.master: truenode.data: truenetwork.host: 112.122.245.212http.port: 3...

2018-11-12 18:37:00 445

转载 log4j平稳升级到log4j2

一、前言  公司中的项目虽然已经用了很多的新技术了,但是日志的底层框架还是log4j,个人还是不喜欢用这个的。最近项目再生产环境上由于log4j引起了一场血案,于是决定升级到log4j2。二、现象  虽然生产环境有多个结点分散高并发带来的压力,但是消息中心上一周好多接入方接入,导致并发量一下就增多了,导致服务卡死。在堆栈信息中看到大量的BLOCK异常,如下。"http...

2018-11-09 20:50:00 721

转载 Springmvc借助SimpleUrlHandlerMapping实现接口开关功能

一、接口开关功能  1、可配置化,依赖配置中心  2、接口访问权限可控  3、springmvc不会扫描到,即不会直接的将接口暴露出去二、接口开关使用场景  和业务没什么关系,主要方便查询系统中的一些状态信息。比如系统的配置信息,中间件的状态信息。这就需要写一些特定的接口,不能对外直接暴露出去(即不能被springmvc扫描到,不能被swagger扫描到)。三、S...

2018-11-04 01:08:00 230

转载 windows系统nexus3安装和配置

一、前言  为什么要在本地开发机器上安装nexus?首先声明公司内部是有自己的nexus仓库,但是对上传jar包做了限制,不能畅快的上传自己测试包依赖。于是就自己在本地搭建了一个nexus私服,即可以使用公司nexus私服仓库中的依赖,也可以上传和使用自己的测试包依赖。二、nexus下载  Download Nexus Repository OSS  三、解压  ...

2018-10-18 07:35:00 391

转载 spring注解工具类AnnotatedElementUtils和AnnotationUtils

一、前言  spring为开发人员提供了两个搜索注解的工具类,分别是AnnotatedElementUtils和AnnotationUtils。在使用的时候,总是傻傻分不清,什么情况下使用哪一个。于是我做了如下的整理和总结。二、AnnotationUtils官方解释  功能  用于处理注解,处理元注解,桥接方法(编译器为通用声明生成)以及超级方法(用于可选注解继承)的常规...

2018-10-15 15:54:00 1073

转载 HttpServletRequestWrapper使用技巧(自定义session和缓存InputStream)

一、前言  javax.servlet.http.HttpServletRequestWrapper 是一个开发者可以继承的类,我们可以重写相应的方法来实现session的自定义以及缓存InputStream,在程序中可以多次获取request body的内容。二、自定义seesionimport javax.servlet.http.*;public class...

2018-10-10 15:52:00 1109

转载 Git rebase命令实战

一、前言  一句话,git rebase 可以帮助项目中的提交历史干净整洁!!!二、避免合并出现分叉现象git merge操作  1、新建一个 develop 分支    2、在develop分支上新建两个文件    3、然后分别执行 add、commit、push    4、接着切换到master分支  分别添加c.txt 和 d.tx...

2018-09-30 19:07:00 197

转载 java接口签名(Signature)实现方案

预祝大家国庆节快乐,赶快迎接美丽而快乐的假期吧!!!前言  在为第三方系统提供接口的时候,肯定要考虑接口数据的安全问题,比如数据是否被篡改,数据是否已经过时,数据是否可以重复提交等问题。其中我认为最终要的还是数据是否被篡改。在此分享一下我的关于接口签名的实践方案。如果这种方案不是很好理解,请参考另一篇更简单暴力的方案java接口签名(Signature)实现方案续。签...

2018-09-30 12:04:00 2692

转载 Spring ConfigurationClassPostProcessor Bean解析及自注册过程

一、Bean的自注册过程  二、自注册过程说明ConfigurationClassParser解析流程  1、处理@PropertySources注解,配置信息的解析  2、处理@ComponentScan注解:使用ComponentScanAnnotationParser扫描basePackage下的需要解析的类(@SpringBootApplication注解也...

2018-09-27 09:47:00 252

转载 依赖配置中心实现注有@ConfigurationProperties的bean相关属性刷新

配置中心是什么  配置中心,通过key=value的形式存储环境变量。配置中心的属性做了修改,项目中可以通过配置中心的依赖(sdk)立即感知到。需要做的就是如何在属性发生变化时,改变带有@ConfigurationProperties的bean的相关属性。配置中心原理  在读配置中心源码的时候发现,里面维护了一个Environment,以及ZookeeperPropertyS...

2018-09-24 23:26:00 868

转载 Spring Boot 静态资源访问原理解析

一、前言  springboot配置静态资源方式是多种多样,接下来我会介绍其中几种方式,并解析一下其中的原理。二、使用properties属性进行配置  应该说spring.mvc.static-path-pattern 和spring.resources.static-locations这两属性是成对使用的,如果不明白其中的原理,总会出现资源404的情况。首先收一下sp...

2018-09-21 14:05:00 442

转载 springboot2.0 redis EnableCaching的配置和使用

一、前言  关于EnableCaching最简单使用,个人感觉只需提供一个CacheManager的一个实例就好了。springboot为我们提供了cache相关的自动配置。引入cache模块,如下。二、maven依赖<dependency> <groupId>org.springframework.boot</groupI...

2018-09-17 10:29:00 539

转载 springmvc controller动态设置content-type

  springmvcRequestMappingHandlerAdapter#invokeHandlerMethod通过ServletInvocableHandlerMethod#invokeAndHandle调用目标方法,并处理返回值。    如果returnvalue !=null,则通过returnvalueHandlers处理,内部会调用MessageConv...

2018-08-02 09:24:00 635

转载 简单封装kafka相关的api

一、针对于kafka版本<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.8.2.2</version><...

2018-07-18 10:54:00 284

转载 jackson实现java对象转支付宝/微信模板消息

一、支付宝消息模板大致长这样{ "to_user_id": "", "telephone": "xxxxx", "template": { "template_id": "xxxxxx", "context": { "head_color": "#85be53", ...

2018-07-12 20:42:00 117

转载 springboot项目接入配置中心,实现@ConfigurationProperties的bean属性刷新方案

前言  配置中心,通过key=value的形式存储环境变量。配置中心的属性做了修改,项目中可以通过配置中心的依赖(sdk)立即感知到。需要做的就是如何在属性发生变化时,改变带有@ConfigurationProperties的bean的相关属性。配置中心  在读配置中心源码的时候发现,里面维护了一个Environment,以及ZookeeperPropertySource。当...

2018-07-06 11:59:00 886

空空如也

空空如也

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

TA关注的人

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