新一代自动出价范式:在线强化学习SORL框架

news2024/10/5 20:25:10

目录:

· 摘要

· 动机:在离线不一致问题

· 问题建模

· 方法:SORL框架

· 实验结果

· 总结

· 关于我们

· 参考文献

▐ 摘要

近年来,自动出价已成为广告主提升投放效果的重要方式,在真实广告系统(RAS)中,常见的自动出价策略是利用强化学习算法在复杂多变的竞价环境下进行实时调整。考虑到线上探索的成本和安全性,强化学习模型的训练通常是在一个模拟广告系统(VAS)中进行。由于RAS和VAS之间存在明显差距,导致强化学习在VAS中的训练存在在离线不一致问题。在本文中,我们正式地定义了在离线不一致问题,并系统地分析了其成因和影响;其次,我们提出了可持续在线强化学习(SORL)框架,该框架首次直接以与RAS交互的方式训练自动出价策略,从而较好解决了在离线不一致问题。SORL框架包含探索和训练两部分算法,具体而言,我们基于Q函数的Lipschitz光滑特性设计了探索的安全域,并提出了一个安全高效的探索算法用于在线收集数据;另外提出了V-CQL算法用于利用收集到的数据进行离线训练,V-CQL算法通过优化训练过程中Q函数的形态,减小不同随机种子下训练策略表现的方差,从而提高了训练的稳定性。大量的仿真和线上实验验证了SORL算法在效果上优于已有自动出价算法。基于该项工作整理的论文已发表在NeurIPS 2022,欢迎阅读交流。

论 文:Sustainable Online Reinforcement Learning for Auto-bidding

下 载:https://openreview.net/forum?id=zyrBT58h_J

仿真实验代码:https://github.com/nobodymx/SORL-for-Auto-bidding

1. 动机:在离线不一致问题

自动出价是根据广告主的需求(如优化目标、预算设置,成本约束等),针对每个流量进行实时出价,以最大化广告主投放效果的技术。当前业界领先的自动出价策略是由强化学习(reinforcement learning,RL)训练得到[1],出于安全等因素的考虑,业界普遍认为不能直接与实际在线广告系统(real-world advertising system,RAS)进行交互训练,常用的解决方案是基于历史竞价日志(通常是精竞日志)构建一个离线的模拟竞价环境(virtual advertising system,VAS)用于交互训练[1,2,3]。然而,由于RAS复杂多变的特点,难以构建能够精确模拟RAS的VAS,常用的VAS一般是简化版的RAS[1,2,3],其与RAS之间存在诸多不一致,主要包括:

  1. 竞价阶段不一致:RAS一般为多阶段竞价,而常用的VAS中只有单阶段竞价;

  2. 拍卖机制不一致:RAS拍卖机制复杂,而常用的VAS使用简单的GSP拍卖机制;

  3. 其余广告主影响不一致:RAS中其余广告主会适时调整出价带来市场价波动,而VAS中市场价不变。

因此,在VAS中精心训练的自动出价策略不一定在RAS中表现出色(如表1所示),更难以达到出价策略性能的“天花板”。我们称为这种问题为在离线不一致问题

613ccca0647fef741c33ffbfa391d6eb.png
表1: 十个不同的自动出价策略在RAS和VAS中的表现对比。其中R/R*和预算A/B实验越大代表策略在相应的环境中表现越好。可以看到在VAS中表现优异(排名靠前)的出价策略在RAS中表现不一定好(排名可能靠后)

本文中,我们设计了可直接与RAS交互训练的可持续在线强化学习框架(sustainable online RL,SORL),抛弃了在VAS中训练的模式,从而较好解决了在离线不一致问题,提升了策略性能。

2. 问题建模

单个广告主视角下的自动出价问题可被看成一个具有个时间步长的周期任务。令到时刻之间的流量数为,用和分别表示第个流量的价值和市场价,其中和分别表示流量价值和市场价的上界,。我们考虑广告主的需求为预算约束,并设广告主的总预算为,则自动出价问题可以建模为Constraint MDP(CMDP)模型,其中为时刻的状态,可由剩余时间、剩余预算、预算消耗速率等元素组成,动作为时刻的出价,其中分别为出价的上界和下界,奖励函数和约束函数分别为到时刻之间竞得流量的总价值和相应的花费,表示状态转移规则,为折扣因子。用表示自动出价策略,则预算约束下的自动出价问题可以形式化为:

