自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(148)
  • 收藏
  • 关注

转载 Redis zset 的一些操作命令

Redis zset 的一些使用 - 云+社区 - 腾讯云Redis基本命令一Sorted Sets操作 - CodeAntennaRedis Sorted Set有序集合 存储操作方法_SunshineBoySZF_51CTO博客最近做排行信息的时候用到了 Redis 的 Sorted Set, 写篇文章来和大家分享一波。Sorted Set (有序集合)通常我们也称为 zset,指的是在 redis 中,通常以 zset add 等命令操作zset 通常包含 3 个 关键字操作

2022-01-17 17:59:48 16727 1

转载 漫画算法:什么是跳跃表(skiplist)?Redis的zset数据结构

漫画算法:什么是跳跃表? - 简书漫画:什么是 “跳表” ?_程序员小灰的博客-CSDN博客https://segmentfault.com/a/1190000037473381引言Redis因为其完全基于内存、性能出色,加上具备丰富的数据类型,在电商环境中深受后端开发的喜爱。其中有序集合zset就是基本数据类型之一,并且每个member都带有score(可用于排序),因此很适合在打赏日榜、近一周收益这类场景中运用。数据结构初探有序集合对象的编码可以是ziplist或者skiplis

2022-01-17 17:57:33 473

转载 手撸5种常见限流算法 Guava RateLimiter

面试官:来,年轻人!请手撸5种常见限流算法! - 掘金限流算法(Guava RateLimiter) | Do Or Die面试官:来,年轻人!请手撸5种常见限流算法!瞬时流量过高,服务被压垮? 恶意用户高频光顾,导致服务器宕机? 消息消费过快,导致数据库压力过大,性能下降甚至崩溃?......在高并发系统中,出于系统保护角度考虑,通常会对流量进行限流;不但在工作中要频繁使用,而且也是面试中的高频考点。今天我们将图文并茂地对常见的限流算法分别进行介绍,通过各个算法的特点,给出限流...

2021-11-17 21:34:43 1327

转载 redis分布式锁的实现(setNx命令和Lua脚本)

redis分布式锁的实现(setNx命令和Lua脚本) - caibaotimes - 博客园分布式锁概览#在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用synchronized语法和ReetrantLock去保证,这实际上是本地锁的方式。但是现在公司都是流行分布式架构,在分布式环境下,如何保证不同节点的线程同步执行呢?实际上,对于分布式场景,我们可以使用分布式锁,它是控制分布式系统之间互斥访问共享资源的一种方式。比如说在一个分布式系统中,多台机

2021-10-19 21:29:45 1781

转载 springBoot+Lua+redis 实现限量秒杀抢购模块

springBoot+Lua+redis 实现限量秒杀抢购模块 | 惊鸿基于Lua简单实现秒杀场景_小熙的博客-CSDN博客【一】做一个秒杀系统【高并发减库存】秒杀抢购可以说是在分布式环境下一个非常经典的案例。和普通的电商流程不同,秒杀有如下特点:(1)低廉价格(2)大幅推广(3)瞬时售空(4)一般是定时上架(5)时间短、瞬时并发量高里边有很多痛点比如:1.高并发: 时间极短、 瞬间用户量大,而且用户会在开始前不断刷新页面,还会积累一大堆重复请求的问题,一瞬间的高QPS

2021-10-19 21:08:24 1678

转载 领域建模的贫血模型与充血模型

https://segmentfault.com/a/1190000023476636面试官问:能聊聊你对充血模型和贫血模型的理解吗?领域建模是通过识别领域对象与行为来连接与现实世界业务主体与操作的映射关系。对象与行为的组织设计原则更体现面向对象设计的思想,通过聚合、解耦、抽象、组合等多种设计方式达到系统可复用,可维护,易扩展的能力。在实际程序代码设计中,由于语言、结构、技术的不一样对领域建模代码落地也有所不同,且各有优缺点。一、贫血模型此种模型下领域对象的作用很简单,只有所有属性的ge

2021-10-19 18:06:09 454

转载 QLExpress基本语法

