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

公司网站开源源码/磁力岛引擎

公司网站开源源码,磁力岛引擎,在excel中怎么做邮箱网站,wordpress 曹鹏➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你👍点赞、🗂️收藏、加❤️关注哦。 本文章CSDN首发,欢迎转载,要注明出处哦! 先感谢优秀的你能认真的看完本文&…

在这里插入图片描述

➡️博客首页       https://blog.csdn.net/Java_Yangxiaoyuan


       欢迎优秀的你👍点赞、🗂️收藏、加❤️关注哦。


       本文章CSDN首发,欢迎转载,要注明出处哦!


       先感谢优秀的你能认真的看完本文,有问题欢迎评论区交流,都会认真回复!


线程的几种状态,状态之间怎样流转

  • 一、✅典型解析
    • 1.1 ✅线程的优先级对程序的性能有什么影响
    • 1.2 ✅ 线程优先级影响内存使用的原因是什么
    • 1.3 ✅优先级越高,线程越容易被调度到吗
    • 1.4 ✅线程的优先级是根据什么决定的呢
    • 1.5 ✅如何避免线程优先级和内存使用之间的关联
  • 二、✅拓展知识仓
    • 2.1 ✅WAITING和TIMED_WAIT的区别?
    • 2.2 ✅为什么线程没有RUNNING状态


一、✅典型解析


Java中线程的状态分为六种:


  • 初始(NEW): 新创建了一个线程对象,但还没有调用start()方法。
  • 运行(RUNNABLE): Java线程中将就绪 (READY) 和运行中(RUNNING) 两种状态笼统的称为 “ 运行 " 。

就绪(READY): 线程对象创建后,其他线程(比如main线程) 调用了该对象的start0方法。该状态的线程位于可运行线程池中,等待被线程调度选中并分配cpu使用权。

运行中 (RUNNING): 就绪(READY)的线程获得了cpu 时间片,开始执行程序代码。

  • 阻塞(BLOCKED): 表示线程阻塞于锁 (关于锁,在后面章节会介绍) 。
  • 等待(WAITING): 进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)。
  • 超时等待(TIMED WAITING): 该状态不同于WAITING,它可以在指定的时间后自行返回。
  • 终止(TERMINATED): 表示该线程已经执行完毕。

状态流转如图:


在这里插入图片描述


1.1 ✅线程的优先级对程序的性能有什么影响


线程的优先级对程序的性能有很大影响。影响的一些关键点:

  1. 响应速度和吞吐量:优先级较高的线程在多线程环境中通常能够更快地执行任务,从而提高程序的响应速度和吞吐量。这是因为操作系统会为优先级较高的线程分配更多的CPU时间片,使其能够更快地完成任务。
  2. 执行顺序:在多线程编程中,有些任务需要按照一定的顺序执行。通过设置线程的优先级,可以控制线程的执行顺序,从而满足任务的需求。
  3. 避免线程饥饿:如果某个线程的优先级过低,它可能会长时间得不到足够的CPU资源,从而导致线程饥饿现象。使用线程优先级可以避免这种情况,保证程序的稳定性和正确性。

然而,需要注意的是,过度调整线程优先级可能会带来一些问题。例如,如果将某个线程的优先级设置得过高,可能会导致其他线程得不到足够的CPU资源,从而影响它们的性能。此外,不同的操作系统和线程调度器对线程优先级的处理方式可能不同,因此在实际应用中需要考虑到这些因素。


总的来说,合理地设置线程优先级可以帮助提高程序的性能和响应速度,但需要根据实际应用场景和需求进行适当的调整。在某些情况下,使用默认的线程优先级就已经足够好。


Demo:


