算法训练——前缀和
前缀和1.一维模板题AcWing 795. 前缀和(算法基础课) - AcWing
输入一个长度为 n的整数序列。
接下来再输入 m 个询问,每个询问输入一对 l,r。
对于每个询问,输出原序列中从第 l 个数到第 r个数的和。
输入格式
第一行包含两个整数 n 和 m。
第二行包含 n 个整数,表示整数数列。
接下来 m 行,每行包含两个整数 l 和 r,表示一个询问的区间范围。
输出格式
共 m 行,每行输出一个询问的结果。
数据范围
1≤l≤r≤n1,  1≤n,m≤1000001,  −1000≤数列中元素的值≤1000
输入样例:
123455 32 1 3 6 41 21 32 4
输出样例:
1233610
代码
12345678910111213141516171819202122232425262728293031import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;/** * 795. 前缀和 * ht ...
项目之坑-杂篇
mybatis中传入多个参数时,应该使用@param注解报错
1org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'userId' not found. Available parameters are [arg1, arg0, param1, param2]
修改
1234/** * 查询某个主题下最新的通知 */Message selectLatestNotice(@Param("userId")String userId, @Param("topic")String topic);
由于打jar包后static文件读取路径问题,无法读取文件只能用URL来读,用file,字节流都报错
修改
12345@Value("${sensitive.filename}")private void ...
docker安装部署中间件
背景引入消息队列rabbitmq时,需要在服务器安装rabbitmq,但考虑到安装rabbitmq还需要安装Erlang,并且还需自己找安装包安装较为复杂,最终选择引入docker容器技术,后续陆续将项目、mysql、redis都移入docker容器内,便于开发
内存计算,服务器总内存4g(实际内存3.5g,出去系统占用,可分配内存大概为3g),redis分配1g,mq占用200m,mysql占用200mb,java程序占用100-mb,剩余1.5g(以后分配其他微服务组件)
1.安装docker123456789101112131415161718192021222324252627# 1.yum包更新到最新yum update# 2.安装需要的软件包(yum-utils提供yum-config-manager的功能,,并且device mapper存储驱动程序需要device-mapper-persistent-data和lvm2)yum install -y yum-utils device-mapper-persistent-data lvm2# 3.设置yum源为阿里云yum ...
MySQL之a表连b表两次返回第一条数据
遇到问题
私信表和用户表
私信表中有from_id和to_id,a和b之间的会话有同一个conversion_id
查询时,需要查询用户a和其他用户的最近一条记录,并查出from_id和to_id对应的avatar和nickname
实现
123456789101112131415161718select message.*, a.avatar as from_avatar, a.nickname as from_nickname, b.avatar as to_avatar, b.nickname as to_nicknamefrom message LEFT JOIN `user` a ON a.user_id = message.from_id LEFT JOIN `user` b ON b.user_id = message.to_idwhere id in( select max(id) from message where status != 2 and from_id != 1 and (from_id = 'user ...
mysql之a表两个id字段获取b表对应信息
遇到的问题
做项目时,评论表中包含以下两个字段
发布评论的用户id
此评论回复@的用户id
查询时需要查出以下字段
评论表的全部字段
发布评论的用户姓名和头像地址
此评论回复@的用户姓名和头像地址
此时就遇到需要连续两次连用户表进行查询
解决办法
两次left join
12345678910111213141516171819SELECT sonComment.*, user.nickname AS `commentUserName`, user.avatar AS `comment_user_avatar`, aa.nickname AS `comment_reply_name`, aa.avatar AS `comment_reply_avatar` FROM `sonComment` LEFT JOIN `user` ON user.user_id = sonComment.son_comment_user_id LEFT JOIN ( SELECT a.son_comment_id, b.avatar, b.nickname, b.`user_id` FRO ...
mybatis-plus自定义sql
遇到的问题
mybatis-plus的单表增删改查的效率是极高的,但是当我做项目的时候出现这样一个需求时
数据库有两张表:用户表,文章表(记录了用户的id)
后端需要查询最新的十条文章,并查询发表文章的用户姓名和用户头像地址
解决办法一
使用mybatis-plus的base查询,查询出所有文章后,再循环查询用户的信息。代码如下
12345678Page<Article> page = query().ge("created_time", DateUtil.lastMonth()).orderByDesc("article.article_like_count").page(new Page<>(current, MAX_PAGE_SIZE));// 1.获取当前页数据List<Article> records = page.getRecords();// 2.查询是否被点赞了records.forEach(article -> { this.queryArticleUser(articl ...
SpinrgCloud笔记P95-P150
95.Cloud Alibaba简介官网
123456789101112<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.5.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement>
中文
https://github. ...
SpinrgCloud笔记P74-P94
74.Config分布式配置中心介绍微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。
是什么
SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。
怎么玩SpringCloud Config分为服务端和客户端两部分。
服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口
客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。
能干嘛
集中管理配置文件
不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta ...
SpinrgCloud笔记P65-P75
65.GateWay和Zuul课程说明66.GateWay是什么上一代zuul 1.X :https://github.com/Netflix/zuul/wiki
当前gateway : https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/
Spring Cloud Gateway的目标提供统一的路由方式且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。
一句话: SpringCloud Gateway 使用的Webflux中的reactor-netty响应式编程组件,底层使用了Netty通讯框架。
能干嘛:
方向代理
鉴权
流量控制
熔断
日志监控
微服务架构中网关在哪里
67.GateWay非阻塞异步模型Servlet是一个简单的网络IO模型,当请求进入Servlet container时,Servlet container就会为其绑定一个线程,在并发不高的场景下这种模型是适用的。但是一旦 ...
SpinrgCloud笔记P47-P64
47.Hystrix是什么分布式系统面临的问题复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。
服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.
所以,通常当你发现一个模块下的某个实例失败后,这时候这个模块依然还会接收流量,然后这个有问题的模块还调用了其他的模块,这样就会发生级联故障,或者叫雪崩。
Hystrix是什么
Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常
48.Hystrix停更进维能干嘛
服务降级
服务熔断
接近实对 ...