Lua数值类型全解析:整数浮点与整除取余避坑指南
很多朋友第一次接触 Lua程序设计是在某个配置文件或者游戏模组里。打开一个脚本想改个数值看看效果结果被注释符号、表达式、类型转换这些基础概念卡住了。我最初接触Lua也是因为类似场景——某项目的规则引擎用Lua做嵌入式脚本需要处理大量数值计算。当时手边没有像样的中文资料只能对着英文手册一行行啃踩了不少坑才把数值类型这块彻底整明白。这篇文章就是把这些年反复用过的基础知识整理出来重点围绕数值类型展开适合两类人看一是刚接触Lua、搞不清语法和类型区别的新手二是已经写过一些脚本但被浮点数精度、整除、取余这些细节坑过的开发者。看完你至少能写出像样的数值计算脚本并且知道遇到边界问题时该往哪个方向排查。1. 先搞清楚Lua的定位它到底解决什么问题1.1 嵌入式脚本语言的典型使用场景Lua是一门很克制的语言。它不追求大而全核心设计目标就是“嵌入”和“扩展”。很多人第一次听说Lua是因为游戏开发比如某些知名游戏的UI脚本、关卡配置文件都用它。但实际它的应用范围远不止游戏网络服务里的请求路由规则、物联网设备上的数据处理脚本、编辑器插件、甚至数据库存储过程替代方案都能看到Lua的身影。为什么这么多系统愿意把Lua嵌进去原因其实很朴素Lua解释器体积小运行时开销低启动快。一个完整的环境加上基础库体积可以控制在几百KB以内这对很多资源敏感的场景非常关键。相比之下如果选择其他脚本语言光运行时就有几十MB甚至更大在一些嵌入式设备或高并发网关场景根本跑不动。同时Lua与宿主程序的交互做得非常干净通过栈操作就能交换数据C/C程序中嵌入非常方便。1.2 这门语言的语法风格与适用人群Lua语法整体走的是“极简”路线。整个语言的核心语法点不多没有复杂的继承体系没有重载、运算符重载这类花活。数据类型也不多nil、boolean、number、string、table、function、thread、userdata平时打交道最频繁的就是前五种。但这种极简不意味着简单。恰恰因为核心概念少每个概念被使用得更深入。table既当数组又当字典还当对象函数既可以作为参数传进去也可以作为返回值带出来。这种设计风格对新手来说有两个直观感受一是入门快基本语法两天就能上手二是灵活写久了会发现自己对数据结构的设计更敏感了因为所有复杂结构都得用table拼出来。我自己对Lua的定位是如果任务是快速实现一个可配置的规则逻辑或者需要给现有C/C项目提供脚本扩展能力Lua几乎是最优解。它写起来没有太多仪式感上手成本低运行效率也说得过去。当然如果你要开发一个大型独立应用纯用Lua来写业务逻辑会不太顺手工程化管理能力相比主流语言还是有差距。但这不妨碍我们把它当作强大的嵌入式工具来学。2. 搭建环境与第一个脚本把基础语法跑起来2.1 环境安装与选择建议工欲善其事必先利其器。学Lua第一步是搞一个能跑的环境。这里有两条路线一条是官方解释器。Lua官方提供了源码可以自己编译。Linux环境下装编译工具链后make一下就行Windows下可以用集成好的发行版。另一条是第三方发行版比如某些开源软件自带Lua环境或者打包好的一键安装包。这类发行版的好处是有控制台、有自动补全、甚至有调试器写起来舒服一点。以Linux系统为例源码编译的路径通常是wget https://www.lua.org/ftp/lua-5.4.6.tar.gz tar -zxvf lua-5.4.6.tar.gz cd lua-5.4.6 make linux make install编译都能通过的情况下lua -v确认版本号。Windows用户可以选择官方提供的预编译二进制或者直接用某个集成开发环境里自带的Lua解释器。我个人建议新手不要一开始就折腾IDE。装好解释器后直接用记事本写.lua文件然后在终端里跑。这样能让你对“宿主环境是什么、脚本是怎么被加载的”有真实感知。等熟练之后再切换到编辑器体验会好很多。2.2 第一个脚本运行方式、注释与基础输出写第一个脚本不需要建工程不需要配置什么依赖。创建一个hello.lua文件内容就三行-- 这是注释输出一个字符串 print(hello, lua) -- 输出一个数值 print(42)在终端里执行lua hello.lua输出两行内容hello, lua和42。就这么简单。注释这块建议从第一天就养成规范习惯。Lua的单行注释是行首的--多行注释是--[[ 内容 ]]。写脚本时一定要给关键逻辑加注释因为Lua脚本经常被嵌入到其他系统里时间久了连自己都容易忘当初为什么这么写。我见过太多生产环境的Lua配置文件几百行代码一行注释都没有排查问题时想死的心都有。print是Lua内置的全局函数在这里既能输出字符串也能输出数值。它会自动在结尾补一个换行格式是print(值1, 值2, ...)多个参数用逗号分隔输出时中间会有制表符分隔。调试时这是最常用的工具没有之一。关于Lua程序的运行方式还有一种交互模式。终端里敲lua不带文件名会进入交互式解释器类似其他语言的REPL。对于验证一个表达式是否正确非常方便。比如想看看4 // 3结果是多少直接敲一行回车马上有结果。2.3 变量与动态类型的直观体验Lua的变量声明不需要指定类型。直接赋值就行local age 30 local pi 3.14159 local name luascript这里有个关键词local要特别说明。Lua中默认声明的变量是全局变量显式加local才是局部变量。这个设计跟很多主流语言不一样新手第一天最容易犯的错误就是忘记写local导致全局变量被脚本到处污染。在模块化编程中务必养成“所有变量必须加local”的习惯。变量类型是动态的同一个变量可以被赋值为不同类型local x 100 x now a string x 3.14这种动态特性带来灵活性的同时也意味着一旦变量被意外重新赋值后续代码可能拿到完全意想不到的值。实践中最常见的坑函数内部某个临时变量修改了外部同名变量导致后续所有使用该变量的位置统统出错。解决思路是给变量起名时加上明确的语义前缀比如local tmp_input_val和local config_debug_flag降低混淆概率。3. 数值类型详解整数、浮点数与算数运算3.1 number类型下面到底藏着什么Lua的数值类型只有一个名字number。但这不代表只有一种数值存储方式。从Lua 5.3开始number被细分为两个子类型整数integer和浮点数float。这个设计非常重要。你写10它是个整数写10.0它是个浮点数。两者在内存表示、运算速度、甚至运算结果上都有差异。整数之间的除法可能产生浮点数浮点数参与运算后结果整体可能变成浮点数。如果你把整数和浮点数混在一起算Lua会自动做隐形转换但转换规则需要后面专项说明。判断一个值到底是整数还是浮点数可以用函数print(math.type(10)) -- integer print(math.type(10.0)) -- float很多从旧版Lua转过来的开发者没注意这个差异在5.3之后的版本里吃了亏。老版本Lua只有双精度浮点数5.3引入整数子类型目的很简单提高数值计算效率尤其是在循环计数、数组索引这类场景中表现更明显。3.2 数值字面量的多种写法Lua的数值字面量支持十进制整数、浮点数、科学计数法、十六进制。先列一个速查表写法含义实际数值42十进制整数423.14十进制浮点数3.14.5省略整数部分的浮点数0.51e3科学计数法1000.01E-2科学计数法小写e也一样0.010xFF十六进制整数2550x1A.Bp2十六进制浮点数比较少用约6.68359375十六进制浮点数在日常业务中很少出现但如果你碰到位运算或者协议解析可能会遇到。了解即可不用死记。科学计数法这块容易踩坑。比如1e3在Lua中是一个浮点数1000.0不是整数1000。如果你在后续代码中拿它做索引或者期待它是整数可能会遇到类型不匹配的问题。特别是在Lua与C库交互时这种隐式的类型差异会被放大。3.3 四则运算与整除、取余最容易混淆的一组操作Lua 5.3之后提供了完整算术运算符、-、*、/、//、%、^、一元负号-。重点说说除法和取余。斜杠/是浮点除法结果永远是浮点数即使两个整数相除print(7 / 2) -- 3.5 print(4 / 2) -- 2.0注意第二个结果。4 / 2等于2.0是个浮点数不是整数2。如果后续逻辑判断它是否等于某个整数可能因为类型不同而触发错误分支。双斜杠//是整数除法结果向负无穷方向取整print(7 // 2) -- 3 print(-7 // 2) -- -4因为-3.5向负无穷取整是-4这里要特别留意Lua的整除是向负无穷取整不是向零取整。这是和很多语言不一样的地方。比如在其他语言里-7 / 2往往等于-3向零截断Lua里-7 // 2结果是-4。写算法题或者做数值计算时一定要分清。取余运算符%的定义和整除保持一致性print(7 % 3) -- 1 print(-7 % 3) -- 2为什么-7 % 3是2因为Lua的取余满足公式a % b a - (a // b) * b。套用公式-7 // 3 -3向负无穷取整于是-7 % 3 -7 - (-3) * 3 -7 9 2。这个结果和数学中的模运算习惯一致但对从C/Java转过来的人来说很容易意外。负数取余的坑在日常业务中主要出现在循环偏移计算、数组循环索引这类场景。举个例子如果你按(index - 1) % len的方式计算环形索引Lua的负数取余反而能保证结果始终落在[0, len-1]区间这是它的优势。但前提是你知道这个行为细节主动利用它。幂运算符^也是Lua内置的print(2 ^ 10) -- 1024.0 print(2 ^ 0.5) -- 1.4142135623731注意幂运算的结果是浮点数哪怕底数和指数都是整数。这在Lua 5.3及之后版本中保持一致。从Lua 5.3起传统的math.pow函数仍然存在但它本质上就是^运算符的封装作用完全相同。3.4 自增自减与复合赋值的缺失与替代Lua没有和--运算符也没有、-这类复合赋值运算符。这是很多从C/Python/Javascript转过来的新手最不适应的一点。在Lua中想要给变量加1只能写local count 0 count count 1 count count - 1没啥花哨的。我见过有人为了追求写法简洁去实现一个包装函数后来发现完全没必要。Lua为这是有意的设计——语法极简不给开发者提供多种做同一件事的路径减少花式写法的可能。习惯了其实很舒服因为读别人的代码时所有赋值逻辑一目了然。不过有一种常见替代技巧对于table中的字段可以借助table自身的操作间接实现类似效果local t {} t.count 0 t.count t.count 1本质上还是显式赋值。写代码时忍一忍刻意保持简洁。不要试图通过setmetatable或者什么黑魔法去制造团队协作时这种行为就是给自己添堵。4. math库与数值处理从入门到常用实战4.1 math库的核心函数一览Lua内置的math库提供了常用数学函数整体分成几类三角函数、对数指数、取整、随机数、最值、常量。最常用的几个-- 取绝对值 print(math.abs(-5)) -- 5 -- 取整相关 print(math.floor(3.7)) -- 3向下取整 print(math.ceil(3.2)) -- 4向上取整 print(math.modf(3.7)) -- 3, 0.7返回整数部分和小数部分 -- 最值 print(math.max(1, 5, 3)) -- 5 print(math.min(1, 5, 3)) -- 1 -- 平方根 print(math.sqrt(16)) -- 4.0特别注意math.floor和//的区别。math.floor作用于浮点数返回值可能是整数也可能被表示成浮点数而//是一个运算符操作对象就是整数。在许多场景下两者结果一致但涉及类型时会有差异。math.huge是正无穷大常量-math.huge是负无穷大。当数值溢出或者除零时会得到它。判断一个数是否有限可以用print(math.isfinite(1/0)) -- false因为1/0结果是无穷大注意Lua版本差异math.isfinite、math.isnan这些函数是5.3之后才加入的。老版本中一般用x ~ x来判断是否为NaN这是一种经典写法因为NaN不等于任何数包括它自己。4.2 随机数生成种子设置与区间换算随机数这块是生产环境最容易出错的地方。Lua的随机数函数有两个math.random()返回[0,1)区间的浮点数math.random(n)返回[1,n]区间的整数math.random(m, n)返回[m,n]区间的整数。如果你不设置随机种子每次程序启动后生成的随机数序列是固定的。这在某些场景是需要的行为比如调试时复现问题但在一般业务中往往不是期望的结果。设置种子用math.randomseed(x)一般取当前时间math.randomseed(os.time()) print(math.random())但os.time()的粒度是秒。如果程序快速启动多次可能拿到相同的种子值导致随机序列一模一样。解决方法是混合更细粒度的输入。5.4版本支持math.randomseed在无参数时从系统获取种子比传统方案更可靠。如果还在用老版本可以尝试这样的做法local seed tonumber(tostring(os.time()):reverse()) math.randomseed(seed)思路是把时间戳字符串反转得到一个秒级变化但排列完全不同的种子。这个方法不算完美但在老版本环境下实测比直接用os.time()要好。还有一个常见需求生成[0, n)区间的随机整数。直接调用math.random(0, n-1)是可行的但如果你需要[0, n)且n可能是任意非负整数有个更优雅的公式-- [0, n)区间的整数 local x math.floor(math.random() * n)这样得到一个0到n-1之间的整数分布也更均匀。4.3 格式化输出与数值转字符串数值输出时经常需要控制小数位数。Lua没有内置的printf风格输出但提供了string.format函数用法和C语言的printf几乎一致print(string.format(%.2f, 3.14159)) -- 3.14 print(string.format(%d, 42)) -- 42 print(string.format(%x, 255)) -- ff十六进制 print(string.format(%e, 12345.678)) -- 1.234568e04格式化符号里最常用的几个%d是十进制整数%f是浮点数%.2f是保留两位小数的浮点数%x是十六进制整数%s是字符串%q是在字符串两端自动加引号的转义输出调试时很好用。数值转字符串时隐形转换在拼接场景中比较方便local num 42 print(the answer is .. num) -- 自动转换但反过来字符串转数值就需要显式操作。tonumber是核心函数print(tonumber(42)) -- 42 print(tonumber(3.14)) -- 3.14 print(tonumber(abc)) -- nil没法转 print(tonumber(0xFF)) -- 255十六进制也能转 print(tonumber(1e3)) -- 1000.0tonumber如果转换失败会返回nil这也是判断用户输入是否合法的常见方式。还有个容易被忽略的参数-- 指定进制转换 print(tonumber(ff, 16)) -- 255把字符串ff按十六进制解析第二个参数指定原字符串的进制。这在处理配置文件的十六进制数值时非常有用。字符串和数值之间的自动转换是Lua 5.3之前的经典特性有一个容易踩坑的场景字符串做算术运算。print(10 1) -- 11自动转数值相加 print(10 .. 1) -- 101两个点才是拼接字符串注意加号和两个点..的区别。加号是算术运算字符串会被尝试自动转成数值两个点是字符串拼接数值会被自动转成字符串。如果你不小心在数值拼接时写了一个点而不是两个点语法直接报错。这是新手报错频率最高的点之一。4.4 数值类型的隐式转换规则搞清楚Lua的数值隐式转换规则能避免很多莫名其妙的bug。规则其实很简单算术运算中如果存在浮点数参与结果倾向于浮点数整数和浮点数做比较时比较的是数值大小不会因为类型不同直接判断不相等。但有几个细节值得单独讲。整数和浮点数的比较print(1 1.0) -- true数值相等 print(1 1.0000000001) -- false这跟某些语言中1 1.0返回false完全不同。Lua比较的是数学意义上的数值大小。这个设计让数值计算少了很多类型麻烦。但是当浮点数非常大超过整数能表示的精度范围时隐式转换可能会损失精度。Lua的integers是带符号64位整数。当一个浮点数超过这个范围时转换成整数会丢失精度或者溢出。实际业务中我遇到过这种情况一个64位时间戳以字符串形式从外部传入用tonumber转出来不是精确整数就是因为字符串表示的数值超过了双精度浮点数的精确表示范围。解决方法是直接用字符串做比较或者用专门的大数库。浮点运算的经典坑在Lua中同样存在print(0.1 0.2) -- 0.30000000000000004 print(0.1 0.2 0.3) -- false这不是Lua的bug是IEEE 754双精度浮点数的固有限制。几乎所有主流语言都有这个问题。判断浮点相等要用误差范围local function float_eq(a, b, epsilon) epsilon epsilon or 1e-9 return math.abs(a - b) epsilon end5. 常见问题与排查技巧实录5.1 除法魔改现场为什么我的结果多了个.0我以前给某个服务写配置脚本时遇到一个很隐蔽的问题服务判断某个计数器的值是整数直接拿它去做数组索引结果偶发报错。排查到最后发现计数器在某个分支里执行过count total / 5而total / 5在total能被5整除时返回的是个整数不对Lua里/返回的永远是浮点数。所以一个看似是整数的值实际类型是float。当这种值被用作索引时Lua并非不能接受浮点数作为索引但如果该浮点数的值恰好是2.0它和整数2的哈希位置是独立的。这导致一个深层问题table中用浮点数2.0存储的键和用整数2存储的键不是同一个键这是新手最容易踩的陷阱之一。这里的教训是如果逻辑要求变量始终是整数使用//或显式调用math.floor后再赋值。而如果数值来自外部输入最好在一入口就统一用类型转换函数归一化。5.2 取余运算在环形索引中的应用我在日志处理脚本里经常需要把一个递增序号映射到固定大小的缓冲区间里这时候取余很有用local idx (seq - 1) % buffer_size 1Lua的负数取余行为在这个场景里帮了大忙。比如seq从0开始buffer_size是3那么-1取模3得2加1后索引为3。意味着序号为0时对应的索引是3其实这个逻辑要看具体业务。但如果按传统语言的取余规则负数取余结果为负数索引就会越界。如果你之前在其他语言里写习惯了向零取余到了Lua里写循环偏移时要主动验证一下负数的行为。5.3 自字面数值的朴实但致命问题某个函数里直接写了个很大的整数local timestamp 2026010112000000在32位构建或者某些嵌入版本里这个数字可能溢出。Lua标准的整数是64位但在某些嵌入式移植版中可能退化为32位。检查环境时用print(math.maxinteger) -- 9223372036854775807 print(math.mininteger) -- -9223372036854775808如果输出不了或者输出值异常小说明当前环境不是标准64位整数。此时处理大数需要格外小心。5.4 排查速查表现象可能原因排查方向除法结果总带.0用了/运算符需要整除用//-7 // 2结果不对取整方向理解偏差记住Lua是向负无穷取整随机数每次一样未设种子或种子相同用math.randomseed(os.time())字符串转数值失败返回nil字符串包含非法字符先trim再tonumber浮点比较不相等精度误差用误差范围比较0.10.2不等于0.3IEEE 754浮点表示用epsilon比较整数溢出表现诡异环境整数位数不足检查math.maxinteger负数取余结果意外取余公式定义不同用a - (a//b)*b手动验证排查时先判断是类型问题还是算法问题再看运算符选择是否正确。Lua的调错思路和主流语言差别不大但类型系统过于简单导致很多错误在运行时才暴露所以打印中间值至关重要。print大法虽然土但在Lua调试中的实用性无可替代。6. 写在最后的几个经验之谈如果只是写几个脚本Lua的数值类型学到这里基本够用了。回顾我自己的实践过程有几个体会想分享。第一在学习Lua时用最小化验证的方式学语法。每学到一个新的运算符跑到交互式解释器里敲几个边界用例比如负数、0、极大值、浮点数。这比直接背文档快得多记忆也更牢固。第二在嵌入场景中Lua和宿主语言交换数值时务必确定好类型协议。宿主传过来的是整数还是浮点数会不会有精度损失Lua返回给宿主的格式是否兼容这些要在接口设计时就明确下来。我见过不止一次因为Lua自动类型转换导致数值被改写最终查了很久才发现是类型协议没定清楚。第三多写一些算法类的小练习比如进制转换、三角函数逼近、质数判断。这些练习能帮你快速熟悉运算符边界条件也是检验你真正理解Lua数值类型的好方法。有一个方法我一直推荐拿同一组算法题目用Lua和其他语言各写一遍然后对比代码风格和边界行为这对理解语言特性帮助很大。Lua看起来很“小”但数值处理的细节一点都不少。把基础打牢后面遇到问题心里不慌。

