6 morningcat2018

尚未进行身份认证

我要认证

情深不寿,慧极必伤

等级
TA的排名 3w+

如何保证幂等性简略梳理

参考资料:https://www.cnblogs.com/aspirant/p/11628654.html保证幂等性通过代码逻辑实现boolean pay(int orderId,int accountId,BigDecimal amount);-- order_id-- 状态流转UPDATE user_order ua set ua.balance=ua.balance-21 ,ua.order_status=2 WHERE gs.order_id='123' and gs.order_s

2020-07-20 10:51:50

mysql符合某条件的记录是否存在?使用 Limit 1 代替 select(*)

根据某一条件从数据库表中查询 有与没有;平时我都是这样写SELECT count(*) FROM table_name WHERE a = 1 AND b = 2今天在公众号看到一种优化方案SELECT 1 FROM table_name WHERE a = 1 AND b = 2 LIMIT 1Integer exist = xxxDao.existXxxxByXxx(params);if ( exist != NULL ) { //当存在时,执行这里的代码} else { //

2020-07-16 18:12:50

深入理解 Kafka 读书笔记 6 -- 生产者拦截器

深入理解 Kafka 读书笔记 6 – 生产者拦截器拦截器是 Kafka 0.10.0.0 引入的功能分类生产者拦截器消费者拦截器功能可以用来在消息发送前做一些准备工作修改消息、完善消息过滤不需要发送的消息可以用来在发送回调逻辑前做一些定制化的需求统计类工作实现 org.apache.kafka.clients.producer.ProducerInterceptor<K,V> 接口onSendKafkaProducer 在将消息序列化和计

2020-07-14 14:28:11

深入理解 Kafka 读书笔记 5 -- 序列化器

深入理解 Kafka 读书笔记 5 – 序列化器概念生产者需要用序列化器把对象转换成字节数组才能通过网络发送给 Kafka 服务器消费者需要用反序列化器把从 Kafka 服务器中收到的字节数组转换成相应的对象序列化器与反序列化器需要一一对应序列化器需要实现 org.apache.kafka.common.serialization.Serializer 接口反序列化器需要实现 org.apache.kafka.common.serialization.Deserializer 接口kafka

2020-07-14 14:27:16

深入理解 Kafka 读书笔记 4 -- 生产者架构

深入理解 Kafka 读书笔记 4 – 生产者架构kafka 生产者架构消息在由 KafkaProducer 发往 Kafka 服务器(Broker or Kafka Cluster)之前,需要经历可能的拦截器、序列化器、分区器等一系列的作用;生产者客户端由两个线程协调运行主线程由 KafkaProducer 创建消息,然后通过可能的拦截器、序列化器和分区器的作用之后缓存到消息累加器( RecordAccumulator ,也称消息收集器)RecordAccumulator 主要用来缓存消

2020-07-14 10:32:20

深入理解 Kafka 读书笔记 3 -- java 基础 API

深入理解 Kafka 读书笔记 3 – java 基础 API基础 API<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.5.0</version></dependency>package morning.cat.kafka;i

2020-07-13 15:50:29

深入理解 Kafka 读书笔记 2 -- 基本概念

深入理解 Kafka 读书笔记 2 – 基本概念kafka 的功能消息系统Kafka 与传统的消息系统(消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能;存储系统Kafka 把消息持久化到磁盘,可以把 Kafka 作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为永久或启用主题的日志压缩功能;流式处理平台为多个流行的流式处理框架提供了可靠的数据来源和流式处理类库;kafka 系统的组成一个 Zookeeper 的集群元数据

2020-07-10 16:17:24

深入理解 Kafka 读书笔记 1 -- 环境搭建与脚本测试

深入理解 Kafka 读书笔记 1 – 环境搭建与脚本测试安装 JDK…Zookeeper 环境前提:JDK 已安装成功Zookeeper 环境搭建笔记Kafka 环境前提:JDK 已安装成功Zookeeper 已启动下载解压tar zxvf kafka_2.12-2.5.0.tgz配置vi conf/server.properties# 主要配置项broker.id=0# 对外提供服务的入口地址listeners=PLAINTEXT://localh

2020-07-10 16:13:51

Java并发学习笔记17 LockSupport

Java并发学习笔记17 LockSupport基于 java 1.8.0LockSupport 示例package new_package.thread.locksupport;import java.util.concurrent.locks.LockSupport;public class LockSupportTest { public static void main(String[] args) { Object object = new Object(

2020-07-09 16:43:48

Java并发学习笔记16 AQS 之 ReentrantReadWriteLock

bilibili-Java并发学习笔记16 AQS 之 ReentrantReadWriteLock基于 java 1.8.0P48_可重入读写锁底层源码分析及思想探究// ReadWriteLock 使用示例package new_package.thread.p45;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent

2020-07-06 18:28:08

Java并发学习笔记20 线程池 ForkJoinPool

bilibili-Java并发学习笔记20 线程池 ForkJoinPool基于 java 1.8.0P64_ForkJoinPool原理与构造方式详解分而治之工作窃取适合 CPU 密集型计算任务,不适合 IO 密集型任务 /** * @param parallelism 并行度级别 默认值 = java.lang.Runtime#availableProcessors * @param factory 创建新线程的工厂 默认值 = defaultForkJoin

2020-07-06 18:26:15

Java并发学习笔记19 线程池 ThreadPoolExecutor

bilibili-Java并发学习笔记19 Java线程池基于 java 1.8.0P52_Java线程池层次体系与设计原则ExecutorExecutorServiceAbstractExecutorServiceThreadPoolExecutor-> WorkerP53_线程池创建方式与工厂模式的应用创建 ThreadPoolExecutor 实例package new_package.thread.p52;import java.util.concurrent.*;

2020-07-04 14:35:55

Java并发学习笔记15 ReentrantReadWriteLock 概览

bilibili-Java并发学习笔记15 ReentrantReadWriteLock 概览基于 java 1.8.0package java.util.concurrent.locks;/** * ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。 * 只要没有 writer,读取锁可以由多个 reader 线程同时保持。写入锁是独占的。 * * 所有 ReadWriteLock 实现都必须保证 writeLock 操作的内存同步效果 * 也要保持与

2020-07-03 14:21:50

Java并发学习笔记14 AQS 之 ReentrantLock

bilibili-Java并发学习笔记14 AQS 之 ReentrantLock基于 java 1.8.0P46_可重入锁对于AQS的实现源码分析ReentrantLock 使用案例 Lock lock = new ReentrantLock(); lock.lock(); try { // do something } finally { lock.unlock(); }公平锁和非公平锁 // 默认非公平锁

2020-07-02 16:49:32

Java并发学习笔记13 AQS 概览

bilibili-Java并发学习笔记13 AQS 概览基于 java 1.8.0P45_AQS整体架构与设计原则剖析AbstractQueuedSynchronizer 源码package java.util.concurrent.locks;import java.util.concurrent.TimeUnit;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import sun

2020-07-02 13:44:58

Java并发学习笔记12 ThreadLocal

bilibili-Java并发学习笔记12 ThreadLocal基于 java 1.8.0P43_ThreadLocal底层源码剖析与解读本质上,ThreadLocal 是通过空间换时间,从而实现每个线程当中都会有一个变量的副本,这样每个线程就都会操作该副本,从而完全规避了多线程的并发问题。package java.lang;import java.lang.ref.*;import java.util.Objects;import java.util.concurrent.atomic.A

2020-06-30 20:56:22

Java并发学习笔记11 Future

bilibili-Java并发学习笔记11 Future基于 java 1.8.0P41_Future模式示例剖析与源码详解package java.util.concurrent;/** * Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。 * 计算完成后只能使用 get 方法来获取结果,如有必要,计算完成前可以阻塞此方法。取消则由 cancel 方法来执行。 * 还提供了其他方法,以确定任务是正常完成还是被取消了。一旦计算完成,就不能

2020-06-30 17:16:33

Java并发学习笔记10 CAS

bilibili-Java并发学习笔记10 CAS基于 java 1.8.0P39_CAS详解及透过字节码分析变量操作的原子性悲观锁synchronized 关键字与 Lock 等锁机制都是悲观锁:无论做任何操作,首先都需要先上锁,接下来再去执行后续操作,从而确保了接下来的所有操作都是由当前这个线程来执行的。乐观锁线程在操作之前不会做任何预先的处理,而是直接去执行;当在最后执行变量更新的时候,当前线程需要有一种机制来确保当前被操作的变量是没有被其他线程修改的;CAS 是乐观锁的一种非常

2020-06-30 14:51:36

Java并发学习笔记9 CountDownLatch CyclicBarrier

bilibili-Java并发学习笔记9 CountDownLatch CyclicBarrier基于 java 1.8.0P36_CountDownLatch使用场景与示例分析及底层源码解读package java.util.concurrent;import java.util.concurrent.locks.AbstractQueuedSynchronizer;/** * 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 * * 用给定的计数

2020-06-29 17:23:50

Java并发学习笔记8 volatile

bilibili-Java并发学习笔记8 volatile基于 java 1.8.0P33_volatile关键字作用与锁的关系深入详解volatile 的作用:实现 long/double 类型变量的原子操作volatile double a = 1.0;jdk1.5 AtomicLong防止指令重排序实现变量的可见性JMM使用 volatile 时,不再会从寄存器中获取缓存值,而是直接从内存中获取;volatile 与 锁 相似的特点:确保变量的内存可见性

2020-06-29 16:09:16

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享学徒
    分享学徒
    成功上传1个资源即可获取