linux--实时性优化

news2024/11/27 13:41:08

linux--实时性优化

  • 1 介绍
  • 2 实时性需求
  • 3 代表性实时系统
  • 4 嵌入式系统
    • 嵌入式软件系统结构
    • 处理器时钟节拍
    • 多任务机制
    • 任务调度方式
    • 任务调度算法
      • 时间片调度算法
      • 优先级调度算法
      • 基于优先级的时间片调度算法
  • 5 cyclictest 测试工具
    • 命令说明
  • 6 linux 实时性改进
    • 某版本上发布实时补丁或者内核改造
      • 打补丁【RT-patch】
      • 双内核【RT-Linux、RTAI、Xenomai】
    • 时钟精度调整
    • 中断调整
    • 进程调度算法
    • 其他策略,绑核
  • 参考

1 介绍

Linux本身为分时操作系统,其系统目标为较好的平均响应时间和较高的吞吐量,而实时系统则主要考虑任务的按量完成、尽量降低进程运行的不可预测性等。

2 实时性需求

AGV、机械臂等机器人,在控制伺服,读取雷达、PGV等传感器数据时,需要一定的实时性。如伺服控制周期要在 10ms 甚至更低,这就需要相应线程工作时,能稳定在相应周期内。

3 代表性实时系统

实时系统开源/商业地区
μc/os-III商业国外
FreeRTOS开源国外
Vxworks商业国外
RT-Thread开源国内
Liteos开源国内

4 嵌入式系统

嵌入式软件系统结构

目前常见的嵌入式软件结构可以分为轮询系统、前后台系统和多任务系统。

ISR是Interrupt Service Routines的缩写,即中断服务程序。
在这里插入图片描述

模型事件响应事件处理特点
轮询系统主程序主程序轮询响应事件,轮询处理事件
前后台系统前台多个中断程后台单个主程序实时响应事件,轮询处理事件
多任务系统多个中断程序多个任务实时响应事件,实时处理事件

处理器时钟节拍

在这里插入图片描述

多任务机制

在这里插入图片描述

在上图中,任务 A 和任务 B 按照等长时间轮流占用处理器,在单处理器上造成多
个任务同时运行的假象。

任务调度方式

任务调度方式可分为可抢占调度和不可抢占式调度两类。

基于优先级的可抢占式调度的实时性好,任何优先级高的任务只要具备了运行的条
件,即进入了就绪态,就可以立即得到调度和运行。任务在运行过程中都随时可能被比它优先级高的任务抢占。这种方式的任务调度保证了系统的实时性。
在这里插入图片描述
上图演示了不可抢占内核中的任务执行情况。例子中有三个任务需要运行。系统的
执行流程如下:

  • T0 时刻任务 C 得到处理器,它开始执行。在它执行过程中,任务 B 和任务 C 就
    绪,但是因为内核不支持抢占式调度,所以它们只好等待机会。
  • T1 时刻任务 C 完成操作,主动让出处理器。内核选择任务 B 来运行
  • T2 时刻任务 B 完成操作,主动让出处理器。内核选择任务 A 来运行
  • T3 时刻任务 A 完成操作,主动让出处理器。内核再次选择任务 C 来运行

任务调度算法

时间片调度算法

指的是内核先让某个任务运行一个时间片(多个时钟节拍),然后再切换给另一个
任务。
缺点:在任务占有处理器的时间段内,即是有更紧急任务就绪,也不能立刻执行它。
在这里插入图片描述

优先级调度算法

指的是内核总是让具有最高优先级的就绪任务优先运行。这种内核最大的提升了系统的实时性。
缺点:当最高优先级任务在运行时,它将持续占有处理器直到任务结束或者阻塞,否则其它任务无法获得运行的机会。
在这里插入图片描述

基于优先级的时间片调度算法

吸收了以上两种算法的优点,同时又解决了它们的不足。

这种算法为每个任务都安排了优先级和时间片。在不同优先级的任务间采用优先级调度算法,在相同优先级的任务间使用时间片轮转调度算法。任务调度策略首先考虑任务的优先级,优先级高的任务必定会抢占低优先级的任务。相同优先级的任务则按照时间片长度比例共享处理器时间。

