全部 文章 问答 分享 共找到187个相关内容
[问答] 喜马拉雅 订阅模块 有Bug,请问如何解决?
老师,给的喜马拉雅项目中的订阅模块有Bug。按返回键退出,再进入,订阅就没了,而且再进行订阅也不会显示订阅信息。只用完全杀掉后台进程,再进入才能恢复正常功能。请问,如何解决?
2020-03-14 14:37 · 喜马拉雅 / 订阅模块 / Bug
[问答] 各位大佬,喜马拉雅 订阅模块中出现订阅后再次点击取消订阅无反应,且退出详情界面后再出去,文本显示订阅。这个怎么解决啊
点击订阅后查看数据库中的数据是有的,但取消订阅点击后,走的逻辑依然是添加的,不知道为什么,
2020-10-17 16:10 · 1
[文章] 喜马拉雅项目-订阅数据库设计
喜马拉雅项目-订阅数据库设计我们需要什么字段呢?首先我们打算订阅界面,显示的内容跟首页的推荐一样,那么!
2019-08-01 21:39 · sql / 数据库
[文章] 喜马拉雅app改进
更新内容如下:使用androidx:AndroidX本质上其实就是对AndroidSupportLibrary进行的一次升级使用ConstraintLayout布局设计新增用户模块:虽然不完善,但是每个用户的订阅和历史记录放在云端
2020-05-30 11:14 · 喜马拉雅app / 改进
[文章] 喜马拉雅项目-订阅数据库设计
喜马拉雅项目-订阅数据库设计我们需要什么字段呢?首先我们打算订阅界面,显示的内容跟首页的推荐一样,那么!
[问答] 喜马拉雅订阅列表不显示Title

推荐界面显示,但是到订阅界面就不显示了,从数据库中也得到了数据,但是就是只有title没显示。布局文件也检查了,跟康师傅的一样。求解!!!