相关新闻

Workerman 5.x 完整实战指南:基于事件驱动的 PHP 异步网络框架

Workerman 5.x 完整实战指南:基于事件驱动的 PHP 异步网络框架

后端 【免费下载链接】workerman An asynchronous event driven PHP socket framework. Supports HTTP, Websocket, SSL and other custom protocols. 项目地址: https://gitcode.com/gh_mirrors/wo/workerman 点击查看 免费下载 Workerman 是一个使用纯 PHP 编写…

2026/10/14 2:44:28 阅读更多 →
uniPush离线推送实战:厂商通道配置与到达率优化指南

uniPush离线推送实战:厂商通道配置与到达率优化指南

1. 离线推送到底在解决什么问题做移动端应用的人迟早会撞上这个需求:用户把App划掉了、手机锁屏了、后台进程被系统回收了,这时候业务侧发出一条通知,用户还能不能在通知栏看到?答案就是离线推送要解决的核心命题。uniPush这套方案…

2026/10/14 2:44:28 阅读更多 →
单片机计算机毕设之基于物联网的婴儿床环境自动调节与哄睡联动装置设计 基于单片机的智能婴儿摇篮温湿度调节与远程监控系统设计(032707)

单片机计算机毕设之基于物联网的婴儿床环境自动调节与哄睡联动装置设计 基于单片机的智能婴儿摇篮温湿度调节与远程监控系统设计(032707)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/10/14 2:44:28 阅读更多 →

