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