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

DP读书:鲲鹏处理器 架构与编程(十四)ACPI与软件

一分钟速通ACPI和鲲鹏软件移植

  • 操作系统内核
  • 鲲鹏软件移植
    • 鲲鹏软件移植流程
  • 编译工具选择
    • 编译参数移植案例
    • 源码修改案例
    • 鲲鹏分析扫描工具 Dependency Advisor
    • 鲲鹏代码迁移工具 Porting Advisor
  • 鲲鹏软件性能调优
    • 鲲鹏软件性能调优流程
    • CPU与内存子系统性能调优
    • 网络子系统性能调优
    • 磁盘I/O子系统性能调优
    • 应用程序性能调优
    • 基础软件性能调优
    • 鲲鹏性能优化工具 Tuning Kit

操作系统内核

ACPI(Advanced Configuration and Power Interface)
是一种由英特尔、微软、惠普、索尼等公司共同开发的电源管理标准。它提供了一种通用的电源管理接口,用于管理计算机系统的电源状态、性能和配置等方面。

在计算机系统中,ACPI负责处理电源管理事件,例如系统启动、关机、休眠、唤醒等。它还提供了对硬件设备、散热设备、电池和其他设备的控制能力。

ACPI在计算机系统中扮演着重要的角色,它能够提高系统的能源效率和延长电池寿命,同时提供更好的系统性能和稳定性。

鲲鹏软件移植

鲲鹏软件移植流程

鲲鹏软件移植流程包括以下步骤:

  1. 准备JDK:安装ARM版本JDK。
  2. 配置环境变量:配置JDK路径等环境变量。
  3. 编译:Java源码生成字节码。
  4. 测试:启动Java程序,调试功能。

以上就是鲲鹏软件移植的完整流程

编译工具选择

编译工具的选择主要取决于你使用的编程语言和开发环境。以下是一些常见的编译工具:

  1. Microsoft Visual Studio:这是一个完整的开发工具集,适用于C/C++/C#等编程语言,适用于微软支持的所有平台。它包括了UML工具、代码管控工具、集成开发环境(IDE)等,是一个非常实用且强大的代码编写开发软件。
  2. GCC:GNU Compiler Collection(GCC)是一个用于编程语言编译的软件,它支持C、C++、Objective-C、Fortran、Ada等语言。
  3. Clang:Clang是一个基于LLVM的C/C++/Objective-C编译器,它主要用于优化编译效率和代码质量。
  4. Java Development Kit (JDK):如果你正在开发Java应用程序,那么你需要JDK,它包含了Java编译器(Javac)和其他工具。
  5. Python解释器和编译器:Python是一种解释型语言,因此它不需要编译器。但是,Python有各种解释器和编译器,如CPython、Jython、IronPython等。
    这只是其中的一部分,实际上还有很多其他的编译工具可供选择。你应该根据自己的具体需求和习惯来选择适合你的编译工具。

编译参数移植案例

在编译过程中,一些特定的编译参数可能会影响到编译的结果和适应性。以下是一些编译参数的案例,这些参数在移植过程中可能会起到关键作用:

1. -march 和 -mtune:这两个参数用于指定目标处理器架构。例如,-march=native 将使编译器优化为运行在本地硬件上,而 -march=x86_64 将优化为运行在64位x86处理器上。
2. -fPIC (Position-Independent Code):该参数用于生成位置无关的代码,这在实现共享库时非常重要。
3. -I:该参数用于指定头文件的搜索路径。在移植过程中,可能需要修改此参数以适应新的环境。
4. -L:该参数用于指定库文件的搜索路径。同样,在移植过程中,可能需要修改此参数。
5. -l:该参数用于指定要链接的库。这可能涉及到链接到不同的库文件,以适应新的环境。
6. -D:该参数用于定义宏。在移植过程中,可能需要定义新的宏以适应新的环境。

