自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(313)
  • 资源 (7)
  • 收藏
  • 关注

原创 Hive修复分区

执行后,Hive会检查表的分区列在HDFS中的路径,并将在HDFS中找到但Hive元数据中缺失的分区添加到元数据中。命令将会从Hive元数据中移除对应这个已删除目录的分区信息,因为该命令会发现HDFS上不再有这个分区的目录,并更新Hive元数据以反映这个变化。若希望恢复被删除的分区数据,你要从备份中恢复数据或者重新计算并重新写入这些分区数据到HDFS中。命令的作用是同步Hive元数据与HDFS上当前的实际文件系统状态,它会添加那些存在于HDFS上但尚未在Hive元数据中注册的分区。

2025-02-02 14:29:38 918

原创 Hive分区和分桶

例如,如果用户只想看昨天的日志,Hive只需要扫描昨天日期分区对应的数据,而不必扫描整个数据表。这样可以在查询时仅扫描相关的分区,而不是整个数据集,从而减少查询所需要处理的数据量,提高查询效率。分区可以动态添加新的分区,只需要导入具有新分区键值的数据;两种用于优化查询性能的数据组织策略,数仓设计的关键概念,可提升Hive在读取大量数据时的性能。物理上将数据按照指定的列(分区键)值分散存放于不同的目录中,每个分区都作为表的一个子目录。是用于分桶的列,数据会根据用户ID的哈希值分配到256个存储桶中。

2025-02-02 14:26:36 749

原创 为什么要学习大模型,这是我见过最好的回答

你就拿一个人家训练好的波尔模型拿过来,然后在下游进行或者分类,或者说NE2,去接一下不同的下游处理,就可以直接上手处理不同的任务,或者一般还是需要微调的,所以你再训练一下就可以解决实际问题了。这就是游戏里需求,也非常大。当然说让它完全替代你的代码不可能,但是你可以用它给你写一些框架性东西或具体的一个小问题,可直接让他写,然后拿过来你试下好不好用,甚至有bug也可以让他改一下。就好像你开发应用一样,你现在去开发操作系统,你除非说国产替代,正常来讲,微软和苹果已把操作系统完全占领,你不可能再打开空间。

2025-02-02 13:12:47 526

原创 集群部署时的分布式 Session 如何实现?

上面的代码就是 ok 的,给 Spring Session 配置基于 Redis 来存储 Session 数据,然后配置了一个 Spring Session 的过滤器,这样的话,Session 相关操作都会交给 Spring Session 来管了。一般的话只要你没关掉浏览器,Cookie 还在,那么对应的那个 Session 就在,但是如果 Cookie 没了,Session 也就没了。当然了,分布式系统中的问题何止这么一点,非常之多,复杂度很高,这里只是说一下常见的几个问题,也是面试的时候常问的几个。

2025-01-31 11:39:59 1021

原创 CAP 定理的 P 是什么

内部使用 paxos 选举投票机制,只有获取半数以上的投票才能成为 leader,否则重新投票,所以部署的时候最好集群节点不小于 3 的奇数个(但是谁能保证跪掉后节点也是奇数个呢);作者在网络上查阅了很多关于 CAP 文章,虽然这些文章对于 P 的解释五花八门,但总结下来这些观点大多都是指 P 是不可缺少的,也就是说在分布式系统只能是 AP 或者 CP,这种理论与我之前所认识的理论(存在分布式 CA 系统)是冲突的,所以才有了疑惑。无论我设计的系统是 AP 还是 CP 系统如果没有出现不一致不可用。

2025-01-31 11:37:42 957

原创 分布式服务接口的幂等性如何设计(比如不能重复扣款)?

比如说,如果有一个订单已经支付了,就已经有了一条支付流水,那么如果重复发送这个请求,则此时先插入支付流水,orderId 已经存在了,唯一键约束生效,报错插入不进去的。了,然后订单系统走了前面我们看到的那个重试机制,咔嚓给你重试了一把,好,支付系统收到一个支付请求两次,而且因为负载均衡算法落在了不同的机器上,尴尬了。你在支付一个订单之前,先插入一条支付流水,order_id 就已经进去了。对于每个请求必须有一个唯一的标识,举个栗子:订单支付请求,肯定得包含订单 id,一个订单 id 最多支付一次,对吧。