这样既保证了能够尽快响应紧急任务,又保证相优先级的任务都有机会轮流占有处理器。
在这里插入图片描述

5 cyclictest 测试工具

可以在centos,ubuntu,加补丁的linux中使用。

命令说明

(base) root@orangepiaipro:/opt/worthsen/rt-tests# ./cyclictest --help
cyclictest V 1.00
Usage:
cyclictest <options>

-a [NUM] --affinity        run thread #N on processor #N, if possible
                           with NUM pin all threads to the processor NUM
-A USEC  --aligned=USEC    align thread wakeups to a specific offset
-b USEC  --breaktrace=USEC send break trace command when latency > USEC
-B       --preemptirqs     both preempt and irqsoff tracing (used with -b)
-c CLOCK --clock=CLOCK     select clock
                           0 = CLOCK_MONOTONIC (default)
                           1 = CLOCK_REALTIME
-C       --context         context switch tracing (used with -b)
-d DIST  --distance=DIST   distance of thread intervals in us, default=500
-D       --duration=TIME   specify a length for the test run.
                           Append 'm', 'h', or 'd' to specify minutes, hours or days.
         --latency=PM_QOS  write PM_QOS to /dev/cpu_dma_latency
-E       --event           event tracing (used with -b)
-f       --ftrace          function trace (when -b is active)
-F       --fifo=<path>     create a named pipe at path and write stats to it
-h       --histogram=US    dump a latency histogram to stdout after the run
                           US is the max latency time to be be tracked in microseconds
                           This option runs all threads at the same priority.
-H       --histofall=US    same as -h except with an additional summary column
         --histfile=<path> dump the latency histogram to <path> instead of stdout
-i INTV  --interval=INTV   base interval of thread in us default=1000
-I       --irqsoff         Irqsoff tracing (used with -b)
-l LOOPS --loops=LOOPS     number of loops: default=0(endless)
         --laptop          Save battery when running cyclictest
                           This will give you poorer realtime results
                           but will not drain your battery so quickly
-m       --mlockall        lock current and future memory allocations
-M       --refresh_on_max  delay updating the screen until a new max
                           latency is hit. Userful for low bandwidth.
-n       --nanosleep       use clock_nanosleep
         --notrace         suppress tracing
-N       --nsecs           print results in ns instead of us (default us)
-o RED   --oscope=RED      oscilloscope mode, reduce verbose output by RED
-O TOPT  --traceopt=TOPT   trace option
-p PRIO  --priority=PRIO   priority of highest prio thread
-P       --preemptoff      Preempt off tracing (used with -b)
         --policy=NAME     policy of measurement thread, where NAME may be one
                           of: other, normal, batch, idle, fifo or rr.
         --priospread      spread priority levels starting at specified value
-q       --quiet           print a summary only on exit
-r       --relative        use relative timer instead of absolute
-R       --resolution      check clock resolution, calling clock_gettime() many
                           times.  List of clock_gettime() values will be
                           reported with -X
         --secaligned [USEC] align thread wakeups to the next full second
                           and apply the optional offset
-s       --system          use sys_nanosleep and sys_setitimer
-S       --smp             Standard SMP testing: options -a -t -n and
                           same priority of all threads
        --spike=<trigger>  record all spikes > trigger
        --spike-nodes=[num of nodes]
                           These are the maximum number of spikes we can record.
                           The default is 1024 if not specified
-t       --threads         one thread per available processor
-t [NUM] --threads=NUM     number of threads:
                           without NUM, threads = max_cpus
                           without -t default = 1
         --tracemark       write a trace mark when -b latency is exceeded
-T TRACE --tracer=TRACER   set tracing function
    configured tracers: hwlat blk function_graph wakeup_dl wakeup_rt wakeup function nop
-u       --unbuffered      force unbuffered output for live processing
-v       --verbose         output values on stdout for statistics
                           format: n:c:v n=tasknum c=count v=value in us
-w       --wakeup          task wakeup tracing (used with -b)
-W       --wakeuprt        rt task wakeup tracing (used with -b)
         --dbg_cyclictest  print info useful for debugging cyclictest
