file-type

Java枚举、注解、反射与单元测试详解

PDF文件

下载需积分: 0 | 1.04MB | 更新于2024-07-09 | 146 浏览量 | 0 下载量 举报 收藏
download 立即下载
"该资源是关于Java编程的教程,涵盖了枚举、注解、反射以及单元测试和Lombok工具的使用。" 在Java编程中,枚举(Enumeration)是一种特殊的类,从Java 1.5版本开始引入,它提供了一种更安全、更规范的方式来表示固定数量的值。枚举在定义时使用`enum`关键字,它和类、接口处于同一级别。所有的枚举都是`java.lang.Enum`类的子类。 1. 枚举的定义与使用 枚举定义的基本格式是`public enum 枚举名 {枚举常量1, 枚举常量2, ...}`。枚举常量通常使用大写字母表示,且彼此间用逗号分隔。每个枚举常量实际上代表了枚举类的一个实例,它们具有公共的静态final属性。例如: ```java public enum Color { RED, GREEN, YELLOW } ``` 枚举类中还可以包含方法和属性。例如,给每个颜色添加一个描述: ```java public enum Color { RED("红色"), GREEN("绿色"), YELLOW("黄色"); private String color; private Color(String color) { this.color = color; } // 省略getters和setters } ``` 枚举的使用通常是通过枚举名直接访问其常量,如`Color.RED`。 2. 单元测试 单元测试是对程序中最小可测试单元进行检查和验证的过程。根据关注点的不同,测试分为黑盒测试和白盒测试。 - 黑盒测试:不考虑内部结构,只关注输入值和预期的输出结果。 - 白盒测试:需要了解代码内部实现,关注程序执行的具体流程。 JUnit是一个广泛使用的Java单元测试框架,它属于白盒测试范畴。使用JUnit时: - 编写测试类,其中测试方法通常带有`@Test`注解,如`public void testMethodName() {}`。 - 测试方法需为`public`,无参数,且方法名建议以`test`开头。 - 将JUnit库添加到项目依赖中,以便运行测试。 3. 注解(Annotation) 注解是元数据的一种形式,允许在源代码中嵌入信息,这些信息可以被编译器或Java虚拟机在处理代码时使用。例如,`@Test`就是一个注解,用于标记需要执行的测试方法。 4. 反射(Reflection) 反射是Java的一项强大功能,它允许程序在运行时检查和操作类、接口、字段和方法的信息。例如,通过反射可以动态创建对象、调用方法或访问类的私有成员。 5. Lombok Lombok是一个代码生成库,它可以自动插入getter、setter、构造函数等常用方法,从而减少冗余代码。通过在类或属性上使用特定的注解,如`@Data`,Lombok会在编译时自动生成对应的代码。 这份资源涵盖了Java开发中重要的概念,包括枚举的使用以提高代码的可读性和安全性,单元测试确保代码质量,注解提供元数据功能,反射增强代码的灵活性,以及Lombok简化编码的工作。理解和掌握这些知识点对提升Java开发能力至关重要。

相关推荐

filetype