最新新闻

TikTok Shop 多店铺:平台侧哪些信息会被交叉比对

TikTok Shop 多店铺:平台侧哪些信息会被交叉比对

一、先说结论:官方对「关联」的定义,比你想的宽 TikTok Shop 官方在卖家学习中心有一篇《关联账号风险指南》,原文写得很直白——平台对关联账号的判定,通常不是依据单一的重合信息,而是多项风险信号综合判断&#xff…

2026/10/14 3:24:35 阅读更多 →
小白程序员必看:FDE前沿部署工程师,AI落地新风口

小白程序员必看:FDE前沿部署工程师,AI落地新风口

本文介绍了FDE(前沿部署工程师)这一新兴AI岗位,主要职责是连接AI技术与企业实际业务,解决大模型落地难题。文章阐述了FDE的工作内容、所需技能(AI基础、RAG/Agent应用、项目实践、沟通能力),并分…

2026/10/14 3:24:35 阅读更多 →
我把一个只有 7 行的 AI Skill 用出了花:聊聊 eli5

我把一个只有 7 行的 AI Skill 用出了花:聊聊 eli5

一个小到离谱的"插件" 最近我在整理 AI 工具的时候,翻到一个特别不起眼的东西,叫 eli5。它的完整定义只有短短几行,翻译成人话就一句:假装我是一个对这个话题一无所知的人,用一张 HTML 页面、大图配少量文字…

2026/10/14 3:24:35 阅读更多 →
北美外教一对一哪个好?2026年最新深度横评,价格、口音、互动性三维度打分

北美外教一对一哪个好?2026年最新深度横评,价格、口音、互动性三维度打分

在线少儿北美外教一对一赛道,经过多年迭代,目前平台差异化已经非常明显。很多家长选课只看宣传噱头,忽略师资口音纯度、课堂互动落地性、长期性价比等核心指标,最终出现“高价低效、口音不标准、上课全程旁听”等问题。本文基于20…

2026/10/14 3:24:35 阅读更多 →
C++手搓坐标图工具:从坐标变换到实时渲染的工程实践

C++手搓坐标图工具:从坐标变换到实时渲染的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 3:24:34 阅读更多 →
Virglrenderer 虚拟化技术深入解析 · 专栏目录

Virglrenderer 虚拟化技术深入解析 · 专栏目录

一套面向工程师的 virglrenderer 源码级技术专栏。从概述与演进讲起,再深入核心抽象、各后端实现、部署集成与工程实践。所有内容以仓库源码为准。 这里讲一下我为什么关注 virglrenderer,因为国产 GPU 的虚拟化需求。 随着国产化替代的推进&#xff0c…

2026/10/14 3:23:34 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →