985研一学习日记 - 2024.10.11

偶尔一碗热鸡汤:一个人内耗,说明他活在过去;一个人焦虑,说明他活在未来。只有当一个人平静时,他才活在现在。

日常

1、6:00起床 √

2、健身1h

今天练了肩部以及背,然后跑步半小时

3、LeetCode刷了2题

  1. 括号生成:回溯、中
    • 仍然使用递归+回溯的方法,递归遍历字符串,每遇到一个)就在其左右分别插入一个()
    • 递归插入(),然后恢复状态后回溯继续插入,要注意当两个))相邻时,只需要插入一次即可
    • 此时会出现重复的情况,根据前面做的题的经验,可以从上一次插入位置开始下一次的遍历
  2. 单词搜索:回溯、中
    • 使用递归+回溯的算法,其中回溯是使用DFS深度优先遍历的思想,记录每个字母是否遍历过
    • 先遍历整个矩阵找到第一个字母,然后对字母进行递归,在递归函数中先判断当前递归的深度是否等于搜索单词的长度,如果等于说明存在;如果不等于则从当前字母开始DFS,分别判断上下左右四个位置的字母是否与当前的字母相同,要以回溯的方式进行递归,若相同则修改标记为1然后DFS递归遍历,然后再恢复状态后遍历别的情况
    • DFS要传入当前已经遍历的位置,而且要创建flag数组进行标识字母是否遍历过

4、22:30复盘

不复盘等于白学!!!

学习和感想