其中,RAS一般利用预算花完提前结束竞价的方式来满足(1)式中的限制条件。业界一般VAS中训练得到SOTA的自动出价策略[1],其中预算约束以与RAS中同样的方式被满足。然而,如前所述,这种训练模式存在在离线不一致问题。下面介绍所提出的可直接与RAS交互训练的SORL框架。

3. 方法:SORL框架

SORL框架主要由两部分算法构成,包括用于在线探索和数据收集的Safe and Efficient ExploRation (SER) 策略,以及用于离线训练自动出价策略的Variance suppressed-Conservative Q learning (V-CQL)算法。SORL框架采用迭代式工作方式,在线数据收集和离线策略训练交替进行。

3.1 在线探索:SER策略

在线探索策略需要同时满足两个基本要求,包括:

  1. 安全性:在线探索策略首先要满足安全性,即客户效果不能太差,否则会引起客诉,甚至导致系统不稳定。令表示在线探索策略,我们定义如果满足:,则是安全的,其中为一个RAS上正在运行的安全策略(在这里我们使用RL在VAS中训练得到的策略),为一个常数。其含义为的性能与的性能之间相差不超过一个阈值。

  2. 高效性:RL本质是一个Trail-and-Error的算法,需要收集到当前训练策略输出动作附近的数据(无论是on-policy还是off-policy模式),通过数据的反馈来进一步更新当前训练策略。因此,不能只保证安全,还要能够在离线训练策略出价的附近进行出价尝试,根据离线训练策略变化而变化,从而收集到能够带来新反馈的数据。我们称此要求为在线探索策略的高效性要求。

为此我们提出了SER策略,下面介绍其基本思路。

🔍 保证探索安全:基于Q函数Lipschitz特性设计安全域

基本思路: 在出价的邻域内构造可以探索的安全域,其中为邻域的范围,该想法的理论基础是我们对于自动出价问题中Q函数Lipschitz光滑特性的证明(见论文),其Lipschitz常数我们记为。具体而言,由于Q函数的含义为后续累计奖励的期望,则Q函数是-Lipschitz光滑的表明:当前出价动作偏移一点,后续累计奖励的期望的下降率不会超过。因此我们可以设计出价附近的一个小邻域为安全域。基于安全域,我们可设计在线探索策略为:在的连续时间内在安全域中采样出价动作,在剩余的时间内遵循,即:

其中0≤  <  ≤ , ,且。此外,在下面定理中,我们给出了(2)中在线探索策略的性能与的性能之差的上界,证明过程见论文附录E.3。

定理(上界):(2)式中探索策略的性能与的性能之差满足:

为满足安全性要求,我们进一步设计安全域的范围为。

🔍 提高探索效率:设计高效采样方法

基本思路: 有了安全性保障,我们进一步设计(2)式中在线探索策略的采样方式来增加探索的效率,我们用来表示其采样分布。一种朴素的采样方法是按照(截断)高斯分布在安全域中采样,其中方差为超参数。为了与区别,我们用来表示,用来表示对应的在线探索策略。虽然更加安全,但是它不会随当前正在训练策略的改变而变化,不能给予充分反馈。因此,为了增加收集到数据的反馈信息,我们将向当前训练策略出价方向进行偏移,并限制与之间的距离不超过阈值,其中表示当前正在训练策略的Q函数。这可以形式化为一个泛函极值问题:

利用Euler方程,我们可以求解为:

其中为归一化系数,为拉格朗日系数(这里我们设置为超参数)。完整的推导见论文附录F.1.1。可以看出表达式物理意义明显,其中进一步保证了安全,而项保证了高效(使得在线探索策略可在当前训练策略出价附近进行探索,并根据其变化而变化)。在论文附录F.1.2中我们给出了根据采样的代码实现方式。

