2025年SCI一区智能优化算法:混沌进化优化算法(Chaotic Evolution Optimization, CEO),提供MATLAB代码
一、混沌进化优化算法
https://github.com/ITyuanshou/MATLABCode
1. 算法简介
混沌进化优化算法(Chaotic Evolution Optimization, CEO)是2025年提出的一种受混沌动力学启发的新型元启发式算法。该算法的主要灵感来源于二维离散忆阻映射的混沌进化过程,通过利用忆阻映射的超混沌特性,为进化过程引入随机搜索方向,增强了算法的全局搜索能力和收敛速度。CEO算法在2025年3月发表在中科院1区SCI期刊《Chaos, Solitons & Fractals》。
2. 算法原理
2.1 混沌映射
CEO算法采用二维离散忆阻超混沌映射来生成混沌候选个体,具体公式如下:
{ x n + 1 = a 1 x n ( 1 − x n ) + b 1 y n y n + 1 = a 2 y n ( 1 − y n ) + b 2 x n \begin{cases} x_{n+1} = a_1 x_n (1 - x_n) + b_1 y_n \\ y_{n+1} = a_2 y_n (1 - y_n) + b_2 x_n \end{cases} {xn+1=a1xn(1−xn)+b1ynyn+1=a2yn(1−yn)+b2xn
其中, a 1 , a 2 , b 1 , b 2 a_1, a_2, b_1, b_2 a1,a2,b1,b2 是控制参数,通常取值为 a 1 = 3.8 , a 2 = 3.8 , b 1 = 0.5 , b 2 = 0.5 a_1 = 3.8, a_2 = 3.8, b_1 = 0.5, b_2 = 0.5 a1=3.8,a2=3.8,b1=0.5,b2=0.5。
2.2 变异操作
-
映射个体到混沌空间:
- 从当前种群中随机选择两个个体 x t x_t xt 和 y t y_t yt。
- 将 x t x_t xt 和 y t y_t yt 映射到 [ − 0.5 , 0.5 ] [-0.5, 0.5] [−0.5,0.5] 和 [ − 0.25 , 0.25 ] [-0.25, 0.25] [−0.25,0.25] 范围内,分别记为 x ′ x' x′ 和 y ′ y' y′:
x ′ = x t − l b u b − l b − 0.5 x' = \frac{x_t - lb}{ub - lb} - 0.5 x′=ub−lbxt−lb−0.5
y ′ = y t − l b u b − l b − 0.25 y' = \frac{y_t - lb}{ub - lb} - 0.25 y′=ub−lbyt−lb−0.25
其中, l b lb lb 和 u b ub ub 分别是当前种群变量的下界和上界。
-
生成混沌候选个体:
- 使用混沌映射生成 N N N 个混沌候选个体 x chaos x_{\text{chaos}} xchaos 和 y chaos y_{\text{chaos}} ychaos:
x chaos ( n ) = k ⋅ e − cos ( n π ) − 1 ⋅ x t x_{\text{chaos}}(n) = k \cdot e^{-\cos(n\pi)} - 1 \cdot x_t xchaos(n)=k⋅e−cos(nπ)−1⋅xt
y chaos ( n ) = y t ′ + x t y_{\text{chaos}}(n) = y'_t + x_t ychaos(n)=yt′+xt
其中, k k k 是一个常数,通常取值为 k = 1 k = 1 k=1。
- 使用混沌映射生成 N N N 个混沌候选个体 x chaos x_{\text{chaos}} xchaos 和 y chaos y_{\text{chaos}} ychaos:
-
映射回实际位置:
- 将混沌候选个体映射回实际位置:
x chaos ′ = x chaos ⋅ 0.5 ⋅ ( u b − l b ) + l b x_{\text{chaos}'} = x_{\text{chaos}} \cdot 0.5 \cdot (ub - lb) + lb xchaos′=xchaos⋅0.5⋅(ub−lb)+lb
y chaos ′ = y chaos ⋅ 0.25 ⋅ 2 ⋅ ( u b − l b ) + l b y_{\text{chaos}'} = y_{\text{chaos}} \cdot 0.25 \cdot 2 \cdot (ub - lb) + lb ychaos′=ychaos⋅0.25⋅2⋅(ub−lb)+lb
- 将混沌候选个体映射回实际位置:
-
生成进化方向:
- 计算进化方向 d x t n d_{x_t}^n dxtn 和 d y t n d_{y_t}^n dytn:
d x t n = x chaos ′ n − x t d_{x_t}^n = x_{\text{chaos}'}^n - x_t dxtn=xchaos′n−xt
d y t n = y chaos ′ n − y t d_{y_t}^n = y_{\text{chaos}'}^n - y_t dytn=ychaos′n−yt
- 计算进化方向 d x t n d_{x_t}^n dxtn 和 d y t n d_{y_t}^n dytn:
-
变异操作:
- 使用进化方向更新个体:
x t + 1 = x t + a ⋅ d x t n x_{t+1} = x_t + a \cdot d_{x_t}^n xt+1=xt+a⋅dxtn
y t + 1 = y t + a ⋅ d y t n y_{t+1} = y_t + a \cdot d_{y_t}^n yt+1=yt+a⋅dytn
其中, a a a 是搜索步长,通常取值为 a = 0.5 a = 0.5 a=0.5。
- 使用进化方向更新个体:
2.3 交叉操作
- 生成试验向量:
- 对于每个维度 j j j,生成一个随机数 r j r_j rj,如果 r j < C R r_j < CR rj<CR 或 j = j rand j = j_{\text{rand}} j=jrand,则试验向量 x trial n x_{\text{trial}}^n xtrialn 为变异个体 x t + 1 n x_{t+1}^n xt+1n,否则为当前个体 x t n x_t^n xtn:
x trial n = { x t + 1 n , if r j < C R or j = j rand x t n , otherwise x_{\text{trial}}^n = \begin{cases} x_{t+1}^n, & \text{if } r_j < CR \text{ or } j = j_{\text{rand}} \\ x_t^n, & \text{otherwise} \end{cases} xtrialn={xt+1n,xtn,if rj<CR or j=jrandotherwise
其中, C R CR CR 是交叉概率,通常取值为 C R = 0.7 CR = 0.7 CR=0.7, j rand j_{\text{rand}} jrand 是随机选择的一个维度。
- 对于每个维度 j j j,生成一个随机数 r j r_j rj,如果 r j < C R r_j < CR rj<CR 或 j = j rand j = j_{\text{rand}} j=jrand,则试验向量 x trial n x_{\text{trial}}^n xtrialn 为变异个体 x t + 1 n x_{t+1}^n xt+1n,否则为当前个体 x t n x_t^n xtn:
2.4 选择操作
- 选择操作:
- 计算当前个体 x t x_t xt 和试验向量 x trial n x_{\text{trial}}^n xtrialn 的适应度值。
- 如果 f ( x trial n ) < f ( x t ) f(x_{\text{trial}}^n) < f(x_t) f(xtrialn)<f(xt),则用 x trial n x_{\text{trial}}^n xtrialn 替换 x t x_t xt,否则保持 x t x_t xt 不变:
x t + 1 = { x trial n , if f ( x trial n ) < f ( x t ) x t , otherwise x_{t+1} = \begin{cases} x_{\text{trial}}^n, & \text{if } f(x_{\text{trial}}^n) < f(x_t) \\ x_t, & \text{otherwise} \end{cases} xt+1={xtrialn,xt,if f(xtrialn)<f(xt)otherwise
3. 算法特点
- 混沌特性:利用二维离散忆阻映射的超混沌特性,增强全局搜索能力。
- 快速收敛:通过在最优解附近进行局部搜索,加快算法的收敛速度。
- 简单易实现:算法结构简单,参数较少,易于实现和应用。
4.算法描述
输入
func
:目标函数。N
:混沌采样数量。Np
:种群大小。MaxFES
:最大函数评估次数。
输出
Best
:最优变量。fBest
:最优函数值。
算法步骤
-
初始化迭代计数器:
- t = 1 t = 1 t=1
-
初始化种群并评估种群:
[Population, fit, fBest, Best] = Initialization(func, Np, Dim)
- F E v a l s = N p FEvals = Np FEvals=Np
-
主循环:
-
当 F E v a l s < M a x F E S FEvals < MaxFES FEvals<MaxFES 时,执行以下步骤:
-
重复:
- 从种群中选择两个不同的个体 [ x t , y t ] [x_t, y_t] [xt,yt]
- 对 x t x_t xt 和 y t y_t yt 进行区间映射,得到 [ x t ′ , y t ′ ] [x_t', y_t'] [xt′,yt′],执行公式 (4)。
- 通过执行公式 (2) 生成 N N N 个混沌个体 [ x chaos , y chaos ] [x_{\text{chaos}}, y_{\text{chaos}}] [xchaos,ychaos]
- 通过执行公式 (5) 得到实际位置 [ x chaos ′ , y chaos ′ ] [x_{\text{chaos}}', y_{\text{chaos}}'] [xchaos′,ychaos′]
- 如果 r a n d < 0.5 rand < 0.5 rand<0.5,则执行公式 (7) 进行变异操作,得到 [ x ˉ t + 1 n , y ˉ t + 1 n ] [\bar{x}_{t+1}^n, \bar{y}_{t+1}^n] [xˉt+1n,yˉt+1n]
- 否则,执行公式 (8) 进行变异操作,得到 [ x ˉ t + 1 n , y ˉ t + 1 n ] [\bar{x}_{t+1}^n, \bar{y}_{t+1}^n] [xˉt+1n,yˉt+1n]
- 生成随机数 C r = rand ( 0 , 1 ) C_r = \text{rand}(0, 1) Cr=rand(0,1)
- 通过执行公式 (9) 进行交叉操作,得到 [ x trial n , y trial n ] [x_{\text{trial}}^n, y_{\text{trial}}^n] [xtrialn,ytrialn]
- 通过执行公式 (10) 和 (11) 进行选择操作,得到 [ x t + 1 , y t + 1 ] [x_{t+1}, y_{t+1}] [xt+1,yt+1]
- 更新种群和适应度值 [ P o p u l a t i o n , f i t ] [Population, fit] [Population,fit]
- F E v a l s = F E v a l s + 2 ⋅ N FEvals = FEvals + 2 \cdot N FEvals=FEvals+2⋅N
-
直到:
- 种群中的所有个体都被选择一次。
-
更新迭代计数器:
- t = t + 1 t = t + 1 t=t+1
-
-
-
结束主循环:
-
返回结果:
- 返回最优变量 B e s t Best Best 和最优函数值 f B e s t fBest fBest
5.详细步骤说明
-
初始化:
- 初始化种群并评估每个个体的适应度值,确定当前最优解 B e s t Best Best 和最优函数值 f B e s t fBest fBest。
-
主循环:
- 在主循环中,通过混沌映射生成混沌个体,并进行变异、交叉和选择操作,逐步更新种群,直到达到最大函数评估次数 M a x F E S MaxFES MaxFES。
-
变异操作:
- 根据随机数 r a n d rand rand 的值,选择执行公式 (7) 或公式 (8) 进行变异操作,生成新的变异个体。
-
交叉操作:
- 通过公式 (9) 进行交叉操作,生成试验向量。
-
选择操作:
- 通过公式 (10) 和 (11) 进行选择操作,更新种群中的个体。
-
更新种群:
- 更新种群和适应度值,继续下一次迭代。
6. 参考文献
[1]Yingchao Dong, Shaohua Zhang, Hongli Zhang, Xiaojun Zhou, Jiading Jiang, Chaotic evolution optimization: A novel metaheuristic algorithm inspired by chaotic dynamics, Chaos, Solitons & Fractals, Volume 192, 2025, 116049, https://doi.org/10.1016/j.chaos.2025.116049.
[2]https://github.com/ITyuanshou/MATLABCode/blob/main/MATLABcode
二、核心MATLAB代码
https://github.com/ITyuanshou/MATLABCode
function [Best, fBest, history] = CEO(func, Np, Dim, Varmin, Varmax, N)
rand('state', sum(100*clock));if mod(Np,2)~=0error('Np must be set to an even number greater than 2!')
end% Search Range
if length(Varmin)== 1lu = repmat([Varmin; Varmax], 1, Dim);
elselu = [Varmin; Varmax];
end% Initialize the main population
[Population,fit,fBest,Best] = Initialization(func,lu, Np, Dim);
history(1) = fBest;% chaotic initial search domain
low_chacos = [-0.5 -0.25];
up_chacos = [0.5 0.25];t = 1; % Initialization iteration number
counter = 0;
while 1oldfBest = fBest;rand_num = randperm(Np);ub = max(Population); % Upper limit of population per iterationlb = min(Population); % Lower limit of population per iterationfor i = 1:2:Npindex = rand_num(i:i+1);xy = Population(index,:); % Randomly select two individuals% Perform interval mapping on xt and yt by executing Eq. (4).xy_dot = ((xy - lb)./(ub - lb)).*(repmat(up_chacos',1,Dim) - repmat(low_chacos',1,Dim)) + repmat(low_chacos',1,Dim);% N chaotic individuals are obtained by executing Eq. (2)[x_chaos,y_chaos] = EDM(xy_dot(1,:),xy_dot(2,:),N);chaos_total = [x_chaos;y_chaos]; % Merging particles created by chaosfor k = 1 : 2 % Evaluate each chaotic sequencexy_chaos = chaos_total((k-1)*N+1 : k*N,:);% Executing Eq. (5) yields the actual position of the corresponding optimization problem.xy_chaos_dot = (( xy_chaos - repmat(low_chacos(:,k),1,Dim) )./(repmat(up_chacos(:,k),1,Dim) - repmat(low_chacos(:,k),1,Dim) )).*(ub - lb) + lb; if rand < 0.5 % xy_hat = xy(k,:) + rand(N,1).*( xy_chaos_dot - xy(k,:) ); % Mutation Eq. (7)elsexy_hat = Best + rand(N,1).*( xy_chaos_dot - xy(k,:) ); % Mutation Eq. (8)endCR = rand ;xy_trial = Binomial_crossover(xy(k,:), xy_hat, CR); % Crossover Eq. (9)xy_trial = boundConstraint (xy_trial, lu);fit_xy_trial = fitness(func,xy_trial);[fBest_xy_trial,index_best] = min(fit_xy_trial);xy_trial_star = xy_trial(index_best,:);if fBest_xy_trial < fit(index(k)) % Selection Eq. (10)Population(index(k),:) = xy_trial_star;fit(index(k)) = fBest_xy_trial;endendend[fBest,index_best] = min(fit);Best = Population(index_best,:);t = t + 1;% termination conditionsif norm(oldfBest-fBest) < 1e-8 % can be changedcounter = counter + 1;if counter > 50 % can be changeddisp('满足停止条件');break;endelsecounter = 0;endif mod(t,100)==0fprintf('iter=%d ObjVal=%g\n',t,fBest);endhistory(t) = fBest;endendfunction [X,Y] = EDM(x0,y0,itermax)
% exponential discrete memristor (E-DM) map
k = 2.66;
x = x0; % trajectory domain [-1,1]
y = y0;% trajectory domain [-0.5,0.5]
xo = x;
yo = y;
% System iteration
for j = 1:itermaxxn = k*(exp(-cos(pi.*yo))-1).*xo;yn = yo + xo;% Stored iteration valuex =[x; xn];y =[y; yn];% Update the initial value of each iterationxo = xn;yo = yn;
end
X =x(2:end,:);
Y =y(2:end,:);
endfunction u = Binomial_crossover(p, v, CR)
% Binomial crossover
[N,dim] = size(v);
j_rand = floor(rand(N,1) * dim) + 1;
t = rand(N, dim) < CR;
t(N, j_rand) = 1;
u = t .* v + (1 - t) .* p;
endfunction fit = fitness(func,x)
% calculate fitness
SE = size(x,1);
fit = zeros(SE,1);
for i = 1:SEfit(i) = feval(func,x(i,:));
end
end
相关文章:

2025年SCI一区智能优化算法:混沌进化优化算法(Chaotic Evolution Optimization, CEO),提供MATLAB代码
一、混沌进化优化算法 https://github.com/ITyuanshou/MATLABCode 1. 算法简介 混沌进化优化算法(Chaotic Evolution Optimization, CEO)是2025年提出的一种受混沌动力学启发的新型元启发式算法。该算法的主要灵感来源于二维离散忆阻映射的混沌进化过…...

普中单片机-51TFT-LCD显示屏(1.8寸 STM32)
普中官方论坛: http://www.prechin.cn/gongsixinwen/208.html 普中科技-各型号开发板资料链接:https://www.bilibili.com/read/cv23681775/?spm_id_from333.999.0.0 27-TFTLCD显示实验_哔哩哔哩_bilibili 2.程序烧录 2.1设置彩屏驱动 3.实验效果...
SGMII(Serial Gigabit Media Independent Interface)详解
一、SGMII的定义与作用 SGMII(串行千兆介质无关接口)是一种用于千兆以太网(1Gbps)的串行接口标准,旨在通过减少引脚数量和简化设计,实现MAC层与PHY芯片之间的高速通信。其核心作用包括: 引脚精…...

DeepSeek:我的AI助手之旅
★【前言】: 初次使用AI助手帮我写作,就像摸石头过河一样,一点点的前行。我在慢慢的摸索,慢慢的体会中,感悟出的一点个人心得体会现分享给大家。这也说明一个问题,网站上各种使用方法和技巧是对于已经使用过的人来说的方便和快捷,但对于刚刚接触的使用者来说,网上的各…...
图片批量去重---(均值哈希、插值哈希、感知哈希、三/单通道直方图)
一、整体步骤 本脚本中,关键步骤包括以下步骤: 1、图片加载: 脚本会遍历指定的图片目录,将所有图片加载到内存中。 2、图像预处理: 比较之前,通常需要对图片进行预处理,如调整大小、灰度化或直方…...

Linux:(3)
一:Linux和Linux互传(压缩包) scp:Linux scp 命令用于 Linux 之间复制文件和目录。 scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的,rcp 是不加密的,scp 是…...

vscode设置自动换行
vscode设置自动换行 方法 方法 点击文件->首选项->设置。搜索word wrap -> 选择 on 。 搜索Word Wrap,并把选项改为on。...

Instagram 隐私设置全面解析:如何保护你的个人数据?
Instagram 隐私设置全面解析:如何保护你的个人数据? 在这个数字化时代,社交媒体平台如 Instagram 已成为我们日常生活的一部分。然而,随着个人信息泄露和隐私侵犯事件的频发,保护个人数据变得尤为重要。本文将全面解析…...

Activiti 5 + Spring Boot全流程开发指南
目录 一、环境搭建(Spring Boot 2.x) 1.1 依赖配置 1.2 配置文件 二、流程定义与部署 2.1 创建BPMN文件(leave.bpmn) 2.2 流程部署服务 三、流程操作核心实现 3.1 启动流程实例 3.2 查询待办任务 四、审批流程处理 4.1 …...

spring结合mybatis多租户实现单库分表
实现单库分表 思路:student表数据量大,所以将其进行分表处理。一共有三个分表,分别是student0,student1,student2,在新增数据的时候,根据请求头中的meta-tenant参数决定数据存在哪张表表。 数…...
面向对象编程(OOP)基础:Java入门指南
引言 随着计算机技术的发展,软件的应用越来越复杂,单个程序的功能也逐渐增多。为了提高代码的复用性和可维护性,Java语言引入了**面向对象编程(Object-Oriented Programming, OOP)**这一设计理念。 OOP是一种设计程序…...
day7作业
编写一个如下场景: 有一个英雄Hero类,私有成员,攻击(Atx),防御(Defense),速度(Speed),生命值(Blood),以及所有的set get 方…...

图像处理之图像边缘检测算法
目录 1 图像边缘检测算法简介 2 Sobel边缘检测 3 经典的Canny边缘检测算法 4 演示Demo 4.1 开发环境 4.2 功能介绍 4.3 下载地址 参考 1 图像边缘检测算法简介 图像边缘检测是计算机视觉和图像处理中的基本问题,主要目的是提取图像中明暗变化明显的边缘细节…...

第二十五 :搭建 pinia 环境
第一步:npm install pinia 第二步:操作src/main.ts import { createApp } from vue import App from ./App.vue /* 引入createPinia,用于创建pinia */ import { createPinia } from pinia /* 创建pinia */ const pinia createPinia(…...
学习Java数组操作:从基础到高级技巧详解
在Java编程中,数组是一种非常基础且常用的非 primitives 数据结构,它用于存储一组相同类型的值。无论是数据处理、遍历还是其他操作,数组都是一个不可或缺的工具。本文将从数组的基本概念开始,逐步介绍常用的操作方法,…...

算法题(79):两个数组的交集
审题: 本题需要我们查找两个给定数组的无重复数据交集,并以数组的形式返回 思路: 方法一:set 之前我们学习过unordered_set的使用,但是unordered_set是无序的,而这里我们的比对算法需要有序数据,…...

TFChat:腾讯大模型知识引擎+飞书机器人实现AI智能助手
效果 TFChat项目地址 https://github.com/fish2018/TFChat 腾讯大模型知识引擎用的是DeepSeek R1,项目为sanic和redis实现,利用httpx异步处理流式响应,同时使用buffer来避免频繁调用飞书接口更新卡片的网络耗时。为了进一步减少网络IO消耗&…...

Linux红帽:RHCSA认证知识讲解(四)修改远程配置文件,取消root禁用,便于使用root身份远程
Linux红帽:RHCSA认证知识讲解(四)修改远程配置文件,取消root禁用,便于使用root身份远程 前言一、远程连接的用途和原因二、通过 ssh 远程登陆系统三、默认限制及解决方案(一)非常规方法一&#…...

验证码介绍及生成与验证(HTML + JavaScript实现)
验证码介绍及生成与验证(HTML JavaScript实现) 验证码 验证码(全自动区分计算机和人类的图灵测试,CAPTCHA ,Completely Automated Public Turing test to tell Computers and Humans A…...

文心一言AI创意画
介绍 文心一言是百度推出的新一代知识增强大语言模型,属于文心大模型家族的新成员。它能够与人对话互动、回答问题、协助创作,高效便捷地帮助人们获取信息、知识和灵感。 特点 文心一言基于数万亿数据和数千亿知识进行融合学习,采用预训…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...