ID:284282

Ronin

Java工程师

  • 公司信息:
  • 某独角兽电商平台
  • 工作经验:
  • 5年
  • 兼职日薪:
  • 800元/8小时
  • 兼职时间:
  • 下班后
  • 周六
  • 周日
  • 可工作日远程
  • 所在区域:
  • 上海
  • 静安

技术能力

1、 熟悉java基础 :包括面向对象的、 IO流、 多线程、高并发(juc)、 网络编程( SOCKET)
2、 前端技术 :html、 css、 JavaScript、jquery、Angular、 xml 、bootstrap、vue、thymeleaf、element-ui
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、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中,用分布式锁,锁已经执行完成,释放锁,其他人获取到就会拿到最新的状态,

案例展示

  • 美妆电商

    美妆电商

    项目简介:基于SpringBoot + SpringCloud Alibaba + MyBatis Plus等框架的分布式微服务商城系统;基于docker环境部署、nginx反向代理和动静分离,MySQL作为数据库,Redis作为缓存和分布式锁使用、elasticSearch作为

  • 基于若依的后台管理平台

    基于若依的后台管理平台

    基于若依开发的后台管理系统,熟悉市场上所有管理后台的开发流程,深入理解各种加密方式和证书登录,可帮助新入行的同学快速学习企业级开发

查看案例列表(含更多 0 个案例)

信用行为

  • 接单
    0
  • 评价
    0
  • 收藏
    0
微信扫码,建群沟通

发布任务

企业点击发布任务,工程师会在任务下报名,招聘专员也会在1小时内与您联系,1小时内精准确定人才

微信接收人才推送

关注猿急送微信平台,接收实时人才推送

接收人才推送
联系需求方端客服
联系需求方端客服