当前位置: 首页 > news >正文

分布式 笔记

1、分布式锁的实现方式:
1、数据库
基于数据库表:
创建一张锁表:id、方法名称(唯一索引)、备注信息、参数信息(对应重载方法)、更新时间
锁住一个方法等价于往锁表里插入一行数据,通过方法名称字段的唯一性把其他想获得方法的线程给校验住
缺点:数据库挂了就很麻烦,需要主从、锁没有过期时间,需要整一个定时任务来删数据、线程请求一次锁失败了不会自旋转,需要在while循环里面不断请求,不是可重入锁,需要在锁表里面新开一个主机信息与线程信息的字段。

基于数据库排他锁
创建一张锁表:id、方法名称(唯一索引)、备注信息、参数信息(对应重载方法)、更新时间
锁住一个方法等价于开启一个事务通过for update的方法来查询method name,查到之后数据库就会给他上排他锁,执行完方法之后再主动地提交事务,拿不到锁的就while里面try catch反复执行
缺点:for update 查询条件必须加索引否则锁住整张表、如果查询范围大,走全表扫描可能会锁整张表、多个重载方法需要添加具体参数与返回值做区分,导致查询语句复杂、查询语句需要占用数据库连接,阻塞的线程越多占用的连接就越多,可能会把数据库连接池撑爆。

