cwj

高级Java 工程师
起点人力资源股份有限公司 · 6年经验
cwj
日薪: ¥500/8h
地点: 武汉 全区
时间: 下班后周六周日可工作日远程
ID:235222 复制

0
接单数
0
评价数
0
收藏数

AI 技能提取 | 微服务 Spring MyBatis MySQL Redis PostgreSQL Git Maven 分布式 Spring Boot Spring Cloud Dubbo RabbitMQ RocketMQ React
1.熟练掌握JavaSE基础知识,熟悉多线程,熟悉常用的设计模式等
2.熟练掌握IDE/Git,Maven等开发及版本控制工具
4.熟悉使用MySQL,PostgreSQL,SqlServer等关系型数据库,熟练使用Redis等非关系型数据库
5.熟练掌握SpringMVC,Spring,Mybatis等开源框架。
6.熟练掌握集合以及知悉其实现原理
7.熟悉SpringBoot,SpringCloud,Dubbo, WebService等微服务框架。
8.熟悉RocketMQ,RabbitMQ消息中间件
9.深入理解微服务架构下,服务之间相互调用而产生的数据不一致问题原因以及问题解决方案。
10.熟悉使用seata分布式事务解决框架。
11.了解Socket,Netty,NIO,Http,WebSocket,zookeeper
12.熟悉html、Css、Ajax、JavaScript、Jquery、react等前端技术

