PHP开发日志——循环和条件语句嵌套不同,效率不同(循环内加入条件语句,条件语句判断后加入循环,array_map函数中加入条件语句)
十多年前开发框架时,为了效率不断试过各种代码写法,今天又遇到了,想想php8时代会不会有所变化,结果其实也还是和当年一样,但当年没写博客,但现在可以把数据记录下来了。
PHP_loop_ireflies_dark_forest
项目基本情况是一个考试系统调用题库后,根据是否需要随机出选项和是否需要统一改分数这两个条件,循环对每一道题的初始数据进行修改。我是从类的方法里直接截取的代码片段,所以代码部分只需懂意思即可,命名都很容易理解。
$result是数据库里提取的题库;$score是统一的题型分数(如果没有统一题型分数,那么每题都有自己不同的初始分);$this->l_char->json_to_array()是char字符类json转化为数组格式的方法;$this->_random_option()是随机化题目选项;- 目前题库共有
3328题,每个题型所含题目数量不同; - PHP版本为
8.1.3
为了保证尽量每种方法的实验数据在一个条件下,所以禁用随机出题,保证题目都一样,同时保证每题的选项都在随机变化。

判断后循环
if(!empty($score) and !empty($israndomoption))
{ foreach($result as $k=>$row){//分数$row['questionscore'] = $score;//选项是否随机$row['questionoption'] = $this->l_char->json_to_array($row['questionoption']);$row['questionoption'] = $this->_random_option($row['questionoption']);$result[$k] = $row;}
}elseif(!empty($score)){ foreach($result as $k=>$row){//分数$row['questionscore'] = $score;$result[$k] = $row;}
}elseif(!empty($israndomoption)){ foreach($result as $k=>$row){//选项是否随机$row['questionoption'] = $this->l_char->json_to_array($row['questionoption']);$row['questionoption'] = $this->_random_option($row['questionoption']);$result[$k] = $row;}
}
某题型有2题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000015 | 1539528 |
| 2 | 0.000017 | 1543376 |
| 3 | 0.000015 | 1543280 |
| 4 | 0.000015 | 1543280 |
| 5 | 0.000016 | 1543280 |
| 6 | 0.000016 | 1543280 |
| 7 | 0.000017 | 1543280 |
| 8 | 0.000038 | 1543280 |
| 9 | 0.000017 | 1543280 |
| 10 | 0.000015 | 1543280 |
某题型有20题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000026 | 1551272 |
| 2 | 0.000025 | 1560240 |
| 3 | 0.000026 | 1560656 |
| 4 | 0.000027 | 1560656 |
| 5 | 0.000027 | 1560656 |
| 6 | 0.000044 | 1560656 |
| 7 | 0.000026 | 1560656 |
| 8 | 0.000027 | 1560656 |
| 9 | 0.000026 | 1560656 |
| 10 | 0.000026 | 1560656 |
某题型有50题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000080 | 1805832 |
| 2 | 0.000078 | 1868048 |
| 3 | 0.000076 | 1868464 |
| 4 | 0.000077 | 1868464 |
| 5 | 0.000085 | 1868464 |
| 6 | 0.000078 | 1868464 |
| 7 | 0.000084 | 1868464 |
| 8 | 0.000087 | 1868464 |
| 9 | 0.000088 | 1868464 |
| 10 | 0.000083 | 1868464 |
每题题型数量不限
| 次数 | 题型1执行时间 | 题型1内存占用 | 题型2执行时间 | 题型2内存占用 | 题型3执行时间 | 题型3内存占用 | 题型4执行时间 | 题型4内存占用 | 题型5执行时间 | 题型5内存占用 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0.000584 | 2343488 | 0.000460 | 2740296 | 0.000226 | 2875520 | 0.000202 | 3298600 | 0.000506 | 3809024 |
| 2 | 0.000569 | 2343488 | 0.000470 | 2740296 | 0.000239 | 2875520 | 0.000253 | 3298600 | 0.000737 | 3809024 |
| 3 | 0.000584 | 2831656 | 0.000472 | 3228464 | 0.000244 | 3363688 | 0.000203 | 3786768 | 0.000558 | 4297192 |
| 4 | 0.000637 | 2832104 | 0.000506 | 3228912 | 0.000371 | 3364136 | 0.000192 | 3787216 | 0.000492 | 4297640 |
| 5 | 0.000571 | 2832104 | 0.000479 | 3228912 | 0.000234 | 3364136 | 0.000203 | 3787216 | 0.000502 | 4297640 |
| 6 | 0.000594 | 2832104 | 0.000475 | 3228912 | 0.000235 | 3364136 | 0.000226 | 3787216 | 0.000491 | 4297640 |
| 7 | 0.000612 | 2832104 | 0.000529 | 3228912 | 0.000241 | 3364136 | 0.000338 | 3787216 | 0.000785 | 4297640 |
| 8 | 0.000579 | 2832104 | 0.000538 | 3228912 | 0.000239 | 3364136 | 0.000203 | 3787216 | 0.000484 | 4297640 |
| 9 | 0.000588 | 2343488 | 0.000483 | 2740296 | 0.000241 | 2875520 | 0.000190 | 3298600 | 0.000506 | 3809024 |
| 10 | 0.000589 | 2831656 | 0.000516 | 3228464 | 0.000239 | 3363688 | 0.000193 | 3786768 | 0.000491 | 4297192 |
循环内判断
foreach ($result as $k => $row) {if (!empty($score)) {$row['questionscore'] = $score;}if (!empty($israndomoption)) {$row['questionoption'] = $this->l_char->json_to_array($row['questionoption']);$row['questionoption'] = $this->_random_option($row['questionoption']);}$result[$k] = $row;
}
某题型有2题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000016 | 1539504 |
| 2 | 0.000015 | 1543352 |
| 3 | 0.000015 | 1543256 |
| 4 | 0.000017 | 1543256 |
| 5 | 0.000016 | 1543352 |
| 6 | 0.000016 | 1543256 |
| 7 | 0.000017 | 1543256 |
| 8 | 0.000016 | 1543256 |
| 9 | 0.000014 | 1543256 |
| 10 | 0.000016 | 1547072 |
某题型有20题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000027 | 1551248 |
| 2 | 0.000026 | 1560216 |
| 3 | 0.000037 | 1560632 |
| 4 | 0.000027 | 1560632 |
| 5 | 0.000025 | 1560632 |
| 6 | 0.000026 | 1560632 |
| 7 | 0.000028 | 1560632 |
| 8 | 0.000026 | 1560632 |
| 9 | 0.000026 | 1560632 |
| 10 | 0.000027 | 1560632 |
某题型有50题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000094 | 1805808 |
| 2 | 0.000079 | 1868024 |
| 3 | 0.000081 | 1868440 |
| 4 | 0.000080 | 1868440 |
| 5 | 0.000076 | 1868440 |
| 6 | 0.000081 | 1868440 |
| 7 | 0.000078 | 1868440 |
| 8 | 0.000089 | 1868440 |
| 9 | 0.000079 | 1868440 |
| 10 | 0.000087 | 1868440 |
每题题型数量不限
| 次数 | 题型1执行时间 | 题型1内存占用 | 题型2执行时间 | 题型2内存占用 | 题型3执行时间 | 题型3内存占用 | 题型4执行时间 | 题型4内存占用 | 题型5执行时间 | 题型5内存占用 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0.000676 | 2343480 | 0.000573 | 2740288 | 0.000266 | 2875512 | 0.000246 | 3298592 | 0.000578 | 3809016 |
| 2 | 0.000590 | 2831632 | 0.000498 | 3228440 | 0.000293 | 3363664 | 0.000220 | 3786744 | 0.000566 | 4297168 |
| 3 | 0.000608 | 2832080 | 0.000489 | 3228888 | 0.000231 | 3364112 | 0.000213 | 3787192 | 0.000541 | 4297616 |
| 4 | 0.000643 | 2832080 | 0.000526 | 3228888 | 0.000236 | 3364112 | 0.000208 | 3787192 | 0.000536 | 4297616 |
| 5 | 0.000590 | 2832080 | 0.000478 | 3228888 | 0.000244 | 3364112 | 0.000205 | 3787192 | 0.000578 | 4297616 |
| 6 | 0.000682 | 2832080 | 0.000489 | 3228888 | 0.000237 | 3364112 | 0.000209 | 3787192 | 0.000563 | 4297616 |
| 7 | 0.000713 | 2832080 | 0.000526 | 3228888 | 0.000241 | 3364112 | 0.000416 | 3787192 | 0.000512 | 4297616 |
| 8 | 0.000621 | 2343464 | 0.000477 | 2740272 | 0.000240 | 2875496 | 0.000212 | 3298576 | 0.000514 | 3809000 |
| 9 | 0.000596 | 2831632 | 0.000489 | 3228440 | 0.000234 | 3363664 | 0.000205 | 3786744 | 0.000624 | 4297168 |
| 10 | 0.000612 | 2832080 | 0.000472 | 3228888 | 0.000248 | 3364112 | 0.000207 | 3787192 | 0.000526 | 4297616 |
函数内判断
$result = array_map(function ($row) use ($score, $israndomoption) {if (!empty($score)) {$row['questionscore'] = $score;}if (!empty($israndomoption)) {$row['questionoption'] = $this->l_char->json_to_array($row['questionoption']);$row['questionoption'] = $this->_random_option($row['questionoption']);}return $row;
}, $result);
某题型有2题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000024 | 1537160 |
| 2 | 0.000021 | 1541008 |
| 3 | 0.000018 | 1540912 |
| 4 | 0.000018 | 1540912 |
| 5 | 0.000018 | 1537160 |
| 6 | 0.000019 | 1541008 |
| 7 | 0.000019 | 1540912 |
| 8 | 0.000017 | 1540912 |
| 9 | 0.000020 | 1540912 |
| 10 | 0.000018 | 1540912 |
某题型有20题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000033 | 1548904 |
| 2 | 0.000031 | 1557872 |
| 3 | 0.000028 | 1558288 |
| 4 | 0.000043 | 1558288 |
| 5 | 0.000030 | 1558288 |
| 6 | 0.000031 | 1558288 |
| 7 | 0.000032 | 1558288 |
| 8 | 0.000033 | 1558288 |
| 9 | 0.000030 | 1558288 |
| 10 | 0.000032 | 1558288 |
某题型有50题
| 次数 | 执行时间 | 内存占用 |
|---|---|---|
| 1 | 0.000084 | 1803464 |
| 2 | 0.000085 | 1865680 |
| 3 | 0.000081 | 1866096 |
| 4 | 0.000141 | 1866096 |
| 5 | 0.000081 | 1866096 |
| 6 | 0.000139 | 1866096 |
| 7 | 0.000091 | 1866096 |
| 8 | 0.000080 | 1803464 |
| 9 | 0.000080 | 1865680 |
| 10 | 0.000085 | 1803464 |
每题题型数量不限
| 次数 | 题型1执行时间 | 题型1内存占用 | 题型2执行时间 | 题型2内存占用 | 题型3执行时间 | 题型3内存占用 | 题型4执行时间 | 题型4内存占用 | 题型5执行时间 | 题型5内存占用 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0.000642 | 2341104 | 0.000524 | 2737912 | 0.000446 | 2873136 | 0.000231 | 3296216 | 0.000543 | 3806640 |
| 2 | 0.000631 | 2829272 | 0.000518 | 3226080 | 0.000433 | 3361304 | 0.000224 | 3784384 | 0.000517 | 4294808 |
| 3 | 0.000629 | 2829720 | 0.000506 | 3226528 | 0.000239 | 3361752 | 0.000215 | 3784832 | 0.000659 | 4295256 |
| 4 | 0.000608 | 2829720 | 0.000490 | 3226528 | 0.000251 | 3361752 | 0.000229 | 3784832 | 0.000520 | 4295256 |
| 5 | 0.000646 | 2829720 | 0.000537 | 3226528 | 0.000241 | 3361752 | 0.000231 | 3784832 | 0.000801 | 4295256 |
| 6 | 0.000610 | 2829720 | 0.000492 | 3226528 | 0.000249 | 3361752 | 0.000232 | 3784832 | 0.000531 | 4295256 |
| 7 | 0.000640 | 2829720 | 0.000484 | 3226528 | 0.000257 | 3361752 | 0.000300 | 3784832 | 0.000544 | 4295256 |
| 8 | 0.000587 | 2829720 | 0.000500 | 3226528 | 0.000388 | 3361752 | 0.000229 | 3784832 | 0.000527 | 4295256 |
| 9 | 0.000657 | 2829720 | 0.000610 | 3226528 | 0.000246 | 3361752 | 0.000224 | 3784832 | 0.000767 | 4295256 |
| 10 | 0.000605 | 2829720 | 0.000494 | 3226528 | 0.000244 | 3361752 | 0.000220 | 3784832 | 0.000510 | 4295256 |
不同方法下数量不限时的平均值
| 方法 | 题1时间 | 题1内存 | 题2时间 | 题2内存 | 题3时间 | 题3内存 | 题4时间 | 题4内存 | 题5时间 | 题5内存 |
|---|---|---|---|---|---|---|---|---|---|---|
| 判断后循环 | 0.0005907 | 2685429.6 | 0.0004928 | 3082237.6 | 0.0002509 | 3217461.6 | 0.0002203 | 3640541.6 | 0.0005552 | 4150965.6 |
| 循环内判断 | 0.0006331 | 2734268.8 | 0.0005017 | 3131076.8 | 0.000247 | 3266300.8 | 0.0002341 | 3689380.8 | 0.0005538 | 4199804.8 |
| 函数内判断 | 0.0006255 | 2780813.6 | 0.0005155 | 3177621.6 | 0.0002994 | 3312845.6 | 0.0002335 | 3735925.6 | 0.0005919 | 4246349.6 |
结论
| 方法 | 2题平均执行时间 | 2题平均内存占用 | 20题平均执行时间 | 20题平均内存占用 | 50题平均执行时间 | 50题平均内存占用 | 数量不限平均执行时间 | 数量不限平均内存占用 |
|---|---|---|---|---|---|---|---|---|
| 判断后循环 | 0.0000181 | 1542914.4 | 0.000028 | 1559676 | 0.0000816 | 1862159.2 | 0.00042198 | 3355327.2 |
| 循环内判断 | 0.0000158 | 1543281.6 | 0.0000275 | 1559652 | 0.0000824 | 1862135.2 | 0.00043394 | 3404166.4 |
| 函数内判断 | 0.0000192 | 1540180.8 | 0.0000323 | 1557308 | 0.0000947 | 1847223.2 | 0.00045316 | 3450711.2 |
基本和以前版本的结论一致:
- 在数量少的时候,
循环内判断速度最快,函数内判断内存占用最少; - 在数量有所提升后,
判断后循环速度最快,函数内判断内存占用最少; - 在数量上到一定量后,
判断后循环速度最快,并且其内存占用也是最少。
如果字符量较少,不同方法所带来的损耗在一般应用中可以忽略;

相关文章:
PHP开发日志——循环和条件语句嵌套不同,效率不同(循环内加入条件语句,条件语句判断后加入循环,array_map函数中加入条件语句)
十多年前开发框架时,为了效率不断试过各种代码写法,今天又遇到了,想想php8时代会不会有所变化,结果其实也还是和当年一样,但当年没写博客,但现在可以把数据记录下来了。 PHP_loop_ireflies_dark_forest 项目…...
【Seata源码学习 】 扫描@GlobalTransaction注解 篇一
1. SeataAutoConfiguration 自动配置类的加载 基于SpringBoot的starter机制,在应用上下文启动时,会加载SeataAutoConfiguration自动配置类 # Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfigurationio.seata.spring.boot.aut…...
DBA-MySql面试问题及答案-上
文章目录 1.什么是数据库?2.如何查看某个操作的语法?3.MySql的存储引擎有哪些?4.常用的2种存储引擎?6.可以针对表设置引擎吗?如何设置?6.选择合适的存储引擎?7.选择合适的数据类型8.char & varchar9.Mysql字符集10.如何选择…...
网络爬虫之Ajax动态数据采集
动态数据采集 规则 有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览器中可以看到正常显示的页面教据,但是使用 requests 得到的结果并没有,这是因为requests 获取的都是原始的 HTML 文档…...
c语言的初始学习(练习)
##初学c语言---MOOC浙江大学翁恺先生学习c语言 那么我们先看看这个题目吧,这是初始语法的应用。 记住,我们的程序是按步骤执行的,并不是在不同的两行同时进行。 程序设计:1.了解题目的需要,几个变量需要用到&#x…...
研究论文 2022-Oncoimmunology:AI+癌RNA-seq数据 识别细胞景观
Wang, Xin, et al. "Deep learning using bulk RNA-seq data expands cell landscape identification in tumor microenvironment." Oncoimmunology 11.1 (2022): 2043662. https://www.tandfonline.com/doi/full/10.1080/2162402X.2022.2043662 被引次数࿱…...
ChatGPT4与ArcGIS Pro3助力AI 地理空间分析和可视化及助力科研论文写作
在地学领域,ArcGIS几乎成为了每位科研工作者作图、数据分析的必备工具,而ArcGIS Pro3除了良好地继承了ArcMap强大的数据管理、制图、空间分析等能力,还具有二三维融合、大数据、矢量切片制作及发布、任务工作流、时空立方体等特色功能&#x…...
okhttp系列-一些上限值
1.正在执行的任务数量最大值是64 异步请求放入readyAsyncCalls后,遍历readyAsyncCalls取出任务去执行的时候,如果发现runningAsyncCalls的数量大于等于64,就不从readyAsyncCalls取出任务执行。 public final class Dispatcher {private int …...
C++面向对象(OOP)编程-STL详解(vector)
本文主要介绍STL六大组件,并主要介绍一些容器的使用。 目录 1 泛型编程 2 CSTL 3 STL 六大组件 4 容器 4.1 顺序性容器 4.1.1 顺序性容器的使用场景 4.2 关联式容器 4.2.1 关联式容器的使用场景 4.3 容器适配器 4.3.1 容器适配器的使用场景 5 具体容器的…...
postman几种常见的请求方式
1、get请求直接拼URL形式 对于http接口,有get和post两种请求方式,当接口说明中未明确post中入参必须是json串时,均可用url方式请求 参数既可以写到URL中,也可写到参数列表中,都一样,请求时候都是拼URL 2&am…...
openai最新探索:超级对齐是否可行?
前言 今天来介绍一篇openai最新的paper:弱到强的对齐。 openai专门成立了一个团队来做大模型的超级对齐即superhuman model,之前chatgpt取得成功依赖RLHF即依赖人类反馈,但是作者期望的superhuman model将会是一个能够处理各种复杂问题的强…...
本地websocket服务端结合cpolar内网穿透实现公网访问
文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…...
关于“Python”的核心知识点整理大全37
目录 13.6.2 响应外星人和飞船碰撞 game_stats.py settings.py alien_invasion.py game_functions.py ship.py 注意 13.6.3 有外星人到达屏幕底端 game_functions.py 13.6.4 游戏结束 game_stats.py game_functions.py 13.7 确定应运行游戏的哪些部分 alien_inva…...
Vivado中的FFT IP核使用(含代码)
本文介绍了Vidado中FFT IP核的使用,具体内容为:调用IP核>>配置界面介绍>>IP核端口介绍>>MATLAB生成测试数据>>测试verilogHDL>>TestBench仿真>>结果验证>>FFT运算。 1、调用IP核 该IP核对应手册pg109_xfft.pd…...
创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
2022年亚马逊云科技re:Invent盛会于近日在拉斯维加斯成功召开,吸引了众多业界精英和创新者。亚马逊云科技边缘服务副总裁Jan Hofmeyr在演讲中分享了关于亚马逊云科技海外服务器边缘计算的最新发展和创新成果,引发与会者热烈关注。 re:Invent的核心主题是…...
什么是“人机协同”机器学习?
“人机协同”(HITL)是人工智能的一个分支,它同时利用人类智能和机器智能来创建机器学习模型。在传统的“人机协同”方法中,人们会参与一个良性循环,在其中训练、调整和测试特定算法。通常,它的工作方式如下…...
数学建模笔记-拟合算法
内容:拟合算法 一.概念: 拟合的结果就是找到一个确定的曲线 二.最小二乘法: 1. 2.最小二乘法的二表示的是平方的那个2 3.求解最小二乘法: 三.评价拟合的好坏 1.总体评分和SST: 2.误差平方和SSE: 3.回…...
非线性约束的优化问题_序列二次规划算法代码
1. 理论部分 2. 序列二次规划算法代码及解析 3.完整代码 1.理论部分 a.约束优化问题的极值条件 库恩塔克条件(Kuhn-Tucker conditions,KT条件)是确定某点为极值点的必要条件。如果所讨论的规划是凸规划,那么库恩-塔克条件也是充分条件。 ÿ…...
【数据结构之顺序表】
数据结构学习笔记---002 数据结构之顺序表1、介绍线性表1.1、什么是线性表? 2、什么是顺序表?2.1、概念及结构2.2、顺序表的分类 3、顺序表接口的实现3.1、顺序表动态存储结构的Seqlist.h3.1.1、定义顺序表的动态存储结构3.1.2、声明顺序表各个接口的函数 3.2、顺序表动态存储…...
junit-mock-dubbo
dubbo单元测试分两种情况 Autowired注解是启动上下文环境,使用上下文对象进行测试,适合调试代码 InjectMocks注解是启动上下文环境,使用mock对象替换上下文对象,适合单元测试 BaseTest *** Created by Luohh on 2023/2/10*/ S…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