请注意,以上只是一些常见的编译参数示例,实际上还有许多其他的编译参数可以在移植过程中使用。具体的参数选择将取决于你的需求和目标平台的具体情况。

源码修改案例

源码修改案例主要是针对特定的需求或问题,对程序源代码进行修改和优化。以下是一个简单的源码修改案例:

假设我们有一个C语言程序,其中有一个函数名为 calculate_average,它接收一个整数数组和数组的长度作为输入,计算数组的平均值并返回结果。

double calculate_average(int* arr, int length) {double sum = 0.0;for (int i = 0; i < length; i++) {sum += arr[i];}return sum / length;
}

现在我们想要修改这个函数,使其能够忽略数组中的任何负数并直接跳过计算。我们可以添加一个简单的判断语句来实现这个功能。

double calculate_average(int* arr, int length) {double sum = 0.0;for (int i = 0; i < length; i++) {if (arr[i] >= 0) {sum += arr[i];}}return sum / length;
}

通过这个修改,函数现在只会计算数组中的非负数,并返回它们的平均值。这可以应用于任何包含负数的数组,以忽略它们并获得更准确的结果。

请注意,这只是一个简单的例子,实际的源码修改可能会更加复杂和涉及更多的细节。在修改源代码之前,建议进行充分的测试和备份(在虚拟机上跑没问题再上),以确保修改不会引入错误或破坏原始功能。

鲲鹏分析扫描工具 Dependency Advisor

Dependency Advisor 是一款可以简化客户应用迁移到鲲鹏服务器过程的工具。它主要安装在X86服务器上,用于分析可移植性和移植投入。该工具支持检查用户软件资源包(RPM、JAR、TAR、zip、gzip 文件)中包含的 SO 依赖库,并评估 SO 依赖库的可移植性;检查指定的用户软件安装路径下的 SO 依赖库,并评估 SO 依赖库的可移植性;检查用户软件 C/C++ 软件构建工程文件,并评估该文件的可移植性;以及检查用户软件 C/C++ 源码,并评估软件源文件的可移植性。

此外,Dependency Advisor 会自动分析并输出指导报告,提供软件移植报告以及移植工作量评估。它还支持命令行方式和 Web 两种工作模式。

鲲鹏代码迁移工具 Porting Advisor

Porting Advisor 是一款可以帮助开发者将应用从 x86 平台迁移到鲲鹏平台的代码迁移工具。具体功能包括:

  1. 分析可迁移性:Porting Advisor 可以分析用户的源代码以及相关依赖,判断其是否可以迁移到鲲鹏平台。
  2. 自动分析:Porting Advisor 可以自动分析出需要修改的代码内容,并给出修改建议。
  3. 提供指导:Porting Advisor 可以帮助开发者解决在迁移过程中遇到的问题,提供相应的解决方案。

使用 Porting Advisor 进行代码迁移可以降低人工排查的工作量,提高整体迁移效率。

分析可迁移性
自动分析
提供指导

鲲鹏软件性能调优

鲲鹏软件性能调优流程

鲲鹏软件性能调优流程包括以下步骤:

  1. 建立基准:在优化或监视开始之前,首先要建立一个基准数据和优化目标。这包括硬件配置、组网、测试模型、系统运行数据(CPU/内存/IO/网络吞吐/响应延时等)。我们需要对系统做全面的评估和监控,才能更好的分析系统性能瓶颈,以及实施优化措施后系统的性能变化。优化目标即是基于当前的软硬件架构所期望系统达成的性能目标。
  2. 压力测试与监视瓶颈:使用峰值工作负载或专业的压力测试工具,对系统进行压力测试。使用一些性能监视工具观察系统状态。在压力测试期间,建议详细记录系统和程序的运行状态,精确的历史记录将更有助于分析瓶颈和确认优化措施是否有效。
  3. 性能分析:基于压力测试的结果,进行性能分析,找出性能瓶颈。这包括查找CPU、内存、I/O、网络等方面的瓶颈。
  4. 优化:根据性能分析的结果,采取相应的优化措施。优化的具体方法可能因系统和应用的不同而有所不同。
  5. 再测试:在实施优化措施后,需要重新进行压力测试和性能监视,确认优化效果。
  6. 迭代:性能调优是一个反复迭代的过程,需要持续进行,不断优化系统的性能。

