乐尚代驾六订单执行一

加载当前订单

需求

  • 无论是司机端,还是乘客端,遇到页面切换,重新登录小程序等,只要回到首页面,查看当前是否有正在执行订单,如果有跳转到当前订单执行页面

  • 之前这个接口已经开发,为了测试,临时跳过去,默认没有当前订单的

乘客端查找当前订单

@Operation(summary = "乘客端查找当前订单")
@GetMapping("/searchCustomerCurrentOrder/{customerId}")
public Result<CurrentOrderInfoVo> searchCustomerCurrentOrder(@PathVariable Long customerId) {return Result.ok(orderInfoService.searchCustomerCurrentOrder(customerId));
}//乘客端查找当前订单
@Override
public CurrentOrderInfoVo searchCustomerCurrentOrder(Long customerId) {//封装条件//乘客idLambdaQueryWrapper<OrderInfo> wrapper = new LambdaQueryWrapper<>();wrapper.eq(OrderInfo::getCustomerId,customerId);//各种状态// 这些状态都表明该订单在执行中,所以要所有状态都查询Integer[] statusArray = {OrderStatus.ACCEPTED.getStatus(),OrderStatus.DRIVER_ARRIVED.getStatus(),OrderStatus.UPDATE_CART_INFO.getStatus(),OrderStatus.START_SERVICE.getStatus(),OrderStatus.END_SERVICE.getStatus(),OrderStatus.UNPAID.getStatus()};wrapper.in(OrderInfo::getStatus,statusArray);//获取最新一条记录wrapper.orderByDesc(OrderInfo::getId);wrapper.last(" limit 1");//调用方法OrderInfo orderInfo = orderInfoMapper.selectOne(wrapper);//封装到CurrentOrderInfoVoCurrentOrderInfoVo currentOrderInfoVo = new CurrentOrderInfoVo();if(orderInfo != null) {currentOrderInfoVo.setOrderId(orderInfo.getId());currentOrderInfoVo.setStatus(orderInfo.getStatus());currentOrderInfoVo.setIsHasCurrentOrder(true);} else {currentOrderInfoVo.setIsHasCurrentOrder(false);}return currentOrderInfoVo;
}/*** 乘客端查找当前订单* @param customerId* @return*/
@GetMapping("/order/info/searchCustomerCurrentOrder/{customerId}")
Result<CurrentOrderInfoVo> searchCustomerCurrentOrder(@PathVariable("customerId") Long customerId);@Operation(summary = "乘客端查找当前订单")
@GuiguLogin
@GetMapping("/searchCustomerCurrentOrder")
public Result<CurrentOrderInfoVo> searchCustomerCurrentOrder() {Long customerId = AuthContextHolder.getUserId();return Result.ok(orderService.searchCustomerCurrentOrder(customerId));
}//乘客查找当前订单
@Override
public CurrentOrderInfoVo searchCustomerCurrentOrder(Long customerId) {return orderInfoFeignClient.searchCustomerCurrentOrder(customerId).getData();
}

司机端查找当前订单

