1、微服务架构:熟悉SpringBoot、SpringCloudAlibaba、Nacos 等技术栈,了解高可用、分布式微服务系统。,2、分布式系统与消息队列:熟悉RabbitMQ、Redis 等消息中间件,了解服务之间的异步通信、重试机制、消息幂等性以及死信队列处理,确保系统的高可靠性和一致性。,3、数据库与数据处理:熟悉MySQL、MyBatis,进行复杂业务数据的查询优化和数据建模。熟悉Mysql 索引数据结构等、了解MyBatis的多级缓存等。,4、前后端全栈开发:能够独立完成从数据库设计、后端业务逻辑实现到前端页面交互的全栈开发(java、Vue)。,5、容器化与运维:能够独立使用Docker、Nginx 进行应用容器化部署,编写复杂的Dockerfile文件。,6、MATLAB与Python算法集成:能够独立将Matlab算法集成java项目中,并解决MATLAB与Java集成中的方法重载、内置函数冲突问题,优化算法调用稳定性。,7、云计算与存储:能够独立使用阿里云OSS、Minio等对象存储服务,处理大规模文件和数据的存储与访问。
项目介绍:配用电方向的系统:安全监测分析与风险防控决策系统、蒙东自备电厂、有源客户安全检查在线协同管控系统。系统的内容主要是关于智慧运维、智能决策、智能调控等方向。
所用技术: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 消息队列的可靠性保障:消息持久化、消息确认机制、重试与
死信队列。