当前位置: 首页 > news >正文

【架构面试】三、高可用高性能架构设计

高可用高性能架构设计

  1. 面试要点引入:架构原理、分布式技术等是面试必考领域,高可用高性能需求考察频繁。面试常通过询问系统架构设计来考察能力,讲解架构设计过程就是证明系统高可用的过程,其中涉及SLA指标。
  2. SLA指标详解
    • 定义与衡量方式:SLA是服务可用性重要衡量指标,业界常用几个九的服务等级衡量互联网应用可用性,如京东的四个九(99.99%),即一年约52.6分钟不可用。可通过公式计算不同SLA指标下的年度不可用时长。
    • 阈值设置:不同SLA指标阈值对应不同的可用性水平和年度不可用时间。电商平台多采用四个九的SLA,面试时需了解其概念和主流设置阈值。
  3. 高可用度量方式:单纯用时间指标度量系统可用性不够科学,基于一段时间内停机影响的请求量占比评估更合理,可评估业务在不同时期停机的损失。回答系统高可用指标时,应先说明两种度量方式,再结合业务体现后者的科学性,立足业务价值回答问题。
  4. 监控系统设计:证明系统高可用需回答如何评估、监控和保证。监控系统包含基础设施、系统应用、存储服务监控报警三个核心部分。
    • 基础设施监控:涵盖系统和网络要素指标,常用工具能监控关键指标,报警策略由时间维度、报警级别和阈值设定组成。
    • 系统应用监控:关注流量、耗时等核心指标,有多种监控工具。
    • 存储服务监控:除基础指标外还有特有指标。面试时要展现全局监控视角,根据业务场景裁剪指标细节。
  5. 故障处理:线上服务稳定性至关重要,面试官常追问线上告警时核心研发的处理方式。故障处理能力是面试官看重的能力之一,面试者应形成体系化的故障处理知识框架 。

系统高可用

  1. 高可用面试题引入:给出电商平台系统架构面试题,商品操作涉及多系统调用,流量高峰时商品系统易扩容,但依赖的促销和积分系统响应不及时,导致线程阻塞,引出如何处理该问题的思考,此问题涉及高可用架构设计。
  2. 雪崩现象与解决思路:分析商品调用链条,指出积分系统响应时间变长会使整体请求响应时间变长甚至宕机,这就是雪崩现象,即局部故障导致全局故障。解决系统可用性可从评估、检测和保证三方面着手,进而引出降级和熔断机制。面试官常通过询问熔断和降级设计及项目实现情况来考察候选者。
  3. 熔断机制原理与实现:服务熔断机制参考保险丝原理,当服务调用失败次数超过阈值,后续请求不再调用该服务。在微服务架构中,服务调用方为每个调用的服务维护有限状态机,包含关闭、半关闭和打开三种状态。关闭状态下正常调用,失败次数累计到阈值切换到打开;打开状态下启动超时计时器,超时后切换到半打开;半打开状态下请求可打到后端服务,成功次数达标后切换到关闭。实际工作中常使用Netflix的开源项目实现熔断功能,但面试中可能考察不借助开源组件实现断路器功能的能力。
  4. 降级设计原理与策略:降级设计是在资源和访问量矛盾时,放弃部分非核心功能或服务以保证系统可用性,熔断是降级的一种手段。降级设计可从服务和功能两方面考虑。服务降级分读操作和写操作降级,读操作降级到缓存,无数据则返回默认值;写操作先写缓存再异步写数据库。功能降级通过降级开关控制,简化产品功能,且降级设计一般通过参数化配置存储在配置中心,高并发时开启开关实现系统降级。
  5. 总结与思考题:总结雪崩原因、服务熔断实现方式和降级策略。服务熔断是有限状态机,关键在于状态转换;服务降级是做取舍,解决资源不足和访问量过大问题,可降低系统一致性、裁剪非核心服务和简化产品功能。在架构设计涉及服务调用时要考虑熔断和降级方案,同时还有服务冗余、负载均衡等多种高可用设计方案。布置思考题,要求结合项目经历阐述降级策略。

在这里插入图片描述