@Operation(summary = "司机端查找当前订单")
@GetMapping("/searchDriverCurrentOrder/{driverId}")
public Result<CurrentOrderInfoVo> searchDriverCurrentOrder(@PathVariable Long driverId) {return Result.ok(orderInfoService.searchDriverCurrentOrder(driverId));
}//司机端查找当前订单
@Override
public CurrentOrderInfoVo searchDriverCurrentOrder(Long driverId) {//封装条件LambdaQueryWrapper<OrderInfo> wrapper = new LambdaQueryWrapper<>();wrapper.eq(OrderInfo::getDriverId,driverId);Integer[] statusArray = {OrderStatus.ACCEPTED.getStatus(),OrderStatus.DRIVER_ARRIVED.getStatus(),OrderStatus.UPDATE_CART_INFO.getStatus(),OrderStatus.START_SERVICE.getStatus(),OrderStatus.END_SERVICE.getStatus()};wrapper.in(OrderInfo::getStatus,statusArray);wrapper.orderByDesc(OrderInfo::getId);wrapper.last(" limit 1");OrderInfo orderInfo = orderInfoMapper.selectOne(wrapper);//封装到voCurrentOrderInfoVo currentOrderInfoVo = new CurrentOrderInfoVo();if(null != orderInfo) {currentOrderInfoVo.setStatus(orderInfo.getStatus());currentOrderInfoVo.setOrderId(orderInfo.getId());currentOrderInfoVo.setIsHasCurrentOrder(true);} else {currentOrderInfoVo.setIsHasCurrentOrder(false);}return currentOrderInfoVo;
}/*** 司机端查找当前订单* @param driverId* @return*/
@GetMapping("/order/info/searchDriverCurrentOrder/{driverId}")
Result<CurrentOrderInfoVo> searchDriverCurrentOrder(@PathVariable("driverId") Long driverId);@Operation(summary = "司机端查找当前订单")
@GuiguLogin
@GetMapping("/searchDriverCurrentOrder")
public Result<CurrentOrderInfoVo> searchDriverCurrentOrder() {Long driverId = AuthContextHolder.getUserId();return Result.ok(orderService.searchDriverCurrentOrder(driverId));
}@Override
public CurrentOrderInfoVo searchDriverCurrentOrder(Long driverId) {return orderInfoFeignClient.searchDriverCurrentOrder(driverId).getData();
}

获取订单信息

进入首页,在有执行中订单的情况下,我们需要获取订单信息,才能知道页面跳转到那里去,因此现在把这个接口给实现了。

  • 订单的各个状态,获取的订单信息不一样,当前我们只是获取订单基本信息,后续完善
@Operation(summary = "根据订单id获取订单信息")
@GetMapping("/getOrderInfo/{orderId}")
public Result<OrderInfo> getOrderInfo(@PathVariable Long orderId) {return Result.ok(orderInfoService.getById(orderId));
}/*** 远程调用* 根据订单id获取订单信息* @param orderId* @return*/
@GetMapping("/order/info/getOrderInfo/{orderId}")
Result<OrderInfo> getOrderInfo(@PathVariable("orderId") Long orderId);// 乘客端web接口
@Operation(summary = "获取订单信息")
@GuiguLogin
@GetMapping("/getOrderInfo/{orderId}")
public Result<OrderInfoVo> getOrderInfo(@PathVariable Long orderId) {Long customerId = AuthContextHolder.getUserId();return Result.ok(orderService.getOrderInfo(orderId, customerId));
}@Override
public OrderInfoVo getOrderInfo(Long orderId, Long customerId) {OrderInfo orderInfo = orderInfoFeignClient.getOrderInfo(orderId).getData();//判断if(orderInfo.getCustomerId() != customerId) {throw new GuiguException(ResultCodeEnum.ILLEGAL_REQUEST);}OrderInfoVo orderInfoVo = new OrderInfoVo();orderInfoVo.setOrderId(orderId);BeanUtils.copyProperties(orderInfo,orderInfoVo);return orderInfoVo;
}// 司机端web接口
@Operation(summary = "获取订单账单详细信息")
@GuiguLogin
@GetMapping("/getOrderInfo/{orderId}")
public Result<OrderInfoVo> getOrderInfo(@PathVariable Long orderId) {Long driverId = AuthContextHolder.getUserId();return Result.ok(orderService.getOrderInfo(orderId, driverId));
}@Override
public OrderInfoVo getOrderInfo(Long orderId, Long driverId) {OrderInfo orderInfo = orderInfoFeignClient.getOrderInfo(orderId).getData();if(orderInfo.getDriverId() != driverId) {throw new GuiguException(ResultCodeEnum.ILLEGAL_REQUEST);}OrderInfoVo orderInfoVo = new OrderInfoVo();orderInfoVo.setOrderId(orderId);BeanUtils.copyProperties(orderInfo,orderInfoVo);return orderInfoVo;
}