以上就是鲲鹏软件性能调优的一般流程,具体实施时可能需要根据具体情况进行调整。

循环
建立基准
压力测试与监视瓶颈
性能分析
优化
再测试
迭代

CPU与内存子系统性能调优

为了进行CPU和内存子系统的性能调优,可以采取以下措施:

  1. CPU方面:

    • 多线程优化:合理地利用多线程,将计算任务划分为多个线程并行执行,充分利用多核CPU的性能。
    • 减少上下文切换:减少线程之间的频繁切换,避免由于上下文切换带来的开销。
    • 缓存优化:充分利用CPU缓存,避免缓存未命中带来的性能损失。例如,使用局部性原理优化数据访问模式,减少缓存未命中。
  2. 内存方面:

    • 内存分配优化:合理设置内存分配策略,避免频繁的内存分配与释放。可以采用对象池、内存池等技术来优化内存管理。
    • 内存访问模式优化:充分利用局部性原理,优化内存的访问模式。例如,通过连续访问、对齐访问等方式减少内存访问的随机性。
    • 内存压缩与分片:对于内存占用较大的数据结构或对象,可以考虑进行内存压缩或分片,以减少内存占用和提高访问效率。
CPU方面优化
多线程优化
减少上下文切换
缓存优化
内存方面优化
内存分配优化
内存访问模式优化
内存压缩与分片

另外,还可以通过性能监控和性能分析工具,对CPU和内存子系统进行监测和分析,找出性能瓶颈,并采取相应的优化策略。不同的应用场景和需求可能需要采取不同的优化手段,因此建议结合具体情况进行调优,并进行性能测试和评估,以验证优化效果。

网络子系统性能调优

对于网络子系统的性能调优,可以采取以下措施:

  1. 减少网络延迟:

    • 使用高性能网络设备:选择高性能的网络交换机、路由器等网络设备,以减少数据包的传输延迟。
    • 使用更快速的网络协议:例如,采用更快速的传输协议(如TCP Fast Open、QUIC)来减少握手延迟和连接建立时间。
    • 优化网络拓扑结构:合理规划网络拓扑结构,减少数据包的传输距离,降低网络延迟。
  2. 提高网络带宽:

    • 网络负载均衡:通过配置负载均衡设备或软件,将网络流量均匀分配到多个服务器上,提高整体网络带宽。
    • 数据压缩与加速:使用数据压缩和加速技术,减少数据传输量,从而提高可用带宽。
    • 增加带宽容量:升级网络设备,增加带宽容量,以满足高并发的网络请求。
  3. 优化网络协议和策略:

    • TCP/IP参数调优:根据具体应用场景,调整TCP/IP协议的参数,如窗口大小、拥塞控制算法等,以提高网络传输效率。
    • 数据包优先级管理:通过配置网络设备的QoS(Quality of Service)功能,对不同类型的数据包进行优先级管理,确保重要数据的及时传输。
  4. 缓存与缓冲区管理:

    • CDN加速:使用内容分发网络(CDN)来缓存静态资源,加快数据的传输速度。
    • 缓存技术应用:根据实际需求,合理地使用缓存技术,将热门数据、查询结果等缓存在内存中,加快数据访问速度。
    • 缓冲区大小优化:针对网络设备的缓冲区大小进行优化,避免过大或过小的缓冲区导致的性能问题。

此外,还可以通过监控和分析网络流量、延迟等指标,找出网络性能瓶颈,并进行相应的调优策略。综合考虑应用程序的特点、网络环境以及业务需求,选择合适的调优方案,并进行性能测试和评估,以验证优化效果。

