# NJU **Repository Path**: Crabor/nju ## Basic Information - **Project Name**: NJU - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-28 - **Last Updated**: 2022-02-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Cancer ## api [api.md](doc/api.md) ## 介绍 ## 快速开始 ### 申请变量 ```java //通过new申请,第一个变量为name,第二个变量为值 //支持的类型包括Boolean,Byte,Short,Integer,Long,Character,Float,Double Cancer a = new Cancer<>("a"); Cancer b = new Cancer<>("b", 1.1f); Cancer d = new Cancer<>(); Cancer e = new NJI<>(false); ... //通过Cancer.get()方法获取 //前提是"a"在前面已经申请存在了 Cancer c = (Cancer) Cancer.get("a"); ``` ### 变量赋值 ```java a.setValue(11); b.setValue(2.33f); //c和a指向同一个Cancer对象 c.setValue(12); ``` ### 获取值 ```java Integer valA = a.getValue(); Float valB = b.getValue(); //valC和valA指向同一个Integer对象 Integer valC = c.getValue(); ``` ### check接口 每条check数据信息为`lineNumber,iterId,checkId,checkTime,type,name,value`。其中`lineNumber`表示行号,`iterId`表示第几次迭代,`checkId`表示在此次迭代中的第几次check,`checkTime`表示check的时刻,`type`表示数据类型,`name`表示Cancer实例名称,`value`表示值。 ```java //只对a进行check a.check(); //对多个Cancer实例进行check Cancer.check(a, b, c, ...); //用ArrayList保存Cancer实例,然后进行check ArrayList> njus = new ArrayList<>(); njus.add(a); njus.add(b); Cancer.check(njus); //对所有Float类型的实例进行check Cancer.check(Cancer.Type.FLOAT); //对所有类型的实例进行check Cancer.check(Cancer.Type.ALL); //对名称为name的实例进行check Cancer.check("a"); ``` ### iter接口:Cancer.iter() 在大循环中能且只能调用一次iter接口,并且只能在大循环的最开始调用。示例代码如下: ```java for (;;) { Cancer.iter(); //your task code } ``` 每次调用iter时会将`Cancer.iterId`加一,并将所有Cancer实例的`checkId`置零。 ### dump接口 **src/test/java/spar/nju/CancerTest.java**测试程序的输出结果保存在了**src/test/testOutput/CancerTest-stdout.txt**中。 ```java //将a的所有check数据返回 a.dump(); //将多个Cancer实例的所有check数据返回 Cancer.dump(a, b, c, ...); //用ArrayList保存Cancer实例,然后进行dump ArrayList> njus = new ArrayList<>(); njus.add(a); njus.add(b); Cancer.dump(njus); //将所有Float类型的实例的所有check数据返回 Cancer.dump(Cancer.Type.FLOAT); //将所有类型的实例的所有check数据返回 Cancer.dump(Cancer.Type.ALL); //将多个名称为name的实例的所有check数据返回 Cancer.dump("a", "b", "c", ...); //将在第lineNumber行调用check的所有check数据返回 Cancer.dump(12); //将多个对应lineNumber行调用check的所有check数据返回 Cancer.dump(12, 33, 46, ...); //dump到redis JedisPoolUtil jedisPool = new JedisPoolUtil(); jedisPool.njuDump(a.dump()); jedisPool.jedisPoolClose(); //dump到标准输出 a.dump().forEach(info -> { Cancer.BasicInfo bInfo = info.basicInfo; System.out.format("%d,%d,%d,%d,%s,%s,%s\n", info.lineNumber, bInfo.iterId, bInfo.checkId, bInfo.checkTime, bInfo.type, bInfo.name, bInfo.value); }); ``` ### adapt接口 ## 原理 ### Cancer内存结构