java
文章平均质量分 70
Allen716
这个作者很懒,什么都没留下…
展开
-
springboot使用@Async CompleteableFuture完成多个任务的异步回调
简介最近对代码进行优化,遇到一个场景:一个方法对多个RPC同时发起调用,每个RPC的响应事件在200ms左右而且是不受控制,有同事使用异步进行了实现,参考网上查的一些资料,大部分是如下这种描述资料地址回调的核心代码如下// 三个任务都调用完成,退出循环等待 while (!task1.isDone() || !task2.isDone() || !task3.isDone()) { sleep(1000); }这种实现不够优雅,...原创 2020-12-16 11:32:38 · 4192 阅读 · 0 评论 -
Groovy闭包理解
闭包的理解闭包(Closure)是很多编程语言中很重要的概念,那么Groovy中闭包是什么,官方定义是“Groovy中的闭包是一个开放,匿名的代码块,可以接受参数,返回值并分配给变量”,简而言之,他说一个匿名的代码块,可以接受参数,有返回值,那么到底是怎么样的,我们来探究一下:- 如何定义定义闭的语意 :{ [closureParameters -> ] statements }其中[closureParameters->]代表参数们,多参数用逗号分割,用->隔开参数与转载 2020-10-06 16:13:16 · 4083 阅读 · 0 评论 -
springcloud 微服务模式下的系统上下文全链路传递
原创 2020-05-30 14:13:50 · 1201 阅读 · 0 评论 -
Flink DataStream常用算子
Flink中的算子是将一个或多个DataStream转换为新的DataStream,可以将多个转换组合成复杂的数据流拓扑。在Flink中,有多种不同的DataStream类型,他们之间是使用各种算子进行的。如下图所示:以下列举下常用的算子,用到的代码例子都是Flink监听9000端口做为数据源。以下方法可以启动一个9000的socket端口服务。Linux平台上可以使用bashnc -lk 9000如果是 Windows 平台,可以通过https://nmap.org/ncat.原创 2020-05-27 16:44:43 · 564 阅读 · 0 评论 -
配置中心Apollo存储加密字段
一些比较重要的配置信息,比如密码之类的敏感配置,我们希望将配置加密存储,保证安全性。Apollo框架本身没有提供数据加密的功能,如果想要实现数据加密的功能有两种方式,第一种是改Apollo的源码,增加加解密的逻辑,第二种比较简单,基于第三方的框架来对数据进行解密。jasypt-spring-boot是一个基于Spring Boot开发的框架,可以将properties中加密的内容自动解密,在A...原创 2020-03-12 19:14:01 · 3527 阅读 · 0 评论 -
服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka
服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka这里就平时经常用到的服务发现的产品进行下特性的对比,首先看下结论:Feature Consul zookeeper etcd euerka 服务健康检查 服务状态,内存,硬盘等 (弱)长连接,keepalive 连接心跳 可配支持 多数据中心 ...原创 2019-01-27 16:31:36 · 219 阅读 · 0 评论 -
xxl-job 基于Quartz 的分布式任务调度平台
介绍XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 项目git地址 | 项目首页搭建项目、了解架构可以在项目官网学习。本文只做加强补充,如果没有涉及到的点可以提出,继续完善。...原创 2018-05-31 13:58:01 · 7946 阅读 · 2 评论 -
Quartz任务调度原理简析
1、Quartz任务调度的基本实现原理 Quartz是OpenSymphony开源组织在任务调度领域的一个开源项目,完全基于Java实现。作为一个优秀的开源调度框架,Quartz具有以下特点: (1)强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求; (2)灵活的应用方式,例如支持任务和调度的多种组合方式,支持调度数据的多种存储方式; (3)分布式和集群能...转载 2018-05-30 09:59:42 · 20395 阅读 · 0 评论 -
springboot 使用webflux响应式开发教程(二)
本篇是对springboot 使用webflux响应式开发教程(一)的进一步学习。 分三个部分: 1、数据库操作 2、webservice 3、websocket 创建项目,artifactId = trading-service,groupId=io.spring.workshop。选择Reactive Web , Devtools, Thymeleaf , Reactive Mong...原创 2018-05-16 16:12:05 · 4319 阅读 · 0 评论 -
springboot 使用webflux响应式开发教程(一)
什么是webFlux左侧是传统的基于Servlet的Spring Web MVC框架,右侧是5.0版本新引入的基于Reactive Streams的Spring WebFlux框架,从上到下依次是Router Functions,WebFlux,Reactive Streams三个新组件。Router Functions: 对标@Controller,@RequestMapping等标准...原创 2018-05-15 15:11:26 · 24605 阅读 · 2 评论 -
正确、安全地停止SpringBoot应用服务
引言Spring Boot,作为Spring框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,它能帮助我们很快捷的创建出独立运行、产品级别的基于Spring框架的应用,大部分Spring Boot应用只需要非常少的配置就可以快速运行起来,是一个与微服务(MicroServices)相当契合的微框架。网络上关于Spring Boot的Q转载 2018-01-19 21:59:05 · 914 阅读 · 0 评论 -
Jenkins 持续集成——springboot项目一键打包发布
最近小组项目几经坎坷终于上线,运维这块我并没有负责,但是发现同事们发包的时候还在获取代码-->本地编译打包-->远程登录linux服务器-->手动执行shell,在分布式部署的时候如果机器比较多这简直是一个噩梦。。。心里就琢磨找一找自动构建发布的工具吧,毕竟DevOps最近微软极力推崇,开源世界更是丰富多彩,惊喜不断。google一下发现jenkins是很不错的一款,跨平台,支持多语言,支持Doc原创 2018-01-08 16:43:20 · 30272 阅读 · 5 评论 -
spring mvc ajax请求form表单转换成json
在使用jquery发送ajax请求的时候,通过jquery的serialize()方法对表单进行处理发送到服务端是比较方便的。有一种场景是,字段大部分在form表单下,个别字段需要组装,如果需要组装的字段比较简单,可以使用serializeArray()将form序列化成array之后直接添加,无需拼接form表单。如果是复杂的对象原创 2017-12-07 14:21:31 · 2211 阅读 · 1 评论 -
Java HttpClient FeignClient
介绍:借用github上对Feign介绍的一句话——用Feign写HTTP客户端更轻松Feign的入门可以完全参考github上的介绍https://github.com/OpenFeign/feignFeign的内部机制是使用RestTemplate来实现本文主要介绍SpringCloud项目里Feign作为客户端使用的一些知识点需要注意的是单独使用Feign和Sprin原创 2017-12-07 19:31:21 · 12136 阅读 · 0 评论 -
idea使用spring boot 热更新、热加载
修改代码后无需重新make、build、run项目,直接看到结果两种方式第一种:适合Idea自动装载的Run或Debug1、Settings->Build project automatically2、Ctrl+Shift+A ->搜索registry,找到Registry...,注意是后面有三个点的那个,然后找到compiler.automake.allow.when.app.r原创 2017-11-09 10:30:53 · 34942 阅读 · 5 评论 -
【全文检索】Lucene初探
讲解之前,先来分享一些资料 首先呢,学习任何一门新的亦或是旧的开源技术,百度其中一二是最简单的办法,先了解其中的大概,思想等等。这里就贡献一个讲解很到位的ppt。已经被我转成了PDF,便于搜藏。 其次,关于第一次编程初探,建议还是查看官方资料。百度到的资料,目前Lucene已经更新到4.9版本,这个版本需要1.7以上的JDK,所以如果还用1.6甚至是1.5的转载 2016-03-04 09:12:41 · 558 阅读 · 0 评论 -
关于面向对象编程中很多人用get()和set()方法,而不用public的一点总结
在很多程序中,都喜欢定义一个privata变量,然后为这个私有变量加上get(),set()方法。那为什么不直接定义一个public变量呢?这样做到底有什么好处和意义呢?难道真的仅仅只是为了代码规范?别逗了,不管你信不信,反正我是不信!带着这个问题我在网上寻找答案,真是众说纷纭啊,每个人都能说出一点点道理,但是却都不足以说服我!(所以在这里做一些总结,和大家分享,我们共同学习,共同进步。如果有什么转载 2015-04-24 18:27:09 · 16559 阅读 · 11 评论 -
JAVA解析XML简单实例
Java解析XML文档(简单实例)——dom解析xml一、前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX转载 2013-08-05 18:57:19 · 1321 阅读 · 0 评论 -
进程间通信
今天有人问我一个问题:想通过另外的程序给已经运行的程序传递一个参数。用术语解释就是进程间通信。由于以前没有涉猎此类问题,所以在此做一下笔记。进程的通信方式 (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。 (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外原创 2012-12-22 12:19:51 · 346 阅读 · 0 评论