• Spring Cloud Gateway之自定义过滤器

    spring cloud gatway内置了很多过滤器用于在请求转发前后做一些特定处理,除了针对所有路由的全局过滤器之外,还提供了针对单个路由的诸如添加请求头、添加请求参数、重试、重定向、修改请求正文、修改应答主体等等数十个过滤器,官方提供的过滤器使用可参照官方文档:[Spring cloud GatewayFilter Factories](https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.0.RELEASE/reference/html/#gatewayfilter-factories) 在官方提供的默认实现无法满足需求时,我们也可仿照它的实现方式,定制我们自己的过滤器,添加到它的过滤器工厂中,成为网关请求转发处理中的一环。...

    nginx添加模块之动态加载

    之前的文章讲过如何如何在已安装的nginx上添加Brotli模块,使用的是重新编译nginx可执行文件的方式加入新的模块。但自1.9.11版本后的nginx已支持动态模块,自此,给nginx添加模块再也不用重新编译nginx可执行文件了,本文即是讲解如何将nginx模块编译成so库,供nginx在运行时有选择性的加载。...

    Spring Boot应用程序在Linux下注册成系统服务

    通常,将一个Java程序打包成jar之后,可通过`java -jar xxx.jar`命令运行,但若是以此方式进行部署,则会发现一些不人性化的地方,例如此程序将会一直在前台运行,终端关闭该Java进程也会停止,即便使用`nohup`或是`screen`将程序转入后台运行,在需要对Java程序进行关闭、重启、设置开机自启等管理操作时,都需要繁琐的操作,于是,就有了更简便的方式:将该Java服务注册成Linux系统中的服务,使用Linux系统的服务管理机制来管理Java程序。...

    nginx添加Brotli模块

    Brotli是谷歌在2015 年 9 月推出的无损压缩算法,通过变种的 LZ77 算法、Huffman 编码以及二阶文本建模等方式进行数据压缩,能达到比Gzip更高的压缩率。 将此算法使用于网站静态文件传输时的压缩处理,能有效减少网站传输的内容大小,加速网站加载速度,提升网站终端用户的使用体验。 谷歌官方提供了此算法的nginx module:[ngx_brotli](https://github.com/google/ngx_brotli)版本,本文内容即介绍如何在已安装的nginx上新增[ngx_brotli](https://github.com/google/ngx_brotli)模块开启Brotli压缩,本文内容同样适用于在已安装的nginx上增加其他nginx模块。...

    Ubuntu平台上Spring Boot整合canal进行MySQL数据增量订阅与消费

    早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。 canal在此背景下诞生,简单的说canal是基于数据库增量日志解析,提供增量数据订阅&消费。使用canal能做啥?可以用来做数据库备份、主从同步、数据变动监听等等。我刚使用canal是因为业务上有监听数据库数据变动的需求,所以使用了canal来实现,本篇文章将介绍如何在Ubuntu上搭建canal server,并用spring boot构建canal client进行增量数据订阅和消费。...

    RestTemplate日志配置

    Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,使用RestTemplate能够快捷简便的调用其他HTTP服务。 在日常使用RestTemplate的过程中,常需要跟踪RestTemplate发出的请求日志,通过分析发出的请求头、请求方法、请求体等信息进行程序调试,本文将介绍如何自定义RestTemplate日志,以便使用时能够更好的通过日志分析进行程序调试。...

    Spring Boot中集成使用Redis

    Spring Boot 对常用的数据库支持外,对 Nosql 数据库也进行了封装自动化。 Redis 是目前业界使用最广泛的内存数据存储。相比 Memcached,Redis 支持更丰富的数据结构,例如 hashes, lists, sets 等,同时支持数据持久化。除此之外,Redis 还提供一些类数据库的特性,比如事务,HA,主从库。可以说 Redis 兼具了缓存系统和数据库的一些特性,因此有着丰富的应用场景。本文介绍 Redis 在 Spring Boot 中两个典型的应用场景。...

    使用Certbot申请SSL证书升级网站为HTTPS

    随着https越来越火,似乎也将是未来的大势所趋,这几天就抽空把自己的博客也给升级了一下。 部署https需要有一张被信任的 CA ( Certificate Authority )也就是证书授权中心颁发的 SSL 安全证书,虽然也可以自己签发SSL 安全证书,但自己签发的安全证书不会被主流的浏览器信任,所以需要被信任的证书授权中心( CA )签发的安全证书。而一般的 SSL 安全证书签发服务都比较贵,比如Godaddy、GlobalSign等机构签发的证书一般都需要20美金一年甚至更贵,不过为了加快推广 https 的普及,EEF 电子前哨基金会、Mozilla 基金会和美国密歇根大学成立了一个公益组织叫ISRG ( Internet Security Research Group ),这个组织从 2015 年开始推出了Let’s Encrypt免费证书,Let’s Encrypt免费证书有效期为3个月,不过可以无限次续签,作为个人使用已经绰绰有余了,所以这里我选择了Let’s Encrypt提供的免费证书来部署 https。...

    以太坊代币发行:使用Truffle+OpenZeppelin发行代币到Ropsten测试网络

    OpenZeppelin是一套能够给我们方便提供编写加密合约的函数库,同时里面也提供了兼容ERC20的智能合约,通过OpenZeppelin可以简化加密代币开发的过程。 本文主要介绍如何使用Truffle + OpenZeppelin构建代币合约,以及如何使用Truffle和Remix在线IDE两种不同的方式编译部署智能合约。完整介绍以太坊智能合约开发部署流程,分分钟发行自己的区块链代币。...

    以太坊客户端:Geth(Go Ethereum)命令文档

    Geth(Go Ethereum)是以太坊协议的三个原始实现之一(另外两个是C ++和Python),提供了强大的命令行工具,在以太坊智能合约开发中经常需要使用到geth。 本文中的命令主要来自对geth help的翻译,除本文常用基础命令外,更多信息可以翻阅官方Github地址:[https://github.com/ethereum/go-ethereum](https://github.com/ethereum/go-ethereum)...