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

基于操作系统讨论Java线程与进程、浅谈Go的线程与管程

文章目录

  • 操作系统中的进程
    • 进程概念
    • 进程的状态
  • Java中的进程
    • Java进程的概念
    • Java进程的特性
    • Java进程的状态
    • Java进程与操作系统进程的通信
  • 操作系统的进程和Java进程的区别联系
      • 操作系统进程
      • Java 进程
      • 区别和联系
  • 操作系统中的线程
    • 动机
    • 优点
    • 多核编程
  • Java中的线程
    • 定义:
    • 特点:
    • 创建线程的方式:
    • 线程生命周期:
    • 线程调度:
  • Java的线程和操作系统的线程的区别和联系
  • Go的管程

说在开头: 一个进程可以包含多个线程,一个线程只能对应一个进程。一个程序至少有一个进程。进程是操作系统资源分配的基本单位,而线程是程序执行的最小单位

  • 进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程—资源分配的最小单位
  • 线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流线程—程序执行的最小单位
    进程更像是一个工作,线程则是执行进程的人

想象一下你在制作一份报告。整个报告制作的过程就是一个进程,而制作报告的不同步骤,比如收集资料、写正文、设计图表,就是线程。这些线程可以同时协调工作,从而更高效地完成整份报告。

操作系统中的进程

进程概念的产生:早期的计算机一次只能执行一个程序。这种程序完全控制系统,并访问所有系统资源。现代操作系统允许加载多个程序到内存,以便并发执行。这些需求导致了进程概念的产生,即进程为执行中的程序

  • 进程是现代分时操作系统的工作单元

  • 通过CPU的多路复用所有进程可以并发执行

    • 通过在进程之间切换CPU,操作系统能使计算机更为高效
  • 引入进程概念,即执行的程序,这是所有计算的基础

  • 讨论进程的各类特性,包括调度、创建和终止

  • 探讨通过共享内存和消息传递的进程间通信

  • 讨论客户机与服务器系统间的通信

进程概念

  • 在讨论操作系统时,有个问题是关于如何称呼所有CPU活动。批处理系统执行作业(job),而分时系统使用用户程序或任务( task).。即使单用户系统,用户也能同时运行多个程序(如文字处理、网页浏览等)。

  • 即使用户一次只能执行一个程序,操作系统也需要支持本身的内部活动,如内存管理。所有这些活动在许多方面都相似,因此称为进程(process)

  • 程序本身不是进程,程序只是被动实体。

    • 如存储在磁盘上的包含一系列指令的文件(通常称为可执行文件)。
    • 而进程是活动实体。
    • 当一个可执行文件被加载到内存时,这个程序就成为进程。
  • 进程是执行中的程序实体

    • 一个文件(程序)可以,由多个进程来运行,比如一个浏览器用多个进程运行
  • 进程是操作系统进行资源分配和调度的基本单位

    • 进程不只是程序代码
    • 进程还包括:当前活动(如程序计数器的值和寄存器的内容等,另外还可能包括推、栈、数据等)

进程的状态

进程在执行时会改变状态。进程状态,部分取决于进程的当前活动。
每个进程可能处于以下状态:

  • 新的(new) :进程正在创建
  • 运行( running):指令正在执行
  • 等待(waiting) :又称阻塞状态,进程等待发生某个事件(如IO完成)
  • 就绪(ready) :进程等待分配处理器
  • 终止( terminated) :进程已经结束

Java中的进程

Java中的进程概念与操作系统中的进程有相似之处,但也有其特有的特点。Java进程指的是运行Java应用程序的环境,由Java虚拟机(JVM)托管和执行。

Java进程的概念

  • Java进程是指运行在JVM上的程序实例。当启动一个Java应用时,JVM创建一个进程来托管这个应用。
  • Java进程为程序提供了必要的运行环境,包括内存分配、资源管理和垃圾回收等。
  • Java进程是操作系统进程的一个实例,JVM运行在操作系统层面上的一个进程内。
    • 通常启动一个main方法就是启动了一个进程,通常一个Java程序只会启动一个进程
  • 每个Java进程可以包含多个线程,共享相同的内存空间和JVM资源。

