- 博客(495)
- 收藏
- 关注
转载 Springboot国际化信息(i18n)解析
国际化信息理解国际化信息也称为本地化信息 。 Java 通过 java.util.Locale 类来表示本地化对象,它通过 “语言类型” 和 “国家/地区” 来创建一个确定的本地化对象 。举个例子吧,比如在发送一个具体的请求的时候,在header中设置一个键值对:"Accept-Language":"zh",通过Accept-Language对应值,服务器就可以决定使用哪一个区域的语...
2019-09-16 09:09:00 552
转载 基于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 616
转载 Redis分布式锁实战
背景目前开发过程中,按照公司规范,需要依赖框架中的缓存组件。不得不说,做组件的大牛对CRUD操作的封装,连接池、缓存路由、缓存安全性的管控都处理的无可挑剔。但是有一个小问题,该组件没有对分布式锁做实现,那就要想办法依靠缓存组件自己去实现一个分布式锁了。什么,为啥要自己实现?有现成的开源组件直接拿过来用不就行了,比如Spring-Integration-Redis提供Redis...
2019-08-05 08:43:00 458
转载 基于zookeeper实现分布式配置中心(二)
上一篇(基于zookeeper实现分布式配置中心(一))讲述了zookeeper相关概念和工作原理。接下来根据zookeeper的特性,简单实现一个分布式配置中心。配置中心的优势1、各环境配置集中管理。2、配置更改,实时推送,jvm环境变量及时生效。3、依靠配置变更,动态扩展功能,减少二次上线带来的成本。4、减少开发人员、运维人员修改配置带来的额外开销。...
2019-06-06 16:43:00 308
转载 基于zookeeper实现分布式配置中心(一)
最近在学习zookeeper,发现zk真的是一个优秀的中间件。在分布式环境下,可以高效解决数据管理问题。在学习的过程中,要深入zk的工作原理,并根据其特性做一些简单的分布式环境下数据管理工具。本文首先对zk的工作原理和相关概念做一下介绍,然后带大家做一个简单的分布式配置中心。zookeeper介绍 zookeeper是一个分布式协调框架,主要是解决分布式应用中经常遇...
2019-05-19 09:07:00 147
转载 Springboot源码——应用程序上下文分析
前两篇(Spring MVC源码——Root WebApplicationContext和 Spring MVC源码——Servlet WebApplicationContext)讲述了springmvc项目创建上下文的过程,这一篇带大家了解一下springboot项目创建上下文的过程。SpringApplication引导类SpringApplication类用于启动或者...
2019-05-13 09:13:00 135
转载 Spring MVC源码——Servlet WebApplicationContext
上一篇笔记(Spring MVC源码——Root WebApplicationContext)中记录了下 Root WebApplicationContext 的初始化代码.这一篇来看 Servlet WebApplicationContext 的初始化代码DispatcherServlet是另一个需要在web.xml中配置的类, Servlet WebApplicationC...
2019-05-07 13:16:00 125
转载 Spring MVC源码——Root WebApplicationContext
Spring MVC源码——Root WebApplicationContext 打算开始读一些框架的源码,先拿 Spring MVC 练练手,欢迎点击这里访问我的源码注释, SpringMVC官方文档一开始就给出了这样的两段示例:WebApplicationInitializer示例:public class MyWebApplicationInitializer i...
2019-05-06 15:22:00 156
转载 线程池优化之充分利用线程池资源
一、前言 最近做了电子发票的需求,分省开票接口和发票下载接口都有一定的延迟。为了完成开票后自动将发票插入用户微信卡包,目前的解决方案是利用线程池,将开票后插入卡包的任务(轮询分省发票接口,直到获取到发票相关信息或者轮询次数用完,如果获取到发票信息,执行发票插入微信卡包,结束任务)放入线程池异步执行。仔细想一想,这种实现方案存在一个问题,线程池没有充分的利用。为什么没有充分的利用?下...
2019-04-06 23:08:00 291
转载 Spring异步调用原理及SpringAop拦截器链原理
一、Spring异步调用底层原理 开启异步调用只需一个注解@EnableAsync@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AsyncConfigurationSelector.class)public @interface EnableAsy...
2019-03-18 17:50:00 208
转载 使用pdfBox实现pdf转图片,解决中文方块乱码等问题
一、引入依赖<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>fontbox</artifactId> <version>2.0.13</version></dependency&g...
2019-03-10 23:50:00 661
转载 Spring BPP中优雅的创建动态代理Bean
一、前言 本文章所讲并没有基于Aspectj,而是直接通过Cglib以及ProxyFactoryBean去创建代理Bean。通过下面的例子,可以看出Cglib方式创建的代理Bean和ProxyFactoryBean创建的代理Bean的区别。二、基本测试代码 测试实体类,在BPP中创建BppTestDepBean类型的代理Bean。@Componentpubli...
2019-03-03 00:50:00 195
转载 转载:ThreadPoolExecutor 源码阅读
前言 之前研究了一下如何使用ScheduledThreadPoolExecutor动态创建定时任务(Springboot定时任务原理及如何动态创建定时任务),简单了解了ScheduledThreadPoolExecutor相关源码。今天看了同学写的ThreadPoolExecutor 的源码解读,甚是NB,必须转发一下。读了一下 ThreadPoolExecutor 的源码...
2019-02-12 14:13:00 110
转载 Springboot定时任务原理及如何动态创建定时任务
一、前言 上周工作遇到了一个需求,同步多个省份销号数据,解绑微信粉丝。分省定时将销号数据放到SFTP服务器上,我需要开发定时任务去解析文件。因为是多省份,服务器、文件名规则、数据规则都不一定,所以要做成可配置是有一定难度的。数据规则这块必须强烈要求统一,服务器、文件名规则都可以从配置中心去读。每新增一个省份的配置,后台感知到后,动态生成定时任务。二、Springboot引入定时...
2019-02-07 22:02:00 1700
转载 SpringSecurity整合JWT
一、前言 最近负责支付宝小程序后端项目设计,这里主要分享一下用户会话、接口鉴权的设计。参考过微信小程序后端的设计,会话需要依靠redis。相关的开发人员和我说依靠Redis并不是很靠谱,redis在业务高峰期不稳定,容易出现问题,总会出现用户会话丢失、超时的问题。之前听过JWT相关的设计,决定尝试一下。二、什么是JWT JSON Web Token(JWT)是一个开放标准...
2019-01-20 00:25:00 113
转载 SpringMvc接口中转设计(策略+模板方法)
一、前言 最近带着两个兄弟做支付宝小程序后端相关的开发,小程序首页涉及到很多查询的服务。小程序后端服务在我司属于互联网域,相关的查询服务已经在核心域存在了,查询这块所要做的工作就是做接口中转。参考了微信小程序的代码,发现他们要么新写一个接口调用,要么新写一个接口包裹多个接口调用。这种方式不容易扩展。由于开发周期比较理想,所以决定设计一个接口中转器。二、接口中转器整体设计 ...
2019-01-10 18:42:00 276
转载 HashMap 源码阅读
前言 之前读过一些类的源码,近来发现都忘了,再读一遍整理记录一下。这次读的是 JDK 11 的代码,贴上来的源码会去掉大部分的注释, 也会加上一些自己的理解。Map 接口 这里提一下 Map 接口与1.8相比 Map接口又新增了几个方法: 这些方法都是包私有的static方法;of()方法分别返回包含 0 - 9 个键值对的不可修改的Map;...
2019-01-06 23:56:00 105
转载 支付宝敏感信息解密
支付宝官方解密文档:https://docs.alipay.com/mini/introduce/aesString response = "小程序前端提交的";//1. 获取验签和解密所需要的参数Map<String, String> openapiResult = JSON.parseObject(response, ne...
2018-12-27 13:19:00 1238
转载 java接口签名(Signature)实现方案续
一、前言 由于之前写过的一片文章 (java接口签名(Signature)实现方案)收获了很多好评,此次来说一下另一种简单粗暴的签名方案。相对于之前的签名方案,对body、paramenter、path variable的获取都做了简化的处理。也就是说这种方式针所有数据进行了签名,并不能指定某些数据进行签名。二、签名规则 1、线下分配appid和appsecret,针对...
2018-12-26 13:51:00 1204
转载 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 139
转载 RedisCacheManager设置Value序列化器技巧
CacheManager基本配置 请参考博文:springboot2.0 redis EnableCaching的配置和使用RedisCacheManager构造函数/** * Construct a {@link RedisCacheManager}. * * @param redisOperations */@SuppressWarnings(...
2018-12-10 15:42:00 318
转载 kafka告警简单方案
一、前言 为什么要设计kafka告警方案?现成的监控项目百度一下一大堆,KafkaOffsetMonitor、KafkaManager、 Burrow等,具体参考:kafka的消息挤压监控。由于本小组的项目使用的kafka集群并没有被公司的kafka-manager管理,所以只能自己简单做一个告警。二、告警方案 首先需要两个定时任务,之间的通信依靠延迟队列。 ...
2018-12-04 15:53:00 344
转载 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 352
转载 高效使用hibernate-validator校验框架
一、前言 高效、合理的使用hibernate-validator校验框架可以提高程序的可读性,以及减少不必要的代码逻辑。接下来会介绍一下常用一些使用方式。二、常用注解说明限制说明@Null限制只能为null@NotNull限制必须不为null@AssertFalse限制必须为false@Assert...
2018-11-13 18:56:00 475
转载 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 450
转载 log4j平稳升级到log4j2
一、前言 公司中的项目虽然已经用了很多的新技术了,但是日志的底层框架还是log4j,个人还是不喜欢用这个的。最近项目再生产环境上由于log4j引起了一场血案,于是决定升级到log4j2。二、现象 虽然生产环境有多个结点分散高并发带来的压力,但是消息中心上一周好多接入方接入,导致并发量一下就增多了,导致服务卡死。在堆栈信息中看到大量的BLOCK异常,如下。"http...
2018-11-09 20:50:00 743
转载 Springmvc借助SimpleUrlHandlerMapping实现接口开关功能
一、接口开关功能 1、可配置化,依赖配置中心 2、接口访问权限可控 3、springmvc不会扫描到,即不会直接的将接口暴露出去二、接口开关使用场景 和业务没什么关系,主要方便查询系统中的一些状态信息。比如系统的配置信息,中间件的状态信息。这就需要写一些特定的接口,不能对外直接暴露出去(即不能被springmvc扫描到,不能被swagger扫描到)。三、S...
2018-11-04 01:08:00 245
转载 windows系统nexus3安装和配置
一、前言 为什么要在本地开发机器上安装nexus?首先声明公司内部是有自己的nexus仓库,但是对上传jar包做了限制,不能畅快的上传自己测试包依赖。于是就自己在本地搭建了一个nexus私服,即可以使用公司nexus私服仓库中的依赖,也可以上传和使用自己的测试包依赖。二、nexus下载 Download Nexus Repository OSS 三、解压 ...
2018-10-18 07:35:00 394
转载 spring注解工具类AnnotatedElementUtils和AnnotationUtils
一、前言 spring为开发人员提供了两个搜索注解的工具类,分别是AnnotatedElementUtils和AnnotationUtils。在使用的时候,总是傻傻分不清,什么情况下使用哪一个。于是我做了如下的整理和总结。二、AnnotationUtils官方解释 功能 用于处理注解,处理元注解,桥接方法(编译器为通用声明生成)以及超级方法(用于可选注解继承)的常规...
2018-10-15 15:54:00 1079
转载 HttpServletRequestWrapper使用技巧(自定义session和缓存InputStream)
一、前言 javax.servlet.http.HttpServletRequestWrapper 是一个开发者可以继承的类,我们可以重写相应的方法来实现session的自定义以及缓存InputStream,在程序中可以多次获取request body的内容。二、自定义seesionimport javax.servlet.http.*;public class...
2018-10-10 15:52:00 1120
转载 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 199
转载 java接口签名(Signature)实现方案
预祝大家国庆节快乐,赶快迎接美丽而快乐的假期吧!!!前言 在为第三方系统提供接口的时候,肯定要考虑接口数据的安全问题,比如数据是否被篡改,数据是否已经过时,数据是否可以重复提交等问题。其中我认为最终要的还是数据是否被篡改。在此分享一下我的关于接口签名的实践方案。如果这种方案不是很好理解,请参考另一篇更简单暴力的方案java接口签名(Signature)实现方案续。签...
2018-09-30 12:04:00 2716
转载 Spring ConfigurationClassPostProcessor Bean解析及自注册过程
一、Bean的自注册过程 二、自注册过程说明ConfigurationClassParser解析流程 1、处理@PropertySources注解,配置信息的解析 2、处理@ComponentScan注解:使用ComponentScanAnnotationParser扫描basePackage下的需要解析的类(@SpringBootApplication注解也...
2018-09-27 09:47:00 255
转载 依赖配置中心实现注有@ConfigurationProperties的bean相关属性刷新
配置中心是什么 配置中心,通过key=value的形式存储环境变量。配置中心的属性做了修改,项目中可以通过配置中心的依赖(sdk)立即感知到。需要做的就是如何在属性发生变化时,改变带有@ConfigurationProperties的bean的相关属性。配置中心原理 在读配置中心源码的时候发现,里面维护了一个Environment,以及ZookeeperPropertyS...
2018-09-24 23:26:00 874
转载 Spring Boot 静态资源访问原理解析
一、前言 springboot配置静态资源方式是多种多样,接下来我会介绍其中几种方式,并解析一下其中的原理。二、使用properties属性进行配置 应该说spring.mvc.static-path-pattern 和spring.resources.static-locations这两属性是成对使用的,如果不明白其中的原理,总会出现资源404的情况。首先收一下sp...
2018-09-21 14:05:00 446
转载 springboot2.0 redis EnableCaching的配置和使用
一、前言 关于EnableCaching最简单使用,个人感觉只需提供一个CacheManager的一个实例就好了。springboot为我们提供了cache相关的自动配置。引入cache模块,如下。二、maven依赖<dependency> <groupId>org.springframework.boot</groupI...
2018-09-17 10:29:00 547
转载 springmvc controller动态设置content-type
springmvcRequestMappingHandlerAdapter#invokeHandlerMethod通过ServletInvocableHandlerMethod#invokeAndHandle调用目标方法,并处理返回值。 如果returnvalue !=null,则通过returnvalueHandlers处理,内部会调用MessageConv...
2018-08-02 09:24:00 641
转载 简单封装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 287
转载 jackson实现java对象转支付宝/微信模板消息
一、支付宝消息模板大致长这样{ "to_user_id": "", "telephone": "xxxxx", "template": { "template_id": "xxxxxx", "context": { "head_color": "#85be53", ...
2018-07-12 20:42:00 118
转载 springboot项目接入配置中心,实现@ConfigurationProperties的bean属性刷新方案
前言 配置中心,通过key=value的形式存储环境变量。配置中心的属性做了修改,项目中可以通过配置中心的依赖(sdk)立即感知到。需要做的就是如何在属性发生变化时,改变带有@ConfigurationProperties的bean的相关属性。配置中心 在读配置中心源码的时候发现,里面维护了一个Environment,以及ZookeeperPropertySource。当...
2018-07-06 11:59:00 889
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人