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

JAVA EE_多线程-初阶(一)

1.认识线程

1.1概念

1)线程是什么

        线程是在进程内部中进行运行的,可以把它想成一个“执行流“,每个线程负责执行线程内的部分代码,多个线程之间可以”同时“执行多个代码。

        “同时”:指并行,采用分时复用,并不是真正意义上的同时,而是他一会运行a线程,一会运行b线程,只是运行的速度过快,让人觉的a和b是在同时运行。

         我们可以先把进程理解为一个医院的门诊部,而门诊部是一个大类,这里面又有多个门诊,例如:内科门诊,外科门诊,妇科门诊,如果让张三一个人来做是负责不过来的,所以张三叫来了李四,王五,一个人负责一个门诊,这样就大大提高了效率。

         而张三,李四,王五就是线程,即多线程,其中张三是主线程,因为李四线程和王五线程是由张三线程叫来的。

2)线程的作用

        a.如果一个cpu想要提高效率,那么就需要多核cpu,而并发编程能够充分利用多核cpu。

        b.进程虽然也能实现并发编程,但是线程比进程更轻量

                 a) 创建线程比创建进程跟快

                 b) 删除线程比删除进程更快

                 c) 调度线程比调度进程更快

3)进程和线程的区别

        a.进程包含线程,每个进程内至少有一个线程

        b.不同的进程不在一个空间内,但一个进程内的不同线程都在一个空间内

            依然是用门诊部来举例,虽然张三 李四 王五,三个线程在门诊部的不同门诊工作,但是都隶属于门诊部,负责的也都是患者的初步诊断,然后转给其他科室。

           一个重伤的患者进入医院会由急诊部这进程来直接接收,不会交到门诊部这个线程;

           一个普通患者来医院做检查会由门诊部这个进程做初检,不会交到急诊部这个线程。

       c.一个进程出现问题不会影响到别的进程,但一个进程内的一个线程出问题可能会影响到同一个进程的线程(或者导致整个进程奔溃)。

           例如有一天门诊部很忙,但这时张三因为高强度的工作累倒了,不能工作了,这个时候张三线程负责的任务就没人来执行,而这个门诊又堆满了人,要检查的人卡在了这个部门,越来越多,如果有其他医生来帮忙还能解决,但是如果没有,那么这就像一段代码卡在这运行不了,最后越积越多,直至崩溃。

        

4)JAVA的线程和操作系统线程的关系

        a.线程是操作系统中的概念,操作系统内容实现了线程的概念。

        

        b.JAVA中的Thread可以视为对线程的进一步的抽象和分封装

1.2 创建线程

1)继承Thread类

package thread;
//自定义线程类继承Thread类
public class text1 {//自定义线程类继承Thread类public static class MyThread1 extends Thread{@Overridepublic void run(){//打印10次for(int i=0;i<10;i++){System.out.println("继承Thread的线程");}//每隔一秒打印一次//因为该写法可能会抛异常,所以需要 try和catch联合使用try {Thread.sleep(1000); }catch(InterruptedException e){e.printStackTrace();   } }}   public static void main(String[] args) {//实例化对象MyThread1 t = new MyThread1();//启动线程t.start();}
}

2) 实现Runnable接口

package thread;
//自定义实现Runnable接口的线程    
public class text2 {public static class MyRunnable1 implements Runnable {@Overridepublic void run(){//打印for(int i=0;i<10;i++){System.out.println("实现Runnable接口的线程");}//每隔一秒打印一次try{Thread.sleep(1000);}catch(InterruptedException e){e.printStackTrace(); }}}public static void main(String[] args) {//创建线程MyRunnable1 myRunnable1=new MyRunnable1();Thread t1=new Thread(myRunnable1);//启动线程t1.start();}}

3)Lambda表达式

  • Lambda为最常用的创建线程方式
package thread;
public class text3 {public static void main(String[] args) {// 创建Lambda线程实例Thread t=new Thread(()->{for(int i=0;i<10;i++){System.out.println("Lambda线程");}});//启动线程t.start();}
}

1.3)多线程的优势