QLExpress: 规则引擎背景介绍由阿里的电商业务规则、表达式(布尔组合)、特殊数学公式计算(高精度)、语法分析、脚本二次定制等强需求而设计的一门动态脚本引擎解析工具。 在阿里集团有很强的影响力,同时为了自身不断优化、发扬开源贡献精神,于2012年开源。QLExpress脚本引擎被广泛应用在阿里的电商业务场景,具有以下的一些特性:1、线程安全,引擎运算过程中的产生的临时变量都是threadlocal类型。 2、高效执行,比较耗时的脚本编译过程可以缓存在本地机器,运行时的临时变量创建采用

2021-10-19 15:53:39 1884

转载 简述3种CQRS架构模式

简述3种CQRS架构模式_朱小厮的博客-CSDN博客团队开发框架实战—CQRS架构 - 简书关注点分离是一种有效整理架构思想的技巧,你应当把注意力集中在一个方面。Edsger W. Dijkstra命令/查询分离(CQS)1988 年,Bertrand Meyer 在面向对象的软件设计一书中设计了 CQS 原则。简单来说,这个原则是说程序应当要么修改系统(Command),要么返回查询结果(Query),软件中应当保持命令与查询的分离。尽管 Martin Fowler 在他

2021-10-18 21:20:33 2947

转载 Java各种规则引擎

Java各种规则引擎 - 简书一. Drools规则引擎简介:Drools就是为了解决业务代码和业务规则分离的引擎。Drools 规则是在 Java 应用程序上运行的,其要执行的步骤顺序由代码确定,为了实现这一点,Drools 规则引擎将业务规则转换成执行树。特性:优点:   1、简化系统架构,优化应用   2、提高系统的可维护性和维护成本   3、方便系统的整合   4、减少编写“硬代码”业务规则的成本和风险3.原理:使用方式:(1).

2021-10-18 14:51:14 4298

转载 self4j 与 logback 配置详解—logger、root

https://blog.csdn.net/u012129558/article/details/79947477https://segmentfault.com/a/1190000039127436背景java web 下有好几种日志框架,比如:logback,log4j,log4j2(slj4f 并不是一种日志框架,它相当于定义了规范,实现了这个规范的日志框架就能够用 slj4f 调用)。其中性能最高的应该使 logback 了,而且 springboot 默认使用的也是 logback 日志

2021-08-11 20:34:33 1222

转载 软件架构视图—4+1视图模式

https://www.cnblogs.com/PatrickLiu/p/6214857.html一、软件架构软件架构概念:将若干结构元素进行装配,从而满足系统主要功能和性能需求,并满足其他非功能性的需求,如可靠性、可伸缩性、可移植性和可用性。用来处理软件高层次结构的设计和实施。软件架构 ={元素,形式,关系/约束}软件架构涉及到抽象、分解和组合、风格和美学。用由多个视图或视角组成的模型来描述软件架构,该方法称为多重视图方法。使用多重视图的目的:基于多个并发视图的使用情况来说明描述软

2021-08-11 18:26:15 7285

转载 软件架构设计–五视图法

https://www.codenong.com/cs106852708/https://www.debugger.wiki/article/html/1564497985647291关于软件架构设计这里不再赘述,不清楚的去问度娘。本篇文章主要讲解软件架构设计的五视图法及每种视图如何设计。一、是什么1、逻辑架构  逻辑架构关注的是功能,包含用户直接可见的功能,还有系统中隐含的功能。或者更加通俗来描述,逻辑架构更偏向我们日常所理解的“分层”,把一个项目分为“表示层、业务逻辑层、数据访问

2021-08-11 18:24:49 12933

转载 Java各种规则引擎

https://www.jianshu.com/p/41ea7a43093chttps://segmentfault.com/a/1190000020330741?utm_source=tag-newesthttps://baike.baidu.com/item/%E8%A7%84%E5%88%99%E5%BC%95%E6%93%8E/3076955?fr=aladdin一、规则引擎使用场景:用于页面,流程,扩展点实现的选择;输出结果:实现的位置; 编排无数的条件积木和行为积木,达到业务逻

2021-07-26 18:26:52 24242 1

转载 Redis:HyperLogLog使用与应用场景

