项目介绍:配用电方向的系统:安全监测分析与风险防控决策系统、蒙东自备电厂、有源客户安全检查在线协同管控系统。系统的内容主要是关于智慧运维、智能决策、智能调控等方向。
所用技术:Springboot、Springcloudalibaba、Nacos、华为 CSE、Mybatis、Mysql、Redis、Neo4J、Docker、Nginx、Minio、阿里云 OSS 服务、Matlab 算法、Python 算法
个人职责:负责用电系统的全栈开发。目前自己认为遇到的较难的问题如下:
1.解决Java调用Matlab算法:1.1将Matlab算法封装为Java可调用的jar包;1.2抽象Matlab代码为函数,并处理数据类型转换问题。1.3使用Docker部署包含Matlab算法的项目。
2.解决Java调用Matlab `predict`函数的问题:2.1由于多个Matlab算法共用同一命名空间导致冲突,创建一个新的独立函数`predictA`来替换所有算法中的`predict`调用;2.2打包更新后的Matlab算法到一个jar包中供Java使用。
3.处理计算密集型后端接口:3.1使用RabbitMQ作为消息队列来解耦请求和任务执行。3.2利用Spring Boot的@Async注解实现异步处理。3.3通过CompletableFuture处理异步逻辑。3.4实施Guava RateLimiter和Nginx限流策略以保护系统资源。
4.解决读取10万条excel数据出现OOM的问题:4.1对于数据量相对不是特别打的情况,采用缓存的形式分批读取数据,可以使用Apache POI库提供的SXSSF(Streaming Usermodel API)或XSSF(用于.xlsx文件)与SAX解析器结合的方式,按需加载数据到内存中;4.2对于数据量较大的情况下,对数据进行分片处理。使用哈希算法或其他逻辑将数据分割成多个小文件或批次。例如,可以根据某个字段(如ID、时间戳等)来决定数据的分组方式。利用多线程或多进程并行处理各个分片,每个线程/进程一次只读取一个分片,并在处理完成后释放相关资源。
项目介绍:针对不同用户的在线预约、问诊、开处方、药师审核的一个多端的医疗项目(医护端、管理端、居民端)
所用技术:Springboot、Springcloud alibaba、Nacos、Mybatis、Mysql、Redis、RabbitMQ
个人职责:主要负责管理端的统计模块的全栈以及接触到一些支付模块的问题。
1、参与前期需求分析,业务模块的梳理,代码编写,单元测试等工作;
2、使用rabbitmq接收微信支付等异步支付通知实现流量削峰,保证重置成功;
3、对于统计模块:将预约挂号统计分析接口从 50w 条数据耗时 6s 优化至 1.3s。
4、支付模块主要学习服务之间通过消息队列通信,处理网络异常、请求超时等问题,确保订单处理流程的顺畅与服务的高可用性?解
决方案:2.1 服务重试机制:针对可能的网络抖动、临时失败等情况设置自动重试机制。例如,通过 Spring Cloud 的 RetryTemplate
或 Feign 的重试配置,针对特定的异常类型进行有限次数的重试。这种机制可以在短暂的网络问题发生时恢复正常通信。2.2 幂等性与
重复请求控制:在支付、退款等操作中,网络异常可能导致同一请求被多次发送。使用唯一请求 ID,每次操作前检查是否已处理过该请
求。在数据库操作中使用乐观锁或唯一索引,确保数据不被重复更新。2.3 消息队列的可靠性保障:消息持久化、消息确认机制、重试与
死信队列。