🔍 完整SER策略

至此,完整的SER策略为:

此外,我们可以通过调整中超参数和来控制的激进程度,具体而言,越小越大采样越激进(即极值对应出价越贴近),反之则越保守。不同超参数值下性能的变化见论文附录G.2.2。我们利用SER策略在RAS中收集状态转移数据集用于后续离线策略的训练,其中。

3.2 离线训练:V-CQL算法

利用传统RL方法基于收集的数据进行离线训练面临两个挑战,包括:

  1. 无效性:由于安全域的限制,收集的数据存在数据缺失,可能导致Q函数在缺失的出价动作(out-of-distribution,OOD)上高估[5],造成训练无效;

  2. 不稳定性:由于当前训练策略会影响,且一般不同随机种子下利用RL训练得到策略的性能方差较大(此外自动出价问题的离线策略评估(off-policy evaluation,OPE)准确度不高(见论文附录B)),因此容易由较差策略的Q函数构成从而带来客户效果上不必要的损失。

为解决上述挑战,我们提出了V-CQL算法。其中,V-CQL算法的核心在于提出了一种Q函数的损失函数,该损失函数在传统TD误差项的基础上加入正则化项和,分别用于解决上述两个挑战。 

🔍 缓解无效性:Offline RL抑制OOD高估项

基本思路: Offline RL是近年来研究火热的RL技术之一[4,5,6],其目标是基于固定数据集训练高性能的策略,它解决的主要挑战是由于数据缺失造成的外推误差(extrapolation error)问题,其中对OOD动作的高估是外推误差问题的主要表现。因此,我们可以利用offline RL技术来解决无效性挑战。具体而言,我们采用offline RL技术中CQL[4]的方法,在Q函数的损失函数中加入了正则化项:

其中为常数,为均匀分布函数。上式中第一项为对所有出价动作进行惩罚,第二项为对数据集中存在的(in distribution,ID,即非OOD)出价动作进行奖励,二者整体上降低了OOD出价动作Q函数值,从而避免高估。

🔍 增强稳定性:二次型形态约束项

基本思路: 为了增加训练稳定性,减少对OPE的依赖,我们设计了正则化项。具体而言,如图1所示,我们观测到和“最优”策略(“最优”指离线实验中的最优,见论文章节5中的实验设置)对应的Q函数在不同状态下相对出价动作均具有二次型函数形态,故我们认为最优策略的Q函数也应该具有二次型函数的形态。

752e61ab41ba3e4bdccc203036e4efba.png

因此,我们希望通过限制训练过程中Q函数形态来减少策略性能的方差,设计的正则化项为:

其中,为常数,为具有二次型的Q函数(在这里我们使用的Q函数),为KL散度。如图2所示,加入后Q函数训练中保持了二次型的形态。

9fe7ae5d04bde3abe72eac4e4b2787a5.gif
图2: 加入限制形态的正则化项后Q函数训练中保持二次函数形态

🔍 完整V-CQL损失函数

至此,完整的V-CQL损失函数为:

其中,为TD误差项,表示Bellman算子,为目标Q函数。

3.3 迭代式更新结构

35dcbe766221ca8e8e9ed68cf087b8c2.png
图3: SORL迭代工作框架

如图3所示,SORL框架采用迭代式工作方式。具体而言,首先利用安全策略在RAS上进行数据收集,构成数据集,实现“热启动”。其次利用V-CQL基于训练自动出价策略及其Q函数。此后,利用SER策略的在线探索和利用V-CQL的离线训练交替进行,我们分别用和表示在轮迭代时的SER策略和训练的自动出价策略,为的Q函数,。我们设计中的采样函数为:

,其中,为归一化参数。值得注意的是,由于都满足(2)式,只是采样函数不同,故他们都满足安全性要求。此外,在在轮离线训练时,我们将(8)式中的替换为,V-CQL算法训练的结果作为新策略的Q函数。整体SORL的算法总结如下: e51353cab23bc7fb9c1ab7f08d021d0c.png

4. 实验结果