(base) root@orangepiaipro:/opt/worthsen/rt-tests#

6 linux 实时性改进

目前影响Linux内核实时性因素主要有时钟精度、系统中断、进程调度算法和内核可抢占性等。

某版本上发布实时补丁或者内核改造

性能直接修改内核直接修改内核双内核双内核双内核
RT-patch其他RT-LinuxRTAIxenomai
实时性较好较好
硬件支持较好一般一般较好
API丰富一般一般一般丰富
维护难度
社区活跃度较好较差一般良好
用户态实时任务支持支持不支持支持支持
内核实时任务不支持不支持支持支持支持

打补丁【RT-patch】

双内核【RT-Linux、RTAI、Xenomai】

代表有RT-Linux、RTAI(Real-Time Application Interface)和Xenomai。

在这里插入图片描述

  • RT-Linux(Real-Time Linux)【停止更新】
    采用了双内核的做法。简单理解就是系统中存在两个内核,实时核和非实时核。底层硬件资源和实时的内核打交道绕开非实时核,来自硬件的中断源由实时核全面接管,

  • Xenomai【更新中】
    借鉴了RT-Linux的双内核做法,内部也有实时核和非实时核。但不同的是Xenomai在底层硬件和两个内核之间还加了一层硬件抽象层ADEOS(Adoptive Domain Environment for Operating System),实时核和非实时核作为硬件抽象层的两个域而存在,Xenomai内核属于实时域,Linux内核属于非实时域。ADEOS在系统的关键路径中对中断进行拦截,优先响应Xenomai实时域的中断,当没有实时任务和中断需要处理的时候才会轮到Linux内核执行。两者对比如下。
    在这里插入图片描述

  • RTAI
    同样借鉴RT-Linux。

时钟精度调整

提升时钟精度,系统中的调度会加快,优点是进程的响应提高,缺点进程切换开销增加,要根据具体使用场景来评估合理性。

中断调整

RTOS和Linux中,硬件中断的响应优先级永远是最高的。

OrangePi AIpro(8T) 开发板【昇腾310B4】查看系统的所有中断

