随笔分类 -  java

1 2 3 4 5 ··· 7 下一页
摘要:函数式编程优势 “函数第一位”,即函数可以出现在任何地方。 可以把函数作为参数传递给另一个函数,还可以将函数作为返回值。 让代码的逻辑更清晰更优雅。 减少了可变量(Immutable Variable)的声明,程序更为安全。 支持惰性计算。 Lambda语法三部分 一个括号内用逗号分隔的形式参数,参 阅读全文
posted @ 2020-10-18 15:43 hjzqyx 阅读(1102) 评论(0) 推荐(4) 编辑
摘要:背景 上一篇(灵感来袭,基于Redis的分布式延迟队列)讲述了基于Java DelayQueue和Redis实现了分布式延迟队列,这种方案实现比较简单,应用于延迟小,消息量不大的场景是没问题的,毕竟Java DelayQueue是占用内存的。针对现用方案的不足,于是利用Redis的Sorted Se 阅读全文
posted @ 2020-10-04 18:57 hjzqyx 阅读(1163) 评论(0) 推荐(1) 编辑
摘要:背景 用户中心是授权逻辑与用户信息相关逻辑构建的应用。分布式系统中,大多数业务都需要和用户中心打交道,为了保证用户中心服务的高可用,避免不了做缓存、导入搜索引擎从而降低数据库的压力。然而有些不经过用户中心授权的业务场景查询用户中心的数据,可能引发大量无效的查询,发生缓存穿透,直接对搜索引擎和数据库造 阅读全文
posted @ 2020-04-13 20:38 hjzqyx 阅读(1308) 评论(2) 推荐(0) 编辑
摘要:前言 限流是分布式系统设计中经常提到的概念,在某些要求不严格的场景下,使用Guava RateLimiter就可以满足。但是Guava RateLimiter只能应用于单进程,多进程间协同控制便无能为力。本文介绍一种简单的处理方式,用于分布式环境下接口调用频次管控。 如何防止恶意IP攻击某些暴露的接 阅读全文
posted @ 2020-03-29 19:30 hjzqyx 阅读(2316) 评论(1) 推荐(0) 编辑
摘要:延迟队列 延迟队列,也就是一定时间之后将消息体放入队列,然后消费者才能正常消费。比如1分钟之后发送短信,发送邮件,检测数据状态等。 Redisson Delayed Queue 如果你项目中使用了redisson,那么恭喜你,使用延迟队列将非常的简单。 基于Redis的Redisson分布式延迟队列 阅读全文
posted @ 2020-03-28 19:30 hjzqyx 阅读(3998) 评论(0) 推荐(0) 编辑
摘要:一、前言 最近做了电子发票的需求,分省开票接口和发票下载接口都有一定的延迟。为了完成开票后自动将发票插入用户微信卡包,目前的解决方案是利用线程池,将开票后插入卡包的任务(轮询分省发票接口,直到获取到发票相关信息或者轮询次数用完,如果获取到发票信息,执行发票插入微信卡包,结束任务)放入线程池异步执行。 阅读全文
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) 编辑
摘要:一、引入依赖 二、PDF转PNG代码 三、PNG中文方块乱码 查看linux服务器上的字体库如下。 转换后的PNG如下。 日志中打印出类似这样的日志(例:Using fallback XXX for CID-keyed font STSong-Light),就说明系统没有安装STSong-Light 阅读全文
posted @ 2019-03-10 23:50 hjzqyx 阅读(10302) 评论(2) 推荐(1) 编辑
摘要:前言 之前研究了一下如何使用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) 编辑
摘要:前言 之前读过一些类的源码,近来发现都忘了,再读一遍整理记录一下。这次读的是 JDK 11 的代码,贴上来的源码会去掉大部分的注释, 也会加上一些自己的理解。 Map 接口 这里提一下 Map 接口与1.8相比 Map接口又新增了几个方法: 这些方法都是包私有的static方法; of()方法分别返 阅读全文
posted @ 2019-01-06 23:56 hjzqyx 阅读(900) 评论(1) 推荐(1) 编辑
摘要:一、前言 由于之前写过的一片文章 (java接口签名(Signature)实现方案 )收获了很多好评,此次来说一下另一种简单粗暴的签名方案。相对于之前的签名方案,对body、paramenter、path variable的获取都做了简化的处理。也就是说这种方式针所有数据进行了签名,并不能指定某些数 阅读全文
posted @ 2018-12-26 13:51 hjzqyx 阅读(22460) 评论(26) 推荐(0) 编辑
摘要:一、前言 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) 编辑
摘要:一、针对于kafka版本 二、操作topic、consumer相关方法 三、控制层展示 四、消费配置 消费逻辑 消费测试 测试no ack 以及 ack的消费结果 消费测试结果分析:no ack的consumer可以实现消息的窥探。 五、效果图 获取topic详情 获取所有的topic信息 获取消费 阅读全文
posted @ 2018-07-18 10:54 hjzqyx 阅读(2936) 评论(2) 推荐(1) 编辑
摘要:一、支付宝消息模板大致长这样 二、java pojo Item实体 TemplateMessageItem.java 最外层:TemplateMessage .java 第一个嵌套层:NestTemplate.java 第二个嵌套层:NestContext.java 三、自定义字段序列化 将一个Li 阅读全文
posted @ 2018-07-12 20:42 hjzqyx 阅读(876) 评论(0) 推荐(0) 编辑
摘要:前言 配置中心,通过key=value的形式存储环境变量。配置中心的属性做了修改,项目中可以通过配置中心的依赖(sdk)立即感知到。需要做的就是如何在属性发生变化时,改变带有@ConfigurationProperties的bean的相关属性。 配置中心 在读配置中心源码的时候发现,里面维护了一个E 阅读全文
posted @ 2018-07-06 11:59 hjzqyx 阅读(15498) 评论(0) 推荐(5) 编辑
摘要:String className = "java.lang.ApplicationShutdownHooks"; Class clazz = Class.forName(className); Field field = clazz.getDeclaredField("hooks"); field.setAccessible(true); Thread shutdownThread = new... 阅读全文
posted @ 2018-03-15 13:50 hjzqyx 阅读(1148) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 7 下一页