司乘同显

在这里插入图片描述

  • 司机抢单成功后要赶往上车点,我们要计算司机赶往上车点的最佳线路,司机端与乘客端都要显示司机乘同显,这样乘客就能实时看见司机的动向。

司机端司乘同显

  • 司机所在地址司乘同显开始位置,代驾地址就是司乘同显终点
  • 计算司机司乘同显最佳路线
@Operation(summary = "计算最佳驾驶线路")
@GuiguLogin
@PostMapping("/calculateDrivingLine")
public Result<DrivingLineVo> calculateDrivingLine(@RequestBody CalculateDrivingLineForm calculateDrivingLineForm) {return Result.ok(orderService.calculateDrivingLine(calculateDrivingLineForm));
}//计算最佳驾驶线路
@Override
public DrivingLineVo calculateDrivingLine(CalculateDrivingLineForm calculateDrivingLineForm) {return mapFeignClient.calculateDrivingLine(calculateDrivingLineForm).getData();
}

更新位置到Redis里面

  • 司机要赶往代驾地址,实时更新司机当前最新位置(经纬度)到Redis里面
  • 乘客看到司机的动向,司机端更新,乘客端获取
@Operation(summary = "司机赶往代驾起始点:更新订单地址到缓存")
@PostMapping("/updateOrderLocationToCache")
public Result<Boolean> updateOrderLocationToCache(@RequestBody UpdateOrderLocationForm updateOrderLocationForm) {return Result.ok(locationService.updateOrderLocationToCache(updateOrderLocationForm));
}//司机赶往代驾起始点:更新订单地址到缓存
@Override
public Boolean updateOrderLocationToCache(UpdateOrderLocationForm updateOrderLocationForm) {OrderLocationVo orderLocationVo = new OrderLocationVo();orderLocationVo.setLongitude(updateOrderLocationForm.getLongitude());orderLocationVo.setLatitude(updateOrderLocationForm.getLatitude());String key = RedisConstant.UPDATE_ORDER_LOCATION + updateOrderLocationForm.getOrderId();redisTemplate.opsForValue().set(key,orderLocationVo);return true;
}/*** 司机赶往代驾起始点:更新订单地址到缓存* @param updateOrderLocationForm* @return*/
@PostMapping("/map/location/updateOrderLocationToCache")
Result<Boolean> updateOrderLocationToCache(@RequestBody UpdateOrderLocationForm updateOrderLocationForm);@Operation(summary = "司机赶往代驾起始点:更新订单位置到Redis缓存")
@GuiguLogin
@PostMapping("/updateOrderLocationToCache")
public Result updateOrderLocationToCache(@RequestBody UpdateOrderLocationForm updateOrderLocationForm) {return Result.ok(locationService.updateOrderLocationToCache(updateOrderLocationForm));
}@Override
public Boolean updateOrderLocationToCache(UpdateOrderLocationForm updateOrderLocationForm) {return locationFeignClient.updateOrderLocationToCache(updateOrderLocationForm).getData();
}

获取司机基本信息

  • 乘客进入司乘同显页面,需要加载司机基本信息,司机姓名,头像等信息
@Operation(summary = "获取司机基本信息")
@GetMapping("/getDriverInfo/{driverId}")
public Result<DriverInfoVo> getDriverInfoOrder(@PathVariable Long driverId) {return Result.ok(driverInfoService.getDriverInfoOrder(driverId));
}//获取司机基本信息
@Override
public DriverInfoVo getDriverInfoOrder(Long driverId) {//司机id获取基本信息DriverInfo driverInfo = driverInfoMapper.selectById(driverId);//封装DriverInfoVoDriverInfoVo driverInfoVo = new DriverInfoVo();BeanUtils.copyProperties(driverInfo,driverInfoVo);//计算驾龄//获取当前年int currentYear = new DateTime().getYear();//获取驾驶证初次领证日期//driver_license_issue_dateint firstYear = new DateTime(driverInfo.getDriverLicenseIssueDate()).getYear();int driverLicenseAge = currentYear - firstYear;driverInfoVo.setDriverLicenseAge(driverLicenseAge);return driverInfoVo;
}/*** 获取司机基本信息* @param driverId* @return*/
@GetMapping("/driver/info/getDriverInfo/{driverId}")
Result<DriverInfoVo> getDriverInfo(@PathVariable("driverId") Long driverId);@Operation(summary = "根据订单id获取司机基本信息")
@GuiguLogin
@GetMapping("/getDriverInfo/{orderId}")
public Result<DriverInfoVo> getDriverInfo(@PathVariable Long orderId) {Long customerId = AuthContextHolder.getUserId();return Result.ok(orderService.getDriverInfo(orderId, customerId));
}@Override
public DriverInfoVo getDriverInfo(Long orderId, Long customerId) {//根据订单id获取订单信息OrderInfo orderInfo = orderInfoFeignClient.getOrderInfo(orderId).getData();if(orderInfo.getCustomerId() != customerId) {throw new GuiguException(ResultCodeEnum.DATA_ERROR);}return driverInfoFeignClient.getDriverInfo(orderInfo.getDriverId()).getData();
}

乘客端获取司机经纬度位置

@Operation(summary = "司机赶往代驾起始点:获取订单经纬度位置")
@GetMapping("/getCacheOrderLocation/{orderId}")
public Result<OrderLocationVo> getCacheOrderLocation(@PathVariable Long orderId) {return Result.ok(locationService.getCacheOrderLocation(orderId));
}@Override
public OrderLocationVo getCacheOrderLocation(Long orderId) {String key = RedisConstant.UPDATE_ORDER_LOCATION + orderId;OrderLocationVo orderLocationVo = (OrderLocationVo)redisTemplate.opsForValue().get(key);return orderLocationVo;
}/*** 司机赶往代驾起始点:获取订单经纬度位置* @param orderId* @return*/
@GetMapping("/map/location/getCacheOrderLocation/{orderId}")
Result<OrderLocationVo> getCacheOrderLocation(@PathVariable("orderId") Long orderId);@Operation(summary = "司机赶往代驾起始点:获取订单经纬度位置")
@GetMapping("/getCacheOrderLocation/{orderId}")
public Result<OrderLocationVo> getCacheOrderLocation(@PathVariable Long orderId) {return Result.ok(locationService.getCacheOrderLocation(orderId));
}@Override
public OrderLocationVo getCacheOrderLocation(Long orderId) {return locationFeignClient.getCacheOrderLocation(orderId).getData();
}@Operation(summary = "计算最佳驾驶线路")
@GuiguLogin
@PostMapping("/calculateDrivingLine")
public Result<DrivingLineVo> calculateDrivingLine(@RequestBody CalculateDrivingLineForm calculateDrivingLineForm) {return Result.ok(orderService.calculateDrivingLine(calculateDrivingLineForm));
}@Override
public DrivingLineVo calculateDrivingLine(CalculateDrivingLineForm calculateDrivingLineForm) {return mapFeignClient.calculateDrivingLine(calculateDrivingLineForm).getData();
}

司机到达起始点

在这里插入图片描述

  • 司机到达代驾起始点之后,更新当前代驾订单数据
  • 更新订单状态:司机到达
  • 更新订单到达时间
@Operation(summary = "司机到达起始点")
@GetMapping("/driverArriveStartLocation/{orderId}/{driverId}")
public Result<Boolean> driverArriveStartLocation(@PathVariable Long orderId, @PathVariable Long driverId) {return Result.ok(orderInfoService.driverArriveStartLocation(orderId, driverId));
}//司机到达起始点
@Override
public Boolean driverArriveStartLocation(Long orderId, Long driverId) {// 更新订单状态和到达时间,条件:orderId + driverIdLambdaQueryWrapper<OrderInfo> wrapper = new LambdaQueryWrapper<>();wrapper.eq(OrderInfo::getId,orderId);wrapper.eq(OrderInfo::getDriverId,driverId);OrderInfo orderInfo = new OrderInfo();orderInfo.setStatus(OrderStatus.DRIVER_ARRIVED.getStatus());orderInfo.setArriveTime(new Date());int rows = orderInfoMapper.update(orderInfo, wrapper);if(rows == 1) {return true;} else {throw new GuiguException(ResultCodeEnum.UPDATE_ERROR);}
}/*** 司机到达起始点* @param orderId* @param driverId* @return*/
@GetMapping("/order/info/driverArriveStartLocation/{orderId}/{driverId}")
Result<Boolean> driverArriveStartLocation(@PathVariable("orderId") Long orderId, @PathVariable("driverId") Long driverId);@Operation(summary = "司机到达代驾起始地点")
@GuiguLogin
@GetMapping("/driverArriveStartLocation/{orderId}")
public Result<Boolean> driverArriveStartLocation(@PathVariable Long orderId) {Long driverId = AuthContextHolder.getUserId();return Result.ok(orderService.driverArriveStartLocation(orderId, driverId));
}//司机到达代驾起始地点
@Override
public Boolean driverArriveStartLocation(Long orderId, Long driverId) {return orderInfoFeignClient.driverArriveStartLocation(orderId,driverId).getData();
}

司机更新代驾车辆信息

司机到达代驾起始点,联系了乘客,见到了代驾车辆,要拍照与录入车辆信息

在这里插入图片描述

@Operation(summary = "更新代驾车辆信息")
@PostMapping("/updateOrderCart")
public Result<Boolean> updateOrderCart(@RequestBody UpdateOrderCartForm updateOrderCartForm) {return Result.ok(orderInfoService.updateOrderCart(updateOrderCartForm));
}Boolean updateOrderCart(UpdateOrderCartForm updateOrderCartForm);@Transactional(rollbackFor = Exception.class)
@Override
public Boolean updateOrderCart(UpdateOrderCartForm updateOrderCartForm) {LambdaQueryWrapper<OrderInfo> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(OrderInfo::getId, updateOrderCartForm.getOrderId());queryWrapper.eq(OrderInfo::getDriverId, updateOrderCartForm.getDriverId());OrderInfo updateOrderInfo = new OrderInfo();BeanUtils.copyProperties(updateOrderCartForm, updateOrderInfo);updateOrderInfo.setStatus(OrderStatus.UPDATE_CART_INFO.getStatus());//只能更新自己的订单int row = orderInfoMapper.update(updateOrderInfo, queryWrapper);if(row == 1) {//记录日志this.log(updateOrderCartForm.getOrderId(), OrderStatus.UPDATE_CART_INFO.getStatus());} else {throw new GuiguException(ResultCodeEnum.UPDATE_ERROR);}return true;
}/*** 更新代驾车辆信息* @param updateOrderCartForm* @return*/
@PostMapping("/order/info//updateOrderCart")
Result<Boolean> updateOrderCart(@RequestBody UpdateOrderCartForm updateOrderCartForm);@Operation(summary = "更新代驾车辆信息")
@GuiguLogin
@PostMapping("/updateOrderCart")
public Result<Boolean> updateOrderCart(@RequestBody UpdateOrderCartForm updateOrderCartForm) {Long driverId = AuthContextHolder.getUserId();updateOrderCartForm.setDriverId(driverId);return Result.ok(orderService.updateOrderCart(updateOrderCartForm));
}@Override
public Boolean updateOrderCart(UpdateOrderCartForm updateOrderCartForm) {return orderInfoFeignClient.updateOrderCart(updateOrderCartForm).getData();
}

公司只有一个总的理想,员工不能要求公司去实现你的理想,你必须适应这个总的理想,参加主力部队作战,发挥你的作用。我们的主航道不会变化,你们与大学合作的面宽一点,到2012实验室的时候窄一点,到产品研发更是窄窄的,要有长期性的清晰指标。

