一文看懂Java中创建线程的所有方式

好像有点标题党的感觉,但是干货绝对多,绝对有收获

本文部分参考周阳老师大厂面试题第二讲

觉得有用,点个赞吧

目录

1、继承Thread类

2、实现Runnable接口

3、 实现callable接口

4、使用线程池

线程池的几个重要参数介绍

线程池的底层工作原理

生产上如何合理设置线程池参数

自定义线程池 

线程池的拒绝策略

面试题:合理配置线程池你是如何考虑的?


1、继承Thread类

这是最基本的方式,继承Thread类并重写该类的run()方法,该方法的方法体就是线程需要完成的任务,run()方法也称为线程执行体。

代码示例如下:

//继承Thread类 Thread本质上也是实现了Runnable 接口的一个实例,它代表一个线程的实例,
class MyThread extends Thread {public void run() {//继承Thread创建线程 具体实现}
}//启动线程
new MyThread().start();

2、实现Runnable接口

定义Runnable接口的实现类,一样要重写run()方法,这个run()方法和Thread中的run()方法一样是线程的执行体

创建Runnable实现类的实例,并用这个实例作为Thread的target来创建Thread对象,这个Thread对象才是真正的线程对象

//Runable方式实现
class MyThread2 implements Runnable {@Overridepublic void run() {//Runable方式创建线程 具体实现}
}//启动线程new Thread(new MyThread2()).start();

 补充:我们看一下Thread类的源码

 