  • 提高速率        

2.Thread类及常见方法

2.1 Thread的常见构造方法

Thread()创建线程对象
Thread(Runnable runnable)利用Runnable对象创建线程对象
Thread(String name)创建线程对象并命名
Thread(Runnable runnable  String name)利用Runnable对象创建线程对象并命名
  1.  Thread t1=new Thread();
  2.  Thread t2 =new Thread(new Runnable());
  3.  Thread t3=new Thread("名字");
  4.  Thread t4=new Thread(new Runnable(),"名字");

2.2 Thread的几个常见属性

IDgetId()

名称

getName()
状态getState()
优先级        getPriority()
是否为后台程序isDaemon()
是否存活isAlive()
是否被中断isInterrupted()
//Thread的常见属性简介
package thread;
public class text12 {public static void main(String[] args) {//创建线程Thread t=new Thread(()->{System.out.println("线程");});//取得当前的线程idSystem.out.println("id:  "+ t.getId()); //23//取得当前线程的名称 因为我们没有为线程初始命名 所以系统会自动分配一个名称System.out.println("name:  "+ t.getName()); //Thread-0//取得当前线程的状态 System.out.println("state:  "+ t.getState());; //NEW//取得当前线程的优先级//java线程的优先级范围为1-10 //1最低 10最高 //默认情况下,线程的优先级为5System.out.println("priority:  "+ t.getPriority()); //5//取得当前线程是否为后台程序//前台程序:就是我们当前我们所创建的线程//后台程序:在我们看不到的地方,系统自己会有多线程运行System.out.println("daemon:  "+ t.isDaemon());//取得当前线程是否存活//如果当前的线程没有启动,则显示不存活为false//如果当前的线程启动了,则显示存活为trueSystem.out.println("运行线程前的live:  "+ t.isAlive()); // falset.start();System.out.println("运行线程后的live:  "+ t.isAlive()); //true//取得当前线程是否被中断的信息System.out.println("interrupted:  "+ t.isInterrupted()); //false}
}

2.3 启动一个线程—start()

        前面我们已经使用了复写一个run方法来创建Thread对象,但创建了并不代表线程开始运行了。

  • 我们使用run方法是为了给一个指令让该线程做什么;
  • 线程对象可以把其他线程叫了过来;
  • 而调用start()方法则是正在让线程运行起来;

调用start()方法才是真正的在操作系统中创建了一个线程出来。

2.4 中断一个线程

       中断就如字面意思,就比如当我们正在做一道题目的时候,发现写错题目了,这个时候我们就要停止了,而线程中的中断则是让一段代码停下来

        方法1:自定义变量

package thread;
public class class13 {//自定义flag变量public static boolean flag=true;public static void main(String[] args)  throws InterruptedException {Thread t=new Thread(()->{//flag为true时,循环打印线程while(flag){System.out.println("线程");}try{Thread.sleep(1000);}catch(InterruptedException e){e.printStackTrace();  }});t.start();System.out.println("线程结束前");Thread.sleep(2000);//将falg变为false 结束线程flag=false;System.out.println("结束线程");}
}

