- 博客(19)
- 收藏
- 关注
原创 缓存最终一致性解决方案
工作中,高QPS行为,目前业界最常用的解决方式,就是用redis,至于redis cluster 和 sentinal,后面有专题介绍,本章不做说明,默认集群是ok的,但怎样保证删除redis和数据库的数据最终一致性呢?今天要讲的是:延时双删策略注意:经常修改的数据表不适合使用redis,因为双删策略执行的结果是把redis中保存的那条数据删除了,以后的查询就都会去查询数据库。所以redis使用的是读远远大于写的数据缓存。一、场景理解:首先要理解在并发环境下redis数据一致性的问题所在在多线程并
2021-08-28 22:14:55 1057
原创 【并发编程】详解synchronized 和ReentrantLock
详解synchronized 和ReentrantLock实现原理概述synchronized1、用法ReentrantLock概述Java 中的并发锁大致分为隐式锁和显式锁两种。隐式锁就是我们最常使用的 synchronized 关键字,显式锁主要包含两个接口:Lock 和 ReadWriteLock,主要实现类分别为ReentrantLock 和 ReentrantReadWriteLock,这两个类都是基于AQS(AbstractQueuedSynchronizer) 实现的。还有的地方将 CAS
2020-10-28 09:44:27 451
转载 kafka详细总结
kafka详细总结message状态 :在Kafka中,消息的状态被保存在consumer中,broker不会关心哪个消息被消费了被谁消费了,只记录一个offset值(指向partition中下一个要被消费的消息位置),这就意味着如果consumer处理不好的话,broker上的一个消息可能会被消费多次。message持久化:Kafka中会把消息持久化到本地文件系统中,并且保持o(1)极高的效率。我们众所周知IO读取是非常耗资源的性能也是最慢的,这就是为了数据库的瓶颈经常在IO上,需要换SSD硬
2020-10-14 09:56:04 452
转载 Redis缓存击穿、雪崩、穿透!(超详细)
缓存的击穿、穿透和雪崩应该是再熟悉不过的词了,也是面试常问的高频试题。不过,对于这三大缓存的问题,有很多人背过了解决方案,却少有人能把思路给理清的。而且,网络上仍然充斥着,大量不太靠谱的解决方案,难免误人子弟。我的这篇文章,则会对这三大缓存问题,做一个深入的探讨和分析。最有价值的,不是答案本身,而是诞生答案的过程。缓存击穿缓存击穿是什么,大家应该心里都清楚,我只做一个简单通俗的解释:...
2020-04-21 20:26:45 36350 42
原创 分布式消息通信ActiveMQ
课程目标持久化消息和非持久化消息的发送策略消息的持久化方案及实践消费端消费消息的原理关于PrefetchSize的优化1、持久化消息和非持久化消息的发送策略1.1、消息同步发送和异步发送ActiveMQ支持同步、异步两种发送模式将消息发送到broker上。同步发送过程中,发送者发送一条消息会阻塞直到broker反馈一个确认消息,表示消息已经被broker处理。这个机制提供了消...
2020-02-29 12:48:57 319
转载 如何设计一个开放平台openapi?
1. 为什么要建开放平台从05年开始随着web2.0技术的快速发展,硅谷掀起了开放平台openapi的一股热潮,google开放了map api,还有很多互联网公司也推出了开放平台,但是真正引起人们注意的是twitter开放了社交api,一堆基于twitter开放平台的页游火了起来,如果不了解twitter的同学想想当年开心网和qq空间偷菜有多火就知道了,开心网是最先参考了twitter的开放平...
2019-08-30 22:08:14 10005
转载 优秀的API接口设计原则及方法
一旦API发生变化,就可能对相关的调用者带来巨大的代价,用户需要排查所有调用的代码,需要调整所有与之相关的部分,这些工作对他们来说都是额外的。如果辛辛苦苦完成这些以后,还发现了相关的bug,那对用户的打击就更大。如果API经常发生变化,用户就会失去对提供方失去信心,从而也会影响目前的业务。但是我们为什么还要修改API呢?为了API看起来更加漂亮?为了提供更多功能?为了提供更好的性能?还是仅仅觉得...
2019-08-30 21:48:01 2337
原创 深度剖析 MySQL 事务隔离!
深度剖析 MySQL 事务隔离!概述隔离级别MVCC一致性非锁定读和锁定读锁总结概述今天主要分享下MySQL事务隔离级别的实现原理,因为只有InnoDB支持事务,所以这里的事务隔离级别是指InnoDB下的事务隔离级别。隔离级别1、读未提交:一个事务可以读取到另一个事务未提交的修改。这会带来脏读,幻读,不可重复读问题2、读已提交:一个事务只能读取另一个事务已经提交的修改。其避免了脏读,仍然...
2019-06-27 16:46:25 209
原创 HashMap 全面解析
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。
2019-02-19 11:16:19 346
原创 java 高并发 之 线程池(Executor)
java 中线程池(Executor)及使用场景为什么需要线程池?使用线程池的好处Executor接口Executors类newFixedThreadPool()newCachedThreadPool()newSingleThreadExecutor()newScheduledThreadPool()为什么需要线程池?(1)因为服务器如果每一个请求都会创建一个新线程,会导致性能上的瓶颈,因为线...
2019-01-06 14:55:23 533
原创 java 高并发 之 锁
java 中主要锁的区别及使用场景synchronizedReentrantLockReentrantReadWriteLockStampedLock使用场景选择synchronizedsynchronized 是属于声明式加锁,可以修饰一个代码块、一个方法、一个类,一个静态方法。 // 修饰一个代码块 public void test1(int j) { synch...
2019-01-06 11:43:07 234
转载 MySQL数据库优化的几种方式
1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,...
2018-11-30 14:41:16 267
转载 (转)关于PermGenSpace内存溢出解决方案
(转)关于PermGenSpace内存溢出解决方案启动tomcat没有问题,并且还能够访问,但是当你访问的页面越来越多的时候,会突然间蹦出一个PermGen space内存溢出的异常。其实这个问题看起来是很简单的,只要修改一下永久域的大小就可以了。于是我的同事就发给我一段修改永久域大小的代码:JAVA_OPTS="-server-Xms800m -Xmx800m -XX:PermSize=12...
2018-11-30 14:01:51 360
原创 浅入java架构-Adapter-适配器的运用
浅入java架构-Adapter-适配器的运用本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl ...
2018-06-18 21:40:17 356
原创 再谈java自定义异常(Exception)
再谈java自定义异常(Exception)java学习书籍上,必然对java异常进行很详细的介绍,这里笔者不必再累述;如今分布式系统设计已经深入普及到我们工作挡住,随着系统的服务逐渐模块化,业务的复杂度日益增加,那么对异常的处理即打印异常到客户端,就显得十分重要了,项目研发过程中,兄弟们的资质参差不齐,所以,对异常的封装也是必不可少的工作。这里,笔者谈谈自己的异常设计感受,当然如果有更好的设计思...
2018-06-14 15:05:31 3079
原创 浅入java架构-Aspect-日志处理
浅入java架构-Aspect-1很多的架构师,或者高级程序员在面试新人的时候,都会在架构方面问一个非常常见且十分经典的知识:那就是怎样设计系统日志输出程序。毫无疑问,面试官想了解面试者的spring中aspect的编程思想及在程序的运用,从而了解面试者在以前的项目当中所担任的项目角色和所做的事情范围。闲话少说,今天笔者就spring中aspect,也就是面向切面编程,与广大java爱好者一起探讨...
2018-06-14 14:15:03 5312
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人