  public Thread(Runnable target) {init(null, target, "Thread-" + nextThreadNum(), 0);}@Overridepublic void run() {if (target != null) {target.run();}}

当我们采用实现Runnable接口的方式来实现线程的情况下,在调用new Thread(Runnable target)构造器时,将实现了Runnable接口的类的实例设置成了线程要执行的主体所属的目标对象target,当线程启动时,这个实例的 run()方法就被执行了。

当我们采用继承Thread的方式实现线程时,线程的这个run()方法被重写了,所以当线程启动时,执行的是这个对象自身的 run()方法。

 

总结起来:如果我们采用的是继承Thread类的方式,那么这个target就是线程对象自身,如果我们采用的是实现Runnable接口的方式,那么这个target就是实现了Runnable接口的类的实例。

 

3、 实现callable接口

通过实现callable接口的方式,可以创建一个线程,需要重写其中的call方法。

步骤:新建一个Callable的实例,再用FutureTask实例包装它,最终,再包装成Thread实例。

调用start方法启动,并且,可以通过FutureTask的get方法来获取返回值。在形式上,相比于Runnable接口,call方法多了一个泛型的返回值和抛出了一个异常。可以通过futureTask.get()方法获取返回值,但需要值得注意的时,执行get()方法的时候,会强制执行完这个线程得到返回值,所以一般可以放在后面

public class CallableDemo {public static void main(String[] args) throws ExecutionException, InterruptedException {FutureTask<Integer> futureTask = new FutureTask<>(new MyThread2());//System.out.println(futureTask.get());如果在调用start()方法前,调用get()会导致阻塞new Thread(futureTask, "线程A").start();//System.out.println(futureTask.get());}
}//Callable方式实现
class MyThread3 implements Callable<Integer> {@Overridepublic Integer call() throws Exception {System.out.println("**** come in ****");return 1024;}
}

输出:

**** come in ****
1024

补充:如果我们在两个线程中传进同一个futureTask,只会执行一次

public class CallableDemo {public static void main(String[] args) throws ExecutionException, InterruptedException {FutureTask<Integer> futureTask = new FutureTask<>(new MyThread2());new Thread(futureTask, "线程A").start();new Thread(futureTask, "线程B").start();System.out.println(futureTask.get());}
}

输出:

**** come in ****
1024
1024

 

要想执行两次,我们需要两个不同的futureTask。

public class CallableDemo {public static void main(String[] args) throws ExecutionException, InterruptedException {FutureTask<Integer> futureTask = new FutureTask<>(new MyThread2());FutureTask<Integer> futureTask2 = new FutureTask<>(new MyThread2());new Thread(futureTask, "线程A").start();new Thread(futureTask2, "线程B").start();System.out.println(futureTask.get());System.out.println(futureTask2.get());}
}

输出:

**** come in ****
**** come in ****
1024
1024

补充:实现Callable接口和实现Runnable接口的区别

区别1: 两者最大的区别,实现Callable接口的任务线程能返回执行结果,而实现Runnable接口的任务线程不能返回执行结果

注意点:Callable接口支持返回执行结果,此时需要调用FutureTask.get()方法实现,此方法会阻塞线程直到获取“将来”的结果,当不调用此方法时,主线程不会阻塞

区别2:Callable接口实现类中run()方法允许将异常向上抛出,也可以直接在内部处理(try...catch); 而Runnable接口实现类中run()方法的异常必须在内部处理掉,不能向上抛出

 

Java5提供了Future接口来代表Callable接口里call()方法的返回值,并且为Future接口提供了一个实现类FutureTask,这个实现类既实现了Future接口,还实现了Runnable接口,因此可以作为Thread类的target。在Future接口里定义了几个公共方法来控制它关联的Callable任务。

主要方法:

boolean cancel(boolean mayInterruptIfRunning):试图取消该Future里面关联的Callable任务

V get():返回Callable里call()方法的返回值,调用这个方法会导致程序阻塞,必须等到子线程结束后才会得到返回值

V get(long timeout,TimeUnit unit):返回Callable里call()方法的返回值,最多阻塞timeout时间,经过指定时间没有返回抛出TimeoutException

boolean isDone():若Callable任务完成,返回True

boolean isCancelled():如果在Callable任务正常完成前被取消,返回True

4、使用线程池

Java中的线程池是通过Executor框架实现的,该框架中用到了Executor,Executors,ExecutorService,ThreadPoolExecutor

实现有五种,Executors.newScheduledThreadPool()是带时间调度的,

java8新推出Executors.newWorkStealingPool(int),使用目前机器上可用的处理器作为他的并行级别

这里介绍Java中常用的三种线程池:

1、Executors.newCachedThreadPool();

执行很多短期异步的小程序或负载较轻的服务器

创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

newCachedThreadPool将corePoolSize设置为0,将maximumPoolSize设置为Integer.MAX_VALUE,使用的SynchronousQueue,也就是说来了任务就创建线程运行,当县城空闲超过60s,就销毁线程

public class ThreadPoolDemo {public static void main(String[] args) {ExecutorService threadPool = Executors.newCachedThreadPool();try {for (int i = 0; i < 10; i++) {threadPool.execute(() -> {System.out.println(Thread.currentThread().getName() + "办理业务");});}} catch (Exception e) {e.printStackTrace();} finally {threadPool.shutdown();}}
}

输出:

pool-1-thread-1办理业务
pool-1-thread-5办理业务
pool-1-thread-4办理业务
pool-1-thread-3办理业务
pool-1-thread-2办理业务
pool-1-thread-8办理业务
pool-1-thread-7办理业务
pool-1-thread-9办理业务
pool-1-thread-6办理业务
pool-1-thread-10办理业务

2、Executors.newSingleThreadExecutor()

创建一个单线程话的线程池,他只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序执行

newSingleThreadExecutor将corePoolSize和maximumPoolSize都设置为1,使用LinkedBlockingQueue

public class ThreadPoolDemo {public static void main(String[] args) {ExecutorService threadPool = Executors.newSingleThreadExecutor();try {for (int i = 0; i < 10; i++) {threadPool.execute(() -> {System.out.println(Thread.currentThread().getName() + "办理业务");});}} catch (Exception e) {e.printStackTrace();} finally {threadPool.shutdown();}}
}

输出:

pool-1-thread-1办理业务
pool-1-thread-1办理业务
pool-1-thread-1办理业务
pool-1-thread-1办理业务
pool-1-thread-1办理业务
pool-1-thread-1办理业务
pool-1-thread-1办理业务
pool-1-thread-1办理业务
pool-1-thread-1办理业务
pool-1-thread-1办理业务

3、Executors.newFixedThreadPool(6)

执行长期的任务,性能好很多

创建一个定长线程池,可控制线程最大并发数,超出的线程回在队列中等待。

newFixedThreadPool创建的线程池corePoolSize和maximumPoolSize值是想到等的,他使用的是LinkedBlockingQueue

public class ThreadPoolDemo {public static void main(String[] args) {ExecutorService threadPool = Executors.newFixedThreadPool(6);try {for (int i = 0; i < 10; i++) {threadPool.execute(() -> {System.out.println(Thread.currentThread().getName() + "办理业务");});}} catch (Exception e) {e.printStackTrace();} finally {threadPool.shutdown();}}
}

pool-1-thread-5办理业务
pool-1-thread-1办理业务
pool-1-thread-3办理业务
pool-1-thread-4办理业务
pool-1-thread-2办理业务
pool-1-thread-3办理业务
pool-1-thread-1办理业务
pool-1-thread-5办理业务
pool-1-thread-6办理业务