2025-01-31 11:35:50 392

原创 dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?

跟运维同学申请机器,有的时候,我们运气好,正好公司资源比较充足,刚刚有一批热气腾腾、刚刚做好的虚拟机新鲜出炉,配置都比较高:8 核 + 16G 机器,申请到 2 台。继续深问吧,这些都是用 dubbo 必须知道的一些东西,你得知道基本原理,知道序列化是什么协议,还得知道具体用 dubbo 的时候,如何负载均衡,如何高可用,如何动态代理。一致性 Hash 算法,相同参数的请求一定分发到一个 provider 上去,provider 挂掉的时候,会基于虚拟节点均匀分配剩余的流量,抖动不会太大。

2025-01-31 11:27:46 778

原创 如何自己设计一个类似 Dubbo 的 RPC 框架?

所以我给大家一个建议,遇到这类问题,起码从你了解的类似框架的原理入手,自己说说参照 dubbo 的原理,你来设计一下,举个例子,dubbo 不是有那么多分层么?其实问到你这问题,你起码不能认怂,因为是知识的扫盲,那我不可能给你深入讲解什么 kafka 源码剖析,dubbo 源码剖析,何况我就算讲了,你要真的消化理解和吸收,起码个把月以后了。接收到请求的时候,就调用对应的服务代码,对吧。上来你的服务就得去注册中心注册吧,你是不是得有个注册中心,保留各个服务的信息,可以用 zookeeper 来做,对吧。

2025-01-31 11:23:55 866

原创 内存分配与回收策略

JVM 规范中运行时数据区域中的方法区,在 HotSpot 虚拟机中也称为永久代(Permanet Generation),存放一些类信息、常量、静态变量等数据,当系统要加载的类、反射的类和调用的方法较多时,永久代可能会被占满,会触发 Full GC。值是否设置为允许担保失败, 如果是,那么会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小, 如果大于,将尝试进行一次 Minor GC,尽管这次 Minor GC 是有风险的;, 如果这个条件成立,Minor GC 可以确保是安全的;

2025-01-30 09:22:02 821

原创 JVM 性能调优

垃圾收集进行时,虚拟机虽然会对直接内存进行回收, 但是直接内存却不能像新生代、老年代那样,发现空间不足了就通知收集器进行垃圾回收, 它只能等老年代满了后 Full GC,然后“顺便”帮它清理掉内存的废弃对象。在 32 位 JDK 上,1.6G 分配给堆,还有一部分分配给 JVM 的其他内存,直接内存最大也只能在剩余的 0.4G 空间中分出一部分, 如果使用了 NIO,JVM 会在 JVM 内存之外分配内存空间,那么就要小心“直接内存”不足时发生内存溢出异常了。通过 64 位 JDK 来使用大内存;

2025-01-30 09:20:05 478

原创 类文件结构

一个类可能实现了多个接口,因此用接口索引集合来描述。name_index 是一个索引值,它指向常量池中一个 CONSTANT_Utf8_info 类型常量,此常量代表这个类(或接口)的全限定名,这里 name_index 值若为 0x0002,也即是指向了常量池中的第二项常量。类索引和父类索引用两个 u2 类型的索引值表示,它们各自指向一个类型为 CONSTANT_Class_info 的类描述符常量,通过该常量总的索引值可以找到定义在 CONSTANT_Utf8_info 类型的常量中的全限定名字符串。

2025-01-30 09:18:14 1024

原创 类加载的过程