Java进程的特性

  • 跨平台性:由于JVM的存在,Java进程在不同操作系统上的行为保持一致,实现了真正的跨平台运行。
  • 内存管理:JVM负责Java进程的内存管理,包括堆内存和方法区的分配与管理。
  • 垃圾回收:Java进程的垃圾回收由JVM自动管理,减轻了开发者的内存管理负担。
  • 异常处理:Java进程内部的异常处理机制可以有效地管理运行时错误,保证程序的稳定运行。

Java进程的状态

与操作系统进程类似,Java进程也有不同的状态,但它们更多地与JVM的生命周期相关联:

  • 启动:当运行Java应用时,JVM启动并创建一个新的进程。
  • 执行:Java进程执行应用程序的代码,包括加载类、执行方法等。
  • 等待:Java进程可能因为IO操作或者其他阻塞操作进入等待状态。
  • 终止:应用程序执行完成后,Java进程终止,JVM进行清理工作并释放资源。

Java进程与操作系统进程的通信

  • Java进程可以通过各种方式与操作系统进程交互,例如使用Java的RuntimeProcessBuilder类。
  • 这些类允许Java应用启动和管理操作系统级别的进程,以及与这些进程进行交互。

Java进程是JVM中的一个重要概念,它为Java应用提供了一个独立于操作系统的运行环境。JVM的存在使得Java进程具有跨平台性,并管理着进程内存和生命周期,从而简化了开发过程并增强了程序的稳定性。同时,Java进程也能与操作系统层面的进程进行交互,实现更复杂的功能。

操作系统的进程和Java进程的区别联系

操作系统进程和Java进程有着密切的关系,但它们在定义、管理方式以及运行环境方面存在一些关键区别和联系:

操作系统进程

  1. 定义:

    • 操作系统进程是操作系统的基本运行单元。它是程序执行的实体,拥有独立的地址空间和资源(如文件句柄、内存等)。
  2. 管理:

    • 进程由操作系统内核管理。操作系统负责进程的创建、调度、资源分配和回收。
  3. 隔离性:

    • 每个操作系统进程在内存中拥有独立的地址空间,进程间互不干扰,确保了安全和稳定。
  4. 通信:

    • 进程间通信(IPC)需要特定的机制,如管道、消息队列、共享内存等。
  5. 平台依赖性:

    • 操作系统进程的行为和性能受到底层操作系统的影响,具有平台依赖性。

Java 进程

  1. 定义:

    • Java进程指的是运行Java应用程序的实例。在Java中,每当运行一个Java程序时,Java虚拟机(JVM)在操作系统中为该程序创建一个进程。
  2. 管理:

    • Java进程由JVM管理,JVM负责Java应用的运行、内存管理、垃圾回收等。
  3. 隔离性:

    • 虽然Java进程在操作系统中作为一个独立的进程存在,但Java应用内部的线程共享相同的内存空间和JVM资源。
  4. 通信:

    • Java进程内的线程通信相对更简单,但Java进程间的通信则需要依赖于JVM提供的机制或操作系统级的IPC机制。
  5. 跨平台性:

    • 由于JVM的存在,Java进程具有跨平台性,同一Java程序可以在不同操作系统上运行而无需修改代码。

区别和联系

  • 平台依赖性 vs 跨平台性:

    • 操作系统进程直接受操作系统控制,具有平台依赖性。而Java进程由JVM管理,因此具有跨平台性,不会依赖当前平台。
  • 管理机制:

    • Java进程的管理是通过JVM实现的,它提供了一系列针对Java应用优化的管理策略。操作系统进程管理则是由操作系统直接控制。
  • 资源隔离与共享:

    • 在操作系统中,每个进程有自己独立的资源和地址空间,而在单个Java进程内,不同的线程共享相同的资源。
      • 关于不同进程访问其他的进程的资源,也是有办法办到,只不过并不如线程共享资源那般自然和容易。
      • 在单个Java进程内部,所有线程共享相同的堆内存空间。这意味着它们可以直接访问同一个对象或变量。然而,每个线程还拥有自己的栈空间,用于存储本地变量和调用历史,这部分内存是独立的。
      • 通信机制:
        • 操作系统进程间的通信依赖于操作系统提供的IPC机制。Java进程(或其内部的线程)之间的通信可以利用JVM提供的机制或操作系统级IPC。
        • IPC(Inter-Process Communication)
          • 管道(Pipes):管道是最基本的IPC机制,它允许一个进程的输出直接成为另一个进程的输入。传统的管道是半双工的(只能单向通信),但也有全双工的管道。
          • 消息队列(Message Queues):消息队列允许进程发送和接收消息。这些消息存储在队列中,直到被接收进程取走。
          • 共享内存(Shared Memory):允许多个进程访问同一块内存空间。这是一种非常高效的数据交换方式,但需要处理好进程间的同步问题。
          • 信号量(Semaphores):用于控制对共享资源的访问。信号量可以是二进制的(锁)或者可以有多个值,用于实现复杂的同步需求。
          • 套接字(Sockets):套接字是用于网络通信的一种方式,但也可以用于同一台机器上的进程间通信。它支持基于流(TCP)和基于数据报(UDP)的通信。
          • 远程过程调用(Remote Procedure Calls, RPC):允许一个进程调用另一个进程的函数或方法,就像调用本地函数一样。RPC隐藏了底层的通信细节。
          • 内存映射文件(Memory-mapped files):使用文件系统的一部分内存作为进程间通信的媒介。这种方式允许文件内容被映射到多个进程的地址空间中。

Java进程是JVM在操作系统进程基础上的一个抽象和实现。JVM为Java进程提供了一致的运行时环境,使其具有跨平台性,同时也引入了一些特有的管理和通信机制。

操作系统中的线程

每个线程是CPU使用的一个基本单元。

  • 它包括线程ID、程序计数器、寄存器组和堆栈
    • 它与同一进程的其它线程共享代码段、数据段和其它操作系统资源
  • 一个进程一般具有多个线程,那么进程能同时执行多个任务。请添加图片描述

动机

一个进程为什么要创建多个线程?

  • 1.操作系统创建多个进程比一个进程中创建多个线程的开销大
  • 2.进程间通信和线程间通信更复杂
    • 都在一个程序内部,也更安全

优点

  • 响应性:如果一个交互程序采用多线程,那么即使部分阻塞或执行冗余操作,它仍然可以继续执行,从而增加对用户的响应程度。
  • 资源共享:进程只能通过如共享内存和消息传递之类的技术实现共享资源。而线程默认共享它们所属进程的内存和资源
  • 经济:进程创建所需的内存和资源分配非常昂贵。
  • 可伸缩性:对于多处理器体系结构,多线程的优点更大,因为线程可在多处理器核上并行运行。

多核编程

早期计算机是单核—>现代计算机是多核

  • 多核编程提供机制,以便更有效的使用这些多个计算核和改进并发性

  • 并行性:并行系统可以同时执行多个任务,指多核系统,多个进程同时执行的情况

  • 并发性:并发系统也可以同时执行多个任务。指通过CPU上下文切换,执行多个任务的情况

  • CPU调度器通过快速切换系统内的进程,以便允许每个进程取得进展,从而提供并行假想。

Java中的线程

在Java中,线程是程序执行流的最小单元。线程允许程序同时执行多个任务,使得程序能够更有效地利用系统资源和提高程序的响应能力。下面是关于Java中线程的详细分析:

定义:

线程是程序执行的一条路径,每个线程都是独立的、并发执行的。在Java中,线程是通过 java.lang.Thread 类来表示的。

特点:

  • 线程是轻量级的:相比进程,线程占用的系统资源更少,创建和销毁线程的开销也比较小。
  • 线程是并发执行的:一个程序中的多个线程可以并发执行,它们共享程序的内存空间。
  • 线程是抢占式的:操作系统会不时地暂停当前正在执行的线程,将处理器分配给其他线程,这种方式称为抢占式调度。
  • 线程是独立调度的:每个线程都有自己的执行路径,线程之间相互独立,互不影响。

创建线程的方式:

  • 继承 Thread 类:创建一个类,继承 Thread,并重写 run 方法来定义线程执行的任务,然后创建该类的实例并调用 start 方法来启动线程。
  • 实现 Runnable 接口:创建一个实现了 Runnable 接口的类,实现其 run 方法,并将其作为参数传递给 Thread 类的构造方法,然后启动线程。

线程生命周期:

  • 新建状态(New):当线程对象被创建时,线程处于新建状态。
  • 就绪状态(Runnable):当调用 start 方法后,线程处于就绪状态,表示线程已经准备好,等待系统调度执行。
  • 运行状态(Running):当线程获得CPU时间片时,进入运行状态,开始执行 run 方法中的任务。
  • 阻塞状态(Blocked):线程因为某些原因放弃 CPU 使用权,暂时停止运行。可能是等待某个资源,或者调用了 sleep、join 等方法。
  • 终止状态(Terminated):线程执行完了任务或者发生异常导致线程终止。

线程调度:

Java 线程调度由操作系统和 JVM 共同完成。操作系统负责分配 CPU 时间片给各个线程,而 JVM 的线程调度器负责决定哪个线程获得 CPU 时间片。

总之,线程是 Java 中实现并发编程的重要工具,能够帮助程序实现同时执行多个任务的能力。然而,线程的并发执行也带来了线程安全、死锁等问题,需要开发人员特别注意。

Java的线程和操作系统的线程的区别和联系

区别:

  1. 抽象级别:Java的线程是在Java虚拟机(JVM)中实现的,属于应用程序级别的线程。而操作系统的线程是在操作系统内核中实现的,属于操作系统级别的线程。

  2. 调度管理:Java的线程的调度和管理是由Java虚拟机来负责的,而操作系统的线程调度和管理是由操作系统内核来负责的。

  3. 平台独立性:Java的线程可以实现跨平台的特性,因为它们是由Java虚拟机来管理的,与具体的操作系统无关。而操作系统的线程受限于所在的操作系统,不同操作系统的线程管理机制可能有所差异。

联系:

  1. Java的线程最终会映射到操作系统的线程上。Java虚拟机通过调用操作系统提供的原生线程接口来创建和管理线程,从而实现Java线程的功能。

  2. 操作系统提供了底层的线程支持,包括线程的创建、调度、同步、销毁等操作。Java的线程是建立在操作系统提供的线程机制之上的,操作系统的线程支持为Java线程的实现提供了基础。

总的来说,Java的线程是建立在操作系统线程之上的,它们在抽象级别、调度管理和平台独立性等方面有所区别,但又通过底层的映射和调用联系在一起,共同实现了多线程编程的功能。

Go的管程

管程(Channel)是一种用于实现并发通信和同步的机制,它可以利用线程来实现并发控制。它提供了一种安全、简单和高效的方式,让不同的 goroutine(Go语言中的轻量级线程)之间可以进行数据的传递和共享。

管程的底层实现原理是基于**通道(Channel)和锁(Mutex)**机制的结合。在Go语言中,管程由编译器和运行时系统提供支持,主要包括以下几个方面的实现原理:

  1. 通道(Channel):

    • 通道是管程的核心组件,它用于实现不同 goroutine 之间的数据传递和同步。
    • 通道内部使用了线程安全的队列数据结构,用于存储和传递数据。
    • 通过通道的发送(send)和接收(receive)操作,可以实现阻塞和非阻塞的数据传递。
  2. 锁(Mutex):

    • 锁是管程的辅助机制,用于保护共享资源的访问。
    • 在管程中,可以使用锁来控制对共享资源的并发访问,避免数据冲突和竞态条件。
    • Go语言中的锁机制通常使用 sync 包中的互斥锁(Mutex)来实现。
  3. 运行时调度器:

    • Go语言的运行时系统负责协调和调度不同的 goroutine。
    • 运行时调度器会根据当前可用的 CPU 资源、goroutine 的优先级等因素,动态地分配和调度 goroutine 的执行。
    • 当一个 goroutine 在通道上进行发送或接收操作时,如果数据不可用或通道已满,运行时调度器会自动将其阻塞,并切换到其他可执行的 goroutine。
  4. 信号量控制:

    • 管程的实现还可以借助信号量(Semaphore)等机制来实现更复杂的同步和通信需求。
    • 通过使用信号量,可以在管程中实现互斥、条件等高级同步操作。

综上所述,管程的底层实现原理主要基于通道的机制。通道提供了安全的数据传递和同步,锁用于保护共享资源的访问。运行时调度器负责协调和调度不同的 goroutine,信号量则可以进一步扩展管程的功能。这些机制的结合使得管程能够提供安全、简洁和高效的并发编程方式。

相关文章:

基于操作系统讨论Java线程与进程、浅谈Go的线程与管程

文章目录 操作系统中的进程进程概念进程的状态 Java中的进程Java进程的概念Java进程的特性Java进程的状态Java进程与操作系统进程的通信 操作系统的进程和Java进程的区别联系操作系统进程Java 进程区别和联系 操作系统中的线程动机优点多核编程 Java中的线程定义:特…...

CICD 持续集成与持续交付——jenkins

部署 软件下载:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/ [rootcicd2 ~]# rpm -ivh jdk-11.0.15_linux-x64_bin.rpm[rootcicd2 ~]# yum install -y fontconfig[rootcicd2 ~]# rpm -ivh jenkins-2.432-1.1.noarch.rpm启动服务 [rootcicd2 ~]# systemctl…...

【Zabbix】Zabbix Agent 2在Ubuntu/Debian系统上的安装

一、Zabbix Agent 2介绍 Zabbix Agent 2是一款监控软件,由Zabbix SIA开发。Zabbix Agent 2可以提供系统、服务、应用程序和网络设备的监控及性能指标数据收集。它是通过在被监视的主机上运行来获取数据。Zabbix Agent 2可以在Linux、Unix、Windows和MAC平台上运行&…...

浅谈无线测温产品在菲律宾某工厂配电项目的应用

摘要:配电系统是由多种配电设备和配电设施所组成的变换电压和直接向终端用户分配电能的一个电力网络系统。由于配电系统作为电力系统的一个环节直接面向终端用户,它的完善与否直接关系着广大用户的用电可靠性和用电质量,因而在电力系统中具有…...

软件工程第十一周

面向对象 面向对象编程(Object-Oriented Programming, OOP)不仅仅是一种程序设计方法,它更是一种深刻的软件工程开发思想。这种思想的核心在于通过抽象和封装来模拟现实世界中的对象和概念,以便更好地管理和解决复杂的软件工程问…...

【从入门到起飞】JavaSE—带你了解Map,HashMap,TreeMap的使用方法

🎊专栏【Java基础】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【The truth that you leave】 🥰欢迎并且感谢大家指出我的问题 文章目录 🌺双列集合的特点🎄Map🍔Ma…...

[Docker]六.Docker自动部署nodejs以及golang项目

一.自动部署nodejs 1.创建node项目相关文件 app.js代码如下: var express require(express);var appexpress();app.get(/,function(req,res){res.send(首页update); }) app.get(/news,function(req,res){res.send(首页); })//docker做端口映射的时候不要指定ip app.listen(30…...

FPC焊点剥离失效分析