/**
* @author xinbaobaba
* 使用Java代码来解释线程优先级对程序性能影响的示例
*/public class ThreadPriorityExample {public static void main(String[] args) {// 创建三个线程Thread threadA = new Thread(() -> {for (int i = 0; i < 1000; i++) {System.out.println("Thread A: " + i);}}, "Thread A");Thread threadB = new Thread(() -> {for (int i = 0; i < 1000; i++) {System.out.println("Thread B: " + i);}}, "Thread B");Thread threadC = new Thread(() -> {for (int i = 0; i < 1000; i++) {System.out.println("Thread C: " + i);}}, "Thread C");// 设置线程优先级threadA.setPriority(Thread.MAX_PRIORITY); // 高优先级threadB.setPriority(Thread.NORM_PRIORITY); // 正常优先级threadC.setPriority(Thread.MIN_PRIORITY); // 低优先级// 启动线程threadA.start();threadB.start();threadC.start();}
}

代码解析:创建了三个线程,分别命名为"Thread A"、“Thread B"和"Thread C”。然后,我们为这三个线程设置了不同的优先级:Thread A 是高优先级,Thread B 是正常优先级,Thread C 是低优先级。最后,我们启动这三个线程。


由于线程的优先级不同,它们的执行顺序和执行时间也会有所不同。高优先级的线程会比低优先级的线程更快地执行完毕。因此,程序的性能和响应速度会受到线程优先级的影响。


输出结果可能类似于以下内容:


Thread A: 0
Thread A: 1
Thread A: 2
... (其他 Thread A 的输出)
Thread B: 0
Thread B: 1
Thread B: 2
... (其他 Thread B 的输出)
Thread C: 0
Thread C: 1
Thread C: 2
... (其他 Thread C 的输出)

可以看到,高优先级的 Thread A 先于其他线程执行,然后是正常优先级的 Thread B,最后是低优先级的 Thread C。这是因为操作系统会根据线程的优先级分配CPU时间片,优先级高的线程会获得更多的CPU时间,从而更快地执行任务。这影响了程序的性能和响应速度。


1.2 ✅ 线程优先级影响内存使用的原因是什么


线程优先级影响内存使用的原因在于,线程在执行过程中需要占用内存资源。具体来说,每个线程在执行时都需要分配一定的内存空间,包括栈空间和堆空间等。线程优先级高的线程会获得更多的CPU时间,从而更快地执行任务,这可能导致优先级高的线程在较短的时间内占用了更多的内存资源。


在多线程程序中,如果大量高优先级的线程同时运行,它们可能会迅速地消耗掉可用的内存资源,导致系统频繁地进行内存分配和垃圾回收操作,这不仅会影响程序的性能,还可能引发内存溢出等问题。因此,合理地设置线程优先级,并配合其他并发控制手段,可以有效地管理内存使用,提高程序的稳定性和性能。


Demo:


首先,要理解Java中的线程优先级,你需要了解Java线程调度器的行为。在Java中,线程调度器是一个在操作系统之上的抽象,它决定了哪些线程可以在特定时间运行。每个线程都有一个优先级,优先级决定了线程调度器在选择要运行的线程时的考虑因素。

Java定义了10个不同的优先级,从Thread.MIN_PRIORITY(1)到Thread.MAX_PRIORITY(10)。默认情况下,所有线程的优先级都是Thread.NORM_PRIORITY(5)。

以下是一个简单的Java代码示例,演示如何设置线程优先级:



/**
* @author xinbaobaba
* 如何在Java中使用线程优先级以及如何通过调整线程优先级来影响内存使用
*/
public class ThreadPriorityExample {public static void main(String[] args) {// 创建线程并设置优先级Thread threadA = new Thread(() -> {for (int i = 0; i < 1000; i++) {System.out.println("Thread A: " + i);}});threadA.setPriority(Thread.MAX_PRIORITY); // 设置线程A的优先级为最高Thread threadB = new Thread(() -> {for (int i = 0; i < 1000; i++) {System.out.println("Thread B: " + i);}});threadB.setPriority(Thread.NORM_PRIORITY); // 设置线程B的优先级为正常Thread threadC = new Thread(() -> {for (int i = 0; i < 1000; i++) {System.out.println("Thread C: " + i);}});threadC.setPriority(Thread.MIN_PRIORITY); // 设置线程C的优先级为最低// 启动线程threadA.start();threadB.start();threadC.start();}
}

现在,关于如何通过调整线程优先级来影响内存使用,这里有一些考虑因素:


  1. 堆栈大小:线程的优先级会影响到JVM为其分配的堆栈大小。高优先级的线程通常会获得更大的堆栈空间。如果大量高优先级的线程同时运行,它们可能会消耗掉大量的内存资源。因此,在设置线程优先级时,需要考虑到程序的内存需求和可用内存。
  2. 上下文切换:高优先级的线程更容易获得CPU时间,这意味着它们更频繁地运行和休眠,这可能导致更多的上下文切换。上下文切换需要保存和恢复线程的执行环境,这会增加CPU的负载和内存消耗。因此,不当地设置线程优先级可能会对程序的性能产生负面影响。
  3. 垃圾回收:当一个线程分配了大量的内存空间时,垃圾回收器需要更频繁地运行以回收不再使用的内存。这可能会导致垃圾回收器在高优先级线程活跃时运行得更加频繁,从而影响程序的性能。因此,在设计多线程程序时,应该注意控制内存分配,以减少垃圾回收的频率和影响。

1.3 ✅优先级越高,线程越容易被调度到吗


优先级越高的线程在大多数操作系统中更容易被调度。优先级决定了线程在调度时的优先顺序,优先级高的线程会比优先级低的线程获得更多的CPU时间


注意:优先级高的线程并不一定总是先于低优先级的线程执行。线程调度器会根据调度算法和系统负载等多种因素来决定线程的执行顺序。此外,不同的操作系统和硬件平台可能会有不同的调度行为


因此,虽然优先级高的线程更容易被调度,但并不能保证它们一定先于低优先级的线程执行。在设计程序时,应该避免过度依赖线程优先级来优化性能,而是应该综合考虑代码设计、数据结构和算法优化、同步机制等方面的因素。


Demo:


import java.util.concurrent.*;/**
* @author xinbaobaba
* 如何使用Java的并发工具和内存管理机制来优化内存使用和程序性能
*/
public class ComplexThreadPriorityExample {public static void main(String[] args) {// 创建一个固定大小的线程池ExecutorService executor = Executors.newFixedThreadPool(3);// 创建任务并提交到线程池执行Future<?> futureA = executor.submit(() -> {// 模拟内存密集型任务for (int i = 0; i < 1000; i++) {System.out.println("Task A: " + i);}});Future<?> futureB = executor.submit(() -> {// 模拟CPU密集型任务int sum = 0;for (int i = 0; i < 100000; i++) {sum += i; // 模拟CPU密集型计算任务}System.out.println("Task B: " + sum);});Future<?> futureC = executor.submit(() -> {// 模拟I/O密集型任务try {Thread.sleep(5000); // 休眠5秒,模拟I/O密集型任务等待时间} catch (InterruptedException e) {e.printStackTrace();}System.out.println("Task C: Completed");});// 获取任务的执行结果(如果需要)try {System.out.println("Task A result: " + futureA.get()); // 等待任务A执行完成并获取结果(如果有返回值)System.out.println("Task B result: " + futureB.get()); // 等待任务B执行完成并获取结果(如果有返回值)System.out.println("Task C result: " + futureC.get()); // 等待任务C执行完成并获取结果(如果有返回值)} catch (InterruptedException | ExecutionException e) {e.printStackTrace();} finally {// 关闭线程池,释放资源executor.shutdown();}}
}

代码解析:使用了Java的ExecutorService来创建固定大小的线程池,并提交任务到线程池执行。这样可以更好地管理线程的执行,避免线程过多导致资源竞争和内存问题。每个任务模拟了不同类型的任务:内存密集型、CPU密集型和I/O密集型。通过合理地组织任务的执行顺序和利用线程池,我们可以优化内存使用和程序性能。


1.4 ✅线程的优先级是根据什么决定的呢


线程的优先级是根据多种因素决定的,其中一些因素包括线程的属性、任务紧急程度、线程的执行历史记录等。在Java中,线程优先级是一个从1到10的整数,其中1是最低优先级,10是最高优先级。默认情况下,线程的优先级为5。线程优先级是调度程序选择运行哪个线程的一个关键因素。调度程序会根据优先级、任务的紧急程度和其他因素来决定线程的执行顺序。高优先级的线程通常会更有可能获得CPU时间,而低优先级的线程可能会被调度程序推迟执行。需要注意的是,线程优先级并不能保证线程的执行顺序,因为线程的执行还受到其他因素的影响,如系统负载、其他线程的执行情况等。


1.5 ✅如何避免线程优先级和内存使用之间的关联


为了避免线程优先级和内存使用之间的关联,可以采取以下措施:


  1. 合理设置线程优先级:不要过度依赖线程优先级来优化性能。优先级高的线程可能会获得更多的CPU时间,但并不意味着它可以更有效地使用内存。相反,过度调整线程优先级可能会导致线程调度的不稳定和其他问题。
  2. 使用适当的同步机制:当多个线程访问和修改共享资源时,需要使用适当的同步机制(如互斥锁、条件变量等)来避免死锁和资源竞争。这样可以确保线程安全地访问内存,并减少不必要的内存占用。
  3. 优化数据结构和算法:通过优化数据结构和算法,可以减少线程对内存的需求。例如,使用更高效的数据结构、减少不必要的内存分配等。
  4. 使用内存管理工具:使用操作系统提供的内存管理工具来监控和分析内存使用情况。这可以帮助你识别和解决内存泄漏、过度分配等问题。
  5. 编写良好的并发代码:编写高质量的并发代码可以减少线程间的竞争和同步问题,从而降低内存使用的风险。遵循最佳实践,如避免数据竞态条件、正确使用锁等。
  6. 测试和性能分析:通过测试和性能分析来评估线程优先级和内存使用之间的关系。通过收集性能数据并进行分析,可以找到潜在的性能瓶颈和内存问题,并采取相应的优化措施。

总之,避免线程优先级和内存使用之间的关联需要综合考虑多个方面,包括代码设计、同步机制、数据结构和算法优化等。通过合理的编程实践和性能分析,可以有效地管理内存并提高程序的性能。


Demo:


当涉及到线程优先级和内存使用之间的关联时,Java 提供了丰富的并发编程工具和内存管理机制。



/**
* @author xinbaobaba
* 使用Java代码来解释如何避免线程优先级和内存使用之间关联
*/
public class ThreadPriorityExample {public static void main(String[] args) {// 创建三个线程Thread threadA = new Thread(() -> {for (int i = 0; i < 1000; i++) {// 模拟内存密集型任务System.out.println("Thread A: " + i);try {Thread.sleep(100); // 休眠100毫秒,模拟内存密集型任务} catch (InterruptedException e) {e.printStackTrace();}}}, "Thread A");Thread threadB = new Thread(() -> {for (int i = 0; i < 1000; i++) {// 模拟CPU密集型任务System.out.println("Thread B: " + i);int sum = 0;for (int j = 0; j < 10000; j++) {sum += j; // 模拟CPU密集型计算任务}}}, "Thread B");Thread threadC = new Thread(() -> {for (int i = 0; i < 1000; i++) {// 模拟I/O密集型任务System.out.println("Thread C: " + i);try {Thread.sleep(500); // 休眠500毫秒,模拟I/O密集型任务} catch (InterruptedException e) {e.printStackTrace();}}}, "Thread C");// 设置线程优先级(但Java不推荐设置线程优先级)// threadA.setPriority(Thread.MAX_PRIORITY); // 高优先级// threadB.setPriority(Thread.NORM_PRIORITY); // 正常优先级// threadC.setPriority(Thread.MIN_PRIORITY); // 低优先级// 启动线程(使用Executor框架)ExecutorService executor = Executors.newFixedThreadPool(3); // 创建固定大小的线程池executor.execute(threadA); // 提交线程任务到线程池执行executor.execute(threadB);executor.execute(threadC);executor.shutdown(); // 关闭线程池,等待所有任务执行完毕}
}

代码解析:创建了三个线程:Thread A、Thread B 和 Thread C,分别模拟内存密集型、CPU密集型和I/O密集型任务。我们没有设置线程优先级,而是使用了Java的Executor框架来管理线程的执行。通过这种方式,我们避免了直接设置线程优先级,而是通过合理地组织任务的执行顺序和利用线程池来优化内存使用。


注意:Java并不推荐直接设置线程优先级,因为不同的JVM实现和操作系统可能会有不同的行为。相反,推荐使用Java提供的并发工具和内存管理机制来优化内存使用和程序性能


二、✅拓展知识仓


2.1 ✅WAITING和TIMED_WAIT的区别?


WAITING是等待状态,在Java中,调用wait方法时,线程会进入到WAITING状态,而TIMED_WAITING是超时等待状态,当线程执行sleep方法时,线程会进入TIMED_WAIT状态


处于WAITING和TIMED_WAIT的线程,都是会让出CPU的,这时候其他线程就可以获得CPU时间片开始执行。但是他们在对象的锁释放上面并不一样,如果加了锁,sleep方法不会释放对象上的锁,而wait方法是会释放锁的。


因为Java锁的目标是对象,所以wait、notifv和notifyAll针对的目标都是对象,所以把他们定义在Object类中。而sleep不需要释放锁,所以他是Thread类中的一人方法。


2.2 ✅为什么线程没有RUNNING状态


对于现在的分时操作系统来说,在单CPU情况下,所有的线程其实都是串行执行的。但是为了让我们看起来像是在并发执行,人们把CPU的执行分成很多个小的时间片。


哪个线程得到时间片,那个线程就执行,时间片到了之后,就要释放出CPU,再重新进行争抢时间片。


只要把时间片划分的足够细,那么多个程序虽然在不断的串行执行,但是看起来也像是在同时执行样。


在这里插入图片描述

那么,CPU的时间片其实是很短的,一般也就是10-20毫秒左右。


那么,也就是说,在一秒钟之内,同一个线程可能一部分时间处于READY状态、一部分时间处于RUNNING状态。


那么如果,明确的给线程定义出RUNNING状态的话,有一个很大的问题,就是这个状态其实是不准的。


因为当我们看到线程是RUNNING状态的时候,很有可能他已经丢失了CPU时间片了。


对于线程的状态,我们只需要知道,他当前有没有在"正在参与执行"就行了,何为"参与执行"?


就是他的状态是可执行的,只要获得时间片,就能立即执行。


那这不就是RUNNABLE吗?


所以,Java就没有给线程定义RUNNING状态,而是定义了一个RUNNABLE状态


相关文章:

【昕宝爸爸小模块】线程的几种状态,状态之间怎样流转

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你&#x1f44d;点赞、&#x1f5c2;️收藏、加❤️关注哦。 本文章CSDN首发&#xff0c;欢迎转载&#xff0c;要注明出处哦&#xff01; 先感谢优秀的你能认真的看完本文&…...

ChatGPT网站小蜜蜂AI更新了

ChatGPT网站小蜜蜂AI更新了 前阶段郭震兄弟刚开发小蜜蜂AI网站的的时候&#xff0c;写了一篇关于ChatGPT的网站小蜜蜂AI的博文[https://blog.csdn.net/weixin_41905135/article/details/135297581?spm1001.2014.3001.5501]。今天听说小蜜蜂网站又增加了新的功能——在线生成思…...

瑞_Java开发手册_(二)异常日志

文章目录 异常日志的意义(一) 错误码(二) 异常处理(三) 日志规约附&#xff1a;错误码列表 &#x1f64a;前言&#xff1a;本文章为瑞_系列专栏之《Java开发手册》的异常日志篇&#xff0c;本篇章主要介绍异常日志的错误码、异常处理、日志规约。由于博主是从阿里的《Java开发手…...

Elasticsearch:Search tutorial - 使用 Python 进行搜索 (四)

在本节中&#xff0c;你将了解另一种机器学习搜索方法&#xff0c;该方法利用 Elastic Learned Sparse EncodeR 模型或 ELSER&#xff0c;这是一种由 Elastic 训练来执行语义搜索的自然语言处理模型。这是继之前的文章 “Elasticsearch&#xff1a;Search tutorial - 使用 Pyth…...

Python之Matplotlib绘图调节清晰度

Python之Matplotlib绘图调节清晰度 文章目录 Python之Matplotlib绘图调节清晰度引言解决方案dpi是什么&#xff1f;效果展示总结 引言 使用python中的matplotlib.pyplot绘图的时候&#xff0c;如果将图片显示出来&#xff0c;或者另存为图片&#xff0c;常常会出现清晰度不够的…...

pygame.error: video system not initialized

错误处理方式&#xff1a; pygame.init() 增加此行...

java面试题2024

前言 准备换工作了&#xff0c;给自己定个目标&#xff0c;每天至少整理出一道面试题。题型会比较随机&#xff0c;感觉这样更容易随机到面试官要问的东西。整理时我会把我认为正确的回答写出来&#xff0c;比较复杂的也尽量把原理贴出来&#xff0c;争取做到无论为了应付面试&…...

配置git服务器

第一步&#xff1a; jdk环境配置 &#xff08;1&#xff09;搜索【高级系统设置】&#xff0c;选择【高级】选项卡&#xff0c;点【环境变量】 &#xff08;2&#xff09;在【系统变量】里面&#xff0c;点击【新建】 &#xff08;3&#xff09;添加JAVA_HOME环境变量JAVA_HO…...

vue3环境下,三方组件中使用echarts,无法显示问题

问题描述&#xff1a; vue3中&#xff0c;使用了三方组件primevue的侧边栏Sidebar&#xff0c;在其中注册echarts dom节点&#xff0c;无法显示&#xff0c;提示dom不存在 问题分析&#xff1a; 使用原生div&#xff0c;通过document.getElementById()&#xff0c;将echarts…...

FAST OS DOCKER 可视化Docker管理工具

介绍 FAST OS DOCKER 界面直观、简洁&#xff0c;非常适合新手使用&#xff0c;方便大家轻松上手 docker部署运行各类有趣的容器应用&#xff0c;同时 FAST OS DOCKER 为防止服务器负载过高&#xff0c;进行了底层性能优化&#xff1b;其以服务器安全为基础&#xff0c;对其进…...

MOJO基础语法

文章目录 打印变量及方法声明结构体python集成 打印 print("Hello Mojo!")变量及方法声明 变量&#xff1a; 使用’ var ‘创建一个可变的值&#xff0c;或者用’ let 创建一个不可变的值。 方法&#xff1a; 方法可以使用python中的def 方法声明&#xff0c;也引…...

java基础之IO流之字符流

字符流 传输char和String类型的数据 输入流 抽象父类&#xff1a;Reader 节点流&#xff1a;FileReader 常用方法 int read()&#xff1a;读取一个字符&#xff0c;读取到达末尾&#xff0c;返回-1 package com.by.test2; ​ import java.io.FileNotFoundException; import…...

chromium通信系统-ipcz系统(十一)-mojo binding

关于mojo binding的官方文档为mojo docs。 由于比较复杂&#xff0c;这里只做简单源码分析。 我们知道要实现rpc&#xff0c;必须实现客户端和服务端。 mojo 实现了一套领域语言&#xff0c;通过领域语言描述接口和数据&#xff0c; 再通过特有编译器编译成c代码。 这个过程会…...

鸿蒙开发基础-Web组件之cookie操作

使用ArkTS语言实现一个简单的免登录过程&#xff0c;向大家介绍基本的cookie管理操作。主要包含以下功能&#xff1a; 获取指定url对应的cookie的值。设置cookie。清除所有cookie。免登录访问账户中心。 cookie读写操作 首次打开应用时&#xff0c;应用首页的Web组件内呈现的…...

什么是k8s和声明式编程?

认识k8s之后&#xff0c;他的操作模式对我来说是一种很不错的体验。他提供了更接近现实世界的面向对象接口。 什么是k8s&#xff1f; Kubernetes&#xff08;K8s&#xff09;是一种开源容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。它简化了容器化应用…...

Fluids —— MicroSolvers DOP

目录 Gas SubStep —— 重复执行对应的子步 Switch Solver —— 切换解算器 Gas Attribute Swap —— 交换、复制或移动几何体属性 Gas Intermittent Solve —— 固定时间间隔计算子解算器 Gas External Forces —— 计算外部力并更新速度或速度场 Gas Particle Separate…...

工业智能网关:HiWoo Box远程采集设备数据

工业智能网关&#xff1a;HiWoo Box远程采集设备数据 在工业4.0和智能制造的浪潮下&#xff0c;工业互联网已成为推动产业升级、提升生产效率的关键。而在这其中&#xff0c;工业智能网关扮演着至关重要的角色。今天&#xff0c;我们就来深入探讨一下工业智能网关。 一、什么…...

Apollo之原理和使用讲解

文章目录 1 Apollo1.1 简介1.1.1 背景1.1.2 简介1.1.3 特点 1.2 基础模型1.3 Apollo 四个维度1.3.1 application1.3.2 environment1.3.3 cluster1.3.4 namespace 1.4 本地缓存1.5 客户端设计1.5.1 客服端拉取原理1.5.2 配置更新推送实现 1.6 总体设计1.7 可用性考虑 2 操作使用…...

魅族MX4pro系统升级、降级

网上的教程都是按住开机键音量上或者下键&#xff0c;但是我按了没用&#xff0c;还是直接点击压缩包管用。 下载系统 官网地址&#xff08;所有手机固件&#xff09;&#xff1a;https://flyme.cn/firmware.html 官方魅族mx4Pro系统&#xff1a;https://flyme.cn/firmwarelis…...

【Docker】快速入门之Docker的安装及使用

一、引言 1、什么是Docker Docker是一个开源的应用容器引擎&#xff0c;它让开发者可以将他们的应用及其依赖打包到一个可移植的镜像中&#xff0c;然后发布到任何流行的Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之…...

记录汇川:H5U于Factory IO测试13

主程序&#xff1a; 子程序&#xff1a; IO映射 子程序&#xff1a; 辅助出料 子程序&#xff1a; 模式选择 子程序&#xff1a; 示教程序 子程序&#xff1a; 手动程序 子程序&#xff1a; 统计程序 子程序&#xff1a; 异常报警 子程序&#xff1a; 自动程序&#xff1a; F…...

PYTHON通过跳板机巡检CENTOS的简单实现

实现的细节和引用的文件和以前博客记录的基本一致 https://shaka.blog.csdn.net/article/details/106927633 差别在于,这次是通过跳板机登陆获取的主机信息,只记录差异的部份 1.需要在跳板机相应的路径放置PYTHON的脚本resc.py resc.py这个脚本中有引用的文件(pm.sh,diskpn…...

网络配置以及命令详解

传统linux中,网络接口为eth0,eth1,eth2,..... RHEL 7以上版本默认命名是基于分配上的固定名称,ens33 接口类型: en:以太网有线接口 wl:无线局域网接口 ww:无线广域网 dmesg:显示开机信息 适配器类型: s:热插拔插槽 o:板载 p:pci类型 ifconfig ens160(命令行配置,临时生效):查…...

商务外语MR混合现实仿真情景实训教学

MR混合现实技术是一种将虚拟世界与真实世界相结合的技术。通过MR设备&#xff0c;我们可以将虚拟的场景、人物、物品等元素实时地呈现在真实的环境中&#xff0c;实现真实与虚拟的完美融合。在商务外语的实训教学中&#xff0c;MR技术可以为我们提供丰富的场景资源&#xff0c;…...

牛客周赛 Round 28 解题报告 | 珂学家 | 组合数学 + 离散化树状数组

前言 整体评价 还是E稍微有点意思&#xff0c;新周赛好像比预期要简单一些, _. 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 小红的新周赛 思路: 模拟 #include <bits/stdc.h>using namespace std;int main() {int res 0;for (int i 0; i < 6; i…...

Python系列(3)—— 变量

变量 一、变量命名规范二、变量赋值三、变量的数据类型四、变量的作用域五、变量类型转换 Python编程中&#xff0c;变量是存储数据的容器。它们用于存储各种数据类型&#xff0c;如整数、浮点数、字符串、列表、字典等。理解变量及其工作原理是Python编程的基础。 一、变量命…...

Java 并发性和多线程2

四、如何创建并运行 java 线程 Java 线程类也是一个 object 类&#xff0c;它的实例都继承自 java.lang.Thread 或其子类。 可以用如下方式用 java 中创建一个线程&#xff1a; Tread thread new Thread(); 执行该线程可以调用该线程的 start()方法: thread.start(); 在上…...

最新消息:OpenAI GPT Store 正式上线,GPTs 应用商店来了!

原文链接 https://openaigptguide.com/gpt-store-and-chatgpt-team/ OpenAI推出的两款新产品和服务&#xff1a;GPT Store和ChatGPT Team&#xff0c;提供了许多全新的解决方案和功能&#xff0c;旨在帮助用户更轻松地使用和构建GPT工具&#xff0c;同时也增加了公司的收入来源…...

memory泄露分析方法(java篇)

#memory泄露主要分为java和native 2种&#xff0c;本文主要介绍java# 测试每天从monkey中筛选出内存超标的app&#xff0c;提单流转到我 首先&#xff0c;辨别内存泄露类型&#xff08;java&#xff0c;还是native&#xff09; 从采到的dumpsys_meminfo_pid看java heap&…...

kubectlkubeletrancherhelmkubeadm这几个命令行工具是什么关系?

背景 在最近学习k8s的过程中&#xff0c;发现kubectl&kubelet&rancher&helm&kubeadm这几个命令怎么在交错使用&#xff0c;他们究竟是什么关系&#xff1f;他们分别应该在什么情况下使用呢&#xff1f;这里我进行了简单的总结&#xff0c;做个区分。 各工具说…...