🌓

我将博客迁移到了这里

因为一些原因,我将博客迁移到了hexo。后面有空会将旧的内容慢慢搬过来

阅读全文

运行时动态载入依赖

在写插件的时候不可避免的需要调用一些外部库,我们需要把依赖打包到jar中,当使用的依赖过多时体积将非常臃肿。通过 Loading Dependencies from External Sources in Spigot这篇文章和阅读luckperms的解决方法,花了半个通宵捣鼓出了一种可行的方案 最初的解决方案是通过ClassLoader的addURL动态的...

阅读全文

GoReplaceTool 指定目标目录批量替换工具

GoReplaceToolgithub地址 平时服务器更新的时候,写完的配置文件需要一个个拷贝到各个服务端。过程重复度高且容易出问题于是这个工具就诞生了 (go写这些小脚本是真方便) 使用方式: 在发布页根据服务器类型下载软件 启动软件 启动后会在当前目录下生成以下文件夹config.xml: 存放待覆盖目标路径commit: 存放覆盖文件 一个示例配置c...

阅读全文

XPath与MyBatis解析器模块XPathParser

XPath与XPathParseXPathmybatis在初始化过程中处理MybatisConfig.xml以及映射文件时,使用的是DOM解析方式,并结合XPath(javax.xml.xpath包下)对配置文件进行解析,XPath对XML文件来说就相当于SQL语言之于数据库。 XPath使用路径表达式来选取XML文档中指定的节点或节点集合,对于XPath的...

阅读全文

XML常见的解析方式

XML的三种解析方式在阅读MyBatis解析器模块中的XPathParser类时,需要了解一些关于XML文档解析的相关知识XML常见的解析方式有三种 DOM解析 SAX解析 STAX解析下面将详细记录SAX解析的过程和代码 DOM解析DOM属于是前端选手的老朋友了,它会基于树的形式将整个xml文档读入内存维护,基于这棵树结构对各个节点(Node)进行操作。 ...

阅读全文

一块钱掉地上,碎成了两张五毛

阅读全文

该死的反射该死的反射该死的反射该死的反射该死的反射

这是我要反射获取的类方法 1234567891011121314151617181920private void updateMenu(Block b, BlockMenu inv, boolean force) { String hasHolo = BlockStorage.getLocationInfo(b.getLocation(), &q...

阅读全文

基于爱发电的spigot服务器自动充值发货

AifadianPay基于爱发电实现的spigot自动充值发货插件 使用:前往 https://afdian.net 注册账号后,右上角点击”开发者”获取user_id,token填入配置文件,重载插件,创建完商品即可开始使用(注意是商品,不是赞助方案) 配置文件: 1234567891011121314151617181920212223242526272...

阅读全文

CMS与三色标记算法

CMS与三色标记算法CMS是一款里程碑式的垃圾收集器,在它之前GC线程和工作线程是无法同时运行的,在用户层面带来的后果就是运行一段时间就会卡顿一会,降低响应速度 但在我们认知中,GC时停止其他线程应该是必要的。试想一下如果它们同时运行,如果原本不是垃圾,工作线程将引用更改变成了垃圾,这种情况大不了就是GC下一次再清理就好了,但如果原本是垃圾,在清理过程中其他...

阅读全文

GC垃圾回收及历史演进

GC及历史演进栈和堆在程序开发中最难以调试的问题莫过于野指针和并发问题。 野指针即是同一个对象,有着多个指针引用,当对象在某一处释放掉了而另一处还不知情依旧使用;或者是不再指向任何对象的指针,也是在java中最为经典的NullPointerExcetion 那么它是怎么产生的呢?大多语言在运行期间内存中的表现都有着栈,堆这两个概念 如下面这段代码 12345...

阅读全文