我们同时利用了在线实验和仿真实验来验证我们方法的有效性。实验主要回答了以下三个问题:(1)SORL的整体效果怎么样?在迭代过程中SER策略能否一直保持安全,是否比更为高效?V-CQL训练的自动出价策略能否超过其余offline RL算法训练的策略和现有SOTA的策略?(2)SER策略在不同的Q函数下是否依旧能够保证安全?(3)V-CQL是否减少了不同随机种子下训练策略的方差?

实验设定: 我们在阿里妈妈万相台广告平台开展线上实验。仿真实验是在一个人工构建离线RAS和相应的VAS中完成的,仿真实验平台的构建见论文附录A.2。我们利用SOTA的自动出价策略USCB[1],进行热启动和安全区域的构建。设定安全阈值为。

性能评价指标: 广告主竞得流量总价值作为评估自动出价策略性能的主要指标,我们称为BuyCnt。此外,我们还利用另外三个指标作为辅助指标,包括ROI、转化成本(CPA)和广告主总消耗(ConBdg)。其中,BuyCnt、ROI和ConBdg越大,CPA越小表明自动出价策略的性能越好。

Baselines: 我们将所提算法与SOTA的自动出价策略,USCB[1],进行对比。此外,我们将V-CQL算法与现有的offline RL算法,BCQ[5]和CQL[4],进行对比。由于很多safe RL的算法不适用于自动出价问题,我们将SER策略与高斯采样的探索策略进行对比,来验证其高效性。

4.1 主要实验

为回答问题(1): 图4展示了仿真实验结果,从图4(a)可以看出,SER策略的BuyCnt下降都小于5%,验证了其安全性。此外,SER策略的BuyCnt随迭代增加而增加,且始终高于,这表明SER策略效率更高。从图4(b)可以看出,V-CQL训练的自动出价策略的BuyCnt高于BCQ、CQL和USCB,验证了V-CQL的有效性。此外,BuyCnt随迭代次数的增加而增加,在第5次迭代时收敛到最优BuyCnt,这表明了V-CQL方法的有效性以及SORL框架的优越性。

34c80971e2fe4683619d4c9ed60f2ceb.png
图4: 仿真实验中SORL框架实验结果

在线实验中,我们利用基于SER策略从RAS中收集数据,并进行预算A/B实验,比较4次迭代中自动出价策略的性能,结果如表2所示。我们可以看到,随着迭代的进行,自动出价策略的性能越来越好,并超过了USCB,这验证了整个SORL框架的优越性。

2785258dd1a025a521db54df2a2975f8.png
表2: 在线实验中SORL框架实验结果

4.2 消融实验

为回答问题(2): 我们使用具有不同性能的自动出价策略的Q函数来充分检查SER策略的安全性。具体而言,在仿真实验中,我们利用7个不同版本的自动出价策略对应的Q函数构造7个的SER策略,其中,。我们还构造了一个高斯探索策略进行比较。所有探索策略的超参数均为。我们将和7个SER策略应用到仿真RAS中,探测策略的BuyCnt如图5所示。我们可以看到,SER策略的BuyCnt随着自动出价策略的性能水平而上升。SER策略的最差BuyCnt比下降约3.52%,满足安全性要求。

ef976b97e4db3004fb9ea166c11e9633.png
图5: 仿真实验中不同性能策略的Q函数下SER策略的安全性检验

在线实验中,我们在RAS中对部分实验数据应用和,并在预算A/B实验中与相比,结果如表3所示。我们可以看到的ConBdg和BuyCnt的变化都在5%,并且优于,这说明SER策略的安全性。

f308cb2b16de0319adf3e9c54a88bc1b.png
表3: 在线实验中SER策略和高斯探索策略分别与原有安全策略的预算A/B实验

为回答问题(3): 仿真实验中,我们利用V-CQL、CQL、BCQ和USCB训练100个不同随机种子下的自动出价策略,结果如图6所示。可以看到V-CQL的训练策略的性能方差比其他算法小得多,同时,V-CQL训练策略的的平均性能可以保持在一个较高的水平,验证了V-CQL算法的稳定性。

