diff --git a/mcwl-common/pom.xml b/mcwl-common/pom.xml
index dcf7212..e7b8731 100644
--- a/mcwl-common/pom.xml
+++ b/mcwl-common/pom.xml
@@ -23,6 +23,17 @@
org.springframework
spring-context-support
+
+ com.github.tobato
+ fastdfs-client
+ 1.26.5
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-quartz
+
diff --git a/mcwl-common/src/main/java/com/mcwl/common/config/BloomFilterUtil.java b/mcwl-common/src/main/java/com/mcwl/common/config/BloomFilterUtil.java
new file mode 100644
index 0000000..c9afee5
--- /dev/null
+++ b/mcwl-common/src/main/java/com/mcwl/common/config/BloomFilterUtil.java
@@ -0,0 +1,84 @@
+package com.mcwl.common.config;
+
+
+import org.springframework.stereotype.Component;
+
+import java.util.BitSet;
+
+/***
+ * 布隆过滤器
+ */
+
+@Component
+public class BloomFilterUtil {
+ private static final int DEFAULT_SIZE = 2 << 24; // 布隆过滤器的比特长度
+ private static final int[] seeds = new int[] {7, 11, 13, 31,37, 61}; // 这里要选取质数,能很好的降低错误率
+
+ private BitSet bits = new BitSet(DEFAULT_SIZE);
+ private SimpleHash[] func = new SimpleHash[seeds.length];
+
+ public static void main(String[] args) {
+ String value = "crankzcool@gmail.com";
+ BloomFilterUtil filter = new BloomFilterUtil();
+// System.out.println(filter.contains(value));
+// filter.add(value);
+// System.out.println(filter.contains(value));
+
+ filter.add("1");
+ filter.add("2");
+ filter.remove("1");
+ System.out.println(filter.contains("1"));
+ }
+
+ public void remove(String value) {
+ if (value == null) {
+ return;
+ }
+ for (SimpleHash f : func) {
+ bits.set(f.hash(value), false);
+ }
+ }
+
+ public BloomFilterUtil() {
+ for (int i = 0; i < seeds.length; i++) {
+ func[i] = new SimpleHash(DEFAULT_SIZE, seeds[i]);
+ }
+ }
+
+ public void add(String value) {
+ for (SimpleHash f: func) {
+ bits.set(f.hash(value), true);
+ }
+ }
+
+ public boolean contains(String value) {
+ if (value == null) {
+ return false;
+ }
+ boolean ret = true;
+ for (SimpleHash f : func) {
+ ret = ret && bits.get(f.hash(value));
+ }
+ return ret;
+ }
+ public static class SimpleHash {
+ private int cap;
+ private int seed;
+
+ public SimpleHash(int cap, int seed) {
+ this.cap = cap;
+ this.seed = seed;
+ }
+
+ public int hash(String value) {
+ int result = 0;
+ int len = value.length();
+ for (int i = 0; i < len; i++) {
+ result = seed * result + value.charAt(i);
+ }
+ return (cap - 1) & result;
+ }
+ }
+
+
+}
diff --git a/mcwl-common/src/main/java/com/mcwl/common/config/FastConfig.java b/mcwl-common/src/main/java/com/mcwl/common/config/FastConfig.java
new file mode 100644
index 0000000..0c7e862
--- /dev/null
+++ b/mcwl-common/src/main/java/com/mcwl/common/config/FastConfig.java
@@ -0,0 +1,20 @@
+package com.mcwl.common.config;
+
+import com.github.tobato.fastdfs.FdfsClientConfig;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.EnableMBeanExport;
+import org.springframework.context.annotation.Import;
+import org.springframework.jmx.support.RegistrationPolicy;
+
+/**
+ * @BelongsProject: demo02
+ * @BelongsPackage: com.bw.config
+ * @Author: zhupengfei
+ * @CreateTime: 2022-12-16 14:37
+ */
+@Configuration
+// 解决 jmx 重复注册 bean 的问题
+@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
+public class FastConfig {
+
+}
diff --git a/mcwl-common/src/main/java/com/mcwl/common/config/FastUtil.java b/mcwl-common/src/main/java/com/mcwl/common/config/FastUtil.java
new file mode 100644
index 0000000..58e4155
--- /dev/null
+++ b/mcwl-common/src/main/java/com/mcwl/common/config/FastUtil.java
@@ -0,0 +1,53 @@
+package com.mcwl.common.config;
+
+import org.springframework.stereotype.Component;
+import com.github.tobato.fastdfs.domain.fdfs.StorePath;
+import com.github.tobato.fastdfs.service.FastFileStorageClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+
+/**
+
+ */
+@Component
+public class FastUtil {
+ private static final Logger log = LoggerFactory.getLogger(FastUtil.class);
+
+ @Resource
+ private FastFileStorageClient storageClient ;
+
+ /**
+ * 上传文件
+ */
+ public String upload(MultipartFile multipartFile) throws Exception{
+ String originalFilename = multipartFile.getOriginalFilename().
+ substring(multipartFile.getOriginalFilename().
+ lastIndexOf(".") + 1);
+ StorePath storePath = this.storageClient.uploadImageAndCrtThumbImage(
+ multipartFile.getInputStream(),
+ multipartFile.getSize(),originalFilename , null);
+ return storePath.getFullPath() ;
+ }
+ /**
+ * 删除文件
+ */
+ public String deleteFile(String fileUrl) {
+ if (StringUtils.isEmpty(fileUrl)) {
+ log.info("fileUrl == >>文件路径为空...");
+ return "文件路径不能为空";
+ }
+ try {
+ StorePath storePath = StorePath.parseFromUrl(fileUrl);
+ storageClient.deleteFile(storePath.getGroup(), storePath.getPath());
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ }
+ return "删除成功";
+ }
+
+}
diff --git a/mcwl-resource/pom.xml b/mcwl-resource/pom.xml
new file mode 100644
index 0000000..a17ec97
--- /dev/null
+++ b/mcwl-resource/pom.xml
@@ -0,0 +1,26 @@
+
+
+ 4.0.0
+
+ com.mcwl
+ mcwl
+ 3.8.8
+
+
+ mcwl-resource
+
+
+ resource资源中心模块
+
+
+
+
+
+ com.mcwl
+ mcwl-common
+
+
+
+
diff --git a/pom.xml b/pom.xml
index 38cb07c..aa2fb2f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -228,6 +228,7 @@
mcwl-quartz
mcwl-generator
mcwl-common
+ mcwl-resource
pom