 补充:

一般来说,CachedTheadPool在程序执行过程中通常会创建与所需数量相同的线程,然后在它回收旧线程时停止创建新线程,因此它是合理的Executor的首选,只有当这种方式会引发问题时(比如需要大量长时间面向连接的线程时),才需要考虑用FixedThreadPool。(该段话摘自《Thinking in Java》第四版)

线程池的几个重要参数介绍

源码:

 /*** Creates a new {@code ThreadPoolExecutor} with the given initial* parameters.** @param corePoolSize the number of threads to keep in the pool, even*        if they are idle, unless {@code allowCoreThreadTimeOut} is set* @param maximumPoolSize the maximum number of threads to allow in the*        pool* @param keepAliveTime when the number of threads is greater than*        the core, this is the maximum time that excess idle threads*        will wait for new tasks before terminating.* @param unit the time unit for the {@code keepAliveTime} argument* @param workQueue the queue to use for holding tasks before they are*        executed.  This queue will hold only the {@code Runnable}*        tasks submitted by the {@code execute} method.* @param threadFactory the factory to use when the executor*        creates a new thread* @param handler the handler to use when execution is blocked*        because the thread bounds and queue capacities are reached* @throws IllegalArgumentException if one of the following holds:<br>*         {@code corePoolSize < 0}<br>*         {@code keepAliveTime < 0}<br>*         {@code maximumPoolSize <= 0}<br>*         {@code maximumPoolSize < corePoolSize}* @throws NullPointerException if {@code workQueue}*         or {@code threadFactory} or {@code handler} is null*/public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler) {public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler)

 详解:


1. corePoolSize :线程池中常驻核心线程数

 

      - 在创建了线程池后,当有请求任务来之后,就会安排池中的线程去执行请求任务
- 当线程池的线程数达到corePoolSize后,就会把到达的任务放到缓存队列当中

   2. maximumPoolSize:线程池能够容纳同时执行的最大线程数,必须大于等于1

 

   3. keepAliveTime :多余的空闲线程的存活时间

 

      - 当前线程池数量超过corePoolSize时,档口空闲时间达到keepAliveTime值时,多余空闲线程会被销毁到只剩下corePoolSize个线程为止

   4. unit:keepAliveTime的单位

 

   5. workQueue:任务队列,被提交但尚未被执行的任务

 

   6. threadFactory:表示生成线程池中工作线程的线程工厂,用于创建线程一般用默认的即可

 

   7. handler:拒绝策略,表示当队列满了并且工作线程大于等于线程池的最大线程数(maximumPoolSize)时如何来拒绝请求执行的runable的策略

线程池的底层工作原理

==流程==

  1. 在创建了线程池之后,等待提交过来的任务请求。

  2. 当调用execute()方法添加一个请求任务时,线程池会做出如下判断

    2.1 如果正在运行的线程数量小于corePoolSize,那么马上创建线程运行这个任务;

    2.2 如果正在运行的线程数量大于或等于corePoolSize,那么将这个任务放入队列;

    2.3如果此时队列满了且运行的线程数小于maximumPoolSize,那么还是要创建非核心线程立刻运行此任务

    2.4如果队列满了且正在运行的线程数量大于或等于maximumPoolSize,那么启动饱和拒绝策略来执行