https://baijiahao.baidu.com/s?id=1760664270073856317&wfr=spider&for=pc
擦亮花火、共创未来——任正非在“难题揭榜”花火奖座谈会上的讲话
任正非

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVAWeb实战(后端篇)

因为前后端代码内容过多&#xff0c;这篇只写后端的代码&#xff0c;前端的在另一篇写 项目实战一&#xff1a; 1.创建数据库,表等数据 创建数据库 create database schedule_system 创建表&#xff0c;并添加内容 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------…

Node.js版本管理工具之NVM

目录 一、NVM介绍二、NVM的下载安装1、NVM下载2、卸载旧版Node.js3、安装 三、NVM配置及使用1、设置nvm镜像源2、安装Node.js3、卸载Node.js4、使用或切换Node.js版本5、设置全局安装路径和缓存路径 四、常用命令技术交流 博主介绍&#xff1a; 计算机科班人&#xff0c;全栈工…

Win11 操作(四)g502鼠标连接电脑不亮灯无反应

罗技鼠标连接电脑不亮灯无反应 前言 罗技技术&#x1f4a9;中&#x1f4a9;&#xff0c;贴吧技术神中神&#xff01; 最近买了一个g502&#xff0c;结果买回来直接插上电脑连灯都不亮&#xff0c;问了一下客服。客服简单的让我换接口&#xff0c;又是下载ghub之类的&#xf…

Linux 安装 GDB (无Root 权限)

引入 在Linux系统中&#xff0c;如果你需要在集群或者远程操作没有root权限的机子&#xff0c;安装GDB&#xff08;GNU调试器&#xff09;可能会有些限制&#xff0c;因为通常安装新软件或更新系统文件需要管理员权限。下面我们介绍可以在没有root权限的情况下安装GDB&#xf…

ElasticSearch核心之DSL查询语句实战

什么是DSL&#xff1f; Elasticsearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。 DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。目前常用的框架查询方法什么的底层都是构建DSL语句实现的&#xff0c;所以你必…

openFeign配置okhttp

原来的项目出现了性能问题&#xff0c;老大不知道怎么的&#xff0c;让我改openFeign线程池为okhttp&#xff0c;说原生的不支持线程池性能比较差。 原openFeign配置文章地址 一、pom文件 <dependency><groupId>org.springframework.cloud</groupId><arti…

【短视频矩阵系统源码部署/技术应用开发】

短视频矩阵系统&#xff1a;选择专业服务商指南 该短视频矩阵系统由多个关键模块组成&#xff0c;包括混剪算法、账号管理与发布、消息处理以及数据管理等。为了优化带宽使用&#xff0c;文件导出功能已被独立处理。 此外&#xff0c;系统还集成了后台运营管理功能。 在技术架…

Python设计模式 - 工厂方法模式

定义 工厂方法模式是一种创建型设计模式&#xff0c;它定义一个创建对象的接口&#xff0c;让其子类来处理对象的创建&#xff0c;而不是直接实例化对象。 结构 抽象工厂&#xff08;Factory&#xff09;&#xff1a;声明工厂方法&#xff0c;返回一个产品对象。具体工厂类都…

git等常用工具以及cmake

一、将git中的代码克隆进电脑以及常用工具介绍 1.安装git 首先需要安装git sudo apt install git 注意一定要加--recursive&#xff0c;因为文件中有很多“引用文件“&#xff0c;即第三方文件&#xff08;库&#xff09;&#xff0c;加入该选项会将文件中包含的子模…

区块链技术如何重塑医疗健康行业未来?

区块链在医疗领域的应用日益广泛&#xff0c;主要体现在以下几个方面&#xff1a; 一、医疗数据管理 电子病历管理&#xff1a; 区块链技术可以用于构建去中心化的电子病历系统&#xff0c;确保病历数据的不可篡改性和安全性。患者可以通过区块链平台安全地管理自己的电子病历…

30岁决心转行,AI太香了