greenPlum数据库建表语句如下: -- 建schema CREATE SCHEMA schemaname AUTHORIZATION "insight-gp7_vops"; -- 按天分区表 DROP TABLE IF EXISTS pt.vd_process_day_partition; CREATE TABLE pt.vd_process_day_partition ( uuid VARCHAR(256), groupId VARCHAR(256), nodeId VARCHAR(256), vops_insert_time timestamp, createtime timestamp, pid FLOAT, process_name VARCHAR(256), cpu FLOAT, mem FLOAT, handle int, os_type int ) WITH (appendonly=true, orientation=column, compresstype=zlib, compresslevel=5) DISTRIBUTED BY (uuid) PARTITION BY RANGE(createtime) (START ('2025-2-1'::date) END ('2025-5-31'::date) EVERY ('1 day'::interval), DEFAULT PARTITION process_default); COMMENT ON TABLE pt.vd_process_day_partition IS '用户进程资源使用表'; COMMENT ON COLUMN pt.vd_process_day_partition.uuid IS '用户UUID'; COMMENT ON COLUMN pt.vd_process_day_partition.groupId IS '组织 ID'; COMMENT ON COLUMN pt.vd_process_day_partition.nodeId IS '站点 ID'; COMMENT ON COLUMN pt.vd_process_day_partition.vops_insert_time IS 'VOPS Insert Time'; COMMENT ON COLUMN pt.vd_process_day_partition.createtime IS 'Create Time'; COMMENT ON COLUMN pt.vd_process_day_partition.pid IS 'Process ID'; COMMENT ON COLUMN pt.vd_process_day_partition.process_name IS 'Process Name'; COMMENT ON COLUMN pt.vd_process_day_partition.cpu IS 'CPU Usage'; COMMENT ON COLUMN pt.vd_process_day_partition.handle IS '句柄数'; COMMENT ON COLUMN pt.vd_process_day_partition.mem IS 'Memory Usage'; COMMENT ON COLUMN pt.vd_process_day_partition.os_type IS 'OS Type'; 请设计一些常用的插叙语句,比如求和,求平均等

filetype

-- 步骤1:创建日用电量视图(简化版) CREATE OR REPLACE VIEW daily_consumption AS SELECT yhbh, yhmc, sjsj, ygz AS daily_total, ygj AS daily_peak, ygf AS daily_high, ygp AS daily_normal, ygg AS daily_valley FROM yxrgzn_djlrrdlmx; -- 步骤2-4:创建异常报告视图(简化版,避免使用复杂窗口函数) CREATE OR REPLACE VIEW anomaly_report AS SELECT dc.yhbh, dc.yhmc AS user_name, dc.sjsj AS date, dc.daily_total, ROUND(avg_data.ma_7day, 2) AS moving_avg_7day, ROUND( CASE WHEN avg_data.ma_7day > 0 THEN ABS(dc.daily_total - avg_data.ma_7day) / avg_data.ma_7day ELSE 0 END * 100, 2 ) AS deviation_percent, ROUND( CASE WHEN prev_data.prev_day > 0 THEN ABS(dc.daily_total - prev_data.prev_day) / prev_data.prev_day ELSE 0 END * 100, 2 ) AS dod_change_percent, CASE WHEN (avg_data.ma_7day > 0 AND ABS(dc.daily_total - avg_data.ma_7day) / avg_data.ma_7day > 0.5) THEN '移动平均异常' WHEN (prev_data.prev_day > 0 AND ABS(dc.daily_total - prev_data.prev_day) / prev_data.prev_day > 0.8) THEN '日环比异常' WHEN dc.daily_total < 0.1 THEN '零用电异常' ELSE '正常' END AS anomaly_type, CASE WHEN (avg_data.ma_7day > 0 AND ABS(dc.daily_total - avg_data.ma_7day) / avg_data.ma_7day > 0.5) OR (prev_data.prev_day > 0 AND ABS(dc.daily_total - prev_data.prev_day) / prev_data.prev_day > 0.8) OR dc.daily_total < 0.1 THEN '是' ELSE '否' END AS is_anomaly FROM daily_consumption dc LEFT JOIN ( -- 计算7日移动平均 SELECT yhbh, sjsj, AVG(daily_total) OVER ( PARTITION BY yhbh ORDER BY sjsj ROWS BETWEEN 6 PRECEDING AND CURRENT ROW ) AS ma_7day FROM daily_consumption ) avg_data ON dc.yhbh = avg_data.yhbh AND dc.sjsj = avg_data.sjsj LEFT JOIN ( -- 获取前一日数据 SELECT yhbh, sjsj, LAG(daily_total, 1) OVER ( PARTITION BY yhbh ORDER BY sjsj ) AS prev_day FROM daily_consumption ) prev_data ON dc.yhbh = prev_data.yhbh AND dc.sjsj = prev_data.sjsj ORDER BY dc.yhbh, dc.sjsj; 那你给我修改一下这个

filetype