  3. 当一个线程完成任务时,他会从队列中却下一个任务来执行

  4. 当一个线程无事可做超过一定的时间(keepAliveTime)时,线程池会判断:

    如果当前运行的线程数大于corePoolSize,那么这个线程会被停掉;所以线程池的所有任务完成后他最大会收缩到corePoolSize的大小

生产上如何合理设置线程池参数

补充面试题:在工作中单一的/固定数的/可变的三种创建线程池的方法,用哪个多?

一个都不用,我们生产上只能使用自定义的!!!!

为什么?

线程池不允许使用Executors创建,试试通过ThreadPoolExecutor的方式,规避资源耗尽风险。

FixedThreadPool和SingleThreadPool允许请求队列长度为Integer.MAX_VALUE,可能会堆积大量请求;

CachedThreadPool和ScheduledThreadPool允许的创建线程数量为Integer.MAX_VALUE,可能会创建大量线程,导致OOM

自定义线程池 

/*** @ClassName: MyThreadPool* @description: 手写一个线程池* @author: XZQ* @create: 2020/2/29 10:14**/
public class MyThreadPool {public static void main(String[] args) {ExecutorService threadPool =new ThreadPoolExecutor(2,5,1,TimeUnit.SECONDS,new LinkedBlockingDeque<Runnable>(3),Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());try {for (int i = 0; i < 10; i++) {threadPool.execute(() -> {System.out.println(Thread.currentThread().getName() + "办理业务");});}} catch (Exception e) {e.printStackTrace()} finally {threadPool.shutdown();}}
}

线程池的拒绝策略

  1. 什么是线程策略

    等待队列也已经排满了,再也塞不下新任务了,同时线程池中的max线程也达到了,无法继续为新任务服务。这时我们就需要拒绝策略机制合理的处理这个问题。

  2. JDK内置的拒绝策略

    • AbortPolicy(默认)

      直接抛出RejectedExecutionException异常阻止系统正常运行

    • CallerRunsPolicy

      ”调用者运行“一种调节机制,该策略既不会抛弃任务,也不会抛出异常,而是将某些任务回退到调用者,从而降低新任务的流量

    • DiscardOldestPolicy

      抛弃队列中等待最久的任务,然后把当前任务加入队列中尝试再次提交当前任务

    • DiscardPolicy

      直接丢弃任务,不予任何处理也不抛异常。如果允许任务丢失,这是最好的一种方案

  3. 均实现了RejectedExecutionHandler接口

面试题:合理配置线程池你是如何考虑的?

  1. CPU密集型

    CPU密集的意思是该任务需要大量的运算,而没有阻塞,CPU一直全速运行

    CPU密集任务只有在真正多核CPU上才可能得到加速(通过多线程)

    而在单核CPU上,无论你开几个模拟的多线程该任务都不可能得到加速,因为CPU总的运算能力就那些

    CPU密集型任务配置尽可能少的线程数量:

    ==一般公式:CPU核数+1个线程的线程池==

  2. IO密集型

    • 由于IO密集型任务线程并不是一直在执行任务,则应配置经可能多的线程,如CPU核数 * 2

    • IO密集型,即该任务需要大量的IO,即大量的阻塞。

      在单线程上运行IO密集型的任务会导致浪费大量的 CPU运算能力浪费在等待。

      所以在IO密集型任务中使用多线程可以大大的加速程序运行,即使在单核CPU上,这种加速主要就是利用了被浪费掉的阻塞时间。

      IO密集型时,大部分线程都阻塞,故需要多配置线程数:

      参考公式:==CPU核数/(1-阻塞系数) 阻塞系数在0.8~0.9之间==

      八核CPU:8/(1-0,9)=80

 

推荐:

深入理解ConcurrentModificationException并发修改异常

大厂面试题,两个线程相互通信的多种方法

手写一个快速排序算法

Docker入门

什么是缓存穿透、缓存击穿、缓存雪崩?如何预防?

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 并查集--病毒传染

