后端
小丑————
程序员
展开
-
[go语言]-深入理解singleflight
文章目录@[toc]前言singleflight使用场景singleflight 简介singleflight的使用从singleflight的test探寻最简单用法验证并发重复请求singleflight的原理callGroupDo 函数参考你的鼓励也是我创作的动力Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0前言最近从java转到go,来公司第一个开发工作就是对一个资源请求去原创 2020-09-20 11:06:22 · 1664 阅读 · 0 评论 -
温故知新-分布式事务概述
文章目录摘要事务数据库本地事务分布式事务分布式事务的基础CAPBASE方案2PC3PCTCC本地消息表RocketMQ事务Saga事务总结参考你的鼓励也是我创作的动力Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0摘要本文主要回顾一下分布式事务的实现方案和基本原理事务事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执原创 2020-06-17 01:18:03 · 356 阅读 · 0 评论 -
温故知新-分布式-分布式Id生成算法&踩过的坑
文章目录分布式id特点常见的分布式id算法比较**UUID**数据库自增ID批量生成IDRedis生成IDTwitter的snowflake算法百度UidGenerator美团Leaf设计一个id生成算法主要方案踩过的坑参考你的鼓励也是我创作的动力Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0分布式id特点唯一性:确保生成的ID是全网唯一的。有序递增性:确保生成的ID是对于某原创 2020-06-15 15:20:17 · 314 阅读 · 0 评论 -
稳固知新-分布式-服务注册与发现
文章目录摘要CAP原则分布式系统-服务发现Zookeeper遵守CPEureka遵守APEureka组件Eureka缓存其它参考你的鼓励也是我创作的动力Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0摘要本文通过zk和eureka来探究分布式系统 CAP的原则、探究分布式系统中的服务发现不同方案的选择,两者有着不同的设计思路,探究不同,对比差异,方便学习,本文要求对zk和eurek原创 2020-06-15 12:10:59 · 461 阅读 · 0 评论 -
温故知新-分布式系统-分布式锁的实现原理和存在的问题
文章目录摘要锁分布式锁的特点分布式锁的实现方式MySqlzookeeper存在问题redisredis 最普通的分布式锁存在问题RedLock 算法实际使用总结参考你的鼓励也是我创作的动力Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0摘要本分旨在快速理解分布锁的实现原理,以及不同实现方式存在的问题,阅读此文需要对mysql、zk、redis有一定的了解。锁在Java中sync原创 2020-06-14 21:19:00 · 374 阅读 · 0 评论 -
温故知新-布隆过滤器的基本原理
文章目录摘要# 基本概念基本原理# 算法描述# 误判概率的证明和计算# 设计和应用布隆过滤器的方法# 典型应用场景参考阅读你的鼓励也是我创作的动力Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0摘要本文介绍了布隆过滤器的基本原理,布隆过滤器有非常多的应用场景,在项目开发、大数据推荐系统都有应用。# 基本概念布隆过滤器(Bloom Filter)是由布隆(Burton Howar原创 2020-06-11 17:34:03 · 435 阅读 · 0 评论 -
网络编程-Netty-Reactor模型
文章目录# 摘要高性能服务器Reactor模式Reactor单线程模型设计Reactor多线程模型设计主从Reactor多线程模型设计Netty Reactor模型设计参考你的鼓励也是我创作的动力Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0# 摘要在前两篇《快速理解Linux网络I_O》、《java的I_O模型-BIO&NIO&AIO》两边中介绍了Linux下的原创 2020-06-08 23:11:45 · 393 阅读 · 1 评论 -
温故知新-多线程-深入剖析AQS
文章目录摘要AbstractQueuedSynchronizer实现一把锁ReentrantLockReentrantLock的特点Synchronized的基础用法ReentrantLock与AQS的关联AQS架构图acquire获取锁tryAcquirehasQueuedPredecessorsacquireQueuedsetHeadshouldParkAfterFailedAcquireparkAndCheckInterruptcancelAcquireunlock解锁releasetryReleas原创 2020-06-07 21:09:09 · 462 阅读 · 0 评论 -
温故知新-多线程-深入刨析park、unpark
文章目录摘要park、unpark看一下hotspot实现参考你的鼓励也是我创作的动力Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0摘要本文主要介绍park、unpark的功能以及hotspot实现原理,为下一篇介绍ReentrantLock做铺垫!park、unparkLockSupport类是Java6引入的一个类,提供了基本的线程同步原语。LockSupport实际上是原创 2020-06-04 12:10:42 · 508 阅读 · 0 评论 -
温故知新-多线程-forkjoin、CountDownLatch、CyclicBarrier、Semaphore用法
Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0你的鼓励是我创作的最大动力原创 2020-06-03 10:17:34 · 251 阅读 · 0 评论 -
温故知新-多线程-Cache Line存在验证
文章目录简述缓存行Cache Line验证CacehLine存在?参考你的鼓励也是我创作的动力Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0简述本地旨在验证在《深入刨析volatile关键词》中提到的CPU Cache中缓存一致性协议可能会出现的CacheMiss;缓存行Cache Line缓存是由缓存行组成的。一般一行缓存行有64字节。CPU在操作缓存时是以缓存行为单位的,原创 2020-06-02 17:16:49 · 457 阅读 · 0 评论 -
温故知新-多线程-深入刨析synchronized
Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0你的鼓励是我创作的最大动力原创 2020-06-01 17:50:32 · 438 阅读 · 0 评论 -
温故知新-多线程-深入刨析CAS
Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0摘要本文从CAS的基本操作开始,逐步探究CAS的实现原理,本文涉及代码使用JDK1.8版本;CAS是什么?CAS是Compare And Swap (Compare And Exchange) 的简称,从因为的意思也很容易理解:比较并交换。先看一段代码,两个线程分别对atomicInteger加100,因为AtomicInteg..原创 2020-05-26 20:00:39 · 239 阅读 · 0 评论 -
温故知新-多线程-深入刨析volatile关键词
Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0摘要本文主要涉及Java中的编程语言&性能优化关键字,将从volatile的作用开启,再分析volatile实现的从而深刻立即理解volatile的作用;volatile的作用我在前几篇的文章编程语言&性能优化已经提到了volatile的作用;概括一下就是:线程可见防止指令重排volatile如何解决线程..原创 2020-05-26 01:58:10 · 264 阅读 · 0 评论 -
温故知新-java多线程&深入理解线程池
Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0摘要本文主要回顾java的JDK中的多线程的常见用法&线程池&锁等,以及之前文章里提到的编程语言&性能优化提到的volatile、内存屏障等;本文超级干!!!java中的线程创建线程的3种方式通过实现 Runnable 接口来创建线程通过继承Thread来创建线程通过 Callable 和 Fu..原创 2020-05-25 18:25:15 · 636 阅读 · 0 评论 -
温故知新-java的I/O模型-BIO&NIO&AIO
Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0摘要通过温故知新-快速理解Linux网络IO的回顾,我们了解Linux下网络编程的5种I/O模型&I/O多路复用,接下来回顾一下java中的I/O模型,包括BIO、NIO、AIO,为下一篇netty做铺垫。传统的BIO编程传统的BIO通信模型问题该模型最大的问题就是,客户端的线程个数和客户端的并发呈1:1的关系,线程..原创 2020-05-19 19:34:22 · 275 阅读 · 0 评论 -
温故知新-快速理解Linux网络I/O
Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0原创 2020-05-18 19:20:17 · 305 阅读 · 0 评论 -
追根溯源-编程语言&性能优化
Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0摘要昨天晚上莫名其妙的头脑风暴,凌晨4点多才睡着,脑子一直充斥这些语言:c、c++、java、python、js、php,线程、进程、网络IO、性能等等;重新探究事务原理能帮助各种实践遇到的各种疑问,这大概就理论指导实践;今天就来简单聊一聊,后续再写博客展开详细叙述。语言分类汇编:MASM编译:c、c++、oc混合语言(半..原创 2020-05-18 00:03:14 · 270 阅读 · 0 评论 -
温故知新-快速理解zookeeper功能&应用&选举机制
Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0zookeeper简介什么是zookeeperzooKeeper由雅虎研究院开发, 是Google Chubby的开源实现, 后来托管到Apache, 于2010年11月正式成为Apache的顶级项目。- 大数据生态系统里的很多组件的命名都是某种动物或者昆虫, 比如hadoop就是????, hive就是????。 zookeepe原创 2020-05-14 01:46:50 · 501 阅读 · 1 评论 -
温故知新-Mysql锁&事务&MVCC
Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0锁概述锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢)。在数据库中,除传统的计算资源(如 CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其..原创 2020-05-11 15:36:24 · 760 阅读 · 0 评论 -
温故知新-Mysql的体系结构概览&sql优化步骤
Mysql的体系结构概览整个MySQL Server由以下组成Connection Pool : 连接池组件Management Services & Utilities : 管理服务和工具组件SQL Interface : SQL接口组件Parser : 查询分析器组件Optimizer : 优化器组件Caches & Buffers : 缓冲池组件Pluggable Storage Engines : 存储引擎File System : 文件系统连接层最上层原创 2020-05-11 12:28:02 · 513 阅读 · 0 评论 -
温故知新-Mysql索引结构&页&聚集索引&非聚集索
索引索引概述MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。索引优势劣势优势类似于书籍的目录索引,提高数据检索的效率,降低数据库的IO成本。通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。劣势实际上索引也是一张表,该表中保存了主键与索引字段,并指向实体类的原创 2020-05-09 16:39:52 · 573 阅读 · 0 评论 -
使用wrk进行http压力测试
最近做了一些服务器的工作,在做http压力测试时,先是使用ab,发现mac上总是频繁出现各种问题,eg: "apr_socket_recv: Connection reset by peer (54)"等等;最后切到了wrk,简单易用,功能强大,可以支持lua脚本来创建复杂的测试场景推荐给大家。wrk只能运行于 Unix 类的系统上,不过Win10 RS及以上版本,启用Ubuntu子系统也可以使用。测试例子:wrk -c 1000 -t 4 -d 1 --latency http://www.baid原创 2020-05-09 12:13:02 · 493 阅读 · 0 评论 -
温故知新-java虚拟机
Posted by 微博@Yangsc_o原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0java虚拟机是什么?java虚拟机(java virtual machine,JVM),一种能够运行java字节码的虚拟机。作为一种编程语言的虚拟机,实际上不只是专用于Java语言,只要生成的编译文件匹配JVM对加载编译文件格式要求,任何语言都可以由JVM编译运行,比如kotlin、scala等。jvm有很多,..原创 2020-05-09 11:51:14 · 276 阅读 · 0 评论