From 1233ca8a006dabe0ef7e1733964b5040beb52fd3 Mon Sep 17 00:00:00 2001 From: userA Date: Wed, 26 Apr 2023 00:52:14 +0800 Subject: [PATCH] =?UTF-8?q?v1.0.3=E4=B8=80=E4=BA=9Bbug=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=92=8C=E4=B8=80=E4=BA=9B=E6=A8=A1=E5=9D=97=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 25 +++++- .../java/org/example/constpool/ConstPool.java | 6 ++ .../core/pipeline/PipelineWriteJson.java | 62 +++++++------ .../pojo/configfile/BarrageSaveFile.java | 69 +++++++++++++++ .../java/org/example/cache/FileCache.java | 31 ++++++- .../org/example/cache/FileCacheManager.java | 34 ++++++-- .../cache/FileCacheManagerInstance.java | 30 +++++++ .../example/constpool/GlobalFileCache.java | 31 +++++++ .../example/init/ModuleSrcConfigFileInit.java | 2 +- .../org/example/pojo/CommonConfigFile.java | 14 +++ .../configfile}/ModuleSrcConfigFile.java | 2 +- FileModule/src/main/resources/test.json | 73 ++++++++++++++-- .../java/org/example/cache/FileCacheTest.java | 82 +++++++++++------- .../org/example/{bean => pojo}/Student.java | 2 +- .../org/example/util/JsonFileUtilTest.java | 8 +- FileModule/target/classes/test.json | 10 +-- .../org/example/bean/Student.class | Bin 4628 -> 0 bytes .../org/example/util/JsonFileUtilTest.class | Bin 4380 -> 4380 bytes README.md | 3 +- .../java/org/example/common/ConfigFile.java | 8 ++ .../java/org/example/ConsoleApplication.java | 2 - .../main/java/org/example/init/InitWorld.java | 1 - 22 files changed, 389 insertions(+), 106 deletions(-) create mode 100644 CreeperModule/src/main/java/org/example/pojo/configfile/BarrageSaveFile.java create mode 100644 FileModule/src/main/java/org/example/cache/FileCacheManagerInstance.java create mode 100644 FileModule/src/main/java/org/example/constpool/GlobalFileCache.java create mode 100644 FileModule/src/main/java/org/example/pojo/CommonConfigFile.java rename FileModule/src/main/java/org/example/{bean => pojo/configfile}/ModuleSrcConfigFile.java (97%) rename FileModule/src/test/java/org/example/{bean => pojo}/Student.java (95%) delete mode 100644 FileModule/target/test-classes/org/example/bean/Student.class diff --git a/CHANGELOG.md b/CHANGELOG.md index 71ab16b..19c6de3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,14 @@ ------ ``` +------ +# 目录 +* [V 1.0.3]() +* [V 1.0.2]() +* [V 1.0.1]() +* [V 1.0.0]() +------ ## [V 1.0.3] - 2023.4.25 ### CreeperModule - 🎈新增: 新增 `LoadTaskManager` 任务管理器(类),对用户开放的顶层api,用户需要的所有操作都通过此管理器 @@ -31,13 +38,23 @@ - 🎈新增: 新增 `LoadTask_R_Douyu` 斗鱼录播下载任务(类) - 🎈新增: 新增 `Process_R_Douyu` 斗鱼录播处理器(类) - 🎈新增: 新增 `AbstractProcessor` 处理器抽象类(类) +- 🎈新增: 新增 `ConstPool` BARRAGE_ROOT常量 +- 🎈新增: 新增 `BarrageSaveFile` 弹幕存储文件,负责存储当天直播弹幕 +- 🧹重构: 重构 `PipelineWriteJson` 弹幕缓存 与 弹幕文件缓存建立联系 + HelloWorld: + ### FileModule -- ❌移除: 新增 `FileCache的oldJsonFile变量`,不在用map来进行版本更替判断,取而代之的是判断写入字节是否为0的高效率方法 -- 🎈新增: 新增 `FileCache` 方法 `get,writekeys,append` 更加方便的缓存获取,更加方便的写入与内容追加 - 🧪测试: 测试 `FileCache` 方法 `get,writekeys,append`,功能正常,可以使用 -HelloWorld: -![QQ截图20230425201236](https://twj666.oss-cn-hangzhou.aliyuncs.com/img1/QQ%E6%88%AA%E5%9B%BE20230425201236.png) +- ❌移除: 移除 `FileCache-oldJsonFile变量`,不在用map来进行版本更替判断,取而代之的是判断写入字节是否为0的高效率方法 +- 🎈新增: 新增 `FileCache` 方法 `get,writekeys,append` 更加方便的缓存获取,更加方便的写入与内容追加 +- 🎈新增: 新增 `FileCacheManagerInstance` 将整个FileCacheManager转变为全局单例,防止重复使用调用 +- 🎈新增: 新增 `GlobalFileCache` 全局文件缓存,也负责为`FileCacheManagerInstance`提供初始化的文件缓存队列 +- 🎈新增: 新增 `FileCacheManager` 新增方法 `addFileCache` 负责在之后动态的添加新的文件缓存 +- 🐞Bug: **#00001** `FileCache append()` 在进行数组追加时产生溢出 +- ⛏修复: 修复 **#00001**, 在进行数组追加时不会再溢出 + + ------ diff --git a/CreeperModule/src/main/java/org/example/constpool/ConstPool.java b/CreeperModule/src/main/java/org/example/constpool/ConstPool.java index 7b0d93a..509e8ce 100644 --- a/CreeperModule/src/main/java/org/example/constpool/ConstPool.java +++ b/CreeperModule/src/main/java/org/example/constpool/ConstPool.java @@ -7,6 +7,12 @@ package org.example.constpool; */ public class ConstPool { + /** + * 文件路径 + */ + //弹幕保存文件的根目录 + public static final String BARRAGE_ROOT = (String)GlobalFileCache.ModuleSrcConfigFile.get("barrage","src"); + /** * 下载的方式 */ diff --git a/CreeperModule/src/main/java/org/example/core/pipeline/PipelineWriteJson.java b/CreeperModule/src/main/java/org/example/core/pipeline/PipelineWriteJson.java index b967f6c..e2fa01b 100644 --- a/CreeperModule/src/main/java/org/example/core/pipeline/PipelineWriteJson.java +++ b/CreeperModule/src/main/java/org/example/core/pipeline/PipelineWriteJson.java @@ -1,6 +1,10 @@ package org.example.core.pipeline; +import org.example.cache.FileCache; +import org.example.cache.FileCacheManagerInstance; +import org.example.exception.FileCacheException; import org.example.pojo.Barrage; +import org.example.pojo.configfile.BarrageSaveFile; import org.example.pojo.download.LoadConfig; import us.codecraft.webmagic.ResultItems; import us.codecraft.webmagic.Task; @@ -19,45 +23,47 @@ import java.util.concurrent.ConcurrentLinkedQueue; */ public class PipelineWriteJson implements Pipeline { - // Barrage缓存 - private final ConcurrentLinkedQueue cache; + private FileCache filecache; + private final ConcurrentLinkedQueue cache; + LoadConfig loadConfig; - LoadConfig loadConfig; + private BarrageSaveFile barrageSaveFile; - public PipelineWriteJson(LoadConfig loadConfig) { - this.loadConfig = loadConfig; - this.cache = new ConcurrentLinkedQueue<>(); - } - - @Override - public void process(ResultItems resultItems, Task task) { - List barrageList = resultItems.get("barrageList"); - if (barrageList != null) { - cache.addAll(barrageList); + public PipelineWriteJson(LoadConfig loadConfig) throws FileCacheException { + this.loadConfig = loadConfig; + this.cache = new ConcurrentLinkedQueue<>(); + this.barrageSaveFile = new BarrageSaveFile(loadConfig,cache); + this.filecache = new FileCache(barrageSaveFile); + FileCacheManagerInstance.getInstance().addFileCache(filecache); } - } - public int getCacheSize() { - return cache.size(); - } + @Override + public void process(ResultItems resultItems, Task task) { + List barrageList = resultItems.get("barrageList"); + if (barrageList != null) { + cache.addAll(barrageList); + } + } - // 将缓存写入到别处并且清空缓存 - public int writeDataToFileAndFlushCache(String key) { - int successCount = 0; + public int getCacheSize() { + return cache.size(); + } - String filePath = "F:\\" + key + ".txt"; + // 将缓存写入到别处并且清空缓存 + public int writeDataToFileAndFlushCache(String key) { + int successCount = 0; - try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath, true))) { Barrage barrage; while ((barrage = cache.poll()) != null) { - writer.write(barrage.toString()); - writer.newLine(); + try { + filecache.append(barrage,"-1"); + } catch (InterruptedException |FileCacheException e) { + throw new RuntimeException(e); + } successCount++; } - } catch (IOException e) { - e.printStackTrace(); + + return successCount; } - return successCount; - } } diff --git a/CreeperModule/src/main/java/org/example/pojo/configfile/BarrageSaveFile.java b/CreeperModule/src/main/java/org/example/pojo/configfile/BarrageSaveFile.java new file mode 100644 index 0000000..826b6e0 --- /dev/null +++ b/CreeperModule/src/main/java/org/example/pojo/configfile/BarrageSaveFile.java @@ -0,0 +1,69 @@ +package org.example.pojo.configfile; + +import org.example.common.ConfigFile; +import org.example.constpool.GlobalFileCache; +import org.example.exception.FileCacheException; +import org.example.pojo.Barrage; +import org.example.pojo.download.LoadConfig; +import org.example.util.FileUtil; +import org.example.util.JsonFileUtil; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Map; +import java.util.concurrent.ConcurrentLinkedQueue; + +import static org.example.constpool.ConstPool.BARRAGE_ROOT; + +/** + * @author Genius + * @date 2023/04/25 22:08 + **/ + +/** + * 弹幕保存文件配置类,通过LoadConfig获取主播信息,平台信息,弹幕爬取时间,生成弹幕文件 + */ +public class BarrageSaveFile extends ConfigFile> { + private LoadConfig loadConfig; + public BarrageSaveFile(LoadConfig loadConfig,ConcurrentLinkedQueue data) throws FileCacheException { + super(); + this.loadConfig = loadConfig; + if (!init(data)) { + throw new FileCacheException("File init Error"); + } + } + + /** + * 自动生成主播弹幕文件夹以及当天直播弹幕数据文本 + * @param data + * @return + */ + private boolean init(ConcurrentLinkedQueue data) { + String fileName = this.filaName(); + setFileName(fileName); + String rootPath = Paths.get( BARRAGE_ROOT,loadConfig.getAnchorName()).toString(); //获取当前主播的文件夹路径 + setFilePath(rootPath); + + //TODO 待移除 建立主播文件夹 + try { + Files.createFile(Path.of(rootPath)); + } catch (IOException e) { + return false; + } + + setData(data); + if (!FileUtil.isFileExist(Paths.get(rootPath,fileName).toString())) { + + return !(JsonFileUtil.writeJsonFile(rootPath,fileName,this.packageConfig())==null); + } + return true; + } + + private String filaName(){ + String format = "%s_%s_%s.json"; + return String.format(format,loadConfig.getPlatform(),loadConfig.getAnchorName(),loadConfig.getStartTime()); + } + +} diff --git a/FileModule/src/main/java/org/example/cache/FileCache.java b/FileModule/src/main/java/org/example/cache/FileCache.java index 7c20007..176d5ce 100644 --- a/FileModule/src/main/java/org/example/cache/FileCache.java +++ b/FileModule/src/main/java/org/example/cache/FileCache.java @@ -31,7 +31,7 @@ public class FileCache { private ConcurrentHashMap jsonFile; //文件内容缓存 - private static final int MAX_WRITE_BUFFER_LIMIT = 4096; //最大写入缓存上线 + private static int MAX_WRITE_BUFFER_LIMIT = 4096; //最大写入缓存上线 private AtomicInteger writeByte; //当前写入的字节数 @@ -46,7 +46,15 @@ public class FileCache { init(configFile,10); } - public FileCache(T configFile,long autoSyncTime)throws FileCacheException { + /** + * 构造方法 + * @param configFile 指定的配置文件 + * @param autoSyncTime 自动刷新时间 + * @param maxWriteBufferLimit 写入上限 + * @throws FileCacheException + */ + public FileCache(T configFile,long autoSyncTime,int maxWriteBufferLimit)throws FileCacheException { + MAX_WRITE_BUFFER_LIMIT = maxWriteBufferLimit; init(configFile,autoSyncTime); } @@ -143,7 +151,7 @@ public class FileCache { //元素添加 int index = Integer.parseInt(keys[keys.length-1]); if(index==-1){ - ((JSONArray) temp).add(index,value); + ((JSONArray) temp).add(value); }else{ String oldValue = ((JSONArray) temp).get(index).toString(); value = isAppend?oldValue+value.toString():value; @@ -211,7 +219,6 @@ public class FileCache { return jsonFile.get(key); } - /** * 清除已写入的字节数记录 */ @@ -285,4 +292,20 @@ public class FileCache { } } + @Override + public int hashCode() { + return Objects.hash(configFile); + } + + @Override + public boolean equals(Object obj) { + if(obj instanceof FileCache){ + if(((FileCache) obj).getFileName().equals(this.getFileName())){ + return true; + }else if(obj.hashCode() == this.hashCode()){ + return true; + } + } + return false; + } } diff --git a/FileModule/src/main/java/org/example/cache/FileCacheManager.java b/FileModule/src/main/java/org/example/cache/FileCacheManager.java index 641205a..8f91fca 100644 --- a/FileModule/src/main/java/org/example/cache/FileCacheManager.java +++ b/FileModule/src/main/java/org/example/cache/FileCacheManager.java @@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory; import java.time.LocalDateTime; import java.util.List; import java.util.concurrent.BlockingQueue; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; @@ -27,14 +28,16 @@ public class FileCacheManager { private Logger logger = LoggerFactory.getLogger(FileCacheManager.class); private final List fileCaches; - private long sleepTime; //睡眠时间 + private AtomicLong sleepTime; //睡眠时间 private ExecutorService watchPool; //巡逻线程 private ExecutorService autoSyncer; //生产者线程 - public FileCacheManager(List fileCaches){ - this.fileCaches = fileCaches; + private volatile Watcher watcher; + + protected FileCacheManager(List fileCaches){ + this.fileCaches = new CopyOnWriteArrayList<>(fileCaches); initSleepTime(); this.watchPool = Executors.newSingleThreadExecutor(); this.autoSyncer = Executors.newFixedThreadPool(fileCaches.size()); @@ -48,11 +51,28 @@ public class FileCacheManager { fileCaches.forEach(item->{ minSleepTime.set(Long.min(minSleepTime.get(), item.getSyncTime())); }); - this.sleepTime = minSleepTime.get(); + this.sleepTime = minSleepTime; } public void start(){ - this.watchPool.submit(new Watcher()); + if(!fileCaches.isEmpty()){ + if(watcher==null){ + synchronized (FileCacheManager.class){ + if(watcher==null){ + watcher = new Watcher(); + this.watchPool.submit(watcher); + } + } + } + } + } + + public boolean addFileCache(FileCache fileCache){ + if (this.fileCaches.indexOf(fileCache)==-1) { + fileCaches.add(fileCache); + initSleepTime(); + } + return false; } class Watcher implements Runnable{ @@ -71,9 +91,9 @@ public class FileCacheManager { } } now -= TimeUtil.getCurrentSecond(); - if(now fileCaches = GlobalFileCache.fileCaches; + private static volatile FileCacheManager Instance; + + public static FileCacheManager getInstance(){ + if(Instance==null){ + synchronized (FileCacheManagerInstance.class){ + if(Instance==null){ + Instance = new FileCacheManager(fileCaches); + } + } + } + return Instance; + } +} diff --git a/FileModule/src/main/java/org/example/constpool/GlobalFileCache.java b/FileModule/src/main/java/org/example/constpool/GlobalFileCache.java new file mode 100644 index 0000000..97e3cd2 --- /dev/null +++ b/FileModule/src/main/java/org/example/constpool/GlobalFileCache.java @@ -0,0 +1,31 @@ +package org.example.constpool; + +import org.example.cache.FileCache; +import org.example.exception.FileCacheException; +import org.example.pojo.configfile.ModuleSrcConfigFile; + +import java.util.List; + +/** + * @author Genius + * @date 2023/04/25 23:03 + **/ + +/** + * 全局文件缓存池,用于存放全局文件缓存,便于跨模块调用 + */ +public class GlobalFileCache { + + public static FileCache ModuleSrcConfigFile; + + static { + try { + ModuleSrcConfigFile = new FileCache(new ModuleSrcConfigFile()); + } catch (FileCacheException e) { + throw new RuntimeException(e); + } + } + + public static List fileCaches + = List.of(ModuleSrcConfigFile); +} diff --git a/FileModule/src/main/java/org/example/init/ModuleSrcConfigFileInit.java b/FileModule/src/main/java/org/example/init/ModuleSrcConfigFileInit.java index acb5ece..eedc307 100644 --- a/FileModule/src/main/java/org/example/init/ModuleSrcConfigFileInit.java +++ b/FileModule/src/main/java/org/example/init/ModuleSrcConfigFileInit.java @@ -1,6 +1,6 @@ package org.example.init; -import org.example.bean.ModuleSrcConfigFile; +import org.example.pojo.configfile.ModuleSrcConfigFile; import org.example.util.FileUtil; import org.example.util.JsonFileUtil; import org.slf4j.Logger; diff --git a/FileModule/src/main/java/org/example/pojo/CommonConfigFile.java b/FileModule/src/main/java/org/example/pojo/CommonConfigFile.java new file mode 100644 index 0000000..54a633c --- /dev/null +++ b/FileModule/src/main/java/org/example/pojo/CommonConfigFile.java @@ -0,0 +1,14 @@ +package org.example.pojo; + +import org.example.common.ConfigFile; + +/** + * @author Genius + * @date 2023/04/26 00:12 + **/ +public class CommonConfigFile extends ConfigFile { + + public CommonConfigFile(String filePath, String fileName, Object data) { + super(filePath, fileName, data); + } +} diff --git a/FileModule/src/main/java/org/example/bean/ModuleSrcConfigFile.java b/FileModule/src/main/java/org/example/pojo/configfile/ModuleSrcConfigFile.java similarity index 97% rename from FileModule/src/main/java/org/example/bean/ModuleSrcConfigFile.java rename to FileModule/src/main/java/org/example/pojo/configfile/ModuleSrcConfigFile.java index 35cac06..650d2bb 100644 --- a/FileModule/src/main/java/org/example/bean/ModuleSrcConfigFile.java +++ b/FileModule/src/main/java/org/example/pojo/configfile/ModuleSrcConfigFile.java @@ -1,4 +1,4 @@ -package org.example.bean; +package org.example.pojo.configfile; import org.example.common.ConfigFile; import org.example.constpool.ConstPool; diff --git a/FileModule/src/main/resources/test.json b/FileModule/src/main/resources/test.json index 2378b53..221426b 100644 --- a/FileModule/src/main/resources/test.json +++ b/FileModule/src/main/resources/test.json @@ -1,10 +1,65 @@ { - "name": "ChopperBot", - "description": "A bot for the ChopperMC server", - "version": "1.0.0", - "module": { - "type": ["Account","Creeper","File","Hot","Publish","Section","SectionWork","VideoSection"], - "main": "console", - "ui": "console-ui" - } -} + "data":[ + { + "age":0, + "major":"major0", + "name":"0", + "school":"jsu0" + }, + { + "age":1, + "major":"major1", + "name":"1", + "school":"jsu1" + }, + { + "age":2, + "major":"major2", + "name":"2", + "school":"jsu2" + }, + { + "age":3, + "major":"major3", + "name":"3", + "school":"jsu3" + }, + { + "age":4, + "major":"major4", + "name":"4", + "school":"jsu4" + }, + { + "age":5, + "major":"major5", + "name":"5", + "school":"jsu5" + }, + { + "age":6, + "major":"major6", + "name":"6", + "school":"jsu6" + }, + { + "age":7, + "major":"major7", + "name":"7", + "school":"jsu7" + }, + { + "age":8, + "major":"major8", + "name":"8", + "school":"jsu8" + }, + { + "age":9, + "major":"major9", + "name":"9", + "school":"jsu9" + } + ], + "updateTime":"2023-04-26 00:24:47" +} \ No newline at end of file diff --git a/FileModule/src/test/java/org/example/cache/FileCacheTest.java b/FileModule/src/test/java/org/example/cache/FileCacheTest.java index 5f073f4..c49f331 100644 --- a/FileModule/src/test/java/org/example/cache/FileCacheTest.java +++ b/FileModule/src/test/java/org/example/cache/FileCacheTest.java @@ -1,19 +1,16 @@ package org.example.cache; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.JSONPObject; -import org.example.bean.ModuleSrcConfigFile; -import org.example.bean.Student; -import org.example.cache.FileCache; +import org.example.common.ConfigFile; +import org.example.constpool.GlobalFileCache; +import org.example.pojo.CommonConfigFile; +import org.example.pojo.Student; +import org.example.pojo.configfile.ModuleSrcConfigFile; import org.example.exception.FileCacheException; import org.junit.jupiter.api.Test; +import java.io.File; import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import static org.apache.logging.log4j.message.MapMessage.MapFormat.JSON; +import java.util.concurrent.ConcurrentLinkedQueue; /** * @author Genius @@ -21,6 +18,23 @@ import static org.apache.logging.log4j.message.MapMessage.MapFormat.JSON; **/ public class FileCacheTest { + static FileCache cache; + + static{ + + try { + cache = new FileCache<>( + new CommonConfigFile( + "E:\\Project\\ChopperBot\\FileModule\\src\\main\\resources\\", + "test.json", + new ConcurrentLinkedQueue() + ) + ); + FileCacheManagerInstance.getInstance().addFileCache(cache); + } catch (FileCacheException e) { + throw new RuntimeException(e); + } + } @Test public void TestFileCache() throws FileCacheException, InterruptedException { @@ -55,55 +69,59 @@ public class FileCacheTest { @Test public void TestAppend() throws FileCacheException, InterruptedException { - ModuleSrcConfigFile moduleSrcConfigFile = new ModuleSrcConfigFile(); - FileCache fileCache = new FileCache(moduleSrcConfigFile); - - FileCacheManager manager = new FileCacheManager(List.of(fileCache)); - manager.start(); + FileCacheManagerInstance.getInstance().start(); //追加数组的某个元素 for(int i=0;i<10;i++){ - fileCache.append(i,"sectionwork","src","0"); + GlobalFileCache.ModuleSrcConfigFile.append(i,"sectionwork","src","0"); } //追加数组 for(int i=0;i<10;i++){ - fileCache.append(i,"sectionwork","src","-1"); + GlobalFileCache.ModuleSrcConfigFile.append(i,"sectionwork","src","-1"); } //追加类中的元素 for(int i=0;i<10;i++){ - fileCache.append(i,"barrage","src"); + GlobalFileCache.ModuleSrcConfigFile.append(i,"barrage","src"); } Thread.sleep(500000); } @Test public void TestWrite() throws FileCacheException,InterruptedException{ - ModuleSrcConfigFile moduleSrcConfigFile = new ModuleSrcConfigFile(); - FileCache fileCache = new FileCache(moduleSrcConfigFile); - - FileCacheManager manager = new FileCacheManager(List.of(fileCache)); - manager.start(); + FileCacheManagerInstance.getInstance().start(); //更改数组元素 for(int i=0;i<10;i++){ - fileCache.writeKeys(i,"sectionwork","src","0"); + GlobalFileCache.ModuleSrcConfigFile.writeKeys(i,"sectionwork","src","0"); } //追加数组 for(int i=0;i<10;i++){ - fileCache.writeKeys(i,"sectionwork","src","-1"); + GlobalFileCache.ModuleSrcConfigFile.writeKeys(i,"sectionwork","src","-1"); } //更改类中的元素 for(int i=0;i<10;i++){ - fileCache.writeKeys(i,"barrage","src"); + GlobalFileCache.ModuleSrcConfigFile.writeKeys(i,"barrage","src"); } Thread.sleep(500000); } @Test - public void TestJson(){ - Student student = new Student("Genius",18,"qinghua","SC",List.of("1","2","3"),null); - String s = JSONObject.toJSONString(""); - JSONObject jsonObject = JSONObject.parseObject(s); - jsonObject.put("hobby",List.of("1","2","3","4").toString()); - System.out.println(jsonObject); + public void TestArrayAdd() throws InterruptedException, FileCacheException { + ModuleSrcConfigFile moduleSrcConfigFile = new ModuleSrcConfigFile(); + FileCache fileCache = new FileCache(moduleSrcConfigFile); + + FileCacheManager manager = new FileCacheManager(List.of(fileCache)); + manager.start(); + + System.out.println(manager.addFileCache(fileCache)); + } + + @Test + public void TestAddCache() throws FileCacheException, InterruptedException { + FileCacheManagerInstance.getInstance().start(); + for(int i=0;i<10;i++){ + Student student = new Student(Integer.toString(i),i,"jsu"+i,"major"+i,null,null); + cache.writeKeys(student,"-1"); + } + Thread.sleep(500000); } } diff --git a/FileModule/src/test/java/org/example/bean/Student.java b/FileModule/src/test/java/org/example/pojo/Student.java similarity index 95% rename from FileModule/src/test/java/org/example/bean/Student.java rename to FileModule/src/test/java/org/example/pojo/Student.java index c67aded..115a8dd 100644 --- a/FileModule/src/test/java/org/example/bean/Student.java +++ b/FileModule/src/test/java/org/example/pojo/Student.java @@ -1,4 +1,4 @@ -package org.example.bean; +package org.example.pojo; import lombok.Data; diff --git a/FileModule/src/test/java/org/example/util/JsonFileUtilTest.java b/FileModule/src/test/java/org/example/util/JsonFileUtilTest.java index dfef6a2..2d49bc2 100644 --- a/FileModule/src/test/java/org/example/util/JsonFileUtilTest.java +++ b/FileModule/src/test/java/org/example/util/JsonFileUtilTest.java @@ -1,15 +1,9 @@ package org.example.util; -import com.alibaba.fastjson.JSONReader; -import com.alibaba.fastjson.JSONWriter; -import org.example.bean.Student; +import org.example.pojo.Student; import org.junit.jupiter.api.Test; -import org.junit.platform.commons.util.PackageUtils; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; diff --git a/FileModule/target/classes/test.json b/FileModule/target/classes/test.json index 2378b53..eeda4e3 100644 --- a/FileModule/target/classes/test.json +++ b/FileModule/target/classes/test.json @@ -1,10 +1,4 @@ { - "name": "ChopperBot", - "description": "A bot for the ChopperMC server", - "version": "1.0.0", - "module": { - "type": ["Account","Creeper","File","Hot","Publish","Section","SectionWork","VideoSection"], - "main": "console", - "ui": "console-ui" - } + "data":[], + "updateTime":"2023-04-25 23:46:35" } diff --git a/FileModule/target/test-classes/org/example/bean/Student.class b/FileModule/target/test-classes/org/example/bean/Student.class deleted file mode 100644 index 5468203173be3194d9c85cb7d8376ed089e3d4a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4628 zcmb_gOLH7o75;jrUo&b+Bgsw$W&!PK|zIr1^fuI<`)pcckb*!$l~5U=bpzs z?>jYr|L@y>0B{~} zglLqSn+{?FWmMc+IGhponJ5ht* zO0>Co$3Q{L9mLhz!dkT%Q!2Mn-L41mL4&f>J>(1h*DO=Stkz$S3=DU1uLt`iJazOW zMLb=heW6;f#>)m?nCWL&?LT_ZNyjhEp>Q#6_9m@fiMHtD@LIJVUOm{`3>!Cs&6)~k zR1Ru4gGN>G$eu z>sruYw&JisML+tGJWGk`^5Ri%Q&{=~wya{}Y=`kxRZ+)gX8V~~No06N$|^fE%fiYL z-AHQ7CA_Z7OTa6-!bV$qI=L`#rtdJtMyV{ZXH^x~$Pp1;UgvwyQnd6tq4YLeevYT) zL8`+hhjP@MSrt4-yzMFBmZt<0Psb8X9Y;m($==fx8lBiOy&BP1blPDF7fP)xnvZoU(?CIoAYg%97#*rSM2J#!xL8BaAuF6R8k|sYVW7fmt zIPh=`;~pmPh==0>`La#oQ4dpi%)s#n%?S@1_?(A%obxb;vmRCiT@dJ_vV9C6_wY$P z<>3a-aYA2=qPQ71f_*(hn!`43yZDBOS0MwuGxv4URA=7Ig6DQz8W*S^=2H@W0uiQQi|Qr&4)6T`wQ5? zx5d-%@-6CkTCLxXcEjYM(-vM1%5l`VR~R^<;FIKI<+kxt7$N*Po6Nkta=MP~Pee)1j(YFp^7k&E>&Tq(>#WeRPXb*UwNh@-+V~FiC z#%}T1ERXU2)4cyQIj(5!ID;pN@g8Npp&+q8qag7ht03{gRFHUKDM;+MF++GF;h)6G zHtiH?v!wYpRSOGf3Q?{}t|=}ZiXt6nYjPLI7x)!3tm5yG`89!z^2=6-L&|nfGbFYf z(%d}h70%x45gtwz<|s%JHhXU_qzZF{qzGHR!Xv4|96fZd*KE62cr-;=2ksNRo1-g5 ziPNiO?14%?MJ4C)bfTohucY2qB`0Oo9ez(~(aE;kr6c(rrxr=JWe_P4`7}h8IM-46 zC=2*uRZ0!ERZb|Ci|JOH535p&xvlcJQh6a=rS-5Xr7PMheWh{<%Sj8bb;r^cmAXZB zDL*KddPqo9=`y$3EhjsdO!5+){m=05vv?-$vaWgX!I$X?)P30$PIWGuYF~DdhkQA8 zN{xT;J4g%Poh$wlmU(aPPjG(J5k8sz|7VjgcPy+e0Tt62Yk%6nk21@4qUoqgD z?_lIEym{Ze53j{OShC16Sh9Ufc#Iqc! z8UC>NEr;x7%AUusuu90}PmH(lc|sO$;Z1yjkc~Uo#Tp?8uOq}dAs0X6ew8bSUogeb z5z6Dwd>pP38o=K;fWJt{!*$wr5o3<~9}GEgz4tKT5XG2lyoci&%>93`)w!3LZc~0Q z=`^#44MJ>c$#3s8?XF*|9S4ivOB|9}@T_VH{<7i`XMyo=>XY~B$A!fU=F*A6Vns^i zr6pAxg0eE)!rWar^Y<~L&Ie1T5PUPCxKb~gG*q$_iKU{1T;FPuhD)|0*=-UFNJ|w; zjv}#k5-CTKPNZl0x;8lRFpD4JOKLP(%;in>P#(kg@I1ZF@*%3=%Y;m3ejP6mvQXxf zzeUK#Yvg{BkfZYUFXZ26N=*l@VK7xNjQ6RcgJ#fURNRJ50fA{AsaI+$H`BSL1)uv}vRO diff --git a/FileModule/target/test-classes/org/example/util/JsonFileUtilTest.class b/FileModule/target/test-classes/org/example/util/JsonFileUtilTest.class index a9384e8a2f90c441957c43111349733df9ed38e0..7030f2268950e65a49968f21096f7fac90056c4c 100644 GIT binary patch delta 181 zcmbQEG)HMe0wYU7epdeG6vj_bRuuDpPDa7WQM|Q^q6|U|QVg;T(hMpk8-ZU|Im3{+*pV9sF5Umr?%wNFk3KVq%in;?uJtjZk&*t?3iueLe^aGmcKRH66m{W;?ok1C> KMrHC90S^E&+99L> delta 181 zcmbQEG)HMe0wYUOYGU5z6vj_bRuuDpPDb&`QM|Q^(hNcj3JkIgiVP|Y$_%*fH2Lcmv4@2K&iR`EmuF88{eR z7zBa3BpBQn { } public void setData(T data){this.data = data;} + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public void setFilePath(String filePath){ + this.filePath = filePath; + } } diff --git a/console/src/main/java/org/example/ConsoleApplication.java b/console/src/main/java/org/example/ConsoleApplication.java index b585518..75657c1 100644 --- a/console/src/main/java/org/example/ConsoleApplication.java +++ b/console/src/main/java/org/example/ConsoleApplication.java @@ -1,8 +1,6 @@ package org.example; -import org.example.bean.ModuleSrcConfigFile; -import org.example.cache.FileCache; import org.example.exception.FileCacheException; import org.example.init.InitWorld; import org.example.init.ModuleSrcConfigFileInit; diff --git a/console/src/main/java/org/example/init/InitWorld.java b/console/src/main/java/org/example/init/InitWorld.java index 94e1ea9..0021d90 100644 --- a/console/src/main/java/org/example/init/InitWorld.java +++ b/console/src/main/java/org/example/init/InitWorld.java @@ -41,7 +41,6 @@ public class InitWorld { return false; } } - return true; } }