CPU方面优化
内存方面优化
CPU多线程优化
减少上下文切换
缓存优化
内存分配优化
内存访问模式优化
内存压缩与分片

磁盘I/O子系统性能调优

对于磁盘I/O子系统的性能调优,可以采取以下措施:

优化磁盘I/O性能的常见措施包括:

  1. 使用RAID技术:RAID技术可以提供更高的磁盘读写性能和冗余容错能力。

  2. 块大小优化:根据应用程序的访问模式和数据块大小,调整磁盘块的大小以提高磁盘I/O性能。

  3. 操作系统参数调优:操作系统参数调整相关参数来改善磁盘I/O性能。

  4. 文件系统选择与优化:选择适合特定应用场景的文件系统,并进行相应的优化。

  5. I/O缓存与缓冲区管理:I/O缓存和缓冲区管理技术来减少磁盘I/O操作次数。

  6. 应用程序优化:应用程序优化,减少不必要的磁盘I/O操作。

  7. 磁盘性能监控与故障诊断:磁盘性能监控磁盘的性能指标,及时发现潜在问题,并采取相应的故障诊断和修复措施。

这些措施综合起来可以提升磁盘I/O子系统的性能和可靠性。但需要根据具体情况进行调优,并进行性能测试和评估,以验证优化效果。

应用程序性能调优

对于应用程序的性能调优,可以采取以下措施:

  1. 代码优化:优化算法和数据结构和提高代码执行效率。
  2. 数据库优化:数据库索引优化和提高数据检索操作。
  3. 缓存技术应用:使用缓存技术和提高读取速度。
  4. 网络通信优化:减少网络请求次数和提高速度。
  5. 性能监控与调试:使用性能监控工具和评估系统的性能表现。
  1. 代码优化:

    • 优化算法和数据结构:选择高效的算法和数据结构,减少不必要的计算和内存消耗,提高代码执行效率。
    • 减少资源占用:及时释放不再使用的资源,避免资源泄露。合理使用内存、文件句柄、数据库连接等资源,避免资源瓶颈。
    • 并发编程优化:合理使用多线程、多进程或异步编程模型,利用多核处理器和异步操作提高并发性能。
  2. 数据库优化:

    • 数据库索引优化:分析数据库查询的频率和模式,创建适当的索引来加速数据检索操作。
    • 数据库连接管理:合理维护和管理数据库连接,减少连接的建立和关闭开销。
    • 批量操作和事务管理:将多个数据库操作批量提交或使用事务进行管理,减少单次数据库交互的次数,提高效率和数据一致性。
  3. 缓存技术应用:

    • 使用缓存技术:将频繁读取的数据缓存在内存中,减少对底层存储系统(如数据库)的访问,提高读取速度。
    • 合理设置缓存策略:根据数据的更新频率和重要性,设置合适的缓存策略,如缓存过期策略、LRU(最近最少使用)策略等。
  4. 网络通信优化:

    • 减少网络请求次数:合并多个网络请求、采用批量操作,减少网络开销和延迟。
    • 压缩和加速数据传输:使用数据压缩和加速技术,减少网络传输数据量,提高速度。
  5. 性能监控与调试:

    • 使用性能监控工具:通过监控工具来获取应用程序的性能指标,如CPU使用率、内存占用、数据库查询时间等,找出性能瓶颈和潜在问题。
    • 进行性能测试:模拟实际使用场景,进行负载测试和性能测试,评估系统的性能表现,及时发现和解决性能问题。

除了以上措施,还可以根据具体应用场景和需求进行针对性的优化。关注应用程序的瓶颈和低效点,不断进行测试和改进,以提高应用程序的性能和响应速度。同时,注意平衡性能调优和可维护性之间的关系,避免过度优化导致代码难以理解和维护。

