- 博客(19)
- 收藏
- 关注
原创 Spring GraphQL使用入门
一、GraphQL简介GraphQL是一种API查询语言,与SQL和数据库无关,但是两者有相似性,SQL是数据库查询语言,而GraphQL是API查询语言。它允许客户端定义响应结构(返回的字段及其类型),服务端接收请求后将返回指定的响应参数。例如下面请求示例要求返回id为1000的human的name和height:query { # query默认可以省略不写 human(id: "1000") { name height }}下面是服务端响应:{ "data":
2021-08-19 17:22:25 3858
原创 spring cloud stream 3.x简单使用
spring cloud stream 3.x较之前版本有很大的不同,废除了@Input、@Output、@EnableBinding、@StreamListener等注解,下面以kafka作为示例进行简单的使用说明。引入gradle依赖ext { set('springCloudVersion', "2020.0.0")}dependencies { implementation 'org.springframework.cloud:spring-cloud-stream-binder
2021-07-15 19:07:44 2695 1
原创 Spring Data JPA使用sequence生成主键
一、实体类配置@Id@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "operator_seq")private Long id;二、说明表示使用名为"operator_seq"的序列,默认分配的值为50(可以在@SequenceGenerator(name = “operator_seq”, allocationSize = 50)中进行更改)。实际使用中发现,批量保存多条记录时(repository.saveA
2021-06-25 17:09:03 1607
原创 lua脚本实现spring-redis zadd只更新score不新增的操作
spring redis使用zadd时,发现不支持xx、nx等指令,无法在zadd的时候进行存在只更新,不存在则不做处理的操作,于是使用lua脚本进行了实现 public void zaddWithXX(String key, Object value, double score){ String script = "tonumber(ARGV[2]) redis.call('zadd',KEYS[1],'xx',ARGV[2],ARGV[1])"; DefaultR
2021-01-30 14:39:22 1292
原创 使Spring Boot 自定义注解支持EL表达式
自定义注解自定义DistributeExceptionHandler注解,该注解接收一个参数attachmentId。该注解用在方法上,使用该注解作为切点,实现标注该注解的方法抛异常后的统一处理。/** * @Author: Lijian * @Date: 2019-09-06 09:26 */@Target(ElementType.METHOD)@Retention(Rete...
2019-09-06 17:54:26 8378 1
原创 重构-改善既有代码的设计——笔记
重构手法抽取函数(extract method)抽取类(extract class)移动函数(move method)使用查询替代临时变量(replace tem with query)使用状态模式/策略模式替代类型码(replace type code with state/strategy)使用多态替代条件判断(replace conditional with polymorph...
2019-09-04 15:20:57 547
原创 commons-net FTP文件上传
依赖<dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.6</version></dependency>代码FTPFileWriterpackage ...
2019-08-22 13:35:41 561
原创 spring sso自定义授权页面
简介本次教程承接Spring Boot + Spring Security Oauth 搭建SSO服务器和客户端教程,源码tag为:0.0.2-SNAPSHOT,在之前的版本基础上进行了如下改进:用户、客户端使用数据库进行存储自定义用户授权页面用户用户的配置可参考Spring Security 快速入门授权客户端客户端的配置与用户配置极为类似,代码如下。实体类...
2019-06-26 11:23:32 474
原创 基于Spring Cloud Gateway + STOMP 实现WebSocket负载均衡
背景介绍前段时间项目中有服务端推送的业务场景,首先映入脑海的便是WebSocket和SSE,相较之下,我们决定使用WebSocket,但经过仔细分析与尝试以后,发现如下难点亟需攻克,否则方案就得搁浅。zuul 1.0对WebSocket支持并不理想,连接一段时间后就会自动掉线:Whoops! Lost connection to http://localhost:7000/web-sock...
2019-05-28 22:19:36 9187 6
原创 Spring Cloud Feign 第一次调用超时(Read timed out)的解决办法
feign-client在第一次调用微服务会出现Read timed out异常,提示的报错信息:java.net.SocketTimeoutException: Read timed out这是由于在调用其他微服务接口前,会去请求该微服务的相关信息(地址、端口等),并做一些初始化操作,由于默认的懒加载特性,导致了在第一次调用时,出现超时的情况,解决方法主要有两种:第一种办法是设...
2019-05-28 13:50:21 25176
原创 微信App支付和扫码支付对接的关键技术点(避坑文档)
构造发起支付的请求对象,该对象是根据微信支付文档来的@Setter@Getter@AllArgsConstructor@NoArgsConstructor@Builder@JacksonXmlRootElement(localName = "xml")public class WeChatPayRequest { @JacksonXmlProperty(localName...
2019-05-25 17:58:53 1231 3
原创 Spring Data MongoDB 模糊查询+精确查询
实体类Person@Document@Data@NoArgsConstructor@AllArgsConstructorpublic class Person { @Id private String id; private String name; private String nickName;}StudentRepositorypu...
2019-05-22 14:57:36 4951
原创 责任链模式(Responsibility Chain Pattern)在实际场景中的应用
背景最近项目中遇到这样的业务场景:用户可以将自己的视频通过系统分发到下游平台需要经历若干个步骤:初始化分发任务,记录一条分发任务,状态为分发中视频格式转换,不同的平台所需要的格式不同,此处需要调用第三方格式转换接口,同时还需要提供一个格式转换通知接口,供第三方处理完成后通知系统处理结果。视频码率转换,生成一个低码率的文件,供用户预览。与上一步一样,此处也需要调用第三方转码接口,同时还需...
2019-05-20 18:32:02 2139
原创 开源ETL利器—Kettle的实战教程
1. Kettle的简单介绍Kettle(现名Data Integration)是一款使用Java编写的功能强大的ETL(Extract Transform and Load)工具,支持关系型数据库(PostgreSQL、MySQL、Oracle等)、非关系型数据库(MongoDB、ElasticSearch等)以及文件之间的大规模数据迁移。2. 常用组件Kettle提供了极为丰富的组...
2019-04-26 22:48:24 2175
原创 Maven私服Nexus的安装与使用
Nexus是一个强大的Maven仓库管理器,我们可以将项目发布到Nexus,当工程需要使用该项目的依赖时,只需在pom.xml中添加该项目的依赖,并指定Nexus仓库地址即可。下面将举例说明如何使用Nexus。1.安装1.1 安装Docker并加速yum update && yum install dockersudo mkdir -p /etc/dockersud...
2019-04-26 22:45:25 195
原创 CentOS7下将jar包注册成系统服务
准备工作wget安装: yum install wgetJDK安装及配置:下载jdk安装包: wget http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-i586.rpm?AuthParam=1520234485_3d07d60224...
2019-04-26 22:43:46 2387
原创 Spring Data ElasticSearch 实现相似度查询
在使用ElasticSearch时,有时会遇到这样的类似的业务场景:检索与给定手机号相似的人,例如给定手机号18000000000,系统需检索出诸如手机号为18000000001,18000000002,18100000001等等相似的人的信息。就以上的业务场景,我们使用ElasticSearch的Fuzzy Query来实现手机号的相似度检索。本例使用的spring boot版本为2.0.6.R...
2019-04-26 22:40:57 6833 2
原创 Spring Boot + Spring Security Oauth 搭建SSO服务器和客户端教程
简介本项目分为auth-server(auth-server-demo)和auth-client(auth-clien-demo)两个部分,两个项目都采用Spring boot搭建,为了演示方便,采用内存存储用户和token,登录与授权页面都引用自带的页面,虽然样式不美观,但不影响演示效果。auth-server-demo引用了spring-cloud-starter-oauth2依赖,他...
2019-04-26 11:12:08 2514
原创 Spring Security 快速入门
Spring Security是一个强大的、支持深度定制的安全控制框架,他为Java应用提供了认证(Authentication)和授权(Authorization)功能,使得开发者更加关注于业务本身,而无需花大力气操心整个应用的安全和权限控制问题。下面将会介绍Spring Security的简单集成与使用。本次快速入门分成两个部分:自定义UserDetailsService和自定义Authe...
2019-04-22 14:35:48 1266 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人