cat /proc/interrupts
(base) root@orangepiaipro:~# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
  9:          0          0          0          0     GICv3  25 Level     vgic
 11:          0          0          0          0     GICv3  30 Level     kvm guest ptimer
 12:          0          0          0          0     GICv3  27 Level     kvm guest vtimer
 13:    4728702    1741435    1607592    1272102     GICv3  26 Level     arch_timer
 14:          1          0          0          0     GICv3 201 Level     uart-pl011
 15:          0          0          0          0     GICv3 298 Level     c42e0000.watchdog
 18:          0          0          0          0     GICv3  23 Level     arm-pmu
 19:          1          0          0          0     GICv3 319 Edge      APEI:HED
 20:          0          0          0          0     GICv3 177 Level     gpio
 21:          0          0          0          0     GICv3 178 Level     gpio
 22:          0          0          0          0     GICv3 179 Level     gpio
 23:          0          0          0          0     GICv3 181 Level     gpio
 24:          0          0          0          0     GICv3 182 Level     gpio
 25:          0          0          0          0     GICv3 183 Level     gpio
 26:          0          0          0          0     GICv3 249 Edge      hns3-a7100000.xge0-TxRx-0
 27:          0          0          0          0     GICv3 250 Edge      hns3-a7100000.xge0-TxRx-2
 28:          0          0          0          0     GICv3 251 Edge      hns3-a7100000.xge0-TxRx-4
 29:          0          0          0          0     GICv3 252 Edge      hns3-a7100000.xge0-TxRx-6
 42:          0          0          0          0     GICv3 265 Level     hnsplf-abn-a7100000.xge0
 43:          1          0          0          0     GICv3 269 Level     hnsplf-mac-a7100000.xge0
 44:          0          0          0          0     GICv3 241 Level     hnsplf-rtc-a7100000.xge0
 54:          5          0          0          0     GICv3 133 Level     dvpp_ipcm0
 55:          0          0          0          0     GICv3 134 Level     dvpp_ipcm1
 56:          0          0          0          0     GICv3 135 Level     dvpp_ipcm2
 58:          0          0          0          0     GICv3 286 Level     MIPI_RX
 59:          0          0          0          0     GICv3 291 Level     SLVS_EC
 60:          8          0          0          0     GICv3 290 Level     tc_ns_client
 61:          0          0          0          0     GICv3 279 Level     hisi-i2c
 62:          0          0          0          0     GICv3 280 Level     hisi-i2c
 63:          0          0          0          0     GICv3 281 Level     hisi-i2c
 64:          0          0          0          0     GICv3 282 Level     hisi-i2c
 65:        158          0          0          0     GICv3 185 Level     hisi-i2c
 66:          0          0          0          0     GICv3 186 Level     hisi-i2c
 67:          0          0          0          0     GICv3 187 Level     hisi-i2c
 68:         27          0          0          0     GICv3 188 Level     hisi-i2c
 69:        448          0          0          0     GICv3 189 Level     hisi-i2c
 70:          0          0          0          0     GICv3 192 Level     hisi-i2c
 71:          0          0          0          0     GICv3 193 Level     82020000.spi0
 72:          0          0          0          0     GICv3 194 Level     82030000.spi1
 73:          0          0          0          0     GICv3 283 Level     3001b0000.spi3
 74:          0          0          0          0     GICv3 284 Level     3001c0000.spi4
 75:          0          0          0          0     GICv3 195 Level     c40b0000.spi5
 80:          0          0          0          0  ITS-pMSI 75776 Edge      arm-smmu-v3-evtq
 81:          0          0          0          0  ITS-pMSI 75777 Edge      arm-smmu-v3-gerror
 82:          0          0          0          0  ITS-pMSI 77824 Edge      arm-smmu-v3-evtq
 83:          0          0          0          0  ITS-pMSI 77825 Edge      arm-smmu-v3-gerror
 84:          0          0          0          0  ITS-pMSI 79872 Edge      arm-smmu-v3-evtq
 85:          0          0          0          0  ITS-pMSI 79873 Edge      arm-smmu-v3-gerror
 86:          0          0          0          0  ITS-pMSI 81920 Edge      arm-smmu-v3-evtq
 87:          0          0          0          0  ITS-pMSI 81921 Edge      arm-smmu-v3-gerror
 88:          0          0          0          0  ITS-pMSI 83968 Edge      arm-smmu-v3-evtq
 89:          0          0          0          0  ITS-pMSI 83969 Edge      arm-smmu-v3-gerror
 90:          0          0          0          0  ITS-pMSI 86016 Edge      arm-smmu-v3-evtq
 91:          0          0          0          0  ITS-pMSI 86017 Edge      arm-smmu-v3-gerror
 92:          0          0          0          8  mbigen-v2 916 Level     mmc0
 93:      48205          0          0          0  mbigen-v2 917 Level     mmc1
 95:          0          1          0          0   ITS-MSI   0 Edge      PCIe PME, aerdrv, pciehp
 96:          0          0          0          0  mbigen-v2 699 Level     mailbox-0-lp-rx-acpu0
 97:          0          0          0       3089  mbigen-v2 700 Level     mailbox-1-lp-rx-acpu1
 98:         69          0          0          0  mbigen-v2 701 Level     mailbox-2-lp-rx-acpu2
 99:          0          5          0          0  mbigen-v2 702 Level     mailbox-3-lp-rx-acpu3