graph LR
subgraph 代码优化A[优化算法和数据结构]B[减少资源占用]C[并发编程优化]
subgraph 数据库优化D[数据库索引优化]E[数据库连接管理]F[批量操作和事务管理]
subgraph 缓存技术应用G[使用缓存技术]H[合理设置缓存策略]
subgraph 网络通信优化I[减少网络请求次数]J[压缩和加速数据传输]
subgraph 性能监控与调试K[使用性能监控工具]L[进行性能测试]
A -->|包含| B
B -->|包含| C
C -->|属于| 代码优化
D -->|包含| E
E -->|包含| F
F -->|属于| 数据库优化
G -->|包含| H
H -->|属于| 缓存技术应用
I -->|包含| J
J -->|属于| 网络通信优化
K -->|包含| L
L -->|属于| 性能监控与调试

基础软件性能调优

基础软件(如操作系统、数据库、Web服务器等)的性能调优,可以采取以下措施:

  1. 增加硬件资源:

    • 增加CPU、内存和磁盘等硬件资源,以提高基础软件的执行速度和并发处理能力。
    • 使用更快的存储设备或网络传输设备,以提高数据的访问速度和传输效率。
  2. 调整软件参数:

    • 根据应用的工作负载和硬件配置,调整操作系统或数据库的参数,以达到最优性能。
    • 对于Web服务器,可以调整连接池大小、缓存策略、请求过滤等参数,以提高并发处理和响应速度。
  3. 优化软件架构和设计:

    • 应用合适的软件设计模式和开发框架,以提高代码复用性和可维护性。
    • 良好的软件架构可以提高基础软件的并发处理能力和可扩展性。
  4. 资源的合理利用:

    • 对于数据库系统,可以通过使用数据库缓存、合理索引等手段,减少访问磁盘的次数,提高数据访问速度。
    • 对于Web服务器,可以使用缓存技术对经常访问的数据进行缓存,降低数据库访问的频率。
  5. 进行性能测试和优化:

    • 对基础软件进行负载测试和性能测试,找出瓶颈和性能瓶颈。
    • 评估不同参数组合或优化技术的性能效果,选择最优方案。
  6. 系统监控和调试:

    • 通过系统监控工具实时监控系统的性能、资源利用率等指标,在系统出现异常时及时进行调试和修复。
    • 收集日志信息,及时发现潜在问题,并对系统进行诊断。
graph LRsubgraph 增加硬件资源A[增加CPU、内存和磁盘等硬件资源]B[使用更快的存储设备或网络传输设备]
endsubgraph 调整软件参数C[调整操作系统或数据库的参数]D[调整Web服务器参数]
endsubgraph 优化软件架构和设计E[应用合适的软件设计模式和开发框架]F[优化软件架构]
endsubgraph 资源的合理利用G[减少访问磁盘次数]H[使用缓存技术对数据进行缓存]
endsubgraph 进行性能测试和优化I[负载测试和性能测试]J[评估不同参数组合或优化技术]
endsubgraph 系统监控和调试K[实时监控系统性能和资源利用率]L[收集日志信息]
endA -->|属于| 增加硬件资源
B -->|属于| 增加硬件资源
C -->|属于| 调整软件参数
D -->|属于| 调整软件参数
E -->|属于| 优化软件架构和设计
F -->|属于| 优化软件架构和设计
G -->|属于| 资源的合理利用
H -->|属于| 资源的合理利用
I -->|属于| 进行性能测试和优化
J -->|属于| 进行性能测试和优化
K -->|属于| 系统监控和调试
L -->|属于| 系统监控和调试

除了以上措施,还可以根据不同的基础软件进行针对性的调优。例如,对于数据库系统,还可以使用分区、分片等技术,提高数据处理的并行性和可扩展性。对于Web服务器,还可以使用负载均衡技术,提高并发处理能力和可用性。总之,基础软件的性能调优需要多方面的考虑和综合处理。

鲲鹏性能优化工具 Tuning Kit

Tuning Kit 是一款针对鲲鹏计算平台的性能分析和优化工具,能收集处理器硬件、操作系统、进程/线程、函数等各层次的性能数据,分析出系统性能指标,定位到系统瓶颈点及热点函数。

