![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
仿牛客网
仿牛客网项目相关笔记
复 盘!
这个作者很懒,什么都没留下…
展开
-
【仿牛客网笔记】项目发布与总结——单元测试、项目监控
在项目上线之前需做好单元测试,平时开发的过程中,每个功能也需要进行单元测试。验证注解的作用,注解是修饰方法的。每次调方法都是静态的对test1和test2分别进行运行通过类进行运行,运行所有的方法测试帖子的Service,注入向应Bean。原创 2022-11-29 08:45:00 · 484 阅读 · 1 评论 -
【仿牛客网笔记】项目进阶,构建安全高效的企业服务——优化网站性能
需要启动服务器,压力测试利用工具模拟客户端访问服务器。同时模拟很多人访问。LoadingCache是同步缓存,一般使用LoadingCache。AsyncLoadingCache是异步缓存,支持并发的取数据。压力测试之前需要将缓存去掉,同时还需要将日志去掉。去优化查询的方法,通常优化的是Service。挡显示logger中日志,从数据库中查数据了。一个缓存帖子列表,另一个缓存帖子总的行数。数据多一点,性能差一点,使缓存有一个对比。放入优化代码,将注释去掉,启用缓存之后。本地缓存和redis缓存的区别。原创 2022-11-29 09:00:00 · 504 阅读 · 0 评论 -
【仿牛客网笔记】项目进阶,构建安全高效的企业服务——将文件上传至云服务器
启用定时器,每隔一段时间查看是否生辰图片,如果图片一直没生成则可能有问题。生成上传凭证,将凭证写入到表单,传给模板,表单根据凭证传给七牛云。再创建一个空间为community_share。使用七牛云,首先进行注册,注册之后认证。使用定时器,单独写一个类,实现run方法。当某条件达成的时候,在run方法停止。通过有参构造器,强制传递参数。域名30天,到期后重新创建。具有独立域名可以绑定域名。存储的时候使用对象存储。policy是响应信息。注入分享空间的url。原创 2022-11-28 10:15:00 · 322 阅读 · 0 评论 -
【仿牛客网笔记】项目进阶,构建安全高效的企业服务——生成长图
服务端html做一个和截图一样的模板,然后通过工具访问模板,读取模板的内容生成长图。启动服务的时候,只会调用一次init()方法。生成长图以后需要返回访问路径。mkdir方法创建图片路径。生成本地文件生成的路径,模拟开发一个分享的功能。还需要图片存放的位置。原创 2022-11-27 08:15:00 · 167 阅读 · 0 评论 -
【仿牛客网笔记】项目进阶,构建安全高效的企业服务——热帖排行
AAA的分在三个之内是最高,其次是BBB,最后是CCC。启动服务之后,根据配置,应该会创建数据插入到表中。首次访问没有传参,所有需要给一个声明。5分钟后刷新完毕从数据库中查询,查看分数。G:系数,通常为1.5,1.8。注入RedisTemplate。注释掉定时任务,注释注解就可以。对代码进行重构,可以支持排序。在谁上点,把谁动态点亮。原创 2022-11-26 23:05:41 · 458 阅读 · 0 评论 -
【仿牛客网笔记】项目进阶,构建安全高效的企业服务——任务执行和调度
实例化logger,通过logger输出,自然而然带上线程id,线程时间。Quartz存入到数据库中,多个Quartz同时访问。集群服务器有两类程序一类普通请求,另一类定时任务。简便调用方式,只要在任意一个Bean。配置在第一次读取到初始化到数据库里。注释@Bean后不会被加载,需要去掉。sleep实现让当前线程阻塞一下。Spring定时任务线程池(简化)Nginx同一时刻有一个去处理。Spring执行定时任务的线程池。Spring普通线程池(简化)继承Job,实现Job的方法。Trigger触发器。原创 2022-11-21 08:30:00 · 268 阅读 · 0 评论 -
【仿牛客网笔记】项目进阶,构建安全高效的企业服务——Redis高级数据类型、网站数据统计
将三组数据合并,在合并后的重复数据中统计合并后的独立整数。一共有20万个数据,去重统计一下一共有多少数。建立拦截器,每次请求都是一个访问。统计每日UV,查询一段时间的UV。原创 2022-11-20 09:00:00 · 121 阅读 · 0 评论 -
【仿牛客网笔记】项目进阶,构建安全高效的企业服务——置顶、加精、删除
首先开发数据访问层,因为是对帖子的操作所以无论是置顶、加精最终是要修改帖子,先打开DiscussPostMapper增加修改的操作,一个修改类型,一个修改状态。Controller中编写置顶,加精,删除三个方法。确认HTML有没有对置顶,加精,删除按钮的处理。导入包后需要咋模板写入namespace命名空间。在Service层中编写方法,方便表现层去调用。置顶,加精,删除是在帖子的详情页面上。传入service的方法,将id传入。最后不是save而是delete。实现置顶、加精的修改,删除。原创 2022-11-19 09:45:00 · 409 阅读 · 0 评论 -
【仿牛客网笔记】项目进阶,构建安全高效的企业服务——权限控制
这个时候浏览器先服务器发送请求,get请求,get请求是一个有表单的页面。这个请求希望返回一个带form的页面,返回后没有直接提交,而是访问另外一个网站,这个网站是一个带有病毒的网站,通过病毒窃取了用户的cookie,这个网站就可以模仿,伪造你的身份,帮你进行了一个提交,这是一个要求转账这个时候就不安全。Security会在返回的时候携带一个隐藏的Tocken,防止CSRF攻击。在请求登录的开始判断,登录后,得到用户,并得到了权限后面授权就可以进行。除了这些请求,其他的请求统统允许。当权限不够处理的时候。原创 2022-11-18 09:15:00 · 245 阅读 · 0 评论 -
【仿牛客网笔记】项目进阶,构建安全高效的企业服务——Spring Security
Spring MVC 的核心组件是DispatcherServlet,所有的组件都是交给DispatcherServlet处理,然后将请求分发给控制器,具体由某个控制器控制请求,控制器可以由多个。利用统一的机制,处理系统,利用了JavaEE的规范Filter,顶层有很多的Filter。准备demo级别的项目,在简单的基础演示Security,学习完后在引入到项目中。启动后,在还没有登录的时候Spring Security会自带登录界面。简单模拟实现,尽可能的简单。编写denied路径。原创 2022-11-17 07:45:00 · 250 阅读 · 0 评论 -
【仿牛客网笔记】Elasticsearch,分布式搜索引擎——开发社区搜索功能
查询帖子需要从数据库中查,即DiscussPostService中查找,从数据库中查找。数据库中查询帖子id,查询到帖子后,然后存储到ES服务器中就可以。实现搜索帖子,keyword关键字,current当前第几页。启动服务器的时候确保zookeeper和kafka是启动的。提供一个方法向ES服务器里提供新产生的帖子save。首先判断消息内容是否为空,格式是否错误。注入eventProduce,触发事件。发布评论是在comment。判断一下是否触发发帖事件。这个事件触发之后去消费。原创 2022-11-16 08:45:00 · 200 阅读 · 0 评论 -
【仿牛客网笔记】Elasticsearch,分布式搜索引擎——Spring整合Elasticsearch
set是一个开关,读取系统的属性,这个属性是key,将key设置为false就不会检查这个,所以我们在服务器启动的时候设置为false。针对帖子的配置所以在DIscussPost中,通过注解配置@Document,实体中的属性和索引中的字段对用关系通过注解配置。response取到搜索数据,得到是SearchHits,如果hits为0,则没有数据。@Repository是Spring提供的针对数据访问层的注解。我们需要想办法将数据库中的帖子存放到ES的服务器中,然后去ES服务器中搜索帖子。原创 2022-11-15 12:30:00 · 258 阅读 · 0 评论 -
【仿牛客网笔记】Elasticsearch,分布式搜索引擎——Elasticsearch入门
Restful是一种设计风格,这种风格规定了前后端应该按照什么标准交互,不同类型的Http的请求的请求的格式是什么样的,请求标准的一种描述。采用集群分布式部署,每一台服务器称为节点,分片是对索引的进一步划分,副本是对分片的备份。7.0的时候废弃掉了。ES中的文档和数据库中的表的一行,文档通常采用的是js结构,js中每一个属性叫字段。支持结构化的数据,非结构化的数据也可以,即各种类型的数据通过它都可以。具体的搜索条件可以通过body提交,通过请求体提交复杂的请求。ES中的类型和数据库中的table表想对应。原创 2022-11-14 10:30:00 · 362 阅读 · 0 评论 -
【仿牛客网笔记】 Kafka,构建TB级异步消息系统——发送系统通知、显示系统通知
Kafka的windows报错会由于某些原因崩溃,看它的报错日志经常会因为某一条数据锁死有冲突。from_id:通知一定是系统用户所以from_id一定是为1的,为了避免和访问的私信混淆。conversationid为空,是因为不是要会话的,而是要整个的。判断消息内容是否为空,消息格式是否错误。status为2表示是私信删除的状态。需要注入EventProduce。原创 2022-11-12 15:00:00 · 650 阅读 · 0 评论 -
【仿牛客网笔记】 Kafka,构建TB级异步消息系统——优化登陆模块、Kafka入门、Spring整合Kafka
我们使用阻塞队列发送消息系统。阻塞队列是java自带API。通过put和take阻塞。通过kafka发送消息。一个生产者,一个消费者。原创 2022-11-13 16:15:00 · 388 阅读 · 0 评论 -
【仿牛客网笔记】 Redis,一站式高性能存储方案——优化登陆模块
原来的验证码存储在session中,现在存储在redis.将LoginTicketMapper废弃掉。实现上面方法需要注入下面的Bean。实现上面的方法需要注入Bean。注释掉登录中的session。不是删掉而是将其状态改为1。将session注释掉。使用redis存登录凭证。验证码是在登录的功能。将其设置为不推荐使用。注释掉后将报红的去掉。原创 2022-11-11 09:15:00 · 293 阅读 · 0 评论 -
【仿牛客网笔记】 Redis,一站式高性能存储方案——关注列表、粉丝列表
遍历后将数据封装到map中查询某个用户的粉丝首次配置页面,需要配置基本页面关注列表follower.html分页粉丝列表和关注列表一样需要遍历原创 2022-11-10 07:30:00 · 349 阅读 · 0 评论 -
仿牛客网笔记】 Redis,一站式高性能存储方案——关注、取消关注
这个功能在操作的时候是异步的,一点关注整个页面刷新,这是提交数据的过程。因为是异步的所以提交@ResponseBody。完成关注后还要获取关注数量,关注状态还需要去改变。为了注入用户首先引入hostholde。关注的逻辑是定义在profile的js中。取消关注 remove不用传分数。关注数量,粉丝数量,是否已关注,实现关注和取消关注的方法。原创 2022-11-08 21:36:52 · 297 阅读 · 0 评论 -
【仿牛客网笔记】 Redis,一站式高性能存储方案——我收到的赞
查询写在事务值外,查询写在事务之内不会立刻得到结果,事务过程中没有立刻执行,而是放到队列里,当你提交事务的时候统一提交。当页面传入参数后,就传入方法。在Redis中增加一个Key。原创 2022-11-08 20:35:28 · 166 阅读 · 0 评论 -
【仿牛客网笔记】 Redis,一站式高性能存储方案——点赞
最后返回一个JSON格式的数据。使不其不是一个超链接,而是一个js,定一个单击事件onclick,将超链接当成一个按钮使用,需要传入一些条件因此需要一些变量。原创 2022-11-09 09:30:00 · 279 阅读 · 0 评论 -
【仿牛客网笔记】 Redis,一站式高性能存储方案——Spring整合Redis
在execute中内部需要传一个接口的示例,我们可以做一个匿名的实现,在SessionCallback接口中重写了execute。return是提交事务。启用事务之后,在去执行Redis命令,不要在事务中间去查询。要么在事务之前要么在事务提交以后查询。基于此我们通常使用编程式事务。SpringBoot 对Redis进行自动配置的类是RedisAutoConfiguration。简化的方案,绑定key,可以反复访同一可以。Redis的配置文件,配置数据库参数。Redis支持事务,不满足ACID。原创 2022-11-08 13:30:00 · 135 阅读 · 0 评论 -
【仿牛客网笔记】 Redis,一站式高性能存储方案——Redis入门
Redis的官网没有提供Windows的安装包。以日志的形式每执行一次就存入到硬盘中,可以做到实时的存储以不断追加的形式存储的。Redis内置16个库,没有名字,使用索引区分,即0-15默认选择的是第0个。Redis是一个非常好用的工具,性能好,类型完善,使用的话非常的简单。有序的集合:给每一个值,添加了一个分数,根据 分数就排序。以快照的形式 不适合实时的去做,适合一段时间做一次。集合:列表有序的,集合无序的,集合中的值不可以重复。查看列表的长度,某一个位置的值,某一范围的值。可以通过select选择。原创 2022-11-07 13:00:00 · 285 阅读 · 0 评论 -
【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-统一记录日志
利用框架进行一个织入的行为weaving 把方面组件的代码,织入到目标对象,这是框架提供的功能。编译时织入:代码在运行的时候已经织入好了,运行速度快。连接点JoinPoint织入目标对象位置,织入属性上,构造器上,静态上,成员方法里。业务组件的一开始记录日志,记录日志的格式,用户某某在某一个时刻访问了某功能某方法。需要定义两个内容,第一个切点,织入到那些bean的具体的位置。target:目标对象,处理业务组件的需求就是目标对象。不发生异常也进行处理,拦截器是对控制组件的处理。声明切点,通过表达式声明。原创 2022-11-04 17:55:22 · 390 阅读 · 1 评论 -
【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-统一处理异常
报名一定是error,名字一定是状态404/500。没有显示是因为没有对模板进行配置。在首页中添加500的处理。Spring有统一处理。原创 2022-11-04 17:00:36 · 108 阅读 · 0 评论 -
【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-发送私信
需要提交数据所以需要POST,因为是异步请求所以需要注解@ResponseBody,参数为发送人和发送内容。对于集合,通过foreach遍历拼成最后一个结果。给人私信或给具体某人回信,私信成功提示成功。补充findUserByName()方法。id小的在前,大的在后。原创 2022-11-04 16:32:42 · 408 阅读 · 0 评论 -
【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-私信列表
声明一个集合,将数据放入到Map中,遍历列表构造Map,将信息,信息数量,未读数量,还需要显示当前用户与之相对的,需要找到目标,判断id是否等于消息的发起者目标就是接受者。声明一个方法处理私信列表,先声明访问路径,请求方式GET,传数据需要用到Model,需要分页需要Page,为了方法的实现需要注入Service,另外还需要注入HostHolder,当前用于需要它获取。表现层的开发,需要两个功能,一个是会话列表,一个是私信详情,都是分页显示数据。第二个方法查询数量,返回整数,类型为整型。原创 2022-11-05 12:30:00 · 614 阅读 · 0 评论 -
【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-添加评论
添加完评论后跟新评论的数量,更新帖子的评论数量。count查询数量然后,根据帖子id更新。添加评论并过滤敏感词,将内容放入到库中。判断参数,评论的内容不能为空。首先传入类型,然后传入id。原创 2022-11-02 21:39:57 · 107 阅读 · 0 评论 -
【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-显示评论
判断一个集合,如果非空就遍历,每次遍历就会的到一个Comment,把他们封装到Map中。封装评论的作者、通过id方法查找,每一条评论也有评论,所以也要显示评论的评论,即为回复。查询评论,需要依赖评论的Service,注入CommentService。我们不仅仅查询帖子的数据还需要查询评论的数据还要支持分页。分页查询需要两个数据,一个是分页查询需要多少数据,还要提供一个方法查询一共有多少数据,走的页数。另外查询条件的数目,返回的是整数,参数是一致的。显示评论的作者,需要动态的去头像。在li中添加循环的语句。原创 2022-11-06 09:00:00 · 240 阅读 · 0 评论 -
【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-事务管理
乐观锁需要我们去实现,总是乐观的看待问题,即是并发了也不会认为有问题,该什么操作什么操作,如果遇到了什么问题再去加锁。当我们更改数据的时候我们去看数据有没有变,如果变了,在处理的过程中有人改了,我们应该放弃这次 操作,否则我们就提交数据。模拟需求为注册一个用户user,第二步自动的给用户发一个帖子,一个业务 中有两个增加的操作,业务中需要保证事务。数据库保障数据的机制,两种实现方式,一种是悲观锁,另一种是乐观锁。选择时既能满足业务的需要,又能保证业务的安全性,在这样的前提下我们追求一个更高的性能。原创 2022-11-04 21:00:00 · 576 阅读 · 0 评论 -
【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-帖子详情
开发数据访问层,加一个增加帖子,查看帖子的方法。业务层增加一个查询方法,表现层出了查询Controller之外还要在Index.html中在梯子标题上增加访问详情页面的连接。discuss-detail.html处理静态资源的访问路径等操作。根据帖子的id查询帖子的详情。方法的实现,打开对应的配置文件。原创 2022-11-02 14:39:32 · 77 阅读 · 0 评论 -
【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-发布帖子
我们需要一个网页,网页中写入JQuery的代码,写一个段落,段落中有一个按钮,按钮点击的时候就发送异步请求,触发单击事件send方法。引入JQuery后通过Script标签实现send()方法,首先加入访问的路径,然后加入需要访问的数据,还需要一个匿名的回调函数,console.log控制台输出。在页面加载完之后,获取发布按钮,发布按钮定义了单击事件,单击事件的方法 ,显示提示框,2秒之后隐藏。添加方法后,首先判断,如果为空抛出异常,过滤敏感词,title,context过滤敏感词。报错的情况统一处理。原创 2022-11-03 09:00:00 · 457 阅读 · 0 评论 -
【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-过滤敏感词
进行下一个节点的操作,即指向当前节点的子节点,进入下一轮,当循环到最后一个要打一个标记。第三步:关键的方法,编写实现过滤敏感词的方法,返回String,即处理替换掉的结果,参数是一个文本。首先定义好敏感词, 假设用户输入的内容 为xwabfabcff,利用算法看看有没有敏感词,这个算法就是前缀树,前缀树的根节点是没有任何字符的,出了根节点的每个节点都包含一个节点,根节点到某一个节点的路径上连接起来就是当前节点的字符串,每个节点的子节点是不同,如果是相同的话就合并。第二步:根据敏感词,初始化前缀树。原创 2022-11-02 09:30:57 · 484 阅读 · 0 评论 -
【仿牛客网笔记】Spring Boot实践,开发社区登录模块-账号设置,检查登录
有可能是空的,需要判定一下,如果不是空但是没有登录,这个时候就return false拒绝请求,然后给出反应response去做重定向。重定向到LongIn。添加@Component注解,实现HandlerIntercptor注解,重写PreHandler,判断与没有登录,尝试的获取,注入HostHolder,判断拦截的目标是不是一个方法。注入日志对象后,通过@Value将上传路径的值、域名的值、还需要项目的访问路径,还需要用到userservice,userServce注入,还有注入hostHold.原创 2022-11-01 20:51:35 · 228 阅读 · 0 评论 -
【仿牛客网笔记】Spring Boot实践,开发社区登录模块-显示登录信息
这个凭证关联的是用户,我们很容易通过一张表Login_ticket查询到用户,其实是用户的id.我们最终是运用到模板上,所以将通过id的到user放入到model中,就可以提交给模板,最终模板向浏览器响应生成了一个HTML。postHandler的参数与preHandler的参数一样以外,还具有ModelAndView参数,因为该方法是在Controller之后执行,此时主要的逻辑请求处理已经 完成了,下一步主要模板引擎,给页面返回渲染的内容,因此在模板引擎中可能需要用到获取数据或封装数据。原创 2022-11-01 15:12:50 · 357 阅读 · 0 评论 -
【仿牛客网笔记】Spring Boot实践,开发社区登录模块-开发登录、退出功能
插入insert方法使用insert注解,insert中可以写任意个字符串,字符串中可以写任意一个。insert语句我们需要id是自动生成的。需要通过@Options声明SQL相关的机制。之前实现Mapper都是在新建一个配置文件写SQL,初次之外还有一张写Mapper类中写注解,以注解的形式声明对应方法的SQL。@Mapper注解,数据访问对象需要一个容器管理。业务中需要增加,插入一个凭证,查询凭证,修改凭证的状态。注解中也支持动态的SQL注解中也可以中也可以用到SQL,首先添加闭合。原创 2022-10-28 17:46:00 · 611 阅读 · 0 评论 -
【仿牛客网笔记】Spring Boot实践,开发社区登录模块-生成验证码
我们实例化的应该是他的实现类DefaultKaptcha,需要传入一些参数,这些参数需要封装到一个Config对象中,而Config对象需要们传入一个Properties对象,再将Config进行set后返回。Spring Boot没有对其进行整合配置所以需要通过自定义配置类,写一个配置类写完之后加入到Spring容器,Spring容器会对他进行初始化。配置类上需要添加@Configuration的注解,然后通过@Bean注解声明一个@Bean,该Bean将会被Spring容器所管理。应用到登录页面上去。原创 2022-10-27 21:37:38 · 273 阅读 · 0 评论 -
【仿牛客网笔记】Spring Boot实践,开发社区登录模块-会话管理
响应的时候服务器自动的向浏览器发送了一份Cookie,数据是有Cookie携带,Cookie中携带了sesion的ID,浏览器就会在本地存Cookie对象在本地,因此浏览器中Cookie就有了session的id。当浏览器下次请求的时候Cookie中存的就是session的id。Cookie只能存字符串,因为需要来回传,需要大量的数据,影响性能,需要到客户端,客户端只能识别字符串。3.共享session,单独搞一台服务器,用来存session,需要处理session的时候会统一放到单独的服务器中处理。原创 2022-10-27 20:37:22 · 477 阅读 · 0 评论 -
【仿牛客网笔记】Spring Boot实践,开发社区登录模块-开发注册功能
随机的头像,牛客网有1001, images.nowcoder.com/head/0t.png, %d是占位符,表示是个数字, new Random().nextInt() 随机整数,整数的范围在1000以内。设置url路径,101为用户的id,需要进行拼接,路径需要动态的拼接,首先是域名,其次是项目名,在然后是功能的访问名,需要写死,然后是id,最后是激活码。创建LoginController后,创建一个访问注册的方法,获取注册的页面,返回注册页面的路径,在方法上声明访问路径,请求方式时GET。原创 2022-10-25 13:50:06 · 371 阅读 · 0 评论 -
【仿牛客网笔记】Spring Boot实践,开发社区登录模块-发送邮件
定义一个公共有的方法,能够被外界调用,不需要返回值,参数每次发邮件需要告诉我目标to,邮件的主题subject,邮件的内容content。原创 2022-10-24 20:13:03 · 404 阅读 · 0 评论 -
【仿牛客网笔记】初识Spring Boot,开发社区首页-开发社区首页
最后的最后我们需要将查询的结果装入到model里展示,通过model里面的addAttribute方法,第一个参数是自己起的名字,第二参数遍历的结果。针对第二种方式我们需要在提供一个业务方法,更够根据UserId查询到user,这个方法写在DiscussPostService中不合适,对User的操作我们可以新创建一个Service,UserService中,加上@Service注解,我们查询的是用户,我们需要注入用户的Mapper,编写一个根据userId查询User的方法,参数为id.原创 2022-10-24 18:25:42 · 809 阅读 · 0 评论