Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!

这是泥瓦匠的第104篇原创

文章工程:
* JDK 1.8
* Maven 3.5.2
* Spring Boot 2.1.3.RELEASE
* 工程名:springboot-webflux-4-thymeleaf
* 工程地址:见文末

一、前言

上一讲用 Map 数据结构内存式存储了数据。这样数据就不会持久化,本文我们用 MongoDB 来实现 WebFlux 对数据源的操作。

什么是 MongoDB ?

阅读全文

程序兵法:Java String 源码的排序算法(一)

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!

这是泥瓦匠的第103篇原创

《程序兵法:Java String 源码的排序算法(一)》

文章工程:
* JDK 1.8
* 工程名:algorithm-core-learning # StringComparisonDemo
* 工程地址:https://github.com/JeffLi1993/algorithm-core-learning

阅读全文

如何保存/恢复Java应用程序核心内存数据现场?


0. 背景

不论是单机应用还是分布式应用,总是会有些许迭代或者紧急Fix bug上线的神操作。但是如果不是那么幸运,当时还存在大量核心内存中数据在进行计算等逻辑,此时终止项目,就会出现核心数据或者状态丢失的不利情况,后续即使上线完成也要尽快追加数据。

那是否存在某种技巧???:在需要终止应用的时候,能够监听到终止操作,并保存核心数据现场,然后再终止应用,而后在应用恢复后,再进行核心数据恢复。

答案是肯定的。
阅读全文

设计一个分布式RPC框架


0 前言

我从事的是大数据开发相关的工作,主要负责的是大数据计算这块的内容。最近Hive集群跑任务总是会出现Thrift连接HS2相关问题,研究了解了下内部原理,突然来了兴趣,就想着自己也实现一个RPC框架,这样可以让自己在设计与实现RPC框架过程中,也能从中了解和解决一些问题,进而让自己能够更好的发展(哈哈,会不会说我有些剑走偏锋?不去解决问题,居然研究RPC。别急,这类问题已经解决了,后续我也会发文章详述的)。

阅读全文

告别Disruptor(一) 简洁优雅的高性能并发队列

几年前听说过Disruptor,一直没用过也没深究, 其号称是一个性能爆表的并发队列,上Github/LMAX-Exchange/disruptor 去看了看,官方性能描述文章 选了慢如蜗牛的ArrayBlockQueue来对比。在Nehalem 2.8Ghz – Windows 7 SP1 64-bit录得性能见后(其中P,C分别代表 Producer和Consumer):

1P – 1C 的吞吐量两千五百万次,1P – 3C Multicast 就降到了一千万次不到,对比我所认为的非线程安全1P -1C队列亿次每秒的量级,感觉并不强大。亿次每秒的队列加上线程安全,毛估估1P-1C性能减半五千万次每秒,1P-3C 再减少个30%三千五百万次每秒,应该差不多了吧。

阅读全文

Spring Boot 2 快速教程:WebFlux Restful CRUD 实践(三)

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!

这是泥瓦匠的第102篇原创

03:WebFlux Web CRUD 实践

文章工程:
* JDK 1.8
* Maven 3.5.2
* Spring Boot 2.1.3.RELEASE
* 工程名:springboot-webflux-2-restful
* 工程地址:见文末

一、前言

上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里我们不对数据库储存进行访问,因为后续会讲到,而且这里主要是讲一个完整的 WebFlux CRUD。

阅读全文

根据IP动态路由调用Dubbo服务

一、前言

前面我们探讨了如何获取某一个Dubbo的服务的提供者列表,本节我们探讨如何使用Dubbo的扩展,实现指定IP调用。

阅读全文

如何动态获取Dubbo服务提供方地址列表

一、前言

dubbo框架本身提供了丰富的负载均衡策略,比如轮询、随机、最少活跃调用数、一致性hash等,但是有时候我们需要自己根据业务指定某个ip来进行调用。要指定ip进行调用就需要先知道服务提供者的ip。本文我们先来探讨第一步,当服务注册中心使用zookeeper时候如何获取某一个服务的提供端的地址列表。

阅读全文

Spring Boot 2 快速教程:WebFlux 快速入门(二)

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!

02:WebFlux 快速入门实践

文章工程:

  • JDK 1.8
  • Maven 3.5.2
  • Spring Boot 2.1.3.RELEASE
  • 工程名:springboot-webflux-1-quickstart
  • 工程地址:见文末

一、Spring Boot 2.0

spring.io 官网有句醒目的话是:

BUILD ANYTHING WITH SPRING BOOT
阅读全文

慢谈 Redis 实现分布式锁 以及 Redisson 源码解析

# 产生背景 

Distributed locks are a very useful primitive in many environments where different processes must operate with shared resources in a mutually exclusive way.

在某些场景中,多个进程必须以互斥的方式独占共享资源,这时用分布式锁是最直接有效的。

随着互联网技术快速发展,数据规模增大,分布式系统越来越普及,一个应用往往会部署在多台机器上(多节点),在有些场景中,为了保证数据不重复,要求在同一时刻,同一任务只在一个节点上运行,即保证某一方法同一时刻只能被一个线程执行。在单机环境中,应用是在同一进程下的,只需要保证单进程多线程环境中的线程安全性,通过 JAVA 提供的 volatile、ReentrantLock、synchronized 以及 concurrent 并发包下一些线程安全的类等就可以做到。而在多机部署环境中,不同机器不同进程,就需要在多进程下保证线程的安全性了。因此,分布式锁应运而生。

阅读全文

Spring Boot 2.x 系列教程:WebFlux REST API 全局异常处理 Error Handling

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!

本文内容

  • 为什么要全局异常处理?
  • WebFlux REST 全局异常处理实战
  • 小结

摘录:只有不断培养好习惯,同时不断打破坏习惯,我们的行为举止才能够自始至终都是正确的。

一、为什么要全局异常处理?

阅读全文

解决方案:如何防止数据重复插入?

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!

目录

  1. 为啥要解决数据重复插入?
  2. 解决方案实战
  3. 可落地小总结
阅读全文

阿里 Java 手册系列教程:为啥强制子类、父类变量名不同?

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!

目录

  1. 父子类变量名相同会咋样?
  2. 为啥强制子类、父类变量名不同?
  3. 可落地项目小思考

一、父子类变量名相同会咋样?

阅读全文

k8s网络模型

一、前言

k8s对Pods之间如何进行组网通信提出了要求,k8s对集群的网络有以下要求:

  • 所有的Pods之间可以在不使用NAT网络地址转换的情况下相互通信
  • 所有的Nodes之间可以在不使用NAT网络地址转换的情况下相互通信
  • 每个Pod自己看到的自己的ip和其他Pod看到的一致

k8s网络模型设计基础原则:每个Pod都拥有一个独立的 IP地址,而且 假定所有 Pod 都在一个可以直接连通的、扁平的网络空间中 。 所以不管它们是否运行在同 一 个 Node (宿主机)中,都要求它们可以直接通过对方的 IP 进行访问。设计这个原则的原因 是,用户不需要额外考虑如何建立 Pod 之间的连接,也不需要考虑将容器端口映射到主机端口等问题。

阅读全文

品阿里 Java 开发手册有感

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!

file

一个优秀的工程师和一个普通的工程师的区别,不是满天飞的架构图,他的功底体现在所写的每一行代码上。
— 毕玄

1. 命名风格

阅读全文

return top