Tuning Kit 支持以下功能特性:

  1. 系统配置全景分析:采集整个系统的软硬件配置信息,分析并针对不合理项提供优化建议。
  2. 系统性能全景分析:借鉴业界的 USE(utilization、saturation、errors)方法,通过采集系统 CPU、内存、存储 IO、网络 IO 等资源的运行情况,获得它们的使用率、饱和度、错误等指标,识别系统瓶颈。
  3. 针对部分系统指标项,根据已有的基准值和优化经验提供优化建议。
  4. 系统资源调度分析:基于 CPU 调度事件分析 CPU 核、进程/线程在各时间点的运行状态,进程/线程切换情况,给出相应的优化建议。

Tuning Kit 可以帮助用户更好地了解系统性能,识别和解决系统瓶颈,提高系统整体效率。

系统配置全景分析
系统资源调度分析
系统性能全景分析
针对部分系统指标项优化建议

相关文章:

DP读书:鲲鹏处理器 架构与编程(十四)ACPI与软件

一分钟速通ACPI和鲲鹏软件移植 操作系统内核鲲鹏软件移植鲲鹏软件移植流程 编译工具选择编译参数移植案例源码修改案例鲲鹏分析扫描工具 Dependency Advisor鲲鹏代码迁移工具 Porting Advisor 鲲鹏软件性能调优鲲鹏软件性能调优流程CPU与内存子系统性能调优网络子系统性能调优磁…...

C#,《小白学程序》第六课:队列(Queue)的应用,《实时叫号系统》

医院里面常见的叫号系统怎么实现的&#xff1f; 1 文本格式 /// <summary> /// 下面定义一个新的队列&#xff0c;用于演示《实时叫号系统》 /// </summary> Queue<Classmate> q2 new Queue<Classmate>(); /// <summary> /// 《小白学程序》第…...

mysql profiling profiles profile

要想优化一条 Query&#xff0c;我们就需要清楚的知道这条 Query 的性能瓶颈到底在哪里&#xff0c;是消耗的 CPU计算太多&#xff0c;还是需要的的 IO 操作太多&#xff1f;要想能够清楚的了解这些信息&#xff0c;在 MySQL 5.0 和 MySQL 5.1正式版中已经可以非常容易做到了&a…...

ChatGPT AIGC 一个指令总结Python所有知识点

在ChatGPT中,直接输入一个指令就可以生成Python的所有知识点大纲。 非常实用的ChatGPT功能。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.…...

【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB

OpenELB 官网 https://openelb.io 本文内容学习于马士兵云原生课程 概述 OpenELB is an open-source load balancer implementation designed for bare-metal Kubernetes clusters. OpenELB是一个为裸机Kubernetes集群设计的开源负载均衡器实现。 In cloud-based Kubernetes cl…...

Android Native Code开发学习(三)对java中的对象变量进行操作

Android Native Code开发学习&#xff08;三&#xff09; 本教程为native code学习笔记&#xff0c;希望能够帮到有需要的人 我的电脑系统为ubuntu 22.04&#xff0c;当然windows也是可以的&#xff0c;区别不大 对java中的对象变量进行操作 首先我们新建一个java的类 pub…...

如何用bat文件调用与它在同一文件夹下的某个exe程序

第一个方案&#xff1a; 如果bat文件与某个exe程序在同一文件夹下的。那直接写那个 程序文件名字就行了。 两种写法。比如是 test.exe程序 一种 test.exe 二种 start test.exe 第一种批处理会等待test.exe程序执行完后才会运行下面的语句 第二种不会等待 这个写绝对路径好用 另…...

设计模式--单例模式(Singleton Pattern)

一、什么是单例模式 单例模式是一种创建型设计模式&#xff0c;它旨在确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。换句话说&#xff0c;单例模式限制了类的实例化次数为一个&#xff0c;并提供一种在应用程序中共享一个实例的方式。这对于需要只有…...

