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