From f8a987606afdf02df96d0f7845e9afd3055fd6e4 Mon Sep 17 00:00:00 2001 From: 502647092 Date: Wed, 13 Jul 2016 19:38:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E8=83=BD=E8=80=97?= =?UTF-8?q?=E7=9B=91=E6=8E=A7=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 502647092 --- pom.xml | 2 +- src/main/java/pw/yumc/Yum/Yum.java | 9 +-- src/main/java/pw/yumc/Yum/api/YumAPI.java | 66 +++++++++++----- .../pw/yumc/Yum/commands/MonitorCommand.java | 76 ++++++++++++------- .../java/pw/yumc/Yum/commands/YumCommand.java | 12 +-- .../pw/yumc/Yum/inject/CommandInjector.java | 4 +- .../pw/yumc/Yum/inject/ListenerInjector.java | 31 ++++++-- .../java/pw/yumc/Yum/inject/TaskInjector.java | 5 +- .../java/pw/yumc/Yum/models/PluginInfo.java | 1 + src/main/resources/config.yml | 4 + src/main/resources/monitor.yml | 9 +++ src/main/resources/network.yml | 4 + src/main/resources/setop.yml | 4 + src/main/resources/thread.yml | 4 + 14 files changed, 164 insertions(+), 67 deletions(-) diff --git a/pom.xml b/pom.xml index c21fec5..74c975a 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ org.spigotmc spigot-api jar - 1.9-R0.1-SNAPSHOT + 1.10.2-R0.1-SNAPSHOT cn.citycraft diff --git a/src/main/java/pw/yumc/Yum/Yum.java b/src/main/java/pw/yumc/Yum/Yum.java index f7f4d26..341f8dc 100644 --- a/src/main/java/pw/yumc/Yum/Yum.java +++ b/src/main/java/pw/yumc/Yum/Yum.java @@ -45,9 +45,7 @@ public class Yum extends JavaPlugin { @Override public void onDisable() { NetworkManager.unregister(); - // for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) { - // YumAPI.uninject(plugin); - // } + } @Override @@ -60,8 +58,9 @@ public class Yum extends JavaPlugin { initListeners(); initRunnable(); new VersionChecker(this); - YumAPI.updaterepo(Bukkit.getConsoleSender()); - YumAPI.updatecheck(Bukkit.getConsoleSender()); + YumAPI.updateInject(); + YumAPI.updateRepo(Bukkit.getConsoleSender()); + YumAPI.updateCheck(Bukkit.getConsoleSender()); } @Override diff --git a/src/main/java/pw/yumc/Yum/api/YumAPI.java b/src/main/java/pw/yumc/Yum/api/YumAPI.java index 3e0f088..ad25301 100644 --- a/src/main/java/pw/yumc/Yum/api/YumAPI.java +++ b/src/main/java/pw/yumc/Yum/api/YumAPI.java @@ -12,7 +12,9 @@ import org.bukkit.plugin.Plugin; import cn.citycraft.CommonData.UpdatePlugin; import cn.citycraft.PluginHelper.kit.PKit; +import cn.citycraft.PluginHelper.kit.PluginKit; import pw.yumc.Yum.inject.CommandInjector; +import pw.yumc.Yum.inject.ListenerInjector; import pw.yumc.Yum.inject.TaskInjector; import pw.yumc.Yum.managers.ConfigManager; import pw.yumc.Yum.managers.DownloadManager; @@ -104,9 +106,11 @@ public class YumAPI { * 插件 */ public static void inject(final Plugin plugin) { - CommandInjector.inject(plugin); - // ListenerInjector.inject(plugin); - TaskInjector.inject(plugin); + if (plugin.isEnabled()) { + CommandInjector.inject(plugin); + ListenerInjector.inject(plugin); + TaskInjector.inject(plugin); + } } /** @@ -150,8 +154,8 @@ public class YumAPI { * 插件名称 * @return 是否安装成功 */ - public static boolean installfromyum(final CommandSender sender, final String pluginname) { - return installfromyum(sender, pluginname, null); + public static boolean installFromYum(final CommandSender sender, final String pluginname) { + return installFromYum(sender, pluginname, null); } /** @@ -165,7 +169,7 @@ public class YumAPI { * 插件版本 * @return 是否安装成功 */ - public static boolean installfromyum(final CommandSender sender, final String pluginname, final String version) { + public static boolean installFromYum(final CommandSender sender, final String pluginname, final String version) { final PluginInfo pi = repo.getPlugin(pluginname); if (pi != null) { return install(sender, pi.name, pi.getUrl(sender, version)); @@ -203,6 +207,18 @@ public class YumAPI { plugman.reload(plugin); } + /** + * 取消注入 + * + * @param plugin + * 插件 + */ + public static void uninject() { + for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) { + YumAPI.uninject(plugin); + } + } + /** * 取消注入 * @@ -264,7 +280,7 @@ public class YumAPI { * @param sender * 命令发送者 */ - public static void updateall(final CommandSender sender) { + public static void updateAll(final CommandSender sender) { main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() { @Override public void run() { @@ -279,7 +295,7 @@ public class YumAPI { sender.sendMessage("§d开始更新服务器可更新插件"); for (final Plugin updateplugin : ulist) { sender.sendMessage("§d一键更新: §a开始更新" + updateplugin.getName() + "!"); - if (!updatefromyum(sender, updateplugin, null, true)) { + if (!updateFromYum(sender, updateplugin, null, true)) { failed++; } } @@ -288,7 +304,7 @@ public class YumAPI { } sender.sendMessage("§d一键更新: §e已下载所有需要升级的插件到 服务器更新 文件夹"); sender.sendMessage("§d一键更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!"); - updatecheck(sender); + updateCheck(sender); } else { sender.sendMessage("§6更新: §e未找到需要更新且可以用Yum处理的插件!"); } @@ -303,8 +319,8 @@ public class YumAPI { * @param sender * 命令发送者 */ - public static void updatecheck(final CommandSender sender) { - main.getServer().getScheduler().runTaskLaterAsynchronously(main, new Runnable() { + public static void updateCheck(final CommandSender sender) { + PluginKit.runTaskLaterAsync(new Runnable() { @Override public void run() { final List ulist = getUpdateList(sender); @@ -324,8 +340,8 @@ public class YumAPI { * 插件实体 * @return 是否更新成功 */ - public static boolean updatefromyum(final CommandSender sender, final Plugin plugin) { - return updatefromyum(sender, plugin, null); + public static boolean updateFromYum(final CommandSender sender, final Plugin plugin) { + return updateFromYum(sender, plugin, null); } /** @@ -339,8 +355,8 @@ public class YumAPI { * 插件版本(null则自动获取) * @return */ - public static boolean updatefromyum(final CommandSender sender, final Plugin plugin, final String version) { - return updatefromyum(sender, plugin, version, false); + public static boolean updateFromYum(final CommandSender sender, final Plugin plugin, final String version) { + return updateFromYum(sender, plugin, version, false); } /** @@ -356,7 +372,7 @@ public class YumAPI { * 是否一键更新 * @return */ - public static boolean updatefromyum(final CommandSender sender, final Plugin plugin, final String version, final boolean oneKeyUpdate) { + public static boolean updateFromYum(final CommandSender sender, final Plugin plugin, final String version, final boolean oneKeyUpdate) { final PluginInfo pi = repo.getPlugin(plugin.getName()); if (pi != null) { final File pFile = new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName()); @@ -374,11 +390,25 @@ public class YumAPI { return false; } + /** + * 更新注入 + */ + public static void updateInject() { + PluginKit.runTaskLater(new Runnable() { + @Override + public void run() { + for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) { + YumAPI.inject(plugin); + } + } + }, 60); + } + /** * 更新Yum源数据 */ - public static void updaterepo(final CommandSender sender) { - main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() { + public static void updateRepo(final CommandSender sender) { + PluginKit.runTaskAsync(new Runnable() { @Override public void run() { repo.updateRepositories(sender); diff --git a/src/main/java/pw/yumc/Yum/commands/MonitorCommand.java b/src/main/java/pw/yumc/Yum/commands/MonitorCommand.java index 05dfa77..9b70fc1 100644 --- a/src/main/java/pw/yumc/Yum/commands/MonitorCommand.java +++ b/src/main/java/pw/yumc/Yum/commands/MonitorCommand.java @@ -23,6 +23,7 @@ import cn.citycraft.PluginHelper.commands.HandlerCommands; import cn.citycraft.PluginHelper.commands.InvokeCommandEvent; import cn.citycraft.PluginHelper.commands.InvokeSubCommand; import cn.citycraft.PluginHelper.ext.kit.Reflect; +import cn.citycraft.PluginHelper.kit.StrKit; import pw.yumc.Yum.Yum; import pw.yumc.Yum.inject.CommandInjector; import pw.yumc.Yum.inject.ListenerInjector; @@ -34,10 +35,13 @@ import pw.yumc.Yum.inject.TaskInjector; * @author 喵♂呜 */ public class MonitorCommand implements HandlerCommands { - Yum main; + private final String prefix = "§6[§bYum §a能耗监控§6] "; + private final String total = "§6总耗时: §a%.2f秒 "; + private final String count = "§6执行次数: §b%s次 "; + private final String avg = "§6平均耗时: §d%.5f秒!"; + private final String p_n_f = prefix + "§c插件不存在!"; public MonitorCommand(final Yum yum) { - main = yum; final InvokeSubCommand cmdhandler = new InvokeSubCommand(yum, "monitor"); cmdhandler.setAllCommandOnlyConsole(yum.getConfig().getBoolean("onlyFileCommandConsole", true)); cmdhandler.registerCommands(this); @@ -54,12 +58,12 @@ public class MonitorCommand implements HandlerCommands { final String pname = e.getArgs()[0]; final CommandSender sender = e.getSender(); if (Bukkit.getPluginManager().getPlugin(pname) == null) { - sender.sendMessage("§c插件不存在!"); + sender.sendMessage(p_n_f); return; } final PluginManager pluginManager = Bukkit.getPluginManager(); final SimpleCommandMap commandMap = Reflect.on(pluginManager).get("commandMap"); - sender.sendMessage("§6插件 §b" + pname + " §6的命令能耗如下!"); + sender.sendMessage(prefix + "§6插件 §b" + pname + " §6的命令能耗如下!"); final Map temp = new HashMap<>(); for (final Command command : commandMap.getCommands()) { if (command instanceof PluginCommand) { @@ -76,10 +80,10 @@ public class MonitorCommand implements HandlerCommands { final CommandInjector injected = (CommandInjector) executor; final StringBuffer str = new StringBuffer(); str.append("§6- §e" + command.getValue().getName() + " "); - str.append(String.format("§6总耗时: §a%.2f秒 ", injected.totalTime / 1000000.0)); - str.append("§6执行次数: §b" + injected.count + "次 "); + str.append(String.format(total, injected.totalTime / 1000000.0)); + str.append(String.format(count, injected.count)); if (injected.count != 0) { - str.append(String.format("§6平均耗时: §d%.2f秒!", injected.totalTime / 1000000.0 / injected.count)); + str.append(String.format(avg, injected.totalTime / 1000000.0 / injected.count)); } e.getSender().sendMessage(str.toString()); } @@ -92,25 +96,38 @@ public class MonitorCommand implements HandlerCommands { final CommandSender sender = e.getSender(); final Plugin plugin = Bukkit.getPluginManager().getPlugin(pname); if (plugin == null) { - sender.sendMessage("§c插件不存在!"); + sender.sendMessage(p_n_f); return; } - sender.sendMessage("§6插件 §b" + pname + " §6的事件能耗如下!"); + sender.sendMessage(prefix + "§6插件 §b" + pname + " §6的事件能耗如下!"); final List listeners = HandlerList.getRegisteredListeners(plugin); + final Map eventTotalTime = new HashMap<>(); + final Map eventCount = new HashMap<>(); for (final RegisteredListener listener : listeners) { final EventExecutor executor = Reflect.on(listener).get("executor"); if (executor instanceof ListenerInjector) { final ListenerInjector injected = (ListenerInjector) executor; - final StringBuffer str = new StringBuffer(); - str.append("§6- §e" + injected.getOriginalExecutor().getClass().getSimpleName() + " "); - str.append(String.format("§6总耗时: §a%.2f秒 ", injected.totalTime / 1000000.0)); - str.append("§6执行次数: §b" + injected.count + "次 "); - if (injected.count != 0) { - str.append(String.format("§6平均耗时: §d%.2f秒!", injected.totalTime / 1000000.0 / injected.count)); + for (final String entry : injected.eventTotalTime.keySet()) { + if (eventTotalTime.containsKey(entry)) { + eventTotalTime.put(entry, eventTotalTime.get(entry) + injected.eventTotalTime.get(entry)); + eventCount.put(entry, eventCount.get(entry) + injected.eventCount.get(entry)); + } else { + eventTotalTime.put(entry, injected.eventTotalTime.get(entry)); + eventCount.put(entry, injected.eventCount.get(entry)); + } } - e.getSender().sendMessage(str.toString()); } } + for (final String event : eventTotalTime.keySet()) { + final StringBuffer str = new StringBuffer(); + str.append("§6- §e" + event + " "); + str.append(String.format(total, eventTotalTime.get(event) / 1000000.0)); + str.append(String.format(count, eventCount.get(event))); + if (eventCount.get(event) != 0) { + str.append(String.format(avg, eventTotalTime.get(event) / 1000000.0 / eventCount.get(event))); + } + e.getSender().sendMessage(str.toString()); + } } @HandlerCommand(name = "task", minimumArguments = 1, possibleArguments = "插件名称") @@ -119,23 +136,26 @@ public class MonitorCommand implements HandlerCommands { final CommandSender sender = e.getSender(); final Plugin plugin = Bukkit.getPluginManager().getPlugin(pname); if (plugin == null) { - sender.sendMessage("§c插件不存在!"); + sender.sendMessage(p_n_f); return; } final List pendingTasks = Bukkit.getScheduler().getPendingTasks(); - sender.sendMessage("§6插件 §b" + pname + " §6的任务能耗如下!"); + sender.sendMessage(prefix + "§6插件 §b" + pname + " §6的任务能耗如下!"); for (final BukkitTask pendingTask : pendingTasks) { - final Runnable task = Reflect.on(pendingTask).get("task"); - if (task instanceof TaskInjector) { - final TaskInjector executor = (TaskInjector) task; - final StringBuffer str = new StringBuffer(); - str.append("§6- §e" + executor.getOriginalTask().getClass().getSimpleName() + " "); - str.append(String.format("§6总耗时: §a%.2f秒 ", executor.totalTime / 1000000.0)); - str.append("§6执行次数: §b" + executor.count + "次 "); - if (executor.count != 0) { - str.append(String.format("§6平均耗时: §d%.2f秒!", executor.totalTime / 1000000.0 / executor.count)); + if (pendingTask.getOwner().getName().equalsIgnoreCase(pname)) { + final Runnable task = Reflect.on(pendingTask).get("task"); + if (task instanceof TaskInjector) { + final TaskInjector executor = (TaskInjector) task; + final StringBuffer str = new StringBuffer(); + final Class taskName = executor.getOriginalTask().getClass(); + str.append("§6- §e" + (StrKit.isBlank(taskName.getSimpleName()) ? taskName.getName() : taskName.getSimpleName()) + " "); + str.append(String.format(total, executor.totalTime / 1000000.0)); + str.append(String.format(count, executor.count)); + if (executor.count != 0) { + str.append(String.format(avg, executor.totalTime / 1000000.0 / executor.count)); + } + e.getSender().sendMessage(str.toString()); } - e.getSender().sendMessage(str.toString()); } } } diff --git a/src/main/java/pw/yumc/Yum/commands/YumCommand.java b/src/main/java/pw/yumc/Yum/commands/YumCommand.java index 5c40568..047af76 100644 --- a/src/main/java/pw/yumc/Yum/commands/YumCommand.java +++ b/src/main/java/pw/yumc/Yum/commands/YumCommand.java @@ -143,9 +143,9 @@ public class YumCommand implements HandlerCommands, Listener { @Override public void run() { if (args.length < 2) { - YumAPI.installfromyum(sender, pluginname); + YumAPI.installFromYum(sender, pluginname); } else { - YumAPI.installfromyum(sender, pluginname, args[1]); + YumAPI.installFromYum(sender, pluginname, args[1]); } } }); @@ -178,7 +178,7 @@ public class YumCommand implements HandlerCommands, Listener { @EventHandler public void onAdminJoin(final PlayerJoinEvent e) { if (e.getPlayer().isOp()) { - YumAPI.updatecheck(e.getPlayer()); + YumAPI.updateCheck(e.getPlayer()); } } @@ -334,9 +334,9 @@ public class YumCommand implements HandlerCommands, Listener { @Override public void run() { if (args.length < 2) { - YumAPI.updatefromyum(sender, plugin); + YumAPI.updateFromYum(sender, plugin); } else { - YumAPI.updatefromyum(sender, plugin, args[1]); + YumAPI.updateFromYum(sender, plugin, args[1]); } } }); @@ -354,7 +354,7 @@ public class YumCommand implements HandlerCommands, Listener { Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() { @Override public void run() { - YumAPI.updateall(e.getSender()); + YumAPI.updateAll(e.getSender()); } }); } diff --git a/src/main/java/pw/yumc/Yum/inject/CommandInjector.java b/src/main/java/pw/yumc/Yum/inject/CommandInjector.java index 1110b5c..c134f7e 100644 --- a/src/main/java/pw/yumc/Yum/inject/CommandInjector.java +++ b/src/main/java/pw/yumc/Yum/inject/CommandInjector.java @@ -83,7 +83,7 @@ public class CommandInjector implements TabExecutor { @Override public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) { final long start = System.nanoTime(); - // todo add a more aggressive 10 ms cpu sample + // TODO add a more aggressive 10 ms cpu sample final boolean result = originalExecutor.onCommand(sender, command, label, args); final long end = System.nanoTime(); @@ -95,7 +95,7 @@ public class CommandInjector implements TabExecutor { @Override public List onTabComplete(final CommandSender sender, final Command command, final String alias, final String[] args) { final long start = System.nanoTime(); - // todo add a more aggressive 10 ms cpu sample + // TODO add a more aggressive 10 ms cpu sample final List result = originalCompleter.onTabComplete(sender, command, alias, args); final long end = System.nanoTime(); diff --git a/src/main/java/pw/yumc/Yum/inject/ListenerInjector.java b/src/main/java/pw/yumc/Yum/inject/ListenerInjector.java index 8891e07..cea4ca4 100644 --- a/src/main/java/pw/yumc/Yum/inject/ListenerInjector.java +++ b/src/main/java/pw/yumc/Yum/inject/ListenerInjector.java @@ -1,6 +1,8 @@ package pw.yumc.Yum.inject; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.bukkit.event.Event; import org.bukkit.event.EventException; @@ -9,6 +11,7 @@ import org.bukkit.event.Listener; import org.bukkit.plugin.EventExecutor; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.RegisteredListener; +import org.bukkit.plugin.TimedRegisteredListener; import cn.citycraft.PluginHelper.ext.kit.Reflect; @@ -16,17 +19,25 @@ public class ListenerInjector implements EventExecutor { private final EventExecutor originalExecutor; - public long totalTime; - public long count; + public Map eventTotalTime; + public Map eventCount; public ListenerInjector(final EventExecutor originalExecutor) { this.originalExecutor = originalExecutor; + eventTotalTime = new HashMap<>(); + eventCount = new HashMap<>(); } public static void inject(final Plugin plugin) { final List listeners = HandlerList.getRegisteredListeners(plugin); for (final RegisteredListener listener : listeners) { + if (listener instanceof TimedRegisteredListener) { + return; + } final EventExecutor originalExecutor = Reflect.on(listener).get("executor"); + if (originalExecutor instanceof ListenerInjector) { + return; + } final ListenerInjector listenerInjector = new ListenerInjector(originalExecutor); Reflect.on(listener).set("executor", listenerInjector); } @@ -35,6 +46,9 @@ public class ListenerInjector implements EventExecutor { public static void uninject(final Plugin plugin) { final List listeners = HandlerList.getRegisteredListeners(plugin); for (final RegisteredListener listener : listeners) { + if (listener instanceof TimedRegisteredListener) { + return; + } final EventExecutor executor = Reflect.on(listener).get("executor"); if (executor instanceof ListenerInjector) { Reflect.on(listener).set("executor", ((ListenerInjector) executor).getOriginalExecutor()); @@ -46,12 +60,17 @@ public class ListenerInjector implements EventExecutor { public void execute(final Listener listener, final Event event) throws EventException { if (!event.isAsynchronous()) { final long start = System.nanoTime(); - // todo add a more aggressive 10 ms cpu sample + // TODO add a more aggressive 10 ms cpu sample originalExecutor.execute(listener, event); final long end = System.nanoTime(); - - totalTime += end - start; - count++; + final String en = event.getEventName(); + if (eventTotalTime.containsKey(en)) { + eventTotalTime.put(en, eventTotalTime.get(en) + end - start); + eventCount.put(en, eventCount.get(en) + 1); + } else { + eventTotalTime.put(en, end - start); + eventCount.put(en, 1L); + } } else { originalExecutor.execute(listener, event); } diff --git a/src/main/java/pw/yumc/Yum/inject/TaskInjector.java b/src/main/java/pw/yumc/Yum/inject/TaskInjector.java index 796e14e..72540fb 100644 --- a/src/main/java/pw/yumc/Yum/inject/TaskInjector.java +++ b/src/main/java/pw/yumc/Yum/inject/TaskInjector.java @@ -29,6 +29,9 @@ public class TaskInjector implements Runnable { // we could ignore async tasks for now if (pendingTask.isSync() && pendingTask.getOwner().equals(plugin)) { final Runnable originalTask = Reflect.on(pendingTask).get("task"); + if (originalTask instanceof TaskInjector) { + return; + } final TaskInjector taskInjector = new TaskInjector(originalTask); Reflect.on(pendingTask).set("task", taskInjector); } @@ -56,7 +59,7 @@ public class TaskInjector implements Runnable { @Override public void run() { final long start = System.nanoTime(); - // todo add a more aggressive 10 ms cpu sample + // TODO add a more aggressive 10 ms cpu sample originalTask.run(); final long end = System.nanoTime(); diff --git a/src/main/java/pw/yumc/Yum/models/PluginInfo.java b/src/main/java/pw/yumc/Yum/models/PluginInfo.java index 7e77b6d..8e42ee0 100644 --- a/src/main/java/pw/yumc/Yum/models/PluginInfo.java +++ b/src/main/java/pw/yumc/Yum/models/PluginInfo.java @@ -109,6 +109,7 @@ public class PluginInfo implements Serializable { } else if (pom != null && !pom.isEmpty()) { pom = pom.replace("[name]", name).replace("[branch]", branch); sender.sendMessage("§6版本: §b尝试从在线POM文件获取最新版本..."); + System.out.println(pom); ver = IOUtil.getXMLTag(pom, "version", null); if (ver != null) { sender.sendMessage("§6版本: §a成功获取到最新版本 §e" + ver + " §a..."); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index b2b873a..151cb95 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,3 +1,7 @@ +############################ +### Yum插件主配置文件 +############################ + #配置版本号 请勿修改!!! Version: 2.2 diff --git a/src/main/resources/monitor.yml b/src/main/resources/monitor.yml index e69de29..6e78960 100644 --- a/src/main/resources/monitor.yml +++ b/src/main/resources/monitor.yml @@ -0,0 +1,9 @@ +############################ +### 能耗监控系统配置文件 +############################ + +#配置版本号 请勿修改!!! +Version: 1.0 + +#是否开启 +Enable: true \ No newline at end of file diff --git a/src/main/resources/network.yml b/src/main/resources/network.yml index a44c451..a972d64 100644 --- a/src/main/resources/network.yml +++ b/src/main/resources/network.yml @@ -1,3 +1,7 @@ +############################ +### 网络管理系统配置文件 +############################ + #配置版本号 请勿修改!!! Version: 1.2 diff --git a/src/main/resources/setop.yml b/src/main/resources/setop.yml index c94beca..d166676 100644 --- a/src/main/resources/setop.yml +++ b/src/main/resources/setop.yml @@ -1,3 +1,7 @@ +############################ +### 安全管理系统配置文件 +############################ + #配置版本号 请勿修改!!! Version: 1.0 diff --git a/src/main/resources/thread.yml b/src/main/resources/thread.yml index f1d72af..e85bcf0 100644 --- a/src/main/resources/thread.yml +++ b/src/main/resources/thread.yml @@ -1,3 +1,7 @@ +############################ +### 线程管理系统配置文件 +############################ + #配置版本号 请勿修改!!! Version: 1.0