分享好友 最新动态首页 最新动态分类 切换频道
Java Wechat Pay Project
2024-12-25 11:39
视频课程项目之微信支付系统——整个项目的完整生命周期。

开发流程——数据库设计——接口设计——开发、编码、部署功能到阿里云服务器、域名备案、解析到服务器、通过域名进行访问。

Java Wechat Pay Project

项目核心功能:

列表展示、微信扫描登录、微信扫描支付。

面试题1:你在这个项目中充当什么角色?

我在该项目中主要做:支付和扫描登录这些。

为什么不进行账号密码登录?用微信登录这样更加安全。

一、项目的创建

开发工具:IDEA

二、开发的完整开发流程

三、需求分析架构设计

功能:

视频列表、微信扫码登录、下单微信支付。

架构设计:

前后端分离—>方案:node渲染

(选择这个)动静分离—>方案:静态资源如html,js放在cdn或者nginx服务器上

技术选择:
后端技术选择:IDEA + Springboot2.0 + redis4.0+ HttpClient + mysql + ActiveMQ消息队列

前端技术选择:HTML5 + bootstrapt + jquery

测试要求:首页和视频详情页qps单机qps要求 2000+

将页面列表信息缓存到redis中去,这样减少对数据库的访问。

用户点击浏览器,前端发送AJAX请求到nginx里去,nginx再分发到后端服务器。

四、数据库设计

不关键的数据做缓存或者冗余,而不是做成实时的。

er图:

实体对象:矩形
属性:椭圆
关系:菱形

video表video_order表姡comment表chapter张episode节

字段冗余:

什么是字段冗余

冗余字段就是本存在一张表的字段,也出现在另一张表中。

什么时候选择字段冗余

看需求,如果影响不大,利于开发效率,可适当的增加冗余字段。

优点

不使用字段冗余,如果要查询所有数据,并用到其他表的一个字段,就要用join进行连接查询,那么当有很多表的时候,那么查询就很慢了。使用字段冗余,直接给表添加该字段就速度快多了。

缺点

如果对该字段进行增删改,对应也要对那个表的字段进行增删改,这时还要去了解所有表中的冗余字段,以防有些表中的字段没对应修改。

Mysql测试数据导入。

刚开始肯定不是设计的很全面的,要结合业务设计。

五、项目搭建、逆向工程构建、热部署、分层分包及资源文件处理、开源工具的选择/优缺点、接口配置文件自动映射到属性和实体类配置

项目依赖:

 

热部署。

项目目录结构:

 

pageHeper分页拦截器:

好处:开发方便,使用简单,使用aop方式进行分页,只需要引入相关依赖,然后PageHelper.startPage(page, size); 开启分页。
弊端:对于分库分表等情况下使用有问题,深度分页逻辑判断会复杂。

面试题2:写一个分页sql语句?

问面试官数据量有多大、表字段多不多,根据情况分为普通分页与深度分页:

如果表数据万级别的,如果id自增,那么不使用limit去查询,而是通过where id条件过滤或者特定的字段对前面无用的数据进行过滤然后进行查询,因为深度分页会牵扯磁盘IO操作,影响性能。

并且应该指定字段去查询,而不是用*去全部查询。

 
 

封装通用工具类,如缓存操作等、利于解耦,如切换缓存框架。

MySQL逆向工程。

接口配置文件自动映射到属性和实体类配置:

利用配置文件进行解耦。

使用@value注解配置文件自动映射到属性和实体类。

添加 @Component或者Configuration 注解。

使用 @PropertySource 注解指定配置文件位置:(属性名称规范: 大模块.子模块.属性名)

@PropertySource(value=“classpath:application.properties”)

必须 通过注入IOC对象Resource 进来 , 才能在类中使用获取的配置文件值。

六、视频列表接口开发

七、整合Mybatis访问数据库和阿里巴巴数据源

整合mysql 加入mybatis依赖,和加入alibaba druid数据源。

加入配置文件

 

八、使用Mybatis注解开发视频列表增删改查

1、控制台打印sql语句
#增加打印sql语句,一般用于本地开发测试
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

 

九、Vidoe相关接口完善和规范协议

 

十、动态Sql语句Mybaties SqlProvider

面试题3:如果一张表有很多字段,就只是单单的要更新几个属性,需要怎么实现?

 

面试题4:为什么包装类型的属性才能进行!null判断?

因为包装类型需要通过new在堆中分配内存,然后将对象放入堆中,而基本类型是直接将变量值放入栈中,两者的初始值不同,例如int初始值为0,而Integer的初始值为null,所以包装类型能够进行!null的判断。

十一、PageHelper分页插件使用

 

PageHelper分页大体流程:

SqlSessionFactory——>SqlSession——>executor—| 拦截器 |—>statement。

拦截器/Plugins-Interceptor:limit ?,? (ThreadLocal获取用户变量)

十二、JWT微服务下的用户登录权限校验

十三、单机和分布式应用的登录检验讲解

 
 

用户访问浏览器进行登录操作,登录成功后,浏览器会存储登录成功的凭证,如果是在负载均衡分发的多节点下,之前访问的节点1,当要访问节点2的时候,发现节点2没有存储sessionid,这样就得重新登录了。

解决方案一:tomcat开启session 共享,但是每个session都会占用内存,如果节点1的一百个用户都这样来访问节点2的话,那么节点1的所有session都要复制到节点2上。当用户数达到了百万级别以上的话,那么这种方式就不可行了。

解决方案二:redis集群存储登录token,用户登录成功后就生成一个token,可以是在节点中通过UUID来生成

