# code83-2 **Repository Path**: scum_455/code83-2 ## Basic Information - **Project Name**: code83-2 - **Description**: code83第二关 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-03 - **Last Updated**: 2021-11-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #分支说明 master:比赛时使用的代码 # 通关指引 ## 赛题说明 阿里云发布的智能编码插件(Cosy)https://developer.aliyun.com/tool/cosy ,它为开发者提供了代码智能补全以及代码示例搜索, 其中代码示例搜索能够让开发者在遇到不熟悉的API时,帮助开发者快速找到对应的API代码示例,当开发者在Cosy中输入API关键词时, Cosy会提供API关键词的自动补全提示。现在阿里云OSS中存储了多个几万到几百万大小不等的Java API数据文件, 请你设计一个数据结构及算法,能够根据Java API名称前缀快速检索出对应的Java API名称列表。 你可以在已有的代码框架中完成TODO部分,或修改代码框架。 ### 评分机制 评分系统会随机选择一个小规模数据集和一个大规模数据集,针对每个数据集对参赛者编写的函数从准确性、性能、内存消耗维度进行评估。 * **运行结果** :评分系统会随机生成一批前缀字符串输入到参赛者的函数中,并评估参赛者的结果是否准确 * **性能开销** :函数计算耗时越短,性能维度分数越高。(注意:小数据集需在2分钟内完成计算,大数据集需在3分钟内完成计算) * **内存消耗** :函数计算内存消耗越低,内存消耗维度分数越高。(注意:默认最大内存为3GB) ### 注意事项 * 代码框架中的 `com.aliyun.code83.round2.CodePrefixSearchRequest` 类名以及 `handleRequest` 方法名不能修改,否则会导致评分失败 * 参赛者自己引入的maven包是无效的,`pom.xml` 文件无法被修改,评分系统会将参赛者的 `pom.xml` 文件替换为默认文件 ### 提示: OSS数据访问请参照以下文档: * OSSClient初始化帮助文档:https://help.aliyun.com/document_detail/32010.html * OSS文件流式下载帮助文档:https://help.aliyun.com/document_detail/84823.html 算法实现: * 评测数据集较大,请考虑比双层for循环更优的方法,否则很可能无法通过 ## 数据格式示例 ### 1. 数据集格式 文件每一行记录一条API,API名称包含a-z、A-Z、0-9、下划线字符 ``` BufferedReader BufferedInputStream String StringBuilder …… ``` ### 2. 输入JSON数据格式 ``` { "prefixs":["","", ……], // 字符串前缀 "oss_endpoint": "", // OSS访问endpoint, "oss_key": "", // OSS数据集访问地址 "bucket": "", // OSS Bucket "access_key": "", // OSS 访问AK "access_secret": "" // OSS 访问SK } ``` 输入数据示例: ``` { "prefixs":[ "Buffer", "Str" ], "oss_endpoint":"*****", "oss_key":"*****", "bucket":"*****", "access_key":"*****", "access_secret":"*****" } ``` ### 3. 输出JSON数据格式 ``` { "": ["", ……], "": ["", "", ……], …… } ``` 输出数据示例: ``` { "Buffer":["BufferedReader", "BufferedInputStream"], "Str":["String", "StringBuilder"], } ``` ## 调试 `src/test/resources/test_input.json` 文件中存储有测试数据,可通过以下方法调试: 打开 `src/test/java/com/aliyun/code83/round2/test/CodePrefixSearchRequestTest.java` 单元测试文件, 去除 `testHandleRequest` 方法上的 `@Ignore` 注解,然后点击"Debug Test"进行调试。 ## 提交至评分系统 点击右侧的 ***提交*** 按钮,评分系统会自动构建打包,并提交至评分系统进行评估。(注:提交至评分系统之前,请先用单元测试进行调试,避免浪费提交次数。)