自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 insert into on duplicate key update - 返回主键问题

insert into on duplicate key update - 返回主键问题问题 - InsertOrUpdate 会修改内存主键双写逻辑测试验证Mybatis 获取主键的原理结论最终结论问题 - InsertOrUpdate 会修改内存主键在项目中,需要批量插入销售记录数据进入 record 表。这张表有自己的唯一键 sale_no 作为唯一标识号。我们需要同步 Mysql 表与 ES 索引,设计成同时双写 mysql 和 es。代码如下双写逻辑SQLprivate void sav

2020-12-25 11:24:49 2463

原创 MySql 索引选择与使用

提起优化SQL,你可能会把它理解为优化索引。简单来说这也不算错,索引在SQL优化中占了很大的比重。索引用得好,可以将SQL查询的效率提升10倍甚至更多。但索引是万能的吗?既然索引可以提升效率,只要创建索引不就好了吗?实际上,在有些情况下,创建索引反而会降低效率。

2020-12-02 13:51:57 256

原创 Redis 与 Zookeeper 的分布式锁

Redis 与 Zookeeper 的分布式锁Redis Cluster 分布式锁实现基于 setnx 锁加锁解锁FAQZookeeper Cluster 分布锁的实现临时有序节点Zookeeper 实现分布式锁的功能FAQRedis 和 Zookeeper 分布锁实现比较在同一个JVM中,可以通过Volatile、Synchronized、ReentrantLock 三个关键字来实现线程的安全。而在分布式系统中这些是无法保证的,所以要通过分布式锁来实现。基于分布式锁的实现有两种主流方案,这次就针对

2020-10-27 10:32:18 169

原创 背压在 Reactor 中是怎么工作的?

背压在 Reactor 中是怎么工作的?一、什么是背压?一、什么是背压?Backpressure or the ability for the consumer to signal the producer that the rate of emission is too high - Reactor Reference背压或许是一种可以让消费者可以通知生产者生产速率太快了的能力在我们正式开始讨论背压概念前,必须先通过一个衡量尺度区分发布者( publisher )成两个两个组别,通过发布者是否

2020-09-20 14:47:28 904

原创 Java 8 Functional Interfaces – 什么时候/在哪里使用?

Java 8 Functional Interfaces – 什么时候/在哪里使用?一、定义函数式接口,lambda 表达式和 Stream API – Java 8的这三个功能将Java编程变成了一种称为函数式编程的新型编程样式。 Java仍然是一种面向对象的编程语言,但是从Java 8开始,随着新功能的引入,大多数编程都是在考虑功能而不是对象的情况下完成的。 在本文中,我们将看到 Java 8 函数式接口 @FunctionalInterface 注解,java.util.function包,以及如

2020-09-12 17:44:01 207

原创 Java8的函数式接口 @FunctionalInterface

Java8的函数式接口 @FunctionalInterface一、函数式接口二、函数式接口用法2.1 Function一、函数式接口在 Java 8 中,把那些仅有一个抽象方法的接口称为函数式接口。如果一个接口被@FunctionalInterface 注解标注,表示这个接口被设计成函数式接口,只能有一个抽象方法,如果你添加多个抽象方法,编译时会提示“Multiple non-overriding abstract methods found in interface XXX”之类的错误。标注为 @

2020-09-10 10:46:19 610

原创 Java8中 Predicate和 Function 函数接口有什么区别?