今天是一篇老学员的经历分享&#xff0c;此时的王同学在大洋彼岸即将毕业&#xff0c;手握多家北美大厂offer&#xff0c;一片明媚。谁能想到王同学的转码之路竟始于一场裁员&#xff0c;这场访谈拉开了他的回忆。 最近总刷到一些关于转行的话题&#xff0c;很多刚毕业的同学喜…

【OpenCV C++20 学习笔记】图片融合

图片融合 原理实现结果展示完整代码 原理 关于OpenCV的配置和基础用法&#xff0c;请参阅本专栏的其他文章&#xff1a;垚武田的OpenCV合集 这里采用的图片熔合的算法来自Richard Szeliski的书《Computer Vision: Algorithms and Applications》&#xff08;《计算机视觉&#…

极简Springboot+Mybatis-Plus+Vue零基础萌新都看得懂的分页查询(富含前后端项目案例)

目录 springboot配置相关 依赖配置 yaml配置 MySQL创建与使用 &#xff08;可拿软件包项目系统&#xff09; 创建数据库 创建数据表 mybatis-plus相关 Mapper配置 ​编辑 启动类放MapperScan 启动类中配置 添加config配置文件 Springboot编码 实体类 mapperc(Dao…

LINUX -exec函数族

1、功能&#xff1a; *让父子进程来执行不相干的操作 *能够替换进程地址空间的代码.text段 *执行另外的程序&#xff0c;不需要创建额外的的地址空间 *当前程序中调用另外一个应用程序 2、执行目录下的程序&#xff1a; *指定执行目录下的程序 int execl(const char *path,…

工业三防平板,高效能与轻便性的结合

在当今数字化、智能化的工业时代&#xff0c;工业三防平板作为一种创新的设备&#xff0c;正以其独特的优势在各个领域发挥着重要作用。它不仅具备高效能的处理能力&#xff0c;还拥有出色的轻便性&#xff0c;为工业生产和管理带来了前所未有的便利。 一、高效能的核心动力 工…

Python爬虫-中国汽车市场月销量数据

前言 本文是该专栏的第34篇,后面会持续分享python爬虫干货知识,记得关注。 在本文中,笔者将通过某汽车平台,来采集“中国汽车市场”的月销量数据。 具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。废话不多说,下面跟着笔者直接往下看正文详细内容。(附…

GroupMamba实战:使用GroupMamba实现图像分类任务(一)

摘要 状态空间模型&#xff08;SSM&#xff09;的最新进展展示了在具有次二次复杂性的长距离依赖建模中的有效性能。GroupMamba解决了将基于SSM的模型扩展到计算机视觉领域的挑战&#xff0c;特别是大型模型尺寸的不稳定性和低效性。GroupMamba在ImageNet-1K的图像分类、MS-CO…

DC-DC 反激式电路的共模噪声分析

本系列文章的第 5 和第 6 部分[1-7]介绍有助于抑制非隔离 DC-DC 稳压器电路传导和辐射电磁干扰 (EMI) 的实用指南和示例。当然&#xff0c;如果不考虑电隔离设计&#xff0c;DC-DC 电源 EMI 的任何处理方式都不全面&#xff0c;因为在这些电路中&#xff0c;电源变压器的 EMI 性…

Python常用内置库介绍

Python作为一门强大且易学的编程语言&#xff0c;内置了许多功能强大的库&#xff0c;让开发者能够更加便捷地完成各种任务。本文中&#xff0c;我将详细介绍Python中常用的内置库。 math&#xff1a;提供数学函数&#xff0c;如三角函数、对数函数等。 示例&#xff1a;计算平…

web后端--Spring事务管理

事务也要日志配置 !!!!debug前面记得加空格 logging:level:org.springframework.jdbc.support.JdbcTransactionManager: debugrollbackFor 默认情况下&#xff0c;只有出现RunTimeException才会回滚事务&#xff0c;rollbackfor属性用于控制出现何种异常类型&#xff0c;回滚…