        方法2:使用Thread自带方法interrupted()

package thread;
public class class14 {public static void main(String[] args) throws InterruptedException {Thread t=new Thread(()->{//isInterrupted() 是判断是否被中断//currentThread() 是取得当前Thread的应用//因为在lambad表达式中isInterrupted() 是在new Thread之前就实现了//所以我们需要将两个方法搭配使用while(!Thread.currentThread().isInterrupted()){System.out.println("线程");}});System.out.println("线程开始前");t.start();Thread.sleep(1000);t.interrupt();System.out.println("线程终止");}
}

当在lanmbad表达式中使用的sleep时,main方法中的t.interrupt会提前唤醒sleep导致程序报错,我们可以把它分为三种情况。

a.直接停止

b.不管你

c.我先把事做完在停止

具体情况是程序员根据实际情况法运行。

2.5 等待一个线程—join()

        有两段线程时,如果我们想让其中的一段代码先运行,那么就需要用到join()方法。

   假设有t1和t2两段线程,如果我们想让t1先运行完,

   那么我们就可以对t1使用join()方法,让t2成为等的那一方,t1成为被等的一方 

   反之我们想让t2先运行

   那么我们就可以对t2使用join()方法,让t1成为等的那一方,t2成为被等的一方   

package thread;
public class text {public static void main(String[] args) throws InterruptedException {Thread t1=new Thread(()->{for(int i=0;i<5;i++){System.out.println("线程t1");}});Thread t2=new Thread(()->{for(int i=0;i<5;i++){System.out.println("线程t2");}});t1.start();t2.start();t1.join();//等待t1线程执行完}
}   

2.6 获取当前线程的引用

返回当前线程的引用currentThread()
package thread;
public class text17 {public static void main(String[] args) {//获取当前线程对象Thread t=Thread.currentThread();//获取线程名称System.out.println(t.getName());}
}

2.7 休眠当前的线程

Thread.sleep()让当前线程进入休眠状态
  • 休眠的本质是让线程的状态变为”堵塞“
  • 此线程就参与cpu的调度
  • 直到时间到,该线程恢复于就绪状态(不是立即执行),才能参与cpu调度

3.线程的状态

3.1 观察线程的所有状态

        线程的状态是枚举类型的Thread.State

  1. //获取线程的各类状态
  2. public static void main(String[] args) {
  3.         for(Thread.State state : Thread.State.values()){
  4.             System.out.println(state);
  5.         }
  6.  }
NEW还没开始工作的状态
RUNNABLE可工作状态 可分为正在工作或准备工作
BLOCKED等待状态(被上锁)
WAITING等待状态
TIMED_WAITING等待状态(有时间限定)
TERMINATED工作完成状态

3.2 线程状态和状态转移的意义

相关文章:

JAVA EE_多线程-初阶(一)

1.认识线程 1.1概念 1&#xff09;线程是什么 线程是在进程内部中进行运行的&#xff0c;可以把它想成一个“执行流“&#xff0c;每个线程负责执行线程内的部分代码&#xff0c;多个线程之间可以”同时“执行多个代码。 “同时”&#xff1a;指并行&#xff0c;采用分时复用…...

批量优化与压缩 PPT,减少 PPT 文件的大小

我们经常能够看到有些 PPT 文档明明没有多少内容&#xff0c;但是却占用了很大的空间&#xff0c;存储和传输非常的不方便&#xff0c;这时候通常是因为我们插入了一些图片/字体等资源文件&#xff0c;这些都可能会导致我们的 PPT 文档变得非常的庞大&#xff0c;今天就给大家介…...

AI 的“幻觉”现象:深入解析 Hallucination 的成因与应对之道

文章目录 一、啥是 AI 的 Hallucination&#xff1f;二、啥时候容易出现幻觉&#xff1f;1. 知识边界之外的问题2. 模糊或不明确的输入3. 生成长篇内容4. 多模态任务中的误解5. 过度自信的语气要求 三、幻觉为啥会出现&#xff1f;原理是啥&#xff1f;1. 概率预测的本质2. 训练…...

加载huggingface数据集报token无效错误解决方案

加载huggingface数据集报错 import pandas as pddf pd.read_json("hf://datasets/udell-lab/NLP4LP/data/test.jsonl", linesTrue) print(df)PS C:\Users\pengkangzhen\PythonProjects\llm-ecr> & C:/Users/pengkangzhen/.conda/envs/py3.12_ml/python.exe …...

Java面试题及知识点Day1

自动拆箱和自动装箱 装箱就是自动将基本数据类型转换为包装器类型 拆箱就是自动将包装其类型转化为基本数据类型 重写和重载 重写 1.发生在子类和父类之间 2.参数的方法名&#xff0c;参数&#xff0c;返回值&#xff0c;必须相同 3.权限修饰符不能小于重写方法的权限修饰符…...

【动态规划】-- 三步问题(easy)

文章目录 1. 题目2. 题目解析3. 代码 1. 题目 在线oj 三步问题。有个小孩正在上楼梯&#xff0c;楼梯有 n 阶台阶&#xff0c;小孩一次可以上 1 阶、2 阶或 3 阶。实现一种方法&#xff0c;计算小孩有多少种上楼梯的方式。结果可能很大&#xff0c;你需要对结果模 1000000007。…...

字符流Reader/Writer

一、Reader相关介绍及其子类 Reader是所有字符输入流的超类。它提供了读取字符流的基本方法&#xff0c;如read(), read(char[] cbuf, int off, int len)等&#xff1b;由于Reader是抽象类&#xff0c;通常使用它的子类如FileReader, BufferedReader等来创建字符输入流对象。 …...

字符串交替合并问题

问题&#xff1a; 给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。 示例 1&#xff1a; 输入&#xff1a;w…...

shell脚本一键安装docker+docker-compose,支持x86_64、arm64双架构

目录 脚本内容 运行效果 安装包和脚本 脚本内容 [roottest1 docker]# cat install.sh #!/bin/bash set -e export pathpwd export docker_data"/data/docker_data"function check_arch() {if [ -f /etc/redhat-release ]; thenOS"RedHat"elif [ -f /e…...

Elasticsearch 面试备战指南

Elasticsearch 面试备战指南 一、基础概念 什么是Elasticsearch&#xff1f; Elasticsearch是一个基于Lucene的分布式搜索和分析引擎&#xff0c;提供近实时搜索、高可用性和水平扩展能力。常用于日志分析&#xff08;ELK&#xff09;、全文检索、商业智能等场景。 Elasticsea…...

新手村:逻辑回归-理解04:熵是什么?

新手村&#xff1a;逻辑回归04&#xff1a;熵是什么? 熵是什么? 前置条件 在开始学习逻辑回归中的熵理论之前&#xff0c;需要掌握以下基础知识&#xff1a; 概率论与统计学&#xff1a; 概率分布&#xff08;如伯努利分布、正态分布&#xff09;。条件概率和贝叶斯定理。期…...

Javaweb后端登录会话技术jwt令牌

jwt生成与校验 是base4补位的 最后面是签名&#xff0c;签名不是base64&#xff0c;是通过签名算法加密后来的 令牌长度不是固定的&#xff0c;长度取决于原始内容&#xff0c;载荷&#xff0c;大小 头有&#xff0c;类型&#xff0c;签名算法 base64可以对任意的二进制数据进…...

图像对比分析并生成报告

pip install pyautogui """ 图像对比分析工具 功能&#xff1a;实现像素级差异、结构相似性(SSIM)、直方图相似度和特征匹配率四种对比方法 作者&#xff1a;智能助手 版本&#xff1a;1.2 日期&#xff1a;2025-02-27""" import os import cv2 …...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例1,TableView16_01.vue 基础行拖拽排序示例

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例1,TableView16_01.vu…...

vue-如何将组件内容作为图片生成-html2canvas

1.引入必要的库 这里呢我们使用 html2canvas 库来将 HTML 元素转换为画布&#xff08;canvas&#xff09;&#xff0c;然后再将其导出为图片。首先&#xff0c;确保在项目中安装了 html2canvas&#xff1a; npm install html2canvas 2. 组件结构 然后在我们的vue文件里面&a…...

单片机 - RAM 与内存、ROM 与硬盘 之间的详细对比总结

RAM 与 内存 RAM&#xff08;Random Access Memory&#xff0c;随机存取存储器&#xff09; 和 内存 这两个术语通常是 同义词&#xff0c;即 内存 常常指的就是 RAM。 1. RAM&#xff08;内存&#xff09; 定义&#xff1a;RAM 是计算机中的 主存储器&#xff0c;用于临时存…...

Linux 练习一 NFS和DNS

练习四 任务需求&#xff1a;客户端通过访问 www.nihao.com 后&#xff0c;能够通过 dns 域名解析&#xff0c;访问到 nginx 服务中由 nfs 共享的首页文件&#xff0c;内容为&#xff1a;Very good, you have successfully set up the system. 各个主机能够实现时间同步&#…...

aab 转 apk

googleplay发布的游戏对外前&#xff0c;测试同学要安装到手机上先行测试&#xff0c;所以就有了这个需求。网上找了一篇文章讲的很详细了&#xff0c;文档是英语的&#xff0c;这里摘抄重要的部分做下记录&#xff1a; https://www.geekdashboard.com/extract-apk-files-from…...

JAVA开发:实例成员与静态成员

判断Java中的实例成员与静态成员 在Java中&#xff0c;可以通过以下几种方式判断一个成员是实例成员还是静态成员&#xff1a; 1. 通过声明方式判断 静态成员使用static关键字修饰&#xff0c;实例成员不使用&#xff1a; public class MyClass {// 实例成员int instanceVa…...

DeepSeek面试——模型架构和主要创新点

本文将介绍DeepSeek的模型架构多头潜在注意力&#xff08;MLA&#xff09;技术&#xff0c;混合专家&#xff08;MoE&#xff09;架构&#xff0c; 无辅助损失负载均衡技术&#xff0c;多Token 预测&#xff08;MTP&#xff09;策略。 一、模型架构 DeepSeek-R1的基本架构沿用…...

[项目]基于FreeRTOS的STM32四轴飞行器: 十二.角速度加速度滤波

基于FreeRTOS的STM32四轴飞行器: 十二.滤波 一.滤波介绍二.对角速度进行一阶低通滤波三.对加速度进行卡尔曼滤波 一.滤波介绍 模拟信号滤波&#xff1a; 最常用的滤波方法可以在信号和地之间并联一个电容&#xff0c;因为电容通交隔直&#xff0c;信号突变会给电容充电&#x…...

《基于SpringBoot的图书网购平台的设计与实现》开题报告

个人主页&#xff1a;大数据蟒行探索者 一、选题的依据及意义 1.1选题来源 市场需求驱动&#xff1a;如今&#xff0c;互联网深度融入人们生活&#xff0c;阅读场景愈发多元化&#xff0c;线上购书成为主流趋势之一。读者期望随时随地浏览海量图书资源&#xff0c;对比价格…...

Python 非异步函数执行异步函数的方案

import asyncio import sys from your_module import browser_main # 替换为你的实际模块名 async def _keep_alive(): """保持程序持续运行""" while True: await asyncio.sleep(1) def run_browser(index: int None): """ 执…...

计算机期刊推荐 | 工程技术-电子与电气, 计算机

IET Microwaves Antennas & Propagation的新特刊&#xff1a;《天线与超材料的设计、合成、仿真与实验》 学科领域&#xff1a; 工程技术-电子与电气, 计算机 期刊类型&#xff1a; SCI/SSCI/AHCI 收录数据库&#xff1a; SCI(SCIE) ISSN&#xff1a; 1751-8725 中科院…...

【开源宝藏】30天学会CSS - DAY9 第九课 牛顿摆动量守恒动画

以下是一份逐步拆解教程&#xff0c;带你从零理解并复刻这个牛顿摆&#xff08;Pendulum of Newton&#xff09;动画效果&#xff0c;这是一个经典的物理演示模型&#xff0c;现在通过纯 HTML 和 CSS 实现出来&#xff0c;视觉效果炫酷、结构简洁。 &#x1f3af; 动画效果说明…...

对三维物体模型的阈值操作

对三维物体模型的阈值操作 1. 使用point_coord_x、point_coord_y、point_coord_z阈值分割麻辣兔头2. point_normal_x、point_normal_y、point_normal_z有什么区别&#xff1f;3. 去除离群点 1. 使用point_coord_x、point_coord_y、point_coord_z阈值分割麻辣兔头 dev_open_win…...

【Unity网络编程知识】使用Socket实现简单TCP通讯

1、Socket的常用属性和方法 创建Socket TCP流套接字 Socket socketTcp new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 1.1 常用属性 1&#xff09;套接字的连接状态 socketTcp.Connected 2&#xff09;获取套接字的类型 socketTcp.So…...

简记_单片机硬件最小系统设计

以STM32为例&#xff1a; 一、电源 1.1、数字电源 IO电源&#xff1a;VDD、VSS&#xff1a;1.8~3.6V&#xff0c;常用3.3V&#xff0c;去耦电容1 x 10u N x 100n &#xff1b; 内核电源&#xff1a;内嵌的稳压器输出&#xff1a;1.2V&#xff0c;给内核、存储器、数字外设…...

Android Launcher实战:完美复刻iOS风格Hotseat布局优化

一、需求背景与效果呈现 在Android 13系统深度定制过程中&#xff0c;原生Launcher的Hotseat布局因视觉效果平庸需要进行UI重构。产品团队要求仿照iOS系统设计&#xff0c;实现以下核心特性&#xff1a; 取消传统横屏铺满效果 采用居中显示布局方案 支持圆角背景与智能边距调…...

2025-3-25算法打卡

一&#xff0c;走迷宫 1.题目描述&#xff1a; 给定一个 NMNM 的网格迷宫 GG。GG 的每个格子要么是道路&#xff0c;要么是障碍物&#xff08;道路用 11 表示&#xff0c;障碍物用 00 表示&#xff09;。 已知迷宫的入口位置为 (x1,y1)(x1​,y1​)&#xff0c;出口位置为 (x…...

Python:进程的常用方法,注意细节,进程线程对比

进程常用方法&#xff1a; start()&#xff1a;启动进程实例 is_alive()&#xff1a;判断子进程的存活状态&#xff0c;返回True或False&#xff0c;子进程执行完后的状态为False join([timeout])&#xff1a;是否等待子进程执行结束(在当前位置阻塞主进程)主进程等子进程多长…...

北京交通大学第三届C语言积分赛

作者有言在先&#xff1a; 题解的作用是交流思路&#xff0c;不是抄作业的。可以把重点放在思路分析上而不是代码上&#xff0c;毕竟每个人的代码风格是不一样的&#xff0c;看别人的代码就跟做程序填空题一样。先看明白思路再看代码。 还有就是&#xff0c;deepseek真的很好用…...

架构设计之自定义延迟双删缓存注解(下)

架构设计之自定义延迟双删缓存注解(下) 小薛博客官方架构设计之自定义延迟双删缓存注解(下)地址 为了保证Cache和ClearAndReloadCache的灵活性&#xff0c;特意加入EL表达式解析 1、Cache package com.xx.cache;import java.lang.annotation.*; import java.util.concurren…...

SingleMod

SingleMod SingleMod是一种深度学习模型,专为利用纳米孔直接RNA测序(DRS)数据在单RNA分子中精确检测m6A修饰而设计。该模型通过深度多实例回归框架进行训练,能够充分利用广泛的甲基化率标签。SingleMod是一个通用框架,可轻松适配其他核酸修饰的检测模型训练。 注意: Si…...

SQL-查询漏洞

一、查询注入的数据类型 //list.php<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatiable" content"IEedge"><meta name"viewport" content&…...

Maven 多模块项目(如微服务架构)中,父 POM(最外层) 和 子模块 POM(具体业务模块)的区别和联系

文章目录 **1. 父 POM 的核心职责****1.1 依赖管理 (dependencyManagement)****1.2 插件管理 (pluginManagement)****1.3 其他公共配置** **2. 子模块 POM 的核心职责****2.1 依赖声明 (dependencies)****2.2 插件启用与覆盖 (plugins)** **3. 核心对比表****4. 使用场景示例**…...

【AIGC】图片变视频 - SD ComfyUI视频生成

效果图 完整过程 SD ComfyUI 下载 下载 https://pan.quark.cn/s/64b808baa960 解压密码&#xff1a;bilibili-秋葉aaaki 完整 https://www.bilibili.com/video/BV1Ew411776J/ SD ComfyUI 安装 1.解压 2.将controlnet内部文件复制到 ComfyUI-aki-v1.6\ComfyUI\models\control…...

思考我的未来职业

李升伟 编译 关于我 我是一名专注于后端开发的软件工程师&#xff0c;拥有十年专业编程经验。从学生时代起&#xff0c;编程就是我的热情所在&#xff0c;并一直保持着这个长期爱好。此外&#xff0c;我也热爱动漫和电影。 然而过去几年&#xff0c;婚姻、家庭责任和育儿让生…...

StarRocks数据导入

文章目录 StarRocks数据导入Broker LoadETL 集群导数非 ETL 集群导数Broker Load 任务查看BrokerLoad⼤数据量导⼊优化参数推荐配置BrokerLoad 排查思路 Insert IntoInsert Into大数据量导入优化参数 Stream LoadStreamLoad⼤数据量导⼊优化参数推荐配置Stream Load 排查思路 R…...

mmdetection安装

链接: link...

光学像差的类型与消除方法

### **光学像差的类型、理解与消除方法** 光学像差是指实际光学系统成像时&#xff0c;由于透镜或反射镜的非理想特性导致的光线偏离理想路径&#xff0c;从而影响成像质量的现象。像差可分为**单色像差**&#xff08;与波长无关&#xff09;和**色差**&#xff08;与波长相关…...

Manus AI 破局多语言手写识别,解锁智能新天地

Manus AI 破局多语言手写识别&#xff0c;解锁智能新天地 前言 在人工智能技术不断渗透各行各业的背景下&#xff0c;手写识别领域长期面临多语言适配难、复杂场景泛化能力弱等挑战。ManusAI凭借其创新的算法架构和多模态融合技术&#xff0c;成功突破传统OCR&#xff08;光学…...

文字颜色的渐变(svg实现)

一 上下渐变&#xff08;有底部阴影&#xff09; 效果如图&#xff1a; svg代码如下&#xff1a; <svg width"300" height"100" xmlns"http://www.w3.org/2000/svg"><defs><linearGradient id"textGradient" x1"…...

Java-设计模式

Java-设计模式 ⓪设计模式基础 ❶设计模式分类 创建型模式 用于描述对象实例化&#xff08;创建对象&#xff09;的模式&#xff0c;即用于解耦对象的实例化过程 GoF&#xff08;四人组&#xff09;书中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 …...

“我是GM”之NAS搭建Luanti游戏服务器,开启沙盒游戏新体验

“我是GM”之NAS搭建Luanti游戏服务器&#xff0c;开启沙盒游戏新体验 哈喽小伙伴们好&#xff0c;我是Stark-C~ 曾几何时&#xff0c;哪怕是现在&#xff0c;估计依然有很多小伙伴沉迷于开放性和自由度极高的《我的世界》这种沙盒游戏吧~。 我个人到现在手机上还有这款游戏…...

K8S学习之基础五十:k8s中pod时区问题并通过kibana查看日志

k8s中pod默认时区不是中国的&#xff0c;挂载一个时区可以解决 vi pod.yaml apiVersion: v1 kind: Pod metadata:name: counter spec:containers:- name: countimage: 172.16.80.140/busybox/busybox:latestimagePullPolicy: IfNotPresentargs: [/bin/sh,-c,i0;while true;do …...

光电效应及普朗克常数的测定数据处理 Python实现

内容仅供参考&#xff0c;如有错误&#xff0c;欢迎指正&#xff0c;如有疑问&#xff0c;欢迎交流。 因为我不会Excel所以只能用Python来处理 祝大家早日摆脱物理实验的苦海 用到的一些方法 PCHIP &#xff08;分段三次埃尔米特插值多项式&#xff09; 因为实验时记录的数…...

hyperf中关于时间的设定

下面我来总结这三者的用法和它们之间的关系&#xff1a; 1. protected ?string $dateFormat U; 作用&#xff1a; 定义数据库日期字段的存储格式‘U’ 表示使用 Unix 时间戳格式&#xff08;秒级&#xff0c;10位数字&#xff09; 影响范围&#xff1a; 决定了模型从数据…...

编程实现自我指涉(self-reference)

从计算机的组成原理出发&#xff0c;编程实现自我指涉&#xff08;self-reference&#xff09;本质上是通过代码操纵代码&#xff0c;形成逻辑上的闭环。这种能力不仅是编程语言设计中的一个奇妙现象&#xff0c;更是计算理论、计算机架构、乃至哲学层面的一种深刻映射。让我们…...

数据类设计_图片类设计_矩阵图类型和像素图类型设计的补充

前言 以矩阵图类型和像素图类型作为图像类数据的基础,但在使用过程中有个问题:矩阵图形和像素图形的尺寸---长和高没有表现出来,本贴对此做出分析. 引入 原帖数据类设计_图片类设计之7_矩阵图形类设计更新_实战之页面简单设计&#xff08;前端架构&#xff09;-CSDN博客里有对…...