高性能系统证明方法

  1. 证明系统高性能的方法:高性能与业务紧密相关,不同业务场景高性能的标准不同,如游戏、直播、电商服务器支持的在线人数不同。在实际业务场景中,需关注业务相关指标,明确业务场景后,要关注系统性能指标。
  2. 性能指标
    • 延迟和吞吐量:是衡量软件系统常用指标。吞吐量反映单位时间处理请求能力,延迟是客户端发送请求到接收响应的时间,二者既互斥又不绝对互斥。通过性能压测绘制曲线,系统优化要找延迟趋向最低、吞吐量趋向最高的点。
    • TP指标:指请求中99%的请求能达到的性能,如TP99 = 10ms表示99%的请求在10ms内可得到响应。计算时将请求响应时间从小到大排序,取99%对应的响应时间。TP指标相比性能均值,更能反映系统真实情况,避免异常值干扰。
  3. 全链路性能指标之请求链路详解
    • DNS解析:用户输入URL后,浏览器通过DNS域名解析查找IP地址,对应性能指标是DNS解析时间。可通过DNS缓存、预解析,增大域名TTL值提升解析性能。
    • 建立TCP连接:HTTP基于TCP协议传输数据,用TCP连接时间衡量浏览器与外部服务器建立请求连接的时间。
    • 服务器响应:包含基础设施、数据库、系统应用性能指标。基础设施指标有CPU利用率、磁盘I/O、网络带宽、内存利用率等;数据库指标有SQL查询时间、并发数、连接数、缓存命中率等;系统应用指标与业务有关,不同业务场景架构设计不同,如To C系统常用同步RPC调用,To B系统可用异步事件驱动模式,后者吞吐量更高。
    • 白屏时间:从用户输入URL到看到网页第一个视觉标签的时间,可作为性能衡量指标,优化手段包括减少文件加载体积、调整用户界面浏览行为。
    • 首屏时间:用户输入URL后看到当前窗口完整页面的时间,是重要衡量指标,白屏时间和首屏时间越短,用户体验越好。
  4. 查找系统瓶颈的步骤
    • 设计阶段:定义系统性能目标,不同性能目标影响系统架构设计和成本,设计阶段后调整架构成本高。
    • 开发阶段:走查代码和业务流程,评审应用程序源代码、环境参数、配置程序等整个调用流程和处理逻辑。
    • 测试阶段:上线前进行全方面压力测试,绘制吞吐量和延迟曲线,找到最佳性能点并限流。若吞吐量未达预期,定义延迟问题需端到端排查,可使用相关命令和工具;定位吞吐量问题要结合CPU使用率。
  5. 系统性能评估:回答系统高性能问题,初级和中级研发工程师可从吞吐量、延迟、TP99三个指标出发;高级研发工程师还需了解全链路性能指标,实际生产环境还有网络工程层面的性能优化指标,可课下学习。要在脑海中建立请求链路蓝图,熟悉各环节性能损耗。

在这里插入图片描述

  1. 高性能架构设计概述:延续上一讲,讲解如何设计高性能架构,强调从前端请求到后端服务的全链路视角进行考量,且初中级和高级研发工程师面试回答思路存在差异。
  2. 前端优化环节
    • 减少请求次数:包括增加缓存控制,让浏览器访问本地资源副本;减少图像请求次数,将多张图片拼成一张后用CSS定位显示;减少脚本请求次数,通过压缩文件减少传输大小和请求数。
    • 页面静态化:将页面元素缓存到CDN节点,如商品详情页静态化可减轻后端服务器压力。
    • 边缘计算:因大数据处理需求,大厂将计算能力置于靠近用户的CDN节点,使其具备定制化计算能力,涉及无服务器架构等概念,面试中掌握可加分。
  3. 后端性能考量角度:后端性能问题可从基础设施、网络、架构三个层面考量,如网络层的网络专线、CDN优化,架构层的动静分离、集群优化、数据隔离等多种方案。
  4. 高级研发工程师的思考
    • 明确系统指标:设计高性能架构要清楚系统硬件性能指标,例如在限定并发用户数(如100万内)的情况下保证系统tp99(99%的请求响应时间)为两秒。
    • 系统设计步骤:架构师至少要有明确指标、保护系统(并发数超限时保护系统并拒绝多余请求)、提供优雅体验(如服务器排队机制和提示信息)、快速扩容(出现流量压力时能快速增加承载能力)这四个系统设计思考步骤。
  5. 高性能架构落地技术点
    • 系统限流:通过流量控制保证系统稳定性,当并发压力超设计指标时拒绝新请求,让用户排队。
    • 快速扩容:存储额外计算资源用于应急,同时要考虑IT成本和扩容速度,确保在规定时间内完成扩容并达到性能指标。
    • 系统优化:运用前后端优化技术点对系统进行持续优化,性能设计要贯穿系统建设的需求、设计、研发、测试、上线、运行等各个阶段。
  6. 性能设计与面试思路
    • 性能设计贯穿始终:性能设计在系统建设各阶段都要考虑,以便随时调整优化,如今高性能架构设计已成为标准化应对流程。
    • 面试解答思路:面试时先结合业务场景识别关键服务,进行性能设计和测试;再为非关键服务提供降级和熔断方案,同时要注重培养思维能力,学会拆解复杂问题。