华康保健品商城 (线上域名:http://hkh.co.nz/)
项目描述:
华康保健品商城是一个B2C模式的在线购物平台,为用户提供便捷的网上购买方式,让用户更加方便的享受优质的产品。
使用技术与功能:
华康保健品商城采用前后端分离技术,后台采用springboot+springcloud框架, 使用mybatis数据库, redis缓存, ElasticSearch搜索引擎, RabbitMQ, FastDFS分布式文件存储系统,前端使用用vue框架。

主要服务与功能:
商品服务:提供对商品的增删改查等功能。
订单服务:提供新增订单,修改订单状态,查询订单等功能。
会员服务: 提供 注册,删除,修改会员,登录验证等功能。
支付服务:提供微信支付等支付通道。
文件服务:提供对文件的增删改查等功能。
ES服务:将数据库中的商品数据导入到ES中,客户端从ES中获取商品信息,进行页面展示
秒杀服务:将秒杀商品数据导入到redis缓存中,提供秒杀服务等功能。
Canal服务:当数据库中商品的库存数据,或者用户的权限缓存,以及广告内容等缓存数据发生变化时,及时刷新ES或者redis中的数据。

个人贡献:负责华康保健品商城架构的搭建,权限控制,秒杀,微信支付等功能的实现,以及分布式事务的解决。
项目父工程下包含common工程, common-db工程,eureka工程,网关gateway工程, service工程,service-api工程,web工程。
Common工程封装一些工具类,以及依赖一些公共jar,例如spring-boot-starter-web,redis,fastjson,eureka-client,避免在service工程下的各个子工程进行多次maven依赖不同的jar,,只需要依赖一次Common工程即可。
Common-db工程封装数据库maven依赖,有需要连接数据库操作的service可以通过依赖Common-db工程,对数据库进行连接操作。
Gateway工程:作为项目的网关,页面所有的请求,都需要经过网关,通过网关,可以对线上做第二次限流,以及对用户请求进行权限控制等操作。
Service工程:商品,订单,会员等服务工程的父工程。
service-api工程:提供对应服务的pojo(与表之间对应的javaBean),以及feign,方便不同服务之间调用时,只需要引入被调用的服务的service-api依赖即可。

在整个项目的权限控制中采用JWT+ springscrity进行权限的控制,当服务启动时,会将一个自定义实现了PermissionEvaluator的类注入到Bean容器,同时开启WebSecurity,以及GlobalMethodSecurity,并且获取数据库角色权限关系表中的数据,将数据库角色权限表的数据缓存到redis中,用户进行成功登录之后,会产生一个token返回给前端,token是通过JWT将用户的角色等信息作为载荷,以及Keytool生成的jks文件中的私钥作为加盐,生成的一串字符串。当用户请求经过网关到达对应的服务之后,对应的服务会通过实现一个filter,拦截所有的请求,并将请求中的token信息封装到到一个自定义实现了org.springframework.security.core.Authentication接口的类中,并将这个自定义的实现类设置为SecurityContext中Authentication属性的属性值,当请求对应的controller上没有@PreAuthorize注解时,则不会对用户请求进行权限控制,如果请求对应的controller有@PreAuthorize注解,则会在自定义的PermissionEvaluator的实现类中校验用户是否有权限访问该服务接口,在校验的过程中,通过JWT API以及Keytool生成的jks文件中的公钥解析token,即可获取到用户的角色,通过用户角色信息在redis中获取该角色对应的权限路劲,最后通过对比@PreAuthorize注解传入的路劲是否被包含在redis中获取权限路劲,即可知道用户是否有权限访问该服务接口。

在秒杀中,用户可以通过界面看到不同时间段下的秒杀商品,并可以选择当前时间段内的秒杀商品进行秒杀。通过定时任务将符合条件的秒杀商品添加到redis缓存中,之所以将秒杀商品添加到redis缓存中,是因为在秒杀抢购的过程中,为了避免因并发量过多,频繁访问数据库,给服务器造成过大压力,甚至导致服务崩溃,因此将秒杀商品添加到redis缓存,redis采用hash的数据类型进行保存秒杀商品数据,时间段(2019061812, 2019061814)作为
cwj ID:235222 复制

cwj

高级Java 工程师 · 6年经验 · 起点人力资源股份有限公司
城市武汉 全区 日薪500元/8h 时间 下班后周六周日可工作日远程
0
累计接单
0
用户评价
0
被收藏

信用行为

0
接单数
0
评价数
0
收藏数

技术能力

AI 技能提取 | 微服务 Spring MyBatis MySQL Redis PostgreSQL Git Maven 分布式 Spring Boot Spring Cloud Dubbo RabbitMQ RocketMQ React
1.熟练掌握JavaSE基础知识,熟悉多线程,熟悉常用的设计模式等
2.熟练掌握IDE/Git,Maven等开发及版本控制工具
4.熟悉使用MySQL,PostgreSQL,SqlServer等关系型数据库,熟练使用Redis等非关系型数据库
5.熟练掌握SpringMVC,Spring,Mybatis等开源框架。
6.熟练掌握集合以及知悉其实现原理
7.熟悉SpringBoot,SpringCloud,Dubbo, WebService等微服务框架。
8.熟悉RocketMQ,RabbitMQ消息中间件
9.深入理解微服务架构下,服务之间相互调用而产生的数据不一致问题原因以及问题解决方案。
10.熟悉使用seata分布式事务解决框架。
11.了解Socket,Netty,NIO,Http,WebSocket,zookeeper
12.熟悉html、Css、Ajax、JavaScript、Jquery、react等前端技术

项目经验

华康保健品商城 (线上域名:http://hkh.co.nz/)
项目描述:
华康保健品商城是一个B2C模式的在线购物平台,为用户提供便捷的网上购买方式,让用户更加方便的享受优质的产品。
使用技术与功能:
华康保健品商城采用前后端分离技术,后台采用springboot+springcloud框架, 使用mybatis数据库, redis缓存, ElasticSearch搜索引擎, RabbitMQ, FastDFS分布式文件存储系统,前端使用用vue框架。

主要服务与功能:
商品服务:提供对商品的增删改查等功能。
订单服务:提供新增订单,修改订单状态,查询订单等功能。
会员服务: 提供 注册,删除,修改会员,登录验证等功能。
支付服务:提供微信支付等支付通道。
文件服务:提供对文件的增删改查等功能。
ES服务:将数据库中的商品数据导入到ES中,客户端从ES中获取商品信息,进行页面展示
秒杀服务:将秒杀商品数据导入到redis缓存中,提供秒杀服务等功能。
Canal服务:当数据库中商品的库存数据,或者用户的权限缓存,以及广告内容等缓存数据发生变化时,及时刷新ES或者redis中的数据。

个人贡献:负责华康保健品商城架构的搭建,权限控制,秒杀,微信支付等功能的实现,以及分布式事务的解决。
项目父工程下包含common工程, common-db工程,eureka工程,网关gateway工程, service工程,service-api工程,web工程。
Common工程封装一些工具类,以及依赖一些公共jar,例如spring-boot-starter-web,redis,fastjson,eureka-client,避免在service工程下的各个子工程进行多次maven依赖不同的jar,,只需要依赖一次Common工程即可。
Common-db工程封装数据库maven依赖,有需要连接数据库操作的service可以通过依赖Common-db工程,对数据库进行连接操作。
Gateway工程:作为项目的网关,页面所有的请求,都需要经过网关,通过网关,可以对线上做第二次限流,以及对用户请求进行权限控制等操作。
Service工程:商品,订单,会员等服务工程的父工程。
service-api工程:提供对应服务的pojo(与表之间对应的javaBean),以及feign,方便不同服务之间调用时,只需要引入被调用的服务的service-api依赖即可。

在整个项目的权限控制中采用JWT+ springscrity进行权限的控制,当服务启动时,会将一个自定义实现了PermissionEvaluator的类注入到Bean容器,同时开启WebSecurity,以及GlobalMethodSecurity,并且获取数据库角色权限关系表中的数据,将数据库角色权限表的数据缓存到redis中,用户进行成功登录之后,会产生一个token返回给前端,token是通过JWT将用户的角色等信息作为载荷,以及Keytool生成的jks文件中的私钥作为加盐,生成的一串字符串。当用户请求经过网关到达对应的服务之后,对应的服务会通过实现一个filter,拦截所有的请求,并将请求中的token信息封装到到一个自定义实现了org.springframework.security.core.Authentication接口的类中,并将这个自定义的实现类设置为SecurityContext中Authentication属性的属性值,当请求对应的controller上没有@PreAuthorize注解时,则不会对用户请求进行权限控制,如果请求对应的controller有@PreAuthorize注解,则会在自定义的PermissionEvaluator的实现类中校验用户是否有权限访问该服务接口,在校验的过程中,通过JWT API以及Keytool生成的jks文件中的公钥解析token,即可获取到用户的角色,通过用户角色信息在redis中获取该角色对应的权限路劲,最后通过对比@PreAuthorize注解传入的路劲是否被包含在redis中获取权限路劲,即可知道用户是否有权限访问该服务接口。

在秒杀中,用户可以通过界面看到不同时间段下的秒杀商品,并可以选择当前时间段内的秒杀商品进行秒杀。通过定时任务将符合条件的秒杀商品添加到redis缓存中,之所以将秒杀商品添加到redis缓存中,是因为在秒杀抢购的过程中,为了避免因并发量过多,频繁访问数据库,给服务器造成过大压力,甚至导致服务崩溃,因此将秒杀商品添加到redis缓存,redis采用hash的数据类型进行保存秒杀商品数据,时间段(2019061812, 2019061814)作为
客服二维码

没找到合适的人才?

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

平台担保交易 · 1小时内不满意可退款

平台信誉与实力

基于 35,336 需求方信任

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