高效代码开发50例学习总结

目录

一. 常量与变量

二. 类与对象

三. 方法

四. 表达式与字符串

五. 数组和集合

六. 异常

七. 缓冲区

八. 线程


一. 常量与变量

1. 直接使用常量本身赋值,而不是直接创建一个新对象。后者一定会在堆内创建一个新对象,前者可能使用到常量池。

2. 当类成员变量无需改变时,使用常量static限制住。 因为对象中的普通成员变量会每个对象一份,而静态变量只有一份,避免浪费堆内内存。

3. 不要基本数据类型和包装类型交替使用。尤其是循环内,尽量使用包装类型为好,可以自己判空,避免null包装类型赋值给基本数据类型,直接产生NPE。

4. 如果变量的初始值一定会被覆盖,就没必要给变量付初始值。因为初始值会申请堆内存,也会增加垃圾回收器工作量。

5. 尽量使用函数内的基本类型的临时变量。

        函数内,基本类型的临时变量和参数保存在栈中,访问较快。

        函数内,对象类型临时变量和参数,其引用保存在栈中,内容保存在堆中,访问较慢。

        类内,所有类型的成员变量都保存在堆中,访问较慢。

        如果可以的话,尽量在函数内使用基本类型的临时变量和参数,保证访问相对较快。

6. 尽量不要在循环体外定义变量

新版jdk优化后,循环体内体外定义的变量效率都是一样的,这里是原本循环体内频繁创建会增加垃圾回收压力和浪费堆空间。但编译器堆这一部分做了优化,字节码创建的变量实际是在循环体外的。不过在循环体外定义变量,不符合"局部变量作用域最小化"的原则,可能延长对象的生命周期延缓垃圾回收。

7. 不可变的静态变量,虽然需要支持多线程访问,也可以使用非线程安全类。可以加快访问速度。

8. 不可变的成员变量,虽然需要支持多线程访问, 也可以使用非线程安全类。 可以加快访问速度。

二. 类与对象

1. 不推荐使用json来完成对象converter。利用json对象转换为字符串,在将字符串装换为对象,功能上可以实现,但是性能存在问题。

2. 尽量不使用反射完成对象converter。例如BeanUtils.copyProperties(Object source, Object target);性能上有下降。

3 尽量使用lamada表达式代替匿名函数类。 lamada表达式在大多数jvm内使用invokeDynamic实现,效率比匿名内部类高。

4. 尽量不要定义不必要的匿名内部类,对一个类就多一次类加载过程。

三. 方法

1. 把和类成员变量无关的方法变为static方法。我理解,如果该方法不依赖当前类的成员变量,就不应该在类里, 可以提取到工具类里面,成员工具类静态方法。

2. 尽量使用方法传递代替值传递;尽量使用方法传递代替值传递,可以避免不必要的方法计算,比如Optional的orElse(T value)方法和orElseGet(Supplier supplier)方法,其中orElse(T value)方法无论前面Optional容器之是null还是nonNull,都会提前执行orElse里面的方法。而orElseGet(()-》return xxx)方法并不会,只会在Optional容器值为null时才调用orElaseGet里面的方法。

四. 表达式与字符串

1. 尽量减少使用重复的方法调用,比如循环判断条件。

2. 尽量减少不必要的方法调用,比如某些变量会被覆盖,提前赋值(初始化) 会导致cpu浪费。

3. 提取公共表达式,避免重复计算。

4, 字符串在拼接的时候,尽量使用StringBuilder,避免创建太多的临时变量字符串,尤其是循环体内。

五. 数组和集合

1. 不要使用循环拷贝数组,尽量使用System.arraycopy拷贝数组。

推荐使用System.arraycopy拷贝数组,也可以使用Arrays.copyOf拷贝数组。

2. 集合转换为类型T数组时,尽量传入空数组T[0]。

3. 不要使用循环拷贝集合,而是用jdk自带的方法,比如addAll(),因为使用循环可能产生扩容,使用addAll会提前知道预计容量。

4. 将数据转换为列表,尽量使用Array.asList()。避免使用循环进行拷贝,原因同上。

5. 判空使用isEmpty() 而不是size() == 0 ,前者时间复杂度o(1),后者的时间复杂度可能是o(n)

6. 不管列表支不支持随机访问,都是用迭代进行遍历。

        列表分为支持随机访问和不支持随机访问,比如linkedList即不支持随机访问。

        不支持随机访问的列表,使用get(index)进行遍历效率极低。

7. 避免先判断contain在进行获取get, 可以直接获取get,进行判空,后者避免了前者的两次查找。

六. 异常

1. 不要在循环体内捕获异常,过多的异常代码会降低效率,在外面一样可以捕获循环中出现的异常。

2. 如果可以使用条件表达式,禁止使用异常控制业务流程,后者效率低。

七. 缓冲区

1. 初始化缓冲区,尽量指定大小,避免穿线频繁缓冲区扩容。

2. 尽量重复利用缓冲区,缓冲区较大,多次创建耗费时间长,也增加了垃圾回收

        使用setLength方法让缓冲区重新从0开始,以便重复利用。

        从设计上,就开始尽量使用一个缓冲区。