100:          0          0          0          0  mbigen-v2 628 Level     ts_ipc_done_interrupt
101:          0          0          0          0  mbigen-v2 629 Level     ts_ipc_done_interrupt
102:          0          0          0          0  mbigen-v2 630 Level     ts_ipc_done_interrupt
103:          0          0          0          0  mbigen-v2 631 Level     ts_ipc_done_interrupt
104:          0          0          0          0  mbigen-v2 632 Level     ts_ipc_done_interrupt
105:          0          0          0          0  mbigen-v2 633 Level     ts_ipc_done_interrupt
106:          0          0          0          0  mbigen-v2 634 Level     ts_ipc_done_interrupt
107:          0          0          0          0  mbigen-v2 635 Level     ts_ipc_done_interrupt
108:          0          0          0          0  mbigen-v2 636 Level     mailbox-8-ts-rx-acpu0
109:          0          0          0          0  mbigen-v2 637 Level     mailbox-9-ts-rx-acpu1
110:          0          0          0          0  mbigen-v2 638 Level     mailbox-10-ts-rx-acpu2
111:          0          5          0          0  mbigen-v2 639 Level     mailbox-11-ts-rx-acpu3
112:          0          0          0          0  mbigen-v2 594 Level     irq_route_to_ts
113:          0          0          0          0  mbigen-v2 595 Level     irq_route_to_ts
114:          0          0          0          0  mbigen-v2 596 Level     irq_route_to_ts
115:          0          0          0          0  mbigen-v2 597 Level     irq_route_to_ts
116:          0          0          0          0  mbigen-v2 598 Level     irq_route_to_ts
117:          0          0          0          0  mbigen-v2 599 Level     irq_route_to_ts
118:          0          0          0          0  mbigen-v2 600 Level     irq_route_to_ts
119:          0          0          0          0  mbigen-v2 601 Level     irq_route_to_ts
120:          0          0          0          0  mbigen-v2 602 Level     irq_route_to_ts
121:          0          0          0          0  mbigen-v2 603 Level     irq_route_to_ts
122:          0          0          0          0  mbigen-v2 604 Level     irq_route_to_ts
123:          0          0          0          0  mbigen-v2 605 Level     irq_route_to_ts
124:          0          0          0          0  mbigen-v2 606 Level     irq_route_to_ts
125:          0          0          0          0  mbigen-v2 607 Level     irq_route_to_ts
126:          0          0          0          0  mbigen-v2 608 Level     sq_trigger
127:         15          0          0          0  mbigen-v2 609 Level     trs-mbox-0-0
128:       1551          0          0          0  mbigen-v2 610 Level     maint_cq
132:          0          0          0          0  mbigen-v2 614 Level     cqe_done
138:          0          0          0          0  mbigen-v2 620 Level     topic_sched_ccpu
141:          0          0          0          0  mbigen-v2 623 Level     topic_sched_aicpu
146:          0          0          0          0  mbigen-v2 934 Level     VI_CAP0
147:          0          0          0          0  mbigen-v2 935 Level     VI_PROC0
148:          0          0          0          0  mbigen-v2 936 Level     VPSS
155:          0          0          0          0  mbigen-v2 663 Level     VEDU_0
156:          0          0          0          0  mbigen-v2 665 Level     VEDU_1
160:          0          0          0          0  mbigen-v2 831 Level     VGS
161:          0          0          0          0  mbigen-v2 830 Level     GDC
162:          0          0          0          0  mbigen-v2 590 Level     asp_dma_irq
163:          0          0          0          0  mbigen-v2 918 Level     xhci-hcd:usb1
164:          0     695298          0          0  mbigen-v2 922 Level     xhci-hcd:usb3
165:          0          0       1152          0  mbigen-v2 926 Level     xhci-hcd:usb5
166:          0        190          0          0  mbigen-v2 930 Level     xhci-hcd:usb7
167:          0          0          0          0  gpio-dwapb   2 Edge      drv_power_off
168:          0          0     568143          0  mbigen-v2 910 Level     DRM_0
IPI0:    753334     324877     530484     343726       Rescheduling interrupts
IPI1:      1424       6291       6018      12370       Function call interrupts
IPI2:         0          0          0          0       CPU stop interrupts
IPI3:         0          0          0          0       CPU stop (for crash dump) interrupts
IPI4:         0          0          0          0       Timer broadcast interrupts
IPI5:         0          0          0          0       IRQ work interrupts
IPI6:         0          0          0          0       CPU wake-up interrupts
IPI7:         0          0          0          0       User function call interrupts
Err:          0
(base) root@orangepiaipro:~#

在这里插入图片描述

将某中断绑定到某CPU

echo "1" > /proc/irq/30/smp_affinity

进程调度算法

Linux系统目前默认采用的是完全公平调度算法(CFS),它按照各个进程的权重来分配运行时间。

使用CFS的情况下,我们可以给有实时性需求的进程分配更高的优先级和权重。