3d0409792d42d228a4ca3303c0eed6b7.png
图6: 仿真实验中V-CQL函数的稳定性验证

在线实验中,我们将V-CQL和USCB训练的自动出价策略应用于部分实验数据进行为期7天的预算A/B实验,各项指标的平均值显示在表4中。可以看到V-CQL在几乎所有指标上都优于USCB方法。此外,我们在表5中给出了不同随机种子下的预算A/B实验结果。我们可以看到V-CQL在大部分随机种子下都优于USCB,在其余随机种子下相差不多。这表明V-CQL确实有助于减少训练策略性能的方差,同时保持其平均性能维持在一个较高水平。

644b0210962a9c3bbe97ccef363ac06a.png表4: 在线实验中V-CQL和USCB算法进行预算A/B实验对比

7235b110bdad8afbde5f802a65ed11cb.png

表5: 在线实验中10个随机种子下V-CQL训练自动出价策略效果(与USCB进行预算A/B实验对比)

5. 总结

本文主要从单广告主视角研究了在线广告中的自动出价问题。首先,我们提出了现有RL出价算法面临的竞价环境在离线不一致问题,并系统分析了其成因和影响。然后,为解决在离线不一致问题,我们提出了能够直接与RAS进行交互学习的SORL框架,开启了强化学习训练自动出价策略的新范式。SORL框架主要由两个算法构成,包括安全且高效的SER在线探索策略、有效稳定的V-CQL离线训练算法。整个SORL框架以迭代的方式工作,在线探索和离线训练交替进行。仿真和在线实验都验证了整个SORL框架优于现有的自动出价算法。消融研究表明,即使在性能较差的自动出价策略指导下,SER策略也能保证探索的安全性。同时消融研究也验证了V-CQL算法在不同随机种子下的稳定性。

▐ 关于我们

阿里妈妈智能广告平台算团队主要负责建设阿里妈妈万相台广告产品的算法体系和阿里妈妈机制策略平台,我们紧密围绕淘系电商商家的不同营销需求,利用最先进的算法技术帮助商家获得最极致的广告投放效果和体验,主要涉及强化学习、深度学习、运筹优化等前沿技术,团队发表过多篇NeurIPS、ICML、KDD等顶会论文。我们始终相信并且一直践行着通过技术创新来提升效率、变革商业、普惠商家。

▐ 参考文献

[1] Y. He, X. Chen, D. Wu, et al., A unified solution to constrained bidding in online display advertising, in Proceedings of the 27th ACM SIGKDD Conference on Knowledge Discovery & Data Mining, Aug. 2021.

[2] X. Hao, Z. Peng, Y. Ma, et al., Dynamic knapsack optimization towards efficient multi-channel sequential advertising, in Proceedings of the 37th International Conference on Machine Learning, Nov. 2020.

[3] D. Wu, X. Chen, X. Yang, et al., Budget constrained bidding by model-free reinforcement learning in display advertising, in Proceedings of the 27th ACM International Conference on Information and Knowledge Management, Oct. 2018.

[4] A. Kumar, A. Zhou, G. Tucker, and S. Levine, Conservative q-learning for offline reinforcement learning, in Advances in Neural Information Processing Systems 33, 2020.

[5] S. Fujimoto, D. Meger, and D. Precup, Off-policy deep reinforcement learning without exploration, in Proceedings of 36th International Conference on Machine Learning, May. 2019.

[6] R. Qin, S. Gao, X. Zhang, et al. NeoRL: A near real-world benchmark for offline reinforcement learning, arXiv preprint arXiv:2102.00714, 2021.

END

75bab8495a1f4d7083b391c7ff848fe1.gif

也许你还想看

GBA:面向搜推广模型的同步和异步自由切换的训练范式

APG:面向CTR预估的自适应参数生成网络

CBRL:面向ROI约束竞价问题的课程引导贝叶斯强化学习框架

USCB:展示广告约束出价问题的通用解决方案

d953eaf83280a8f96f7f77732845e9e3.gif

喜欢要“分享”,好看要“点赞”哦ღ~

