第十九天.

文章讲述了作者在感冒期间思考编程问题,包括找到字符串中最长无重复字符子串的算法,解释了HTTP响应码301和302的区别以及forward和redirect的差异。此外,讨论了TCP与UDP的特性,并分享了在学习SpringCloud时遇到的Hystrix服务降级问题,包括如何设置全局默认的降级策略。
摘要由CSDN通过智能技术生成

前言

甲流中招了 吐了四天,到现在还是一身的问题,没胃口,目前还是咳嗽,嗓子变哑,头疼身体冒虚汗

休息了四天感觉好了点,希望今天不再吐了,前两天胆汁天天都吐

希望大家不要中招。

能学多少是多少吧。

练习

无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

 

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
 

提示:

0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成
class Solution {
    public int lengthOfLongestSubstring(String s) {
        int n = s.length(), max = 0;
        Map<Character, Integer> map = new HashMap<>();
        for (int end = 0, start = 0; end < n; end++) {
            char c = s.charAt(end);
            if (map.containsKey(c)) {
                //当发现相同字符 移动start 因为map的值是end+1 
                //所以start自动就跑到上个重复字符后+1的位置
                start = Math.max(map.get(c), start);
            }
            max = Math.max(max, end - start + 1);
            map.put(s.charAt(end), end + 1);//值不从0开始算 从1
            //value = end + 1
        }
        return max;
    }

先说一句,感冒不适期间动脑子是一件灾难,头疼欲裂 效率低

移动窗口

反正头疼状态下看了一个半小时没想到,900多个测试用例,一会遇见一个停住了

原理就是无时无刻记录max 并在遇见重复字符串后更新start的位置

用大神的总结吧 头疼

  1. start不动,end向后移动

  1. 当end遇到重复字符,start应该放在上一个重复字符的位置的后一位,同时记录最长的长度

  1. 怎样判断是否遇到重复字符,且怎么知道上一个重复字符的位置?--用哈希字典的key来判断是否重复,用value来记录该字符的下一个不重复的位置。

八股

http 响应码 301 和 302 代表的是什么?有什么区别?

301永久转移码 302暂时转移码 都是http的状态编码

forward 和 redirect 的区别?

forward是直接转发,客户端发一次请求,由服务端转发给对应资源,无论能不能找到都会将消息传递给客户端

redirect是间接转发,客户端发一次请求,服务端得到第一个请求后再转发给另一个url

简述 tcp 和 udp的区别

tcp可靠,需要建立连接,点对点,对系统资源要求高,udp不可靠,实时性快,对系统资源要求少,不需要建立连接

tcp 为什么要三次握手,两次不行吗?为什么?

不行,tcp是可靠数据传输,通信双方在建立连接过程中是需要添加自己的序列号来确认对方是回复,如果只有两次只有起始放发送的信息被确认,但是另一方信息就无法确认

基于阳哥第二季的SpringCloud(第四天)

因为之前有课没听完 笔记在上一天,今天就写感想或者补充

听课五分钟,想动手实操,遇见一个idea问题,pom文件就是死不加载,真绝了,别的项目都加载就它特殊,重启,清缓存,百度都没用,服气,忙活快一小时了,这段实操只能光看看了

失败了,听不进去了,后面的基本都是按着消费端写的,但是今天就是加载不动pom 没得听了,头疼

经过一个小时的排查,从下午两点半干到四点十五

de了半天bug 找到原因

 <!--hystrix-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

要添加版本号 关键也不爆红 而且debug半天光说 2有问题 就不说问题在哪

我在之前又是重建项目,又是去别的pom复制,关键别的也没用写版本,怎么这个项目这么任性

今日学习时间不多了 本来还想学点新的 得快点了。

服务降级补充

全局默认的

下面vip定制的


@GetMapping("/consumer/payment/hystrix/timeout/{id}")
@HystrixCommand(fallbackMethod = "paymentTimeOutFallbackMethod",commandProperties = {
        @HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds",value="1500")
})
public String paymentInfo_TimeOut(@PathVariable("id") Integer id)
{
    String result = paymentHystrixService.paymentInfo_TimeOut(id);
    return result;
}
public String paymentTimeOutFallbackMethod(@PathVariable("id") Integer id)
{
    return "我是消费者80,对方支付系统繁忙请10秒钟后再试或者自己运行出错请检查自己,o(╥﹏╥)o";
}

为什么用全局默认

 
@DefaultProperties(defaultFallback = "")
 
  1:1 每个方法配置一个服务降级方法,技术上可以,实际上傻X
 
  1:N 除了个别重要核心业务有专属,其它普通的可以通过@DefaultProperties(defaultFallback = "")  统一跳转到统一处理结果页面
 

自己写的

@RestController
@Slf4j
@DefaultProperties(defaultFallback = "payment_Global_FallbackMethod")
public class PaymentHystirxController
{
    @Resource
    private PaymentHystrixService paymentHystrixService;

    @GetMapping("/consumer/payment/hystrix/ok/{id}")
    public String paymentInfo_OK(@PathVariable("id") Integer id)
    {
        String result = paymentHystrixService.paymentInfo_OK(id);
        return result;
    }

    @GetMapping("/consumer/payment/hystrix/timeout/{id}")
    @HystrixCommand(fallbackMethod = "paymentTimeOutFallbackMethod",commandProperties = {
            @HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds",value="1500")
    })
    public String paymentInfo_TimeOut(@PathVariable("id") Integer id)
    {
        String result = paymentHystrixService.paymentInfo_TimeOut(id);
        return result;
    }
    public String paymentTimeOutFallbackMethod(@PathVariable("id") Integer id)
    {
        return "我是消费者80,对方支付系统繁忙请10秒钟后再试或者自己运行出错请检查自己,o(╥﹏╥)o";
    }
    
    //下面是全局 fallback方法
    public String payment_Global_FallbackMethod(){
    return "Global异常处理信息。。。。";
    }

}
测试全局就把上面的@HystrixCommand全注销 然后剩下@HystrixCommand

自我理解

服务降级就是兜底 客户端保护客户端的 服务端保护服务端的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值