2021-05-17 19:51 · 喜马拉雅
[问答] 喜马拉雅项目,在实现SubscriptionFragment时候,已订阅的内容的标题不显示
startActivity(intent);}@OverridepublicvoidonItemLongClick(Albumalbum){this.mCurrentClickAlbum=album;//订阅
2020-02-13 09:47 · Android
[问答] 喜马拉雅项目点首次点击订阅按钮UI不更新,是否与线程有关,对UI做修改的内容如何写?
喜马拉雅项目点击订阅按钮后更新UI,如果不让线程睡眠,首次点击订阅按钮UI不更新,是否与线程有关,对UI做修改的内容如何写?
2020-03-17 23:45 · Android线程问题
[问答] 为什么我在这里面获得的isSuccess一直都是false?
@OverridepublicvoidonAddResult(booleanisSuccess){if(isSuccess){//如果订阅成功,就修改UI为取消订阅tv_sub_btn.setText(
2019-12-06 10:03 · 安卓
[问答] 我只是测试一下是不是提问模块出问题了!
我只是测试一下是不是提问模块出问题了!几天没同学发问题了?难道是提问模块出问题了?
2020-06-22 11:15 · 博客系统 / 测试 / 提问 / SpringBoot
[问答] SOB首页导航栏的笔记模块咋没了?

SOB首页导航栏的笔记模块咋没了?

2022-07-22 17:13 · SOB导航 / 笔记
[问答] 课程建议:希望大佬制作关于“登录注册模块”的实践课程
实践课程覆盖的内容也很充实,但就缺了“注册登录模块”。希望你能抽出你宝贵的时间制作关于注册登录模块相关的实战课程。“淘宝联盟”和“喜马拉雅”实践项目都没有这块的内容。冒昧地说了几句,希望你能够理解。
2020-07-19 22:27 · 登录注册安卓
[问答] 一个论坛做成微服务 可拆分成那些模块

如果将一个论坛用微服务来做的话 可以拆分成那些模块

2021-05-15 17:58 · 微服务 / 论坛
[文章] 阳光沙滩博客系统-门户评论模块
评论模块评论的话,门户可以添加,可以删除自己的,可以获取到评论列表,根据文章获取此文章的评论列表。
2020-07-01 17:26 · 评论 / 博客系统 / SpringBoot / 后台开发 / JavaWeb
[问答] 喜马拉雅项目,数据库查询到数据后如何让当前的Activity刷新呢?
关于喜马拉雅订阅功能,在点击订阅后,退出程序清空后台在重新进来,点击同样的专辑,显示的是未订阅状态,返回到主页面后再点击该专辑,进来后又是已订阅状态了,打了log如图,可以看到第一次进详情页时查询当前专辑的结果还是
2020-02-24 22:32 · 喜马拉雅项目
[文章] 内存溢出和内存泄露的区别?
事件监听与订阅清理:当注册了事件监听器或者订阅了某种服务后,退出前应确保取消监听或退订,以释放相关资源。
2024-02-01 15:52 · 内存泄露 / 内存溢出
[问答] 喜马拉雅项目推荐界面sdk获取的数据有时显示有时不显示
为什么点一下别的地方比如订阅再返回来就会变成。。。这样:除了点别的地方,有的时候直接运行的时候也显示不出来。。日志也没啥错误。。求大佬解答。
2020-02-20 17:45 · android / 喜马拉雅 / 问答
[问答] 模块设计
现在有一个项目使用udp通讯收发数据包,界面架构如下fragment1到fragment6都可以收发数据。我定义了SendThread和ReceiveTHread类分别用来发送数据和接收数据,现在数据发送出去之后如果接收方在8秒钟之内我接收到了之前发送出去的数据就说明数据发送成功了,现在我该如何将ReceiveThread中接收到的数据传递到正确的fragment界面之中!
2021-03-06 09:12 · android / handler
[文章] android api 和 implementation 区别
今天在跑别人的项目遇到一个问题项目有一个私有包需要用arr包引入,本身这个项目有多个模块组成,我找到一个模块的build.gradle引入这个arr包使用了implementation引入发现项目运行报错找不到我引入的这个包的文件
2023-01-05 14:19 · android
[文章] 记录一个问题解决过程:knife4j报404
解决过程我先要确定单个同模块是不是正常的,于是我访问了用户管理模块的swagger,是可以访问的。既然可以访问,为什么还404呢?404就是资源找到不咯,肯定是找不到,不会骗人的。
2023-03-27 15:07 · knife4j / 404 / bug / 解决思路 / swagger
[问答] 导入模块后报错

报错:Manifest merger failed with multiple errors, see logs

大佬帮帮忙 在AndroidManifest里找过了 没发现重复的属性 或者 meta-data 然后用控制台看来下log 还是不知道错哪了 大佬抽空帮忙看一下

2021-11-17 09:19 · Android / 构建项目
[文章] 博客前后端留言模块
跟着康师傅学的博客在写文章评论部分的时候发现回复某个评论的时候子评论是独立出来的和父评论不在一个层级如下觉得有点难分辨是具体回复谁后有想改代码写成同一层级的那种评论、也就只是想想而已到了后面就快写完门户了就差调整UI了、看到别人有留言页面。。诶、我也想写一个留言供网友留言的留言板。就想了一会、在博客里的评论表之上改了一下效果呈现:评论表:留言表:基于评论表改的后端实现类:packagenet.wzfBoke.blog.services.impl;importlombok.extern.slf4j.Slf4j;importnet.wzfBoke.blog.dao.MessageDao;importnet.wzfBoke.blog.pojo.Message;importnet.wzfBoke.blog.pojo.SobUser;importnet.wzfBoke.blog.response.ResponseResult;importnet.wzfBoke.blog.services.IMessageService;importnet.wzfBoke.blog.services.IUserService;importnet.wzfBoke.blog.utils.Constants;importnet.wzfBoke.blog.utils.IdWorker;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.data.domain.Page;importorg.springframework.data.domain.PageRequest;importorg.springframework.data.domain.Pageable;importorg.springframework.data.domain.Sort;importorg.springframework.data.jpa.domain.Specification;importorg.springframework.stereotype.Service;importorg.springframework.web.context.request.RequestContextHolder;importorg.springframework.web.context.request.ServletRequestAttributes;importjavax.persistence.criteria.CriteriaBuilder;importjavax.persistence.criteria.CriteriaQuery;importjavax.persistence.criteria.Predicate;importjavax.persistence.criteria.Root;importjavax.servlet.http.HttpServletRequest;importjavax.transaction.Transactional;importjava.util.Date;importjava.util.List;@Slf4j@Service@TransactionalpublicclassMessageServiceImplextendsBaseServiceimplementsIMessageService{@AutowiredprivateIdWorkeridWorker;@AutowiredprivateIUserServiceiUserService;@AutowiredprivateMessageDaomessageDao;@OverridepublicResponseResultpostMessage(Messagemessage){ServletRequestAttributesrequestAttributes=(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();HttpServletRequestrequest=requestAttributes.getRequest();SobUsersobUser=iUserService.checkSobUser();if(sobUser==null){Stringemail=message.getEmail();if(email==null){returnResponseResult.SUCCESS_FAILED("邮箱地址不可以为空");}StringuserName=message.getUserName();if(userName==null){returnResponseResult.SUCCESS_FAILED("名字不可以为空");}Stringcontent=message.getContent();if(content==null){returnResponseResult.SUCCESS_FAILED("评论内容不可以为空");}message.setRoles("role_tourists");log.info("没有登录");}else{message.setAvatar(sobUser.getAvatar());message.setEmail(sobUser.getEmail());message.setUserName(sobUser.getUserName());if(sobUser.getRoles().equals(Constants.User.ROLE_ADMIN)){message.setRoles("role_admin");log.info("管理员");}elseif(sobUser.getRoles().equals(Constants.User.ROLE_NORMAL)){message.setRoles("role_normal");log.info("普通用户");}log.info("有登录");}message.setPostIp(request.getRemoteAddr());message.setId(idWorker.nextId()+"");message.setCreateTime(newDate());messageDao.save(message);returnResponseResult.SUCCESS("留言提交成功!");}@OverridepublicResponseResultgetMessageList(){List<Message>messageList=messageDao.findMessageByFuID();intlistSize=messageList.size();Sortsort=newSort(Sort.Direction.DESC,"createTime");for(inti=0;i<listSize;i++){StringFId=messageList.get(i).getId();List<Message>messageChildList=messageDao.findAll(newSpecification<Message>(){@OverridepublicPredicatetoPredicate(Root<Message>root,CriteriaQuery<?>cq,CriteriaBuildercb){returncb.equal(root.get("fuId").as(String.class),FId);}});messageList.get(i).setList(messageChildList);}returnResponseResult.SUCCESS("获取文章评论列表成功").setData(messageList);}@OverridepublicResponseResultAdminGetList(intpage,intsize){page=checkPage(page);size=checkSize(size);Sortsort=newSort(Sort.Direction.DESC,"createTime");Pageablepageable=PageRequest.of(page-1,size,sort);Page<Message>all=messageDao.findAll(pageable);returnResponseResult.SUCCESS("获取留言列表成功").setData(all);}@OverridepublicResponseResultdeleteMessageByIid(StringmessageId){Messagemessage=messageDao.findOneById(messageId);if(message==null){returnResponseResult.SUCCESS_FAILED("该留言不存在");}intresult=messageDao.deleteAllById(messageId);if(result==0){returnResponseResult.SUCCESS_FAILED("删除留言失败");}returnResponseResult.SUCCESS("删除留言成功");}}前端呈现:<template><divclass="message-box"><!--<divclass="message-part-1clear-fix">--><!--<imgsrc="https://huangwenyang.cn/static/image/message-1.jpg"class="message-imgfloat-left">--><!--<divclass="message-title-box">--><!--<aclass="message-title-box-title">留言板</a><br/>--><!--&lt;!&ndash;<imgsrc="https://www.myong.top/static/img/timg.94467a8.gif">&ndash;&gt;--><!--<divclass="message-title-box-content">--><!--<p>欢迎来到这里的朋友!</p>--><!--<p>让我们进行深入灵魂的交流。</p>--><!--<p>这里是2020年度留言板,如有意见或建议,或交换友链,请在下方留言~</p>--><!--</div>--><!--<aclass="gotoMessage"@click="gotoPart3()">去留言</a>--><!--</div>--><!--</div>--><divclass="message-part-3"id="message-part-3"><divclass="message-post-box"><divclass="message-post-box-1"><spanclass="input-textfloat-left">Name:<el-inputclass="message-userName-input"v-model="message.userName"placeholder="取你喜欢的名字"></el-input></span><spanclass="input-text2float-left">Email:<el-inputclass="message-userName-input"v-model="message.email"placeholder="能联系到你的邮箱地址"></el-input></span><spanclass="input-text2float-left">Http:<el-inputclass="message-http-input"v-model="message.http"placeholder="博客如:www.laowuya.top(选填)"></el-input></span><el-inputv-model="message.content"v-loading="loading"class="ContentInput"type="textarea"placeholder="说点你的想法吧"resize="none":rows="3"></el-input><divclass="message-post-box-1-1clear-fix"><el-buttonclass="message-button-postfloat-right"type="primary"plain@click="postMessage()">留言</el-button><spanclass="input-text-sexfloat-left">性别:</span><divclass="message-post-box-1-1-1float-left"><el-radio-groupv-model="message.sex"><el-radio-buttonlabel="男孩纸"></el-radio-button><el-radio-buttonlabel="女孩纸"></el-radio-button></el-radio-group></div></div></div></div></div><divclass="message-part-2"id="message-part-2"><divclass="message-list-box"><divclass="message-list-item"v-for="(item,index)inthis.messageResultList":key="index"><divclass="item-oneclear-fix"><img:src=item.avatarclass="item-avatarfloat-left"><spanclass="item-namefloat-left">{{item.userName}}</span><el-tagclass="tag-role1float-left"v-if="item.roles==='role_admin'">博主</el-tag><el-tagclass="tag-role2float-left"type="success"v-if="item.roles==='role_normal'">小站成员</el-tag><el-tagclass="tag-role3float-left"type="info"v-if="item.roles==='role_tourists'">游客</el-tag><spanclass="item-createTimefloat-left">{{formatDate(item.createTime)}}</span><spanclass="item-reply-buttonfloat-right"@click="FuReplyButton(item)">回复</span></div><spanclass="item-content">{{item.content}}</span><divclass="child-message-box"><divclass="child-message-item"v-for="(item,index)initem.list":key="index"><divclass="child-message-item-1clear-fix"><spanclass="child-item-namefloat-left">{{item.userName}}</span><el-tagclass="child-tag-rolefloat-left"v-if="item.roles==='role_admin'">博主</el-tag><el-tagclass="child-tag-rolefloat-left"type="success"v-if="item.roles==='role_normal'">小站成员</el-tag><el-tagclass="child-tag-rolefloat-left"type="info"v-if="item.roles==='role_tourists'">游客</el-tag><spanclass="child-item-replyfloat-left">回复</span><spanclass="child-item-FuUserNamefloat-left">{{item.fuUserName}}</span><spanclass="child-item-createTimefloat-left">{{formatDate(item.createTime)}}</span><spanclass="child-item-reply-buttonfloat-left"@click="ChildReplyButton(item)">回复</span></div><divclass="child-message-item-2"><spanclass="child-item-content">{{item.content}}</span></div></div></div></div></div></div><divclass="dialog"><el-dialog:visible.sync="centerDialogVisible"width="82%"center><divclass="message-post-box"><divclass="message-post-box-1"><spanclass="input-textfloat-left">Name:<el-inputclass="message-userName-input"v-model="ChildMessage.userName"placeholder="取你喜欢的名字"></el-input></span><spanclass="input-text2float-left">Email:<el-inputclass="message-userName-input"v-model="ChildMessage.email"placeholder="能联系到你的邮箱地址"></el-input></span><spanclass="input-text2float-left">Http:<el-inputclass="message-http-input"v-model="ChildMessage.http"placeholder="博客如:www.laowuya.top(选填)"></el-input></span><el-inputv-model="ChildMessage.content"v-loading="loading"class="ContentInput"type="textarea"placeholder="说点你的想法吧"resize="none":rows="3"></el-input><divclass="message-post-box-1-1clear-fix"><el-buttonclass="message-button-postfloat-right"type="primary"plain@click="postChildMessage()">留言</el-button><spanclass="input-text-sexfloat-left">性别:</span><divclass="message-post-box-1-1-1float-left"><el-radio-groupv-model="ChildMessage.sex"><el-radio-buttonlabel="男孩纸"></el-radio-button><el-radio-buttonlabel="女孩纸"></el-radio-button></el-radio-group></div></div></div></div></el-dialog></div></div></template><script>import*asapifrom"../../api/api";import*asdateUtilsfrom"../../utils/date";exportdefault{asyncasyncData(){letmessageResultList=awaitapi.GetMessageList();return{messageResultList:messageResultList.data}},data(){return{loading:false,centerDialogVisible:false,message:{userName:'',content:'',sex:'',email:'',http:'',avatar:''},ChildMessage:{userName:'',content:'',sex:'',fuUserName:'',fuId:'',email:'',http:'',avatar:''}}},methods:{postChildMessage(){if(this.ChildMessage.userName===''){this.showWarning("你的名字不可为空噢!");return;}if(this.ChildMessage.email===''){this.showWarning("邮箱地址不可为空噢!");return;}if(this.ChildMessage.content===''){this.showWarning("留言内容不可为空噢!");return;}if(this.ChildMessage.sex===''){this.showWarning("请选一下你的性别");return;}if(this.ChildMessage.sex==='男孩纸'){this.ChildMessage.avatar='portal/image/1602489149994_765240488734228480.jpeg'}elseif(this.ChildMessage.sex==='女孩纸'){this.ChildMessage.avatar='portal/image/1602489149994_765240488734228480.jpeg'}this.loading=true;api.PostMessage(this.ChildMessage).then(result=>{this.loading=false;if(result.code===api.success_code){this.showSuccess("留言好了噢~小站已经帮你通知博主啦!");this.messageList();this.resetDataChildMessage();this.gotoPart2();}})if(this.centerDialogVisible===true){this.centerDialogVisible=false;}this.getUserInfo();},ChildReplyButton(item){this.centerDialogVisible=true;this.ChildMessage.fuUserName=item.userName;this.ChildMessage.fuId=item.fuId;},FuReplyButton(item){this.centerDialogVisible=true;this.ChildMessage.fuUserName=item.userName;this.ChildMessage.fuId=item.id;},getUserInfo(){api.GetUserInfoByToken().then(result=>{if(result.code===api.success_code){api.GetUserInfo(result.data.id).then(result=>{if(result.code===api.success_code){this.message.userName=result.data.userName;this.message.email=result.data.email;this.ChildMessage.userName=result.data.userName;this.ChildMessage.email=result.data.email;}})}})},messageList(){api.GetMessageList().then(result=>{if(result.code===api.success_code){this.messageResultList=result.data;}})},resetDataChildMessage(){this.ChildMessage.userName='';this.ChildMessage.content='';this.ChildMessage.sex='';this.ChildMessage.email='';this.ChildMessage.http='';this.ChildMessage.avatar='';this.ChildMessage.fuId='';this.ChildMessage.fuUserName='';},resetData(){this.message.userName='';this.message.content='';this.message.sex='';this.message.email='';this.message.http='';this.message.avatar='';},postMessage(){if(this.message.userName===''){this.showWarning("你的名字不可为空噢!");return;}if(this.message.email===''){this.showWarning("邮箱地址不可为空噢!");return;}if(this.message.content===''){this.showWarning("留言内容不可为空噢!");return;}if(this.message.sex===''){this.showWarning("请选一下你的性别");return;}if(this.message.sex==='男孩纸'){this.message.avatar='portal/image/1602489158126_765240522838114304.jpeg'}elseif(this.message.sex==='女孩纸'){this.message.avatar='portal/image/1602489149994_765240488734228480.jpeg'}this.loading=true;api.PostMessage(this.message).then(result=>{this.loading=false;if(result.code===api.success_code){this.showSuccess("小站已为你通告博主啦!");this.messageList();this.resetData();this.gotoPart2();}})this.getUserInfo();},showWarning(msg){this.$message({message:msg,type:'warning',center:true,})},showSuccess(msg){this.$message({message:msg,type:'success',center:true,})},formatDate(dateStr){letdate=newDate(dateStr);returndateUtils.formatDate(date,'yyyy-MM-ddhh:mm:ss')},gotoPart3(){lettopheader=document.getElementById('message-part-3');if(topheader){topheader.scrollIntoView({block:'start',behavior:'smooth'})}},gotoPart2(){lettopheader=document.getElementById('message-part-2');if(topheader){topheader.scrollIntoView({block:'start',behavior:'smooth'})}}},mounted(){this.getUserInfo();}}</script><style>.item-one.tag-role1.el-tag{color:#fff;}.dialog.el-dialog{border-radius:32px;}.child-message-item-1{margin-bottom:10px;}.child-item-reply-button:hover{color:#bb53e4;}.child-item-reply-button{font-size:18px;font-weight:300;margin-bottom:15px;cursor:pointer;margin-left:35px;margin-top:4px;color:#526ff8;}.item-reply-button:hover{color:#bb53e4;}.item-reply-button{font-size:18px;font-weight:300;margin-bottom:15px;cursor:pointer;margin-left:35px;margin-top:30px;color:#526ff8;}.child-message-item{margin-bottom:30px;padding:10px;}.child-item-content{font-weight:300;font-size:22px;background:#ededed;border-radius:8px;padding:5px10px;}.child-item-createTime{font-weight:300;font-size:18px;margin-top:5px;margin-left:35px;}.child-item-reply{font-size:18px;font-weight:300;margin:5px0px15px40px;color:#09c506;}.child-item-FuUserName{font-size:24px;font-weight:300;margin-bottom:15px;margin-right:15px;margin-left:40px;}.child-item-name{font-size:24px;font-weight:300;margin-bottom:15px;margin-right:15px;}.child-message-box{margin-left:150px;margin-top:35px;background:#f8f8f8;border-radius:8px;}.tag-role1{margin-left:25px;margin-top:20px;}.tag-role2{margin-left:25px;margin-top:20px;}.tag-role3{margin-left:25px;margin-top:20px;}.message-button-post{width:150px;margin-left:25px;margin-right:25px;}.message-post-box-1-1{margin-top:25px;}.ContentInput{width:1155px;margin-top:25px;font-size:18px;}.message-post-box{padding:25px;}.input-text2{font-weight:300;font-size:18px;margin-left:25px;}.message-http-input{width:420px;margin-left:15px;}.input-text-sex{font-weight:300;font-size:18px;margin-right:25px;margin-top:8px;}.input-text{font-weight:300;font-size:18px;}.message-userName-input{width:250px;margin-left:15px;}.item-content{background:#f5f5f5;border-radius:8px;padding:5px10px;font-weight:300;font-size:22px;margin-top:5px;margin-left:110px;}.item-name{font-size:24px;font-weight:300;margin-bottom:15px;margin-left:35px;margin-top:20px;}.item-createTime{font-weight:300;font-size:18px;margin-top:28px;margin-left:35px;}.message-list-item{/*padding:25px25px25px25px;*/padding:20px35px;}.item-avatar{width:75px;height:75px;object-fit:cover;border-radius:50%;}.gotoMessage{cursor:pointer;color:#5958d6;}.gotoMessage:hover{color:#54c8ff;}.message-title-box-content{margin-top:235px;margin-bottom:15px;}.message-title-box-title{font-weight:400;font-size:24px;color:#42b7ff;}.message-title-boxp{font-size:18px;font-weight:300;margin-top:5px;}.message-title-box{margin:15px15px15px0px;}.message-img{width:600px;border-radius:16px;margin:15px;}.message-box{margin-top:15px;}.message-part-2{border-radius:16px;background:#fff;margin-bottom:30px;padding-top:45px;padding-bottom:60px;}.message-part-1{border-radius:16px;background:#fff;margin-bottom:10px;}.message-part-3{border-radius:16px;background:#fff;margin-bottom:15px;}</style>
2020-10-16 00:32 · 博客
[问答] 请问需要掌握什么才能实现一个智能音箱的配网app?
工程结构分为--app--appBase--module--其中根据业务逻辑分为八个模块m_account:账户中心模块,主要包含了APP登录注册、密码找回和修改等关于账户的功能;m_binder:设备配网模块
2020-02-24 11:39 · android / Rokid
[文章] 阳光沙滩博客系统-管理中心文章模块
文章模块发表文章接口@PreAuthorize("@permission.admin()")@PostMappingpublicResponseResultpostArticle(@
[问答] 安卓获取阿里云物模型数据,使用官方提供的SDK测试不成功
>(我想采用第三种方式):

(1)通过MQTT协议,阿里云也提供了自己的SDK,网上例程比较多,但是这种是把安卓端也作为一个节点了;

(2)通过阿里云的服务器订阅功能

2022-06-17 09:45 · 安卓阿里云
[文章] 喜马拉雅项目总结
在做订阅和取消订阅功能时,出了一个Bug:点击订阅后UI会更改,但实际上只更新了UI,点击取消订阅时还是会弹出订阅成功,因为只更新了UI,没有更新presenter里保存的map,需要在presenter
2020-08-03 19:40 · 喜马拉雅项目 / 学习总结
[文章] 阳光沙滩博客系统-文章搜索模块
课程资料包请移驾到资料下载solr搜索引擎服务器官网Solristhepopular,blazing-fast,opensourceenterprisesearchplatformbuiltonApacheLucene™.solr安装熟悉一下docker-compose.ymlversion:'3.1'services:solr:image:solr:5.5.5restart:alwayscontainer_name:solr_testports:-8983:8983Dockerfile构建属于自己的Solr镜像Dockfile#基于哪个镜像,如果不写版本则是最新的#不同版本的话要注意一下路径,下面的路径FROMsolr:5.5.5#作者MAINTAINERsunofbeach.net#创建Core,切换目录WORKDIR/opt/solr/server/solr#创建目录RUNmkdirsob_blog_core#切换目录WORKDIR/opt/solr/server/solr/sob_blog_core#把这个Core名称添加到配置文件中,这样在前端就可以看到了RUNecho'name=sob_blog_core'>core.properties#从模版中复制一份出来配置文件出来RUNcp-r/opt/solr/server/solr/configsets/sample_techproducts_configs/conf/.#进入到容器的lib文件夹WORKDIR/opt/solr/server/solr-webapp/webapp/WEB-INF/lib#中文分词器RUNcp-r/opt/solr/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-5.5.5.jar.#复制两个jar包进去ADDik-analyzer-solr5-5.x.jar.ADDsolr-analyzer-ik-5.1.0.jar.WORKDIR/opt/solr/server/solr-webapp/webapp/WEB-INF#复制字典,同学们可以自行修改字典内容ADDext.dic.ADDstopword.dic.#配置扩展字典的配置文件ADDIKAnalyzer.cfg.xml.#增加分词配置COPYmanaged-schema/opt/solr/server/solr/sob_blog_core/confWORKDIR/opt/solr在当文件夹下构建,相关的文件要复制到位,文件在课程压缩包里dockerbuild-tsob_blog_solr:1.0.等待构建完成,或者直接使用docker-compose构建也行version:'3.1'services:solr:build:solrWithIKAnalyzerrestart:alwayscontainer_name:sob_blog_solrports:-8983:8983创建完成以后访问:ip:8983这个就是操作界面了项目链接solr添加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-solr</artifactId></dependency>添加链接配置项spring:data:solr:host:http://192.168.220.141:8983/solr/sob_blog_core数据的增删改注入SolrClient@AutowiredprivateSolrClientclient;然后添加字段内容,这些字段就是我们在约束文件里配置的<!--自定义字段,类似于设计数据表一样--><!--ID--><!--ID已经在前面有了--><!--浏览量--><fieldname="blog_view_count"type="int"indexed="true"stored="true"required="true"multiValued="false"/><!--标题--><fieldname="blog_title"type="text_cn"indexed="true"stored="true"required="true"multiValued="false"/><!--内容--><fieldname="blog_content"type="text_cn"indexed="true"stored="true"required="true"multiValued="false"/><!--创建时间--><fieldname="blog_create_time"type="date"indexed="true"stored="true"required="true"multiValued="false"/><!--标签--><fieldname="blog_labels"type="string"indexed="true"stored="true"required="true"multiValued="false"/><!--文章链接--><fieldname="blog_url"type="string"indexed="true"stored="true"required="true"multiValued="false"/><!--分类ID--><fieldname="blog_category_id"type="string"indexed="true"stored="true"required="true"multiValued="false"/><!--搜索item--><fieldname="search_item"type="text_cn"indexed="true"stored="true"required="true"multiValued="true"/>searchItem不需要添加,自动复制的,因为我们有以下配置<copyFieldsource="blog_title"dest="search_item"/><copyFieldsource="blog_content"dest="search_item"/><copyFieldsource="blog_labels"dest="search_item"/>添加代码编写:创建SolrInputDocumentSolrInputDocumentdoc=newSolrInputDocument();封装字段数据doc.addField("id",id);doc.addField("blog_view_count",标题内容);doc.addField("blog_title",标题内容);doc.addField("blog_content",搜索内容);doc.addField("blog_create_time",创建时间);doc.addField("blog_labels",标签);doc.addField("blog_url",文章url);提交try{client.add(doc);client.commit();}catch(Exceptione){e.printStackTrace();}删除前面我们设置了ID,ID是主键,所以我们可以通过ID来删除try{client.deleteById(articleId);client.commit();}catch(Exceptione){e.printStackTrace();}更新更新跟添加一样,以id为key,修改对应ID的内容,注意不可以为空的字段.处理数据标签问题富文本我们需要去掉Html标签,markdown我们需要转成html,再去掉里面的标签,提取纯文本内容。markdown转成html<!--markdowntohtml--><dependency><groupId>com.vladsch.flexmark</groupId><artifactId>flexmark-all</artifactId><version>0.50.44</version></dependency>代码//markdowntohtmlMutableDataSetoptions=newMutableDataSet().set(Parser.EXTENSIONS,Arrays.asList(TablesExtension.create(),JekyllTagExtension.create(),TocExtension.create(),SimTocExtension.create()));Parserparser=Parser.builder(options).build();HtmlRendererrenderer=HtmlRenderer.builder(options).build();Nodedocument=parser.parse(内容);Stringhtml=renderer.render(document);html转text<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.12.1</version></dependency>html转文字Jsoup.parse(html内容).text()查询q:query查询fq:filterquery过滤查询sort:排序start,rows:分页fl:返回字段dl:默认的查询参考字段hl:高亮@OverridepublicResponseResultdoSearch(Stringkeyword,intpage,intsize,StringcategoryId,Integersort){//1、检查page和sizepage=checkPage(page);size=checkSize(size);SolrQuerysolrQuery=newSolrQuery();//2、分页设置//先设置每页的数量solrQuery.setRows(size);//设置开始的位置//找个规律//第1页-->0//第2页==>size//第3页==>2*size//第4页==>3*size//第n页==>(n-1)*sizeintstart=(page-1)*size;solrQuery.setStart(start);//solrQuery.set("start",start);//3、设置搜索条件//关键字solrQuery.set("df","search_item");//条件过滤if(TextUtils.isEmpty(keyword)){solrQuery.set("q","*");}else{solrQuery.set("q",keyword);}//排序//排序有四个:根据时间的升序(1)和降序(2),根据浏览量的升序(3)和降序(4)if(sort!=null){if(sort==1){solrQuery.setSort("blog_create_time",SolrQuery.ORDER.asc);}elseif(sort==2){solrQuery.setSort("blog_create_time",SolrQuery.ORDER.desc);}elseif(sort==3){solrQuery.setSort("blog_view_count",SolrQuery.ORDER.asc);}elseif(sort==4){solrQuery.setSort("blog_view_count",SolrQuery.ORDER.desc);}}//分类if(!TextUtils.isEmpty(categoryId)){solrQuery.setFilterQueries("blog_category_id:"+categoryId);}//关键字高亮solrQuery.setHighlight(true);solrQuery.addHighlightField("blog_title,blog_content");solrQuery.setHighlightSimplePre("<fontcolor='red'>");solrQuery.setHighlightSimplePost("</font>");solrQuery.setHighlightFragsize(500);//设置返回字段//blog_content,blog_create_time,blog_labels,blog_url,blog_title,blog_view_countsolrQuery.addField("id,blog_content,blog_create_time,blog_labels,blog_url,blog_title,blog_view_count");////4、搜索try{//4.1、处理搜索结果QueryResponseresult=solrClient.query(solrQuery);//获取到高亮内容Map<String,Map<String,List<String>>>highlighting=result.getHighlighting();//把数据转成bean类List<SearchResult>resultList=result.getBeans(SearchResult.class);//结果列表for(SearchResultitem:resultList){Map<String,List<String>>stringListMap=highlighting.get(item.getId());List<String>blogContent=stringListMap.get("blog_content");if(blogContent!=null){item.setBlogContent(blogContent.get(0));}List<String>blogTitle=stringListMap.get("blog_title");if(blogTitle!=null){item.setBlogTitle(blogTitle.get(0));}}//5、返回搜索结果//包含内容//列表、页面、每页数量longnumFound=result.getResults().getNumFound();PageList<SearchResult>pageList=newPageList<>(page,numFound,size);pageList.setContents(resultList);//返回结果returnResponseResult.SUCCESS("搜索成功.").setData(pageList);}catch(Exceptione){e.printStackTrace();}returnResponseResult.FAILED("搜索失败,请稍后重试.");}
2020-07-02 10:33 · solr / java / web / springBoot / 搜索
[文章] @FeignClient扫描不到?Nuxt.js多环境配置值读取不了?
通常来说,我们要把公用的内容抽取到基模块中。比如说用户信息获取,我们可以抽取到Base模块,或者Common模块中。这样子,任何一个依赖此模块的,都可以获取到用户信息。
2022-10-29 12:41 · 水文章 / nuxt.js / 后台 / 前端 / 前后端分离
[文章] Linux搭建Nexus3.X构建maven私服-上传aar
一个公司中,如果有公共模块,多个项目使用,可以通过这样方式统一管理,更新方便。开发SDK,多个模块组合成最终模块,主模块依赖子模块即可,打包会自动把依赖关系打到pom中,使用方只需要依赖主SDK即可。
1970-01-01 00:00 · nexus / gradle / maven / debug / 断点
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7