↓欢迎留言参与讨论↓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125876.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 数学与算法系列之高斯消元法求解线性方程组

1. 前言 什么是消元法&#xff1f; 消元法是指将多个方程式组成的方程组中的若干个变量通过有限次地变换&#xff0c;消去方程式中的变量&#xff0c;通过简化方程式&#xff0c;从而获取结果的一种解题方法。 消元法主要有代入消元法、加减消元法、整体消元法、换元消元法、…

【C/C++ SOCKET编程】实现服务器客户端的简单通信

什么是SOCKET Socket又称"套接字"&#xff0c;应用程序通常通过"套接字"向网络发出请求或者应答网络请求&#xff0c;使主机间或者一台计算机上的进程间可以通讯。 TCP/IP协议 从字面意义上讲&#xff0c;有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议…

Hive环境安装搭建

目录 Hive安装 MySQL安装 配置Hive元数据库到MySQL Hive安装 软件包 0积分免费下载&#xff1a; hive环境安装所需软件包-Hive文档类资源-CSDN下载 将软件包拖进虚拟机中 将jar包解压到目录 给目录文件夹名改为hive 配置环境变量 输入命令&#xff1a; vim /etc/profile …

数据滚动大屏:Stimulsoft Dashboards.WIN 2023.1.2

Stimulsoft Dashboards.WIN 是一组组件&#xff0c;您可以使用这些组件将分析添加到您的应用程序中。WinForms 和 WPF 的仪表板 Stimulsoft Dashboards.WIN 是一个功能齐全的工具&#xff0c;用于在仪表板上转换、分析、分组、过滤、排序和显示数据。它与 .NET Framework 4.5 及…

科创板智能家居第一股,萤石网络昨日上市

2022年12月28日&#xff0c;杭州萤石网络股份有限公司(以下简称“萤石网络”)成功登陆上海证券交易所科创板&#xff0c;证券代码为688475。值得一提的是&#xff0c;萤石网络是登陆科创板的第500家企业。 在上市仪式上&#xff0c;萤石网络董事长、总经理蒋海青表示&#xff0…

医药信息咨询公司排名TOP10是怎么进行收费的?

随着我国医药行业的飞速发展&#xff0c;市场竞争也是越发的激烈&#xff0c;作为产业链中的医药信息咨询公司作用也愈加明显&#xff0c;医药信息咨询公司以提供医药行业的战略咨询、项目尽调、产品立项评估、行业赛道/细分市场机会评估、专利服务、新产品上市服务、新药产品特…

QA | 关于高级硬件在环(HIL)想要了解的十个问题

HiL&#xff08;Hardware-in-the-Loop&#xff09;硬件在环仿真测试系统是采用实时处理器运行仿真模型来模拟受控对象&#xff08;比如&#xff1a;汽车、航空飞机等设备&#xff09;的运行状态&#xff0c;以此判断电控模块的性能。 Q1&#xff1a;什么是HIL&#xff1f; 硬…

分享20个Javascript中的数组方法,收藏

什么是数组&#xff1f;与其他编程语言中的数组一样&#xff0c;Array对象允许在一个变量名称下存储多个项的集合&#xff0c;并且具有用于执行常见数组操作的成员。 声明数组 我们可以用两种不同的方式声明数组。 使用新阵列 使用new Array&#xff0c;我们可以指定希望存在…

GitHub下载量10W,最新23版Java岗面试攻略,涵盖25个技术栈

年底失业&#xff0c;机会也不多&#xff0c;短时间内想找到合适工作是几乎不可能的。身体好点在家&#xff0c;主要建议大家就做两件事&#xff1a; 第一&#xff1a;整理工作经验&#xff0c;制定新年求职计划。等一些不错的公司放出新的hc&#xff0c;市场情况一回暖&#…

淘宝首页serverless升级后的质量保障方案

本文主要介绍了serverless 架构升级在淘宝首页的应用&#xff0c;新架构对底层所依赖的容器、环境资源等与之前相比差异较大&#xff0c;并且对应的预发、安全生产、生产等环境&#xff0c;与旧架构的完全隔离。背景阿里巴巴集团大淘宝技术全面推进云原生2.0战役——serverless…

