自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(349)
  • 资源 (1)
  • 收藏
  • 关注

原创 分享一下自己的毕设答辩问题(基于springboot和vue3的个人wiki知识库管理系统的设计与实现)

我查阅了相关文献,总结了国内外相关学者的研究成果,发现在知识库管理方面缺少更深入的研究开发,所以我的论文主要集中在对个人知识库管理的研究,因此我认为这个课题更贴近我的研究方向,也是在指导老师耐心帮助下 最终确定了该课题。理由:在实习过程中接触到一下博客,例如博客园、CSDN著名技术论坛,产生浓厚的兴趣,也打算做一款也是知识库管理系统,可以将自己学到的知识分享出, 同时也是在复习巩固自己的知识面,在以后的工作面试中也有很大的帮助。另外,我也会通过阅读源码、调试代码等方式深入理解问题,并试图找到解决方案。

2024-05-22 17:31:45 590

原创 内存检查:多种类型的内存泄漏分析方案

只需要 2 个工具就可以分析出内存泄漏的问题:heapdump 内存快照的工具chrome dev tools 中的 Memory Profilesheapdump`));在代码中的第 5 行引用了这个库,然后调用 dumpFun 从 10 点 53 分开始,每隔 60 秒打印一次内存快照。这个库如何实现的细节,你可以自己去GitHub 源码中的 lib 目录下查看,主要是做了一层封装,能够更好地适用我们的应用场景。打开 Chrome 浏览器的控制台,在图 1 界面可以找到该工具。

2024-02-22 10:45:31 966

原创 系统稳定:如何监控和保护Node.js进程安全?

图 3 是一个最简单的层级结构图,具体每个层级设计其实是非常复杂的。图 3 监控告警平台简单流程图自动定时采集进程的指标数据;接口被调用或者访问后主动上报的信息。以上的两部分信息都会异步地发送给本地一个采集服务,落地到本地临时缓存中,然后定时地将本地临时缓存的上报信息发送给监控数据处理服务。触发告警,根据告警平台的设置,当数据落入后判断是否满足告警机制,满足则调用告警模块触发告警;查询视图,这部分就是一个前端可交互的界面,用户可以在这个平台查询监控信息;API 接口。

2024-02-22 10:43:49 353 1

原创 缓存与应用:多级缓存策略介绍与应用要点

这个概念和缓存雪崩有点类似,但不是大面积的缓存过期失效,而是某个访问频次较高的数据失效了,从而导致这一刻高并发的请求全部穿透到了数据库,从而数据库并发压力较高,响应较慢,也进一步导致数据库异常,影响其他业务。,空数据按理不属于访问频繁较高的数据,所以经过了缓存,但是并没有缓存该空数据,而是直接穿透进入了数据库,虽然数据库查询也是空数据,但是还是需要经过数据库的查询,这种现象就是击穿了缓存直接前往了数据库查询。这里我已经申请了一个,具体信息如下,你可以使用以下云服务配置,由于是免费的,也可以自行去申请试用。

2024-02-22 10:41:41 1039

原创 优化设计:在 IO 方面应该注意哪些要点?

I/O(Input/Output)意思是输入输出,其实就是数据传递的一个过程,作为后台服务需要更多地与外部进行数据交互,那么就免不了 I/O 操作。I/O 的类型也是非常多的,我们应该掌握常用的一些 I/O 模型分类。I/O 分为以下 5 种模型,在介绍分类之前,我们先了解 I/O 在系统层面会有 2 个阶段(以读为例子):第一个阶段是读取文件,将文件放入操作系统内核缓冲区;第二阶段是将内核缓冲区拷贝到应用程序地址空间。

2024-02-22 10:22:28 694

原创 CPU 过载保护设计:如何在服务层面确保系统稳定?

这个词最早出现是在电路方面,在出现短路或者电压承载过大时,会触发电源的过载保护设备,该设备要不熔断、要不跳闸切断电源。在服务端也是相似的原理,首先我们需要设计一个过载保护的服务,在过载触发时,切断用户服务直接返回报错,在压力恢复时,正常响应用户请求。

2024-02-22 10:21:17 871

原创 哪些因素会影响 Node.js 性能?

在实际开发过程中,遇到一个问题,由于我们所用机器是一个 96 核以上的服务器,因此启用了比较多的 worker 进程,而主进程只有一个,从而在单机高并发时(2 万以上的每秒并发请求)会导致 master 进程处理瓶颈,这样就影响到了服务性能,并且这时候你会发现 worker 进程的 CPU 并没有任何压力。中已经非常详细地讲解了),无论是主线程逻辑,还是回调处理逻辑,最终都是在主线程处理,那么如果该线程一直在处理复杂的计算,其他请求就无法再次进来,也就是单个用户就可以阻塞所有用户的请求。

2024-02-22 10:19:26 963

原创 多进程解决方案:cluster 模式以及 PM2 工具的原理介绍

综上所述,PM2 通过命令行,使用 RPC 建立 Client 与 Daemon 进程之间的通信,通过 RPC 通信方式,调用 God,从而应用 Node.js 的 cluster.fork 创建子进程的。,也就是轮询调度分发给空闲的子进程,处理完成后回到 worker 空闲池子中,这里要注意的就是如果绑定过就会复用该子进程,如果没有则会重新判断,这里可以通过上面的 app.js 代码来测试,用浏览器去访问,你会发现每次调用的子进程 ID 都会不变。,可以帮助你管理和保持应用程序在线。

2024-02-22 10:17:21 894

原创 大主流系统框架:由浅入深分析 Express、KoA和 Egg.js

目前比较流行的 Node.js 框架有ExpressKOA和Egg.js,其次是另外一个正在兴起的与 TypeScript 相关的框架——Nest.js,接下来我们分析三个主流框架之间的关系。在介绍框架之前,我们先了解一个非常重要的概念——洋葱模型,这是一个在 Node.js 中比较重要的面试考点,掌握这个概念,当前各种框架的原理学习都会驾轻就熟。无论是哪个 Node.js 框架,都是基于中间件来实现的,而中间件(可以理解为一个类或者函数模块)的执行方式就需要依据洋葱模型来介绍。

2024-02-22 10:14:51 1513

原创 如何构建一个简单的 RESTful 服务?

在源代码中有一个 index.js 文件,在没有架构模式时,基本上处理了所有的业务,但是根据当前架构模式,如表 1 所示,只适合处理 url 路径解析、路由判断及转发,因此需要简化原来的逻辑,和第一部分代码一样,我们就不再列举了,主要看路由判断。以上就实现了一个简单 restful 服务的功能,你可以看到代码都堆积在 index.js 中,并且代码逻辑还比较简单,如果稍微复杂一些,这种架构模式根本没法进行团队合作,或者后期维护,因此就需要 MVC 和 MVCS 架构模式来优化这种场景。

2024-02-22 10:12:55 736

原创 应用场景:Node.js作为后台可以提供哪些服务?

这 3 个功能都是基于缓存来处理业务逻辑的,大部分都是网络 I/O ,并未涉及 CPU 密集型逻辑,这也是 Node.js 的优势,其次异步驱动的方案能够处理更高的并发。在这些分层中,我们需要寻找网络 I/O 较多,但是 CPU 计算较少、业务复杂度高的服务,基于这点我们可以分析出 Node.js 应用在业务网关、中台服务及运营系统几个方面。随着公司应用越来越多,需要将一些通用的业务服务进行集中,这也是中台的概念。,处理业务相关的逻辑,比如一些通用的协议转化、通用的鉴权处理,以及其他统一的业务安全处理等;

2024-02-22 10:10:06 866

原创 Node.js事件循环:高性能到底是如何做到的?

再执行宏任务队列,根据宏任务插入先后顺序执行 setTimeout 再执行 fs.readFile,这里需要注意,先执行 setTimeout 由于其回调时间较短,因此回调也先执行,并非是 setTimeout 先执行所以才先执行回调函数,但是它执行需要时间肯定大于 1ms,所以虽然 fs.readFile 先于 setTimeout 执行,但是 setTimeout 执行更快,所以先输出 setTimeout ,最后输出 read file success。执行微任务或者宏任务的回调函数。

2024-02-22 10:07:12 447

原创 如何根治慢 SQL?

走索引查询数据时,如果该索引已经包含需要的数据,则称之为索引覆盖。若索引中不能拿到想要的数据,则需要通过主键拿一整行数据,这个过程叫回表,需要一次 IO 操作,所以我们写 SQL 时尽量使用索引覆盖,降低 IO 开销。

2024-02-21 10:25:56 720

原创 如何才能优化 MySQL 性能?

一次 SQL 的查询过程是怎样的?简单来说,我们可以将这个过程概括为以下 5 步。客户端发送一个查询 SQL 给数据库服务器。服务器先检查查询缓存,如果命中,也就是查询缓存中有这条记录,那么便直接返回缓存中的结果。如果没有命中,则进入下一阶段(解析器)。服务器由解析器检查 SQL 语法是否正确,然后由预处理器检查 SQL 中的表和字段是否存在,最后由查询器生成执行计划,也就是 SQL 的执行方式或者步骤。MySQL 根据优化器生成的执行计划,调用存储引擎的 API 来执行查询。将结果返

2024-02-21 10:24:29 1005

原创 如何应对 Redis 缓存穿透、击穿和雪崩?

通过如上三步就可以完成 Java 使用 Redis 的 demo,我大概总结下代码流程,第一次先判断 Redis 中是否存在查询的数据,如果没有就需要从数据库中读取数据了,读取成功之后把数据回写到 Redis 中,后面的请求就能直接从 Redis 中直接读取了,较大地减少了对数据库的查询压力。一般这种情况都是缓存失效导致的,在缓存失效的时间段有大量并发用户访问,首先访问缓存,因为 Key 已经过期了,所以查不到数据,然后所有查询压力都会落到数据库上,造成数据库的压力过大。上远高于 MemCached。

2024-02-21 10:21:08 684

原创 如何通过 Arthas 定位代码链路问题?

下面的场景你一定很熟悉:如果线上出现了偶发性问题,我们需要花费大量时间一步步排查,日志里的每个细节都不能错过,如果线上不能直接得出结论,还需要线下再去复现,很消耗时间和精力;某行代码没有被执行,也没有出现报错信息,按照传统的方法可能会去加一些判断日志,这就涉及再次上线的问题,很多公司上线流程需要审批,这增加了内耗。而熟练使用 Arthas 这个工具便可以很好地解决以上问题,接下来我将介绍下 Arthas 以及实战中怎么用 Arthas 定位问题。

2024-02-21 10:20:00 917

原创 如何基于 JVM 分析内存使用对象?

对于内存回收其实也是这样的,如果不分代那么所有的对象可能都在同一个大的区间里,GC 依次判断则效率必然是很低,如果是分代处理,对不同的区域分以不同的回收策略,这样效率会高很多。从 Eden 区存活下来的对象首先会被复制到 From 区,当 From 区满时,此时还存活的对象会被转移到 To 区,经历了多次的 Minor GC 后,还存活的对象就会被复制到老年代,老年代的 GC 一般叫作 FullGC 或者 MajorGC。,它的作用是保存线程当前程序的执行位置,以保证多线程的切换。

2024-02-20 10:35:27 764

原创 如何从 CPU 飙升定位到热点方法?

JVM 是 Java Virtual Machine 的缩写,它是一个独立出来的运行环境,通过这样的环境去进行 Java 代码中各种逻辑运行。从图中你可以看到,一般在底层物理机上会部署多个云服务器,而云服务器上又可以部署多个基于 Docker 的 JVM 节点,这样的部署结构也是比较常用的,既能做到。

2024-02-20 10:33:57 1939

原创 Docker 的制作、运行以及监控

上面可以有很多集装箱,即 Docker,你可以把 Docker 看作是独立的子环境,有独立的系统和应用,比如经常因为一些历史原因开发的多个模块依赖于不同的 JDK 版本,将这两个模块部署在一台 Linux 服务器上可能很容易出问题,但是如果以 Docker 的方式便很容易解决版本冲突的问题。的公司,他们需要的系统处理能力自然也越高。到此就完成了一个基于 Docker 的 JMeter,上面演示了从制作到运行的全过程,同样对于其他Docker 的制作流程也是类似的,你可以基于一种先练习。

2024-02-20 10:31:00 888

原创 如何把可视化监控也做得酷炫?

Prometheus:既然 Exporter 作为 agent,那必然有一套中心化的数据采集存储组件,这个组件就是 Promethues,它通过接收 Exporter 采集的数据,并按照一定的规则进行计算整合,通过 AlertManager 设置报警规则,达到触发条件后就发送报警信息。可视化监控除了直观外,我认为还有如下两点优势。,可以更快速地把信息传递给项目其他成员,每位成员可以通过大屏的链接去访问,自由选择自己所需要的信息,而且可以通过展现出来的趋势预判会触发的阈值以达到提前发现风险的效果。

2024-02-20 10:30:06 569

原创 分布式服务链路监控以及报警方案

在这样的情况下,分布式链路监控的价值就体现出来了,它可以让你清晰地知道跨服务调用的链路耗时信息、执行方法等,并从整体到局部将信息呈现出来,可以帮助你节约故障排查时间。目前市面上的全链路监控工具很多,比如 CAT、SkyWalking、Pinpoint 等,对于工具的选型来说最重要的是采样数据对系统的性能消耗足够小、数据分析和展示快、监控的维度尽可能丰富,CAT:是由美团和携程的同学开发的,通过代码埋点的侵入式方式,对应用日志分析、监控、展示等,不过侵入式的方式会带来开发以及维护成本的增加。

2024-02-20 10:28:46 720

原创 命令行监控 Linux 服务器的要点

而应用需要内存时,如果没有可用的 free 内存,内核就会从缓冲区回收内存以满足要求,当 free 值很低的时候,如上代码中的 available 就能体现出缓冲区可用内存的大小,这个指标可以比较真实地反映出内存是否达到使用上限。在我看来,链路层是直接面向架构和代码的,它的监控能够帮助你更加准确地看到代码执行了哪些函数,涉及哪些服务,并且能够较为清晰地看到函数之间的调用耗时,还可以帮助你定位代码存在的问题。这个数值越高,说明用户进程消耗的 CPU 时间越多,可以用来分析代码中的 CPU 消耗热点。

2024-02-20 10:27:14 693

原创 如何制定一份有效的性能测试方案?

性能测试方案,通俗一点说就是指导你进行性能测试的文档,包含测试目的、测试方法、测试场景、环境配置、测试排期、测试资源、风险分析等内容。一份详细的性能测试方案可以帮助项目成员明确测试计划和手段,更好地控制测试流程。

2024-02-20 10:25:17 732

原创 性能测试场景的分类和意义

关于场景名字的叫法,不仅不同的公司会不一样,就包括参考资料上也没有形成非常统一的规范,但我认为并不需要用很多精力研究场景的叫法,但你一定要能描述清楚场景的核心目的是什么,执行步骤是什么,这才是需要向你的协作伙伴传递的最准确的信息。所以我们也会测试触发限流和熔断所设置的阈值,并观察在触发后的系统表现是如何的。根据我的经验,会在测试之前组内协商出场景异常情况下的停止条件,比如 CPU 达到 70%,响应时间超过 500 ms,接口正确率低于 99% 等,当触发这些条件时,我将不会继续加线程进行测试了。

2024-02-20 10:21:13 887

原创 你真的知道如何制定性能测试的目标吗?

比如有的业务第一次在数据库请求到数据后,应用层本地缓存会将数据存储在应用服务器上,也就是接下来在缓存有效时间内不会再去数据库取数据,而是在应用层得到数据后就会直接返回,所以响应时间会比第一次低不少,这也是随着性能测试的进行响应时间变低的原因之一。流量复制是不能解决指标制定的问题的,并且在落地过程中还会花费大量的时间和人力成本,所以关于目标的制定和分析我们需要一步一步进行,花费一定的时间是难以避免的,并且线上未来的访问趋势只能尽可能覆盖,无法完全预测到。我们都明白在测试领域,提早发现问题修复成本是最低的。

2024-02-20 10:19:18 827

原创 Nginx 在系统架构中的作用

举个例子,比如你很想到某公司去做测试,对方公司的测试主管并不认识你,你也不知道这位测试主管的联系方式,但是你的朋友小王认识,他帮你推荐了简历,此时的小王就起到代理的作用,相当于一个渠道。

2024-02-20 10:17:43 795

原创 如何基于 JMeter API 开发性能测试平台?

本专栏,我们应用的主要性能测试工具是 JMeter,那开发性能测试平台需要什么样的能力呢?,JMeter 本身是 Java 开发,提供了较多的接口,所以使用 Java 开发具备天然的优势;平台主要通过 Web 网页展示,需要具备较好的,目前 Vue 是比较流行的前端框架;,尤其是 JMeter 提供的相关 API。

2024-02-20 10:16:12 911

原创 JMeter 二次开发其实并不难

BeanShell 是由 Java 编写的,相当于一个小巧的 Java源码解释器,简单来说就是你可以在里面写代码,然后通过 Beanshell 翻译成插件可以识别的指令去执行相关操作。为了让你能够系统地学习 Java Sampler 的编写,我将分为如下四部分来介绍。

2024-02-20 10:14:22 1148

原创 构建并执行 JMeter 脚本的正确姿势

如上图便是完成了实时压测情况下运行结果的实时展示图,你可以以此为基础,进行多接口的数据采集,相应增加脚本里的 Backend Listener 插件,区分不同的 application name 名称,你会看到不同的接口数据都进入 influxdb 数据库中。有的测试在编写脚本的过程中为了区分业务逻辑,会使用很多插件,比如 if 判断、循环, 这些插件虽然可以让你进入不同的业务场景,但会增加脚本的复杂度,影响发起压力的效率。从图中可以看到,命令行的方式直接产生了总的 TPS、报错和一些时间层级的指标。

2024-02-20 10:13:16 586

原创 JMeter 参数化策略

比如大促有 10w 用户会从获取不同的商品信息,而你的压测中并没有进行充分的参数化,此时用大量线程反复请求同一件商品,极有可能访问的是缓存数据。上面我介绍了参数化的意义以及常见用法,参数化对于性能测试是基础且必需的,因为在性能场景中,很多时候不进行参数化,脚本也是可以跑通的,所以有一些测试同学在这方面就会“偷工减料”,但这会造成性能数据不准确。:提取内容的正则表达式。关联是将上个请求的数据提取需要的部分放到下个请求中,通过关联我们可以获取到满足业务特性的不同数据,因此可以认为是一种特殊的参数化。

2024-02-20 10:12:19 828

原创 JMeter 的核心概念

性能测试有很多工具,JMeter、Loadrunner、Locust、nGrinder 都不乏粉丝。有人认为做性能测试重要的不是工具,是思想。但从学习实践的角度讲,工具在一定程度上决定了工作效率及协作模式。要成为一名测试专家,对工具一定是要精通的。JMeter 原生的方式只支持单点工作,团队成员并不能很方便地互相检查脚本和查看报告。如果我们想改变这样的协作方式,就要对 JMeter 进行改造。如果不了解工具,改造也就无从谈起。说了这么多,那我为什么会选择介绍 JMeter 呢?

2024-02-20 10:10:30 571

原创 如何对 Spark 进行全方位性能调优?

根据课时 11 的内容,第 1 个配置是 Map 端输出的中间结果的缓冲区大小,默认 32K,第二个配置是 Map 端输出的中间结果的文件大小,默认为 48M,该文件还会与其他文件进行合并。对于那种分组统计的任务,可以通过两阶段聚合的方案来解决,首先将数据打上一个随机的键值,并根据键的哈希值进行分发,将数据均匀的分散到多个任务中去,然后在每个任务中按照真实的键值做局部聚合,最后再按照真实的键值分发一次,得到最后的结果,如下图所示,这样,最后一次分发的数据已经是聚合过后的数据,就不会出现数据倾斜的情况。

2024-02-15 19:07:20 1089

原创 列式存储:针对查询场景的极致优化

这样就能用尽可能少的存储空间来表达复杂的嵌套数据格式了。ORC 提供 ACID 支持、也提供不同级别的索引,如布隆过滤器、列统计信息(数量、最值等),和 Parquet 一样,它也是自描述的数据格式,但与 Parquet 不同的是,ORC 支持多种复杂数据结构,如集合、映射等。在文章中,Dremel 在一开始就指出其面对的是只读的嵌套数据,而嵌套数据属于半结构化数据,例如 JSON、XML,所以 Dremel 的创新之处在于提出了一种支持嵌套数据的列式存储,而如今互联网上的数据又正好多是嵌套结构。

2024-02-15 19:06:26 850

原创 如何使用用户自定义函数?

builder"A""B""C""D"else"ERROR"//指定输入的类型//指定中间输出的类型,可指定多个//指定最后输出的类型//初始化中间结果//实现作用在每个分区的结果//合并多个分区的结果//返回最后的结果.builder可以从代码看到 UDAF 的逻辑,还是类似于 MapReduce 的思想,先通过 update 函数处理每个分区,最后再通过 merge 函数汇总结果。

2024-02-15 19:05:28 823

原创 如何处理结构化数据:DataFrame 、Dataet和Spark SQL

在实际工作中,使用频率最高的当属 Spark SQL,通常一个大数据处理项目中,70% 的数据处理任务都是由 Spark SQL 完成,它贯穿于数据预处理、数据转换和最后的数据分析。DataFrame 在 Spark 1.3 被引入,它的出现取代了 SchemaRDD,Dataset 最开始在 Spark 1.6 被引入,当时还属于实验性质,在 2.0 版本时正式成为 Spark 的一部分,并且在 Spark 2.0 中,DataFrame API 与 Dataset API 在形式上得到了统一。

2024-02-15 19:03:01 719

原创 计算框架的分布式实现:剖析 Spark Shuffle 原理

Spark 在1.5 版本时开始了 Tungsten 计划,也在 1.5.0、 1.5.1、 1.5.2 的时候推出了一种 tungsten-sort 的选项,这是一种成果应用,类似于一种实验,该类型 Shuffle 本质上还是给予排序的 Shuffle,只是用 UnsafeShuffleWriter 进行 Map 任务输出,并采用了要在后面介绍的 BytesToBytesMap 相似的数据结构,把对数据的排序转化为对指针数组的排序,能够基于二进制数据进行操作,对 GC 有了很大提升。

2024-02-15 19:00:16 597

原创 共享变量:如何在数据管道中使用中间结果?

Spark 广播机制运作方式是这样的:Driver 将已序列化的数据切分成小块,然后将其存储在自己的块管理器 BlockManager 中,当 Executor 开始运行时,每个 Executor 首先从自己的内部块管理器中试图获取广播变量,如果以前广播过,那么直接使用;在 Spark 作业中,用户编写的高阶函数会在集群中的 Executor 里执行,这些 Executor 可能会用到相同的变量,这些变量被复制到每个 Executor 中,而 Executor 对变量的更新不会传回 Driver。

2024-02-15 18:59:18 681

原创 函数式编程思想:你用什么声明,你在声明什么?

定义新运算是小学奥赛的一个考点,也就是说,同学们,只要你小学上过奥数,那么大概率应该是学习过这个内容的,我们来看看。

2024-02-15 18:57:52 820

原创 算子:如何构建你的数据管道?

这样设计的原因首先是避免无谓的计算开销,更重要的是 Spark 可以了解所有执行的算子,从而设定并优化执行计划。flatMap 算子的字面意思是“展平”,flatMap 算子的函数 f 的作用是将 T 类型的数据元素转换为元素类型为 U 的集合,如果处理过程到此为止,我们将 RDD_1 的一个分区看成一个集合的话,分区数据结构相当于集合的集合,由于集合的集合是有层次的 你可以理解为一个年级有多个班级,而这种数据结构就不是“平”的,所以 flatMap 算子还做了一个操作:将集合的集合合并为一个集合。

2024-02-15 18:56:15 551

原创 Spark 核心数据结构:弹性分布式数据集 RDD

RDD 是 Spark 最核心的数据结构,RDD(Resilient Distributed Dataset)全称为弹性分布式数据集,是 Spark 对数据的核心抽象,也是最关键的抽象,它实质上是一组分布式的 JVM 不可变对象集合,不可变决定了它是只读的,所以 RDD 在经过变换产生新的 RDD 时,(如下图中 A-B),原有 RDD 不会改变。通过第三方库的支持,Spark 几乎能够读取所有的数据源,例如 Elasticsearch,所以你如果要尝试的话,尽量选用 Maven 来管理依赖。

2024-02-15 18:54:57 755

2023.05.20 强化提升-言语2.mp4

2023.05.20 强化提升-言语2.mp4

2024-01-17

2023广东省考强化-言语理解01

主要考察考生的言语理解能力。该题目要求考生根据所给的信息,理解并分析其中的含义与逻辑关系。通过解答该题目,考生需要展示出对文字信息的准确理解、判断和推理能力。 在解答过程中,考生应注意理清文章中的信息脉络,抓住核心要点,并运用自己的逻辑思维进行分析和推断。同时,要注重细节的捕捉,准确把握各种修辞手法的意义,从而准确地理解作者的意图和观点。 最后,考生需要用简明扼要的语言回答问题,并结合文章内容给出支持性的理由或解释。在回答时,应遵循清晰、连贯的逻辑和语句结构,使得答案表达准确、简洁明了。

2024-01-17

Linux命令大全,支持Ctrl+F查找

Linux命令大全,支持Ctrl+F查找

2024-01-11

01 云计算简介.pptx

01 云计算简介.pptx

2021-06-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除