在这里插入图片描述

设计完整架构

  1. 课程引入与场景概述:回顾过往面试思路,引出用电商预约抢购场景串联知识点进行架构设计题解答。以京东1499元抢购飞天茅台活动为例,梳理出抢购系统的商品预约、等待抢购、商品抢购、订单支付四个阶段。
  2. 商品预约阶段:主要考察高并发场景下抢购资格的发放,可基于Redis实现分布式锁。加锁时用SET命令设置键值和过期时间,解锁时通过Lua脚本依据唯一标识判断客户端是否正确,保证解锁操作原子性。但单机Redis实例存在故障风险,需掌握基于Redis集群实现分布式锁以保证锁的可靠性。
  3. 等待抢购阶段:因用户频繁刷新商品详情页导致读请求量剧增,若未做好流量控制易成系统性能瓶颈。解决思路包括页面静态化,提前生成静态页面并存储于CDN节点,使浏览器缓存页面资源;服务端限流,在商品详细页后端系统入口层对动态请求接口设置最大并发访问数量,基于Nginx配置限流算法,如限制单位时间内所有IP或单个IP的请求数量,这需要提前掌握限流策略原理,如令牌桶算法。
  4. 商品抢购阶段:用户提交订单时系统校验库存,库存足够则扣减并生成订单。由于瞬时流量高,采用消息队列暂存请求、提示排队,后端异步处理。库存校验和扣减可基于数据库或缓存实现,但数据库在高流量下性能不佳,若用数据库需借助分布式锁优化并发操作,且对锁的可靠性要求高,故多选择基于缓存扣减库存,但要考虑缓存单点问题和引入锁策略保证数据一致性。该阶段架构设计涉及流量消峰、扣减库存和分库分表三个技术考点。流量消峰通过消息队列异步化处理提单请求;扣减库存要解决Redis单点及数据不一致问题;分库分表通过对用户ID哈希取模将订单分配到多个存储节点,提高并发能力。此外,还需考虑抢购入口请求量大导致的带宽问题,可从网络工程角度通过单独子域名绑定独立网络服务器解决,涉及DNS设计和优化。
  5. 订单支付阶段:用户支付完成后,支付平台回调系统接口更新订单状态,架构系统通过异步通知处理非核心业务,如积分累积、消息通知等,可基于MQ实现异步操作。但要考虑服务异常导致的请求数据丢失问题,借助可靠消息投递机制,先本地存储消息,再通过异步重试补偿,如支付回调更新订单状态时插入消息,再异步推送至其他系统。
  6. 总结与思考:总结各阶段注意点,强调在商品预约阶段基于Redis实现分布式锁获取抢购资格;等待抢购阶段进行页面静态化和服务端限流;商品抢购阶段利用MQ同步转异步处理流量,并解决消息队列及库存扣减相关问题;订单支付阶段基于MQ通知并保证消息可靠性。同时,留下思考问题:面对用户只抢购不支付的恶意行为,如何优化架构设计。

在这里插入图片描述

研发工程师成长路线与架构师目标

  • 研发工程师成长路线:从初级研发工程师进阶为中高级研发工程师,再提升至架构师并寻求更高突破。多数研发工程师以成为架构师为目标,但很多人在工作中缺乏参与架构设计的机会,公司也不主动培养,导致成长困难。
  • 架构师成长途径:架构师多是在参与大项目、解决问题过程中形成知识体系和能力。若没有这种机会,可先掌握架构师知识体系,再通过实践检验,逐步成为架构师。

架构师能力模型

  • 能力组成:由基础技术架构(非功能性技术范畴)、业务架构(业务场景下对业务需求的抽象)、开发技能(落地架构的能力)构成。
  • 能力要求:在系统开发的需求分析阶段,架构师要给出合理的业务架构需求分析抽象模型;架构设计和选型阶段,要考虑技术合理性制定方案;架构落地阶段,要指导研发并推进项目执行,做好系统开发各环节的技术把控。
  • 能力对标:以互联网大厂能力模型对标,架构师需能覆盖领域子方向,作为系统技术负责人,把握系统的规划设计、落地和演进,独当一面。