一、案例背景 FPC在后续组装过程中,连接器发生脱落。在对同批次的样品进行推力测试后,发现连接器推力有偏小的现象。据此进行失效分析,明确FPC连接器脱落原因。 #1、#2样品连接器脱落连接器脱落;#3样品连接器未脱落;…...

Java爬虫框架下代理使用中的TCP连接池问题及解决方案

引言 当使用Java爬虫框架进行代理爬取时,可能会遇到TCP连接池问题,导致"java.net.BindException: Cannot assign requested address"等错误。本文将介绍如何以爬取小红书为案例,解决Java爬虫框架中代理使用中的TCP连接池问题&…...

PostgreSQL 数据定义语言 DDL

文章目录 表创建主键约束非空唯一约束检查约束外键约束默认值约束 触发器表空间构建表空间 视图索引索引的基本概念索引的分类创建索引 物化视图 表创建 PostgreSQL表的构建语句与所有数据库都一样,结构如下,其核心在于构建表时,要指定上一些…...

设计模式-行为型模式-策略模式

一、什么是策略模式 策略模式是一种行为设计模式,它允许在运行时选择算法或行为,并将其封装成独立的对象,使得这些算法或行为可以相互替换,而不影响使用它们的客户端。(ChatGPT生成) 主要组成部分&#xff…...

ResizeObserver观察元素宽度的变化

ResizeObserver观察元素宽度的变化 ResizeObserver观察元素宽度的变化 ResizeObserver观察元素宽度的变化 ResizeObserver 构造函数创建一个新的 ResizeObserver 对象,它可以用于监听 Element 内容盒或边框盒或者 SVGElement 边界尺寸的大小。查看详细说明 案例 &l…...

斐波那契数列,剑指offer,力扣

目录 题目地址: 我们直接看题解吧: 解题方法: 难度分析: 审题目事例提示: 解题思路(动态规划): 代码实现: 补充说明: 代码(优化)&…...

Mac安装CocoaPods

安装HomeBrew 安装 % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装失败 % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"curl: (28) F…...

APP专项测试方法和工具的使用(测试新手必看)

APP专项测试 1、网络测试 可使用抓包工具辅助网格测试推荐:fiddler,Charles (1)网络切换2G-3G-4G-wifi-网络信号差--无网(2)网络信号弱关注是否出现ANR、crash 2、中断测试 (1)…...

WordPress网站迁移实战经验

前几日,网站服务器到期,换了服务商,就把我的WordPress的网站迁移到本地电脑了。方便以后文章迁移。 本次迁移网站主要经历以下几个步骤。 1.域名转出。 2.备份数据库及网站文件下载。 3.重新搭建WordPress网站。 4.网站文件及数据库导入。 下面详细介绍下每个步骤的操作…...

3D全景视角,足不出户感知真实场景的魅力

近年来,随着科技的快速发展,普通的平面静态视角已经无法满足我们了,不管是视角框架的限制还是片面的环境展示,都不足以让我们深入了解场景环境。随着VR全景技术的日益成熟,3D全景技术的出现为我们提供了全新的视觉体验…...

C编译环境和预处理(非常详细,建议收藏)

C编译环境和预处理(非常详细,建议收藏) 一、程序的翻译环境和执行环境二、 详解编译链接2.1 翻译环境2.2 编译本身的几个阶段符号汇总、符号表、合并段表、符号表的合并和重定位分别是什么? 2.2 运行环境 三、预处理详解3.1 预定义…...

LeetCode669. Trim a Binary Search Tree

文章目录 一、题目二、题解 一、题目 Given the root of a binary search tree and the lowest and highest boundaries as low and high, trim the tree so that all its elements lies in [low, high]. Trimming the tree should not change the relative structure of the …...

YOLOv8优化策略:轻量级Backbone改进 | VanillaNet极简神经网络模型 | 华为诺亚2023

🚀🚀🚀本文改进:一种极简的神经网络模型 VanillaNet,支持vanillanet_5, vanillanet_6, vanillanet_7, vanillanet_8, vanillanet_9, vanillanet_10, vanillanet_11等版本 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,…...

Scade 语言概念 - 方程(equation)

在 Scade 6 程序中自定义算子(Operator)的定义、或数据流定义(data_def)的内容中,包含一种基本的语言结构:方程(equation)(注1)。在本篇中,将叙述 Scade 语言方程的文法形式,以及作用。 注1: 对 Scade 中的 equation, 或 equation…...

Qt(part 2)1、Qwindow(菜单栏,工具栏,状态栏),铆接部件,核心部件 ,2、添加资源文件 3、对话框

1、Qwindow tips:1,首先为什么创建出的对象基本都是指针形式,个人觉得是对象树的原因(自动释放内存),指针来访问成员函数->的形式。2,菜单栏只能一个的,放窗口基本Set&#xff0c…...

Model Context Protocol (MCP) 是一个前沿框架

微软发布了 Model Context Protocol (MCP) 课程:mcp-for-beginners。 Model Context Protocol (MCP) 是一个前沿框架,涵盖 C#、Java、JavaScript、TypeScript 和 Python 等主流编程语言,规范 AI 模型与客户端应用之间的交互。 MCP 课程结构 …...

基于Springboot的宠物领养系统

本系统是一个面向社会的宠物领养平台,旨在帮助流浪宠物找到新家庭,方便用户在线浏览、申请领养宠物,并支持管理员高效管理宠物、公告和用户信息。 技术栈: -后端: Java 8Spring BootSpring MVCMyBatis-PlusMySQL 8R…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1开通指南及使用心得

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站排名top 28。 🏆数年电商行业从业经验,AWS/阿里云资深使用用…...

二进制安全-OpenWrt-uBus

1 需求 需求&#xff1a;ubus list 需求&#xff1a;ubus -v list 需求&#xff1a;ubus -v list zwrt_router.api 2 接口 rootOpenWrt:/# ubus Usage: ubus [<options>] <command> [arguments...] Options:-s <socket>: Set the unix domain …...

leetcode 2434. 使用机器人打印字典序最小的字符串 中等

给你一个字符串 s 和一个机器人&#xff0c;机器人当前有一个空字符串 t 。执行以下操作之一&#xff0c;直到 s 和 t 都变成空字符串&#xff1a; 删除字符串 s 的 第一个 字符&#xff0c;并将该字符给机器人。机器人把这个字符添加到 t 的尾部。删除字符串 t 的 最后一个 字…...

极速互联·智控未来——SG-Can(FD)Hub-600 六通道CANFD集线器

工业通信的全维进化&#xff0c;CANFD高速网络的终极枢纽&#xff01; 核心革新 CANFD协议深度支持&#xff1a;名义波特率5K-1Mbps&#xff0c;数据域速率飙升至5Mbps&#xff08;较传统CAN提升5倍&#xff09;&#xff0c;开启位速率转换最低100Kbps&#xff0c;完美兼容新旧…...

AI问答-vue3+ts+vite:http://www.abc.com:3022/m-abc-pc/#/snow 这样的项目 在服务器怎么部署

为什么记录有子路径项目的部署&#xff0c;因为&#xff0c;通过子路径可以区分项目&#xff0c;那么也就可以实现微前端架构&#xff0c;并且具有独特优势&#xff0c;每个项目都是绝对隔离的。 要将 Vue3 项目&#xff08;如路径为 http://www.abc.com:3022/m-saas-pc/#/sno…...

20250603在荣品的PRO-RK3566开发板的Android13下的使用命令行来查看RK3566的温度【显示优化版本】

20250603在荣品的PRO-RK3566开发板的Android13下的使用命令行来查看RK3566的温度【显示优化版本】 2025/6/3 11:58 RK3566的cpu运行效率 top busybox top rk3566_t:/ # rk3566_t:/ # rk3566_t:/ # cd /sys/class/thermal/ rk3566_t:/sys/class/thermal # ls -l rk3566_t:/sys/c…...