解决方案
文章平均质量分 83
菜鸟是大神
人有两次生命,一次是出生,一次是觉醒,希望我们可以在风华正茂时重获新生,而不是在垂暮之年幡然醒悟。
展开
-
【SpringBoot8】HandlerInterceptor拦截器的使用 ——自@RequestBody获取请求参数解决java.io.IOException: Stream closed
现在开发的项目是基于SpringBoot的maven项目,拦截器的使用很多时候是必不可少的,当有需要需要你对body中的值进行校验,例如加密验签、防重复提交、内容校验等等。当你开开心心的在拦截器中通过request.getInputStream();获取到body中的信息后,你会发现你在controller中使用了@RequestBody注解获取参数报如下错误IO流关闭只能读取一次,接下来我们就开始解决这个BUG,有两种大的方向:这个需求咱不做了,特么有本事就把东西都放在请求头里面传过来;原创 2023-02-24 21:03:07 · 2178 阅读 · 2 评论 -
【数据库优化】记一次引入Elasticsearch的系统架构实战
我曾经面试,当时面试官问了我一个问题:如果你想使用某个新技术但是领导不愿意,你怎么办?对于该问题我相信大家就算没有面试被问到过,现实工作中同事之间的合作也会遇到。因此从我的角度重新去回答这个问题,有以下几点:1.师出有名,在软件工程里是针对问题场景提供解决方案的,如果脱离的实际问题(需求)去做技术选型,无疑是耍流氓。大家可以回顾身边的“架构师”、“技术Leader”是不是拍拍脑袋做决定,问他们为什么这么做,可能连个冠冕堂皇的理由都给不出。2.信任度,只有基于上面的条件,你才有理由建议引入新技术。原创 2022-10-22 20:42:27 · 337 阅读 · 0 评论 -
【数据库优化】后端思维之数据库性能优化方案
毫不夸张的说咱们后端工程师,无论在哪家公司,呆在哪个团队,做哪个系统,遇到的第一个让人头疼的问题绝对是数据库性能问题。如果我们有一套成熟的方法论,能让大家快速、准确的去选择出合适的优化方案,我相信能够快速准备解决咱么日常遇到的80%甚至90%的性能问题。 从解决问题的角度出发,我们得先了解到问题的原因;其次我们得有一套思考、判断问题的流程方式,让我们合理的站在哪个层面选择方案;最后从众多的方案里面选择一个适合的方案进行解决问题,找到一个合适的方案的前提是我们自己对各种方案之间的优缺点、场景有足够的了解原创 2022-10-22 20:35:30 · 236 阅读 · 0 评论 -
【微服务】重新理解微服务之终究绕不过这4个坎?
该篇文章到这里就差不多结束了,我始终认为一图胜千言,因此我在文中基于上述分享的知识点,给大家做了个脑图,以便于帮助你回顾与总结。微服务与DDD的见解,我也是再三思考了才打算写出来,我清楚地知道有不少的DDD热衷者认为这门技术是多么的“神圣”,当然曾经我也是。但是,随着自己使用、接触的技术越多,越是发现技术并不是那么的唯一、神圣,促使我们能在这条道路走得更高更远的,是咱们的思维,是我们对这些技术做出适当的选择与使用,而不是想着“一招鲜吃遍天”,我们是技术的创造者与使用者,而不是概念名词的搬运工。原创 2022-10-22 20:31:47 · 409 阅读 · 0 评论 -
【微服务】重新理解微服务之它还那么纯粹吗?
由单个应用拆分为一组小的服务(small);每个服务在独立的进程运行,服务之间使用轻量级的通信机制();服务围绕业务构建,同时服务可以自动化独立部署(、automated);可以使用不同的编程语言和数据存储(different)。轻量级(lightweight、small),通信协议和服务应用自身都应该是轻量级的。自治性(independently),能独立部署运行,且低耦合,服务之间互不影响。异构性/去中心化(different),可以根据业务特殊性,选择合适的开发语言和存储系统。原创 2022-10-22 20:30:04 · 496 阅读 · 0 评论 -
【最全最详细】SpringBoot 中实现跨域的几种方式
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域首先编写一个过滤器,可以起名字为MyCorsFilter.java@Component}}在web.xml中配置这个过滤器,使其生效原创 2022-08-30 20:40:29 · 1362 阅读 · 1 评论 -
springboot定时任务,SERVICE层无法注入问题详细解决
这是spring的一个Bug ,需要手动去配置一个类,主动获取实例,在定时任务中(继承TimerTask类),@Autowired 是失效的,无法注入。于是我尝试不用@Autowired 注入实例,自己new ,但是还是失败了,报空指针。发一个微信小程序后台,建立websocket 长连接,需要后台开启定时任务,应注意,同样需要注入添加 @Compent注解。* 配置类,解决定时任务无法注入的问题。但是具体执行过程中一直在报空指针错误,,无法调用其相关的方法导致的。定时任务定时查库,相应前台。原创 2022-08-24 20:08:02 · 2596 阅读 · 1 评论 -
【springboot异步处理】Spring Boot + @Async
异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。上述的同步调用虽然顺利的执行完了三个任务,但是可以看到执行时间比较长,若这三个任务本身之间不存在依赖关系,可以并发执行的话,同步调用在执行效率方面就比较差,可以考虑通过异步调用的方式来并发执行。主程序在异步调用之后,主程序并不会理会这三个函数是否执行完成了,由于没有其他需要执行的内容,所以程序就自动结束了,导致了不完整或是没有输出任务相关内容的情况。可以看到,通过异步调用,让任务一、二、三并发执行,有效的减少了程序的总运行时间。原创 2022-08-24 20:06:54 · 779 阅读 · 0 评论 -
【springboot系列】自定义一个拦截器,附源码
Spring MVC中的拦截器()类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。自定义一个拦截器非常简单,只需要实现方法:该方法会在控制器方法前执行,其返回值表示是否知道如何写一个接口。中断后续操作。当其返回值为true时,表示继续向下执行;当其返回值为false时,会中断后续的所有操作(包括调用下一个拦截器和控制器类中的方法执行等)。方法:该方法会在控制器方法调用之后,且解析视图之前执行。原创 2022-08-22 16:28:47 · 367 阅读 · 0 评论 -
【解决方案】可视化全链路日志追踪-日志追踪系统
分布式会话跟踪,是一种。点评内容平台日均处理百万条内容,涉及百万次业务场景的执行、高达亿级的逻辑节点的执行,而业务日志分散在不同的应用中,并且不同内容,不同场景,不同节点以及多次执行的日志混杂在一起,无论是日志的搜集还是现场的还原都相当繁琐耗时,传统的业务追踪方案越来越不适用于内容平台。(Tracing),我们提出了一套新的业务追踪通用方案,通过在业务执行阶段,结合完整的业务逻辑动态完成日志的组织串联,替代了传统方案低效且滞后的人工日志串联,最终可以实现业务全流程的高效追踪以及业务问题的高效定位。...原创 2022-07-27 11:02:03 · 1147 阅读 · 0 评论