https://blog.csdn.net/maoyuanming0806/article/details/81814610https://www.zhihu.com/question/65980801Redis HyperLogLog介绍及应用简介Redis 在 2.8.9 版本添加了 HyperLogLog 结构HyperLogLog 是用来做基数统计的算法,即对集合去重元素的计数在输入元素的数量不超过2^64个,计算基数所需的内存最多12KB,该结构使用一种近似值算法,标准误差

2021-04-06 15:31:52 468

转载 Flink从入门到入土(详细教程)

https://www.cnblogs.com/javazhiyin/p/13597319.html和其他所有的计算框架一样,flink也有一些基础的开发步骤以及基础,核心的API,从开发步骤的角度来讲,主要分为四大部分1.EnvironmentFlink Job在提交执行计算时,需要首先建立和Flink框架之间的联系,也就指的是当前的flink运行环境,只有获取了环境信息,才能将task调度到不同的taskManager执行。而这个环境对象的获取方式相对比较简单// 批处理环境

2021-04-02 19:55:55 405

转载 不一样的Flink入门教程

https://segmentfault.com/a/1190000038292061https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247494829&idx=1&sn=a10a38a57c760fa33322a2af2fc25c63&chksm=ebd4adacdca324ba7f860ae89ffdfd58b17d40806ed8ca6b820758e17e57ab8b7d4301424653&t

2021-04-02 19:53:57 175

转载 Redis是单线程的,但Redis为什么这么快?

https://juejin.im/entry/6844903663224225806原文链接:zhuanlan.zhihu.com作者:程序猿的内心独白来源:今日头条近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据”,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题,这些看似不常见的概念,都与我们的缓存服务器相关,一般常用的缓存服务器有Redis、Memcached等,而笔者目前最常用的也只有Redis这一种。.

2020-10-27 14:52:16 875

转载 Mysql8中降序索引的底层实现

https://juejin.im/post/6844903874424209415https://www.cnblogs.com/ivictor/p/9072361.html什么是降序索引大家可能对索引比较熟悉,而对降序索引比较陌生,事实上降序索引是索引的子集。我们通常使用下面的语句来创建一个索引:create index idx_t1_bcd on t1(b,c,d);复制代码上面sql的意思是在t1表中,针对b,c,d三个字段创建一个联合索引。但是大家不知道的是,上面这

2020-10-16 18:08:28 392

转载 面试官:“准备用HashMap存1w条数据,构造时传10000还会触发扩容吗?“

https://juejin.im/post/6844903983748743175https://www.jianshu.com/p/6d7151c2a700//预计存入1w条数据,初始化赋值10000,避免resize。HashMap<String,String>map=newHashMap<>(10000)//for(inti=0;i<10000;i++)复制代码Java 集合的扩容Ha...

2020-10-09 14:58:31 970

转载 浅析Linux中的零拷贝技术

https://www.jianshu.com/p/fad3339e3448Netty、Kafaka都有使用零拷贝来提高读写速度。本文探讨Linux中主要的几种零拷贝技术以及零拷贝技术适用的场景。为了迅速建立起零拷贝的概念,我们拿一个常用的场景进行引入:引文##在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能。这时候服务端的任务是:将服务端主机磁盘中的文件不做修改地从已连接的socket发出去,我们通常用下面的代码完成:while((n = read.

2020-09-25 17:22:07 190

转载 从 synchronized 到 CAS 和 AQS - 彻底弄懂 Java 各种并发锁

https://juejin.im/post/6844903759047294983概述Java 中的并发锁大致分为隐式锁和显式锁两种。隐式锁就是我们最常使用的 synchronized 关键字,显式锁主要包含两个接口:Lock 和 ReadWriteLock,主要实现类分别为 ReentrantLock 和 ReentrantReadWriteLock,这两个类都是基于 AQS(AbstractQueuedSynchronizer) 实现的。还有的地方将 CAS 也称为一种锁,在包括 AQS 在内

2020-09-25 11:04:58 258

转载 详解synchronized与Lock的区别与使用