wordpress企业主题推荐

WordPress制造企业主题推荐 国潮好物&#xff0c;配国产主题&#xff0c;为中国制造加油、助力&#xff0c;适合生产、加工、制造业官网的WordPress主题。 演示 https://www.jianzhanpress.com/?p4358 wordpress服务行业网站模板推荐 浅绿色小清新wordpress网站模板&#x…

软件测试期末复习(一)试题及答案

一、单项选择题&#xff08;每空 2 分&#xff0c;共 40 分&#xff09; 1&#xff0e;软件测试的目的:&#xff08; c &#xff09; A. 避免软件开发中出现的错误 B. 发现软件开发中出现的错误 C. 尽可能发现并排除软件中潜藏的错误&#xff0c;提高软件的可靠性 D. 修改软件…

Axure绘制流程图

相信大家在日常的工作中经常会绘制流程图&#xff0c;基本常见的绘制流程图的工具有Visio、亿图等。但是如果大家使用的是axure制作的产品prd的话&#xff0c;这些流程图的源文件全部需要进行存储&#xff0c;一旦丢失就需要重新画一遍&#xff0c;这样是很不方便。那么有没有一…

JDBC API详解

文章目录入门案例DriverManagerConnectionStatementResultSetPreparedStatement数据库连接池完整代码入门案例 package jdbc;import java.sql.*;public class connectionTest {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.注册…

Revit二次开发小技巧(十六)寻找最短路径

最近遇到一个需求&#xff0c;指定两个配电箱&#xff0c;然后找到两个配电箱之间最短的桥架路径。运用了Dijkstra算法去计算最短路径&#xff0c;以配电箱实体、三通、四通为节点&#xff0c;简化中间弯头计算的方式。 背景 选择起点和终点的配电箱&#xff0c;找到最短的桥架…

RingUI + JCEF开发IDEA插件

文章目录RingUI知识储备示例插件实现逻辑开发环境开发流程新建一个IDEA插件项目新建一个前端项目验证前端项目丰富前端项目丰富插件内容RingUI This collection of UI components aims to provide all the necessary building blocks for web-based products built inside JetB…

向 Windows 高级用户进阶,这 5 款效率工具帮你开路

工欲善其事&#xff0c;必先利其器。作为全球最多人使用的桌面操作系统&#xff0c;Windows 的使用效率与我们的工作学习息息相关。今天&#xff0c;小编就为大家整理了 10 款提高效率的利器&#xff0c;让你的 Windows 更具生产力。 1.文件预览——Seer MacOS 有一个非常方便…

优雅草YYC松鼠短视频2022年12月28日更新v5.1.6版本更新·修复因为消息提醒二开导致菜单栏无法显示·进一步完善推送

优雅草YYC松鼠短视频2022年12月28日更新v5.1.6版本更新修复因为消息提醒二开导致菜单栏无法显示进一步完善推送 更新日志 修复因为消息提醒二开导致菜单栏无法显示 继续进一步开发消息推送 目前消息推送登录以及推送判断返回刷新仍存在问题在开发中 目前goeasy官方也在更新关…

数据劫持基础

数据劫持数据劫持原理。属性描述符Object.defineProperty官网响应式原理![在这里插入图片描述](https://img-blog.csdnimg.cn/b9f900484f314334a0dc6139428b397c.png)getter和setterObject.defineProperty的不足proxy工作原理总结数据劫持原理。 数据劫持&#xff0c;指的是在…

Find My资讯|苹果 Find My 找到因交通事故坠崖的一名女子

美国加州圣贝纳迪诺县消防局在其官方 Facebook 更新动态&#xff0c;表示在接到家属报警&#xff0c;通过苹果 Find My 功能追踪家人的 iPhone&#xff0c;成功营救出在圣贝纳迪诺山区的 18 号高速公路上坠崖的一名妇女。 圣贝纳迪诺县消防局在帖子中表示这名妇女在圣诞节那天…