avatar
文章
192
标签
94
分类
0

首页
书单
歌单
关于
LeFer
搜索
首页
书单
歌单
关于
详解Spring 5 Server-Sent Events(二) WebMVC
发表于2020-07-10
SSE,全称Server-Sent Events,作为一种半双工的前后端通信方式,由于实现方式简单、轻量,在后端向前端的主动推送场景中具备很好的应用效果,笔者最近在一个项目中多有使用,过程中也是查阅了不少资料和文档,也有所感悟,在此将整体做一次综述。这是一篇系列文章,共分三篇,这是第二篇。 详解Spring 5 Server-Sent Events(一) 基本介绍 详解Spring 5 Server-Sent Events(二) WebMVC 详解Spring 5 Server-Sent Events(三) WebFlux 引言Spring WebMVC Framework 5.2.0基于Servlet 3.1,需要中间件能支持Servlet 3.1 API,比如**Tomcat 8.5 **和 Jetty 9.3。 概述在WebMVC中实现发送事件,需要以下几步: 创建一个controller类并用@RestController注释标记它 创建一个接受Http GET请求的方法,该方法返回一个SseEmitter对象 在另一个线程中,获取这个SseEmitter实例,并 ...
详解Spring 5 Server-Sent Events(一) 基本介绍
发表于2020-07-10
SSE,全称Server-Sent Events,作为一种半双工的前后端通信方式,由于实现方式简单、轻量,在后端向前端的主动推送场景中具备很好的应用效果,笔者最近在一个项目中多有使用,过程中也是查阅了不少资料和文档,也有所感悟,在此将整体做一次综述。这是一篇系列文章,共分三篇,这是第一篇。 详解Spring 5 Server-Sent Events(一) 基本介绍 详解Spring 5 Server-Sent Events(二) WebMVC 详解Spring 5 Server-Sent Events(三) WebFlux 引言在性能可接受的web应用程序中,没有简单、通用的方法来实现服务端到客户端的异步通信。 HTTP是B/S中的一种请求-响应协议。客户端(通常是浏览器)向服务端提交请求,服务端向客户端返回一个响应。服务端只能向发出请求的客户端发送响应。在HTTP协议中,客户端是消息交换的发起者。 在某些情况下,需要服务端成为消息交换的发起方。实现这一点的方法之一是允许服务端将消息推送到支持发布/订阅模式的客户端中。客户端从服务端订阅消息,服务端向许多订阅的客 ...
WebFlux下的全局异常处理
发表于2020-07-09
Spring 5支持的WebFlux对于全局异常的捕捉与以前的WebMVC框架有了不同,不能靠@ControllerAdvice或@RestControllerAdvice打天下了。目前国内的资料比较少,而且语焉不详,下面我将处理方式分享出来,文末有我的项目代码供参考。 核心要点是要继承AbstractErrorWebExceptionHandler这个WebFlux下的全局异常处理类,然后重写getRoutingFunction。 需要注意的是AbstractErrorWebExceptionHandler中的构造方法中未对messageWriters进行初始化,源码如下: private List<HttpMessageWriter<?>> messageWriters = Collections.emptyList(); messageWriters是用于最终生成response body的,所以我们必须在实现类中对它进行初始化: public GlobalErrorWebExceptionHandler(ErrorAttributes errorA ...
WebFlux下访问H2控制台
发表于2020-07-06
在基于WebFlux和Netty的应用框架中,惯常通过http://ip:port/h2-console访问的H2控制台无法打开。这个时候,可以通过显式的去启动H2 Server来解决此问题。参考代码如下: @Component@Profile("test") // <-- up to youpublic class H2 { private org.h2.tools.Server webServer; private org.h2.tools.Server server; @EventListener(org.springframework.context.event.ContextRefreshedEvent.class) public void start() throws java.sql.SQLException { this.webServer = org.h2.tools.Server.createWebServer("-webPort", "8082&q ...
Push code to 2 repos
发表于2020-06-28
GitHub和CodingNet上已经创建好空仓库tools,拟将本机的项目代码同时提交到两个仓库 git initgit add .git commit "init"git remote add github https://github.com/frontc/tools.gitgit remote set-url --add github https://e.coding.net/lefer/tools.gitgit push -f --set-upstream github master
基于layer jars构建docker镜像
发表于2020-06-19
经过一番折腾之后,还是觉得老老实实的写Dockerfile更香,Spring Boot 2.3.1对layer jars的支持与2.3.0有所变化,网上的资料大部分都是过时了的,正确步骤如下: pom里开启layer jars支持 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <layers> <enabled>true</enabled> </layers> </configuration> ...
使用spring-boot-maven-plugin构建docker镜像
发表于2020-06-18
Spring Boot 2.3发布后带来了新特性之一就是对构建镜像的便捷支持,声称不用写dockerfile就能方便的构建docker image,最近刚好在写一个项目于是折腾了一下,只能说还不太适合国内用户,最终还是老老实实的写了dockerfile需要挂上代理才能勉强可用,下文记录折腾的过程。 更新 2020年6月19日尝试了诸如gcr.io的国内镜像、docker tag更改image的名字为原版gcr.io/等其他几种办法之后,发现只有挂全局代理才可以走通。 Windows下可以使用Proxifier设置全局代理,Proxifier的使用比较简单,网上说的比较多,如这一篇。 全局代理设置好,一切都OK了,如果走代理下载镜像比较慢,可以先把镜像从国内镜像源里拉到本地。然后再改Tag的名字,这样能跳过下载镜像的环节。 docker pull registry.cn-hangzhou.aliyuncs.com/lefer/paketo-buildpacks:0.3# docker tag imageid tag:versiondocker tag 87c89aeacd48 ...
ToMu设计文档
发表于2020-06-16
项目介绍ToMu 是 Together Music 的缩写。ToMu是基于网络开放的音乐资源基础上,让一对听众一起听歌的平台。ToMu的初衷是找回在随身听时代,两个人共用一副耳机一边散步一边听歌的感觉。 GitHub:**ToMu** 项目特性 无需登录,记住你的频率即可 一个频率只能两人在线 用户流程主流程 用户访问网站 用户创建一个频道 用户可以将频道链接或者频道号分享给其他人,其他人使用该频道号即可进入频道 用户在频道内可以添加歌曲 用户在频道内可以播放已经添加的歌曲 同一频道内的两个用户同时听到播放的歌曲 主要用例 界面草图 频道页 核心流程 接口定义访问ToMu API Doc 开发计划v0.1 实现单人创建频道,添加歌曲,播放歌曲 v0.2 实现另外用户进入频道,同步频道状态,同步播放歌曲 v0.3 … …
读《架构整洁之道》
发表于2020-06-09
总体评价这本书是我看过的架构领域的书中最好的一本,“神书”,作者比较系统的阐述了自己对架构的理解、对好的架构的理解、以及对如何做出好的架构设计的理解。作者本人在软件领域从业几十年,从他的口中听到的一些架构原则更透彻,能让你看到当时的来龙去脉。 阅读感悟 依赖倒置(DIP)本质上是一种解耦,解耦的目的是实现组件化的独立部署和独立开发能力。PS:顺便说一句,最早提出DIP原则的就是这本书的作者罗伯特老爷子。 所有的竞争问题、死锁问题、并发更新问题都是由可变变量导致的。如果变量永远不会被更改,那就不可能产生竞争或并发更新问题。如果锁状态是不可变的,那就永远不会产生死锁问题。所以架构师要做好可变性的隔离,区分出可变组件和不可变组件,尽可能的将处理逻辑归于不可变组件。 软件构建中层结构的主要目标是:第一、使软件可容忍被改动;第二、使软件更容易被理解;第三、构建可在多个系统中复用的组件。 SRP是康威定律的一个推论,即软件应与组织息息相关,每一个软件模块应该只对某一类行为者负责。单一职责原则放到组件层面就是共同闭包,即我们应该将会同时修改,会以同样目的而被修改的类整合成一个组件。 O ...
读《中台战略-中台建设与数字商业》
发表于2020-06-02
总体评价烂书一本,整本书就是云徙科技的广告吧。书的内容组织混乱,欠缺开创性的见解,东拼西凑,不值得一读。 阅读感悟 别人打广告要花钱,它打广告还能挣钱,靠的是什么?靠的是热的概念+敢想+敢写 书籍信息中文书名:中台战略:中台建设与数字商业作者:陈新宇 罗家鹰 邓通 江威
123…20
avatar
LeFer
日拱一卒,功不唐捐
文章
192
标签
94
分类
0
公告
不见五陵豪杰墓,无花无酒锄作田!
最新文章
从“被AI替代”到“驾驭AI”的超级个体路线图2026-01-25
可信数据空间:让数据像活性单元一样流动2026-01-09
软件企业管理漫谈之研发项目管理2024-09-30
说说Spring Modulith2023-06-15
如何向CEO证明科技投入产出的效能2023-06-07
最新评论
正在加载中...
标签
vmware 深度学习 certbot cdh lantern sse 数据仓库 spring cloud shadowsocks wordpress xml his nas 医疗 aria2 webmvc xfce redis 行业软件 pdf gitbook mdm jib spring security gitlab java 项目 AI sonar nodejs 常识 可信数据空间 token 微服务 k8s spring boot starter 机器学习 nginx spring spring modulith
网站资讯
文章数目 :
192
已运行时间 :
本站总字数 :
167.5k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2015 - 2026 By LeFer
沪ICP备2024075747号沪公网安备31011502401302号
搜索
数据库加载中