如何使用注解实现接口的幂等性校验 在数学领域中对于幂等性的解释是即幂等元素x在函数f的多次作用下,其效果和在f的一次作用下相同。在编程上可以理解为,如果某个函数(方法)或接口被调用多次其行为结果和被调用一次相同,则这种函数或接口就具有幂等性。简单举个例子,天然幂等性假设对象Person中有个name属性,有个的方法,那这个方法就是天然幂等的哦,你输入相同的“小明”参数,不论你重复调用多少次都是将名字设置为“小明”,其对对象Person的影响都是一样的。这就是天然幂等性。非幂等性。
Redis为什么要使用SDS作为基本数据结构 与C字符串不同,SDS的空间分配策略完全杜绝了发生缓冲区溢出的可能性,当SDS需要对SDS进行修改的话,API会先检查SDS空间是否满足修改所需的要求,如果不满足的话,API会自动将SDS的空间扩充至所需大小,然后才执行实际的修改操作,所以使用SDS既不需要动手修改SDS的空间大小,也不会出现前面所说的缓冲区溢出问题。 字符数量加一,数组里面可以包含未使用的字节,而这些字节的数量就由SDS的free属性记录,通过未使用空间,SDS实现了空间预分配和惰性 空间释放两种优化策略。
一文解密网络背后的秘密 我们需要先知道一些基础的概念,例如SYN: 请求建立连接ACK: 对请求做出响应SYN_SEND: 等待匹配连接的请求ESTABLISHED:代表一个打开的连接三次握手需要保证客户端和服务端都要保证一发、一收信息,过程如下:一次握手:客户端发送带有 SYN(SEQ=x) 标志的数据包 -> 服务端,然后客户端进入 SYN_SEND 状态,等待服务器的确认;
【Es基础入门必看】 做了缓存之后虽然我们的QPS可以达到8万左右,但是对于一个大型的商业项目这也是远远不够的,所以ElasticSearch诞生了,亿级的QPS加上简单易扩展,可以独立部署,简直就是一个完美的搜索引擎。倒排索引也叫做反向索引,我们通常理解的索引可能就是通过key寻找value的键值对,倒排做因简单来说,就是通过value来寻找key,所以才叫做倒排索引。区别于关系型数据库的是,ES是一个非结构化的数据库,每个文档可以有不同的字段,并且有一个唯一标识。这个概念就不用太关注了。,带有倒排索引的文件被称为倒排文件。
一文搞清楚Java中常见的IO模型 首先,我们要清楚什么是IO,根据冯诺依曼结构,计算机结构分为5部分:运算器、控制器、存储器、输入设备和输出设备。输入设备和输出设备都属于外设,网卡、硬盘这种既可以属于输入设备也可以属于输出设备。输入设备向计算机输入数据,输出设备接收计算机输出的数据。从数据结构的时间来看的话,IO描述了计算机系统与外部设备之间通信的过程。为了保证操作系的稳定性和安全性,一个进程的地址划分为用户空间和内核空间。
Java基础知识回顾 浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象.序列化是一种将对象转换为字节流的过程,以便可以将对象保存到磁盘上,将其传输到网络上,或者将其存储在内存中,以后再进行反序列化,将字节流重新转换为对象。序列化在 Java 中是通过接口来实现的,该接口没有任何方法,只是一个标记接口,用于标识类可以被序列化。当你序列化对象时,你把它包装成一个特殊文件,可以保存、传输或存储。
Mysql事务篇——Day02 假设A和B两个事务同时在处理,事务A开始先从数据库读取小c余额,然后继续执行代码处理逻辑,在这个过程中如果事务B更新了这条数据,并且提交了事务,那么事务A再次读取该数据的时候,就会发现亲后两次读取到的数据是不一致的,这种现象就叫做不可重复读。假设A和B两个事务同时在处理,事务A先从数据库中读取小林的余额数据,然会再执行更新操作,如果这时候A还没有提交事务,而此时正好B也从数据库中读取小c的余额数据,那么事务B读取到的余额数据就是事务A更新后的数据,即使没有提交事务。
Mysql索引篇——Day01 当我们在阅读书中的某个内容时,你会选择一页一页去翻还是直接去看目录呢?答案肯定是去看目录啊,书中的目录充当的就是数据库索引的角色,形象的说索引就是帮助存储引擎快速获取数据的一种数据结构。那么什么时存储引擎呢?说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据的实现方法。Mysql的存储引擎有MyISAM、InnoDB、Memory,其中 InnoDB 是在 MySQL 5.5 之后成为默认的存储引擎。
聊聊spring-cloud的负载均衡 在微服务架构中,负载均衡是非常重要的一个环节,可以有效地提高系统的可用性和稳定性。在使用Spring Cloud提供的负载均衡组件时,需要注意减少负载均衡对系统性能的影响。具体来说,可以选择合适的负载均衡算法、合理设置超时时间、缓存服务实例列表、使用断路器和使用缓存等。
RBAC详解 RPAC模型是一种基于角色的访问控制模型,它将用户分配到不同的角色中,每个角色都有一组权限。用户通过被分配到的角色来获得访问系统资源的权限。在本文中,我们详细讨论了RPAC模型的工作原理,并使用一个数据库示例来说明如何实现RPAC模型。我们还提供了相关的代码示例,帮助读者更好地理解RPAC模型的实现。
分析eureka与nacos的区别 当我们启动服务提供者和Nacos服务注册中心后,可以在Nacos服务注册中心中看到服务提供者的注册信息。当我们启动服务提供者和Eureka服务注册中心后,可以在Eureka服务注册中心中看到服务提供者的注册信息。同时,当服务消费者需要调用服务提供者时,可以通过Eureka服务注册中心进行服务发现和负载均衡。Nacos通过使用Raft算法来实现服务注册和发现,并使用DNS和HTTP等多种方式来实现服务的发现。Nacos提供了健康检查的功能,可以定时检测服务的健康状态,并且可以配置自定义的健康检查规则。
深入理解 Spring 框架 Spring 是一个优秀的企业级开发框架,它提供了丰富的功能和工具,帮助开发者构建可靠、灵活和高效的应用程序。在学习和使用 Spring 的过程中,我们需要深入理解其核心概念和特性,以便更好地应用于实际项目中。
一个普通的线程池 线程池由一组线程组成的线程集合,它可以维护和管理这些线程的生命周期,并提供一种机制来控制线程的创建、执行和销毁。:线程池可以通过任务队列来存放待执行的任务,当线程池中的线程都在执行任务时,新的任务可以暂时排队等待执行,避免任务丢失或被拒绝。:线程池可以避免频繁地创建和销毁线程,而是通过复用已有的线程来执行任务。:线程池可以将待执行的任务按照一定的调度策略分配给空闲的线程执行。根据线程池的配置参数,决定是否创建新的线程,将任务分配给空闲线程执行,或将任务放入任务队列等待执行。线程池提供了一些策略来处理。
入门Spring Cloud 通过以上步骤,你已经成功入门了Spring Cloud,并创建了一个简单的微服务应用程序。从服务注册到服务调用,Spring Cloud提供了丰富的功能和工具,帮助开发者构建弹性可扩展的分布式系统。本文将介绍如何入门Spring Cloud,并提供了详细的代码示例和解释,帮助读者快速上手Spring Cloud微服务框架。在微服务架构中,服务注册中心用于管理所有服务的注册和发现。最后,我们创建一个服务消费者,从注册中心获取服务提供者的信息并调用其提供的服务。解压下载的压缩包,并使用IDE打开项目。
布隆过滤器 我们可以把布隆过滤器看作有二进制向量或者说位数组和一系列随即映射函数零部分组成的数据结构。相比于我们平时用到的List、Map、Set等数据结构,它占用的空间更少并且效率更高,但其缺点是返回结果是概率性的,而不是非常准确。理论上添加到集合中的元素越多,误报的可能性也就越大。并且存放在布隆过滤器中的数据不易删除。
Spring IOC Bean就是IOC所有管理的内容,也是我们new出来的“对象”,作为一个面向对象的语言,在程序中我们不得不创建出大量的对象,这就造成了对象与对象之间严重依赖,一旦某一个对象出现异常,就可能导致程序不能正常运行,也不方面我们添加新的功能。但是在Bean交给容器管理后,一切开始变得十分方便。//或者我们可以直接通过注解,去获取Bean对象 //@Autowired //@Resource。
Redis基础 Hash类型,也叫做散列,其中value是一个无需的字典,类似于Java中HashMap结构,String结构是将对象序列化为Json字符串后进行储存,当我们要修改对象的某个属性值的时候很不方便,Hash就可以解决这个问题。Redis是以键值对存储信息的,所以对象又分为键对象和值对象,即存储一个key-value对象的时候会创建两个对象,键对象是一个字符串类型,而值对象可以是五大对象中的任意一个。Redis的Set结构与Java中的HashSet类似,可以看做是一个value为null的HashMap。
MYSQL进阶03 所有的MySQL列类型都可以被索引,对相关列使用索引是提高select操作性能的最佳途径。根据存储引擎可以定义每个表的最大索引和最大索引长度,没中存储引擎对每个表至少支持16个索引,总索引长度至少为256字节,大多数存储引擎有着而更高的限制。MyISAM和InnoDB存储引擎默认创建的都是BTREE索引。