postgis数据库从一张表中过滤出一部分数据到新表中

你可以使用以下步骤在PostGIS数据库中过滤objectid<100的数据&#xff0c;并将其创建为新表&#xff1a;打开PostGIS数据库的终端或客户端工具&#xff08;如Psql&#xff09;。 选择你要过滤数据的表。假设表名为"original_table"&#xff0c;该表包含一个名为&q…...

INDEMIND:“大+小”多机协同,实现机器人商用场景全覆盖

随着商用清洁机器人进入越来越多的场景中&#xff0c;单一的中型机器人并不能有效覆盖所有区域&#xff0c;更加细分化的产品组合正在成为新的趋势。 产品形态的“新趋势” 在商用场景中&#xff0c;目前的商用清洁机器人几乎均是中大型的产品形态&#xff0c;较大的体型意味…...

微信开发之一键创建标签的技术实现

简要描述&#xff1a; 添加标签 请求URL&#xff1a; http://域名地址/addContactLabel 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说明…...

八一参考文献:[八一新书]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑出版传媒,2022.

八一参考文献&#xff1a;&#xff3b;八一新书&#xff3d;许少辉&#xff0e;乡村振兴战略下传统村落文化旅游设计&#xff3b;&#xff2d;&#xff3d;北京&#xff1a;中国建筑出版传媒&#xff0c;&#xff12;&#xff10;&#xff12;&#xff12;&#xff0e;...

ChatGPT⼊门到精通(7):GPT3.5与 4.0区别

⼀、详细区别 1 项⽬ GPT3.5 GPT4.0 2 打字速度 较慢&#xff0c;⾼峰期更慢 更加慢&#xff0c;差别不⼤ 3 掉线⼏率 经常掉线 很少掉线 4 分段能⼒ ⽣成⼏百字后就停⽌了&#xff0c; 需要回复“继续”&#xff0c;有时候不 是很连贯 基本连贯 5 使⽤限制 1⼩时100次提问&am…...

Springboot整合MyBatisPlus框架操作MySQL

1、MyBatis-Plus概述 MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 【技术储备】 拥有 Java 开发环境以及相应 IDE…...

基于Jenkins构建生产CICD环境(第二篇)

基于Jenkins自动打包并部署Tomcat环境 传统网站部署的流程 在运维过程中&#xff0c;网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分 析-->原型设计-->开发代码-->提交代码-->内网部署-->内网测试-->确认上线-->备份数据-->外网更新…...

ioctl、printk及多个此设备支持

一、ioctl操作实现 ioctl&#xff08;Input/Output Control&#xff09;是一个在 Unix-like 操作系统中的系统调用&#xff0c;用于控制设备或文件的各种操作。它允许用户空间程序与内核空间进行交互&#xff0c;执行一些特定的设备控制、状态查询或其他操作&#xff0c;而不必…...

电脑每次开机杀毒软件报iusb3mon.exe病毒已清除,电脑中病毒iusbmon杀毒办法,工具杀毒

不知道什么时候开始&#xff0c;我电脑C盘的系统数据存储文件夹programdata 不知不觉就没了&#xff0c;找不到了 programdata文件夹为存储系统数据文件的&#xff0c;这个文件不见了&#xff0c;而且我打开了显示隐藏文件和文件夹还是没有显示 然后我重启电脑&#xff0c;杀毒…...

centos服务器系统下安装python3并与自带的python2

centos服务器系统下安装python3并与自带的python2 在centos中&#xff0c;自带有python2&#xff0c;因此需要经常安装python3。但是这里有一个坑&#xff0c;就是centos的yum是用python2写的&#xff0c;如果正常编译安装python3&#xff0c;那么yum就会直接挂了。为了方便以…...

(二十)大数据实战——Flume数据采集的基本案例实战

