代码拉取完成,页面将自动刷新
本包功能说明:
第一步,先初始化计算类:
//出事化运算类
PositionOperation operation= new PositionOperation();
//设置筛选区域收缩系数,当前即为全部坐标数量的0.2倍,即为筛选五倍速
operation.setSh(0.2);
第二步,塞入数据库里面所有坐标数据:
for (int i = 0; i < 9998; i++) {
Position position = new Position();
//分别塞入XY坐标,这里用随机数来模拟坐标信息
position.setX(random.nextInt(1000));
position.setY(random.nextInt(1000));
//塞入该坐标在数据库中对应的主键,这里是用下标来模拟主键,实际为数据库中对应的坐标主键
position.setUid(i);
//塞入计算类
operation.insertXY(position);
}
第三步,开始运算
//运算结束会返回Position集合
List<Position> positionList = operation.start();
for (Position position : positionList) {
//这个是集合中你输入时对应的坐标主键
int uid = position.getUid();
//这个是新生成的查询主键,将这个查询主键保存在数据库中对应的坐标的一个字段中
int id = position.getId();
}
第四步(可选),获取模型保存数据库
//获取运算参数留待下次 服务启动时注入,建议获取之后序列化为json字符串保存数据库
Parameter parameter = operation.getModel();
//下次服务启动,若库里没有新加入的坐标 则可直接从数据库中取出json,反序列化为实体参数类后直接注入,而无需重新运算
operation.insertModel(parameter);
以上为预运算部分结束,即数据准备,以保存数据库坐标对应查询id为结束,查询id为一个自增id。
当数据库中坐标更新时,既有增删改的行为,则需重新预运算一次,否则数据库中修改内容无法生效。
返回一个数组,其结构为[starIndex,finishIndex],这里面的index即为之前保存的查询id的 筛选范围,第一个元素为开始查询主键,第二个为结束查询主键,其大小范围是库里坐标总数乘以sh,即收缩筛选范围
int[] region = operation.getRegion(x, y);
operation
为服务器启动时,初始化且只初始化一次的单例的运算类。若不进行初始化,可直接进行步骤四,直接注入参数也等同于初始化。注意:实际运算时,是直接调用服务启动时初始化的单例运算类
operation
,切不可每次运算时现NEW(这个操作本身就耗时)。
加载运算类坐标数少于9000,则运算不执行,开发者全遍历就好,筛选范围几乎没有提速意义。
"Too few samples: less than 99"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。