https://blog.csdn.net/u012403290/article/details/64910926###引言:昨天在学习别人分享的面试经验时,看到Lock的使用。想起自己在上次面试也遇到了synchronized与Lock的区别与使用。于是,我整理了两者的区别和使用情况,同时,对synchronized的使用过程一些常见问题的总结,最后是参照源码和说明文档,对Lock的使用写了几个简单的Demo。请大家批评指正。技术点:1、线程与进程:在开始之前先把进程与线程进行区分一下,

2020-09-16 17:09:17 409

转载 Thread.currentThread().interrupt()

https://www.zhihu.com/question/41048032作者:Intopass链接:https://www.zhihu.com/question/41048032/answer/89431513来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。首先,一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。所以,Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了。而 Thre.

2020-09-16 14:34:17 24966 1

转载 深入分析JVM逃逸分析对性能的影响

https://www.jianshu.com/p/04fcd0ea5af7逃逸分析(Escape Analysis)逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用,称为方法逃逸。甚至还有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量,称为线程逃逸。方法逃逸的几种方式如下:public class EscapeTest { public static Object obj; public void .

2020-09-15 20:45:44 123

转载 MYSQL MVCC实现原理

https://www.jianshu.com/p/f692d4f8a53ehttps://draveness.me/database-concurrency-control/MVCC(Multi Version Concurrency Control的简称),代表多版本并发控制。与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)。MVCC最大的优势:读不加锁,读写不冲突。在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加了系统的并发性

2020-09-14 17:08:50 408

转载 MySQL之char、varchar和text的设计

https://www.cnblogs.com/billyxp/p/3548540.htmlhttps://www.cnblogs.com/gomysql/p/3615897.html最近有表结构设计中出现了varchar(10000)的设计引起了大家的讨论,我们下面就来分析分析。首先我们先普及一下常识:1、char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。2、同时c.

2020-08-18 16:12:53 1744

转载 MySQL中int(M)和tinyint(M)数值类型中M值的意义