    问题: 新型冠状病毒肺炎(Corona Virus Disease 2019,COVID-19),简称“新冠肺炎”,是指2019新型冠状病毒感染导致的肺炎。 如果一个感染者走入一个群体,那么这个群体需要被隔离! 小A同学被确诊为新冠感染,并且没有戴口罩!!!!!! 危!!! 时间紧迫!!!! 需要尽…...

    2024/4/23 14:26:01
  2. C语言求最小公倍数

    // 先使用辗转相除法求出最大公约数 // 最小公倍数=a*b/最大公约数 int lcm(int a, int b) {int temp;int mul = a * b;if (a < b) {temp = a;a = b;b = temp;}while (b != 0) {temp = a % b;a = b;b = temp;}return mul / a; }...

    2024/4/23 14:26:07
  3. 【Leet Code】2. 两数相加

    官网链接给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示…...

    2024/4/18 6:55:43
  4. 真机预览开发调试部分图片未展示

    我查到的原因: 1、图片因为中文名称导致url有中文 2、有时候支持png...

    2024/4/17 7:40:36
  5. Linux正常使用rz、sz命令上传、下载数据

    用SecureCRT工具连接linux服务器,rz上传文件。出现-bash: rz: command not found,安装lrzsz:命令: yum -y install lrzsz现在就可以正常使用rz、sz命令上传、下载数据了。 使用方法: 上传文件# rz filename下载文件# sz filename...

    2024/4/25 1:34:52
  6. 第十章 接口

    接口和抽象类提供了一种将接口与实现分离的更加结构化的方法。这种机制在编程语言中不常见,例如 C++ 只对这种概念有间接的支持。而在 Java 中存在这些关键字,说明这些思想很重要,Java 为它们提供了直接支持。首先,我们将学习抽象类,一种介于普通类和接口之间的折中手段。…...

    2024/4/17 7:40:42
  7. SQL 【hive建表&导入数据】

    HIVE创建表&导入数据创建表导入数据 创建表 1、直接在数据库中创建: USE Tmp_UbtDb; CREATE TABLE tableNameDemo (field1 STRING COMMENT field1 comment,field2 STRING COMMENT field2 comment)COMMENT table commentPARTITIONED BY(d STRING COMMENT date) -- 若无分区…...

    2024/4/17 7:42:06
  8. 将一个数字翻译成字符串

    问题描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法 求解思路 这是一道典型的动态规划问题,…...

    2024/4/17 7:41:54
  9. 3.新增用例——在selenium中使用unittest新增和修改测试用例

