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

社保减员要怎么做 国税局网站/收录批量查询工具

社保减员要怎么做 国税局网站,收录批量查询工具,兴城做网站推广的,企业网站的建设的目标人物是1.线程锁 使用Runnable接口和Lambda表达式: 在 EasyThreadA 类的 mainA 方法中,通过创建 Runnable 实例 run,并使用Lambda表达式。 EasyThreadA::method 绑定到 run 上。然后创建两个线程 a 和 b,分别启动它们,它们会…

1.线程锁

使用Runnable接口和Lambda表达式:

在 EasyThreadA 类的 mainA 方法中,通过创建 Runnable 实例 run,并使用Lambda表达式。 EasyThreadA::method 绑定到 run 上。然后创建两个线程 a 和 b,分别启动它们,它们会并发地执行 method 方法向共享的 list 中添加元素。这里的 list 是一个静态的 ArrayList,可能存在线程安全问题。
继承Thread类:

ThreadA 类继承自 Thread 类,重写了 run 方法,在其中向自己的 list 中添加元素。在 mainB 方法中创建了两个 ThreadA 实例 a 和 b,启动它们分别执行。每个线程拥有独立的 list,不存在直接的线程安全问题。
实现Runnable接口:

RunA 类实现了 Runnable 接口,在 run 方法中也向自己的 list 中添加元素。在 main 方法中创建了两个 RunA 实例作为 Thread 的任务,分别启动它们。每个 RunA 实例拥有独立的 list,不存在直接的线程安全问题。
需要注意的知识点:
多线程的实现方式:

可以通过实现 Runnable 接口或者继承 Thread 类来创建线程。推荐优先使用实现 Runnable 接口,因为Java中类只能单继承,而实现接口可以更灵活地组合多个接口实现不同的功能。
线程同步和等待:

使用 Thread.sleep(1000) 来模拟线程执行过程中的等待时间。在实际应用中,需要根据具体需求使用合适的线程同步机制,如 synchronized 关键字、Lock 接口、Atomic 类等来确保线程安全性。
Lambda表达式:

在 mainA 方法中使用了Lambda表达式 EasyThreadA::method,简化了匿名内部类的写法,提升了代码的简洁性和可读性。

package com.easy725;import java.util.ArrayList;
import java.util.List;public class EasyThreadA {static List list=new ArrayList();public static void method(){for (int i = 0; i <10 ; i++) {list.add(i+"A"+Thread.currentThread().getName());}}public static void mainA(String[] args) {Runnable run=EasyThreadA::method;Thread a=new Thread(run);Thread b=new Thread(run);a.start();b.start();try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(list.size());}public static void mainB(String[] args) {ThreadA a=new ThreadA();ThreadA b=new ThreadA();a.start();b.start();try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(a.list);System.out.println(b.list);}public static void main(String[] args) {RunA run=new RunA();Thread a=new Thread(run);Thread b=new Thread(run);a.start();b.start();try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(run.list.size());}}
class ThreadA extends Thread{public List list=new ArrayList();@Overridepublic void run() {for (int i = 0; i <10 ; i++) {list.add("a");}}
}
class RunA implements Runnable{public List list=new ArrayList();@Overridepublic void run() {for (int i = 0; i <10 ; i++) {list.add("a");}}
}

Lock对象的创建和使用:

Lock lock = new ReentrantLock();:创建了一个 ReentrantLock 类型的锁对象 lock。ReentrantLock 是可重入锁,支持公平和非公平性选择,默认是非公平锁(false)。

