摘要:
出处: Java Volatile关键字 Java的volatile关键字用于标记一个变量“应当存储在主存”。更确切地说,每次读取volatile变量,都应该从主存读取,而不是从CPU缓存读取。每次写入一个volatile变量,应该写到主存中,而不是仅仅写到CPU缓存。 实际上,从Java 5开始, 阅读全文
摘要:
出处:序列化和反序列化的底层实现原理是什么? 一、基本概念1、什么是序列化和反序列化 (1)Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程; (2)**序列化:**对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可 阅读全文
摘要:
1. Redis服务端是个单线程的架构,不同的Client虽然看似可以同时保持连接,但发出去的命令是序列化执行的,这在通常的数据库理论下是最高级别的隔离2. 用MULTI/EXEC 来把多个命令组装成一次发送,达到原子性(有点像命令具有打包功能)3. 用WATCH提供的乐观锁功能,在你EXEC的那一 阅读全文
摘要:
出处: 一文读懂什么是Java中的自动拆装箱 本文主要介绍Java中的自动拆箱与自动装箱的有关知识。 基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型。它们是我们编程中使用最频繁的类型。 Java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称 阅读全文
摘要:
1.SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 在redis中,存储的字符串都是以二级制的进行存在的。 举例: 设置一个 key-value ,键的名字叫“andy” 值为字符'a' 我们知道 'a' 的ASCII码是 97。 阅读全文
摘要:
其实,高并发并不神秘,说白了就是想办法搞定两个指标:提升QPS(Query Per Second,每秒查询率 ,每秒的响应请求数,也即是最大吞吐能力)、降低RT(响应时间,系统对请求作出响应的时间(一次请求耗时))。并且同时保证数据的正确性、系统的可用性就OK了。 1、网站并发量上来了?啥都不要管, 阅读全文
摘要:
问题:秒杀页面中如果商品秒杀链接要是提前暴露出去可能有人直接访问url就提前秒杀了 解决:做个时间校验不就可以解决了吗?没到秒杀时间不给秒杀。这种方案也存在问题,既然我知道了秒杀请求链接,那我通过程序不断获取最新的北京时间,可以达到毫秒级别的,我就在00毫秒的时候请求,我敢说绝对比你人工点的成功率大 阅读全文
摘要:
出处: 使用Redis完成定时任务 场景 使用Java做过项目的人大概都用过定时器。一般来说,项目里订单模块和评论模块,都会涉及到定时任务执行。比如说: 用户下订单后,需要在5分钟内完成支付,否则订单关闭; 用户在完成订单后,如果没有评论,过一星期,系统自动评论,并完结。 我以前曾经做过一个租车系统 阅读全文
摘要:
介绍 RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue)协议的开源实现。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面都非常的优秀。是当前最主流的消息中间件之一。 RabbitMQ的官方 概念: Brocker:消息队列服务器实体 阅读全文
摘要:
出处: 多账户的统一登录 名称解释 这里的多账户区别于系统级别的,我们讲的多账户系统是指,在我们互联网应用当中,我们的应用会使用多个第三方账号进行登录,必须现在常用的APP(网易云音乐)登录方式包含:网易、微信、QQ 内容 通过这一篇文章, 可以学到:多用户下面的技术方案细节,以及相应的表设计,流程 阅读全文