互联网分布式架构师知识体系

  • 分布式存储
    • 数据分片:为解决数据水平扩展,将数据分布到多个节点实现负载均衡,常见分片规则有范围分片和哈希分片,涉及不同分配算法。
    • 数据复制与副本:数据复制存在同步和异步复制,会产生副本保证数据可靠性和可用性,但多个副本同步会产生一致性问题,如强一致性、弱一致性、最终一致性等,解决一致性问题涉及多种协议。
    • 主选举与分布式锁:多个副本带来主选举和分布式锁问题,解决锁的容错性(如双主问题)会用到租约机制。
    • 基础理论:为衡量副本可用性和一致性,引出分布式系统的基础理论,如CP、BASE以及PACELC 。
  • 分布式计算:涉及并行计算(如多线程、服务集群)、分布式计算(将任务分割到多个服务器并行计算)、云计算(分布式技术加虚拟化技术统称,开发者利用云API开发应用并托管到云上)三个概念。架构师要了解分布式领域计算模式,如Hadoop中MapReduce设计思想,以及Storm、Spark、Flink等流式计算框架的架构设计方案。面试系统架构师了解相关知识体系即可,计算框架设计理念有参考价值。
  • 输入输出:系统架构中的输入输出指系统间通信技术,涉及网络通讯基础协议(如TCP、UDP协议)、网络IO模型,以及连接复用、序列化、反序列化、RPC、MQ消息队列等应用知识。架构师要理解高性能原理,掌握流量流转过程及应对方案,包括网络设备、操作系统、应用系统、系统线程处理流量时涉及的技术和设计模式,掌握分布式通信系统核心技术RBC和MQ。
  • 控制器:可理解为系统架构中的调度系统,包括流量调度和资源调度。流量调度涉及负载均衡、路由、熔断、降级、限流等流量控制方案策略;资源调度是将流量调度迁移到服务器计算、存储、容器等资源上的调度,架构师至少要掌握常用系统调度设计、调度算法和负载策略。

学习架构设计知识的思路

  • 从熟知领域出发,梳理核心知识脉络形成结构图,将零散知识点补充到知识网络图谱上,形成核心知识和扩展知识。
  • 养成对基础的判断力,针对同一问题从不同方法、维度、角度分析对比,提升工作中对技术的领悟力。

  1. 职场建议 - 面向职场老人
    • 思考能力:培养敏感的思考能力,通过敏感驱动思考、学习和总结,逐渐达到敏锐,这需要大量练习。
    • 表达能力:具备良好表达能力,沟通时要会表达、敢表达且表达准确,表达建立在充分思考基础上,可学习结构化思维提升表达能力。
    • 经验积累:做有价值的事要惊艳到自己,超出他人预期,以此拉开与他人差距。
    • 避免老油条心态:不要成为职场老油条,以免影响判断力,要对格局、方法论等抽象概念有明确认知。
    • 面试认知:以解释“什么是架构设计”为例,面对不同面试官要有不同层次的回答,体现对架构设计概念的深入理解。
  2. 职场建议 - 面向职场新人
    • 规划与积累:要有计划、有积累,在追求公司价值的同时规划自身未来价值,学习时间管理,重视重要不紧急的事情。
    • 自我定位:学会自我定位,不要依赖他人定位,同时善于归纳总结和思考。
    • 职业发展阶段:了解技术人职场发展的三个阶段,即“坐下不坐上”“坐下也坐上”“坐上不坐下” ,并争取有新的感悟。

[本章完]

相关文章:

【架构面试】三、高可用高性能架构设计

高可用高性能架构设计 面试要点引入:架构原理、分布式技术等是面试必考领域,高可用高性能需求考察频繁。面试常通过询问系统架构设计来考察能力,讲解架构设计过程就是证明系统高可用的过程,其中涉及SLA指标。SLA指标详解 定义与衡…...

11.渲染管线——光栅化阶段

光栅化阶段是渲染管线中的一个关键步骤,负责将3D模型转换成屏幕上的2D像素。用通俗易懂的方式来解释: 通俗解释:光栅化就像把3D模型“投影”到2D屏幕上 想象你是一个画家,正在把3D场景画到2D画布上: 3D模型到2D屏幕的…...

【数据分享】1929-2024年全球站点的逐月平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标!说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2024年全球气象站点…...

