2024年1月4日发(作者:营英纵)
小米官网业务流程总结
在线支付
使用易宝在线支付平台
按照易宝支付范围与易宝支付网关对接。
接收易宝的两种应答机制,针对点对点应答给予回复
处理多次应答照成的数据库重复确认
应答机制:应答机制是指当贵公司系统收到易宝支付的支付成功数据通知(服务器点对点通讯形式)时,必须回写以“success”开头的stream,易宝支付收到该stream,便认为贵公司已收到;否则将继续发送通知,直至收到。
hmac是一种对称密钥验证算法。通过请求参数拼接的字符串和贵公司在易宝支付的密钥生成。作用是防止恶意篡改请求数据。
预约和限时抢购
小米官网技术问题总结
Servlet和JSP的区别:
Servlet是SUN公司制定的一种用于扩展WEB服务器的功能组件,由于我们的WEB服务器原本是没有计算能力的,不能够处理动态资源。
JSP是SUN公司开发的一种服务器端动态页面生成技术,其主要组成部分是html元素以及少量的java代码(实际开发中都会被标签代替掉)。
区别:JSP侧重于视图表现,Servlet主要用于控制业务逻辑的走向。
JSP实质上也是是一个Servlet。
Servlet的生命周期
所谓的Servlet生命周期是指:Servlet容器如何去创建Servlet实例,
分配资源,调用其方法,最后销毁的过程。
1.实例化,调用默认的构造器,创建对象。创建对象的时机:(1).当请求到达Servlet容器时,如果要访问的Servlet没有对应的实例,则会创建,该实例只有一份。(2).启动服务器是,会检查web.xml中是否有相应的配置,如果有则创建对象。
2.初始化,Servlet容器创建Servlet实例后,会执行init()方法进行初始化。
3.执行service()方法。它会依据get/post请求调用对应的doGet()和doPost()方法。
4.掉用destroy()方法,释放资源。
Java中的反射机制
所谓的Java反射机制就是:Java的自我管理机制,它通过Class类来管理正在运行中的Java类。
Java反射机制具有以下功能:1.在运行时判断任意一个对象所属的类。
2.运行时构造任意一个类的对象。3.运行时判断任意一个类所具有的成员变量和方法。4.运行时调用任意一个方法。总之,反射机制动态的创建对象和编译,提高了程序的灵活性。
项目中的应用:请求中设置一个method参数,它的值使我们要调用的方法名字。然后写一个BaseServlet的类,通过反射来调用该方法。
ClassLoader
ClassLoader是类的加载器,用来加载Java类到JVM虚拟机当中去的。当我们的Java程序运行时,先会启动Java虚拟机,然后由ClassLoader负责将 .class 文件加载的虚拟机中。
它有两种加载方式:1.预先加载。 2.按需加载,即只有实例化一个类的时候才会被ClassLoader载入。
Hibernate的特点:
Hibernate 是一款ORM框架。ORM即对象关系映射,可以将数据库中的
记录转换为Object,开发人员可以通过对Object的操作完成对数据库的操作。
它的优点:1.将JDBC访问数据库的操作封装在底层,简化了操作。
2.采用了Java的反射机制,灵活了很高。
3.性能非常好,能够很好地映射关系型数据库中各种复杂的关系。
4.采用了延迟加载思想和缓存机制,大大的提高了性能。
Hibernate缓存问题:
1. Session何时刷出缓存:
1)事务提交时----();
2)Query查询时---();
3)手动调用se();
2、操作缓存相关方法
1)flush:刷出缓存,使用缓存中的数据更新数据库中的数据
2)clear:清空session中的所有数据
3)evict:清除指定对象在一级缓存中的引用
4)refresh:使用数据库中的数据覆盖缓存中的数据
Spring的优点:
1.使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
2.可以提供众多服务,事务管理,WS等。
的很好支持,方便面向切面编程。
4.对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA等
DI机制降低了业务对象替换的复杂性。
属于低侵入,代码污染极低。
的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或完全。
Spring的IOC是什么?AOP又是什么?
IOC(控制反转):程序中各个组件之间的关系不是由程序代码直接操控,而是由容器操控,控制权由应用代码中转到外部容器。
DI(依赖注入):程序中个组件的依赖关系不是在程序中写死的,而是在外部的配置文件中配置,然后再运行时通过容器动态注入。
AOP(面向切面编程):
C3P0连接池
连接池的原理:为数据库连接建立一个“缓冲池”,预先在缓冲池中存放一定数量的连接,当需要连接的时候就从“缓冲池“中去取,用完之后再放回来。
使用连接池的好处:1.可以资源重用,即可以重用连接,避免了频繁的创建、释放连接而引起的性能开销。
2.提高了系统的响应时间。
3.统一的管理连接,避免了数据连接泄露。
数据库的三范式
第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解。
第二范式:2NF是对记录的唯一性约束,要求记录有唯一标识,即实现唯一性。要求数据库表中的每个实例或行必须可以被惟一地区分,要求实体的属性完全依赖于主关键字。
第三范式:3NF是对字段冗余性的约束。
事物的处理方式
我们的事务处理都是放在业务层,对于同一个事务我们需要的是同一个Connection连接。如果我们将Connection连接参数放在业务层,明显是不合理的。那么如何处理?将事务封装,然后分离出去。也就说我们可以写一个帮助类来专门的处理事务,这样做必须依赖于c3p0连接池技术,同时要防止并发问题。如何处理并发,我们可以使用ThreadLocal线程本地变量来保存当前线程的连接。
2024年1月4日发(作者:营英纵)
小米官网业务流程总结
在线支付
使用易宝在线支付平台
按照易宝支付范围与易宝支付网关对接。
接收易宝的两种应答机制,针对点对点应答给予回复
处理多次应答照成的数据库重复确认
应答机制:应答机制是指当贵公司系统收到易宝支付的支付成功数据通知(服务器点对点通讯形式)时,必须回写以“success”开头的stream,易宝支付收到该stream,便认为贵公司已收到;否则将继续发送通知,直至收到。
hmac是一种对称密钥验证算法。通过请求参数拼接的字符串和贵公司在易宝支付的密钥生成。作用是防止恶意篡改请求数据。
预约和限时抢购
小米官网技术问题总结
Servlet和JSP的区别:
Servlet是SUN公司制定的一种用于扩展WEB服务器的功能组件,由于我们的WEB服务器原本是没有计算能力的,不能够处理动态资源。
JSP是SUN公司开发的一种服务器端动态页面生成技术,其主要组成部分是html元素以及少量的java代码(实际开发中都会被标签代替掉)。
区别:JSP侧重于视图表现,Servlet主要用于控制业务逻辑的走向。
JSP实质上也是是一个Servlet。
Servlet的生命周期
所谓的Servlet生命周期是指:Servlet容器如何去创建Servlet实例,
分配资源,调用其方法,最后销毁的过程。
1.实例化,调用默认的构造器,创建对象。创建对象的时机:(1).当请求到达Servlet容器时,如果要访问的Servlet没有对应的实例,则会创建,该实例只有一份。(2).启动服务器是,会检查web.xml中是否有相应的配置,如果有则创建对象。
2.初始化,Servlet容器创建Servlet实例后,会执行init()方法进行初始化。
3.执行service()方法。它会依据get/post请求调用对应的doGet()和doPost()方法。
4.掉用destroy()方法,释放资源。
Java中的反射机制
所谓的Java反射机制就是:Java的自我管理机制,它通过Class类来管理正在运行中的Java类。
Java反射机制具有以下功能:1.在运行时判断任意一个对象所属的类。
2.运行时构造任意一个类的对象。3.运行时判断任意一个类所具有的成员变量和方法。4.运行时调用任意一个方法。总之,反射机制动态的创建对象和编译,提高了程序的灵活性。
项目中的应用:请求中设置一个method参数,它的值使我们要调用的方法名字。然后写一个BaseServlet的类,通过反射来调用该方法。
ClassLoader
ClassLoader是类的加载器,用来加载Java类到JVM虚拟机当中去的。当我们的Java程序运行时,先会启动Java虚拟机,然后由ClassLoader负责将 .class 文件加载的虚拟机中。
它有两种加载方式:1.预先加载。 2.按需加载,即只有实例化一个类的时候才会被ClassLoader载入。
Hibernate的特点:
Hibernate 是一款ORM框架。ORM即对象关系映射,可以将数据库中的
记录转换为Object,开发人员可以通过对Object的操作完成对数据库的操作。
它的优点:1.将JDBC访问数据库的操作封装在底层,简化了操作。
2.采用了Java的反射机制,灵活了很高。
3.性能非常好,能够很好地映射关系型数据库中各种复杂的关系。
4.采用了延迟加载思想和缓存机制,大大的提高了性能。
Hibernate缓存问题:
1. Session何时刷出缓存:
1)事务提交时----();
2)Query查询时---();
3)手动调用se();
2、操作缓存相关方法
1)flush:刷出缓存,使用缓存中的数据更新数据库中的数据
2)clear:清空session中的所有数据
3)evict:清除指定对象在一级缓存中的引用
4)refresh:使用数据库中的数据覆盖缓存中的数据
Spring的优点:
1.使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
2.可以提供众多服务,事务管理,WS等。
的很好支持,方便面向切面编程。
4.对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA等
DI机制降低了业务对象替换的复杂性。
属于低侵入,代码污染极低。
的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或完全。
Spring的IOC是什么?AOP又是什么?
IOC(控制反转):程序中各个组件之间的关系不是由程序代码直接操控,而是由容器操控,控制权由应用代码中转到外部容器。
DI(依赖注入):程序中个组件的依赖关系不是在程序中写死的,而是在外部的配置文件中配置,然后再运行时通过容器动态注入。
AOP(面向切面编程):
C3P0连接池
连接池的原理:为数据库连接建立一个“缓冲池”,预先在缓冲池中存放一定数量的连接,当需要连接的时候就从“缓冲池“中去取,用完之后再放回来。
使用连接池的好处:1.可以资源重用,即可以重用连接,避免了频繁的创建、释放连接而引起的性能开销。
2.提高了系统的响应时间。
3.统一的管理连接,避免了数据连接泄露。
数据库的三范式
第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解。
第二范式:2NF是对记录的唯一性约束,要求记录有唯一标识,即实现唯一性。要求数据库表中的每个实例或行必须可以被惟一地区分,要求实体的属性完全依赖于主关键字。
第三范式:3NF是对字段冗余性的约束。
事物的处理方式
我们的事务处理都是放在业务层,对于同一个事务我们需要的是同一个Connection连接。如果我们将Connection连接参数放在业务层,明显是不合理的。那么如何处理?将事务封装,然后分离出去。也就说我们可以写一个帮助类来专门的处理事务,这样做必须依赖于c3p0连接池技术,同时要防止并发问题。如何处理并发,我们可以使用ThreadLocal线程本地变量来保存当前线程的连接。