#!/bin/bash day1=$(date +%Y%m%d) day2=$(date -d "yesterday" +%Y%m%d) cd /ftpdata/receive/eda_in/in_1851 gunzip *.gz mv 10000_ACCOUNT_BASE_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_account_base.dat mv 10000_ACCOUNT_MANAGER_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_account_manager.dat mv 10000_CONSOLE_USER_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_console_user.dat mv 10000_REPORT_CRM_MASTER_ORDER_CONFIG_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_report_crm_master_order_config.dat mv 10000_INNER_ORDER_ITEM_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_inner_order_item.dat mv 10000_REPORT_RESOURCE_SCORE_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_report_resource_score.dat mv 10000_REPORT_PAYMENT_PLAN_PREVIEW_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_report_payment_plan_preview.dat mv 10000_ORDERS_ITEM_DEVELOPMENT_DETAIL_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_orders_item_development_detail.dat mv 10000_REPORT_ONE_CORD_ONE_PERSON_MANAGER_LIST_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_1code1person_manager_list.dat mv 10000_CLOUD_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_cloud.dat mv 10000_REPORT_OPOE_CUSTOMER_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_report_opoe_customer.dat mv 10000_CLOUD_ACTIVE_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_Cloud_active.dat mv 10000_BUSI_ORDER_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_busi_order.dat mv 10000_BUSI_ORDER_ITEM_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_busi_order_item.dat mv 10000_REPORT_IAM_IDENTITY_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_iam_identity.dat exit 0 什么意思

filetype

保留原本功能优化以下代码import pandas as pd import numpy as np import matplotlib.pyplot as plt # 1.读取并查看数据 bike_day = pd.read_csv("C:/Users/15020/Desktop/26.bike_day.csv") print(bike_day.head(5)) # 前5行 print(bike_day.tail(2)) #后2行 #2.处理数据并导出到文件 bike_day_user = bike_day[['instant','dteday','yr', 'casual', 'registered']].dropna() bike_day_user.to_csv('bike_day_user.txt', sep=' ',index=False, header=False) #3.读取数据并添加新列并导出到新文件 bike_day_user = pd.read_csv('bike_day_user.txt', sep=' ', header=None, names=['instant','dteday','yr', 'casual',"registered"]) bike_day_user['cnt'] = bike_day_user['casual'] + bike_day_user['registered'] bike_day_user.to_excel('bike_day_user_cnt.xlsx', index=False) #4.读取数据并进行统计 bike_day_user_cnt = pd.read_excel('bike_day_user_cnt.xlsx') print('cnt最大值:',bike_day_user_cnt['cnt'].max()) print('ent最小值:',bike_day_user_cnt['cnt'].min()) print('2011号cnt年平均值:',bike_day_user_cnt[bike_day_user_cnt['yr'] == 0]['cnt'].mean()) print('2012年cnt年平均值:',bike_day_user_cnt[bike_day_user_cnt['yr'] == 1]['cnt'].mean()) print('2011年月严始值:', bike_day_user_cnt[bike_day_user_cnt['yr'] == 0].groupby('mnth')['cnt'].mean()) print('2022年月平均值:', bike_day_user_cnt[bike_day_user_cnt['yr'] == 1].groupby('mnth')['cnt'].mean()) # 5.可视化并保存图像 fig, ax = plt.subplots() ax.barh(bike_day_user_cnt['mnth'], bike_day_user_cnt[bike_day_user_cnt['yr'] == 0].groupby('mnth')['cnt'].mean(), color='blue', label='2011') ax.barh(bike_day_user_cnt['mnth'], bike_day_user_cnt[bike_day_user_cnt['yr'] == 1].groupby('mnth')['cnt'].mean(), color='lightblue', label='2012') ax.set_yticks(np.arange(1,13)) ax.set_yticklabels(['Jan','Feb','Mar', 'Apr', 'May','Jun','Jul','Aug', 'sep', 'Oct','Nov','Dec']) ax.set_xlabel('Average number of shared bike users') ax.set_title('Monthly Average Number of Shared Bike Users in 2011-2012') ax.legend() fig.savefig('bike_day_user_cnt.png', dpi=300)

xiaojiugua99
  • 粉丝: 0
上传资源 快速赚钱