public void method() 方法中的逻辑:
if (lock.tryLock()) {:尝试获取锁。如果获取成功(返回 true),否则打印当前线程名并输出 "进入方法",然后输出 "结束方法",最后解锁 lock。
else {:如果尝试加锁失败,输出 "加锁未成功-----去执行别的代码",然后通过 Thread.sleep(1000) 模拟执行其他代码的情况,随后递归调用 method() 方法再次尝试获取锁。
main方法中的线程创建和启动:

Runnable run = new EasyThreadB()::method;:创建一个 Runnable 实例,通过方法引用绑定到 EasyThreadB 的 method() 方法上。
Thread a = new Thread(run); 和 Thread b = new Thread(run);:创建两个线程 a 和 b,它们共享同一个 run 实例,即同一个 method() 方法。
a.start(); 和 b.start();:启动两个线程并发执行 method() 方法。
需要注意的知识点:
Lock接口与ReentrantLock类:

Lock 接口提供了比传统的 synchronized 块和方法更广泛的锁定操作。ReentrantLock 是 Lock 接口的实现类,具有可重入特性,允许线程在同一个线程中多次获取同一个锁,避免死锁情况。
tryLock() 方法是 Lock 接口的一部分,尝试获取锁,如果成功则返回 true,否则立即返回 false,不会阻塞线程。这在避免线程长时间等待锁的情况下很有用。最后要unLock()方法解锁。
多线程同步与并发控制:

使用 ReentrantLock 可以更精确地控制多线程的并发访问,可以在需要的时候尝试获取锁,也可以实现公平性或非公平性的锁分配策略。
锁的释放应该始终放在 try 块的 finally 块中,以确保即使在获取锁期间发生异常,锁也能够被安全地释放。

死锁:

进程死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

线程死锁是指由于两个或者两个以上的线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。

死锁的产生还涉及到一些具体的条件,这些条件可以被看作是死锁产生的必要条件,包括:

互斥条件:资源不能被多个进程或线程同时访问,即资源是互斥的。
请求保持条件:进程或线程在请求资源时,已经持有其他资源,并且不愿意释放已经持有的资源。
不可剥夺条件:已经分配给进程或线程的资源,在未使用完之前不能被其他进程或线程剥夺。
循环等待条件:多个进程或线程之间形成一个循环等待链,每个进程或线程都在等待链中下一个进程或线程释放资源。

package com.easy725;import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class EasyThreadB {//锁对象  LockLock lock=new ReentrantLock();//创建锁对象,在()中选择是否是公平锁,默认false(非公平锁)。public void method(){//lock.lock();//加锁//lock.trylock()  尝试加锁,加锁成功返回true,失败返回false。if (lock.tryLock()) {System.out.println(Thread.currentThread().getName() + "进入方法");System.out.println(Thread.currentThread().getName() + "结束方法");lock.unlock();//解锁}else {System.out.println("加锁未成功-----去执行别的代码");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}method();}}public static void main(String[] args) {Runnable run=new EasyThreadB()::method;Thread a=new Thread(run);Thread b=new Thread(run);a.start();b.start();}
}

读写锁 (ReentrantReadWriteLock):
ReentrantReadWriteLock 是一个锁容器,包含了读锁和写锁,能够提供比普通的互斥锁(如 ReentrantLock)更高的并发性。
读锁允许多个线程同时获取,适合对共享资源进行读取操作。
写锁是排他的,只允许一个线程获取,用于对共享资源进行写操作。
在代码中,通过 rrwl.readLock() 获取读锁,通过 rrwl.writeLock() 获取写锁,确保对共享资源的安全访问。

线程的启动和执行:
使用 Thread 类和 Runnable 接口创建多线程,通过 Thread.start() 启动线程,实现并发执行多个方法。
在 main 方法中,创建了多个读线程和写线程,分别调用 method() 和 methodWrite() 方法。
线程同步和锁的释放:
使用 lock.lock() 和 lock.unlock() 进行锁的获取和释放,确保在多线程环境下对共享资源的安全访问。
一般使用 try-finally 块确保在出现异常时能够正确释放锁,避免死锁或资源泄漏问题。

package com.easy725;import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;public class EasyThreadC {//ReentrantReadWriteLock是个锁容器public static ReentrantReadWriteLock rrwl=new ReentrantReadWriteLock();public static ReentrantLock rl=new ReentrantLock();public static void method(){System.out.println(Thread.currentThread().getName()+"进入方法");Lock lock= rrwl.readLock();lock.lock();System.out.println(Thread.currentThread().getName()+"加锁成功----读锁");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"方法结束");lock.unlock();}public static void methodWrite(){System.out.println(Thread.currentThread().getName()+"进入方法");Lock lock= rrwl.writeLock();lock.lock();System.out.println(Thread.currentThread().getName()+"加锁成功----写锁");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"方法结束");lock.unlock();}public static void main(String[] args) {Runnable run=EasyThreadC::method;Runnable runWrite=EasyThreadC::methodWrite;Thread a=new Thread(run);a.start();Thread b=new Thread(run);b.start();Thread c=new Thread(run);c.start();Thread d=new Thread(run);d.start();Thread e=new Thread(run);e.start();Thread f=new Thread(runWrite);f.start();Thread g=new Thread(runWrite);g.start();Thread h=new Thread(runWrite);h.start();Thread i=new Thread(runWrite);i.start();System.out.println("main线程结束");}
}

同步和对象锁
synchronized 同步块:使用 synchronized (OBJ) 对象锁,确保多个线程在访问共享资源时的安全性。
wait 和 notify:通过 OBJ.wait() 和 OBJ.notify() 方法实现线程的等待和唤醒机制。
wait():使当前线程进入等待状态,并释放对象锁,直到其他线程调用对象的 notify() 或 notifyAll() 方法唤醒它。
notify() 和 notifyAll():唤醒等待在该对象上的一个或多个线程,使它们从等待池中进入就绪状态。
线程生命周期和状态
线程等待和重新运行:展示了线程如何在 wait() 被调用后进入等待状态,并在被唤醒后重新运行。
wait和sleep的区别:
wait是Object中定义的方法,可以由锁对象调用,让执行到该代码的线程进入到等待状态。
sleep是Thread类中定义的静态方法,也可以让执行到该行的线程进入等待状态。
区别:
1.sleep需要传入一个毫秒数,到达时间后会自动唤醒。wait不能自动唤醒,必须调用notify或者notifyALL方法。
2.sleep方法保持锁状态进入等待状态。wait方法会解除锁状态,其他线程可以进入运行。

package com.easy725;public class EasyThreadD {public static final Object OBJ =new Object();public static void method(){System.out.println(Thread.currentThread().getName()+"进入方法");synchronized (OBJ){OBJ.notify();//唤醒一条被该锁对象wait的线程//OBJ.notifyAll();//唤醒全部被锁对象wait的线程System.out.println(Thread.currentThread().getName()+"进入同步代码块");try {try {System.out.println(Thread.currentThread().getName()+"进入等待状态");OBJ.wait();//让执行到改代码的线程进入到等待状态,在等待池中。System.out.println(Thread.currentThread().getName()+"重新运行");} catch (InterruptedException e) {e.printStackTrace();}Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"结束同步代码块");OBJ.notify();}}public static void main(String[] args) {Runnable run = EasyThreadD::method;Thread a=new Thread(run);a.start();Thread b=new Thread(run);b.start();Thread c=new Thread(run);c.start();Thread d=new Thread(run);d.start();}//wait和sleep的区别://wait是Object中定义的方法,可以由锁对象调用,让执行到该代码的线程进入到等待状态。//sleep是Thread类中定义的静态方法,也可以让执行到该行的线程进入等待状态。//区别://1.sleep需要传入一个毫秒数,到达时间后会自动唤醒。wait不能自动唤醒,必须调用notify或者notifyALL方法。//2.sleep方法保持锁状态进入等待状态。wait方法会解除锁状态,其他线程可以进入运行。
}

2.线程池

线程池:

ThreadPoolExecutor 是 Java 中用于管理线程池的类,通过它可以有效地重用线程,完成线程的创建管理和销毁工作。
在代码中,通过 ThreadPoolExecutor 的构造方法创建了一个线程池 tpe。
在这里,使用了一个 ArrayBlockingQueue 作为任务队列 qu,它限制了队列的容量为 12。
任务提交与执行:

线程池可以执行两种类型的任务:Runnable 和 Callable。
Runnable run = EasyExecuters::method; 定义了一个简单的 Runnable 任务,它会调用 method 方法。
tpe.execute(run); 提交 run 任务给线程池执行。
Callable<String> call = EasyExecuters::methodCall; 定义了一个 Callable 任务,它会调用 methodCall 方法,并返回一个结果。
Future<String> f = tpe.submit(call); 提交 call 任务给线程池执行,并获取一个 Future 对象,用于获取任务的执行结果。
任务执行结果获取:

System.out.println(f.get()); 使用 Future 对象的 get() 方法来获取 call 任务的执行结果。这是一个阻塞方法,会等待任务执行完毕并返回结果。
线程池的关闭:

tpe.shutdown(); 调用 shutdown() 方法关闭线程池。这会使线程池停止接受新的任务,并尝试将现有的任务执行完毕后关闭。

package com.easy725;import java.util.Collection;
import java.util.Iterator;
import java.util.Queue;
import java.util.concurrent.*;public class EasyExecuters {//线程池   池==重用//完成线程创建,管理,销毁工作public static void main(String[] args) throws ExecutionException, InterruptedException {BlockingQueue qu = new ArrayBlockingQueue(12);ThreadPoolExecutor tpe=new ThreadPoolExecutor(5,10,10,TimeUnit.SECONDS,qu,Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());//线程任务:Runnable,CallableRunnable run=EasyExecuters::method;tpe.execute(run);Callable<String> call=EasyExecuters::methodCall;Future<String> f=tpe.submit(call);//f.cancel(true);//是否取消任务,一种中断线程的方式//tpe.submit(run);System.out.println(f.get());//会等待线程执行完毕//关闭线程池对象tpe.shutdown();}public static void method(){System.out.println(Thread.currentThread().getName()+"执行代码");}public static String methodCall(){System.out.println(Thread.currentThread().getName()+"执行代码call");return "callResult";}
}

1. 线程池的七个参数解释
在代码中,通过 ThreadPoolExecutor 的构造方法指定了以下七个参数:

corePoolSize: 核心线程数,即线程池中保持活跃的线程数量,即使它们是空闲的也会保留在池中。
maximumPoolSize: 最大线程数,线程池中允许的最大线程数量。当活跃线程数达到核心线程数,并且工作队列已满时,会创建新的线程,直到达到这个最大值。
keepAliveTime: 空闲线程的存活时间。超过核心线程数的线程在空闲超过这个时间后会被销毁,直到线程池的大小重新变为核心线程数为止。
unit: keepAliveTime 的时间单位。
workQueue: 工作队列,用于保存等待执行的任务。在本例中使用了 ArrayBlockingQueue,其容量为 12。
threadFactory: 线程工厂,用于创建新线程。
handler: 回绝策略,用于处理无法执行的任务。在本例中使用了 DiscardPolicy,即直接丢弃新任务而不抛出异常。

2.四种回绝策略(可以自定义)
AbortPolicy(默认):放弃该任务并会抛出一个异常,RejectedExecutionException。
CallerRunsPolicy:调用者执行,让传递任务的线程执行此任务。
DiscardOldestPolicy:放弃队列中时间最长的任务,不会抛出异常。
DiscardPolicy:直接放弃新的任务,不会抛异常。


3. 线程池的工作原理
当任务提交给线程池时,线程池会按照以下步骤处理任务:
如果当前活跃线程数小于核心线程数,创建新的线程来执行任务。
如果当前活跃线程数等于核心线程数,将任务加入工作队列。
如果工作队列已满但未达到最大线程数,创建新线程来执行任务。(占最大线程数)
如果工作队列已满且线程数已达到最大值,执行指定的回绝策略来处理新任务。


4. 内置的线程池对象
Java 提供了几种常见的内置线程池对象,可以根据应用的需要选择合适的线程池:

Executors.newCachedThreadPool(): 可根据需要(没有空闲就创建新线程)的线程池,空闲线程会在 60 秒后被回收。
Executors.newFixedThreadPool(int n): 固定大小的线程池,可以控制最大线程数。
Executors.newScheduledThreadPool(int corePoolSize): 支持定时和周期性的处理方案。
Executors.newSingleThreadExecutor(): 只有一个线程的线程池,确保所有任务按顺序执行。


5. 任务执行与线程池关闭
在代码中,通过 execute() 方法提交 Runnable 任务给线程池执行。
最后调用 shutdown() 方法关闭线程池,这会使线程池停止接受新任务,并尝试将已有的任务执行完毕后关闭。

package com.easy725;import java.util.Collection;
import java.util.Iterator;
import java.util.concurrent.*;public class EasyExecutersA {public static void main(String[] args) {//1.说明线程池的七个参数//2.四种回绝策略(可以自定义)//AbortPolicy(默认):放弃该任务并会抛出一个异常,RejectedExecutionException。//CallerRunsPolicy:调用者执行,让传递任务的线程执行此任务。//DiscardOldestPolicy:放弃队列中时间最长的任务,不会抛出异常。//DiscardPolicy:直接放弃新的任务,不会抛异常。//3.线程池的工作原理://  任务放置在工作队列中//1>池中是否有空闲的线程,如果有,让该线程执行任务。//2>如果池中没有空闲的线程,判断线程数量是否达到核心线程数。//3>如果没有达到,创建新的线程执行任务,直到填满核心数。如果已经达到,优先在队列中存储,直到队列填满。//4>工作队列填满之后再添加新的任务,判断是否达到最大线程数,如果没有,创建新的线程执行任务,直到填满最大线程数。//5>如果填满最大线程数,队列也已经填满,没有空闲的线程,就执行回绝策略。//线程池中的线程达到(超过)核心线程数,超出的数量会根据存活时间进行销毁。直到数量达到核心线程数。如果线程的数量少于核心线程数,不会消亡。//java中内置的线程池对象//可以根据工作任务创建线程,如果没有空闲的线程,就创建新的线程。线程存活时间60s。//Executors.newCachedThreadPool();//设定最大线程数量//Executors.newFixedThreadPool(10);//提供定时运行的处理方案//Executors.newScheduledThreadPool(10);//创建一个具有单个线程的线程池,保证任务队列完全按照顺序执行//Executors.newSingleThreadExecutor();BlockingQueue queue=new ArrayBlockingQueue(12);ThreadPoolExecutor tpe=new ThreadPoolExecutor(5,8,10,TimeUnit.SECONDS,queue,Executors.defaultThreadFactory(),new ThreadPoolExecutor.DiscardPolicy());Runnable run =()->{System.out.println(Thread.currentThread().getName()+"执行run方法");try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"执行结束");};for (int i = 0; i <21 ; i++) {tpe.execute(run);}tpe.shutdown();}
}

3.枚举

枚举类 默认继承Enum类
首行必须枚举所有的实例。Enum的实例是可比较的(根据实例出来的顺序)。但是不可序列化,不能被new,克隆等操作。
当枚举中只有一个实例时,这个类就是单例的。

package com.easy725;public enum  EasyColor {//枚举类 默认继承Enum类//首行必须枚举所有的实例。Enum的实例是可比较的(根据实例出来的顺序)。但是不可序列化,不能被new,克隆等操作。//当枚举中只有一个实例时,这个类就是单例的。RED,YELLOW,GREEN,BLUE,PINK;public void printColor(){System.out.println(this.name());System.out.println(this.ordinal());}}
class Test{public static void main(String[] args) {EasyColor.PINK.printColor();}
}

相关文章:

JAVA小白学习日记Day10

1.线程锁 使用Runnable接口和Lambda表达式&#xff1a; 在 EasyThreadA 类的 mainA 方法中&#xff0c;通过创建 Runnable 实例 run&#xff0c;并使用Lambda表达式。 EasyThreadA::method 绑定到 run 上。然后创建两个线程 a 和 b&#xff0c;分别启动它们&#xff0c;它们会…...

分布式相关理论详解

目录 1.绪论 2.什么是分布式系统&#xff0c;和集群的区别 3.CAP理论 3.1 什么是CAP理论 3.2 一致性 3.2.1 计算机的一致性说明 1.事务中的一致性 2.并发场景下的一致性 3.分布式场景下的一致性 3.2.2 一致性分类 3.2.3 强一致性 1.线性一致性 a) 定义 a) Raft算法…...

Linux基础知识之Shell命令行及终端中的快捷键

1.察看历史命令快捷键 按键 操作 ctrl p 返回上一次输入命令字符 ctrl n 返回下一次输入命令字符 ctrl r 输入单词甚至词组搜索匹配历史命令 alt p 输入字符查找与字符相接近的历史命令 alt . 向之前执行的命令的最后一个参数轮循, 并将之添加到当前光标之后…...

研究生选择学习Android开发的利与弊?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Android的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;产品经理可以学学Axure快…...

怎么评价程序员40岁了竟然还在撸代码?

怎么评价外卖员40岁了竟然还在送外卖&#xff1f; 怎么评价滴滴司机40岁了竟然还在跑滴滴&#xff1f; 怎么评价老师40岁了竟然还在教书&#xff1f;难道程序员的本职工作不是敲代码吗&#xff1f;无论你是管理层还是螺丝钉&#xff0c;工业环境下怎么可能一行代码都不敲呢&…...

SQL优化(一)基础概念

基数&#xff08;cardinality&#xff09; 表中某个列的唯一键的数量叫做基数&#xff0c;主键列的基数就是表中数据的总行数。 可以用select count(distinct 列名) from 表名来计算基数。 基数的高低影像列的数据分布。 例如&#xff1a;先用Scott账户创建一个测试表test …...

【C++高阶】哈希:全面剖析与深度学习

目录 &#x1f680; 前言一&#xff1a; &#x1f525; unordered系列关联式容器1.1 unordered_map1.2 unordered_set 二&#xff1a; &#x1f525; 哈希的底层结构 ⭐ 2.1 哈希概念⭐ 2.2 哈希冲突⭐ 2.3 哈希函数⭐ 2.4 哈希冲突解决2.4.1 &#x1f304;闭散列2.4.2 &#x…...

PHP西陆招聘求职系统小程序源码

&#x1f525;【职场新宠】西陆招聘求职系统&#xff0c;你的职场加速器&#x1f680; &#x1f389;【开篇安利&#xff1a;一站式求职新体验】&#x1f389; 还在为找工作焦头烂额吗&#xff1f;是时候告别传统招聘网站的繁琐与低效了&#xff01;今天给大家种草一个超赞的…...

系统移植(十一)根文件系统(未整理)

文章目录 一、根文件系统中各个目录文件功能解析&#xff1a;二、对busybox进行配置和编译&#xff08;一&#xff09;执行make help命令获取make的帮助信息&#xff08;二&#xff09;对busybox源码进行配置&#xff0c;配置交叉编译器&#xff08;三&#xff09;执行make men…...

mac中docker常用命令总结

在Mac中&#xff0c;Docker的常用命令可以总结如下表格&#xff1a; 命令用途docker run运行一个新的容器实例。可以指定镜像名来启动容器&#xff0c;并支持多种参数来调整容器的运行方式。docker ps列出当前正在运行的容器。可以通过添加-a参数来列出所有容器&#xff08;包…...

Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 [ 项目介绍 ] [ 获取数据 ] [ 创建测试集 ]| 1/3(含分析过程)

Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 [ 项目介绍 ] [ 获取数据 ] [ 创建测试集 ]| 1/3&#xff08;含分析过程&#xff09; 目录 Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 [ 项目介绍 ] [ 获取数据 ] [ 创建测试集 ]| 1/3&#x…...

Linux 4: Bash

1 Bash环境 1 命令执行的顺序 1 绝对路径、相对路径 2 alias 3 内置的builtin 4 $PATH找到的第一个命令 2 bash的登录信息&#xff0c;保存在哪里&#xff1f; 保存在/etc/issue. 3 bash的环境配置文件 1 如果是login shell&#xff0c;读以下&#xff0c;有优先级:如果…...

第十四天学习笔记2024.7.25

Git安装 1.安装git 2.创建git仓库 3.创建文件并且提交文件 &#xff08;git add . 将文件提交到缓存&#xff09;&#xff08;git commit -m 说明&#xff09;&#xff08;git log 查看历史&#xff09; 4.分支创建与解决分支冲突问题 创建主机&#xff08;git 192.1…...

花几千上万学习Java,真没必要!(三十七)

IO 流&#xff1a; 读取数据到内存的过程&#xff1a;可以包括从硬盘、网络或其他存储设备中将数据加载到内存中&#xff0c;以便程序能够访问和处理这些数据。 写入数据到硬盘的过程&#xff1a;通常是将内存中的数据保存到硬盘或其他持久性存储设备中&#xff0c;以便长期存…...

SSA-GRU(自适应平滑自回归门控循环单元)预测模型及其Python和MATLAB实现

SSA-GRU&#xff08;自适应平滑自回归门控循环单元&#xff09;预测模型是结合了SSA&#xff08;Singular Spectrum Analysis&#xff0c;奇异谱分析&#xff09;和GRU&#xff08;Gated Recurrent Unit&#xff0c;门控循环单元&#xff09;模型的一种时间序列预测方法。以下是…...

【ROS】让你的回调函数并行起来

【前言】 众所周知&#xff0c;ROS中的所有回调函数&#xff0c;都由 ros::spin() 这个家伙来统一管理和唤醒。这里说的是所有通过ROS方式创建出来的回调函数&#xff0c;比如ros::Subscriber、ros::Timer等等的回调函数。 【举例】 我们先来看一个示例节点&#xff1a; #i…...

M12电连接器的编码分类及应用领域分析

12电连接器的编码主要包括A、B、C、D、X、S、T、K、L等类型&#xff0c;每种编码都有其特定的应用场景和功能&#xff1a; A编码&#xff1a;适用于传感器、直流电、1G以太网。 B编码&#xff1a;主要用于PROFIBUS总线系统。 C编码&#xff1a;适用于交流电。 D编码&#x…...

基于YOLOv8的道路裂缝坑洼检测系统

基于YOLOv8的道路裂缝坑洼检测系统 (价格88) 包含 【“裂缝”,“凹坑”】 2个类 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff0c;视频检测&#xff0c;摄像头实时检测。 &#xff08;该系统可以根据数据训练出的yolov8的权重文件&#xff0c;运用在其他检测系…...

蓝鹏测径仪非标定制订制流程

测径仪通常属于非标定制设备&#xff0c;非标定制意味着这些设备不是按照标准规格批量生产的&#xff0c;而是根据特定的客户需求和应用场景设计和制造的。例如&#xff0c;某些测径仪可能需要特殊的测量范围、精度、传感器或软件来满足特定的工业检测要求。 测径仪非标定制的…...

vue基础3

1.推荐好用的第三方框架 BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务 1.moment.js 2.dayjs 2.收集表达数据 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Document</title><…...

LINUX -exec函数族

1、功能&#xff1a; *让父子进程来执行不相干的操作 *能够替换进程地址空间的代码.text段 *执行另外的程序&#xff0c;不需要创建额外的的地址空间 *当前程序中调用另外一个应用程序 2、执行目录下的程序&#xff1a; *指定执行目录下的程序 int execl(const char *path,…...

c++ 智能指针shared_ptr与make_shared

shared_ptr是C11引入的一种智能指针&#xff0c;‌它允许多个shared_ptr实例共享同一个对象&#xff0c;‌通过引用计数来管理对象的生命周期。‌当最后一个持有对象的shared_ptr被销毁时&#xff0c;‌它会自动删除所指向的对象。‌这种智能指针主要用于解决资源管理问题&…...

2024-HW最新漏洞整理及相应解决方案(二)

目录 前言&#xff1a; 漏洞 1.用友NC系统电采complainjudge接口的sql注入漏洞 2.用友U8 CRM产品存在SQL注入漏洞 3.WordPress LMS 插件任意文件上传漏洞 4.Oracle Fusion Middleware 安全漏洞CVE-2024-21181 5.WordPress plugin LearnPress 安全漏洞CVE-2024-6589 6.W…...

spring boot整合JPA兼容MySQL8和达梦数据库8

前言 Spring Boot是一个基于Spring框架的快速开发框架&#xff0c;它可以简化Spring应用的配置和部署过程。JPA&#xff08;Java Persistence API&#xff09;是Java持久化规范的一种实现&#xff0c;它提供了一种统一的方式来访问和管理数据库。MySQL和达梦数据库都是常用的关…...

规划决策算法(四)---Frenet坐标系

知乎&#xff1a;坐标系转换 1.Frenet 坐标系 什么是 Frenet 坐标系&#xff1a; 为什么使用 Frenet 坐标系&#xff1a; 通常情况&#xff0c;我们只会关注车辆当前距离左右车道线的距离&#xff0c;来判断是否偏离车道&#xff0c;是否需要打方向盘进行方向微调。而不是基于…...

大数据处理:大数据处理框架Hadoop、Spark

大数据处理是当代信息技术领域的一个重要分支&#xff0c;它涉及到海量数据的存储、管理和分析。为了高效地应对大数据处理的挑战&#xff0c;多种框架被开发出来&#xff0c;其中Hadoop和Spark是最为知名和广泛应用的两种。以下将详细介绍这两种框架以及它们在大数据处理中的应…...

网传的高频流量费会影响到个人用户的算法和策略T0吗?

先解答这个问题&#xff1a;高频的流量费这个确实是会影响你自己算法的交易的&#xff01;但是&#xff0c;强调一个但是&#xff1a;有的券商是没有流量费的&#xff01;小编今天就来带大家了解一下&#xff01;第一&#xff1a;算法交易的应用场景&#xff01; 算法交易的主…...

阿里云服务器 Ubuntu18.04 安装 mysql8.0并允许外部连接

参考教程&#xff1a; 官网教程 参考教程一 首先彻底删除mysql5.7 dpkg --list|grep mysql #查看 sudo apt-get remove mysql-common #卸载 sudo apt-get autoremove --purge mysql-server-5.7 #版本自己修改 dpkg -l|grep ^rc|awk {print$2}|sudo xargs dpkg -P #清除残留数…...

(Arxiv-2023)MobileDiffusion:移动设备上即时文本到图像生成

MobileDiffusion&#xff1a;移动设备上即时文本到图像生成 Paper Title&#xff1a;MobileDiffusion: Instant Text-to-Image Generation on Mobile Devices Paper是谷歌出品 Paper地址 图 1&#xff1a;MobileDiffusion 用于 (a) 文本到图像的生成。(b) Canny 边缘到图像、风…...

【七】Hadoop3.3.4基于ubuntu24的分布式集群安装

文章目录 1. 下载和准备工作1.1 安装包下载1.2 前提条件 2. 安装过程STEP 1: 解压并配置Hadoop选择环境变量添加位置的原则检查环境变量是否生效 STEP 2: 配置Hadoop2.1. 修改core-site.xml2.2. 修改hdfs-site.xml2.3. 修改mapred-site.xml2.4. 修改yarn-site.xml2.5. 修改hado…...