Linux内核目前支持的调度类有:stop、deadline、realtime、CFS、idle。、它们的优先级依次由高到底排序。

deadline调度类包含如下调度策略:

  • SCHED_DEADLINE

realtime调度类包含如下调度策略:

  • SCHED_FIFO
  • SCHED_RR

CFS调度类包含如下调度策略:

  • SCHED_NORMAI
  • SCHED_BATCH
  • SCHED_IDLE

其他策略,绑核

如果核多,可以将实时性要求高的进程绑核。

参考

1、深入理解与实现 RTOS
2、FreeRTOS–中断管理
3、嵌入式Linux实时系统的特点和Linux内核在实时应用方面的不足
4、浅谈Linux内核的实时性优化
5、xenomai内核解析之嵌入式实时linux概述
6、开源IgH EtherCAT主站方案,基于IMX8、ZYNQ、AM335x、T3等平台
7、树莓派:给内核打上实时补丁(RT-patch)
8、关于RK3568 Linux内核打实时补丁RT Preempt介绍
9、Linux RT补丁/分析/性能测试(@Ubuntu)

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

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

相关文章

(三)MySQL 索引

欢迎访问 什么是索引&#xff1f; 提高查询效率的一种数据结构&#xff0c;索引是数据的目录 索引的分类 按「数据结构」分类&#xff1a;Btree索引、Hash索引、Full-text索引。按「物理存储」分类&#xff1a;聚簇索引、二级索引。按「字段特性」分类&#xff1a;主键索引…

JavaScript: Uncaught SyntaxError: Invalid or unexpected token

好久没有碰前端的代码了。。。 今天测试WebSocket功能&#xff0c;Client端&#xff1a;使用HtmlJavaScript&#xff0c;通过浏览器解析后&#xff0c;当做客户端&#xff1b; 客户端代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head&g…

装饰模式:鸡腿堡

