随笔分类 -  Java

Spring boot 拾遗 —— Spring Cache 扩展 Duration
摘要:1 前言 在上一篇我们改写了 CacheManager 使得它能够解析 cacheName#duration 动态设置 TTL,现在我们将使用预定义的 CacheResolver 来让我们的代码能有下边的表现形式: 第一个方法在注解上规定了 TTL 是 5 分钟, 第二个方法可以传入一个 durat 阅读全文
posted @ 2020-06-21 16:55 四维胖次 阅读(1225) 评论(0) 推荐(0)
Spring boot 拾遗 —— Spring Cache 使用 Jackson 与 自定义 TTL
摘要:1 前言 关于序列化: Spring 提供的 Cache 默认使用 JDK 方式序列化结果,这要求我们的结果都必须实现 Serializable 接口,且在缓存中保存的数据是二进制的,给后续调试带来不少麻烦。 关于 TTL: Spring 提供的 Redis 实现仅支持设置全局 TTL ,如果想要细 阅读全文
posted @ 2020-06-21 00:29 四维胖次 阅读(862) 评论(0) 推荐(0)
Spring boot 拾遗 —— 错误验证
摘要:1 前言 Spring 的验证框架为我们提供了强大的验证功能,我们不但要会使用它,更要知道它工作的原理,这一文将简要点出 验证的基础基础流程,包括 spring 如果确定入参需要参与验证 spring 如何决定是抛出各种验证错误,还是将错误信息传递给开发人员 spring 如何为表单验证与 JSON 阅读全文
posted @ 2020-05-31 01:55 四维胖次 阅读(432) 评论(0) 推荐(0)
简化 Java 代码 ——(一)使用 PropertyMapper
摘要:1 前言 在日常的开发中,我们需要使用到各种非空,非 Null 等条件判定以保证程序不出错,因此避免不了写出臃肿的代码。尽管 JDK 8 提供了强大的 Stream 流,但它并不总是能满足各种需求。 网络上对于 PropertyMapper 类的研究甚少,写这篇文章也是为了记下所学知识,同时也希望给 阅读全文
posted @ 2020-05-09 01:14 四维胖次 阅读(2398) 评论(0) 推荐(0)
Java 开源项目 OpenFeign —— feign 结合 SpringBoot
摘要:1. 前言 Spring 对 Feign 做了封装,包括常用的 encoder/decoder ,让我们能用 Bean 的形式使用 Feign。我们将沿用之前的代码。 1.1 Maven 依赖 1 <dependency> 2 <groupId>org.springframework.cloud</ 阅读全文
posted @ 2020-04-05 14:50 四维胖次 阅读(2731) 评论(0) 推荐(0)
Java 开源项目 OpenFeign —— feign 的基本使用
摘要:1. 前言 最近公司的项目里使用到了 Feign 开源项目,这里作学习笔记 2. Feign 架构(来自官方) feign 由五大部分组成,由于刚开始接触 feign ,我们自然比较关注的 clients 跟 encoders/decoders 3. 代码测试 3.1 官方教程 接触一个项目最直接的 阅读全文
posted @ 2020-04-05 14:47 四维胖次 阅读(5580) 评论(0) 推荐(0)
Java 定时任务 Quartz (三)—— 并发
摘要:1 前言 根据 Quartz 的设计,一个 Job 可以绑定多个 Trigger,必然会遇到并发的问题。 2 并发 2.1 复现 让我们编写一个并发的例子: 1 /** 2 * @author pancc 3 * @version 1.0 4 */ 5 public class AcceptConc 阅读全文
posted @ 2020-03-30 23:41 四维胖次 阅读(2097) 评论(0) 推荐(0)
Java 定时任务 Quartz (二)—— 数据传递
摘要:1 写在前面 在实际的开发中,我们经常需要向任务传递数据参数,在之前的任务创建中,我们只能以 JobBuilder.newJob(DataJob.class) 的形式向建造器传递一个 class,实际上 JobDetail 接口规定了一个方法 getJobDataMap(),用于传递数据。 2 初探 阅读全文
posted @ 2020-03-29 23:56 四维胖次 阅读(2072) 评论(0) 推荐(1)
Java 定时任务 Quartz (一)—— 初识
摘要:1 写在前面 最近公司的业务需要用到定时任务,框架选型用的是 Quartz ,这里作学习记录。 2 Quartz 主要成员 Quartz 的核心由三大接口组成,分别是 Job,Trigger,Scheduler 2.1 Job 描述执行具体的任务,其结构与 Runnable 类似,只有一个 void 阅读全文
posted @ 2020-03-29 23:55 四维胖次 阅读(818) 评论(0) 推荐(0)
Java 并发编程——CopyOnWriteArrayList
摘要:1 简述 CopyOnWriteArrayList 是从 JDK5 开始引进的并发集合之一,另一个是 CopyOnWriteArraySet,JDK 并没有提供 Map 的实现,我们之后将实现它。 2 COW Copy-On-Write简称COW,是一种用于程序设计中的优化策略。思路是,从一开始大家 阅读全文
posted @ 2020-03-13 15:08 四维胖次 阅读(175) 评论(0) 推荐(0)
Java 并发编程——实现可监听线程
摘要:1 package cn.pancc.purejdk.concurrent; 2 3 import java.util.Objects; 4 import java.util.concurrent.CopyOnWriteArrayList; 5 6 /** 7 * The type Notifyin 阅读全文
posted @ 2020-03-13 14:15 四维胖次 阅读(701) 评论(0) 推荐(0)
Java 并发编程——优雅的停止线程
摘要:1 package cn.pancc.purejdk.concurrent; 2 3 import lombok.SneakyThrows; 4 5 import java.util.concurrent.TimeUnit; 6 7 /** 8 * @author pancc 9 * @versio 阅读全文
posted @ 2020-03-13 13:46 四维胖次 阅读(256) 评论(0) 推荐(0)
Spring AOP(一) —— 手动实现
摘要:1 前言 Spring 中使用了 jdk 代理 跟 CGLIB 代理 实现 AOP 编程,我们将使用 jdk 代理一个简单的例子概述 Spring AOP 遵循的约定编程。 2 手动实现 2.1 service 接口与实现(被代理类) 1 /** 2 * @author pancc 3 * @ver 阅读全文
posted @ 2020-02-29 17:07 四维胖次 阅读(406) 评论(0) 推荐(0)
Spring Cache 下对分页请求的正确缓存方式
摘要:前言 在 spring boot 应用程式开发的时候,在对 service 层加入缓存支持的过程中,遇到了处理分页缓存的难题,在摸索了多个解决方式后,找到了比较适合,特此记录 问题描述 在程序中存在 User与 Note 实体。假设用户此时需要从服务器获得 Note 数据,在大部分情况下,用户不需要 阅读全文
posted @ 2020-01-13 20:29 四维胖次 阅读(4301) 评论(0) 推荐(2)
记一次 Json 对象转换为 Java 对象的问题
摘要:1、描述 最近在使用 Jackson 将 Json 串转换回 Java 对象的时候遇到了 ClassCastException 错误,特此记述。 2、问题复现 问题出现的节点在于属性节点的 JavaType 不明确,比如使用了泛型 和 Object,如下: 1 @Getter 2 @Setter 3 阅读全文
posted @ 2019-12-10 17:11 四维胖次 阅读(666) 评论(0) 推荐(0)