在一开始接触MySQL数据库时,对于int(M)及tinyint(M)两者数值类型后面的M值理解是最多能够插入数据库中的值不能大于M;后来工作后,也是一边学习一边使用,之后的理解是其中的M的意思是插入数据库中的值的字符长度不能大于M,例如,int(4),想要插入1234,1234的字符长度是4,就正好可以插入数据库,12341就不行,因为是5个字符长度,这也都是道听途说,自己从来没有验证过;如今,由于面试中经常会被问到有关数据库方面的知识,今天也想着深入了解下这个M代表的含义(上述两个理解都是错误的

2020-07-29 18:09:45 184

转载 spring cache相关注解介绍 @Cacheable、@CachePut、@CacheEvict

https://www.jianshu.com/p/49fc4065201ahttps://blog.csdn.net/poorCoder_/article/details/55258253https://www.cnblogs.com/fashflying/p/6908028.htmlspring cache的使用缓存某些方法的执行结果设置好缓存配置之后我们就可以使用 @Cacheable 注解来缓存方法执行的结果了spring cache的使用是非常简单的,只需要在方法上标注 @C

2020-07-27 19:49:47 841

转载 从原理层面掌握@RequestAttribute、@SessionAttribute的使用【一起学Spring MVC】

https://juejin.im/post/5d4c2886518825371070d83dhttps://zhuanlan.zhihu.com/p/51728248http://loveshisong.cn/%E7%BC%96%E7%A8%8B%E6%8A%80%E6%9C%AF/2015-12-25-SpringMVC%E4%B9%8BController%E6%8E%A7%E5%88%B6%E5%99%A8.html每篇一句改我们就改得:取其精华,去其糟粕。否则木有意义前言

2020-07-15 16:36:32 2270 2

转载 支撑马蜂窝「双11」营销大战背后的技术架构 营销活动&优惠券架构设计

https://juejin.im/post/5dce574c51882510b0450c09https://www.hyfzc.cn/2018/11/01/%E8%90%A5%E9%94%80%E6%B4%BB%E5%8A%A8-%E4%BC%98%E6%83%A0%E5%88%B8%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/(马蜂窝技术原创内容,公众号 ID: mfwtech)引言消费者的狂欢节「双 11」刚刚过去。在电商竞争环境日益激烈的今天,为了抓住流量

2020-07-10 16:34:49 3171

转载 MySQL在线DDL gh-ost 使用说明

https://my.oschina.net/u/3765527/blog/3037243https://www.cnblogs.com/zhoujinyi/p/9187421.htmldelete 语句不会释放空间,是标记删除,后面的inert可以复用被标记删除的空间,但依然相当于在大表操作。如果要释放空间,需要执行optimize table或alter table 等DDL背景: 作为一个DBA,大表的DDL的变更大部分都是使用Percona的pt-online-sch...

2020-07-10 15:07:56 527

转载 springboot+logback日志输出企业实践

https://segmentfault.com/a/1190000021150594https://juejin.im/post/5b51f85c5188251af91a7525一句话概括:在java应用开发过程中,日志输出与记录是重要一环,logback是当前的首选日志框架,本文将对springboot+logback的使用及在企业的实践进行详细描述。1.引言在java应用开发过程中,日志输出与记录是重要的一环,有了日志,我们可以定位错误与异常,追踪应用运行情况,记录应用访问时间等等。在学习

2020-07-05 12:15:18 350

转载 线程池原理及调度过程

https://blog.csdn.net/aiengelangte/article/details/803979521.关于线程池线程池的技术背景在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,...

2020-06-18 16:41:32 808

转载 Spring cloud系列九 Hystrix的配置属性优先级和详解

https://juejin.im/entry/5a5f3cfd518825732f7ec408https://github.com/Netflix/Hystrix/wiki/Configuration1. 概述本文对Hystrix的配置参数的覆盖优先级,可配置参数的种类、配置项进行详细的介绍。Hystrix可以配置属性的有以下类型:Execution:控制HystrixCommand.run() 的如何执行 Fallback: 控制HystrixCommand.getFallback

2020-05-24 23:51:11 526

转载 并发容器之CopyOnWriteArrayList

https://juejin.im/post/5aeeb55f5188256715478c21https://www.cnblogs.com/yangming1996/p/7953762.html1. CopyOnWriteArrayList 的简介java 学习者都清楚 ArrayList 并不是线程安全的,在读线程在读取 ArrayList 的时候如果有写线程在写数据的时候,基于 ...

2020-04-26 11:06:36 225

转载 CompletableFuture 使用介绍

https://www.javadoop.com/post/completable-future本文安利一个 Java8 的工具 CompletableFuture,这是 Java8 带来的一个非常好用的用于异步编程的类。还没使用过的小伙伴,赶紧用起来吧。本文不介绍它的实现源码,仅介绍它的接口使用,本文也不做它和 RxJava 等其他异步编程框架的对比。实例化首先,不管我们要做什么...

2020-04-22 20:31:09 257

转载 Java进阶(六)从ConcurrentHashMap的演进看Java多线程核心技术

http://www.jasongj.com/java/concurrenthashmap/本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为。同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1.8中ConcurrentHashMap的实现原理。原创文章,转载请务必将下面这段话置于文章开头处(...

2020-04-22 15:54:52 149

转载 Hystrix HystricCommand配置参数全解析

https://www.cnblogs.com/zhenbianshu/p/9630167.htmlhttps://juejin.im/post/5c4f18cb6fb9a049ff4e8524https://blog.csdn.net/tongtong_use/article/details/78611225前言不久前在部门周会上分享了 Hystrix 源码解析之后,就无奈地背上...

2020-04-22 13:47:13 3308

转载 Arthas排查java性能问题

https://alibaba.github.io/arthas/advanced-use.htmlhttps://zhuanlan.zhihu.com/p/115127052https://zhuanlan.zhihu.com/p/53984185https://zhuanlan.zhihu.com/p/58675154https://www.ruanyifeng.com/blo...

2020-04-01 21:09:50 1512

转载 理解Java的强引用、软引用、弱引用和虚引用

https://segmentfault.com/a/1190000020602887https://juejin.im/post/5b82c02df265da436152f5ad在介绍各种引用之前,先简单介绍下垃圾回收什么是垃圾回收垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死...

2020-03-27 17:53:47 369

空空如也

空空如也

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

TA关注的人

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