Fork me on GitHub
不卑不亢不慌不忙

life is struggle


  • 首页

  • 分类

  • 归档

  • 标签

  • 收集

  • 关于

  • 公益404

  • 搜索

“秒杀”问题的数据库和SQL设计

发表于 2017-11-23 | 分类于 笔记 | 阅读次数

问题的来源

最近发现很多人被类似秒杀这样的设计困扰,其实这类问题可以很方便地解决,先来说说这类问题的关键点是什么:

  1. 一定要高性能,不然还能叫秒杀吗?
  2. 要强一致性,库存只有100个,不能卖出去101个吧?但是库存10000实际只卖了9999是否允许呢?
  3. 既然这里说了是秒杀,那往往还会针对每个用户有购买数量的限制。
    总结一下,还是那几个词:高性能强一致性!

下文的所有解决方案是在 Mysql InnoDB 下做的。因为用到了很多数据库特性。其他的数据库或其他的数据库引擎会有不同的表现,请注意。

阅读全文 »

浅谈Java动态代理

发表于 2017-11-21 | 分类于 笔记 | 阅读次数

AOP的拦截功能是由java中的动态代理来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标类函数抛出异常时候执行。不同的切入时机对应不同的Interceptor的种类,如BeforeAdviseInterceptor,AfterAdviseInterceptor以及ThrowsAdviseInterceptor等)。

阅读全文 »

浅谈分布式锁

发表于 2017-11-17 | 分类于 笔记 | 阅读次数

前言

随着互联网技术的不断发展,数据量的不断增加,业务逻辑日趋复杂,在这种背景下,传统的集中式系统已经无法满足我们的业务需求,分布式系统被应用在更多的场景,而在分布式系统中访问共享资源就需要一种互斥机制,来防止彼此之间的互相干扰,以保证一致性,在这种情况下,我们就需要用到分布式锁。

阅读全文 »

Netty 架构原理图

发表于 2017-11-17 | 分类于 笔记 | 阅读次数


JVM内存回收算法

发表于 2017-11-06 | 分类于 笔记 | 阅读次数

上一篇说了虚拟机的内存模型,在说到堆内存的时候我们提到了,堆内存是Java内存中区域最大的一部分,而且垃圾回收器主要就是回收这部分的内容。那么这篇就来介绍一下垃圾回收器的原理以及回收的算法。

Java中的垃圾回收器(GC)是Java中比较有特色的一点,不需要我们手动的去管理一个对象,不想C++中的构造函数和析构函数一样,需要程序猿自己去手动的管理,很容易造成内存泄露的问题。当然如果学过OC语言的话,我们知道OC语言中有自动释放池的概念,当然我们使用retain/release进行手动管理对象的。所以从这方面我们可以看到Android(Java)在这方面和IOS(OC)相比的话,比较卡,因为Java中的垃圾回收器是需要算法计算的,这个可能会有点耗时,但是好处就是不需要人工管理。但是OC是需要手动管理的,这样系统就不需要复杂的算法去进行管理,运行速度就比Android流畅(当然IOS比Android流畅,有很多原因的,这个只是一方面内容)

阅读全文 »
123…20
Melodylican

Melodylican

life is struggle

98 日志
9 分类
78 标签
RSS
GitHub Twitter 微博
Creative Commons
友情链接
  • 阿里中间件技术团队
  • 阮一峰
  • 简单之美
© 2012 - 2019 Powered By Melodylican
个人专属
博客