Effective Java笔记(三)

5、枚举和注解

34、用enum代替int常量

  • 枚举所有的域都应该为final的;
  • 特定于常量的方法实现;
    • 声明一个抽象的apply方法,并在特定于常量的类主体中,用具体的方法覆盖每个常量的抽象apply方法。
    plus("+") {
        @Override
        public double apply(double x, double y){return x+y;}},
    minus("-") {
        @Override
        public double apply(double x, double y){return x-y;}};
    public abstract double apply(double x,double y);
    private final String fuhao;
    demo_34(String fuhao) {
        this.fuhao = fuhao;
    }

35、用实例域代替序数

  • 永远不要根据枚举的序数(ordinal())导出与它关联的值,而是要它保存在一个实例域中

36、用EnumSet代替位域

            final EnumSet<demo_34> demo_34s = EnumSet.allOf(demo_34.class);
            System.out.println(demo_34s);
            final EnumSet<demo_34> set = EnumSet.of(plus, minus);
            System.out.println(set);

37、用EnumMap代替索引

  • 映射键知道如何将自己翻译成可打印字符串的枚举;
  • 最好不要使用序号来索引数组,而要使用EnumMap;
Map<DayOfWeek, String> map = new EnumMap<>(DayOfWeek.class);
map.put(DayOfWeek.MONDAY, "星期一");
map.put(DayOfWeek.TUESDAY, "星期二");

38、用接口模拟可扩展的枚举

  • 虽然无法编写可扩展的枚举类型,却可以通过编写接口以及实现该接口基础的枚举类型来对它进行模拟;
interface Operation{
    public  double apply(double x,double y);
}
public enum  demo_34 implements Operation{
    plus("+") {
        @Override
        public double apply(double x, double y){return x+y;}},
    minus("-") {
        @Override
        public double apply(double x, double y){return x-y;}};
    private final String fuhao;

    demo_34(String fuhao) {
        this.fuhao = fuhao;
    }
}

39、注解模式优先于命名模式

  • 命名模式例如早期JUnit3 测试类命名Test*,

40、坚持使用Override注解

  • 在你想要覆盖超类声明的每个方法声明中使用Override注解。

41、用标记接口定义类型

  • 标记接口是不包含方法声明的接口,它只是指明一个类实现了某种属性的接口。例如:Serializable接口,通过实现这个接口,类表明它的实例可以被写道ObjectOutputStream中;
  • 标记接口定义的类型是有被标记类的实例实现的;标记注解则没有定义这样的类型;
  • 标记接口胜过标记注解的一个优点:它们可以被更加精确的进行锁定。
  • 标记注解胜过标记接口的最大有点在于:它们是更大的注解机制的一部分;

6、Lambda和Stream

42、Lambda优先于匿名类

  • Java8中 带有单个抽象方法的接口是特殊的,值得特殊对待的观点,这些接口现在被称作函数接口,允许利用Lambda表达式创建这些接口的实例;
  • 类型推导 根据上下文推导这些类型;
  • 尽可能不要序列化一个Lambda(或匿名类实例)

43、方法引用优先于Lambda

  • 比Lanbda更简洁
    在这里插入图片描述

44、检查使用标准的函数接口

  • 只要标准的函数接口能够满足需求,通常应该优先考虑,而不是专门再构建一个新的函数接口。
  • java.util.Function共有43个接口。
  • 必须始终使用@FunctionalImterface注解对自己编写的函数接口进行标注。

六个基本的函数接口

45、谨慎使用Stream

  • 直到调用终止操作才会开始计算,对于完成终止操作不需要的数据元素,将永远不会计算。

46、优先选择Stream中无副作用的函数

  • 纯函数:指其结果只取决于输入的函数,它不依赖任何可变的状态,也不更新任何状态;

47、Stream要优先用Collection作为返回类型

48、谨慎使用Stream并行

  • 如果源头是来自Stream.iterate,或者使用了中间操作的limit,那么并行也不可能提升性能;
  • 在Stream通过并行获得的性能,最好通过ArrayList、HashMap、HashSet、和ConcurrentHashMap实例、数组、int范围或long范围
  • 并行的最佳终止操作是做减法;