方法是由编译器自动收集类中的所有类变量的赋值动作和静态语句块(static {} 块)中的语句合并产生的,编译器收集的顺序是由语句在源文件中出现的顺序所决定的。非数组类加载阶段可以使用系统提供的引导类加载器,也可以由用户自定义的类加载器完成,开发人员可以通过定义自己的类加载器控制字节流的获取方式(如重写一个类加载器的。加载阶段与连接阶段的部分内容交叉进行,加载阶段尚未完成,连接阶段可能已经开始了。静态语句块中只能访问定义在静态语句块之前的变量,定义在它之后的变量,在前面的静态语句块中可以赋值,但不能访问。

2025-01-30 09:14:42 603

原创 Java进程内缓存介绍

虽然从上面表格中比起来有点逊色,但是其由于是JDK自带的类,在各种框架中依然有大量的使用,比如我们可以用来缓存我们反射的Method,Field等等;-Guava这个jar包在很多Java应用程序中都有大量的引入,所以很多时候其实是直接用就好了,并且其本身是轻量级的而且功能较为丰富,在不了解Caffeine的情况下可以选择GuavaCache。注意build方法有重载,带有参数的为构建一个具有数据加载功能的缓存,不带参数的构建一个没有数据加载功能的缓存。:使用软引用存储值。

2025-01-18 21:23:12 1132

原创 搞懂分布式技术:缓存更新的套路

一个是查询操作,一个是更新操作的并发,首先,没有了删除cache数据的操作了,而是先更新了数据库中的数据,此时,缓存依然有效,所以,并发的查询操作拿的是没有更新的数据,但是,更新操作马上让缓存的失效了,后续的查询操作再把数据从数据库中拉出来。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。不是的,比如,一个是读操作,但是没有命中缓存,然后就到数据库中取数据,此时来了一个写操作,写完数据库后,让缓存失效,然后,之前的那个读操作再把老的数据放进去,所以,会造成脏数据。

2025-01-05 23:41:51 788

原创 搞懂分布式技术:消息队列因何而生

目录何时需要消息队列解耦最终一致性广播错峰与流控消息队列的流派之争MQ是什么MQ的流派有broker无brokerMQ只能异步吗总结如何设计一个消息队列综述实现队列基本功能RPC通信协议高可用服务端承载消息堆积的能力存储子系统的选择消费关系解析队列高级特性设计可靠投递(最终一致性)消费确认重复消息和顺序消息事务性能相关异步/同步push还是pull慢消费消息延迟与忙等总结本文转载自 linkedkeeper.com本文内容参考网络,侵删消息队列已经逐

2025-01-05 23:39:59 1018

原创 搞懂分布式技术:浅谈分布式锁的几种方案

然后由于必须获取到5个节点中的3个以上,所以可能出现获取锁冲突,即大家都获得了1-2把锁,结果谁也不能获取到锁,这个问题,redis作者借鉴了raft算法的精髓,通过冲突后在随机时间开始,可以大大降低冲突时间,但是这问题并不能很好的避免,特别是在第一次获取锁的时候,所以获取锁的时间成本增加了。如果5个节点有2个宕机,此时锁的可用性会极大降低,首先必须等待这两个宕机节点的结果超时才能返回,另外只有3个节点,客户端必须获取到这全部3个节点的锁才能拥有锁,难度也加大了。=t3说明锁被其他线程获取了。

2025-01-05 23:37:53 688

原创 搞懂分布式技术:浅谈分布式消息技术Kafka

Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。对于传统的message queue而言,一般会删除已经被消费的消息,而Kafka是不会删除数据的,它会把所有的数据都保留下来,每个消费者(Consumer)对每个Topic都有一个offset用来表示读取到了第几条数据。

2025-01-05 23:36:09 677

原创 搞懂分布式技术:浅析分布式事务

在大谈用户体验的今天,如果业务系统时常出现“系统异常”、响应时间过长等情况,这使得用户对系统的好感度大打折扣,在互联网行业竞争激烈的今天,相同领域的竞争者不甚枚举,系统的间歇性不可用会立马导致用户流向竞争对手。数据不一致性:两阶段提交协议虽然为分布式数据强一致性所设计,但仍然存在数据不一致性的可能,比如在第二阶段中,假设协调者发出了事务commit的通知,但是因为网络问题该通知仅被一部分参与者所收到并执行了commit操作,其余的参与者则因为没有收到通知一直处于阻塞状态,这时候就产生了数据的不一致性。

2025-01-05 23:33:37 470

原创 搞懂分布式技术:初探分布式协调服务zookeeper

张大胖一看这个图就明白怎么回事了,为了支持高并发,OrderService被部署了4份,每个客户端都保存了一份服务提供者的列表,但是这个列表是静态的(在配置文件中写死的),如果服务的提供者发生了变化,例如有些机器down了,或者又新增了OrderService的实例,客户端根本不知道,可能还在傻乎乎地尝试那些已经坏掉的实例呢!张大胖所在的公司这几年发展得相当不错,业务激增,人员也迅速扩展,转眼之间,张大胖已经成为公司的“资深”员工了,更重要的是,经过这些年的不懈努力,他终于坐上了架构师的宝座。

2025-01-05 23:31:36 936

原创 搞懂分布式技术:分布式系统的一些基本概念

从分布式系统的概念中我们知道,各个主机之间通信和协调主要通过网络进行,所以分布式系统中的计算机在空间上几乎没有任何限制,这些计算机可能被放在不同的机柜上,也可能被部署在不同的机房中,还可能在不同的城市中,对于大型的网站甚至可能分布在不同的国家和地区。由于网络是断开的,所以分布式系统同步操作M,所以N2中的数据依旧是V0。CAP的基本场景,网络中有两个节点N1和N2,可以简单的理解N1和N2分别是两台计算机,他们之间网络可以连通,N1中有一个应用程序A,和一个数据库V,N2也有一个应用程序B和一个数据库V。

2025-01-05 23:29:23 799

原创 搞懂分布式技术:分布式一致性协议与Paxos,Raft算法

Acceptor X 收到 Proposer B 发来的 [n=4, v=5] 的提议请求,因为之前接收到的提议为 [n=2, v=8],并且 2 <= 4,因此就发送 [n=2, v=8] 的提议响应,设置当前接收到的提议为 [n=4, v=5],并且保证以后不会再接受序号小于 4 的提议。当 Acceptor 接收到一个提议请求,包含的提议为 [n1, v1],并且之前还未接收过提议请求,那么发送一个提议响应,设置当前接收到的提议为 [n1, v1],并且保证以后不会再接受序号小于 n1 的提议。

2025-01-05 23:27:12 492

原创 搞懂分布式技术:分布式session解决方案与一致性hash

hash环上顺时针从整数0开始,一直到最大正整数,我们根据四个ip计算的hash值肯定会落到这个hash环上的某一个点,至此我们把服务器的四个ip映射到了一致性hash环当用户在客户端进行请求时候,首先根据hash(用户id)计算路由规则(hash值),然后看hash值落到了hash环的那个地方,根据hash值在hash环上的位置顺时针找距离最近的ip作为路由ip.当Web服务器变为多台以后,如果保证同一个会话的请求都在同一个Web服务器上处理,则对该会话来说,与之前单机的情况是一样的。

2025-01-05 23:25:08 968

原创 搞懂分布式技术:使用RocketMQ事务消息解决分布式事务

处理过的消息,记在判重表里面。说到分布式事务,就会谈到那个经典的”账号转账”问题:2个账号,分布处于2个不同的DB,或者说2个不同的子系统里面,A要扣钱,B要加钱,如何保证原子性?总结:对比方案2和方案1,RocketMQ最大的改变,其实就是把“扫描消息表”这个事情,不让业务方做,而是消息中间件帮着做了。所以,这里下个结论: 只要发送消息和update DB这2个操作不是原子的,无论谁先谁后,都是有问题的。可能有人又要说了,无论方案1,还是方案2,发送端把消息成功放入了队列,但消费端消费失败怎么办?

2025-01-05 23:23:22 679

原创 搞懂分布式技术:Zookeeper的配置与集群管理实战

实际应用中,如果集群中的Leader宕机了,或者Leader与超过半数的Follower失去联系,都会触发ZooKeeper的选举流程,选举出新的Leader之后继续对外服务。单机模式有个致命的缺陷,一旦唯一的实例挂了,依赖ZooKeeper的应用全得完蛋。可见,系统初始化的时候,根节点下会自动创建一个名为“zookeeper”的节点,用于存储ZooKeeper的管理信息。需要注意的是,集群中所有的实例作为一个整体对外提供服务,集群中每个实例之间都互相连接,所以,每个配置文件中都要列出所有实例的映射关系。

2025-01-05 23:21:35 1040

原创 搞懂分布式技术:Zookeeper典型应用场景及实践

metaq发送消息的时候,生产者在发送消息的时候必须选择一台broker上的一个分区来发送消息,因此metaq在运行过程中,会把所有broker和对应的分区信息全部注册到ZK指定节点上,默认的策略是一个依次轮询的过程,生产者在通过ZK获取分区列表之后,会按照brokerId和partition的顺序排列组织成一个有序的分区列表,发送的时候按照从头到尾循环往复的方式选择一个分区来发送消息。通过调用ZK提供的创建节点的API,能够很容易创建一个全局唯一的path,这个path就可以作为一个名称。

2025-01-05 23:19:22 1253

原创 搞懂分布式技术:ZAB协议概述与选主流程详解

服务器1收到服务器2的选票(1, 2, 0)和服务器3的选票(1, 3, 0)后,由于所有的logicClock都相等,所有的zxid都相等,因此根据myid判断应该将自己的选票按照服务器3的选票更新为(1, 3, 0),并将自己的票箱全部清空,再将服务器3的选票与自己的选票存入自己的票箱,接着将自己更新后的选票广播出去。即消息已经发送到队列中。在上图中,(1, 1, 0)第一位数代表投出该选票的服务器的logicClock,第二位数代表被推荐的服务器的myid,第三位代表被推荐的服务器的最大的zxid。

2025-01-05 23:17:41 937

原创 搞懂分布式技术:SpringBoot使用注解集成Redis缓存

说明一下,其中 @Cacheable 中的 value 值是在 CachingConfig的cacheManager 中配置的,那里是为了配置我们的缓存有效时间。另外,Cache 相关的注解还有几个,大家可以了解下,不过我们常用的就是 @Cacheable,一般情况也可以满足我们的大部分需求了。最后说一下,这个 @Cacheable 基本是可以放在所有方法上的,Controller 的方法上也是可以的(这个我没有测试 ^_^)。这样就完成了Redis的配置,可以正常使用 redisTemplate 了。

2025-01-05 23:15:21 344

原创 搞懂分布式技术:LVS实现负载均衡的原理与实践

在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web服务器,将客户端的请求转发给它处理,实现客户端到真实服务端的透明转发。我们有个中间层啊,对,就是DNS,我们可以设置一下,让我们网站的域名映射到多个服务器的IP,用户面对的是我们系统的域名,然后我们可以采用一种轮询的方式, 用户1的机器做域名解析的时候,DNS返回IP1, 用户2的机器做域名解析的时候,DNS返回IP2……然而,我们的网站对外提供的访问入口都是一个的,比如;

2025-01-05 23:13:44 612

原创 消息队列面试解析系列(2)- MQ选型

但Kafka这种异步批量的设计带来的问题是,它的同步收发消息的响应时延比较高,因为当客户端发送一条消息的时候,Kafka并不会立即发送出去,而是要等一会儿攒一批再发送,在它的Broker中,很多地方都会使用这种“先攒一波再一起处理”的设计。主要是设计上的选择问题,Kafka中到处都是“批量和异步”设计,它更关注的是整体的吞吐量,而RocketMQ的设计选择更多的是尽量及时处理请求。作为国产的消息队列,相比国外的比较流行的同类产品,在国际上还没有那么流行,与周边生态系统的集成和兼容程度要略逊一筹。

2025-01-04 21:05:40 823

原创 chatgpt告诉我python入门要这样学

包括变量、数据类型、运算符、条件语句(如if-else)、循环(如for和while)以及函数的定义和使用。:理解类和对象的概念,以及继承、封装和多态等面向对象的基本原则。:理解如何导入和使用Python的模块,以及如何创建和使用包。:理解Python的内置数据结构,如列表、元组、字典和集合。没接触过Python编程 问下ChatGPT4如何学习。以上就是Python入门时应该学习的一些主要知识点。:理解如何处理程序中的错误和异常。:如何在Python中读写文件。

2025-01-03 21:12:25 252

原创 深度研究了OpenAI Sora的底层原理后,总结了普通人利用Sora赚钱的10个方法

除了能够仅凭文本指令生成视频外,Sora 还能够将现有的静态图像转化为视频,精确地动画化图像内容,并注意到细小的细节。未来,我们可能会看到更多原本不被主流媒体所接受的独特声音和创意,通过Sora这样的工具,找到自己的舞台和观众。而且动作连续,还有一定的艺术性,没有生硬的感觉。同时,Sora也提醒我们,技术的进步虽然为我们提供了更多的便利,但真正能够触动人心的,依然是那些充满创造力和情感的内容。单视频多角度镜头:在60s的视频内,可以在保持主角色不变的高度一致性的同时,还生成多个不同角度的分镜。

2025-01-03 21:11:00 895

原创 京东开源redis热key 探测(hotkey)器实在是太强了,单机能处理每秒30 万以上探测任务

然后对这些热数据、热用户等,推送到该应用部署的所有机器 JVM 内存中,以大幅减轻对后端数据存储层的冲击,并可以由客户端决定如何使用这些热 key(譬如对热商品做本地缓存、对热用户进行拒绝访问、对热接口进行熔断或返回默认值)。该框架没有依赖于任何定制化的组件,与 redis 更是毫无关系,核心就是靠 netty 连接,client 端送出待测 key,然后由各个 worker 完成分布式计算,算出热 key 后,就直接推送到 client 端,非常轻量级。:热数据探测并推送至集群各个服务器。

2025-01-03 21:09:35 278

原创 分布式系统理论基础: 一致性、PC和PC

在2PC中一个participant的状态只有它自己和coordinator知晓,假如coordinator提议后自身宕机,在watchdog启用前一个participant又宕机,其他participant就会进入既不能回滚、又不能强制commit的阻塞状态,直到participant宕机恢复。在阶段2中,coordinator根据participant的反馈,提交或中止事务,如果participant全部同意则提交,只要有一个participant不同意就中止。广义的分布式系统是一个相对的概念,正如。

2025-01-02 23:16:17 799

原创 01-分布式技术面试实战

整体的一个 Dubbo 原理说完之后,肯定会从 Dubbo 某一个具体的功能切入,比如说一下 Dubbo 底层的网络通信机制原理,这其实考察的就是 Dubbo 底层网络通信框架 Netty 的原理,只要讲一下 Netty 如何进行网络通信,以及 Netty 的线程模型是怎样的就可以了。并且 Dubbo 提供了配置自己实现的组件的功能,如果你自己实现了一个组件,通过配置,可以在 Dubbo 运行的时候,直接使用你的组件而不是默认的组件。

2025-01-01 23:13:55 815

原创 02-注册中心和网关面试实战

为了保证可用性而放弃了数据的一致性,怎么做的呢?那么一般来说,使用 8C16G 的机器部署,每秒钟抗几千的并发请求还是没有问题的,那么如果使用 16C32G 甚至 32C64G,可以抗更大数量的请求,并且对于注册中心以及后边要将到的网关,都会使用比较好的机器来部署,因为这些是。,1 主 2 从即可,zk 本身就不适合大集群部署,这与 zk 的架构设计有关,因为数据写入 Leader 之后,需要同步给 Follower 的,如果 Follower 数量过多,会导致同步速度很慢,影响 zk 的写性能。

2025-01-01 23:11:57 954

原创 03-生产部署面试实战

来说,如果原本高峰期每秒三四百请求,扩大 10 倍后,每秒三四千的访问量,如果对数据库横向扩容比较麻烦,因此可以考虑给部署数据库的服务器提升配置,比如从 16C32G 提升到 32C64G 的配置,抗 3-4000 的请求还是没有问题的。就比如说,一个接口请求一次之后,在代码中,对这个接口请求次数加 1,用 AtomicLong 来统计每天的接口请求数量,接口平均请求延时的话,将接口请求延时加起来除以接口请求次数也能算出来。大部分的系统,其实每秒钟也就几十个请求,高峰期几百个请求,系统都是可以抗住的。

2025-01-01 23:09:46 585

原创 04-分布式锁、幂等性问题实战

的,如果客户端 A 去 Redis 集群中添加分布式锁,先将锁写入到 Redis 的 master 中,如果 master 还没来得及将分布式锁同步到 slave 就宕机了,那么就会导致 slave 中并没有分布式锁的信息,如果客户端 B 来加锁,还是可以加上同一把锁,结果就是客户端 A 和 B 都拿着同一把分布式锁在执行。如果某次来扣减库存时,库存不足的情况下,需要合并库存进行扣减,合并库存就是对其他库存字段加锁,并且查询库存,如果足够,就进行库存扣减操作。

2025-01-01 23:08:04 520

原创 05-Java基础面试实战

happens-before 原则是对 Java 内存模型的简化,帮助编程人员理解并发安全,happens-before 定义了一些规则,只要符合了这些规则,这些执行的先后关系就已经被确定了,不需要再通过 volatile 和 synchronized 来保证有序性,如果不符合这些规则,那么它们的执行就没有顺序性的保障,虚拟机可能会进行重排序!6.1 如果该位置是链表,则遍历该位置上的链表,比较要插入节点和链表上节点的 hash 值和 key 值是否相等,如果相等,说明 key 相同,直接更新该节点值;

2025-01-01 23:05:34 933

原创 06-Spring面试实战

那么执行到 B 方法时,A 方法的事务就会挂起,给 B 方法创建一个新的事务开始执行,此时 A 和 B 是不同的事务,当 B 的事务执行完毕之后,在执行 A 的事务(每次创建的事务都是一个新的物理事务,也就是每创建一个新的事务,都会为这个事务绑定一个新的数据库连接):新建事务,无论当前是否存在事务,都会创建新的事务,新建的事务将和外层的事务没有任何关系,是两个独立的事务,外层事务失败回滚之后,不能回滚内层事务执行的结果,内层事务失败抛出异常,外层事务捕获,也可以不处理回滚操作。

2025-01-01 23:04:10 441

原创 07-计算机网络面试实战

计算级网络的模型有 OSI 七层模型和 TCP/IP 四层模型,而 OSI 七层模型是先出现的理论模型,再进行实践,而 TCP/IP 是参考 OSI 七层模型,先有了协议和应用再提出了四层模型,目前 TCP/IP 四层模型被广泛使用就是因为 OSI 七层模型实践之前,TCP/IP 四层模型就已经广泛使用了,已经成为了流行的网络模型,当 OSI 七层模型的具体协议及应用出来的时候,市场已经被 TCP/IP 所霸占了。HTTP/3(2022 年发布标准) 抛弃 TCP 协议,以全新的视角重新设计 HTTP。

2025-01-01 23:01:34 856

常用测试用例

springMvc工程基配置,自己用来些测试例子时候快速构建

2014-10-12

基于HIbernateTemplate的代码自动生成

基于HIbernateTemplate的代码自动生成,能够自动生成dao和service文件,提高开发效率

2014-10-02

自己实现ioc实例demo

自己使用xpath解析xml文件实现依赖注入功能

2014-09-22

activiti-5.8 安装activiti插件

用来在Eclipse或者Myeclipse中安装activiti插件

2014-08-12

Eclipse安装svn插件jar

用来在Eclipse或者Myeclipse中安装svn插件

2014-08-12

使用eclipse springMvc3.0 所需jar

使用eclipse 搭建springMvc所需的所有jar包

2014-07-19

c++编程思想第一二卷pdf

c++编程思想 适合学过c++面向对象的初学者,经典值得推荐

2014-07-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除