1、SpringCloud!!!

  1. LoadBalancer负载均衡
    1. LoadBalancer组件是微服务客户端自己实现的,在RestTemplateConfig配置类上使用@LoadBalanced注解进行配置,表示赋予Rest负载均衡能力(在Consul中必须开启负载均衡 ,否则会报错)

    2. 是什么:是springcloud提供的用来替代ribbon的本地客户端的负载均衡组件,每个微服务均有一个本地的,然后由客户端自己根据规则选择相应的服务实现负载均衡

    3. 先导入LoadBalancer组件所需要的POM依赖:spring-cloud-starer-loadbalancer

    4. 不需要修改yml文件,而是在微服务之间进行通信的RestTemplate对象的@Bean方法上加上@LoadBalanced注解即可在这里插入图片描述

    5. 在使用Consul后,微服务之间进行通信时必须要实现负载均衡,在RestTemplate上加上注解来实现本地客户端的负载均衡

    6. 负载均衡算法原理:rest接口第几次请求数 % 服务器总数 = 实际调用的服务器下标(每次重启后rest接口计数从1开始)

  2. OpenFeign:服务调用与负载均衡(服务端接口)
    1. 是什么:通过OpenFeign可以实现服务调用和负载均衡

      1. OpenFeign是一个声明性web服务客户端在这里插入图片描述
    2. 怎么用:服务提供者提取公共接口用@FrignClient标注,服务调用者POM,yml,主启动,然后业务类在这里插入图片描述

      1. 当使用RestTemplate实现服务调用时,要在每个微服务中定义RestTemplate对象,然后手动设置要调用的微服务的名字,再使用该对象对该微服务进行调用;此时每个要调用服务的微服务都要定义一个RestTemplate对象
      2. 为了解决这一问题,引入了OpenFeign:此时只需将服务提供者所提供的方法在公共微服务中相应的接口中声明,并用@FeignClients(‘服务提供者名’)标注该接口(此时公共微服务要引入spring-cloud-starter-openfeign依赖才可使用@FeignClients注解),此时就代表服务提供者将其要提供的服务放到公共的接口中,该接口中的方法必须与所提供的服务方法有一致的路径@XxxMapping(),接口方法名字可以不相同
      3. 服务调用者要调用对应微服务提供的服务时,就可以使用openfrign进行调用首先要在该微服务中引入spring-cloud-starter-openfeignPOM依赖,然后改yml,然后再修改启动类,加入@EnableFeign注解来开启OpenFeign,然后此时在controller中通过自动装配定义要调用服务所提供的接口类对象,然后就可以通过该对象调用对应的方法实现对应的服务
    3. 超时控制:在yml中设置全局或者单个超时时间

      1. 在调用者通过Openfeign调用微服务时,会有两个关于超时的配置,分别是connectTimeout和readTimeout
      2. connectTimeout是调用者连接到提供者的超时控制,而readTimeout是连接上后完成服务调用直到返回所限制的超时时间,默认是60秒,即当服务调用时间超过60s未返回时就会报错
      3. 可以在服务调用者客户端上通过修改yml文件来配置超时时间(谁发起调用就配置谁的yml文件),通过修改 spring.cloud.openfeign.client.config.dafault.readtimeout 来设置全局请求(所有调用请求)的超时控制,也可以单独指定某个服务调用的超时控制,通过修改 spring.cloud.openfeign.client.config.服务名.readtimeout 来实现,两个可以共存,且单个配置会覆盖全局配置
    4. 重试机制:默认是关闭的,只要第一个调用失败则直接返回(在配置类开启重试机制)

      1. 可以开启重试机制,当调用失败后会重新发起请求
      2. 在调用者客户端微服务中创建FeignConfig配置类@Configuration注解标注,然后用@Bean注解标注 Retry myRetry(){} 方法,在该方法中默认 return Retry.NEVER_RETRY;(默认是不进行重试的),此时可以修改return Retry.default(初次间隔时间,最大间隔时间,请求总次数)来开启重试机制,此时当第一次请求失败后,会间隔时间后重新发起调用请求,直到规定次数失败后才会返回报错
    5. 性能优化HttpClient5:一定要替换!!先引入POM依赖再在yml中进行配置

      1. OpenFeign默认使用JDK中自带的HttpClient.HttpURLConnection发送HTTP请求,没有连接池、性能和效率也比较低,此时就可以修改OpenFeign的连接
      2. 此时可以使用Apache 的HttpClient5来替换以提高性能,先修改POM中的依赖,导入HC5的依赖,然后修改调用者的yml配置文件spring.cloud.openfeign.httpclient.hc5.enabled=true,以开启HC5来替换默认的HttpClient
      3. 是什么
    6. 请求回应压缩:直接在yml中开启压缩

      1. 使用OpenFeign进行服务调用时可以对请求和回应进行GZIP压缩,以减少通信过程中性能损耗,要通过参数 **spring.cloud.openfeign.compression.request/response.enabled=true 来开启请求和回应的数据压缩
      2. 是什么
    7. 日志打印:对Feign的接口调用情况进行监控和输出先在配置类开启日志级别,再在yml中配置对哪个接口进行监控

      1. 先在配置类开启日志级别,再在yml中配置对哪个接口进行监控
      2. 首先要在需要开启日志功能的客户端微服务中的FeignConfig配置类中配置@Bean:Logger.Level返回所选择开启的日志级别Logger.Level.Xxx,然后在yml配置文件中开启日志功能提供设置logging.level.含有@FeignClient注解的接口的完整包名和接口名=debug表示开启日志监控哪个接口的调用情况
      3. OpenFeign提供日志打印功能,了解请求的细节,对Feign的接口调用情况进行监控和输出,有四个日志级别:NULL、BASIC、HEADER、FULL,默认是NULL不会记录任何日志信息,BASIC记录了请求的url、请求方法等信息,HEADER记录了请求和响应的头信息,FULL全部信息都记录了正文和元数据等
  3. CircuitBreaker断路器:服务熔断和降级
    1. 为什么要有:禁止服务雪崩故障,对故障结点快速熔断或降级保险丝
      1. 分布式系统微服务之间有多种级联的调用关系,当某一个调用失败时,会导致雪崩(一个故障导致所有都不能正常运行),此时就需要对故障和延迟进行隔离和管理
      2. 之前是Hystrix豪猪,分布式容错,当一个出错时不会发生级联错误
    2. 有什么作用:服务熔断、服务降级
      1. 服务熔断就相对于保险丝,当出现故障时直接熔断使服务不可用,并对服务降级(系统繁忙,请稍后再试)返回友好的兜底界面
    3. CircuitBreaker实现原理:circuitbreak只是一套规范和接口
      1. 当某一个组件发生故障时会切换到OPEN状态,过一会会切换到HALF_OPEN状态来试探是否恢复,恢复了则切换到CLOSED状态
      2. 保护分布式系统免受故障和异常,当一个组件发生故障时,会切换到OPEN状态,阻止请求发送到该组件从而避免更多请求发送到该组件
    4. Resilience4J:轻量级的容错库,专门做服务熔断和服务降级
      1. 能干吗:断路、速率限制、舱壁(隔离)
      2. Circuitbreaker:断路
        1. 断路器
          1. 三大状态之间的转换:刚开始默认是CLOSED关闭状态,此时任何请求均可以通过,当最近N次调用或者最近N秒内调用故障率过高时,则会判定服务提供者发生了故障,就会将状态切换为OPEN,此时会拒绝任何请求,过一段时间后会进入HALF_OPEN状态,此时会通过一些请求,然后根据这些请求的结果将状态切换为CLOSED或者OPEN
          2. 配置参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/56250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python环境搭建