7、方法

49、检查参数的有效性

  • 可使用Object.requireNonNull 进行null检查;

50、必要时进行保护性拷贝

  • 假设类的客户端会尽其所能破坏这个类的约束条件,因此你必须保护地设计程序;
  • 保护性拷贝时检查参数的有效性之前进行的,并且有效性检查是针对拷贝之后的对象,而不是针对原始的对象;

51、谨慎设计方法签名

  • 谨慎选择方法的名称
  • 不要过于追求提供便利的方法
  • 如果不能确定,最好不要提供快捷方式
  • 避免过长的参数列表(四个参数或更少)
  • 参数类型优先使用接口,而不是类
  • boolean参数,优先使用两个元素的枚举类型

52、慎用重载

  • 要使用哪个重载方法是在编译时做出决定的

53、慎用可变参数

54、返回零长度的数组或者集合,而不是null

  • 永远不要返回null,而不返回一个零长度的数组或集合

55、谨慎返回optional

  • 永远不要通过返回Optinal的方法返回null;
  • 永远不应该返回基本包装类型的optional;
  • 如果无法返回结果并且没有返回结果时客户端必须执行特殊的处理,那么就应该声明方法返回Optional;
  • 容器类型包括集合、映射、Stream、数组和Optional,都不应该被包装在optional中。

56、为所有导出的API元素编写文档注释

  • < p> < i> html 标签
  • @param @return @throws 标签后面的短语都不能用句点来结束
  • @throws 标签之后的文字应该包含 if

在这里插入图片描述

参考《Effective Java》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
# 智慧旅游解决方案摘要 智慧旅游解决方案旨在通过新一代信息网络技术和装备,实现旅游服务、管理、营销和体验的智能化。该方案响应国家政策背景,如国家旅游局和工业信息化部的指导意见,以及国家发改委的发展规划,强调数字化、网络化、智能化在旅游业的应用,推动5G和移动互联网技术在旅游领域的创新应用。 方案的建设目标围绕“一个中心、四个方面、五大平台”展开,即以智慧旅游数据中心为核心,面向服务、管理、商务和营销构建智慧景区管理平台、智慧旅游服务平台、智慧旅游商务平台和智慧旅游营销平台。这五大平台将整合全域旅游资源,提升旅游设施,拓展旅游空间,融合旅游产业链,提升旅游服务,定制旅游产品,推进旅游改革。 建设内容涵盖了整体架构的构建,包括智慧服务、智慧管理、电子商务和智慧营销等方面。通过云计算、人工智能、大数据、物联网、5G等技术,实现“云-管-端”服务能力,打造集时间、空间、层次为一体的体验平台。此外,还包括智慧景区管理平台的多个子系统,如视频监控、应急指挥调度、流量监测、舆情监督、线路SOS一键呼救、GIS人车调度、停车场管理、语音广播、环境监测管理、多媒体发布、电子巡更以及指挥调度大屏建设等。 智慧旅游服务平台则包括自助票务系统、人脸识别、扫码购票、景区门户网站、机游、WIFI覆盖系统、数字全景VR、AI机器人、智慧座椅、智慧厕所等,旨在提升游客体验,实现景区的智能化管理和服务。通过这些服务,游客可以享受到便捷的购票、入园、导览和信息服务,同时景区管理者能够更有效地监控和管理景区运营。 智慧旅游商务平台则侧重于旅行社团队申报、电子商城、综合票务系统、分销管理系统、大会员系统和景区聚合支付系统,为旅游企业提供全面的商务服务和营销支持。这些平台和系统帮助旅游企业拓宽分销渠道,实现财务管理和订单管理,同时为游客提供便捷的支付和会员服务。 最后,智慧营销平台通过综合票务系统、分销管理系统、大会员系统和景区聚合支付系统,为旅游行业提供精准的营销工具和策略。这些工具和策略有助于整合旅游资源,拓宽销售渠道,提升游客体验,实现旅游业务的数字化和智能化。 智慧旅游解决方案通过这些综合性的技术和平台,不仅提升了游客的旅游体验,还为旅游行业的可持续发展提供了强有力的技术支持和数据驱动的决策依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值