二叉树的深度

二叉树深度的定义: 二叉树的深度(高度)是指从根节点到最远叶子节点的最长路径上的节点数。例如,一个只有根节点的二叉树,其深度为1;如果根节点有两个子节点,且每个子节点又分别有两个子节点&…...

MySQL命令及用法(精华版)

目录 DDL(数据定义语言) 数据库操作 表操作 DML(数据操作语言) DQL(数据查询语言) 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 DCL(数据控制语言) 用户…...

R语言学习笔记之高效数据操作

一、概要 数据操作是R语言的一大优势,用户可以利用基本包或者拓展包在R语言中进行复杂的数据操作,包括排序、更新、分组汇总等。R数据操作包:data.table和tidyfst两个扩展包。 data.table是当前R中处理数据最快的工具,可以实现快…...

将 OneLake 数据索引到 Elasticsearch - 第二部分

作者:来自 Elastic Gustavo Llermaly 及 Jeffrey Rengifo 本文分为两部分,第二部分介绍如何使用自定义连接器将 OneLake 数据索引并搜索到 Elastic 中。 在本文中,我们将利用第 1 部分中学到的知识来创建 OneLake 自定义 Elasticsearch 连接器…...

Linux——冯 • 诺依曼体系结构

目录 一、冯•诺依曼体系结构原理二、内存提高冯•诺依曼体系结构效率的方法三、当用QQ和朋友聊天时数据的流动过程四、关于冯诺依曼五、总结 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系 流程&#…...

Java进阶(一)

目录 一.Java注解 什么是注解? 内置注解 元注解 二.对象克隆 什么是对象克隆? 为什么用到对象克隆 三.浅克隆深克隆 一.Java注解 什么是注解? java中注解(Annotation)又称java标注,是一种特殊的注释。 可以添加在包,类&…...

appium自动化环境搭建

一、appium介绍 appium介绍 appium是一个开源工具、支持跨平台、用于自动化ios、安卓手机和windows桌面平台上面的原生、移动web和混合应用,支持多种编程语言(python,java,Ruby,Javascript、PHP等) 原生应用和混合应用&#xf…...

Qt 5.14.2 学习记录 —— 이십 QFile和多线程

文章目录 1、QFile1、打开2、读写3、关闭4、程序5、其它功能 2、多线程1、演示2、锁 3、条件变量和信号量 1、QFile Qt有自己的一套文件体系,不过Qt也可以使用C,C,Linux的文件操作。使用Qt的文件体系和Qt自己的一些类型更好配合。 管理写入读…...

積分方程與簡單的泛函分析7.希爾伯特-施密特定理

1)def函數叫作"由核生成的(有源的)" 定义: 设 是定义在区域上的核函数。 对于函数,若存在函数使得, 则称函数是“由核生成的(有源的)”。 这里的直观理解是: 函数的“来源”可以通过核函数 与另一个函数的积分运算得到。 在积分方程理论中,这种表述常…...

使用vitepress搭建自己的博客项目

一、介绍can-vitepress-blog 什么是CAN BLOG CAN BLOG是基于vitepress二开的个人博客系统,他能够方便使用者快速构建自己的博客文章,无需繁琐的配置和复杂的代码编写。 CAN BLOG以antdv为UI设计基础,简洁大方,界面友好&#xf…...

开始步入达梦中级dba

分析内存使用需要的方法之一 disql /nolog conn sysdba/sysdbaselect value from v$parameter where nameMEMORY_LEAK_CHECK; SP_SET_PARA_VALUE(0,MEMORY_LEAK_CHECK,1); select * from V$MEM_REGINFO; select * from V$MEM_HEAP;...

如何在docker中的mysql容器内执行命令与执行SQL文件

通过 docker ps -a 查询当前运行的容器,找到想执行命令的容器名称。 docker ps -a若想执行sql文件,则将sql文件放入当前文件夹下后将项目内的 SQL 文件拷贝到 mysql 容器内部的 root下。 sudo docker cp /root/enterprise.sql mysql:/root/然后进入 my…...

S4 HANA更改Tax base Amount的字段控制

本文主要介绍在S4 HANA OP中Tax base Amount的字段控制相关设置。具体请参照如下内容: 1. 更改Tax base Amount的字段控制 以上配置用于控制FB60/FB65/FB70/FB75/MIRO的页签“Tax”界面是否可以修改“Tax base Amount”, 如果勾选Change 表示可以修改T…...

Linux权限有关

