摘要: 准备环境 Window10系统 Appium1.21.0 AndroidSDK r24.1.1 Python3.7.5 支付宝apk文件 查看支付宝apk包信息 使用android sdk aapt命令查看支付宝apk包信息,后面会用到,如下。 Android Asset Packaging Too 阅读全文
posted @ 2021-07-24 19:56 hjzqyx 阅读(890) 评论(0) 推荐(0) 编辑
摘要: 为什么要告警 一个业务系统维护了很长时间了,指不定什么时候会出现问题。不过有些系统也是依赖微信、支付宝平台的,大平台都有自身的监控和告警能力帮忙分析和定位商户系统问题,但并不是所有场景都能涵盖到。所以个人负责的业务模块需要制定合理的告警机制,系统发生故障要第一时间知道,而不是被通知。 告警指标 常见 阅读全文
posted @ 2021-04-05 14:53 hjzqyx 阅读(662) 评论(0) 推荐(1) 编辑
摘要: Spring bean生命周期 可以简化为以下5步。 1、构建BeanDefinition 2、实例化 Instantiation 3、属性赋值 Populate 4、初始化 Initialization(BeanPostprocessor -> Aware,init) 5、销毁 Destructi 阅读全文
posted @ 2020-12-21 00:47 hjzqyx 阅读(1496) 评论(0) 推荐(2) 编辑
摘要: 1、Parallels Desktop破解版下载 2、原版Windows 10 2004 X64位 (原版安装)2020 11 Windows 系统镜像必须为原版,ghost版不行。亲测ghost版本提示:Couldn't find BOOTMGR 3、新建虚拟机 4、选择win10镜像 5、点击继 阅读全文
posted @ 2020-11-22 17:33 hjzqyx 阅读(2441) 评论(0) 推荐(0) 编辑
摘要: 函数式编程优势 “函数第一位”,即函数可以出现在任何地方。 可以把函数作为参数传递给另一个函数,还可以将函数作为返回值。 让代码的逻辑更清晰更优雅。 减少了可变量(Immutable Variable)的声明,程序更为安全。 支持惰性计算。 Lambda语法三部分 一个括号内用逗号分隔的形式参数,参 阅读全文
posted @ 2020-10-18 15:43 hjzqyx 阅读(1128) 评论(0) 推荐(4) 编辑
摘要: 背景 上一篇(灵感来袭,基于Redis的分布式延迟队列)讲述了基于Java DelayQueue和Redis实现了分布式延迟队列,这种方案实现比较简单,应用于延迟小,消息量不大的场景是没问题的,毕竟Java DelayQueue是占用内存的。针对现用方案的不足,于是利用Redis的Sorted Se 阅读全文
posted @ 2020-10-04 18:57 hjzqyx 阅读(1194) 评论(0) 推荐(1) 编辑
摘要: 背景 用户中心是授权逻辑与用户信息相关逻辑构建的应用。分布式系统中,大多数业务都需要和用户中心打交道,为了保证用户中心服务的高可用,避免不了做缓存、导入搜索引擎从而降低数据库的压力。然而有些不经过用户中心授权的业务场景查询用户中心的数据,可能引发大量无效的查询,发生缓存穿透,直接对搜索引擎和数据库造 阅读全文
posted @ 2020-04-13 20:38 hjzqyx 阅读(1330) 评论(2) 推荐(0) 编辑
摘要: 前言 限流是分布式系统设计中经常提到的概念,在某些要求不严格的场景下,使用Guava RateLimiter就可以满足。但是Guava RateLimiter只能应用于单进程,多进程间协同控制便无能为力。本文介绍一种简单的处理方式,用于分布式环境下接口调用频次管控。 如何防止恶意IP攻击某些暴露的接 阅读全文
posted @ 2020-03-29 19:30 hjzqyx 阅读(2331) 评论(1) 推荐(0) 编辑
摘要: 延迟队列 延迟队列,也就是一定时间之后将消息体放入队列,然后消费者才能正常消费。比如1分钟之后发送短信,发送邮件,检测数据状态等。 Redisson Delayed Queue 如果你项目中使用了redisson,那么恭喜你,使用延迟队列将非常的简单。 基于Redis的Redisson分布式延迟队列 阅读全文
posted @ 2020-03-28 19:30 hjzqyx 阅读(4055) 评论(0) 推荐(0) 编辑
摘要: @Validated和@Valid对比 Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数 阅读全文
posted @ 2020-03-26 09:05 hjzqyx 阅读(3101) 评论(1) 推荐(1) 编辑
摘要: 高可用背景介绍 高并发、高可用是互联网分布式系统架构设计中必须考虑的因素之一。 首先来说说高并发,啥是高并发,怎样才算是高并发。个人认为在衡量一个业务系统的并发能力,需要有一个维度,其中最重要的两个衡量标准是业务复杂度和硬件配置(cpu、内存、磁盘、带宽、网卡)。高并发的本质并不是一个数字这么简单, 阅读全文
posted @ 2019-12-10 10:15 hjzqyx 阅读(1841) 评论(0) 推荐(0) 编辑
摘要: 前言 在分布式系统中,http服务调用少不了HttpClient工具类。相信大家使用apache的HttpClient进行http的交互处理已经很长时间了,而httpclient内部其实使用了http连接池,想必大家也没有关心过连接池的管理。事实上,通过分析httpclient源码,发现它很优雅地隐 阅读全文
posted @ 2019-10-08 00:44 hjzqyx 阅读(19684) 评论(4) 推荐(7) 编辑
摘要: 背景 最近接手了一个系统,其功能都是查询。查询分了两种方式,一种是公司集团提供的查询能力,支持全国各个省份的查询,但是业务高峰期时服务响应比较慢;另外一种是各省的分公司都分别提供了对应的查询能力,但是服务质量相对较差,业务高峰期服务超时较多,而且分公司系统升级时也会影响服务质量。为了提升服务查询的成 阅读全文
posted @ 2019-09-23 09:04 hjzqyx 阅读(747) 评论(0) 推荐(0) 编辑
摘要: 国际化信息理解 国际化信息也称为本地化信息 。 Java 通过 java.util.Locale 类来表示本地化对象,它通过 “语言类型” 和 “国家/地区” 来创建一个确定的本地化对象 。举个例子吧,比如在发送一个具体的请求的时候,在header中设置一个键值对:"Accept-Language" 阅读全文
posted @ 2019-09-16 09:09 hjzqyx 阅读(9835) 评论(0) 推荐(0) 编辑
摘要: Java + robotframework + seleniumlibrary 使用Robot Framework Maven Plugin(http://robotframework.org/MavenPlugin/)执行自动化测试 chromedriver下载: http://chromedri 阅读全文
posted @ 2019-08-11 15:58 hjzqyx 阅读(1689) 评论(0) 推荐(0) 编辑
摘要: 背景 目前开发过程中,按照公司规范,需要依赖框架中的缓存组件。不得不说,做组件的大牛对CRUD操作的封装,连接池、缓存路由、缓存安全性的管控都处理的无可挑剔。但是有一个小问题,该组件没有对分布式锁做实现,那就要想办法依靠缓存组件自己去实现一个分布式锁了。 什么,为啥要自己实现?有现成的开源组件直接拿 阅读全文
posted @ 2019-08-05 08:43 hjzqyx 阅读(5643) 评论(1) 推荐(1) 编辑
摘要: 上一篇(基于zookeeper实现分布式配置中心(一))讲述了zookeeper相关概念和工作原理。接下来根据zookeeper的特性,简单实现一个分布式配置中心。 配置中心的优势 1、各环境配置集中管理。 2、配置更改,实时推送,jvm环境变量及时生效。 3、依靠配置变更,动态扩展功能,减少二次上 阅读全文
posted @ 2019-06-06 16:43 hjzqyx 阅读(4283) 评论(16) 推荐(2) 编辑
摘要: 最近在学习zookeeper,发现zk真的是一个优秀的中间件。在分布式环境下,可以高效解决数据管理问题。在学习的过程中,要深入zk的工作原理,并根据其特性做一些简单的分布式环境下数据管理工具。本文首先对zk的工作原理和相关概念做一下介绍,然后带大家做一个简单的分布式配置中心。 zookeeper介绍 阅读全文
posted @ 2019-05-19 09:07 hjzqyx 阅读(7300) 评论(3) 推荐(0) 编辑
摘要: 前两篇(Spring MVC源码——Root WebApplicationContext 和 Spring MVC源码——Servlet WebApplicationContext)讲述了springmvc项目创建上下文的过程,这一篇带大家了解一下springboot项目创建上下文的过程。 Spri 阅读全文
posted @ 2019-05-13 09:13 hjzqyx 阅读(3132) 评论(0) 推荐(1) 编辑
摘要: 上一篇笔记(Spring MVC源码——Root WebApplicationContext)中记录了下 Root WebApplicationContext 的初始化代码.这一篇来看 Servlet WebApplicationContext 的初始化代码 DispatcherServlet 是另 阅读全文
posted @ 2019-05-07 13:16 hjzqyx 阅读(1220) 评论(3) 推荐(2) 编辑
摘要: Spring MVC源码——Root WebApplicationContext 打算开始读一些框架的源码,先拿 Spring MVC 练练手,欢迎点击这里访问我的源码注释, SpringMVC官方文档一开始就给出了这样的两段示例: WebApplicationInitializer示例: web. 阅读全文
posted @ 2019-05-06 15:22 hjzqyx 阅读(2695) 评论(2) 推荐(1) 编辑
摘要: 一、前言 最近做了电子发票的需求,分省开票接口和发票下载接口都有一定的延迟。为了完成开票后自动将发票插入用户微信卡包,目前的解决方案是利用线程池,将开票后插入卡包的任务(轮询分省发票接口,直到获取到发票相关信息或者轮询次数用完,如果获取到发票信息,执行发票插入微信卡包,结束任务)放入线程池异步执行。 阅读全文
posted @ 2019-04-06 23:08 hjzqyx 阅读(2102) 评论(3) 推荐(0) 编辑
摘要: 一、Spring异步调用底层原理 开启异步调用只需一个注解@EnableAsync @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(AsyncConfigurationSelector 阅读全文
posted @ 2019-03-18 17:50 hjzqyx 阅读(3448) 评论(0) 推荐(2) 编辑
摘要: 一、引入依赖 二、PDF转PNG代码 三、PNG中文方块乱码 查看linux服务器上的字体库如下。 转换后的PNG如下。 日志中打印出类似这样的日志(例:Using fallback XXX for CID-keyed font STSong-Light),就说明系统没有安装STSong-Light 阅读全文
posted @ 2019-03-10 23:50 hjzqyx 阅读(10947) 评论(2) 推荐(1) 编辑
摘要: 一、前言 本文章所讲并没有基于Aspectj,而是直接通过Cglib以及ProxyFactoryBean去创建代理Bean。通过下面的例子,可以看出Cglib方式创建的代理Bean和ProxyFactoryBean创建的代理Bean的区别。 二、基本测试代码 测试实体类,在BPP中创建BppTest 阅读全文
posted @ 2019-03-03 00:50 hjzqyx 阅读(4741) 评论(7) 推荐(2) 编辑
摘要: 前言 之前研究了一下如何使用ScheduledThreadPoolExecutor动态创建定时任务(Springboot定时任务原理及如何动态创建定时任务),简单了解了ScheduledThreadPoolExecutor相关源码。今天看了同学写的ThreadPoolExecutor 的源码解读,甚 阅读全文
posted @ 2019-02-12 14:13 hjzqyx 阅读(563) 评论(0) 推荐(0) 编辑
摘要: 一、前言 上周工作遇到了一个需求,同步多个省份销号数据,解绑微信粉丝。分省定时将销号数据放到SFTP服务器上,我需要开发定时任务去解析文件。因为是多省份,服务器、文件名规则、数据规则都不一定,所以要做成可配置是有一定难度的。数据规则这块必须强烈要求统一,服务器、文件名规则都可以从配置中心去读。每新增 阅读全文
posted @ 2019-02-07 22:02 hjzqyx 阅读(35885) 评论(3) 推荐(6) 编辑
摘要: 一、前言 最近负责支付宝小程序后端项目设计,这里主要分享一下用户会话、接口鉴权的设计。参考过微信小程序后端的设计,会话需要依靠redis。相关的开发人员和我说依靠Redis并不是很靠谱,redis在业务高峰期不稳定,容易出现问题,总会出现用户会话丢失、超时的问题。之前听过JWT相关的设计,决定尝试一 阅读全文
posted @ 2019-01-20 00:25 hjzqyx 阅读(6570) 评论(4) 推荐(2) 编辑
摘要: 一、前言 最近带着两个兄弟做支付宝小程序后端相关的开发,小程序首页涉及到很多查询的服务。小程序后端服务在我司属于互联网域,相关的查询服务已经在核心域存在了,查询这块所要做的工作就是做接口中转。参考了微信小程序的代码,发现他们要么新写一个接口调用,要么新写一个接口包裹多个接口调用。这种方式不容易扩展。 阅读全文
posted @ 2019-01-10 18:42 hjzqyx 阅读(2579) 评论(2) 推荐(0) 编辑
摘要: 前言 之前读过一些类的源码,近来发现都忘了,再读一遍整理记录一下。这次读的是 JDK 11 的代码,贴上来的源码会去掉大部分的注释, 也会加上一些自己的理解。 Map 接口 这里提一下 Map 接口与1.8相比 Map接口又新增了几个方法: 这些方法都是包私有的static方法; of()方法分别返 阅读全文
posted @ 2019-01-06 23:56 hjzqyx 阅读(906) 评论(1) 推荐(1) 编辑