3. 尽量使用缓冲流减少IO操作。

八. 线程

1. 在单线程中,尽量使用非线程安全类,避免多线程访问控制的开销。

2. 在多线程中,尽量使用线程安全类,避免自己写线程安全控制代码,前者更简洁,更高效。

3. 尽量减少同步代码块的范围。

4. 同步代码块,能合并尽量合并,避免代码块多次进入和释放带来的开销。

5. 尽量使用线程池,减少单独创建新线程,避免线程频繁创建的开销。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学习 WebRTC 服务端开发需要具备一定的网络编程和服务器编程基础。以下是几个可以帮助您高效学习 WebRTC 服务端开发的建议: 1. 熟悉网络编程和服务器编程:学习 WebRTC 服务端开发需要先了解网络编程和服务器编程的基本概念和知识,如 TCP/IP 协议、HTTP 协议、WebSocket 协议等,以及常见的服务器端编程语言和框架。 2. 学习 WebRTC 的基础知识:WebRTC 是一种实时通信技术,需要了解 WebRTC 的基本概念、架构和 API,可以通过官方文档或相关书籍学习。 3. 实践 WebRTC 服务端开发:通过开发实际项目来提高自己的 WebRTC 服务端开发技能。可以参考一些开源项目,如 Google 的 AppRTC 或 SimpleWebRTC,了解它们的实现原理和代码架构,并尝试自己实现一个简单的 WebRTC 服务端。 4. 参与在线课程和讨论组:有许多在线课程和讨论组可以帮助您学习 WebRTC 服务端开发如 Udemy 上的 WebRTC 课程或 Stack Overflow 上的讨论组等。 5. 探索官方文档和社区资源:WebRTC 社区很活跃,有很多官方文档和社区资源可以帮助您学习 WebRTC 服务端开发如 Google 的 WebRTC 官方文档和 GitHub 上的 WebRTC 开源项目等。 总之,学习 WebRTC 服务端开发需要不断地学习和实践,建立起一个稳固的网络和服务器编程基础,以及深入理解 WebRTC 的架构和 API。 ### 回答2: 要高效学习WebRTC服务端开发,可以按照以下几个步骤进行: 1. 学习基础知识:首先了解WebRTC的基本概念、核心协议以及相关技术在服务端开发中的应用。可以通过阅读相关教程、参考书籍或者在线课程来学习。 2. 搭建开发环境:确定使用的开发语言和框架,配置好开发环境,包括安装相应的开发工具和运行时环境。推荐使用常见的语言如Node.js或Java,并选择适合的WebRTC库或框架。 3. 学习代码:选择一些经典的WebRTC服务端示代码,通过阅读和理解代码逻辑,学习WebRTC的主要功能和开发方法。可以在GitHub等代码托管平台上找到一些优秀的示项目。 4. 实践项目:通过自己的实践项目来深入理解WebRTC服务端开发。可以从简单的项目开始,逐渐增加复杂度,实践中发现问题并解决。可以尝试搭建一对一视频通话系统、多人视频会议系统等。 5. 持续学习和实践:WebRTC技术不断发展和更新,需要持续学习最新的发展动态和技术文档。可以关注相关的技术博客、在线社区和论坛,与其他开发者交流和分享经验。 6. 参与开源项目:如果有条件,可以参与一些开源的WebRTC项目,通过贡献代码和解决问题来提高自己的开发能力。 7. 持续改进和总结:在学习和实践的过程中,不断总结和改进自己的学习方法和技能,提高学习效率和开发质量。 总的来说,高效学习WebRTC服务端开发需要掌握基础知识、实践项目、保持持续学习和参与开源社区,不断提高自己的技术水平。 ### 回答3: 要高效学习WebRTC服务端开发,可以按照以下步骤进行: 第一步,了解WebRTC的基本概念和原理。WebRTC是一种实时通信技术,能够在浏览器之间直接传输音频、视频和数据。学习WebRTC的开发前,需要对它的工作原理有一个清晰的理解。 第二步,学习相关的编程语言和技术。WebRTC服务端开发需要掌握一种或多种编程语言,如JavaScript、Python等。此外,还需要了解网络编程、HTTP、WebSocket等相关技术。 第三步,寻找优质的学习资源。可以参考官方文档、在线教程、视频教程等来学习WebRTC服务端开发。在学习过程中,要注意选择权威、有深度的教程,以便获取更高质量的知识。 第四步,动手实践。通过实际的项目实践来巩固学习。可以尝试搭建一个简单的WebRTC服务端,实现基本的音视频传输功能。在实践过程中,会遇到各种问题和挑战,通过解决问题来加深对WebRTC开发的理解。 第五步,多参与交流和讨论。加入一些WebRTC开发者社区或论坛,和其他开发者交流经验、解答问题。在交流和讨论中,可以获取更多的实用经验和技巧,提高学习效果。 最后,要持续学习和保持对新知识和技术的追踪。WebRTC是一个快速发展的领域,新的技术和工具不断涌现。要保持学习的热情,及时了解并学习新的内容,以适应行业的变化和需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值