Python环境搭建 1 安装Python 双击安装包 2 安装Pycharm 双击安装包,然后下一步 安装完成后重启电脑 3 破解Pycharm 启动Pycharm 破解 4 pycharm的基本配置 1.主题颜色 2. 文件语言编码 滚动鼠标滑轮ctrl,可以快速缩放文本字体大小。 控制台编码的格式&#x…

Qt - QMenu

QMenu 1、menu转string输出 //GlobalEnum.h #include <QObject> #include <QMetaEnum> class GlobalEnum : public QObject {Q_OBJECT public:EnumTest();enum Enum_Test{ZhangSan 0,WangWu,};Q_ENUM(Enum_Test) };#define EnumToString(e) \ QMetaEnum::fromTy…

Qt初识_通过代码创建hello world

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Qt初识_通过代码创建hello world 收录于专栏【Qt开发】 本专栏旨在分享学习Qt的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1.通过按…

c语言库文件

c语言库文件 动态库动态库制作首先生成动态库文件名使用动态库编译动态库运行删除动态库1.sudo su 静态库静态库制作需要将源文件.c转换成二进制文件.o&#xff08;重定向文件&#xff09;将重定向文件打包成静态库文件使用静态库文件 静态库和动态库的区别 库文件的概念 我们将…

老人桌面 1.3.5|专为老人设计的便捷实用桌面应用

老人桌面是一款专为老人设计的便捷实用桌面应用&#xff0c;具有超大字体设计&#xff0c;符合老人视力水平&#xff0c;撞色简洁的应用界面&#xff0c;拯救老人视觉体验。此外&#xff0c;还提供了常用的实用小工具&#xff0c;让老人能够轻松使用手机。 大小&#xff1a;5.…

vuefor循环动态展示图片不显示

问题代码如下 <div class"zjjc_list_bottom" v-for"(item, index) in zjjcList" :key"item.id"><img :src"./assets/left_blue_ (index 1) .png" alt""> </div> 理论来说是不会有问题&#xff0c;但…

An.如何在an中截取音频片段

如何在an中截取音频片段 在an动画制作过程中&#xff0c;部分片段需要插入音乐&#xff0c;如果想要插入一首歌曲的其中一小节&#xff0c;打开音频编辑软件操作就很麻烦&#xff0c;不妨直接在an中操作&#xff1a; 以这首节气歌为例&#xff0c;前奏太长需要剪掉前面的部分 …

WPF -- LiveCharts的使用和源码

LiveCharts 是一个开源的 .NET 图表库&#xff0c;特别适用于 WPF、WinForms 和其他 .NET 平台。它提供了丰富的图表类型和功能&#xff0c;使开发者能够轻松地在应用程序中创建动态和交互式图表。下面我将使用WPF平台创建一个测试实例。 一、LiveCharts的安装和使用 1.安装N…

软件测试与软件缺陷的基础知识

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

计算机视觉之可做什么

1、计算机视觉的应用 计算机视觉在我们生活中已经有了很广泛的应用&#xff0c;在我们可见、不可见&#xff1b;可感知、不可感知的地方&#xff0c;深深地影响了我们的生活、生产方式。 日常生活&#xff1a;美颜相机、火车站刷脸进站、线上办理业务的身份认证、自动驾驶等等…