文章目录 一、添加普通用户二、Xshell下命令行的知识三、 Linux和Windows操作系统四、再探指令和Linux权限五、用户相关用户切换: 今天我们学习与Linux有关的权限等内容,以及一些零碎知识帮助我们理解Linux的系统和Xshell的原理。 本篇是在Xshell环境下执行的。 一…...

【github 使用相关】提交pr和commit message Conventional Commits 规范 代码提交的描述该写什么?

目录 Git 提交信息格式格式描述Subject(标题)Body(正文) 规范的标签(Tag)示例 CG Git 提交信息格式 格式描述 一般开源项目代码库根目录都会有一个 CONTRIBUTING.md 或者其他类似名字的文档来介绍如何开始…...

Docker—搭建Harbor和阿里云私有仓库

Harbor概述 Harbor是一个开源的企业级Docker Registry管理项目,由VMware公司开发。‌它的主要用途是帮助用户迅速搭建一个企业级的Docker Registry服务,提供比Docker官方公共镜像仓库更为丰富和安全的功能,特别适合企业环境使用。‌12 Harb…...

Maven的下载安装配置

maven的下载安装配置 maven是什么 Maven 是一个用于 Java 平台的 自动化构建工具,由 Apache 组织提供。它不仅可以用作包管理,还支持项目的开发、打包、测试及部署等一系列行为 Maven的核心功能 项目构建生命周期管理:Maven定义了项目构建…...

Rust:高性能与安全并行的编程语言

引言 在现代编程世界里,开发者面临的最大挑战之一就是如何平衡性能与安全性。在许多情况下,C/C这样的系统级编程语言虽然性能强大,但其内存管理的复杂性导致了各种安全漏洞。为了解决这些问题,Rust 作为一种新的系统级编程语言进入…...

matlab的cat()函数详解(OK)

cat函数的功能是 连接数组 功能: 按指定的维度连接多个向量 结构: C cat(dim, A, B) 按dim指定的维度连接向量A和BC cat(dim, A1, A2, A3,A4, …) 按dim指定的维度连接多个向量A1, A2,A3,A4…C cat(dim, A{:}) 将包含向量的cell或结构数组联合为一…...

将个人微信中的时间改成标准的日期时间格式

list1["10:05","上午 10:07","下午 2:07","晚上 8:07","昨天 16:07","星期天 19:27","星期二 19:27","星期四 14:27","2025年1月10日 17:43"]from datetime import datetime, time…...

centos9编译安装opensips 二【进阶篇-定制目录+模块】推荐

环境:centos9 last opensips -V version: opensips 3.6.0-dev (x86_64/linux) flags: STATS: On, DISABLE_NAGLE, USE_MCAST, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, HP_MALLOC, DBG_MALLOC, CC_O0, FAST_LOCK-ADAPTIVE_WAIT ADAPTIVE_WAIT_LOOPS1024, MAX_RE…...

初步搭建并使用Scrapy框架

目录 目标 版本 实战 搭建框架 获取图片链接、书名、价格 通过管道下载数据 通过多条管道下载数据 下载多页数据 目标 掌握Scrapy框架的搭建及使用,本文以爬取当当网魔幻小说为案例做演示。 版本 Scrapy 2.12.0 实战 搭建框架 第一步:在D:\pyt…...

基于SpringBoot的软件产品展示销售系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

pycharm 运行远程环境问题 Error:Failed to prepare environment.

问题排查 拿到更详细的报错信息: Help > Diagnostic Tools > Debug Log Settings section: 添加下面的配置 com.intellij.execution.configurations.GeneralCommandLine 重显报错,我这里是再次运行代码打开 Help | Collect Logs and Diagnosti…...

Redis vs. 其他数据库:深度解析,如何选择最适合的数据库?

一、如何为项目选择合适的数据库? 选择合适的数据库是一个复杂的过程,需要综合考虑多个因素。下面几个维度来详细阐述: 1.数据模型 关系型数据库(RDBMS):适用于高度结构化、关联性强的数据,如电…...

HTB:Support[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用ldapsearch…...

导出地图为pdf文件

有时我们只是想创建能共享的pdf文件,而不是将地图打印出来,arcpy的ExportToPDF()函数可以实现该功能. 操作方法: 1.在arcmap中打开目标地图 2.导入arcpy.mapping模块 import arcpy.mapping as mapping 3.引用当前活动地图文档,把该引用赋值给变量 mxd mapping.MapDocumen…...