外格充电中。。 ID:304959 复制

外格充电中。。

资深java开发工程师 · 5年经验 · 美团
城市北京 海淀 日薪500元/8h 时间 下班后周六周日
0
累计接单
0
用户评价
0
被收藏

技术能力

AI 技能提取 | Redis Java 高并发 Spring Boot Spring Cloud Spring Node.js MyBatis MySQL Oracle Nginx Vue JavaScript Docker JMeter
1、 熟悉java基础 :包括面向对象的、 IO流、 多线程、高并发(juc)、 网络编程( SOCKET)
2、 前端技术 :html、 css、 JavaScript、jquery、json、 xml 、bootstrap,vue ,thymeleaf,element-ui,es6,,node.js、
3、 数据库 :mysql、 Oracle、 sqlserver,redis熟悉各种sql查询与优化
4、java框架 :spring、 springmvc、 mybatis、 springboot、 springcloud、 nginx,redis,mq、、maven、git、svn
6、 linux:熟悉常用命令,能在vmware上部署项目、 nginx、 redis等,docker
5、熟悉工具:idea、eclipse、jmeter、navicat、RedisDesktopManage、xshell、postman、swagger、jvisualvm、VirtualBox、vagrant、vscode、hbuild

项目经验

项目时间: 2020-02 ~ 2021-07
项目名称:美妆电商
项目简介:基于SpringBoot + SpringCloud Alibaba + MyBatis Plus等框架的分布式微服务商城系统;基于docker环境部署、nginx反向代理和动静分离,MySQL作为数据库,Redis作为缓存和分布式锁使用、elasticSearch作为检索服务等;实现功能:第三方登录、商品SPU/SKU管理、商品上架、商品搜索、购物车、订单服务、第三方支付、秒杀服务等。
项目规模:5-6
项目职责:
1.运维:将mysql、redis、ngxin,elasticsearch、kibana、nacos(注册中心)、sentinal等都部署到docker上
2.商品模块:通过thymeleaf渲染显示商品的首页 ,由于吞吐量较小,为了提高系统性能,从以下方面进行性能调优:
1)为经常查询的字段建立索引。
2)用nginx动静分离的手段。
3)为jvm配置合适的参数及垃圾回收算法。
4)将一些不变的数据放入redis缓存中,但查询的过程可能遇见redis缓存穿透、击穿、雪崩等现象,用到redis分布式锁来解决
5)工具:jmeter,jvisualvm、idea、

3.搜索模块:由于吞吐量较小,商品模块和搜索模块和库存模块进行elasticsearch搜索
1)将数据库的商品模块和是否有库存等封装成vo存到elasticsearch中。
2) 将elasticsearch查询出来封装model渲染到搜索框和一级商品和二级商品。
3)将通过关键字查询,三级商品id,品牌id,分类,商品属性,综合排序,销量,价格,价格区间等条件进行elasticsearch的查询,然后通过thymeleaf整合到前端中。
4)工具:kibana,elasticsearch。

4.商品详情模块:(CompletableFuture之runAsync,supplyAsync,thenApplyAsync,future01.thenCombineAsync(组合两个线程,两个都完成任务),applyToEitherAsync(组合两个线程,只要有一个线程完成任务),allOf(取查询的最大时间),anyOf.get(等待所有线程都执行完),anyOf(只要有一个任务完成后))。
1)通过点击每个商品,跳转到商品的详情页。
2)查询数据库的info(图片,标题,价格),图片,该商品销售属性(属性名,属性多个值),描述(商品图片),该商品规格参数信息(组名,属性名,属性值)

5.购物车模块:由于吞吐量较小,为解决响应速度问题
1)将购物车的数据库数据查询redis中,redis的数据结构为<用户id,map<商品skuid,购物车项>>
2)用juc,创建合适的线程池参数,调用多查询的异步编排调优(CompletableFuture之runAsync)。
6.认证模块:用户的登录(用户名,密码的登录和微博的第三方授权登录)
7.订单模块
1)点完结算,首先对订单所有的页面进行(订单确认页,支付页,列表页,详情页)的登录拦截功能(拦截器)。
1)订单确认页通过异步编排调优查询(地址信息,购物车信息,是否有库存,商品总价,运费等信息);
a) 提交完订单后用到防重提交(接口幂等性(生成的uuid保存在redis中,和前端页面中进行对比)),保存订单,然后进行锁定库存,将对应的商品和库存号在临时变量中减相应的数量,告诉rabbitmq锁定库存成功,当过了一段时间后,但也要遇到库存需要解锁的情况(1、订单工作表里面没有这个订单2、有这个订单,但订单状态已取消),则通知rabbitmq需要解锁库存,此时解锁成功,临时变量恢复到原来的数量。
b)订单创建成功后,库存锁成功后,当过了一段时间待支付,则通知rabbimq进行关单。
如何保证消息一致性(不丢失):给数据库创建一个关于mq的表(消息内容,发送状态),,每一个发送的消息在数据中做好记录,生产者消息已经发送到队列中的确认机制,队列中的消息已被消费者接收的手动ack确认机制,如果发送消息失败,定期扫描数据库表,定期将失败的消息再次发送
就可以调用第三方接口进行支付 (微信、支付宝支付), 根据登录用户的信息 ,随机生成收款人 地址信息 ,然后进行支付,支付完调回到我的订单。
8.秒杀模块:
1)使用定时器对近几天的秒杀的上架商品从数据库查询到redis中,用分布式锁,锁已经执行完成,释放锁,其他人获取到就会拿到最新的状态,
客服二维码

没找到合适的人才?

扫码添加客服极速匹配,或直接发布需求让更多人才主动报名

微信沟通 立即沟通 立即预约
平台担保交易 · 1小时内不满意可退款
微信扫码,建群沟通

平台信誉与实力

基于 35,336 需求方信任

  • 支付宝企业信用分 优秀 评级
  • 市场份额约占全行业三分之一
  • 程序员兼职行业全能首选平台
查看平台资质详情
相似人才推荐: