sql的锁机制,是时刻贯彻在每一次的sql事务中的,为了理解更透彻,介绍锁之前,我们得先了解,锁是为了干什么!! 1、数据库异常情况 1.1先来聊聊数据可能发生个异常状况 1)脏读:读未提交,顾名思义,读到了不该读的东西,如: 事务B读到了事务A回滚的数据,就是脏读 2)不可重复读:读已提交,同个事务内,多次读取同个数据,却返回不同结果,偏向数据更新 事务B发生了不可重复读 3) 幻读:同个事务内,因其他事务插入或删除数据,导致读取到不同的数据量(本质和不可重复读相似) 事务B发生了幻读 1.2数据库用什么机制来处
实时数据处理是运行以现代技术为导向的业务的基础方面。客户比以往任何时候都想要更快的结果,并且会在获得更快结果的丝毫机会上背叛。因此,如今的组织都在不断地寻求减少响应的毫秒数。实时处理接管了之前使用批处理处理的大部分方面。实时处理需要对传入的数据流执行业务逻辑。这与将数据存储在数据库中然后执行分析查询的传统方式形成鲜明对比。此类应用程序无法承受先将数据加载到传统数据库然后再执行查询所涉及的延迟。这为流式数据库奠定了基础。流式数据库是可以接收高速数据并在移动中处理它们的数据存储,而无需混合使用传统数据库。它们不是传统数据库的直接替代品,但擅长处理高速数据。本文将涵盖流式数据库的四个关键设计原则和保
实时数据处理是运行以现代技术为导向的业务的基础方面。客户比以往任何时候都想要更快的结果,并且会在获得更快结果的丝毫机会上背叛。因此,如今的组织都在不断地寻求减少响应的毫秒数。实时处理接管了之前使用批处理处理的大部分方面。实时处理需要对传入的数据流执行业务逻辑。这与将数据存储在数据库中然后执行分析查询的传统方式形成鲜明对比。此类应用程序无法承受先将数据加载到传统数据库然后再执行查询所涉及的延迟。这为流式数据库奠定了基础。流式数据库是可以接收高速数据并在移动中处理它们的数据存储,而无需混合使用传统数据库。它们不是传统数据库的直接替代品,但擅长处理高速数据。本文将涵盖流式数据库的四个关键设计原则和保
大家好,我是飘渺。对于互联网来说,只要你系统的接口暴露在外网,就避免不了接口安全问题。如果你的接口在外网裸奔,只要让知道接口的地址和参数就可以调用,那简直就是灾难。举个例子:你的网站用户注册的时候,需要填写手机号,发送手机验证码,如果这个发送验证码的接口没有经过特殊安全处理,那这个短信接口早就被人盗刷不知道浪费多少钱了。那如何保证接口安全呢?一般来说,暴露在外网的api接口需要做到防篡改和防重放才能称之为安全的接口。防篡改我们知道http是一种无状态的协议,服务端并不知道客户端发送的请求是否合法,也并不知道请求中的参数是否正确。举个例子,现在有个充值的接口,调用后可以给用户增加对应的余额。ht
大家好,我是飘渺。对于互联网来说,只要你系统的接口暴露在外网,就避免不了接口安全问题。如果你的接口在外网裸奔,只要让知道接口的地址和参数就可以调用,那简直就是灾难。举个例子:你的网站用户注册的时候,需要填写手机号,发送手机验证码,如果这个发送验证码的接口没有经过特殊安全处理,那这个短信接口早就被人盗刷不知道浪费多少钱了。那如何保证接口安全呢?一般来说,暴露在外网的api接口需要做到防篡改和防重放才能称之为安全的接口。防篡改我们知道http是一种无状态的协议,服务端并不知道客户端发送的请求是否合法,也并不知道请求中的参数是否正确。举个例子,现在有个充值的接口,调用后可以给用户增加对应的余额。ht
前言不知道你有没有这样的经历,线上的系统突然来了很大的流量,有可能是黑客的攻击,也有可能是业务量远远大于你的预估,如果你的系统没有做任何的防护措施,这时候系统负载过高,系统资源慢慢耗尽,接口响应越来越慢,直至不可用,这又导致了调用你接口的上游系统发生资源耗尽的情况,最终导致系统雪崩。想想就知道,这是一个灾难性的后果,那么有什么方法呢?面对这种突发流量的场景,核心思路就是要优先保证优核心业务和优先保证绝大部分用户。常见的应对手段有四种,降级、熔断、限流和排队,下面我会一一讲解。1.降级降级指系统将某些业务或者接口的功能降低,可以是只提供部分功能,也可以是完全停掉所有功能,优先保证核心功能。比如淘
前言不知道你有没有这样的经历,线上的系统突然来了很大的流量,有可能是黑客的攻击,也有可能是业务量远远大于你的预估,如果你的系统没有做任何的防护措施,这时候系统负载过高,系统资源慢慢耗尽,接口响应越来越慢,直至不可用,这又导致了调用你接口的上游系统发生资源耗尽的情况,最终导致系统雪崩。想想就知道,这是一个灾难性的后果,那么有什么方法呢?面对这种突发流量的场景,核心思路就是要优先保证优核心业务和优先保证绝大部分用户。常见的应对手段有四种,降级、熔断、限流和排队,下面我会一一讲解。1.降级降级指系统将某些业务或者接口的功能降低,可以是只提供部分功能,也可以是完全停掉所有功能,优先保证核心功能。比如淘
大家好,我是冰河~~对于线程池的核心类ThreadPoolExecutor来说,有哪些重要的属性和内部类为线程池的正确运行提供重要的保障呢?ThreadPoolExecutor类中的重要属性在ThreadPoolExecutor类中,存在几个非常重要的属性和方法,接下来,我们就介绍下这些重要的属性和方法。ctl相关的属性AtomicInteger类型的常量ctl是贯穿线程池整个生命周期的重要属性,它是一个原子类对象,主要用来保存线程的数量和线程池的状态,我们看下与这个属性相关的代码如下所示。//主要用来保存线程数量和线程池的状态,高3位保存线程状态,低29位保存线程数量privatefinal
大家好,我是冰河~~对于线程池的核心类ThreadPoolExecutor来说,有哪些重要的属性和内部类为线程池的正确运行提供重要的保障呢?ThreadPoolExecutor类中的重要属性在ThreadPoolExecutor类中,存在几个非常重要的属性和方法,接下来,我们就介绍下这些重要的属性和方法。ctl相关的属性AtomicInteger类型的常量ctl是贯穿线程池整个生命周期的重要属性,它是一个原子类对象,主要用来保存线程的数量和线程池的状态,我们看下与这个属性相关的代码如下所示。//主要用来保存线程数量和线程池的状态,高3位保存线程状态,低29位保存线程数量privatefinal
1RocketMQ使用相关问题1.1保证消息的可用性/可靠性/不丢失消息可能在哪些阶段丢失呢?可能会在这三个阶段发生丢失:生产阶段、存储阶段、消费阶段所以要从这三个阶段考虑:image.png1.1.1生产在生产阶段,主要通过请求确认机制,来保证消息的可靠传递。同步发送的时候,要注意处理响应结果和异常。如果返回响应OK,表示消息成功发送到了Broker,如果响应失败,或者发生其它异常,都应该重试。异步发送的时候,应该在回调方法里检查,如果发送失败或者异常,都应该进行重试。如果发生超时的情况,也可以通过查询日志的API,来检查是否在Broker存储成功。1.1.2存储存储阶段,可以通过配置可靠性