前言 本节内容我们主要介绍几个Flume数据采集的基本案例&#xff0c;包括监控端口数据、实时监控单个追加文件、实时监控目录下多个新文件、实时监控目录下的多个追加文件等案例。完成flume数据监控的基本使用。 正文 监控端口数据 ①需求说明 - 使用 Flume 监听一个端口&am…...

AutoCAD图如何保存为Word

AutoCAD图如何保存为Word 引言AutoCAD图保存为Word文件步骤&#xff1a; 引言 不知道大家有没有是否遇到需要将AutoCAD图保存到Word中。有些小伙伴可能直接截图插入Word中&#xff0c;这种方法简单&#xff0c;但对于有高清图片需求的小伙伴就不适用了。接下来我就为大家介绍一…...

Java线程 - 详解(2)

一&#xff0c;线程安全问题 有些代码在单个线程的环境下运行&#xff0c;完全正确&#xff0c;但是同样的代码&#xff0c;让多个线程去执行&#xff0c;此时就可能出现BUG&#xff0c;这就是所谓的 "线程安全问题"。举一个例子&#xff1a; public class Demo {s…...

事务特性 - 达梦数据库

达梦数据库事务特性 1 事务特性1.1 原子性1.2 一致性1.3 隔离性1.4 持久性 1 事务特性 事务必须具备什么属性才是一个有效的事务呢&#xff1f;一个逻辑工作单元必须表现出四种属性&#xff0c;即原子性、一致性、隔离性和持久性&#xff0c;这样才能成为一个有效的事务。DM 数…...

axios 使用FormData格式发送GET请求

如果你需要使用&#xff0c;FormData格式&#xff0c;发送GET请求 将参数拼接到 FormData对象 中&#xff0c;使用 URLSearchParams 将FormData对象转换为查询参数字符串&#xff0c;并将其拼接到URL中&#xff0c;这样就能以FormData格式发送GET请求给服务器 注意&#xff1…...

CS144(2023 Spring)Lab 1: stitching substrings into a byte stream

文章目录 前言其他笔记相关链接 1. Getting started2. Putting substrings in sequence2.1 需求分析2.2 注意事项2.3 代码实现 3. 测试与优化 前言 这一个Lab主要是实现一个TCP receiver的字符串接收重组部分。 其他笔记 Lab 0: networking warmup Lab 1: stitching substri…...

【PHP】常用的PHP内置函数

1、PHP内置函数非常丰富&#xff0c;用于执行各种任务。以下是一些常用的PHP内置函数&#xff1a; 字符串操作函数&#xff1a; strlen(): 返回字符串的长度。 strpos(): 查找字符串中的某个子串第一次出现的位置。 substr(): 返回字符串的子串。 str_replace(): 替换字符串中的…...

css自学框架之消息弹框

首先我们还是看看消息弹框效果&#xff1a; 主要实现代码分为三部分 一、CSS部分&#xff0c;这部分主要是定义样式&#xff0c;也就是我们看到的外表&#xff0c;主要代码&#xff1a; /* - 弹窗 */notice{top: 0;left: 0;right: 0;z-index: 10;padding: 1em;position: fix…...

42、Flink 的table api与sql之Hive Catalog

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...

PAT 1145 Hashing - Average Search Time

个人学习记录&#xff0c;代码难免不尽人意。 The task of this problem is simple: insert a sequence of distinct positive integers into a hash table first. Then try to find another sequence of integer keys from the table and output the average search time (the…...

C++调用Python Win10 Miniconda虚拟环境配置

目录 前言1. Win10 安装 Miniconda2. 创建虚拟环境3. 配置C调用python环境4. C调用Python带参函数5.遇到的问题6. 总结 前言 本文记录了Win10 系统下Qt 应用程序调用Python时配置Miniconda虚拟环境的过程及遇到的问题&#xff0c;通过配置Python虚拟环境&#xff0c;简化了Qt应…...

从0到1学会Git(第一部分):Git的下载和初始化配置

1.Git是什么: 首先我们看一下百度百科的介绍:Git&#xff08;读音为/gɪt/&#xff09;是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 …...