2、redis
基于Redis命令
加锁:setNX 、释放锁:DELETE
命令:setNX key value EX seconds(seconds秒) PX milliseconds(milliseconds毫秒)
缺点:delete命令可能误删key(无需识别则可删除key)、不支持阻塞等待与可重入。
基于Redis Lua脚本(保证加锁、解锁的原子性)
加锁:SET lock_name random_value EX seconds NX、
释放锁:if redis.call("get",KEY[1])==ARGV[1]
then return redis.call("del",KEYS[1])
else return 0
end
缺点:不支持阻塞等待与可重入、Redis挂了就寄了
基于Redission
加锁模式:单点、主从、哨兵、集群模式
加锁:根据锁名查看是否有锁,如果无,则通过LUA脚本加锁,加锁参数:锁名(key)、当前线程的唯一标识(value)、持有锁的时间。如果有,则看是不是当前线程的锁,如果是,则可重入次数加一,如果不是,直接返回。
解锁:查找锁是否存在,如果不存在则广播解锁消息,如果存在则根据锁名与唯一标识查看是否存在,如果不存在则表明锁被其他线程占用,如果存在则将可重入计数减1,当可重入计数为0才释放锁。
redlock 红锁
线程向多个独立的redis节点获取锁(避免主从中的异步复制导致锁丢失),获取锁的超时时间要小于锁的失效时间。
当且仅当大多数(N/2 +1)的redis节点都取到锁,且获取锁的时间小于锁失效的时间才算加锁成功。
3、zookeeper
zookeeper为每一个客户端按照先后顺序创建一个临时顺序节点,每一个客户端会在它前面的节点上注册一个监听器,zookeeper按照先后顺序去加锁,具体来说,如果当前客户段创建的节点是最小的,则当前客户端拿到锁。
临时顺序节点的好处:临时节点可以防止死锁,这一点做的比redis友好,当客户端崩溃的时候,链接会自动断开,删除客户端创建的锁节点。而redis得等到锁过期了才能再加锁。顺序节点可以防止锁竞争
4、redis与zookeeper
redis基于内存存储,zookpeer基于磁盘存储,redis并发性能更好
客户端崩溃时,zookeeper释放锁更加及时,redis要等锁过期时间
zookeeper是CP,牺牲可用性保证一致性,因为集群中少于一般的节点或者集群正在进行master选举时都会拒绝新的写请求,无法加锁,保证一致性。redis是AP,保证可用性,因为即使节点出问题,或者集群做数据同步的时候,如果出现网络延迟导致各个节点数据不一致,客户端也可以正常读写,保证可用性。
2、什么是一致哈希
场景:分布式场景下,数据存到哪个数据库一般是用唯一标识对数据库数量取模,但是如果集群需要扩张或者收缩则需要重新计算hash值,这样非常复杂。
3、分布式缓存
1、Guava:Google提供的本地缓存
初始化CacheLoader需要重写load方法,这样在缓存没有命中时会调用该方法。
初始化loadingCache需要传入缓存容量、元素的过期时间、元素失效的监听器、cacheloader
常见方法:get、put、invalidate方法等
@Test
public void testCache() throws ExecutionException, InterruptedException {
CacheLoader cacheLoader = new CacheLoader<String, Animal>() {
// 如果找不到元素,会调用这里
@Override
public Animal load(String s) {
return null;
}
};
LoadingCache<String, Animal> loadingCache = CacheBuilder.newBuilder()
.maximumSize(1000) // 容量
.expireAfterWrite(3, TimeUnit.SECONDS) // 过期时间
.removalListener(new MyRemovalListener()) // 失效监听器
.build(cacheLoader); //
loadingCache.put("狗", new Animal("旺财", 1));
loadingCache.put("猫", new Animal("汤姆", 3));
loadingCache.put("狼", new Animal("灰太狼", 4));

loadingCache.invalidate("猫"); // 手动失效

Animal animal = loadingCache.get("狼");
System.out.println(animal);
Thread.sleep(4 * 1000);
// 狼已经自动过去,获取为 null 值报错
System.out.println(loadingCache.get("狼"));
}
/**
● 缓存移除监听器
*/
class MyRemovalListener implements RemovalListener<String, Animal> { @Override
public void onRemoval(RemovalNotification<String, Animal> notification) {
String reason = String.format("key=%s,value=%s,reason=%s", notification.getKey(), notification.getValue(), notification.getCause());
System.out.println(reason);
}
}
class Animal {
private String name;
private Integer age;
public Animal(String name, Integer age) {
this.name = name;
this.age = age;
}

2、Caffeine Cache:由Guava改进而来的本地缓存
与ConcurrentMap的区别:ConcurrentMap不会显式移除数据,Guava会自动移除不常用的元素。
缓存淘汰策略:LRU、LFU、FIFO,缓存淘汰设置:大小、权重(大小和权重二选一)、时间
3、redis
4、多级缓存策略:
使用本地缓存Guava和redis做一个多级缓存架构。
5、存在的问题:
(1)数据一致性如何处理:
更新数据库-->canal监听binlog,对增量日志解析-->针对本地缓存,借助MQ的广播机制同步。针对redis缓存可以在更新前删除缓存,然后MQ同步缓存。
4、redis到底该如何使用?
1、key的设计:与业务相关,可读性高;长度不能太长;命中率(请求redis次数/总请求树)要高。尽量将读请求多的数据放到缓存。
2、value的设计:尽量小,避免出现big key(单线程容易阻塞,查询、持久化耗时长)
5、分布式协议
1、事务协议
2、一致性协议
3、保活性协议
4、复制协议
6、CAP理论
C:一致性(多个服务之间的数据要保持一致) A:可靠性(不论什么时候都能响应外部请求,但是不管响应是否正确) P:分区容错性(哪怕部分区域出现网络瘫痪,也能对外提供服务)
CAP在分布式场景下只能保证两个,而且无法同时保证CA,所以只有CP和AP
CP:Zookeeper、Nacos
AP:redis,Eureka、Nacos
7、BASE理论:
Basically Available:基本可用。出现故障之后还是能用,只不过需要折损响应时间和功能。
Soft State:软状态。允许多个节点数据存在延时或者短暂不一致
Eventually Consistent:最终一致性。在一定时间后可以达到一个最终的状态。
8、柔性事务&刚性事务:
柔性事务追求最终一致性:TCC(补偿事务)、Sega(业务入侵);MQ事务消息(依赖MQ)、本地消息表(不支持回滚)
刚性事务追求强一致性:2PC、3PC(因为会提交阶段之前同步阻塞)
8、分布式事务
强一致性:2PC、3PC、Seata中的AT和XA模式
弱一致性:事务消息、最大努力通知、本地消息表、Seata的TCC和Saga模式
1、2PC:两阶段提交 precommit+commit -强一致性
XA协议中的三个角色:AP(应用系统)、TM(事务管理器)、RM(资源管理器、事务的参与者)。主要用于资源管理器和事务管理器之间的通信。
两阶段的提交过程:
准备阶段:TM向RM发送消息,RM收到消息执行事务,如果执行成功就会返回就绪,但是不提交事务,进入同步阻塞状态。
提交阶段:如果所有RM都是就绪,TM向所有RM发送Commit,所有RM提交完事务返回ACK;如果存在RM未就绪,则向所有RM发送rollback,执行事务回滚。
缺点:
对TM强依赖,事务管理器出问题了整个2PC得不到保障,而且会出现单点故障问题;
2PC本身在一阶段结束之后就会出现同步阻塞的问题;
如果RM没收到commit信息就会存在数据不一致。
2、3PC:三阶段提交 -强一致性
将准备阶段细化成两个阶段。
准备阶段:TM向RM发送准备请求,RM不需要执行事务,只需要回复能否操作;如果RM都回复yes,则发送precommit,否则发送abort,中断事务请求。
预提交阶段:执行事务操作,例如写redolog和binlog;RM成功执行事务则返回yes,否则返回no;如果RM全部返回yes则发送docommit,否则回滚。
提交阶段:发送docommit进行事务提交;如果有RM没有收到TM信息,则RM会认为TM出现故障,也会自动提交事务
2PC上的改进:解决2PC中存在的协调者和参与者同时挂掉导致的数据一致性问题。
3、TCC:补偿事务、柔性事务-最终一致性
TCC属于侵入式事务,不依赖于数据库的事务,而是基于业务逻辑的补偿机制把分布式事务分解为多个子事务,每个子事务都有try、confirm、cancel三个操作,通过这些操作实现事务的执行与回滚。
Try(尝试执行):资源预留与事务前置条件的检查。
Comfirm(确认执行):所有try阶段的参与方执行成功,则执行事务并提交。
Cancel(取消执行):如果有节点事务try失败,则回滚事务。
流程:主业务服务调用事务协调者(TM)开启事务,然后调用try接口校验从节点执行事务所需的资源,然后从节点会执行comfirm,如果try或者comfirm执行失败会,TM会调用cancel接口终止事务。
通过日志记录事务失败时的执行状态。当事务提交成功之后就会删除日志。

4、本地消息表-最终一致性
业务操作和消息写入库:在本地事务中执行业务逻辑,然后将需要发送给其他服务的消息插入到消息表,然后提交本地事务
消息发送和状态更新:定时任务扫描消息表中待发送的消息,发送到消息队列。
消息消费与补偿:消费者消费消息后变更消息状态;消费失败可以查询消息表重新消费。
相比于最大努力通知,引入了一张本地的消息表,会更可靠
5、事务消息-最终一致性
例如,使用RocketMQ的事务消息
生产者向MQ发送半事务消息,此消息对消费者不可见;生产者执行事务之后会发送消息给MQ,此时根据事务结果决定是否删除半事务消息。
6、最大努力通知-最终一致性
借助消息队列进行消息异步通知。主要依靠消息队列重试特性确保消息被消费。
7、Sega:长事务解决方案,将长事务拆分成多个本地短事务。
把长事务按顺序拆分成多个本地短事务,并且每个本地短事务都有对应的补偿操作;本地短事务依次执行,执行的过程中有反向恢复和正向重试。
因为正向补偿和反向补偿都需要自己实现,所以对代码有入侵。
反向恢复:当前事务执行失败,把此前执行成功的事务都通过补偿操作回滚。
正向重试:当前事务失败就一直重试。
因为补偿理论上不会出错,但是也需要记录日志。
7、Seata - 一整套分布式的解决方案
一个分布式事务由多个本地事务组成,可以分为:
Transaction Manager(事务管理者):负责开启、提交、回滚事务。
Transaction Coordinator(事务协调器):维护分布式事务的全局状态。
Resource Manager(资源管理器):单个的微服务,执行本地事务。
Seata执行流程:
TM收到请求后,调用TC开启全局事务,并且从TC中获得XID。
TM再通过RPC调用各个微服务RM,并且传递全局事务的XID
RM会根据XID向TC注册一个事务分支
当所有调用链路全部预执行结束后,TM检查是否由RM事务执行失败,如果都成功则发送commit给TC,否则发送rollback。
TC收到TM的消息再协调RM进行二阶段提交,commit或rollback。
四种事务模式:
AT模式:强一致性
它是一种自动提交的无侵入性的事务模式,引入@GlobalTransaction注解即可也是类似于2PC的两段式提交。
一阶段:各个分支事务直接提交,并记录日志用于回滚
二阶段:如果需要回滚直接使用日志回滚,如果不需要则直接结束。
局限性:只能支持具有ACID属性的关系型数据库,但对于redis就不支持,所以redis和数据库无法一起做分布式事务。
TCC模式:最终一致性
需要自己实现try、comfirm、cancel分支,对代码有侵入性。
可以支持redis、es多个非关系型数据库与关系型数据库一起做事务。
Saga模式:最终一致性
适合长事务,将长事务拆分成多个本地事务,依次执行本地事务,需要对每个事务编写正向和反向补偿代码,对代码有侵入性
XA模式:强一致性
将事务分为两个阶段。
一阶段:各个分支事务预提交,并且占用与锁定资源。
二阶段:根据TC决定是否提交事务还是回滚事务。
由于这种模式需要占用资源一直到第二阶段结束,所以性能低。

如何选择分布式事务:
实现成本:对于TCC和2PC都对代码有侵入性,有成本。本地消息表、事务消息,最大努力通知都依赖中间件。
一致性要求:根据CAP理论,不能通知保证一致性和可用性,所以对于核心链路可以保证强一致性(2PC、3PC、AT、XA)、非核心链路保证最终一致性(本地消息表、事务消息、最大努力通知、TCC、Saga)
数据规模:对于数据规模不大的可以使用中间件实现的分布式事务,但在数据量大的情况下不建议只用这种,因为可能存在数据堆积情况。
9、CDN
定义:内容分发网络,它是由分布在不同区域的边缘节点服务器组成的分布式网络。它的作用就是把站点的内容发布到各个边缘节点服务器,用户可以就近获取内容。
如果没有CDN,就需要访问源站,其中会经过多次转发导致延时,还可能丢包,但是有CDN就可以就近访问边缘节点服务器。响应更快。
CND网络就是在用户层和服务器之间增加缓存层,缓存层的目的是用于解析域名得到缓存服务器IP,然后用户和缓存服务器交互,如果缓存服务器没有数据就访问源服务器拿数据。
应用场景:
网站加速:CDN可以缓存静态资源
10、如何将一个项目改造成分布式微服务?
1、分析业务的需求,包括拆分成分布式微服务之后的业务指标、安全指标等要求
2、根据业务需求设计微服务框架,其中包括服务拆分、服务通信、数据存储
3、选择合适的微服务框架
4、编码
5、性能测试
6、运维与监控
11、限流算法
1、固定窗口:固定时间内记录访问请求数并做限制,时间一过计数器清空。缺点是临界问题,可以卡计数器刷新的时间点频繁访问。
2、滑动窗口:为了解决固定窗口存在的临界问题,将窗口进一步细分成小窗口,每个小窗口内有独立的计数器,大窗口每次往前滑一个小窗口的长度,根据所有小窗口内的计数器总和进行限流。缺点是对多余请求会直接拒绝,在部分场景下用户体验不好(占便宜场景除外)。
3、漏桶限流:把所有请求放到固定大小的容器里,以一定的速率处理请求,超出容量后会拒绝请求。
优点是可以平滑流量,缺点是不能应对突发流量。
4、令牌桶限流:往令牌桶里以固定的速率添加令牌,请求需要拿到令牌才能被处理,否则就拒绝请求。
例如Guava的RateLimiter组件,优点在于可以平滑流量,并且可以处理突发流量。
12、为什么不在事务中一起做外部调用
1、增加事务的执行时间,可能增加死锁的概率。
2、增加事务失败的风险、、导致数据不一致:对于用户下单服务,下单部分进行事务操作,最后发MQ通知用户,如果仅仅是MQ发送失败就回滚事务,会出现非核心链路的业务导致核心链路业务执行失败,这本身不合理。并且MQ如果发送消息成功,只是ACK失败,就回滚整个核心链路业务,这就导致数据不一致。
13、Dubbo协议

相关文章:

分布式 笔记

1、分布式锁的实现方式: 1、数据库 基于数据库表: 创建一张锁表:id、方法名称(唯一索引)、备注信息、参数信息(对应重载方法)、更新时间 锁住一个方法等价于往锁表里插入一行数据,通过方法名称字段的唯一性把其他想获得方法的线程给校验住 缺点:数据库挂了就很麻烦,需…...

Windows Server 2019 中文版、英文版下载 (2025 年 9 月更新)

Windows Server 2019 中文版、英文版下载 (2025 年 9 月更新)Windows Server 2019 中文版、英文版下载 (2025 年 9 月更新) Windows Server 2019 x64 Version 1809 (updated Sep 2025) 请访问原文链接:https://sysin.org/blog/windows-server-2019/ 查看最新版。原创作品,转载…...

Windows Server 2016 中文版、英文版下载 (2025 年 9 月更新)

Windows Server 2016 中文版、英文版下载 (2025 年 9 月更新)Windows Server 2016 中文版、英文版下载 (2025 年 9 月更新) Windows Server 2016 x64 Version 1607 (updated Sep 2025) 请访问原文链接:https://sysin.org/blog/windows-server-2016/ 查看最新版。原创作品,转载…...

Windows Server 2025 中文版、英文版下载 (2025 年 9 月更新)

Windows Server 2025 中文版、英文版下载 (2025 年 9 月更新)Windows Server 2025 中文版、英文版下载 (2025 年 9 月更新) Windows Server 2025 LTSC x64 (updated Sep 2025) 请访问原文链接:https://sysin.org/blog/windows-server-2025/ 查看最新版。原创作品,转载请保留出…...

美联储降息 25 个基点,这事儿跟我们有多大关系?

正文今天聊个有时效性的东西,美联储降息。25 个点。17 号晚上公布的。当然那个时候我还在睡觉,我虽然关心美联储,但是不至于连夜追。身体健康还是比 FED 啊、鲍威尔啥的重要多了。有些人可能会觉得这个事儿挺遥远的。但其实并不是。想想我们银行利率降到这么低就懂了。现在银…...

Windows Server 2022 中文版、英文版下载 (2025 年 9 月更新)

Windows Server 2022 中文版、英文版下载 (2025 年 9 月更新)Windows Server 2022 中文版、英文版下载 (2025 年 9 月更新) Windows Server 2022 x64, Version 21H2 (updated Sep 2025) 请访问原文链接:https://sysin.org/blog/windows-server-2022/ 查看最新版。原创作品,转…...

袋鼠云跻身榜单2025中国Data+AI创新企业榜Top15,入选“2025中国隐形独角兽500强”榜单等多项荣誉

一、袋鼠云跻身榜单2025中国Data+AI创新企业榜Top15、2025中国垂直AI Agent创新企业榜TOP30为响应AI产业“技术深化+规模落地”的关键进阶期,国内IT市场研究与咨询机构「第一新声」正式启动了第三届【AI创新先锋—2025中国AI产业创新先锋榜单】评选活动,旨在发掘并表彰受资本…...

k8s系列--前世今生

基础设施即服务 阿里云,国外IWS 平台即服务 新浪云 --docker成为了平台即服务的下一代标准 软件设施即服务 office 为什么需要K8s,传统的架构不需要k8s,但是引入docker容器化技术以后,容器内部的访问变得复杂了,容器的集群化,有没有好的产品,有需求就有产品 Apache MESOS…...

excel文本改为数据格式

excel文本改为数据格式原理和方法转自:https://zhuanlan.zhihu.com/p/179945111 1)选中列(不能有合并的列)---数据----分列-----完成。 2)选中多列,必须是有绿三角形的开始----------电机加圈的i------------------转换为数字...

面向对象初步接触-学生信息管理系统

1. 功能讲解 1.1 数据处理该程序主要处理学生数据,包含学生的name、age、gender、id、major、gpa这些基本信息。 学生数据存储在StudentManagementSystem类的students成员变量中,每个学生的具体信息封装在Student类的对象中,这些对象被添加到List集合中统一管理。 不同之处:…...

Numpy高维数组的索引()

# 创建一个形状为 (3, 4, 2) 的随机数组 # arr 代表 3 个实例,每个实力有 4 个任务点,每个任务点有 (x, y) 坐标 arr = np.random.randint(0, 10, size=(3, 4, 2))arr:[[[8 4][2 9][0 5][4 7]][[5 5][1 6][8 5][1 8]][[6 2][5 5][4 5][9 6]]]索引或切片 描述 这里的ijk都要加…...

详细介绍:jQuery 操作指南:从 DOM 操作到 AJAX

详细介绍:jQuery 操作指南:从 DOM 操作到 AJAXpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace …...

一个 Blazor/WinForm 开发者的 WPF 学习记:通往 Avalonia 的那条路

一个 Blazor/WinForm 开发者的 WPF 学习记:通往 Avalonia 的那条路 写在前面 做了几年 Blazor 和 WinForm,本来以为桌面端这件事就这么过去了。直到我认真考虑跨平台桌面方案,才发现绕不开 Avalonia。而要真正用好 Avalonia,最好先补 WPF 这一课。这篇文章不是教程,更多是…...

VulkanAPI细节梳理2

// --- 创建渲染通行证(支持多视图和深度缓冲) ---std::vector<VkAttachmentDescription> attachments(2);// 颜色附件attachments[0].format = format;attachments[0].samples = VK_SAMPLE_COUNT_1_BIT;attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;attachme…...

React 状态丢失:组件 key 用错引发的渲染异常 - 指南

React 状态丢失:组件 key 用错引发的渲染异常 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monos…...

快速实现 Excel 表格转 SVG:Java 教程 - E

如果你曾尝试过把 Excel 表格导出为 SVG 图片,就会发现 Excel 本身并不支持这种格式。虽然市面上存在一些在线转换工具,但上传文件存在效率与安全方面的顾虑。对于开发者来说,使用 Java 来实现 Excel 到 SVG 的转换,是一种更灵活、可控的方式。本文将演示如何通过简单的 Ja…...

绕过文件上传限制实现客户端路径遍历漏洞利用的技术解析

本文详细解析了如何通过精心构造JSON文件绕过PDF和图像上传验证机制,利用mmmagic、pdflib和file命令的检测特性实现客户端路径遍历攻击的技术方法与实战案例。绕过文件上传限制实现客户端路径遍历漏洞利用 在我之前的博客文章中,我演示了如何利用JSON文件作为客户端路径遍历(…...

事件总线之初步学习

第一步:创建一个eventBus.js 文件名可根据个人爱好取名即可; 内容:import Vue from vue const eventBus = new Vue(); export default eventBus;第二步:使用import EventBus from @/common/eventBus;//监听全局事件clear-login-interval EventBus.$on(clear-login-interva…...

Markdown Day04

常用DOS命令 ##查看当前目录下所有文件dir ##切换目录cd change directory ##cd..回到上一个 ##清理屏幕cls ##退出exit ##查看电脑IP,ipconfig ##打开应用 calc notepad mspaint ##ping 命令 ping www.baidu.com ##文件操作 ad 创建目录 cd> 新增文件 del 删除文件 rd 移…...

C++中类的内存存储

目录类类对象的非虚成员函数类的成员变量空类对象具有虚函数的类对象 类 类本身不会存储在内存中,类实例化的对象才会保存在内存中。但是使用 sizeof 计算类大小时能得到结果,这是因为 sizeof 会在编译时就得到类型信息,这只与类的布局有关。 类对象的非虚成员函数 考虑如下…...

PyTorch 优化器(Optimizer)

优化器(Optimizer)是深度学习训练过程中用于更新模型参数的核心组件。在训练神经网络时,我们需要通过反向传播计算损失函数相对于模型参数的梯度,然后使用优化器根据这些梯度来更新参数,以最小化损失函数。PyTorch 优化器(Optimizer)技术指南 目录优化器概念 常用优化器…...

实用指南:域名市场中,如何确认域名的价值

实用指南:域名市场中,如何确认域名的价值pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !impo…...

初步了解Neo4j

1. 是什么? Neo4j 是一个原生图数据库。它与我们熟悉的关系型数据库(如 MySQL, PostgreSQL)和 NoSQL 数据库(如 MongoDB)有根本性的不同,因为它专门为存储和查询数据之间的关系而设计。 它的核心哲学是:“关系即一等公民”。这意味着关系(或连接)和数据本身同等重要,…...

多模态和语音 AI 年度收官大会,把握 2026 技术风向标!

如果今年只参加一场多模态和语音 AI 大会,来 Convo AI & RTE2025 就够了。你是否好奇:1⃣从端到端语音模型和全双工技术,未来音频还将有哪些突破方向?2⃣如何挖掘端侧 AI 潜能,定义下一代智能硬件终端?3⃣从主动智能体到可交互世界模型,实时多模态 AI 将驱动怎样的未…...

做题

P4159 [SCOI2009] 迷路 矩阵快速幂优化递推。 首先最暴力的想法,设 $ f_{i,j} $ 在 $ j $ 时刻,到达点 $ i $ 的种类数。 枚举时间和 $ i $,然后 $ f_{i,j} = \sum\limits_{k=1}^n {f_{k,j-w[i][k]}} $。 时间很大,所以肯定行不通。 这样显然是不能用矩阵来优化的。 考虑拆…...

解码C语言函数

一、函数基本概念 1.1 函数定义 概念:把一个功能的实现流程封装起来,使用户留下接口进行调用 作用:参数创建该功能进行封装操作,返回值即通过功能显示的产出 1.2 函数组成要素返回值类型:根据函数功能而定,需要在函数头中指定子程序类的返回值类型 参数名:在函数体中提取…...

SchemaStore

Hello World本文来自博客园,作者:南宫影,转载请注明原文链接:https://www.cnblogs.com/nangongying/p/19100468...

XSS攻击防御

目录背景和价值为什么需要输出编码?不同场景下的编码方式(白话版)1. 最常见场景:内容显示在HTML标签里(比如<div>、<span>中)2. 特殊场景:内容显示在HTML标签的属性里(比如value、href中)3. 特殊场景:内容要在JavaScript代码里使用4. 特殊场景:内容作为…...

imes开发部署

一.git地址下载源码 二.后端设置 1.增加配置文件:ktg-admin/src/main/resources/application-test.yml2.临时修改代码:ktg-mes/src/main/java/com/ktg/mes/task/MesTask.java,如图注释2行。 3.快捷键Ctrl+Alt+Shift+S,打开项目结构(Project Structure)对话框4.编辑配置5…...

思维题做题记录-1

CF2600左右有趣的思维题做题记录-1 CF1458C. Latin Square 考虑将原矩阵写成 \(n\times n\) 个限制形如 \((i,j,a_{i,j})\),那么所有操作就是对这些限制进行的修改:对于 UD 操作相当于将限制改为 \((i\mp 1,j,a_{i,j})\)。 对于 LR 操作相当于将限制改为 \((i,j\mp 1,a_{i,j}…...

如何在极短时间内通透一个大型开源项目

如何在极短时间内通透一个大型开源项目前言 在现代软件开发中,快速理解和掌握大型开源项目是一项至关重要的技能。无论是参与开源贡献、技术选型,还是学习先进架构模式,都需要我们具备高效解读项目的能力。本文将以 OpenDeepWiki 项目为例,深入剖析如何运用AI技术快速通透一…...

求 Ray Ping - Gon

rt(跟风...

LCT学习笔记

LCT学习笔记从例题开始: P3690 【模板】动态树(LCT) 对于一棵静态的树,常见方法是树剖然后走链,但是在动态的情况下常见的重链或长链就会很慢,因为修改连边情况后就不满足性质了 引入一个新的方法:实链剖分,对于一个节点,任选一个儿子,连边为实边,其余为虚边,注意这…...

Visual Studio 2026 Insiders 重磅发布:AI 深度集成、性能飞跃、全新设计

近日,微软正式发布 Visual Studio 2026 Insiders!这是迄今为止 Visual StudioE 极具跨越式的一次升级。新版本不仅将 AI 深度融入开发工作流,还带来了企业级性能的显著提升,以及更轻盈、现代的界面设计,全面提升开发体验。近日,微软正式发布 Visual Studio 2026 Insiders…...

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-29- 操作单选和多选按钮 - 下篇(详细教程) - 北京

1.简介 我们可能会遇到一直测试单选和复选按钮的测试场景,如果就十几道选择题,那就手工点击,马上完事,但是如果是让你测试题库呢?那不得那鼠标点击冒烟了,手指点到抽筋了。尤其是做教育类的软件测试,这些就是家常便饭了。因此今天这一篇宏哥主要是讲解一下,如何使用Pla…...

自定义注解实现服务分处理-策略模式

路由:请求标识→匹配 Service→调用 process 方法 通过自定义注解 @BusinessServiceMapping 标记具体业务 Service,注解值(如 DC 代表客户、ORD 代表订单)与请求参数中的业务标识关联;再通过 Spring 容器扫描 + 策略模式,实现 “请求标识→匹配 Service→调用 process 方…...

iOS26正式版全新风格!一文汇总实用新功能!

苹果在9月17日凌晨正式推送了iOS26系统更新,这次版本更新带来了多达61项新功能与优化。经过9个Beta版和近100天的测试,iOS26正式版终于与用户见面,版本号为23A340,更新包大小约8GB。 iOS26不仅在设计语言上焕然一新,更在AI能力、交互体验和隐私保护等多个维度进行了全面升…...

远程控制应用的中的全球节点功能如何开启?插件类型、并发数量怎么选?

不知道大家使用远程控制应用进行跨系统跨设备操作主要都是针对哪些场景呐?其实对于很多需要跨境远程办公的人群或进行售后设备升级管理的朋友来说无疑是必不可少的,甚至于海外学子们来说同样也至关重要,毕竟总有需要协助国内亲友处理问题的时刻,代操作远高于语音指导的效率…...

借助Aspose.HTML控件,使用 Python 将 HTML 转换为 DOCX

Aspose.HTML for Python via .NET提供了用于自动执行文件格式转换任务的类和方法。此外,它能够精确地转换 HTML 结构和样式,是 Python 开发人员的理想选择。本教程将向开发者展示如何在 Python 中以编程方式将HTML转换为DOCX。我们将使用一个非常快速的 Python SDK 将网页转换…...

openEuler 24.03 (LTS-SP2)安装mysql 8.0.41

环境:OS:openEuler 24.03 (LTS-SP2)(安装时候没有图形界面的选择项可选)mysql:8.0.41 glib.2.17 操作系统下载https://www.openeuler.org/en/download/#openEuler%2024.03%20LTS%20SP2查看系统glibc版本[root@localhost soft]# ldd --versionldd (GNU libc) 2.38Copyright (C) …...

7.数据库归档异常检查与处理

备库: select instance_name,status from v$instance; select open_mode from v$database; @dgstat 如果都是00:00:00则说明本地从生产到DR同步没有问题 @dgpro 与上面的RFS的sequence#进行对比,可以算出生产与DR相差的sequence Block# 1分钟前是852100,1分钟后是856100,…...

Gitlab 关键字

核心原则:一切路径始于项目根目录:https://blog.csdn.net/qq_14829643/article/details/150773286include: local:中的所有路径都是相对于当前项目的根目录进行解析的。它既不是传统意义上的“绝对路径”(如 /etc/gitlab-runner/config.toml,这会指向 Runner 服务器的文件…...

8.listener日志占用过大处理方法

ps -ef |grep tns asmenv 查询listener.log的位置路径 lsnrctl status [listener name] 例如: listener log file : /oracle/TEST/diag/tnslsnr/xianigux/listener/alert/log.xml cd /oracle/TEST/diag/tnslsnr/xianigux/listener/alert 删除除了log.xml以外的所有xml文件 rm …...

马建仓AI助手完成全链路升级:三十余项新能力重塑研发工作流

马建仓AI助手完成全链路升级:三十余项新能力重塑研发工作流 在数字化转型浪潮席卷各行各业的当下,研发效率正成为企业竞争力的关键指标。马建仓AI助手近日宣布完成面向真实研发流程的全面升级,新增三十余项智能能力,覆盖需求、开发、测试、项目管理等关键环节,标志着企业级…...

线性回归与 Softmax 回归:深度学习基础模型解析 - 实践

线性回归与 Softmax 回归:深度学习基础模型解析 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", mon…...

浏览器下载,一定要开启这个隐藏功能!

大家好,我是 Immerse,一名独立开发者、内容创作者。关注公众号:沉浸式趣谈,获取最新文章(更多内容只在公众号更新) 个人网站:https://yaolifeng.com 也同步更新。 转载请在文章开头注明出处和版权信息。我会在这里分享关于编程、独立开发、AI干货、开源、个人思考等内容…...

开源项目进度管理系统 PJMan:让技术项目进度可视化、数据化的利器

在软件项目管理过程中,进度不透明、任务卡点难定位、人员效率难量化是许多技术团队面临的痛点。今天为大家介绍一款开源项目进度管理系统 ——PJMan,其「项目概览」页面通过分层可视化与数据驱动的设计,将项目的 “全局趋势、任务细节、人员效率” 全方位呈现,为技术团队提…...

【光照】[漫反射]UnityURP兰伯特能量守恒吗?

【从UnityURP开始探索游戏渲染】专栏-直达兰伯特漫反射的能量守恒性 ‌能量守恒基本原理‌ 在物理正确的渲染中,能量守恒要求:表面反射的光能总量 ≤ 入射光能 漫反射+高光反射 ≤ 1.0 没有能量凭空产生或消失‌经典兰伯特模型的能量守恒问题‌ 传统兰伯特漫反射公式: $漫反…...

Microsoft AI Genius 限时挑战赛:实战开启,等你应战!

通过 Microsoft AI Genius 系列 2.0 的实战专题课程,相信各位开发者对智能 GitHub Copilot 副驾驶 Agent Mode、Azure AI Foundry Agent Service(国际版)及 Copilot Studio 的理解与掌握达到了新高度。现在,是时候将所学理论转化为实际行动,投身真实场景检验成果了。 ↓↓…...

DevSecOps革命:测试工具如何重塑企业数字化转型的质量防线

DevSecOps革命:测试工具如何重塑企业数字化转型的质量防线 在数字化转型浪潮席卷全球的当下,软件质量保障体系正经历着前所未有的范式转变。DevSecOps作为这场变革的核心方法论,正在重新定义测试工具在企业技术栈中的战略地位。从单纯的"质量守门员"到贯穿全生命周…...