发布时间:2026/8/16 1:00:39
分布式锁Redisson实战,解决订单超卖并发问题 做电商后端开发商品超卖应该算是老生常谈的并发难题了。之前我参与过一个秒杀小活动库存设置 100 件最后下单成功 130 多单直接出现超卖后续还要人工处理退款给业务造成不小麻烦。一开始我们用数据库乐观锁去处理并发量不高的时候还好一旦请求量上来大量请求直接打在数据库数据库 CPU 飙升接口响应直接超时。后来调研选型最终采用 Redisson 分布式锁来解决该问题。今天结合线上踩过的坑把 Redisson 分布式锁落地完整过程记录下来。一、为什么不能直接用原生 Redis 实现分布式锁很多同学刚开始会直接用SETNX手写 Redis 锁。写起来看着简单但是坑非常多。比如锁超时、业务还没执行完锁就释放锁被其他线程误释放主从切换锁丢失等一堆问题。如果自己全部去处理这些边界代码会写的非常复杂稍有遗漏就会出线上故障。而 Redisson 是 Redis 官方推荐的 Java 客户端它把锁续期、锁可重入、锁释放、主从等各种复杂逻辑全部封装好了我们直接调用 API 即可生产环境稳定性要高很多。二、项目引入 Redisson 依赖SpringBoot 项目pom.xml 引入依赖注意版本要和你的 SpringBoot 版本兼容。dependency groupIdorg.redisson/groupId artifactIdredisson‑spring‑boot‑starter/artifactId version3.23.5/version /dependencyapplication.yml 配置 Redis 连接信息spring: redis: host: 127.0.0.1 port: 6379 password: database: 0三、订单扣库存超卖错误示例问题代码先看一段有并发问题的代码这也是很多新手容易写出的业务逻辑。Service public class OrderServiceImpl implements OrderService { Autowired private GoodsMapper goodsMapper; Autowired private OrderMapper orderMapper; Override Transactional public void createOrder(Long goodsId) { //1.查询库存 Goods goods goodsMapper.selectById(goodsId); if(goods.getStock() 0){ throw new RuntimeException(商品库存不足); } //2.扣减库存 goods.setStock(goods.getStock() -1); goodsMapper.updateById(goods); //3.生成订单 Order order new Order(); order.setGoodsId(goodsId); orderMapper.insert(order); } }问题高并发场景多个线程同时读到同一个库存数值全部通过库存判断就会产生超卖。单纯数据库事务解决不了这个问题事务只能保证原子性不能挡住并发读取。四、Redisson 分布式锁改造后的业务代码这里使用 Redisson 可重入锁RLock直接上锁之后再执行库存判断和下单逻辑。Service public class OrderServiceImpl implements OrderService { Autowired private GoodsMapper goodsMapper; Autowired private OrderMapper orderMapper; Autowired private RedissonClient redissonClient; Override Transactional public void createOrder(Long goodsId) { //定义锁key同一个商品用同一个key String lockKey lock:goods: goodsId; RLock rLock redissonClient.getLock(lockKey); try { //尝试获取锁等待3秒锁自动释放时间30秒 boolean getLock rLock.tryLock(3,30, TimeUnit.SECONDS); if(!getLock){ throw new RuntimeException(请求繁忙请稍后重试); } //获取锁成功执行业务 Goods goods goodsMapper.selectById(goodsId); if(goods.getStock() 0){ throw new RuntimeException(商品库存不足); } goods.setStock(goods.getStock() -1); goodsMapper.updateById(goods); Order order new Order(); order.setGoodsId(goodsId); orderMapper.insert(order); } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new RuntimeException(获取锁异常); } finally { //必须判断当前线程持有锁才释放防止误释放别人的锁 if(rLock.isHeldByCurrentThread()){ rLock.unlock(); } } } }这里有个细节finally释放锁的时候一定要判断isHeldByCurrentThread()。如果业务执行异常锁已经过期释放直接调用 unlock会把其他线程拿到的锁给释放掉这个坑不少人踩过。Redisson 自带的看门狗机制如果业务执行时间超过设置的 30 秒会自动给锁续期避免业务没跑完锁提前释放这也是手写 SETNX 锁很难实现的能力。五、实际生产落地需要注意的几个坑锁粒度不要太大不要直接写一个全局锁所有商品共用同一个 key。不同商品使用不同的 lockKey例如lock:goods:{goodsId}并发性能会高很多。分布式锁不能完全替代数据库层面防护分布式锁也不是万无一失。Redis 主从切换锁有可能丢失。建议数据库层面加上库存版本号乐观锁作为兜底双重防护杜绝超卖。简单乐观锁更新示例update goods set stock stock‑1, version version1 where id #{goodsId} and stock0 and version #{version};锁和事务顺序问题锁要加在事务外面。如果锁在事务内部事务还没提交完成锁就释放其他线程读到未提交的数据依旧会出现并发问题。区分锁类型普通抢购场景用可重入锁 RLock读写场景可以考虑 Redisson 读写锁如果是集群环境要配置 Redisson 的 Redis 集群模式不要单机配置。六、总结超卖问题本质就是并发下共享资源竞争。数据库乐观锁适合并发压力一般的场景当 QPS 较高大量请求冲击数据库就需要引入分布式锁。Redisson 把分布式锁里面各种棘手问题锁续期、可重入、防止误释放、异常处理全部封装好了开发不用重复造轮子。但千万不要觉得上了分布式锁就万事大吉。Redis 毕竟是中间件存在网络、主从切换等不可控因素。生产环境建议Redisson 分布式锁 数据库乐观锁双重兜底最大程度避免超卖事故。实际项目里面还可以继续优化结合 MQ 异步削峰把下单逻辑异步化进一步提升系统承载能力。Csdn.otftcf.cN/Article/details/23979.sHtMLCsdn.otftcf.cN/Article/details/01851.sHtMLCsdn.otftcf.cN/Article/details/86259.sHtMLCsdn.otftcf.cN/Article/details/45039.sHtMLCsdn.otftcf.cN/Article/details/03930.sHtMLCsdn.otftcf.cN/Article/details/96005.sHtMLCsdn.otftcf.cN/Article/details/09542.sHtMLCsdn.otftcf.cN/Article/details/03508.sHtMLCsdn.otftcf.cN/Article/details/68259.sHtMLCsdn.otftcf.cN/Article/details/41700.sHtMLCsdn.otftcf.cN/Article/details/43631.sHtMLCsdn.otftcf.cN/Article/details/26368.sHtMLCsdn.otftcf.cN/Article/details/53243.sHtMLCsdn.otftcf.cN/Article/details/29143.sHtMLCsdn.otftcf.cN/Article/details/52681.sHtMLCsdn.otftcf.cN/Article/details/37799.sHtMLCsdn.otftcf.cN/Article/details/32842.sHtMLCsdn.otftcf.cN/Article/details/46487.sHtMLCsdn.otftcf.cN/Article/details/31573.sHtMLCsdn.otftcf.cN/Article/details/26301.sHtMLCsdn.otftcf.cN/Article/details/33388.sHtMLCsdn.otftcf.cN/Article/details/98462.sHtMLCsdn.otftcf.cN/Article/details/14709.sHtMLCsdn.otftcf.cN/Article/details/31135.sHtMLCsdn.otftcf.cN/Article/details/09590.sHtMLCsdn.otftcf.cN/Article/details/28372.sHtMLCsdn.otftcf.cN/Article/details/08326.sHtMLCsdn.otftcf.cN/Article/details/29296.sHtMLCsdn.otftcf.cN/Article/details/47713.sHtMLCsdn.otftcf.cN/Article/details/92396.sHtMLCsdn.otftcf.cN/Article/details/86993.sHtMLCsdn.otftcf.cN/Article/details/22430.sHtMLCsdn.otftcf.cN/Article/details/49670.sHtMLCsdn.otftcf.cN/Article/details/80132.sHtMLCsdn.otftcf.cN/Article/details/70169.sHtMLCsdn.otftcf.cN/Article/details/42557.sHtMLCsdn.otftcf.cN/Article/details/26626.sHtMLCsdn.otftcf.cN/Article/details/62196.sHtMLCsdn.otftcf.cN/Article/details/64315.sHtMLCsdn.otftcf.cN/Article/details/12170.sHtMLCsdn.otftcf.cN/Article/details/16667.sHtMLCsdn.otftcf.cN/Article/details/52431.sHtMLCsdn.otftcf.cN/Article/details/73167.sHtMLCsdn.otftcf.cN/Article/details/44001.sHtMLCsdn.otftcf.cN/Article/details/32053.sHtMLCsdn.otftcf.cN/Article/details/87683.sHtMLCsdn.otftcf.cN/Article/details/96883.sHtMLCsdn.otftcf.cN/Article/details/78010.sHtMLCsdn.otftcf.cN/Article/details/77173.sHtMLCsdn.otftcf.cN/Article/details/81350.sHtMLCsdn.otftcf.cN/Article/details/91726.sHtMLCsdn.otftcf.cN/Article/details/10117.sHtMLCsdn.otftcf.cN/Article/details/49112.sHtMLCsdn.otftcf.cN/Article/details/73668.sHtMLCsdn.otftcf.cN/Article/details/35555.sHtMLCsdn.otftcf.cN/Article/details/84266.sHtMLCsdn.otftcf.cN/Article/details/18159.sHtMLCsdn.otftcf.cN/Article/details/53697.sHtMLCsdn.otftcf.cN/Article/details/41263.sHtMLCsdn.otftcf.cN/Article/details/02516.sHtMLCsdn.otftcf.cN/Article/details/81008.sHtMLCsdn.otftcf.cN/Article/details/31484.sHtMLCsdn.otftcf.cN/Article/details/80416.sHtMLCsdn.otftcf.cN/Article/details/48781.sHtMLCsdn.otftcf.cN/Article/details/54090.sHtMLCsdn.otftcf.cN/Article/details/07634.sHtMLCsdn.otftcf.cN/Article/details/02660.sHtMLCsdn.otftcf.cN/Article/details/45964.sHtMLCsdn.otftcf.cN/Article/details/72954.sHtMLCsdn.otftcf.cN/Article/details/49932.sHtMLCsdn.otftcf.cN/Article/details/38109.sHtMLCsdn.otftcf.cN/Article/details/34930.sHtMLCsdn.otftcf.cN/Article/details/16979.sHtMLCsdn.otftcf.cN/Article/details/08181.sHtMLCsdn.otftcf.cN/Article/details/81858.sHtMLCsdn.otftcf.cN/Article/details/10695.sHtMLCsdn.otftcf.cN/Article/details/04382.sHtMLCsdn.otftcf.cN/Article/details/68399.sHtMLCsdn.otftcf.cN/Article/details/03077.sHtMLCsdn.otftcf.cN/Article/details/87942.sHtMLCsdn.otftcf.cN/Article/details/48596.sHtMLCsdn.otftcf.cN/Article/details/35596.sHtMLCsdn.otftcf.cN/Article/details/87671.sHtMLCsdn.otftcf.cN/Article/details/32704.sHtMLCsdn.otftcf.cN/Article/details/56154.sHtMLCsdn.otftcf.cN/Article/details/64787.sHtMLCsdn.otftcf.cN/Article/details/80695.sHtMLCsdn.otftcf.cN/Article/details/66814.sHtMLCsdn.otftcf.cN/Article/details/96017.sHtMLCsdn.otftcf.cN/Article/details/97934.sHtMLCsdn.otftcf.cN/Article/details/40554.sHtMLCsdn.otftcf.cN/Article/details/13217.sHtMLCsdn.otftcf.cN/Article/details/39354.sHtMLCsdn.otftcf.cN/Article/details/05694.sHtMLCsdn.otftcf.cN/Article/details/54209.sHtMLCsdn.otftcf.cN/Article/details/97485.sHtMLCsdn.otftcf.cN/Article/details/27044.sHtMLCsdn.otftcf.cN/Article/details/78947.sHtMLCsdn.otftcf.cN/Article/details/31397.sHtMLCsdn.otftcf.cN/Article/details/51508.sHtMLCsdn.otftcf.cN/Article/details/95487.sHtMLCsdn.otftcf.cN/Article/details/52507.sHtMLCsdn.otftcf.cN/Article/details/17509.sHtMLCsdn.otftcf.cN/Article/details/55825.sHtMLCsdn.otftcf.cN/Article/details/72473.sHtMLCsdn.otftcf.cN/Article/details/01597.sHtMLCsdn.otftcf.cN/Article/details/21816.sHtMLCsdn.otftcf.cN/Article/details/96053.sHtMLCsdn.otftcf.cN/Article/details/80368.sHtMLCsdn.otftcf.cN/Article/details/40856.sHtMLCsdn.otftcf.cN/Article/details/96896.sHtMLCsdn.otftcf.cN/Article/details/89327.sHtMLCsdn.otftcf.cN/Article/details/71057.sHtMLCsdn.otftcf.cN/Article/details/49181.sHtMLCsdn.otftcf.cN/Article/details/10540.sHtMLCsdn.otftcf.cN/Article/details/94310.sHtMLCsdn.otftcf.cN/Article/details/19718.sHtMLCsdn.otftcf.cN/Article/details/48328.sHtMLCsdn.otftcf.cN/Article/details/52948.sHtMLCsdn.otftcf.cN/Article/details/17849.sHtMLCsdn.otftcf.cN/Article/details/87762.sHtMLCsdn.otftcf.cN/Article/details/67646.sHtMLCsdn.otftcf.cN/Article/details/12087.sHtMLCsdn.otftcf.cN/Article/details/45653.sHtMLCsdn.otftcf.cN/Article/details/50463.sHtMLCsdn.otftcf.cN/Article/details/72458.sHtMLCsdn.otftcf.cN/Article/details/23479.sHtMLCsdn.otftcf.cN/Article/details/28745.sHtMLCsdn.otftcf.cN/Article/details/23736.sHtMLCsdn.otftcf.cN/Article/details/13037.sHtMLCsdn.otftcf.cN/Article/details/07815.sHtMLCsdn.otftcf.cN/Article/details/16100.sHtMLCsdn.otftcf.cN/Article/details/11657.sHtMLCsdn.otftcf.cN/Article/details/59554.sHtMLCsdn.otftcf.cN/Article/details/75620.sHtMLCsdn.otftcf.cN/Article/details/98442.sHtMLCsdn.otftcf.cN/Article/details/72996.sHtMLCsdn.otftcf.cN/Article/details/54153.sHtMLCsdn.otftcf.cN/Article/details/05563.sHtMLCsdn.otftcf.cN/Article/details/32834.sHtMLCsdn.otftcf.cN/Article/details/06743.sHtMLCsdn.otftcf.cN/Article/details/50318.sHtMLCsdn.otftcf.cN/Article/details/39199.sHtMLCsdn.otftcf.cN/Article/details/06334.sHtMLCsdn.otftcf.cN/Article/details/70916.sHtMLCsdn.otftcf.cN/Article/details/01456.sHtMLCsdn.otftcf.cN/Article/details/22133.sHtMLCsdn.otftcf.cN/Article/details/21355.sHtMLCsdn.otftcf.cN/Article/details/65337.sHtMLCsdn.otftcf.cN/Article/details/08874.sHtMLCsdn.otftcf.cN/Article/details/15346.sHtMLCsdn.otftcf.cN/Article/details/61001.sHtMLCsdn.otftcf.cN/Article/details/83231.sHtMLCsdn.otftcf.cN/Article/details/35410.sHtMLCsdn.otftcf.cN/Article/details/38547.sHtMLCsdn.otftcf.cN/Article/details/13730.sHtMLCsdn.otftcf.cN/Article/details/18038.sHtMLCsdn.otftcf.cN/Article/details/07964.sHtMLCsdn.otftcf.cN/Article/details/68073.sHtMLCsdn.otftcf.cN/Article/details/97380.sHtMLCsdn.otftcf.cN/Article/details/10373.sHtMLCsdn.otftcf.cN/Article/details/07387.sHtMLCsdn.otftcf.cN/Article/details/11740.sHtMLCsdn.otftcf.cN/Article/details/44462.sHtMLCsdn.otftcf.cN/Article/details/17056.sHtMLCsdn.otftcf.cN/Article/details/99535.sHtMLCsdn.otftcf.cN/Article/details/38460.sHtMLCsdn.otftcf.cN/Article/details/69853.sHtMLCsdn.otftcf.cN/Article/details/95709.sHtMLCsdn.otftcf.cN/Article/details/62756.sHtMLCsdn.otftcf.cN/Article/details/69651.sHtMLCsdn.otftcf.cN/Article/details/45152.sHtMLCsdn.otftcf.cN/Article/details/88076.sHtMLCsdn.otftcf.cN/Article/details/08307.sHtMLCsdn.otftcf.cN/Article/details/28729.sHtMLCsdn.otftcf.cN/Article/details/31845.sHtMLCsdn.otftcf.cN/Article/details/82680.sHtMLCsdn.otftcf.cN/Article/details/85639.sHtMLCsdn.otftcf.cN/Article/details/20795.sHtMLCsdn.otftcf.cN/Article/details/60202.sHtMLCsdn.otftcf.cN/Article/details/32287.sHtMLCsdn.otftcf.cN/Article/details/27956.sHtMLCsdn.otftcf.cN/Article/details/43084.sHtMLCsdn.otftcf.cN/Article/details/17386.sHtMLCsdn.otftcf.cN/Article/details/24710.sHtMLCsdn.otftcf.cN/Article/details/07056.sHtMLCsdn.otftcf.cN/Article/details/41540.sHtMLCsdn.otftcf.cN/Article/details/47551.sHtMLCsdn.otftcf.cN/Article/details/14605.sHtMLCsdn.otftcf.cN/Article/details/02323.sHtMLCsdn.otftcf.cN/Article/details/68584.sHtMLCsdn.otftcf.cN/Article/details/19625.sHtMLCsdn.otftcf.cN/Article/details/92536.sHtMLCsdn.otftcf.cN/Article/details/40090.sHtMLCsdn.otftcf.cN/Article/details/06626.sHtMLCsdn.otftcf.cN/Article/details/86829.sHtMLCsdn.otftcf.cN/Article/details/95896.sHtMLCsdn.otftcf.cN/Article/details/21481.sHtMLCsdn.otftcf.cN/Article/details/79061.sHtMLCsdn.otftcf.cN/Article/details/87142.sHtMLCsdn.otftcf.cN/Article/details/49016.sHtMLCsdn.otftcf.cN/Article/details/88651.sHtMLCsdn.otftcf.cN/Article/details/44621.sHtMLCsdn.otftcf.cN/Article/details/61641.sHtMLCsdn.otftcf.cN/Article/details/81629.sHtMLCsdn.otftcf.cN/Article/details/28469.sHtMLCsdn.otftcf.cN/Article/details/08291.sHtMLCsdn.otftcf.cN/Article/details/83635.sHtMLCsdn.otftcf.cN/Article/details/16256.sHtMLCsdn.otftcf.cN/Article/details/05819.sHtMLCsdn.otftcf.cN/Article/details/34924.sHtMLCsdn.otftcf.cN/Article/details/70613.sHtMLCsdn.otftcf.cN/Article/details/03429.sHtMLCsdn.otftcf.cN/Article/details/14900.sHtMLCsdn.otftcf.cN/Article/details/56319.sHtMLCsdn.otftcf.cN/Article/details/42601.sHtMLCsdn.otftcf.cN/Article/details/97066.sHtMLCsdn.otftcf.cN/Article/details/78208.sHtMLCsdn.otftcf.cN/Article/details/46005.sHtMLCsdn.otftcf.cN/Article/details/13604.sHtMLCsdn.otftcf.cN/Article/details/25692.sHtMLCsdn.otftcf.cN/Article/details/01682.sHtMLCsdn.otftcf.cN/Article/details/71608.sHtMLCsdn.otftcf.cN/Article/details/62713.sHtMLCsdn.otftcf.cN/Article/details/96572.sHtMLCsdn.otftcf.cN/Article/details/68100.sHtMLCsdn.otftcf.cN/Article/details/24930.sHtMLCsdn.otftcf.cN/Article/details/71285.sHtMLCsdn.otftcf.cN/Article/details/45304.sHtMLCsdn.otftcf.cN/Article/details/47398.sHtMLCsdn.otftcf.cN/Article/details/98880.sHtMLCsdn.otftcf.cN/Article/details/04272.sHtMLCsdn.otftcf.cN/Article/details/40180.sHtMLCsdn.otftcf.cN/Article/details/92898.sHtMLCsdn.otftcf.cN/Article/details/22485.sHtMLCsdn.otftcf.cN/Article/details/15623.sHtMLCsdn.otftcf.cN/Article/details/00005.sHtMLCsdn.otftcf.cN/Article/details/93926.sHtMLCsdn.otftcf.cN/Article/details/40654.sHtMLCsdn.otftcf.cN/Article/details/25135.sHtMLCsdn.otftcf.cN/Article/details/22546.sHtMLCsdn.otftcf.cN/Article/details/55708.sHtMLCsdn.otftcf.cN/Article/details/20531.sHtMLCsdn.otftcf.cN/Article/details/20212.sHtMLCsdn.otftcf.cN/Article/details/01523.sHtMLCsdn.otftcf.cN/Article/details/92810.sHtMLCsdn.otftcf.cN/Article/details/95947.sHtMLCsdn.otftcf.cN/Article/details/36445.sHtMLCsdn.otftcf.cN/Article/details/42454.sHtMLCsdn.otftcf.cN/Article/details/70617.sHtMLCsdn.otftcf.cN/Article/details/14485.sHtMLCsdn.otftcf.cN/Article/details/85106.sHtMLCsdn.otftcf.cN/Article/details/64502.sHtMLCsdn.otftcf.cN/Article/details/89422.sHtMLCsdn.otftcf.cN/Article/details/15062.sHtMLCsdn.otftcf.cN/Article/details/88862.sHtMLCsdn.otftcf.cN/Article/details/22217.sHtMLCsdn.otftcf.cN/Article/details/36578.sHtMLCsdn.otftcf.cN/Article/details/27542.sHtMLCsdn.otftcf.cN/Article/details/52888.sHtMLCsdn.otftcf.cN/Article/details/81389.sHtMLCsdn.otftcf.cN/Article/details/06018.sHtMLCsdn.otftcf.cN/Article/details/17286.sHtMLCsdn.otftcf.cN/Article/details/46041.sHtMLCsdn.otftcf.cN/Article/details/58331.sHtMLCsdn.otftcf.cN/Article/details/43907.sHtMLCsdn.otftcf.cN/Article/details/24533.sHtMLCsdn.otftcf.cN/Article/details/71350.sHtMLCsdn.otftcf.cN/Article/details/16291.sHtMLCsdn.otftcf.cN/Article/details/87237.sHtMLCsdn.otftcf.cN/Article/details/70559.sHtMLCsdn.otftcf.cN/Article/details/08486.sHtMLCsdn.otftcf.cN/Article/details/57979.sHtMLCsdn.otftcf.cN/Article/details/86246.sHtMLCsdn.otftcf.cN/Article/details/83094.sHtMLCsdn.otftcf.cN/Article/details/51934.sHtMLCsdn.otftcf.cN/Article/details/28453.sHtMLCsdn.otftcf.cN/Article/details/63835.sHtMLCsdn.otftcf.cN/Article/details/39699.sHtMLCsdn.otftcf.cN/Article/details/72840.sHtMLCsdn.otftcf.cN/Article/details/03446.sHtMLCsdn.otftcf.cN/Article/details/61223.sHtMLCsdn.otftcf.cN/Article/details/83903.sHtMLCsdn.otftcf.cN/Article/details/61242.sHtMLCsdn.otftcf.cN/Article/details/60933.sHtMLCsdn.otftcf.cN/Article/details/11359.sHtMLCsdn.otftcf.cN/Article/details/94738.sHtMLCsdn.otftcf.cN/Article/details/27213.sHtMLCsdn.otftcf.cN/Article/details/63457.sHtMLCsdn.otftcf.cN/Article/details/06926.sHtMLCsdn.otftcf.cN/Article/details/73394.sHtMLCsdn.otftcf.cN/Article/details/31557.sHtMLCsdn.otftcf.cN/Article/details/26931.sHtMLCsdn.otftcf.cN/Article/details/10878.sHtMLCsdn.otftcf.cN/Article/details/38429.sHtMLCsdn.otftcf.cN/Article/details/33460.sHtMLCsdn.otftcf.cN/Article/details/97261.sHtMLCsdn.otftcf.cN/Article/details/78731.sHtMLCsdn.otftcf.cN/Article/details/24082.sHtMLCsdn.otftcf.cN/Article/details/82929.sHtMLCsdn.otftcf.cN/Article/details/84643.sHtMLCsdn.otftcf.cN/Article/details/67272.sHtMLCsdn.otftcf.cN/Article/details/24056.sHtMLCsdn.otftcf.cN/Article/details/47766.sHtMLCsdn.otftcf.cN/Article/details/10373.sHtMLCsdn.otftcf.cN/Article/details/26267.sHtMLCsdn.otftcf.cN/Article/details/72880.sHtMLCsdn.otftcf.cN/Article/details/00086.sHtMLCsdn.otftcf.cN/Article/details/32486.sHtMLCsdn.otftcf.cN/Article/details/23070.sHtMLCsdn.otftcf.cN/Article/details/98182.sHtMLCsdn.otftcf.cN/Article/details/15123.sHtMLCsdn.otftcf.cN/Article/details/02035.sHtMLCsdn.otftcf.cN/Article/details/13350.sHtMLCsdn.otftcf.cN/Article/details/02550.sHtMLCsdn.otftcf.cN/Article/details/35640.sHtMLCsdn.otftcf.cN/Article/details/78262.sHtMLCsdn.otftcf.cN/Article/details/20559.sHtMLCsdn.otftcf.cN/Article/details/11268.sHtMLCsdn.otftcf.cN/Article/details/01342.sHtMLCsdn.otftcf.cN/Article/details/64932.sHtMLCsdn.otftcf.cN/Article/details/48416.sHtMLCsdn.otftcf.cN/Article/details/52606.sHtMLCsdn.otftcf.cN/Article/details/83584.sHtMLCsdn.otftcf.cN/Article/details/20033.sHtMLCsdn.otftcf.cN/Article/details/78397.sHtMLCsdn.otftcf.cN/Article/details/26282.sHtMLCsdn.otftcf.cN/Article/details/40951.sHtMLCsdn.otftcf.cN/Article/details/72861.sHtMLCsdn.otftcf.cN/Article/details/21546.sHtMLCsdn.rsyais.cN/Article/details/80504.sHtMLCsdn.rsyais.cN/Article/details/83638.sHtMLCsdn.rsyais.cN/Article/details/74776.sHtMLCsdn.rsyais.cN/Article/details/33504.sHtMLCsdn.rsyais.cN/Article/details/07946.sHtMLCsdn.rsyais.cN/Article/details/72255.sHtMLCsdn.rsyais.cN/Article/details/71109.sHtMLCsdn.rsyais.cN/Article/details/36296.sHtMLCsdn.rsyais.cN/Article/details/66243.sHtMLCsdn.rsyais.cN/Article/details/16142.sHtMLCsdn.rsyais.cN/Article/details/48322.sHtMLCsdn.rsyais.cN/Article/details/54142.sHtMLCsdn.rsyais.cN/Article/details/47300.sHtMLCsdn.rsyais.cN/Article/details/63175.sHtMLCsdn.rsyais.cN/Article/details/89715.sHtMLCsdn.rsyais.cN/Article/details/50003.sHtMLCsdn.rsyais.cN/Article/details/87926.sHtMLCsdn.rsyais.cN/Article/details/96622.sHtMLCsdn.rsyais.cN/Article/details/94596.sHtMLCsdn.rsyais.cN/Article/details/85193.sHtMLCsdn.rsyais.cN/Article/details/70722.sHtMLCsdn.rsyais.cN/Article/details/13563.sHtMLCsdn.rsyais.cN/Article/details/93336.sHtMLCsdn.rsyais.cN/Article/details/93309.sHtMLCsdn.rsyais.cN/Article/details/86437.sHtMLCsdn.rsyais.cN/Article/details/96859.sHtMLCsdn.rsyais.cN/Article/details/60655.sHtMLCsdn.rsyais.cN/Article/details/73716.sHtMLCsdn.rsyais.cN/Article/details/80554.sHtMLCsdn.rsyais.cN/Article/details/68019.sHtMLCsdn.rsyais.cN/Article/details/57105.sHtMLCsdn.rsyais.cN/Article/details/91798.sHtMLCsdn.rsyais.cN/Article/details/32069.sHtMLCsdn.rsyais.cN/Article/details/75585.sHtMLCsdn.rsyais.cN/Article/details/04547.sHtMLCsdn.rsyais.cN/Article/details/83270.sHtMLCsdn.rsyais.cN/Article/details/77032.sHtMLCsdn.rsyais.cN/Article/details/87622.sHtMLCsdn.rsyais.cN/Article/details/64620.sHtML

相关新闻

2026/8/16 1:00:39

新手必看!避开90%人踩过的for循环陷阱

一、90% 新手都踩过的坑,你可能也在其中 从事数据处理、脚本开发工作的人, 差不多都经历过这般崩溃之时: 满心欢喜地去加载相关数据集, 精心写好 for 循环语句之后, 点击运行按钮, 然而脚本却长时间毫无反应, 电脑运行得愈发卡顿, 直至最后直接死机——并非代码编写…

2026/8/16 0:55:38

192、飞控中的无人机集群:法规与伦理考量

飞控算法从入门到精通 192 飞控中的无人机集群:法规与伦理考量 一、从一次“炸机”说起 去年夏天,我在某园区做多机协同编队测试。六架四旋翼按预设的“蜂群”队形起飞,前五分钟一切正常——直到第三架飞机突然偏离航线,径直撞向旁边一栋楼的玻璃幕墙。事后分析日志,发…

2026/8/16 2:06:08

OpenClaw AI智能体:从Docker部署到技能开发,打造你的自动化副手

1. 从“玩具”到“副手”:OpenClaw的定位与核心价值最近在折腾本地AI智能体,OpenClaw这个名字出现的频率越来越高。一开始我以为它又是一个需要复杂配置、写大量代码的“开发者玩具”,但真正上手后,发现它的设计理念非常有意思&am…

2026/8/16 2:06:08

Windows纯净版MinGW-w64安装配置指南:从下载到VSCode集成

1. 项目概述:为什么我们需要一个“干净”的MinGW-w64?在Windows上进行C或C开发,尤其是涉及到一些开源库的编译时,一个绕不开的工具就是MinGW-w64。你可能听说过它,也可能被它复杂的安装过程劝退过。网上教程五花八门&a…

2026/8/16 2:06:08

OpenClaw五分钟部署实战:四年AI工程避坑与生产化指南

1. 项目概述:从“5分钟部署”到四年实战沉淀看到“5分钟搞定OpenClaw部署”这个标题,很多朋友的第一反应可能是怀疑,或者觉得这又是一个吸引眼球的噱头。作为一个在AI应用开发和部署一线摸爬滚打了四年的从业者,我完全理解这种感受…

2026/8/16 2:06:08

10GW算力集群核心技术解析:从异构计算到分布式训练实战

最近在技术圈里,SpaceXAI 这个名字被频繁提及,尤其是在其宣布“目标明年实现 10GW 算力集群”之后。对于开发者而言,这不仅仅是一条商业新闻,更是一个强烈的技术信号:大规模、高密度的算力集群正在从云端走向更广泛的产…

2026/8/16 2:01:08

XUnity.AutoTranslator翻译服务横评:游戏本地化如何选择最佳API

1. 项目概述:为什么游戏翻译服务的选择如此重要?如果你是一个热衷于体验全球各地独立游戏或视觉小说的玩家,或者是一位需要将作品本地化推向国际市场的Unity开发者,那么“翻译”这个环节你一定绕不过去。手动替换文本?…

2026/8/16 0:00:35

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:36

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/16 0:00:35

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:36

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/15 9:46:39

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/15 4:56:16

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/15 9:46:30

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…