Java8中 Predicate和 Function 函数接口有什么区别?一、问题二、`Predicate` 和 `Function这是一个很基础的问题:但是区别它们的用法和场景仍然是非常重要的一、问题示例代码:Predicate<String> predicateTest = (s)-> s.length() > 5; System.out.println(predicateTest.test("Predicate"));Function<St

2020-09-08 23:29:52 924

转载 线程切换 publishOn 与 subscribeOn

线程切换 publishOn 与 subscribeOn一、概述二、Scheduler三、publishOn 与 subscribeOn1. `publishOn` 和 `subscribeOn` 例子1. 两者作用相似2. 两者的区别四、实际用途五、局限性一、概述在 Spring Reactor 项目中,有两个出镜较少的方法:publishOn 和 subscribeOn。这两个方法的作用是指定执行 Reactive Streaming 的 Scheduler(可理解为线程池)。为何需要指定执行 S

2020-08-28 00:28:41 1322 1

转载 Elasticsearch 常见的 8 种错误及最佳实践

目录Elasticsearch 常见的 8 种错误及最佳实践一、Mapper_parsing_exception二、BulkIndexError三、搜索超时错误:ConnectionTimeout,ReadTimeoutError,RequestTimeout 等增加 elasticsearch.requestTimeout减少每个请求返回的文档数量缩小时间范围调整内存设置优化查询、索引和分片。启用慢速搜索日志四、All Shards Failed五、进程内存锁定失败:“memory locking req

2020-08-25 16:20:40 986

转载 分布式ID方案总结

分布式ID方案总结ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并不适合在Innodb中来作为主键,自增ID比较合适,但是随着公司的业务发展,数据量将越来越大,需要对数据进行分表,而分表后,每个表中的数据都会按自己的节奏进行自增,很有可能出现ID冲突。这时就需要一个单独的机制来负责生成唯一ID,生成出来的ID也可以叫做分布式ID,或全局ID。下面来分析各个

2020-08-22 20:56:54 159

原创 Spring 设计模式概览

Spring 中常见的设计模式概览设计模式分类Spring 模块分类Spring 组件分类本篇文章,按照不同的方式,整理了设计模式在spring中的应用。设计模式分类工厂模式 :BeanFactory装饰器模式:BeanWrapper代理模式:AopProxy单例模式:ApplicationContext委派模式:DispatcherServlet策略模式:SimpleInstantiationStrategy适配器模式:HandlerApdapter模板方法模式:JdbcTemplat

2020-08-21 13:18:36 187

原创 Java Optional 最佳实践七条法则

Java Optional 最佳实践为什么需要Optional隐藏空指针不确定性什么是Optional?Optional 最佳实践七条法则1. 不要将 `null` 赋给 `Optional`2. 避免使用 `Optional.get()`,如果你不能证明存在可选项,那么永远不要调用 `get()`3. 不要在字段,方法参数,集合中使用 `Optional`4. 只有每当结果不确定时,使用 `Optional` 作为返回类型5. 不要害怕使用 `map` 和 `filter`6. 不要为了链方法而使用 `o

2020-08-20 20:42:41 1001

原创 map 和 flatMap 在反应式Reactor中的区别 - map VS flatMap

一、同步非同步方法的区别map 用于同步非阻塞的一对一转换flatMap 适用于异步非阻塞的1到N转换这两个区别在方法签名中可以发现:英文原版:map takes a Function<T, U> and returns a FluxflatMap takes a Function<T, Publisher> and returns a Flux中文译文:map 接受Function <T,U>并返回Flux flatMap 接受Functi

2020-08-20 11:54:58 1362

原创 publishOn Vs subscribeOn 在 Project Reactor 3 的使用区别

publishOn Vs subscribeOn 在 Project Reactor 3 的使用区别使用区分与差异使用如何使用publishOn和subscribeOnpublic class publishOnVsSubscribeOn { public static Flux comSubscribeOn(){ return Flux.just(1, 2, 3, 4) .subscribeOn(Schedulers.parallel())

2020-08-13 00:55:27 668

Java编程方法论 之 Spring Reactor Reactor-Netty Spring Webflux 全面解读.pdf

ChannelPool 设计实现解读 回到Connection的设定这节最初,我们主要是通过 ChannelPool 来解决与多个服务端交互以及与单 个服务端建立多个连接的问题。那么这里就来对 ChannelPool 其中的设计与实现进行探索一番。 ChannelPool ,顾名思义,就是一个管理 channel 的容器,里面包含了从容器里获取 channel , 将使用的 channel 放回容器中,还有一个就是关闭容器,于是,就有下面这个接口设计:

2020-08-20

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除