文章目录
- 一、Java Serializable的作用
- 二、Equals和==的区别
- 三、前后端分离开发,日志应该如何进行记录,在出现问题的时候,方便定位问题?
- 四、数据库访问的时候,在一个项目中是否可以同时使用Mybatis,JPA,JDBC等多种持久化技术?如可以,事务如何处理?
- 五、接口保证幂等性,如何做的
- 六、@transcation事务应放置在什么位置,在项目中如碰到事务什么原因不生效?
- 3.事务不生效的原因
- 七、如阅读过源码,分析一下该源码给你的体会?是否参加过开源代码?
- 八、扫码登录的原理
- 九、Git分支应如何管理?
- 十、实体类为未来参与排序等集合的操作操作,一般要重新哪些方法?有哪些注意点?
一、Java Serializable的作用
1.什么是序列化
序列化:把对象转换为字节序列的过程称为对象的序列化。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化。
2.什么情况需要序列化
当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
当你想用套接字在网络上传送对象的时候;
3.怎么实现序列化
如果我们想把一个类实现序列化,只需要实现实现Serializable接口即可。
4.疑问
我为什么不序列化也可以把对象写入文件中?
如果一个类实现了Serializable接口,在序列化的时候静态属性是不随序列化修改的,如果有个静态属性,一开始是static int = 100,写入到一个文件属性是100,此后修改了代码改为200,再反序列化,从文件读取这个对象,此时的序列化是200.
实现序列化的时候一定要给serialVersionUID赋值,如果不赋值,在反序列化之前给这个类添加了新的属性,就会报InvalidClassException异常
二、Equals和==的区别
1、== 操作符既可以用于比较基本的数据类型,也可以用于比较对象,而equals只可以用于对象之间的比较
2、在比较String类型的对象时,== 操作符的原理只有两个变量是同一对象的引用时才会返回true,而equals方法只要两个变量的内容相同则返回true
3、其他类型的对象进行比较时,equals方法默认的原理是判断两者的内存地址是否相同,所以默认情况下与== 操作符返回的结果相同,但是这里应该发现差别,也就是equals方法可以被重写—用户可以定制自己的equals方法,而== 操作符不能被重写.
三、前后端分离开发,日志应该如何进行记录,在出现问题的时候,方便定位问题?
日志有哪些级别:等级由低到高:DEBUG < INFO < WARN < ERROR < FATAL
常用的日志框架 log4j可以配置生成日志文件到指定文件。同时可以配置日志按天为周期,或者按照日志文件大小拆分为单个文件。
前后端分离的项目需要记录好各种必要参数,尽量简单明了如编号,来源,当前ip,接口名,参数,回参等出现问题时能判断当前问题大致范围。
四、数据库访问的时候,在一个项目中是否可以同时使用Mybatis,JPA,JDBC等多种持久化技术?如可以,事务如何处理?
jpa和mybatis