供应链PC实操落地实践|得物技术

目录 一、背景 二、实操模式 三、快捷码设计和使用 1. 快捷码布局 2. 快捷码的准确识别 3. 快捷码的高亮反馈 4. 快捷码打印和黏贴建议 四、问题复盘 1. 基准体验的梳理 五、实操环境检测 1. 实操环境的安装和配置 2. 实操环境检测能力的使用流程 3. 实操检测能力的技术架构 4.…

LeetCode 面试经典150题 Z字形变换

题目&#xff1a; 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时&#xff0c;排列如下&#xff1a; P A H N A P L S I I G Y I R 之后&#xff0c;你…

什么是Qseven?模块电脑(核心板)规范标准简介二

1.概念 Qseven是一种通用的、小尺寸计算机模块标准&#xff0c;适用于需要低功耗、低成本和高性能的应用。 Qseven模块电脑&#xff08;核心板&#xff09;采用230Pin金手指连接器 2.Qseven的起源 Qseven最初是由Congatec、SECO、MSC三家欧洲公司于2008年发起&#xff0c;旨在…

基因科技领军企业——桐树基因完成D轮融资,创新科技引领生命科学

2024年10月8日&#xff0c;无锡桐树生物科技有限公司&#xff08;以下简称桐树基因&#xff09;正式完成过亿元人民币D轮融资。本轮融资由无锡市梁溪科创产业投资基金&#xff08;博华资本管理&#xff09;领投&#xff0c;江苏建道创业投资有限公司跟投&#xff0c;总额过亿元…

【数据结构】二叉树(一)遍历

导言 前面以及有了堆的基础&#xff0c;现在来学习二叉树。二叉树的学习和前面的数据结构很不一样&#xff0c;前面我们主要学习用数据结构储存数据&#xff0c;以及实际手搓数据结构的增删查改&#xff1b;而学习二叉树主要是为我们以后学搜索二叉树以及后面的AVL树等数据结构…

2024.10.10计算机外部设备及调试培训

授课老师&#xff1a;杨戬 1.计算机组成 cpu&#xff0c;主板&#xff0c;内存&#xff0c;硬盘&#xff0c;电源&#xff0c;显示器&#xff0c;键盘和鼠标&#xff0c;光驱和显卡&#xff0c;其他外部设备。 2.虚拟机专业版转换 由于我们在2024.10.8的培训中已经安装了wi…

GPT4o,GPTo1-preview, 拼

兄弟们GPT刚开的 需要上车的扣&#xff0c;工作用 大家一起PIN分摊点压力。 在当今数字化的时代&#xff0c;程序员这一职业已经从幕后走到了前台&#xff0c;成为推动科技进步和社会变革的关键力量。编写代码、解决问题、不断学习新技术&#xff0c;程序员们的日常充满了挑战与…

【物流配送中心选址问题】基于退火算法混合粒子群算法

课题名称&#xff1a; 基于退火算法混合粒子群算法的物流配送中心选址问题 改进方向&#xff1a;模拟退火算法优化粒子群算法 代码获取方式&#xff08;付费&#xff09;&#xff1a; 模型说明&#xff1a; 待补充 Matlab仿真结果&#xff1a; 1. 模型优化后的仿真结果 2…

vscode中安装python的包

首先需要调出命令行。然后运行代码&#xff0c;找到你所需要的环境。 PS C:\Users\Administrator\AppData\Local\ESRI\conda\envs\arcgispro-env> conda env list # conda environments: #C:\ProgramData\Anaconda3 base * C:\Users\Administrator\.con…

搭子小程序:全新在线找搭子,满足社交

搭子作为一种新的社交方式&#xff0c;为大众带来的各种陪伴型的社交模式&#xff0c;不管是饭搭子、健身、遛狗、学习等&#xff0c;都可以找到适合自己的搭子。搭子主打各个领域的陪伴&#xff0c;双方都能够在社交相处中保持着边界感&#xff0c;不涉及情感纠葛等&#xff0…