网站建设兼职劳务协议书,安卓手机做服务器网站,接做网站需要问什么软件,山东网站备案注意事项一、Java面试题十二天
1.为什么在阿里巴巴Java开发手册中强制要求使用包装类型定义属性呢#xff1f;
默认值问题#xff1a;使用基本数据类型定义属性时#xff0c;如果没有给属性赋初始值#xff0c;会使用默认值#xff08;如 int 的默认值为 0#xff09;#xff…一、Java面试题十二天
1.为什么在阿里巴巴Java开发手册中强制要求使用包装类型定义属性呢
默认值问题使用基本数据类型定义属性时如果没有给属性赋初始值会使用默认值如 int 的默认值为 0而使用包装类型定义属性如果没有给属性赋初始值属性的值为 null这样可以更加清晰地表达属性的状态在一些业务场景上null是有实际业务含义的。 拆箱问题在一些特定场景下如果使用基本数据类型定义属性需要进行多次装箱和拆箱操作这个操作会带来额外的性能开销和代码复杂度。而使用包装类型定义属性可以避免这个问题提高代码的效率和可读性。在进行拆箱操作时如果包装类对象为null会导致NullPointerException异常。 泛型中只能使用对象Java 中的泛型中只能使用对象类型如果要在泛型编程中使用基本类型就必须使用对应的包装类型。 更多的API包装类型提供了一些额外方法和属性比如 equals()、hashCode()、toString()这些方法在某些特定场景中会比较有用。
2.8招让接口性能提升100倍
池化思想
如果你每次需要用到线程都去创建就会有增加一定的耗时而线程池可以重复利用线程避免不必要的耗时。
比如TCP三次握手它为了减少性能损耗引入了Keep-Alive长连接避免频繁的创建和销毁连接。
拒绝阻塞等待
如果你调用一个系统B的接口但是它处理业务逻辑耗时需要10s甚至更多。然后你是一直阻塞等待直到系统B的下游接口返回再继续你的下一步操作吗这样显然不合理。
参考IO多路复用模型。即我们不用阻塞等待系统B的接口而是先去做别的操作。等系统B的接口处理完通过事件回调通知我们接口收到通知再进行对应的业务操作即可。
远程调用由串行改为并行
比如设计一个商城首页接口需要查商品信息、营销信息、用户信息等等。如果是串行一个一个查那耗时就比较大了。这种场景是可以改为并行调用的降低接口耗时。
锁粒度避免过粗
在高并发场景为了防止超卖等情况我们经常需要加锁来保护共享资源。但是如果加锁的粒度过粗是很影响接口性能的。
不管你是synchronized加锁还是redis分布式锁只需要在共享临界资源加锁即可不涉及共享资源的就不必要加锁。
耗时操作考虑放到异步执行
耗时操作考虑用异步处理这样可以降低接口耗时。比如用户注册成功后短信邮件通知是可以异步处理的。
使用缓存
把要查的数据提前放好到缓存里面需要时直接查缓存而避免去查数据库或者计算的过程。
提前初始化到缓存
预取思想很容易理解就是提前把要计算查询的数据初始化到缓存。如果你在未来某个时间需要用到某个经过复杂计算的数据才实时去计算的话可能耗时比较大。这时候我们可以采取预取思想提前把将来可能需要的数据计算好放到缓存中等需要的时候去缓存取就行。这将大幅度提高接口性能。
压缩传输内容
压缩传输内容传输报文变得更小因此传输会更快。