文章目录 UML类图目录结构Humburger.javaChickenBurger.javaCondiment.javaChuilli.javaLettuce.javaTest.java深度理解test怎么写 UML类图 目录结构 我们从指向最多的开始写 Humburger.java package zsms;public abstract class Humburger {protected String name;public S…

学至乎没而后止也

开场白 学至后没而后止也这个题目的原话来自与荀子《劝学》。大家知道什么意思吗&#xff1f;学习要学到你人没了&#xff0c;才算停止了。通俗点说就是只要没学死就往死里学&#xff0c;高雅点说就是要保持终身学习。 在以前说终身学习好像是一种良好习惯或品德&#xff0c;…

AIGC 009-DaLLE2遇见达利!文生图过程中另外一种思路。

AIGC 009-DaLLE2遇见达利&#xff01;文生图过程中另外一种思路。 0 论文工作 首先&#xff0c;遇见达利是我很喜欢的名字&#xff0c;达利是跟毕加索同等优秀的画家。这个名字就很有意思。 这篇论文提出了一种新颖的分层文本条件图像生成方法&#xff0c;该方法利用 CLIP&…

C语言笔记20 •整数和浮点数在内存中存储•

整数和浮点数在内存中存储 1.整数在内存中存储 整数在内存中存储比较简单&#xff0c;整数存储分为正整数存储和负整数存储。 对于有符号整数 符号位中0表示正整数&#xff0c;1表示负整数。 正整数在内存中存储&#xff1a; 正整数原码&#xff0c;反码 &#xff0c;补码…

这款网站测试工具,炫酷且强大!【送源码】

随着互联网的普及和发展&#xff0c;Web 应用程序的数量也越来越多&#xff0c;各种网络问题也是层出不穷&#xff0c;因而监测这些 Web 应用程序的性能和可用性变得非常重要。 今天的文章&#xff0c;了不起和大家分享一款十分好用的的网站分析项目 - Web-Check。 项目简介 …

MemoryDB 2024 论文分享

论文地址点这里。 TL;DR MemoryDB 通过底层依赖 AWS 内部系统 Multi-AZ Transaction Log 实现了 11 个 9 的持久性保证。 通过依赖 Transaction Log 的 Condition API 和租约机制来实现了一致性和可用性保证。 通过周期性调度 Off-box 节点来外部 Rewrite binlog 避免了内存…

FastReport 主子表关系

代码中只需要绑定主表的数据就可以&#xff0c;子表的数据会通过报表中的关连关系自动到数据库中带出。 using CloudSaaS.DB.Handler; using CloudSaaS.Model; using CloudSaaS.DAL; using FastReport; using FastReport.Web; using System; using System.Collections.Generic;…

Llama模型家族训练奖励模型Reward Model技术及代码实战(一)

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

安全术语 | 软件包purl详解:跨工具、数据库、API和语言之间可靠地识别和定位软件包

软件包URL&#xff08;purl&#xff0c;Package URL&#xff09;是一个URL字符串&#xff0c;用于在编程语言、包管理器、包约定、工具、API和数据库中以最通用和统一的方式识别和定位软件包。purl是对现有方法进行标准化的尝试&#xff0c;以可靠地识别和定位软件包。 有望取代…

服务案例|网络攻击事件的排查与修复

LinkSLA智能运维管家V6.0版支持通过SNMP Trap对设备进行监控告警&#xff0c;Trap是一种主动推送网络设备事件或告警消息的方式&#xff0c;与SNMP轮询&#xff08;polling&#xff09;不同&#xff0c;具有以下几点优势&#xff1a; 1. 实时监控与快速响应 SNMP Trap能够实时…

【网络协议】应用层协议HTTPS

文章目录 为什么引入HTTPS&#xff1f;基本概念加密的基本过程对称加密非对称加密中间人攻击证书 为什么引入HTTPS&#xff1f; 由于HTTP协议在网络传输中是明文传输的&#xff0c;那么当传输一些机密的文件或着对钱的操作时&#xff0c;就会有泄密的风险&#xff0c;从而引入…

Mowgli用于配对多组学整合

对同一组细胞的多个分子层进行分析逐渐流行。越来越需要能够联合分析这些数据的多视图学习方法。Mowgli是一种支持配对多组学数据的整合方法。值得注意的是&#xff0c;Mowgli将非负矩阵分解和最优传输相结合&#xff0c;同时提高了非负矩阵分解的聚类性能和可解释性。作者将Mo…

AIGC 010-CLIP第一个文本和图像对齐的大模型!

AIGC 010-CLIP第一个文本和图像对齐的大模型&#xff01; 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 不客气的说CLIP和扩散模型的成功让计算式视觉领域几乎所有工作都重新做了一遍。 CLIP&#xff08;对比语言-图像预训练&#xff09;论文提出了一种新的对比学习方法&a…

adb获取包名和界面名

adb获取包名和界面名 mac adb shell dumpsys window windows | grep mFocusedApp windows adb shell dumpsys window windows | findstr mFocusedApp 这个是在当前手机打开哪个界面获取的就是哪个界面的包名与界面 注意第一次连接时会有提示&#xff0c;需要连接两次才可以 …

Java设计模式(23种设计模式 重点介绍一些常用的)

创建型模式&#xff0c;共五种&#xff1a;工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式&#xff0c;共七种&#xff1a;适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式&#xff0c;共十一种&#xff1a;…

SpringBoot整合SpringSecurit,实现ajax的登录、退出、权限校验

1、本文章中SpringBoot整合SpringSecurity&#xff0c;只是基于session方式&#xff0c;并且没有使用到redis。 2、登录、登出都是通过ajax的方式进行。 项目目录&#xff1a; 1、pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xm…

Leecode热题100---二分查找---搜索插入位置

题目&#xff1a; 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 nums 为 无重复元素 的 升序 排列数组 常规思路&#xff1a; class Solution { public:int f…

走进全球LED显示龙头艾比森,深挖逆势增长43%的数智化逻辑

在大环境不景气的情况下&#xff0c;有一家智能制造企业在2023年营收40亿&#xff0c;同比增长高达43%&#xff0c;海外营收增长约 46%&#xff0c;并且连续12年单品牌出口额第一。 这就是全球LED显示龙头艾比森。 5月9日&#xff0c;纷享销客带领近70位企业高管走进纷享销客…