首页
友链
关于
免责声明
Search
1
王者营地战绩数据王者荣耀查询网页源码
6,210 阅读
2
群晖Active Backup for Business套件备份Linux服务器教程
4,384 阅读
3
影视分享
4,313 阅读
4
(亲测)Jrebel激活破解方式2019-08-21
4,290 阅读
5
centos7 安装及卸载 jekenis
3,573 阅读
日常
文章
后端
前端
Linux
异常
Flutter
分享
群辉
登录
Search
标签搜索
docker
springboot
Spring Boot
java
linux
Shiro
Graphics2D
图片
游戏账号交易
Mybatis
Spring Cloud
centos
脚本
Web Station
群辉
王者营地
战绩查询
平台对接
Spring Cloud Alibaba
nacos
绿林寻猫
累计撰写
249
篇文章
累计收到
26
条评论
首页
栏目
日常
文章
后端
前端
Linux
异常
Flutter
分享
群辉
页面
友链
关于
免责声明
搜索到
249
篇与
绿林寻猫
的结果
2022-01-12
Graphics2D 图片上绘制文字,并设置文字边框
代码实例 // 读取原图片信息 //得到文件 File file = new File("d:\\1.png"); //文件转化为图片 Image srcImg = ImageIO.read(file); //获取图片的宽 int srcImgWidth = srcImg.getWidth(null); //获取图片的高 int srcImgHeight = srcImg.getHeight(null); BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = bufImg.createGraphics(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); g2.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); FontRenderContext frc = g2.getFontRenderContext(); TextLayout tl = new TextLayout("你好", new Font("黑体", Font.BOLD, 25), frc); //文字所在位置 Shape sha = tl.getOutline(AffineTransform.getTranslateInstance(690,390)); g2.setStroke(new BasicStroke(3.0f)); //边框颜色 g2.setColor(new Color(178, 113, 23)); g2.draw(sha); //字体颜色 g2.setColor(Color.WHITE); g2.fill(sha); g2.dispose(); ByteArrayOutputStream bs = new ByteArrayOutputStream(); ImageOutputStream imOut = ImageIO.createImageOutputStream(bs); ImageIO.write(bufImg, "png", imOut); InputStream inputStream = new ByteArrayInputStream(bs.toByteArray()); OutputStream outStream = new FileOutputStream("d:\\3.png"); IOUtils.copy(inputStream, outStream); inputStream.close(); outStream.close();
2022年01月12日
454 阅读
0 评论
0 点赞
2022-01-12
Graphics2D 在一张图片上添加一个带有透明背景的图片或绘制透明图片
代码实例 // 读取原图片信息 底图 //得到文件 File file = new File("d:\\1.png"); //文件转化为图片 Image srcImg = ImageIO.read(file); //获取图片的宽 int srcImgWidth = srcImg.getWidth(null); //获取图片的高 int srcImgHeight = srcImg.getHeight(null); // 加水印 BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB); Graphics2D gs = bufImg.createGraphics(); //得到带有透明背景的图片 Image ima=ImageIO.read(new File("d:\\2.png")); BufferedImage bi=new BufferedImage(ima.getWidth(null),ima.getHeight(null),BufferedImage.TYPE_INT_BGR); Graphics2D gg=bi.createGraphics(); bi= gg.getDeviceConfiguration().createCompatibleImage(ima.getWidth(null), ima.getHeight(null), Transparency.TRANSLUCENT); gg = bi.createGraphics(); gg.drawImage(ima, 0, 0, null); gg.dispose(); //将透明背景图绘制到底图上 // 第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y) gs.drawImage(bi, 605, 148,null); gs.dispose(); ByteArrayOutputStream bs = new ByteArrayOutputStream(); ImageOutputStream imOut = ImageIO.createImageOutputStream(bs); ImageIO.write(bufImg, "png", imOut); InputStream inputStream = new ByteArrayInputStream(bs.toByteArray()); OutputStream outStream = new FileOutputStream("d:\\3.png"); IOUtils.copy(inputStream, outStream); inputStream.close(); outStream.close();绘制透明图片 int width=256; int height=256; //创建BufferedImage对象 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取Graphics2D Graphics2D g2d = image.createGraphics(); // 增加下面代码使得背景透明 image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT); g2d.dispose(); g2d = image.createGraphics(); // 释放对象 g2d.dispose(); // 保存文件 ImageIO.write(image, "png", new File("D:/test.png"));
2022年01月12日
257 阅读
0 评论
0 点赞
2022-01-12
Graphics2D 图片上添加图片或绘制二维码
代码实例 // 读取原图片信息 //得到文件 File file = new File("d:\\1.png"); //文件转化为图片 Image srcImg = ImageIO.read(file); //获取图片的宽 int srcImgWidth = srcImg.getWidth(null); //获取图片的高 int srcImgHeight = srcImg.getHeight(null); // 加水印 BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g = bufImg.createGraphics(); g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null); //使用工具类生成二维码 Image image = createQrCode("二维码内容", 226, 226, "二维码中间logo图片地址"); //将小图片绘到大图片上,表示你的小图片在大图片上的位置。 g.drawImage(image, 263, 700, null); //或者将图片绘制上去 File file = new File("d:\\2.png"); BufferedImage read = ImageIO.read(file); Graphics2D k = bufImg.createGraphics(); //将小图片绘到大图片上,表示你的小图片在大图片上的位置。 k.drawImage(read, 650, 188, 150,150,null); k.setColor(Color.WHITE); k.dispose(); //设置颜色。 g.setColor(Color.WHITE); g.dispose(); ByteArrayOutputStream bs = new ByteArrayOutputStream(); ImageOutputStream imOut = ImageIO.createImageOutputStream(bs); ImageIO.write(bufImg, "png", imOut); InputStream inputStream = new ByteArrayInputStream(bs.toByteArray()); OutputStream outStream = new FileOutputStream("d:\\3.png"); IOUtils.copy(inputStream, outStream); inputStream.close(); outStream.close(); private static BufferedImage createQrCode(String content, int width, int height, String logoPath) throws IOException { QrConfig config = new QrConfig(width, height); if (logoPath != null) { Image image = ImageIO.read(new FileInputStream(new File(logoPath))); config.setImg(image); } config.setErrorCorrection(ErrorCorrectionLevel.H); return QrCodeUtil.generate( content, config); }二维码生成工具引用 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.2.4</version> </dependency>
2022年01月12日
501 阅读
0 评论
0 点赞
2021-12-25
王者荣耀营地号查询及英雄皮肤查询接口
简要描述营地号查询另有战绩及对局详情查询请求URLhttps://yd.maven.vip/open/api/get-wz-info测试key(有效期2022-03-08):f673fe99dc43e973d48df3d717a72b95演示地址:https://yd.maven.vip/yd/index获取Key请求方式POST参数参数名必选类型说明id是string营地号key是string秘钥返回参数说明参数名类型说明areaNameString区serverNameString服nicknameString昵称roleNameString角色名称avatarString头像jobNameString段位rankingStarString几星winRateString胜率mvpNumIntegerMVP场次creditLevelInteger信用等级topWinInteger连胜heroNumInteger英雄数skinNumInteger皮肤数crystalNumInteger水晶数heroNumInteger等级levelInteger英雄数totalCountInteger总场次totalGradeInteger战斗力userIdIntegeruserIdroleIdString当前角色IDroleIdsarray所有角色IDheroarray英雄heroskinarray英雄皮肤heroskinImgarray皮肤图片heroImgarray英雄图片返回示例{ "msg": "操作成功", "code": 0, "data": { "areaName": "苹果", "serverName": "微信112区", "nickname": "囍欢三岁", "roleName": "你赖赖个蛋", "avatar": "http://p.qlogo.cn/yoyo_avatar/484795399/d067ba2fcf5a90dcf8409cf8b305d533C/76", "jobName": "至尊星耀II", "rankingStar": 2, "winRate": "52.45%", "mvpNum": 1453, "creditLevel": 7, "topWin": 6, "heroNum": 105, "skinNum": 203, "crystalNum": 0, "level": 30, "totalCount": 6965, "totalGrade": 69386, "userId": 484795399, "online": 0, "roleId": "135533382", "roleIds": [ "135533382", "2813973723", "2813973020" ], "hero": [ "赵云", "马可波罗", "孙尚香", "橘右京", "娜可露露", "诸葛亮", "李信", "花木兰", "狄仁杰", "吕布", "虞姬", "百里玄策", "刘禅", "不知火舞", "孙悟空", "老夫子", "公孙离", "墨子", "沈梦溪", "韩信", "小乔", "马超", "铠", "张飞", "嬴政", "周瑜", "王昭君", "杨玉环", "程咬金", "大乔", "苏烈", "盾山", "百里守约", "钟馗", "云缨", "太乙真人", "蒙犽", "杨戬", "鬼谷子", "蒙恬", "关羽", "后羿", "李白", "项羽", "貂蝉", "牛魔", "亚瑟", "鲁班七号", "上官婉儿", "孙膑", "黄忠", "曜", "扁鹊", "伽罗", "鲁班大师", "白起", "干将莫邪", "钟无艳", "李元芳", "嫦娥", "刘备", "兰陵王", "狂铁", "曹操", "成吉思汗", "姜子牙", "芈月", "盘古", "裴擒虎", "西施", "明世隐", "米莱狄", "瑶", "夏侯惇", "宫本武藏", "镜", "刘邦", "庄周", "张良", "东皇太一", "甄姬", "妲己", "蔡文姬", "梦奇", "廉颇", "达摩", "艾琳", "司马懿", "典韦", "露娜", "孙策", "哪吒", "元歌", "猪八戒", "阿古朵", "安琪拉", "澜", "高渐离", "阿轲", "雅典娜", "弈星", "夏洛特", "女娲", "云中君", "司空震" ], "heroskin": [ "苏烈:千军破阵", "孙膑:未来旅行", "赵云:淬星耀世", "姜子牙:炽热元素使", "达摩:大发明家", "鲁班大师:乓乓大师", "伽罗:天狼溯光者", "沈梦溪:鲨炮海盗猫", "钟馗:驱傩正仪", "云缨:赤焰之缨", "百里玄策:原初追逐者", "露娜:哥特玫瑰", "程咬金:演武夺筹", "蒙恬:秩序猎龙将", "大乔:守护之力", "露娜:瓷语鉴心", "安琪拉:心灵骇客", "元歌:云间偶戏", "兰陵王:默契交锋", "花木兰:默契交锋", "达摩:黄金狮子座", "赵云:未来纪元", "虞姬:霸王别姬", "项羽:霸王别姬", "吕布:御风骁将", "诸葛亮:时雨天司", "公孙离:祈雪灵祝", "孙尚香:水果甜心", "牛魔:奔雷神使", "杨戬:次元傲视", "刘禅:英喵野望", "刘禅:天才门将", "铠:绛天战甲", "刘禅:秘密基地", "芈月:白晶晶", "诸葛亮:黄金分割率", "镜:炽阳神光", "娜可露露:晚萤", "曜:归虚梦演", "亚瑟:潮玩骑士王", "狄仁杰:万华元夜", "虞姬:启明星使", "亚瑟:心灵战警", "公孙离:无限星赏官", "孙悟空:零号·赤焰", "孙膑:天狼运算者", "澜:孤猎", "云中君:纤云弄巧", "阿古朵:熊喵少女", "裴擒虎:街头旋风", "瑶:森", "夏侯惇:战争骑士", "镜:冰刃幻境", "张良:一千零一夜", "东皇太一:东海龙王", "蔡文姬:蔷薇王座", "梦奇:美梦成真", "司马懿:魇语军师", "露娜:绯红之刃", "孙策:海之征途", "元歌:午夜歌剧院", "猪八戒:年年有余", "高渐离:金属狂潮", "雅典娜:战争女神", "女娲:尼罗河女神", "云中君:荷鲁斯之眼", "李信:灼热之刃", "钟馗:地府判官", "刘邦:圣殿之光", "成吉思汗:维京掠夺者", "姜子牙:时尚教父", "马超:神威", "兰陵王:隐刃", "廉颇:无尽征程", "甄姬:冰雪圆舞曲", "花木兰:兔女郎", "后羿:阿尔法小队", "赵云:龙胆", "宫本武藏:未来纪元", "诸葛亮:掌控之力", "小乔:丁香结", "张飞:五福同心", "赵云:引擎之心", "鲁班七号:黑桃队长", "白起:白色死神", "刘备:万事如意", "宫本武藏:万象初新", "关羽:武圣", "韩信:街头霸王", "项羽:海滩派对", "上官婉儿:修竹墨客", "芈月:红桃皇后", "盘古:创世神祝", "庄周:鲤鱼之梦", "墨子:进击墨子号", "项羽:科学大爆炸", "张良:幽兰居士", "安琪拉:如懿", "狄仁杰:阴阳师", "吕布:猎兽之王", "虞姬:凯尔特女王", "孙悟空:美猴王", "老夫子:功夫老勺", "程咬金:星际陆战队", "赵云:忍·炎影", "杨戬:永曜之星", "蔡文姬:繁星吟游", "嬴政:暗夜贵公子", "苏烈:玄武志", "上官婉儿:天狼绘梦者", "黄忠:烈魂", "小乔:缤纷独角兽", "兰陵王:暗隐猎兽者", "宫本武藏:鬼剑武藏", "夏侯惇:乘风破浪", "吕布:圣诞狂欢", "李白:千年之狐", "貂蝉:圣诞恋歌", "曹操:幽灵船长", "刘邦:德古拉伯爵", "赵云:皇家上将", "妲己:魅力维加斯", "马可波罗:暗影游猎", "狄仁杰:魔术师", "狄仁杰:鹰眼护卫", "吕布:末日机甲", "孙悟空:至尊宝", "嬴政:白昼王子", "杨玉环:遇见飞天", "蒙犽:狂想玩偶喵", "后羿:辉光之辰", "花木兰:水晶猎龙者", "上官婉儿:梁祝", "李元芳:银河之约", "裴擒虎:李小龙", "甄姬:游园惊梦", "老夫子:醍醐杖", "沈梦溪:星空之诺", "嫦娥:露花倒影", "周瑜:海军大将", "雅典娜:单词大作战", "弈星:混沌棋", "马可波罗:激情绿茵", "花木兰:剑舞者", "狄仁杰:锦衣卫", "虞姬:加勒比小姐", "百里玄策:威尼斯狂欢", "百里玄策:白虎志", "孙悟空:西部大镖客", "老夫子:潮流仙人", "公孙离:花间舞", "小乔:万圣前夜", "铠:龙域领主", "王昭君:精灵公主", "哪吒:次元突破", "大乔:伊势巫女", "苏烈:爱与和平", "盾山:极冰防御线", "百里守约:绝影神枪", "孙悟空:地狱火", "杨戬:埃及法老", "鬼谷子:阿摩司公爵", "张飞:虎魄", "李白:范海辛", "孙尚香:末日机甲", "伽罗:花见巫女", "鲁班大师:归虚梦演", "干将莫邪:第七人偶", "李元芳:特种部队", "猪八戒:西部大镖客", "典韦:穷奇", "韩信:教廷特使", "扁鹊:化身博士", "王昭君:幻想奇妙夜", "狄仁杰:超时空战士", "盾山:御銮", "盾山:圆桌骑士", "太乙真人:饕餮", "太乙真人:华丽摇滚", "鬼谷子:幻乐之宴", "鬼谷子:原初探秘者", "牛魔:制霸全明星", "牛魔:御旌", "亚瑟:死亡骑士", "孙膑:妖精王", "孙膑:归虚梦演", "扁鹊:炼金王", "达摩:拳王", "白起:无畏之灵·狰", "钟无艳:海滩丽影", "李元芳:黑猫爱糖果", "刘备:纽约教父", "狂铁:御狮", "曹操:烛龙", "宫本武藏:地狱之眼", "芈月:重明", "明世隐:虹云星官", "明世隐:疑决卦", "米莱狄:御霄", "夏侯惇:朔风刀", "宫本武藏:霸王丸", "妲己:少女阿狸", "李信:一念神魔" ], "heroskinImg": [ "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/629c7481ec4d3a195d32203da583d530.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/f53530e1645619688f5f21678faaa632.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e5a28a538f6a8d009899bd88afd81c31.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/9563ab826e87b8c1df5c3fc45d4f80fd.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1fcfbbbb5110ca0dd78b385029c2c210.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/abf2cdd502ad4c5a5d378ad9991d459e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/3657736990cd8da7d237fdcc33daf490.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1619b403d0e3e732e9369d7e316435cf.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/9d980b0a3a5038f1b6b5c74ca0874f83.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/016dd56a6c3cbc24433d3cbe88bbeda8.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/5571d963c50bb6b5b12ccfeaabccd8a2.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/fca3a7a6fe297df2378e264a03c69d63.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/a385831b0581abebd6f7b957e7653aab.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/f926704c6f1a46b5fb9455ca58c4402a.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/69ffae34f5f1374a527f5504c489e1f7.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/256d8c1b13660c367746f0e8346c986c.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/ff5a10736c2c2221d20ce65391a82ab9.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/b5d222184fe4961c09747cbfed6a69fa.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1aecae2bb6ac9fee888f9cfe115085c1.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1af3cc352385aba959eb58bae8f0eafe.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/23179e3c5532412462250ee9e570d5f4.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/c3b0716bf42278f2c44bd383a489db8e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/4aa3a2a880d6cc7bb5a6f03872929db2.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/22c9c233542066be2953fbf99dbcf3ac.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/b95b3d8a8601870193cbbf39e2d14286.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/fbba185ed39931b9d7d982011206b0bc.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/32ff6eecab783820bac797f0253acfb9.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1d5bbf1de839e52bf8c77aa597302dba.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/ba32bc59b3bdc3c606d1c7edb06a9330.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/7d78a50c73ac541c84dde868e96579ce.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/be09be6efcd07bf709f997ec3c727723.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/78fb89b7bcbb3050b5a17b847ee3114e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/640d9ad33f205521537bba1e54484838.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e342f8c08d8df3c124680aaad1863b6e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e93678123748c3d7d55b3af77a54b189.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/53989332be26de567d5aaffcd00b90fd.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/76f2661050214459795b8eba9b0f5355.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/b5a9dc52bbd88dc443277ba6e548c65f.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/dcdeb7d66aa673ce5021844cb791098c.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/b2d7dbbece3bb8afdaf6360dcfe6a7fa.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1a8a63aaef43f8dafe372da48fe6d7d1.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/772602913f0ad67bb6e790ef178b4dd9.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/2810a4bc768c0cf3b4e41466dc8dfda2.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/a2898ca117fd7f4c965404e4e2c16d3e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1514d36d6b17b3cd88dc577ac5cd45cf.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/0da3d509f747c76abc1c89002c996028.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/092de6f3163d88a7a283b19daeae74e5.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/2c48388d94f07a30c4ec5ddb60646873.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/92d0448aea47b8449e9155c9b4f0a572.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/821546c27b80a195c7eae44818dabd0b.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1341c309135985c2134c943eeb2b2264.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/f18ea8f11cf5c693cd3551325a4cee17.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/da4b3eed23b92161828bd45076cccdb6.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/7d14482ed5ad0e6b05a755da8370b9bd.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/fe710da931b15aeb0c03997d9d3cde80.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e1ddc9c8d8a131a07910edaf0cdba92c.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e457e11e82d1a75d9858ceb908115d05.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/9d925bd93f5f719c45610b509f17327b.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/7c364f2b530fae1dc3407ef37dccc51a.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/bc946ec6dbfb84ccfb3dbc6b58837377.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/ee417e7acf411ff4e43863e3746c015d.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/a05509ce4a449d89101270c3cdd0d470.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/b84c83e82ea117dc3790aeb7c0de3d64.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/0daf08d04e3537c244701dce853203e9.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/cac9f7da83fa9d6a27b789c340ae2e19.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/559f043d767b822963e53d457389a790.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/8a6558181a78377ddc8dbb406b760037.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/ad480700ddff2e9443ec691b60e71b99.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/eaab2d55ff6481686fea9980167ef613.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/71ed2da205639545ad3e13b8b1d9b15a.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/093c38ade54d0934acda5ab55656c8ed.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/9f8a04729af499906d552b5b76cb67af.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/f4f1b46089ca10039ca78a5e7c61b6f4.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/265832f6d7a98d24862837c3569a5346.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/cd1b1f7a188c580ad13b405a09ae5f2e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/2123e7dcdb94023b91c14077c80d9722.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/706f93a8f89c43e4d646775ec803591e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/12047a02d0603ac5f3c88ebb3770bce7.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/ba512b0e4ae1dbd76d019dfb05cc0223.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/ff782dcb455d6fda061049df3c5e1fd9.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/22f2f0b0fd8f8c9cdb8ce3acd7f86747.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/bdf1a2522ebd9aa8149cd63855bd6739.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/d101ae776c56b55d4411c1878216d080.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/ab8885fb1d12f1fc793439db7417bdf5.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/4e7352de1d2735b3ce69a1525cc17d09.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1d51a6eb0d88b108568de8db3faf2149.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/04f09ff0f9907ba17937ffe7b27d6fac.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/8bb8b9cfe9ceae934a6dfa671364f496.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/86c018c1b6f837043ee868839da1436e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/4c5a0c732939e2f5ad246493837987c4.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/fb7d58b013e4c2b0ba35d53869988dcb.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/331aed456c9af5e48ee5b4aea2edceae.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e280ff18b1a21b0f83959b878e49e884.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/f6b5e3cbd753fd54928c3da9c9a27879.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/c7b9dbe9b03632d6ba59254cf993f94e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e2d8a6275caf3136506499e72d3a42c8.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/43eaa8f9937985a00488826e1ebd7778.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/a9876baefe7666e692a98f32ca502567.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/99ac0470fca056a66f717e60a6d2834e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/60fb14cf8af16d708d6fe3c50c0095c8.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/eb017908d112c6fe975757ec06b8bf78.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/6ca56d66ca9b8aafcf0ebd37f71f685a.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/3c46d1af9a41146dd4cf7edd34595659.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/b3115bf052e981a84db081c3fb1b72e9.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/c00a1d0ea8c555d52bdf00cf43e764ff.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/3cfb6a23847a4c2ee2b5ac126ab25031.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/7579e61ce0a7d767a46666e6267ff870.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/c31d5edb79114727079fbc5c2dae5c22.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/839defa2597fbb5a5ad6de12916ec55a.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/10a994defaa2f5118914574fca4e50d2.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/092d6b890e404bacce929a0e96c25aea.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/c698ab5da936b7150345b504fd422d85.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/3fa17964af28ae4dcabcbe438838b1f2.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e9211da56c66b003ae8684ceeb895857.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1fa71760c9254dd2b8763cf9a7498ce5.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/3772ba361fd71fe5166eb46f1cce3ef3.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/0d81edab8ca75271ee81a74567cebfbf.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/7dc4c6ae51678b0bb0dc3977e50a47a9.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/710983c96e724e9fea1ff19b6e672a1c.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/053a704395e14148a45cdbf61274ddc8.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/50ba35d76422eba7cdfec988a6ac92f7.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/fbc588d4a39df194ac949a97e387a841.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/6add285ef83632d2198b1b8c0991cba4.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/4c55708bdd41a1823aecd2521dcd45b5.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/c80357d58ffbb1560024b8519c147456.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/573b297c4f856ad7b3bb15fc2e4f08c6.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/8ebce75837b7ff8bd380a248a6c4ce40.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/bf93b4997a47e7ad9396b1b2d2159a57.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/3880948280b3ad649ec895471daeafab.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/30bfa4b22b0d653931f419791ddf5932.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/bd061ba056f329026b928bf6b6b4347b.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/3ce7ab57dd7775edfbc27506ad5f9e8b.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/877b94ed79586abd503ff508f304c379.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/86bc318b32ea5d72af709edb8f678bc3.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/5d8289776e1b84f4b99df747cf754cc4.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/93161fa8bc2f76883d89b66ef3a589ac.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/a6e7639693ac9e7860fa5f53a7f051cb.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/6bf8c61087130cd759134866183a0dc5.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/db23e97fd0bd66039373b6698964e1c8.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/27fc565b918a2b793f6c51dcb2bc9194.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/a2cf74627582e0ae230a30177a9ed0ad.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/15f0addec726a1d4263f073849be8ada.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/9dd033bd75a6b14ea68d5e47c31c223e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/21b3b7b62f806c5392ac7fdee2f1079d.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/755c3c09e6772c40dde9c489d172ff8a.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/373f8b5878256898a58236fa430e37e1.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/ed405dbbd6a027cbb8a0a129c94d2fd4.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/417450c5a8f5055def6550625429e706.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/93cdc78774e0d1dbfa205e4f54406a09.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/251c69772496b28d9b1e8cb86ed93472.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/7b9d1c01abd8683fb719ab53d93a2e7c.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e4ad5ecf5aa0f8d292ba4dc0c93f27d5.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/d301439c3e5e3e0028a70cc92fa0d2ad.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/99f20c76fb7beaa71432b77e204ec55f.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/4f8db7f0ef5d3a8752c4aaa4d91a41f5.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/3a3bcecc762c558270fa785d31effe1a.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/2cb08879ab1bfc243b898c06a8878db7.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/90fdaa5809bffb96c13c054a44696740.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/b637c27a496ad521ac5fca9a25abc283.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/96be83c87f1d7fed8332d98277bb9e9e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/4395b5a2ee5cc207bc56a8ede5187026.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/2f5ed2d019314a8d0f19dbb403e66739.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/5b11629a941cbb665415613e910ea597.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/75de00743121f042cedf0722a5425a09.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/142937485823aac279bddbb126950efa.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e678b29299bf44fb3a852b3c465d38da.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e82f8fc1554fee56526ee6d1c71a676c.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/b8e1dea182344d5139c881dee1729751.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/fb9b75af80ae803a2c0a410133a4ffe3.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/c8d2458b71d0e0666a17f1735ffd50fa.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/4f0d9d7361b4e855d7c4f9c3e1e5a8ac.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/0bb5edfebc5dc63fc9cab52fca1407b4.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1f5ae33c67e0db4c978c98337e9a48fd.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1358c212eceba3b2e010482ac23bdb55.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/a07a3fc81e883f4061c7501e3151e39d.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/66a6a342de6ac9265c94724cbc741369.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/7c12e191aebe11698f6ae2efcd6b2252.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/6164dfea79d1c1b660908e57e2127759.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/3465f764fa58a7868ff4f942bda9928f.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/456f583a514b15ceb1d80a45ccce2a6f.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/6a663b4cb257ce64b956ec4a9d4175ff.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/a93bcd7fa31117f6b0c409fe6ef01f40.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/ace0faa11090804258e9d158142fd012.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/90e0c3aee35a24490fb31b91136ac4ae.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/dac52cb0077de4985810e128eef0bee8.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/08c6f06b9ddcbb3fc10d26cb52824469.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/1ff6df6a219e628b170606fc4fdf25a4.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/0711908f0903775a7344ac48814b1eb8.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/c7a2a18afc8d3866d9df5130a80a49ae.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/409bc37162fe0315bdc60b2060571601.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e60578c7c72f78689dcf1cbd2ed73547.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/9d529260965cf8233f72781e7971dd12.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/7e71796e046cd3c65114ead2a51f0d6d.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/5fe21c09d9acbab979fc50368997220e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/fe90097d336b03ce6c12647da03e0315.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/0bc16f8b68bb57d5e107c0a163be3ddf.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/e08b74b38e46902fa6fdcc7116437c6a.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/15a67c6cd85a564a430729494642b3fb.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/541d95c53ae85202f53ca61f6dfa6a2e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/8c40d80f9303cff4828d935c5de4d8d5.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/0690f66797b39157368344ebf63f0979.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/3e094a90a290193141aba095c62f2b02.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/2d9d203456bd295cfa58d6d959403381.jpg" ], "heroImg": [ "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/1aa811d7f072c5059eea7fec7c6786f0.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/70a9a5fe4bf9f20f1f8d0371d663274c.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/1d47efb4f5708bef2b867b25a40dc9fc.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/cd34633a071ce2a1cd8e147c07989426.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/05e752218e48364aeed4a5ad245ea733.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/fda93c79275b812a6c1c189fbebf8b08.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/394e46f320cf058703c6e9edeffa92b9.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/47fbabb76f953a5c6b33af19c371fcf2.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/7e472882ce70eacc9d760eb45c4371b6.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/ad5cd456156595403e6b7ac55ffc56c1.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/5339d4e7ad1472aacda03b60bdc98673.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/87516fd00cd029686ae45bd895e7edd2.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/73f76f1f307b308fb0fb6cb3041d588c.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/973d625cf74d5056820963a71b814a9f.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/b856d1ed19f040e8c063f0e71c5576cd.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/0426a7913eedc8b6934b19ccd22d4ab5.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/9a814581f1c28f5ff6532d9c184edac4.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/36e92222c889262004935d5f5fd945e0.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/9df55792e67ea496b1057bc2056fbb34.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/b5256ec780343c4e20e397b43cab96a9.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/3a1471f69a01a13f2e2a017d6163edb7.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/269b602990e6996f9731e8d30cbe0a19.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/02894536f26b0e800adefdbebdc3ccba.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/a862393f7e812c6ce936a277252bb071.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/ea39b4ee7fa5dad3a69f2441fe8ac2cc.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/4d16c07d597aa512f538b523c8b07066.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/9d43227a3e90c1106043f532463e3f5e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/9fac09812956494ac7ad97c73b6b264e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/7c9ff9662e7c20bbce2061ef15ea3ace.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/02d4cab27a18f299eee11c10cdb9c54a.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/d94a80ecd6de76f92b4248b9c407f73a.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/0646dbaafba6b4253d3ba96eab3545e5.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/5bdf9b74f5cd13179dcf74f5b0baf7c7.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/90a768b2bb10fc24bc8bf4d9025d0c66.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/ffece8b40536459636b882eae732a758.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/635fedb182fda90234a390adee932414.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/576c1c16e465972e61234cdc737775ff.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/28ec9e61d4a7110430797540f1d28d2d.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/56a35b69667a4304e875f7c7bc429288.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/379a84f6e5373ac26a17c61c0bbc0d31.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/4790a2099e1cb8ee5ff5f84523669cb9.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/7ffb7d41d77a832f74b214908f7d8a70.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/293040fc607f40caf6d6e16042012182.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/1f1bca04cbe86cec3e23127c63e62991.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/21d7b29ca8069adc01993b030c648779.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/61274e3679d08fe8c5d05bbef369bc3c.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/e59035a2611f71446d8ae54ff31a69b1.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/0cc0d5988fa5c985c605bbc146421fc1.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/b7eab6088df1336ae87f97f6e75151d0.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/dc891325f7efdc0bab2c425db1b70e54.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/1cfe0a5b82b61247ff542882baf5a186.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/b99c6caed4ecba7401d275e86166023a.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/9e2bf4202057e5506c175f2bd3767ebb.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/30c42e14bee5588779c5861ae3ff4883.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/b035d36087d003618fa90dc64bc5c87b.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/2f7a4d4fa499d7a6392390a2c095f847.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/9bc10a0f9eae628d0a8451924ed675d4.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/ccddd2de691ff2d56b651877f72d90ed.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/ed4c99671055e5d28496a3c96229124b.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/e7876ea8e0d04a4bb02fa7a1cb896a43.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/770c85cd5ce5bc5163ce63d9d7369d5b.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/a07b643eebed42071f6784da1047b92c.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/15606f1fd56cab2813ff00f5015bdf17.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/e37a86d1a1dbed0cd53c95582977f075.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/3438aae4cc44302ef25b7024803024b4.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/5a831fcb150bc93f77bfd7598d339c4b.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/a56eaf53cf6434ae198761460b5bb308.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/5b69fd7c4987d8d5e3d4c5d9d3b38159.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/1cfa4cd019bcf2594ca404f1be326c64.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/97c4d643ebbf2e78ba7f07922f7ea6ea.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/a1b24e5a15c704c123f8a87d3d0be4f1.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/0d0ef9b09b722f674b710e093df908ac.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/9e17d9a0a43f5828fb8c236a2c81f4cd.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/5b1d3a041fcbe962cce72fab103e161f.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/122c89085efc66ebe4b74d1993513907.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/2e256f10e2527e8d242fd82126c4acbf.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/adbe46679c71e1bf509fdec68c8b0efe.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/f9f795ff0a3813375227cddba8a7f068.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/c3af6f98628fbf1de264429c50bc974b.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/5ff0ba35dcc55828ed2cc26d548fb7cb.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/2eb1f190a2da7df346d0067de8b43c33.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/ba491a39c83e26215cc4b549245103bb.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/821476310fd65e8e535193804694b0dc.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/6b4b97499170894ca573cf780a2dd924.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/4a75d6ff7eb92510fe6b43b9ae927f65.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/1db3086d080c2e762ead61b3742ad762.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/ec0e437a4c3e6226b7d3e28a16c00ade.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/b0359dec92e4665c022157ad58e6efd1.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/169a88fbb28aa48efb057c317630df08.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/809e6500c8c0bf719ee12b923c10fc12.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/fbad6c6ab0bd922be3838690d272d217.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/0c79a7b425fde065a3c4c91dda3749aa.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/674639ad93fd4b743b3445443f166ed6.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/a0f8671e1c021f9a2ec0e714e048044e.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/a0a8a4ecb3c1bb3550e68fedb58aeb9c.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/b9fded0e053340af3ded78032485330d.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/2a689dd01b13652433dda318f33d674a.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/a0175f81ebb98b9990a1d78648e85559.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/59dd924e594145ae546b9c0e55b8ae57.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/7f988097e8f0f40d602994a1387fe22b.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/38f90590a4fd1f662f2fca4a5dc6a146.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/1ad8e749d302dc16be788996752fb042.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/a2a7e44b9c0982373fbb261e2dc67139.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/49dcf9f88e7b7b8ca7448631021d7d12.jpg", "https://cdn.jsdelivr.net/gh/UncleLiu96/static/img/wz/yx/3feb86f15ac8c7e9d74f119eecd0694c.jpg" ], "heroskinStr": "苏烈:千军破阵-孙膑:未来旅行-赵云:淬星耀世-姜子牙:炽热元素使-达摩:大发明家-鲁班大师:乓乓大师-伽罗:天狼溯光者-沈梦溪:鲨炮海盗猫-钟馗:驱傩正仪-云缨:赤焰之缨-百里玄策:原初追逐者-露娜:哥特玫瑰-程咬金:演武夺筹-蒙恬:秩序猎龙将-大乔:守护之力-露娜:瓷语鉴心-安琪拉:心灵骇客-元歌:云间偶戏-兰陵王:默契交锋-花木兰:默契交锋-达摩:黄金狮子座-赵云:未来纪元-虞姬:霸王别姬-项羽:霸王别姬-吕布:御风骁将-诸葛亮:时雨天司-公孙离:祈雪灵祝-孙尚香:水果甜心-牛魔:奔雷神使-杨戬:次元傲视-刘禅:英喵野望-刘禅:天才门将-铠:绛天战甲-刘禅:秘密基地-芈月:白晶晶-诸葛亮:黄金分割率-镜:炽阳神光-娜可露露:晚萤-曜:归虚梦演-亚瑟:潮玩骑士王-狄仁杰:万华元夜-虞姬:启明星使-亚瑟:心灵战警-公孙离:无限星赏官-孙悟空:零号·赤焰-孙膑:天狼运算者-澜:孤猎-云中君:纤云弄巧-阿古朵:熊喵少女-裴擒虎:街头旋风-瑶:森-夏侯惇:战争骑士-镜:冰刃幻境-张良:一千零一夜-东皇太一:东海龙王-蔡文姬:蔷薇王座-梦奇:美梦成真-司马懿:魇语军师-露娜:绯红之刃-孙策:海之征途-元歌:午夜歌剧院-猪八戒:年年有余-高渐离:金属狂潮-雅典娜:战争女神-女娲:尼罗河女神-云中君:荷鲁斯之眼-李信:灼热之刃-钟馗:地府判官-刘邦:圣殿之光-成吉思汗:维京掠夺者-姜子牙:时尚教父-马超:神威-兰陵王:隐刃-廉颇:无尽征程-甄姬:冰雪圆舞曲-花木兰:兔女郎-后羿:阿尔法小队-赵云:龙胆-宫本武藏:未来纪元-诸葛亮:掌控之力-小乔:丁香结-张飞:五福同心-赵云:引擎之心-鲁班七号:黑桃队长-白起:白色死神-刘备:万事如意-宫本武藏:万象初新-关羽:武圣-韩信:街头霸王-项羽:海滩派对-上官婉儿:修竹墨客-芈月:红桃皇后-盘古:创世神祝-庄周:鲤鱼之梦-墨子:进击墨子号-项羽:科学大爆炸-张良:幽兰居士-安琪拉:如懿-狄仁杰:阴阳师-吕布:猎兽之王-虞姬:凯尔特女王-孙悟空:美猴王-老夫子:功夫老勺-程咬金:星际陆战队-赵云:忍·炎影-杨戬:永曜之星-蔡文姬:繁星吟游-嬴政:暗夜贵公子-苏烈:玄武志-上官婉儿:天狼绘梦者-黄忠:烈魂-小乔:缤纷独角兽-兰陵王:暗隐猎兽者-宫本武藏:鬼剑武藏-夏侯惇:乘风破浪-吕布:圣诞狂欢-李白:千年之狐-貂蝉:圣诞恋歌-曹操:幽灵船长-刘邦:德古拉伯爵-赵云:皇家上将-妲己:魅力维加斯-马可波罗:暗影游猎-狄仁杰:魔术师-狄仁杰:鹰眼护卫-吕布:末日机甲-孙悟空:至尊宝-嬴政:白昼王子-杨玉环:遇见飞天-蒙犽:狂想玩偶喵-后羿:辉光之辰-花木兰:水晶猎龙者-上官婉儿:梁祝-李元芳:银河之约-裴擒虎:李小龙-甄姬:游园惊梦-老夫子:醍醐杖-沈梦溪:星空之诺-嫦娥:露花倒影-周瑜:海军大将-雅典娜:单词大作战-弈星:混沌棋-马可波罗:激情绿茵-花木兰:剑舞者-狄仁杰:锦衣卫-虞姬:加勒比小姐-百里玄策:威尼斯狂欢-百里玄策:白虎志-孙悟空:西部大镖客-老夫子:潮流仙人-公孙离:花间舞-小乔:万圣前夜-铠:龙域领主-王昭君:精灵公主-哪吒:次元突破-大乔:伊势巫女-苏烈:爱与和平-盾山:极冰防御线-百里守约:绝影神枪-孙悟空:地狱火-杨戬:埃及法老-鬼谷子:阿摩司公爵-张飞:虎魄-李白:范海辛-孙尚香:末日机甲-伽罗:花见巫女-鲁班大师:归虚梦演-干将莫邪:第七人偶-李元芳:特种部队-猪八戒:西部大镖客-典韦:穷奇-韩信:教廷特使-扁鹊:化身博士-王昭君:幻想奇妙夜-狄仁杰:超时空战士-盾山:御銮-盾山:圆桌骑士-太乙真人:饕餮-太乙真人:华丽摇滚-鬼谷子:幻乐之宴-鬼谷子:原初探秘者-牛魔:制霸全明星-牛魔:御旌-亚瑟:死亡骑士-孙膑:妖精王-孙膑:归虚梦演-扁鹊:炼金王-达摩:拳王-白起:无畏之灵·狰-钟无艳:海滩丽影-李元芳:黑猫爱糖果-刘备:纽约教父-狂铁:御狮-曹操:烛龙-宫本武藏:地狱之眼-芈月:重明-明世隐:虹云星官-明世隐:疑决卦-米莱狄:御霄-夏侯惇:朔风刀-宫本武藏:霸王丸-妲己:少女阿狸-李信:一念神魔", "heroStr": "赵云-马可波罗-孙尚香-橘右京-娜可露露-诸葛亮-李信-花木兰-狄仁杰-吕布-虞姬-百里玄策-刘禅-不知火舞-孙悟空-老夫子-公孙离-墨子-沈梦溪-韩信-小乔-马超-铠-张飞-嬴政-周瑜-王昭君-杨玉环-程咬金-大乔-苏烈-盾山-百里守约-钟馗-云缨-太乙真人-蒙犽-杨戬-鬼谷子-蒙恬-关羽-后羿-李白-项羽-貂蝉-牛魔-亚瑟-鲁班七号-上官婉儿-孙膑-黄忠-曜-扁鹊-伽罗-鲁班大师-白起-干将莫邪-钟无艳-李元芳-嫦娥-刘备-兰陵王-狂铁-曹操-成吉思汗-姜子牙-芈月-盘古-裴擒虎-西施-明世隐-米莱狄-瑶-夏侯惇-宫本武藏-镜-刘邦-庄周-张良-东皇太一-甄姬-妲己-蔡文姬-梦奇-廉颇-达摩-艾琳-司马懿-典韦-露娜-孙策-哪吒-元歌-猪八戒-阿古朵-安琪拉-澜-高渐离-阿轲-雅典娜-弈星-夏洛特-女娲-云中君-司空震" } }
2021年12月25日
2,356 阅读
0 评论
1 点赞
2021-12-25
王者营地战绩数据王者荣耀查询网页源码
源码获取王者荣耀战绩数据查询网站代码,根据网络获取的数据前端展示,对接 数据接口 ,实时更新王者用户信息及战绩详情,代码用于学习交流适用人群:哪怕是小白立马上手(本文内容仅为技术科普,请勿用于非法用途。网站数据均源自网络,与本站无任何直接关系,均不对数据来源准确性及用处承担任何法律责任。如有侵权请 联系:uncle@maven.vip) 获取 遵循自愿原则 支付宝扫码,免费自动发送 请遵循自愿原则,本站不做任何强制引导,感谢您的打赏 关闭 .wxShade { position: fixed; top: 50%; transform: translateY(-50%); width: 250px; margin: 0 20%; background: url('https://www.maven.vip/usr/themes/Joe-master/assets/img/background.png') no-repeat; background-size: 100% 100%; z-index: 100; display: none; } .shade { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: #000; opacity: .4; z-index: 99; display: none; } .wxShade .card, .zfbShade .card { margin: 0.22rem 0; display: flex; justify-content: center; width: auto; height: auto; } .wxShade .paymentDone, .zfbShade .paymentDone { color: #666666; font-size: .26rem; margin:0; } input{ margin-bottom: 10px; border: 1px solid transparent #ccc; border-radius: 4px; height: 30px; } button{ background-color: #1ab394; border-color: #1ab394; color: #fff; min-width: 120px; display: inline-block; padding: 6px 12px; margin-bottom: 10px; font-size: 14px; font-weight: 400; line-height: 1.42857143; text-align: center; white-space: nowrap; vertical-align: middle; -ms-touch-action: manipulation; touch-action: manipulation; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-image: none; border: 1px solid transparent; border-radius: 4px; } function closePay(){ $('.shade').hide(); $('.couponBox').slideUp(300); $('.zhifuSlide').slideUp(300); $('.wxShade').fadeOut(100); } function butPay(){ var email =$("#email").val(); if(!email){ alert("请输入接收代码的邮箱") return; } $.post("https://yd.maven.vip/open/api/pay-qr-wz", { email: email, }, data => { if(data.code!=0){ return alert(data.msg); } var config = { width: 180, //二维码宽度 height: 180, //二维码高度 text: data.data, //二维码扫描结果,文本示例 }; $('#qrcode').html(''); //调用生成二维码方法 $('#qrcode').qrcode(config); //调用生成二维码方法 $('.shade').show(); $('.wxShade').fadeIn(500); }); } 演示网站演示 获取查询接口
2021年12月25日
6,210 阅读
8 评论
36 点赞
2021-12-19
JAVA王者荣耀营地数据解析
根据营地号获取王者荣耀战绩、皮肤、英雄数据,提供营地号查询接口 营地数据解析 源码下载
2021年12月19日
2,750 阅读
2 评论
3 点赞
2021-12-08
Spring Boot 整合 ActiveMQ
《ActiveMQ安装》一、通信模式1.点对点(queue)一个消息只能被一个服务接收消息一旦被消费,就会消失如果没有被消费,就会一直等待,直到被消费多个服务监听同一个消费空间,先到先得 2.发布/订阅模式(topic)一个消息可以被多个服务接收订阅一个主题的消费者,只能消费自它订阅之后发布的消息。消费端如果在生产端发送消息之后启动,是接收不到消息的,除非生产端对消息进行了持久化(例如广播,只有当时听到的人能听到信息) 二、整合2.1 添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <!-- 如果需要配置连接池,添加如下依赖 --> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> </dependency>2.2添加配置spring: activemq: broker-url: tcp://127.0.0.1:61616 user: admin password: admin pool: enabled: false #表示关闭连接池 max-connections: 50此处 spring.activemq.pool.enabled=false,表示关闭连接池。2.3 编码配置类:负责创建队列和主题。import org.apache.activemq.command.ActiveMQQueue; import org.apache.activemq.command.ActiveMQTopic; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.jms.Queue; import javax.jms.Topic; @Configuration public class JmsConfirguration { public static final String QUEUE_NAME = "activemq_queue"; public static final String TOPIC_NAME = "activemq_topic"; @Bean public Queue queue() { return new ActiveMQQueue(QUEUE_NAME); } @Bean public Topic topic() { return new ActiveMQTopic(TOPIC_NAME); } }消息生产者:import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsMessagingTemplate; import org.springframework.stereotype.Component; import javax.jms.Queue; import javax.jms.Topic; /** * 消息生产者 */ @Component public class JmsSender { @Autowired private Queue queue; @Autowired private Topic topic; @Autowired private JmsMessagingTemplate jmsTemplate; public void sendByQueue(String message) { this.jmsTemplate.convertAndSend(queue, message); } public void sendByTopic(String message) { this.jmsTemplate.convertAndSend(topic, message); } }消息消费者:消息消费者使用 @JmsListener 注解监听消息。import org.springframework.context.annotation.Bean; import org.springframework.jms.annotation.JmsListener; import org.springframework.jms.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.config.JmsListenerContainerFactory; import org.springframework.stereotype.Component; import javax.jms.ConnectionFactory; /** * 消息消费者 */ @Component public class JmsReceiver { //需要给topic定义独立的JmsListenerContainer @Bean public JmsListenerContainerFactory<?> jmsListenerContainerTopic(ConnectionFactory activeMQConnectionFactory) { DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory(); bean.setPubSubDomain(true); bean.setConnectionFactory(activeMQConnectionFactory); return bean; } @JmsListener(destination = JmsConfirguration.QUEUE_NAME) public void receiveByQueue1(String message) { System.out.println("接收队列消息1:" + message); } @JmsListener(destination = JmsConfirguration.QUEUE_NAME) public void receiveByQueue2(String message) { System.out.println("接收队列消息2:" + message); } @JmsListener(destination = JmsConfirguration.TOPIC_NAME , containerFactory="jmsListenerContainerTopic") public void receiveByTopic1(String message) { System.out.println("接收主题消息1:" + message); } @JmsListener(destination = JmsConfirguration.TOPIC_NAME, containerFactory="jmsListenerContainerTopic") public void receiveByTopic2(String message) { System.out.println("接收主题消息2:" + message); } }2.4测试@RunWith(SpringRunner.class) @SpringBootTest public class ActivemqApplicationTests { @Autowired private JmsSender sender; @Test public void testSendByQueue() { for (int i = 0; i < 10; i++) { this.sender.sendByQueue("发送队列消息: " + i); } } @Test public void testSendByTopic() { for (int i = 0; i < 10; i++) { this.sender.sendByTopic("发送主题消息: " + i); } } }2.4.1 queue测试首先注释 receiveByQueue2,运行结果如下:查看是否消费了放开注释 receiveByQueue2,运行结果如下:一个生产者,两个消费者的情况如下,谁先拿到谁先使用。 2.4.2 topic测试首先注释 receiveByTopic2,运行结果如下:接着我们把receiveByTopic2注释取消掉,运行结果如下:可以看到订阅一个主题的多个消费者,都能收到订阅后发布的消息 三、一些简单常用的应用场景3.1发送邮件 最经典的就是当用户注册时,我们就需要用activeMQ来做为中间件,当用户注册后,我门把用户的邮箱号和验证码等信息通过activeMQ的生产端发送到activeMQ的消息队列中,而一旦消息队列中出现了数据,我们的邮件模块通过实时的监控activeMQ的消息队列就能通过消费端获取到这个数据,染回邮件模块就会自行的去对数据进行解析,给用户发送邮件3.2发送短信 原理同发送邮件相同3.3同步索引库 为了缓解数据库的压力,我们把经常被调用的数据放入索引库中,当有请求查询时,我们会先去查询索引库,如果索引库内有数据,那么我们就不用就数据库进行查询,这样就能大大的减轻服务器的压力,可是随之而来的一个问题是,假如我们服务器内的数据已经发生了改变,而浏览用户查询数据时,因为索引库中已经有数据了,那么这样一来数据库与索引库的数据就不一致了,那么怎么解决这个问题呢?我们想到了通过用activeMQ来监听数据库的操作来实现数据库与索引库的数据同步,当后台管理员或房产经纪人对数据库的数据进行了增删改的操作时,我们通过activeMQ监听到了数据的改变,获取到被修改的数据的id,然后在另一个服务模块中通过这个数据的id去数据库先查询一把,然后根据查询结果进行判断,再去做索引库的数据同步。打个比方,如果查询结果返回的是空,就说明商品已经被删除,那么我们就可以根据数据的id去把索引库中的数据也一并删除了。4.同步静态页面 此原理同上一个同步索引库是一个原理,目的都是为了减缓服务器的压力,我们经过数据分析发现,其实我们的一些商品详情页面的数据其实都是大同小异的,完全可以通过freemarker页面静态化的模块加上后台查询出的数据拼装成一个静态页面,而这些数据从哪来呢?我们经过讨论和研究,最后一致认为还是放在缓冲中比较好,这样一来就能大大的减轻了数据 库的压力,而另一个好处是,由于页面是纯静态页面,所以页面上的数据都是死数据,这样一来就不用像JSP动态页面那样需要和后台数据库有大量的数据交互,可以最大化的降低服务器的压力,其实这个技术已经有很多大型公司在使用了,比如淘宝,京东,网易等,我们要是细心一些就会发现,他们的页面其实就都是HTML格式的静态页面。
2021年12月08日
461 阅读
0 评论
0 点赞
2021-12-08
Spring Cloud 入门 之 Zuul(五)附源码
一、前言随着业务的扩展,微服务会不对增加,相应的其对外开放的 API 接口也势必增多,这不利于前端的调用以及不同场景下数据的返回,因此,我们通常都需要设计一个 API 网关作为一个统一的 API 入口,来组合一个或多个内部 API。二、简单介绍2.1 API 网关使用场景黑白名单: 实现通过 IP 地址控制请求的访问 日志:实现访问日志的记录,进而实现日志分析,处理性能指标等 协议适配:实现通信协议的校验、适配转换的功能 身份认证:对请求进行身份认证 计流限流:可以设计限流规则,记录访问流量 路由:将请求进行内部(服务)转发 2.2 API 网关的实现业界常用的 API 网关有很多方式,如:Spring Cloud Zuul、 Nginx、Tyk、Kong。本篇介绍的对象正是 Spring Cloud Zuul。Zuul 是 Netflix 公司开源的一个 API 网关组件,提供了认证、鉴权、限流、动态路由、监控、弹性、安全、负载均衡、协助单点压测等边缘服务的框架。Spring Cloud Zuul 是基于 Netflix Zuul 的微服务路由和过滤器的解决方案,也用于实现 API 网关。其中,路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入门的基础。而过滤功能是负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。Spring Cloud Zuul 和 Eureka 进行整合时,Zuul 将自身注册到 Eureka 服务中,同时从 Eureka 中获取其他微服务信息,以便请求可以准确的通过 Zuul 转发到具体微服务上。三、实战演练本次测试案例基于之前发表的文章中介绍的案例进行演示,不清楚的读者请先转移至Spring Cloud 入门之 Hystrix 进行浏览。服务实例端口描述common-公用的,如:实体类eureka-server9000注册中心(Eureka 服务端)provider01-server8081用户服务(Eureka 客户端)provider02-server8082用户服务(Eureka 客户端)api80消费服务(Eureka 客户端)创建一个为名 gateway-server 的 Spring Boot 项目。3.1添加依赖<!-- eureka 客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>2.1.0.RELEASE</version> </dependency> <!-- zuul 网关 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> <version>2.1.0.RELEASE</version> </dependency>3.2配置文件server: port: 5555 spring: application: name: gateway eureka: instance: instance-id: gateway-5555 prefer-ip-address: true client: service-url: defaultZone: http://localhost:9000/eureka/ # 注册中心访问地址3.3 启动 Zuul在启动类上添加 @EnableZuulProxy 注解.@EnableZuulProxy @SpringBootApplication public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } }依次启动上面项目 首先我们先调用api服务项目的地址:http://127.0.0.1/user/get/1之后再修改成访问 gateway-server 项目的请求地址:http://127.0.0.1:5555/api/user/get/1最终的相应结果都一样。http://127.0.0.1:5555/api/user/get/1中的api是在Eureka 上注册的消费服务3.4 zuul 常用配置修改路由:zuul: sensitive-headers: # 全局忽略敏感头,即允许接收 cookie 等请求头信息 routes: javaj: # 任意名字,保证唯一即可 path: /javaj/** # 自定义,真正用到的请求地址 service-id: api # 路由到的目标服务名称将消费服务的路由名称改成 javaj。使用 Postman 请求下单接口,运行结果:请求成功禁用路由:zuul: ignored-patterns: - /api/user/**http://127.0.0.1:5555/api/user/get/1 无法正常路由到消费服务,返回404错误路由加前缀:zuul: prefix: /open所有请求中的path需要添加前缀/open;如http://127.0.0.1:5555/javaj/user/get/1 要改为 http://127.0.0.1:5555/open/javaj/user/get/1设置敏感头:zuul: sensitive-headers: # 设置全局敏感头,如果为空,表示接收所有敏感头信息 或 zuul: routes: javaj: # 任意名字,保证唯一即可 path: /javaj/** # 自定义,真正用到的请求地址 service-id: api# 路由到的目标服务名称 sensitive-headers: # 针对 /javaj/ 的请求设置敏感头信息四、Zuul 自定义过滤器Zuul 的核心技术就是过滤器,该框架提供了 ZuulFilter 接口让开发者可以自定义过滤规则。我们以身份检验为例,自定义 ZuulFilter 过滤器实现该功能。4.1 创建用户服务新建名为 user-server 的项目。添加依赖:<dependency> <groupId>com.common</groupId> <artifactId>common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!-- eureka 客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>2.1.0.RELEASE</version> </dependency>application.yml:server: port: 8100 spring: application: name: USER eureka: instance: instance-id: user-api-8100 prefer-ip-address: true # 访问路径可以显示 IP client: service-url: defaultZone: http://localhost:9000/eureka/ # 注册中心访问地址登录接口:@RestController @RequestMapping("/user") public class LoginController { @PostMapping("/login") public AjaxResult login(String username, String password, HttpServletResponse response) { if ("admin".equals(username) && "admin".equals(password)) { // 模拟生成 token,实际开发中 token 应存放在数据库或缓存中 String token = "123456"; Cookie cookie = new Cookie("token", token); cookie.setPath("/"); cookie.setMaxAge(60 * 10); response.addCookie(cookie); return AjaxResult.success(); } return AjaxResult.error(401, "账号或密码错误"); } }user-server 启动类:@EnableEurekaClient @SpringBootApplication public class UserApplication { public static void main(String[] args) { SpringApplication.run(UserApplication.class, args); } }4.2 创建 ZuulFilter 过滤器在 gateway-server 项目中,新建一个过滤器,需要继承 ZuulFilter 类:@Component public class AuthenticationFilter extends ZuulFilter { /** * 是否开启过滤 */ @Override public boolean shouldFilter() { RequestContext context = RequestContext.getCurrentContext(); HttpServletRequest request = context.getRequest(); boolean flag = request.getRequestURI().contains("/login"); // 如果是登录请求不进行过滤 if (flag) { System.out.println("========不执行 zuul 过滤方法======="); } else { System.out.println("========执行 zuul 过滤方法======="); } return !flag; } /** * 过滤器执行内容 */ @Override public Object run() throws ZuulException { RequestContext context = RequestContext.getCurrentContext(); HttpServletRequest request = context.getRequest(); String token = request.getParameter("token"); // 此处模拟获取数据库或缓存中的 token String dbToken = "123456"; // 此处简单检验 token if (token == null || "".equals(token) || !dbToken.equals(token)) { context.setSendZuulResponse(false); context.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value()); } return null; } /** * 过滤器类型 */ @Override public String filterType() { return "pre"; } /** * 过滤器执行顺序 */ @Override public int filterOrder() { return 0; } }其中,filterType 有 4 种类型:pre: 这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。 routing:这种过滤器将请求路由到微服务。这种过滤器用于构建发送给微服务的请求,并使用 Apache HttpClient 或 Netfilx Ribbon 请求微服务。 post:这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的 HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等。 error:在其他阶段发生错误时执行该过滤器。其过滤顺序如下图:4.3 测试过滤器运行所有项目,测试操作步骤如下:请求用户服务的登录接口(http://127.0.0.1:5555/open/user/user/login?username=admin&password=admin),请求不执行 zuul 过滤方法,并且请求响应返回的 cookie 包含 token 请求消费服务的接口(http://127.0.0.1:5555/open/javaj/user/get/1),但不携带 token,请求需要执行 zuul 过滤方法,请求响应 401 权限不足 请求消费服务的接口(http://127.0.0.1:5555/open/javaj/user/get/1),携带之前登录接口返回的 token,请求需要执行 zuul 过滤方法,校验通过后路由到消费服务执行之后的操作 五、案例源码源码
2021年12月08日
282 阅读
0 评论
0 点赞
2021-12-08
Spring Cloud 入门之 Hystrix(四) 附源码
一、前言在微服务应用中,服务存在一定的依赖关系,如果某个目标服务调用慢或者有大量超时造成服务不可用,间接导致其他的依赖服务不可用,最严重的可能会阻塞整条依赖链,最终导致业务系统崩溃(又称雪崩效应)。上述的问题将是本篇需要解决的问题。二、简单介绍# 2.1 请求熔断断路器是一种开关设置,当某个服务单元发生故障之后,通过断路器的故障监控,向调用方返回一个符合预期的服务降级处理(fallback),而不是长时间的等待或者抛出调用方无法处理的异常,这样保证了服务调用方的线程不会长时间被占用,从而避免了故障在分布式系统的蔓延乃至崩溃。# 2.2 服务降级fallback 相当于是降级操作。对于查询操作, 我们可以实现一个 fallback 方法, 当请求后端服务出现异常的时候, 可以使用 fallback 方法返回的值。 fallback 方法的返回值一般是设置的默认值或者来自缓存,告知后面的请求服务不可用了,不要再请求了。# 2.3 请求熔断和服务降级区别相同:目标一致:为了防止系统崩溃而实施的一种防御手段 表现形式一致:当请求目标在一定时间内无响应时,返回或执行默认响应内容 不同:触发条件不同:下游服务出现故障触发请求熔断。系统负荷超过阈值触发服务降级。 管理目标层次不同:请求熔断针对所有微服务。服务降级针对整个系统中的外围服务。2.4 实现方案Spring Cloud Hystrix 实现了断路器、线程隔离等一系列服务保护功能。它是基于 Netflix 的开源框架 Hystrix 实现的,该框架的目的在于通过控制访问远程系统、服务和第三方库节点,从而对延迟和故障提供更强大的容错能力。Hystrix 具备服务熔断、服务降级、线程和信号隔离、请求缓存、请求合并以及服务监控的能力。本次测试基于之前发表的文章,不清楚请移步Spring Cloud 入门 之 Feign(三)三、请求熔断实战3.1在“消费者”中添加依赖:<!-- hystrix --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> <version>2.1.0.RELEASE</version> </dependency>3.2设置熔断策略 方法上加 @HystrixCommand 注解:@Service public class UserServiceImpl implements IUserService { @Autowired private ApiFeign apiFeign; @HystrixCommand(fallbackMethod = "defaultSelect") @Override public User select(Integer uId) { return apiFeign.select(uId); } public User defaultSelect() { User user = new User(); user.setuId(-1); user.setuName("没有数据"); return user; } }当调用服务超时或出现异常时,Hystrix 会调用 @HystrixCommand 中指定的 fallbackMethod 方法获取返回值或执行异常处理。注意:fallbackMethod 方法要求与正常方法有相同的入参和回参。3.3 启动熔断功能在启动类上添加 @EnableCircuitBreaker 注解:@EnableFeignClients(basePackages = {"com.web.demo"}) @EnableEurekaClient @EnableHystrix @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }3.4 熔断测试我们首先演示没有开启熔断的功能,即先把上边的 @EnableCircuitBreaker 注解进行注释。2.再将 @EnableCircuitBreaker 注解的注释放开请求一个没有的用户ID从图中可知,虽然请求了一个 不存在的id,但是调用方(消费者)开启了熔断机制,执行默认方法,从而使接口能正常通信而不是抛出调用方不可处理的异常导致整个系统不能正常运行。看到这里,或许会有读者产生一个疑问,如果类中定义 N 个方法,是不是意味着同时也要定义 N 个异常处理的方法呢,答案是否定的。Hystrix 还提供了 @DefaultProperties 统一处理请求熔断,在该注解上设置 defaultFallback 属性值,即熔断开启后要执行的方法。@DefaultProperties(defaultFallback = "defaultSelect") @Service public class UserServiceImpl implements IUserService { @Autowired private ApiFeign apiFeign; @HystrixCommand @Override public User select(Integer uId) { return apiFeign.select(uId); } public User defaultSelect() { User user = new User(); user.setuId(-1); user.setuName("没有数据"); return user; } }注意:defaultFallback 定义的方法必须是无参的。四、服务降级实战4.1定义 Fallback@Component public class UserClientFallbackFactory implements FallbackFactory<ApiFeign> { @Override public ApiFeign create(Throwable throwable) { return new ApiFeign() { @Override public User select(Integer uId) { System.out.println(uId); User user = new User(); user.setuName("哈哈哈哈哈"); return user; } }; } }使用单独的类处理异常逻辑,当与服务端无法正常通信时调用此类中的方法返回结果4.2修改 Feign 客户端将上边定义好的 FallbackFactory 设置到 @FeignClient 注解上:@FeignClient(value = "PROVIDER",fallbackFactory = UserClientFallbackFactory.class) public interface ApiFeign { @RequestMapping(value ="/user/get/" ) User select(@RequestParam("uId") Integer uId); }4.3开启服务降级功能server: port: 80 spring: application: name: api eureka: client: # register-with-eureka: false # 不向注册中心注册自己 fetch-registry: true # 是否检索服务 service-url: defaultZone: http://localhost:9000/eureka/ # 注册中心访问地址 feign: hystrix: enabled: true #开启服务降级功能 client: config: default: connect-timeout: 10000 read-timeout: 20000 service-test: connect-timeout: 10000 read-timeout: 200004.4去掉 @HystrixCommand 配置//@DefaultProperties(defaultFallback = "defaultSelect") @Service public class UserServiceImpl implements IUserService { @Autowired private ApiFeign apiFeign; // @HystrixCommand @Override public User select(Integer uId) { System.out.println(uId); return apiFeign.select(uId); } public User defaultSelect() { User user = new User(); user.setuId(-1); user.setuName("没有数据"); return user; } }4.5测试在启动类上加 FallbackFactory 类的包扫描目录Postman测试:请求一个没有的用户ID 5.仪表盘除了服务熔断、降级的功能外,Hystrix 还提供了准及时的调用监控。 Hystrix 会持续地记录所有通过 Hystrix 发起的请求的执行信息,并以统计报表和图形方式展示给用户。5.1 配置被监控方API项目中:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>修改 application.ymlmanagement: endpoints: web: exposure: include: "*"5.2 配置监控方创建一个名为dashboard 的项目,添加依赖<!-- hystrix-dashboard --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency>新建 application.ymlserver: port: 3333 spring: application: name: Hystrix-Dashboard开启监控功能在启动类上添加 @EnableHystrixDashboard 注解@EnableHystrixDashboard @SpringBootApplication public class DashboardApplication { public static void main(String[] args) { SpringApplication.run(DashboardApplication.class, args); } }启动,浏览器访问: http://127.0.0.1:3333/hystrix 监控设置# 需要监控的服务地址 http://localhost:80/actuator/hystrix.stream delay: 请求间隔时间 title: 监控名称 点击 monitor stream 批量访问 order-server 服务的下单接口。 刚开始进来如果没有调用接口,界面是这样的:调用接口之后: 六案例源码demo
2021年12月08日
289 阅读
0 评论
0 点赞
2021-12-08
Spring boot集成Swagger
1.配置pom.xml <!-- swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version>2.启动类import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication(scanBasePackages = "com") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }3.配置configpackage com.example.demo.config; import io.swagger.annotations.ApiOperation; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket swaggerSpringMvcPlugin() { return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).build(); } } 4.配置controllerpackage com.example.demo.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @Api(description = "测试接口") @RestController @RequestMapping(value = "/index",method = RequestMethod.POST) public class IndexController { @ApiOperation(value = "测试") @PostMapping("/test") public String index(){ return "00000"; } } 启动项目访问:http://localhost:8080/swagger-ui.html 作用范围 API 使用位置对象属性 @ApiModelProperty 用在参数对象的字段上协议集描述 @Api 用在Conntroller类上协议描述 @ApiOperation 用在controller方法上Response集 @ApiResponses 用在controller方法上Response @ApiResponse 用在@ApiResponses里面非对象参数集 @ApilmplicitParams 用在controller方法上 非对象参数描述 @ApiImplicitParam 用在@ApiImplicitParams的方法里边 描述返回对象的意义 @ApiModel 用在返回对象类上 paramType:表示参数放在哪个地方 header-->请求参数的获取:@RequestHeader(代码中接收注解) query-->请求参数的获取:@RequestParam(代码中接收注解) path(用于restful接口)-->请求参数的获取:@PathVariable(代码中接收注解) body-->请求参数的获取:@RequestBody(代码中接收注解) form(不常用)若出现404: import org.springframework.stereotype.Component; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Component public class WebMvcConfig implements WebMvcConfigurer { /** * 添加静态资源文件,外部可以直接访问地址 * @param registry */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); } }
2021年12月08日
140 阅读
0 评论
0 点赞
1
...
3
4
5
...
25