一个64/128位的随机字符串,然后将该字符串保存到redis中去,浏览器访问服务器节点,服务器从redis中去拿token,然后用户第一次登录成功保存的token就和redis中token进行校验,如果校验存在就表示登录成功,如果不对就不成功。所以现在不管是在哪个节点下去访问,该节点只要从redis中去取,然后进行校验就可以了。不过这种方案也有缺点,那就是在高并发环境下会造成带宽的损失。

解决方案三:通过加解密算法生成token校验,用户登录成功,服务器拿到用户的id等关键信息,再通过密钥进行加密,然后返回给用户,后续用户访问就将保存的token传到服务器上,通过服务器上的解密算法进行逆向解密,然后进行比较,比较结果一样,那么表明用户曾经登录成功过。由于每个服务器的解密算法都是一样的,所以只要解密成功就算是登录过。

面试题5:session、cookie、token的区别?

session:

多个用户登录系统,系统为了辨别用户,就要为每个用户发一个标识session id ,这是一串随机字符串,用户越多,服务器的开销就越大。

此时就需要通过集群,但是如果是这样一种情况:例如登录是在服务器A上进行的,那么session id自然是在服务器A上的,这时候如果下一个请求被转发到服务器B上呢?服务器B可没有该session id啊。此时要怎么办?这个就是典型的分布式session一致性问题?如果没有解决这个问题,那么用户将出现频繁的登录操作。

如何保证分布式session的一致性呢?

参考链接:https://blog.csdn.net/u010028869/article/details/50773174?ref=myread#commentBox

cookie:

一个文本文件,保存在浏览器里的数据,也就是保存在客户端磁盘空间里,cookie保存着用户登录的数据,方便下一次访问浏览器,为确保不被恶意使用,通常会对cookie的数量进行限制。

cookie可以在本机进行修改,故没有比session安全。

token:

通过上面的解释我们大概能知道session是为了解决用户与服务器之间的验证问题:

 
 

对于验证还有另外一种很常用的解决方式:通过令牌token进行无状态的签名验证。

参考链接:https://www.cnblogs.com/moyand/p/9047978.html

十四、微服务下登录检验解决方案 JWT讲解

 

十五、登录检验JWT实战之封装通用方法

最新文章
北海网站制作公众号开发:功能开发与定制,让你的公众号与众不同!北海定期更新和推广,保持公众号的活跃度
云初科技网站制作|抖音推广小程序商城系统|公众号制作电话:13292208571(微信)点击一键拨打电话:13292208571网站建设公司 企业网站制作 微信小程序制作 如何做好网站建设方案 建网站费用 网站设计建设 中小企业网站建设设计制作公司主营
最难一肖一码100|词语释义解释落实
探索与挑战本文将围绕关键词“最难一肖一码”展开讨论,通过对相关词语的释义解释,强调其重要性,并探讨如何在实际生活中进行落实,我们将深入探讨“最难一肖一码”背后的含义,以及如何将其理念付诸实践,以实现个人与社会的共同进步。1
擎朗智能受邀参加百度世界大会,共拓具身服务新未来
11月12日,擎朗智能携旗下爆款机器人T10、T9受邀亮相“应用来了,2024百度世界大会”,大会上展示了生态价值链合作伙伴的创新技术、应用场景。这是擎朗T10自升级服务后的首次线下活动亮相,可爱的人机互动吸睛无数。大会现场,T10作为“门
用AI工具生成惊艳美女写真,超简单操作攻略!
在这个图像为王的时代,越来越多人对于美的追求趋于极致,而现代科技的进步给人们提供了更加便捷的满足方式。你是否曾想过,自己也能轻松创作出令人惊叹的美女写真?想象一下,今天你只需轻点几下,就能生成属于自己的唯美AI美女写真,虽说
阿里云+wordpress搭建个人博客网站【小白专用的图文教程】- 【转发】 AWS云和WordPress搭建个人博客网站
在阿里云上搭建使用个人博客主要分为以下几个步骤:1、购买阿里云ECS主机2、购买域名3、申请备案4、环境配置5、安装wordpress6、域名解析声明一下,本人对服务器端的知识不是很熟悉,但一心想做个自己的个人网站装一下哔,特此记录一下完整
怎样判断SEO关键词的竞争难易程度?
​​关键词选择最核心的要求是搜索次数多,竞争程度小。搜索次数可以通过搜索引擎本身提供的关键词工具查看,而竞争程度判断起来就要复杂得多。在关键词的选择过程中,SEO会先对选中的关键词分析研究,再判断它是否合适,研究过程中发现竞
蛙漫wanna2024
蛙漫wanna2024是一款非常方便的漫画阅读工具类软件,这款软件包括了海量的漫画作品,这些作品全部都是正版的,用户在阅读作品的时候还可以和作者沟通交流,也可以对作品进行评价,点赞或者分享到其他的社交平台。1、第一步:下载漫蛙漫画Ap
工具--Typora详解
1、MarkDown是什么Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。Markdown 语言在 2004 由约翰·格鲁伯(英语:John Gruber)创建。Markdown 编写的文档可以导出 HTML 、Word、图
如何使用SEO白帽手法快速提高排名?有哪些方法?
  万事开头难,新站点的SEO优化也相对艰难。最先,一个新的网站并没有信誉度,并没有人气值,更别提受众群体了。第二,百度搜索引擎对新站点有另一个评定期。新站优化稍不留神,可能导致收站耽误。排名耽误等诸多问题。怎样在并没有信誉
软件开发 --- Prometheus 之初体验
Prometheus 是一个开源的监控和告警系统,专门用于收集和存储时序数据(Time Series Data)。它常用于监控应用程序、服务器和基础设施的性能,能够实时采集各种指标(如 CPU 使用率、内存占用、请求响应时间等)。Prometheus 提供了强大的
相关文章
推荐文章
发表评论
0评