    **以Test_Yong为例** *注:如果一开始看不懂的可以从上个文章开始看起*一、test1——添加用例 登录进来之后会进入这样子的界面接下来我需要点击测试,进入用例,然后点击建用例下面是依次进入的代码self.driver.find_element_by_xpath(//*[@id="navbar"]/ul/li[4]/a…...

    2024/4/17 7:41:42
  10. P2580 于是他错误的点名开始了(STL或 trie树)

    题目传送门 题意:给你n个字符串,m次查询,每次查询一个字符串,如果原来有这个字符串且是第一次查询该串,输出OK,如果原来有这个字符串但是不是第一次查询,输出REPEAT,如果原来没有,则输出WRONG。 思路:map好像可以轻松过 。这里我用的是刚学的 trie树。把字符串存好之…...

    2024/4/19 4:28:38
  11. Fully Convolutional Region Proposal Networks for Multispectral Person Detection(CVPRWorkshop 2017)解读

    Fully Convolutional Region Proposal Networks for Multispectral Person Detection 一、Overview本文的思路主要来源于Faster R-CNN。已有研究表明,仅使用RPN结构检测的结果和Faster R-CNN的效果相差不大,因此本文的方法主要分为两个阶段:首先通过RPN结构对RGB信息和T信息…...

    2024/4/23 14:26:06
  12. 链表(2)/ 第二天 1/3

    下午一点四十开始第二个7题✔ 8. 回文链表(234)解题思路(边界条件要注意 用栈 不用栈 手写代码,注释思路 是否AC, 什么问题 9. 分割链表(725) 把链表分隔成 k 部分,每部分的长度都应该尽可能相同,排在前面的长度应该大于等于后面的。Input: root = [1, 2, 3, 4, 5, 6, …...

    2024/4/23 14:26:05
  13. java初级面试题整理汇总-附答案

    1.hashmap的数据结构是什么? 答:在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。 2.说一说java如何…...

    2024/4/23 14:25:58
  14. Python+PyQt5开发登入页面

    https://dipan.info/2020/04/02/Qt5%E5%BC%80%E5%8F%91%E7%99%BB%E5%85%A5%E9%A1%B5%E9%9D%A2/...

    2024/4/23 14:25:59
  15. Jmeter之用户自定义的变量

    配置元件:用户自定义的变量用户定义变量可以设置脚本的全局变量。例如脚本中线程组的并发数、http取样器中的IP地址、端口号、协议、参数化文件路径都可以在这里定义。然后在线程组或取样器相对应的字段中引用“用户定义的变量” 名称。用户自定义变量功能非常实用,尤其是脚本…...

    2024/4/23 12:55:58
  16. 线上笔试心得

    线上笔试心得1.选择题2.编程题 也算不得什么心得,博主也只是一个小白。分享一下第一次做笔试的经历 这次参加的是java研发部的线上笔试,时间是两个小时,选择题20道,一题2分,一共为20分。编程题只有三道,一道题30分。要求打开摄像头,不能弹出qq,微信等聊天软件,,至于弹…...

    2024/4/23 14:26:01
  17. 版心和布局流程

    版心和布局流程 “版心”(可视区) 是指网页中主体内容所在的区域。 一般在浏览器窗口中水平居中显示,常见的宽度值为960px、980px、1000px、1200px等。 布局流程 1、确定页面的版心(可视区)。2、分析页面中的行模块,以及每个行模块中的列模块。3、制作HTML结构 。4、CSS初始…...

    2024/4/23 14:26:00
  18. Java学习笔记(一)数组对象

    1,定义一个类class Dog{};2,声明一个装载类实例化对象的数组Dog [] pets=new Dog[] ;3,为数组每一个元素实例化对象 Pets[0]=new Dog(30);4,实例化开发通讯录 package chapter01;//框架搭建,待完善import java.util.Scanner;// 1.import导入Scanner类public class FengBo {p…...

    2024/4/25 11:59:32
  19. LeetCode刷题笔记——22. 括号生成

    难度:中等 一、题目描述:二、解题分析: 1、解析2、代码实现 class Solution:def generateParenthesis(self, n: int) -> List[str]:if n==0:return [] pre = set({(),}) for i in range(n-1):now = set()for st in pre:l = len(st)for index in range(l):n…...

    2024/4/23 14:25:54
  20. 计算机网络高分笔记-物理层

    ...

    2024/4/24 16:49:59

最新文章

  1. 非关系型数据库NoSQL-

    MongoDB MongoDB是一个开源的、面向文档的NoSQL数据库管理系统。它使用文档模型来存储数据&#xff0c;将数据以类似于JSON的BSON&#xff08;二进制JSON&#xff09;格式存储在集合中。MongoDB支持丰富的查询语言和索引&#xff0c;具有高性能、可扩展性和灵活性的特点。与传统…...

    2024/5/4 12:53:03
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. Django实现的登录注册功能

    1 前言 在Web开发中&#xff0c;用户登录和注册是最基本且必不可少的功能。Django&#xff0c;作为一个高级的Python Web框架&#xff0c;为我们提供了强大的工具和库来快速实现这些功能。下面&#xff0c;我将详细介绍如何使用Django来实现用户登录和注册功能。 2 功能介绍 …...

    2024/5/1 13:23:09
  4. AI小程序的创业方向:深度思考与逻辑引领

    随着人工智能技术的快速发展&#xff0c;AI小程序逐渐成为创业的新热点。在这个充满机遇与挑战的时代&#xff0c;我们有必要深入探讨AI小程序的创业方向&#xff0c;以把握未来的发展趋势。 一、目标市场定位 首先&#xff0c;我们要明确目标市场。针对不同的用户需求&#x…...

    2024/5/4 1:53:15
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/3 23:10:03
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/4 2:59:34
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57