仿牛客网
文章平均质量分 59
A snicker
努力吧
展开
-
18、优化网站性能
LoadingCache是同步缓存,AsyncLoadingCache可以实现异步、并发。本地缓存适合与用户无强关联的信息,Redis可以缓存与用户强关联的信息(如登录凭证),可以跨服务器,但比本地缓存稍微慢些。数据变化频率相对较低的数据比较使用于缓存。将热门帖子列表缓存到本地缓存中。缓存数据的更新一般有两种方式1、数据发生更新2、缓存到了过期时间。一级缓存(本地缓存)>二级缓存(分布式缓存)>DB。使用Caffeine缓存帖子列表和总的行数。3、优化业务方法,一般是优化Service。......原创 2022-08-01 00:15:54 · 454 阅读 · 0 评论 -
17、生成长图,并上传至服务器
Runtime.getRuntime().exec(cmd) 服务器把定义的cmd命令交给操作系统后,便继续向下执行了,即异步。3、服务器端生成长图检查并创建目录将指定 url 生成长图,用于分享A、share 方法是用来生成长图的,并返回一个json字符串,如果成功,则code=0,分享url即是json中"shareUrl"的值。1)生成图片是异步的方式,使用kafka在 消费TOPIC_SHARE 方法里,使用 wkhtmltopdf 生成长图,并放在指定的本机文件夹中。B、用户访问 “原创 2022-08-01 00:10:53 · 466 阅读 · 0 评论 -
16、热帖排行
A)发新帖时,将帖子id放入Redis(给帖子一个初始分数)RedisKeypostId存放在Set里。2、所有调用selectDiscussPosts的地方进行修改。1)thhref超链接修改,传入orderMode参数。2)由orderMode参数决定是否有active参数。B)加精、评论、点赞操作时,也将帖子放入Redis。2、影响帖子分数操作发生时,将帖子放入Redis。1、按照最热对帖子进行排序。1、生成RedisKey。对Quartz进行配置。...原创 2022-07-31 00:53:12 · 510 阅读 · 1 评论 -
15、网站统计数据
UV(Unique Visitor)2、Service由于使用Redis存储数据,所以不需要访问DAO层,直接在Service层处理数据即可。DataService.java1、将指定IP计入UV通过new SimpleDateFormat(“yyyyMMdd”) 先指定日期格式2、统计:统计指定日期范围1)传入的日期参数,是Data类2)由于要统计日期范围内的数据,所以要生成一组Rediskey:List< String> keyList,其中用到了Calendar类对日期进行循环3)合并原创 2022-07-31 00:32:07 · 331 阅读 · 0 评论 -
13、使用Spring Security进行权限控制
2、配置Security,主要是对授权的配置,(认证使用的是原来的认证方案,没有对登录认证进行相关配置);普通的拦截器,通过实现HandlerInterceptor接口实现拦截器,通过实现WebMvcConfigurer接口实现一个配置类,在配置类中注入拦截器,最后再通过@Configuration注解注入配置。2、LoginTicket拦截器在请求一开始就会判断凭证,可以在此时对用户进行认证,并构建用户认证的结果,存入SecurityContext,以便于Security进行授权。3、异步请求时的处理。.原创 2022-07-30 23:14:50 · 3063 阅读 · 0 评论 -
14、Elasticsearch开发搜索功能
Field(type=FieldType.Text,analyzer=“ik_max_word”,searchAnalyzer=“ik_smart”),type参数是文档中字段的类型,FieldType.Text会进行分词并建立索引的字符类型;analyzer=“ik_max_word”指定存储时的解析器,尽可能多的进行分词;在发布帖子和增加评论时,由生产者提交给消息队列,再由消费者异步处理,将帖子信息保存在搜索引擎Es服务器中。@id表示文档的id,文档类似数据库表中的行。...原创 2022-07-30 15:25:06 · 868 阅读 · 0 评论 -
12、Kafka发送通知和消费通知(点赞、评论、关注、发帖等各种操作)
代码】12、Kafka发送通知和消费通知(点赞、评论、关注、发帖等各种操作)原创 2022-07-30 12:36:41 · 1613 阅读 · 0 评论 -
11、Redis实现关注、取消关注以及关注和粉丝列表
代码】11、Redis实现关注、取消关注以及关注和粉丝列表。原创 2022-07-30 00:19:38 · 1680 阅读 · 0 评论 -
10、Redis实现点赞(Set)和获取总点赞数
不用写数据访问层,直接在Service层写即可。保证事务性,一次点赞两处增加,编程式事务。查询某个用户获得的赞的总数。原创 2022-07-29 23:52:25 · 1659 阅读 · 1 评论 -
9、统一记录日志(AOP)
AOP,即面向切面编程,切面是一个一个组件。只需要对切面组件编程即可,不需要再进到业务Bean中取改,提高了编程效率。**为什么要代理**在织入切面代码时,不在原来的实例中织入,而是在代理对象中织入。调用时也是掉哟个代理对象,而不是调用原始对象。容器调用对象,如果有AOP作用,就调用代理对象。前者生成接口的实现类,在代理实例中织入,要求必须有业务接口;后者在业务不存在接口时,创建子类实例以实现代理。框架为切面提供了织入的功能,有编译时(运行快),类装载,运行时织入(慢些)。...原创 2022-07-29 21:40:31 · 511 阅读 · 0 评论 -
8、统一处理异常(控制器通知@ControllerAdvice全局配置类、@ExceptionHandler统一处理异常)
在Controller下新建advice通知配置包,新建ExceptionAdvice。原创 2022-07-27 00:22:06 · 785 阅读 · 0 评论 -
7、私信列表
代码】7、私信列表。原创 2022-07-26 18:18:34 · 135 阅读 · 0 评论 -
6、显示评论和回复
注入page,post,user,comments。帖子详情页,有评论,评论中有回复。CommentMapper接口。原创 2022-07-26 15:39:03 · 245 阅读 · 0 评论 -
5、发布帖子(异步通信技术AJAX)
异步请求增量更新在页面上,不用刷新整个页面。通过jQuery写,三个参数访问路径,发送的JSONString字符串,回调函数(参数是服务器返回值)使用jquery使得发送操作简单直接,对XMLHttpRequest进行了封装,要不就是通过XMLHttpRequest发送。...原创 2022-07-26 14:47:03 · 169 阅读 · 0 评论 -
4、敏感词过滤(前缀树)
前缀树的数据结构,util包下的SensitiveFilter.java。主要有两个成员变量,关键词结束标志和子节点,在节点的数据结构中建立hashmap用于存储结构。//关键词结束标志privatebooleanisKeywordEnd=false;//子节点(key是下级字符,value是下级节点)privateMapsubNodes=newHashMap(16);}/***添加子节点*...原创 2022-07-26 14:21:25 · 695 阅读 · 0 评论 -
3、上传头像到七牛云并显示
在设置中,更换头像,上传到七牛云,并显示新头像。controller:前端:单击表单提交时,由JQuery异步将数据按照设置信息传给云服务器(即客户端上传到云服务器)。上传成功会更新图像路径js:数据库中更新头像路径:...原创 2022-07-14 18:19:00 · 355 阅读 · 0 评论 -
2、登录——验证码功能以及保存登录状态
在登录界面,主要实现两个功能,刷新验证码和记住我功能使用kaptcha生成验证码,导入jar包,编写对应的config配置类,然后在controller中生成验证码。新建cookie,在cookie中放入验证码的uuid,将cookie作为key存入redis,把text作为value,在添加过期时间。通过response.addCookie(cookie)把cookie发送给前端,OutputStream os = response.getOutputStream(); ImageIO.write原创 2022-07-14 17:35:09 · 866 阅读 · 0 评论 -
1、登录——邮件发送激活链接
我们在这里输入账号、密码、邮箱后,后端的service层会判断账号、邮箱是否已被注册。如果没有,则会向邮箱中发送激活链接在我们点击注册按钮之后,在service层中存入数据库,然后通过数据库中用户的id,来生成激活链接(http://localhost:8080/activation/151/da46a96eaf1a41ec8168fca35a3aa17d)。系统将该链接发送到对应的邮箱中:通过**String content = templateEngine.process(“/mail/activat原创 2022-07-13 18:56:00 · 1265 阅读 · 0 评论