带动画的网站模板东莞做网站哪家好

diannao/2026/1/21 19:54:07/文章来源:
带动画的网站模板,东莞做网站哪家好,网站运行及维护,浏览器推广怎么收费【多线程】线程池Future和FutureTask 【一】Future概述【1】Future的出现原因【2】Future结构图 【二】Future详解【1】Future接口源码【2】Future的5个方法【3】ThreadPoolExecutor提供了三个方法#xff0c;来获取返回值#xff08;1#xff09;submit(Runnable r)#x… 【多线程】线程池Future和FutureTask 【一】Future概述【1】Future的出现原因【2】Future结构图 【二】Future详解【1】Future接口源码【2】Future的5个方法【3】ThreadPoolExecutor提供了三个方法来获取返回值1submit(Runnable r)2submit(Runnable r,T result)3submit(Callable c) 【推荐】 【4】Future使用案例1Future的案例一2FutureTask的案例二3FutureTask的案例三4FutureTask的案例四 【5】总结 【三】其他案例【1】FutureTask获取分布式锁【2】FutureTask监控任务的处理时长是否超时【3】FutureTask监控任务的处理时长是否超时2 【一】Future概述 【1】Future的出现原因 我们在Java线程池ThreadPoolExecutor使用详解中利用execute(Runnable r)方法来异步执行任务但是有一个缺点就是无法执行带有返回值的任务。 【2】Future结构图 FutureTask实现了RunnableFuture接口而RunnableFuture继承了Runnable和Future也就是说FutureTask既是Runnable也是Future。 【二】Future详解 Future表示一个任务的周期并提供了相应的方法来判断是否已经完成或者取消以及获取任务的结果和取消任务。 1Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。必要时可以通过get方法获取执行结果该方法会阻塞直到任务返回结果。 2Future是一个接口是无法生成一个实例的所以又有了FutureTask。FutureTask实现了RunnableFuture接口RunnableFuture接口又实现了Runnable接口和Future接口。所以FutureTask既可以被当做Runnable来执行也可以被当做Future来获取Callable的返回结果。 【1】Future接口源码 public interface FutureV {boolean cancel(boolean mayInterruptIfRunning);boolean isCancelled();boolean isDone();V get() throws InterruptedException, ExecutionException;V get(long timeout, TimeUnit unit)throws InterruptedException, ExecutionException, TimeoutException; } 【2】Future的5个方法 1、cancel()取消一个任务并返回取消结果。参数表示是否中断线程 2、isCancelled()任务是否取消成功 3、isDone()判断当前任务是否执行完毕包括正常执行完毕、执行异常或者任务取消 4、get()获取任务执行结果任务结束之前会阻塞 5、get(long count,TimeUnit)在指定时间内尝试获取执行结果。若超时则抛出超时异常 【3】ThreadPoolExecutor提供了三个方法来获取返回值 1submit(Runnable r) 因为Runnable的run方法是void的没有返回值所以Future.get()是null。 源码 static final class RunnableAdapterT implements CallableT {final Runnable task;final T result;RunnableAdapter(Runnable task, T result) {this.task task;this.result result;}public T call() {task.run();return result;} }将runnable封装为一个自定义的Callable对象result为null具体的流程可以看最底下的源码。 2submit(Runnable r,T result) T result就是传入的对象。我们可以通过自定义Runnable来将result传入到自定义的Runnable中在run()方法中对结果写入到result中。其中返回的对象future.get()result。 案例 public class TestThreadExecutor {public static void main(String[] args) throws ExecutionException, InterruptedException {BlockingQueue queue new LinkedBlockingQueue(10);ThreadPoolExecutor executor new ThreadPoolExecutor(4,10,2,TimeUnit.SECONDS,queue);//设置coreThread如果超时也会被取消executor.allowCoreThreadTimeOut(true);int[] arr new int[2];MyRunnable runnable new MyRunnable(arr);Future f executor.submit(runnable,arr);System.out.println(Arrays.toString((int[])f.get()));} } ------------------------------------------------------------------------- class MyRunnable implements Runnable {private int[] arr;public MyRunnable(int[] arr){this.arr arr;}Overridepublic void run() {arr[0] 111;} } 源码 static final class RunnableAdapterT implements CallableT {final Runnable task;final T result;RunnableAdapter(Runnable task, T result) {this.task task;this.result result;}public T call() {task.run();return result;} } 将runnable封装为一个自定义的Callable对象result为传入的对象具体的流程可以看最底下的源码。 3submit(Callable c) 【推荐】 submit(Runnable r,T result)不太好用需要每次都自定义Runnable和result太麻烦了。 Callable更加好用传入一个Callable对象就行。 Callable和Runnable是大致一样只不过Callable能够返回值。 Callable callable new Callable() {Overridepublic Object call() throws Exception {String name 777;name 6666;return name;} };Future f executor.submit(callable); System.out.println(f.get());从上述代码可以看出Callable中call()返回的对象就是future.get()得到的对象。 源码 public T FutureT submit(CallableT task) {if (task null) throw new NullPointerException();RunnableFutureT ftask newTaskFor(task);//利用callable新建了一个FutureTaskexecute(ftask);//会调用ftask.run()方法return ftask;//返回一个FutureTask对象 }protected T RunnableFutureT newTaskFor(CallableT callable) {return new FutureTaskT(callable); }public FutureTask(CallableV callable) {if (callable null)throw new NullPointerException();this.callable callable;this.state NEW; }public void run() {if (state ! NEW ||!UNSAFE.compareAndSwapObject(this, runnerOffset,null, Thread.currentThread()))return;try {CallableV c callable;if (c ! null state NEW) {V result;boolean ran;try {//执行callable.call()result c.call();ran true;} catch (Throwable ex) {result null;ran false;setException(ex);}if (ran)//将outcome设置为resultset(result);}} finally {runner null;int s state;if (s INTERRUPTING)handlePossibleCancellationInterrupt(s);} }protected void set(V v) {if (UNSAFE.compareAndSwapInt(this, stateOffset, NEW, COMPLETING)) {//这里这里这里outcome v;UNSAFE.putOrderedInt(this, stateOffset, NORMAL); // final statefinishCompletion();} } future.get() public V get() throws InterruptedException, ExecutionException {int s state;if (s COMPLETING)//阻塞s awaitDone(false, 0L);//这里这里这里return report(s); }private V report(int s) throws ExecutionException {//这里这里这里Object x outcome;if (s NORMAL)//这里这里这里return (V)x;if (s CANCELLED)throw new CancellationException();throw new ExecutionException((Throwable)x); } 【4】Future使用案例 1Future的案例一 import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future;public class Main {public static void main(String[] args) {ExecutorService executorService Executors.newCachedThreadPool();ListFutureString resultList new ArrayListFutureString();// 创建10个任务并执行for (int i 0; i 10; i) {// 使用ExecutorService执行Callable类型的任务并将结果保存在future变量中FutureString future executorService.submit(new TaskWithResult(i));// 将任务执行结果存储到List中resultList.add(future);}executorService.shutdown();// 遍历任务的结果for (FutureString fs : resultList) {try {System.out.println(fs.get()); // 打印各个线程任务执行的结果} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {executorService.shutdownNow();e.printStackTrace();return;}}} } class TaskWithResult implements CallableString {private int id;public TaskWithResult(int id) {this.id id;}/*** 任务的具体过程一旦任务传给ExecutorService的submit方法则该方法自动在一个线程上执行。** return* throws Exception*/public String call() throws Exception {System.out.println(call()方法被自动调用,干活 Thread.currentThread().getName());if (new Random().nextBoolean())throw new TaskException(Meet error in task. Thread.currentThread().getName());// 一个模拟耗时的操作for (int i 999999999; i 0; i--);return call()方法被自动调用任务的结果是 id Thread.currentThread().getName();} }class TaskException extends Exception {public TaskException(String message) {super(message);} } 执行结果 call()方法被自动调用,干活 pool-1-thread-2 call()方法被自动调用,干活 pool-1-thread-6 call()方法被自动调用,干活 pool-1-thread-1 call()方法被自动调用任务的结果是0 pool-1-thread-1 call()方法被自动调用任务的结果是1 pool-1-thread-2 call()方法被自动调用,干活 pool-1-thread-4 call()方法被自动调用,干活 pool-1-thread-9 call()方法被自动调用,干活 pool-1-thread-8 call()方法被自动调用,干活 pool-1-thread-10 call()方法被自动调用,干活 pool-1-thread-5 call()方法被自动调用,干活 pool-1-thread-3 call()方法被自动调用,干活 pool-1-thread-7 call()方法被自动调用任务的结果是2 pool-1-thread-3 call()方法被自动调用任务的结果是3 pool-1-thread-4 java.util.concurrent.ExecutionException: com.company.TaskException: Meet error in task.pool-1-thread-5 at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at com.company.Main.main(Main.java:29) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) Caused by: com.company.TaskException: Meet error in task.pool-1-thread-5 at com.company.TaskWithResult.call(Main.java:56) at com.company.TaskWithResult.call(Main.java:40) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)2FutureTask的案例二 FutureTask是一个具体的实现类ThreadPoolExecutor的submit方法返回的就是一个Future的实现这个实现就是FutureTask的一个具体实例FutureTask帮助实现了具体的任务执行以及和Future接口中的get方法的关联。 import java.util.Date; import java.text.SimpleDateFormat; import java.util.Random; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask;public class Main {public static void main(String[] args) {SimpleDateFormat df new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);// 初始化一个Callable对象和FutureTask对象Callable pAccount new PrivateAccount();FutureTask futureTask new FutureTask(pAccount);// 使用futureTask创建一个线程Thread pAccountThread new Thread(futureTask);System.out.println(futureTask线程现在开始启动启动时间为 df.format(new Date()));pAccountThread.start();System.out.println(futureTask线程开始执行其他任务);// 从其他账户获取总金额int totalMoney new Random().nextInt(100000);System.out.println(现在你在其他账户中的总金额为 totalMoney);System.out.println(等待私有账户总金额统计完毕...);// 测试后台的计算线程是否完成如果未完成则等待while (!futureTask.isDone()) {try {Thread.sleep(500);System.out.println(私有账户计算未完成继续等待...);} catch (InterruptedException e) {e.printStackTrace();}}System.out.println(futureTask线程计算完毕此时时间为 df.format(new Date()));Integer privateAccountMoney null;try {privateAccountMoney (Integer) futureTask.get();} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}System.out.println(您现在的总金额为 totalMoney ||privateAccountMoney.intValue());} }class PrivateAccount implements Callable {Integer totalMoney;Overridepublic Object call() throws Exception {Thread.sleep(5000);totalMoney new Integer(new Random().nextInt(10000));System.out.println(您当前有 totalMoney 在您的私有账户中);return totalMoney;} } 执行结果 futureTask线程现在开始启动启动时间为2016-11-30 16:34:57 futureTask线程开始执行其他任务 现在你在其他账户中的总金额为17113 等待私有账户总金额统计完毕… 私有账户计算未完成继续等待… 私有账户计算未完成继续等待… 私有账户计算未完成继续等待… 私有账户计算未完成继续等待… 私有账户计算未完成继续等待… 私有账户计算未完成继续等待… 私有账户计算未完成继续等待… 私有账户计算未完成继续等待… 私有账户计算未完成继续等待… 您当前有8776在您的私有账户中 私有账户计算未完成继续等待… futureTask线程计算完毕此时时间为2016-11-30 16:35:02 您现在的总金额为17113||87763FutureTask的案例三 import java.util.Date; import java.text.SimpleDateFormat; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask;public class Main {public static void main(String[] args) {SimpleDateFormat df new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);FutureTaskString futureTasknew FutureTask(new CallableString() {//Overridepublic String call() throws Exception {// TODO Auto-generated method stubreturn 回调完成;}});Thread thread new Thread(futureTask);System.out.println(启动时间为 df.format(new Date()));thread.start();try {String strfutureTask.get();if(str.equals(回调完成))System.out.println(异步任务完成!);elseSystem.out.println(Completed!);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ExecutionException e) {// TODO Auto-generated catch blocke.printStackTrace();}} } 执行结果 启动时间为2016-12-01 09:37:03 异步任务完成!4FutureTask的案例四 public static void main(String[] args) {ExecutorService service Executors.newCachedThreadPool();Task task new Task();FutureTaskInteger futureTask new FutureTask(task);service.submit(futureTask);service.shutdown();System.out.println(主线程正在执行任务。。。);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}try {//阻塞直至任务完成System.out.println(-------------------------------------);System.out.println(执行结果为 futureTask.get());} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}System.out.println(任务执行完成。。。);}static class Task implements CallableInteger {Overridepublic Integer call() throws Exception {try {System.out.println(从线程正在执行任务。。。);Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}int num 0;for (int i 0; i 100; i) {num i;}return num;}} futureTask.get()执行时如果该任务已经执行完了则直接返回执行结果如果没有执行完则线程会阻塞在这里直至任务执行完毕。还可以用get(long timeout, TimeUnit unit)来获取执行结果如果在指定时间内还没获取到结果就直接返回null。 【5】总结 总的来说Future模式的思想就是在子线程进行执行的时候主线程不阻塞继续执行。等到主线程需要子线程的结果的时候再去获取子线程的结果此时子线程没有执行完成的话就会阻塞直至执行完成。主线程还可以根据一定的业务逻辑去判断是否要取消执行子线程还可以设置一个超时时间。若阻塞时间超过了超时时间子线程仍然没有执行完成的话可以直接返回null。 【三】其他案例 【1】FutureTask获取分布式锁 String taskInstanceKey getTaskInstanceKey(beSubmitedTask); //对实例加锁 RLock instanceLock redissonClient.getLock(taskInstanceKey); FutureTaskBoolean futureTask new FutureTask(() - instanceLock.tryLock()); new Thread(futureTask).start(); if (!futureTask.get()) {log.info(指标固化获取锁失败{}, taskInstanceKey);return; }使用futureTask 取调用tryLock尝试获取锁如果返回值为空说明获取锁失败 【2】FutureTask监控任务的处理时长是否超时 这里采用FutureTask开启一个线程调用jdbc执行方法主方法在10分钟后进行查询是否完成根据isDone的结果去处理简单介绍下FutureTask几个常用的方法 1cancel方法用来取消任务如果取消任务成功则返回true如果取消任务失败则返回false。参数mayInterruptIfRunning表示是否允许取消正在执行却没有执行完毕的任务如果设置true则表示可以取消正在执行过程中的任务。如果任务已经完成则无论mayInterruptIfRunning为true还是false此方法肯定返回false即如果取消已经完成的任务会返回false如果任务正在执行若mayInterruptIfRunning设置为true则返回true若mayInterruptIfRunning设置为false则返回false如果任务还没有执行则无论mayInterruptIfRunning为true还是false肯定返回true。 2isCancelled方法表示任务是否被取消成功如果在任务正常完成前被取消成功则返回 true。 3isDone方法表示任务是否已经完成若任务完成则返回true 4get()方法用来获取执行结果这个方法会产生阻塞会一直等到任务执行完毕才返回 5get(long timeout, TimeUnit unit)用来获取执行结果如果在指定时间内还没获取到结果就直接返回null。 这里使用的是isDone去完成当然也可以使用et(long timeout, TimeUnit unit)定时去获取返回结果 上代码 public static void readSqlThred(String sqlTest) {ExecutorService executor Executors.newSingleThreadExecutor();FutureTaskString future new FutureTaskString(new CallableString() {Overridepublic String call() throws Exception {dealWithSql(sqlTest);//执行sqlreturn 执行完成;}});executor.execute(future);try {Thread.sleep(1000*6);if(future.isDone()) {System.out.println(sql执行完毕);}else {System.out.println(警告sql未执行完毕开始发送邮件..............);}}catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} } 这里我是让线程睡了10分钟10分钟后去取这个方法是否执行完成 【3】FutureTask监控任务的处理时长是否超时2 1程序中某方法挺耗时但想超过XX数值则按失败算 2程序中需要调用外部接口要考虑外部接口不可用或卡死问题。 针对以上问题我们都想在程序中给某方法添加超时判断运行程序等待该方法多长时间超过则另作处理。 public static void main(String[] args){Thread t null;try{FutureTaskBoolean task new FutureTaskBoolean(new CallableBoolean() {public Boolean call() throws Exception {Thread.sleep(10*100);//处理方法return true; //返回处理结果}});t new Thread(task);t.start();boolean bl task.get(10*10, TimeUnit.MILLISECONDS); //允许阻塞等待方法处理1秒超出则抛异常System.out.println(bl);System.out.println(t.getState());}catch(Exception e1){e1.printStackTrace();System.out.println(t.getState());t.interrupt(); //在超时情况下上面新生成的线程不会关闭直到方法处理完毕需要中断}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89531.shtml

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

相关文章

wordpress站点优化河源建网站

Backtrader 文档学习- Broker - Position 1. 概述 在backtrader中,Position对象是由Strategy对象创建的,用于跟踪策略的持仓。 通常在策略中使用以下代码检查资产的仓位: position(属性)或 getposition(dataNone, br…

阿里云虚拟主机多网站电子商务平台加盟

MongoDB分片技术 介绍 ​ 分片(sharding)是MongoDB用来将大型集合分割到不同服务器上采用的方法。分片这种说法起源于关系型数据库。但是实际上非关系型数据库在分片方面相比于传统的关系型数据库更有优势。 ​ 与MySQL分库方案对比,MongoDB…

新能源汽车十大名牌徐州英文网站优化

\w([-.]\w)*((aa.com)|(bb.com)|(163.com)) 这个正则表达式可实现匹配含有aa.com或bb.com或163.com 的email 转载于:https://www.cnblogs.com/inbase/archive/2013/04/01/2994479.html

湖南平台网站建设企业网页制作培训上海排名前十

1、复制多行 number yy 2、光标跳转到指定行 :line 3、插入当前光标到上行 O 4、插入当前光标到下行 o

有哪个网站可以查别人做没做过牢吗网站服务器维护工具

定时校正需求: mysql和redis两个系统, mysql增加数据成功, redis未必添加成功, 这样两个系统的数据可能出现偏差, 所以需要定期对mysql和redis的数据进行同步解决方案: 每天执行一次定时任务, 让mysql数据和redis数据进行同步crontab是linux系统一个内置命令, 依赖于linux系统,…

怎么根据网站前端做网站后台wordpress 下载页插件下载

新帐号建立当不加-D参数,useradd指令使用命令列来指定新帐号的设定值and使用系统上的预设值.新使用者帐号将产生一些系统档案,使用者目录建立,拷备起始档案等,这些均可以利用命令列选项指定。此版本为RedHatLinux提供,可帮每个新加…

网站竞价推广哪个好电脑在哪网站接做扇子单

我们再来看下 iam-apiserver 中的核心功能实现。 这些关键代码设计分为 3 类,分别是应用框架相关的特性、编程规范相关的特性和其他特性。 应用框架相关的特性 应用框架相关的特性包括三个,分别是优雅关停、健康检查和插件化加载中间件。 优雅关停 …

哪些是asp网站iis网页提示网站建设中

什么是函数指针?如何定义和使用函数指针? 函数指针是指向函数的指针,它存储了函数的地址,通过这个地址,程序可以间接地调用并执行这个函数。函数指针在C语言中常用于实现回调函数、函数表等高级功能,提高了…

高端网站建设机构坪地网站建设信息

掘金输出的时间数据处理方法掘金在为使用者提供数据时,有一类数据处理起来有些麻烦,这类数据就是时间数据。它们长这样:或者这样:查看一下它们的类型,发现有datetime,datetime64,Timestamp等等。这么多各种各样的类型&…

计算机应用技术专业网站开发方向wordpress网站排行榜

最近,我们想对MongoDB在大量连接中的行为进行基准测试。这使我不得不重新讨论该主题,并刷新关于如何在Linux服务器上创建大量连接和线程的记忆。在此过程中,我发现了一些没有使用过的新可调参数。MongoDB配置甚至MongoDB本身也可以选择限制传…

百度创建网站吗网站的设计

环境信息 minio版本 :最新 k8s 版本1.22 使用nfs作为共享存储 一.单节点安装包部署 脚本部署,一键部署,单节点应用于数据量小,一些缓存存储,比如gitlab-runner的产物数据,maven的打包依赖数据 #!/bin/bash# 步骤…

网站开发技术方案与实施手机钓鱼网站免费制作

LinkedHashSet是Set集合的一个实现,具有set集合不重复的特点,同时具有可预测的迭代顺序,也就是我们插入的顺序。并且linkedHashSet是一个非线程安全的集合。如果有多个线程同时访问当前linkedhashset集合容器,并且有一个线程对当前…

建站用什么搭建比较好电子商务网站建设技术解决方案

转载自 Java对象的引用类型 Java对象的引用类型有强引用,软引用,弱引用,虚引用和FinalReference,提供这几种引用类型的主要目的: 1.程序员可以通过不同的引用方式决定某些对象的生命周期; 2.利用JVM的垃圾回收机制&a…

求职网站怎么做关于网站建设的网站有哪些

在C#中,什么是委托(Delegate)?请简要说明委托的概念,并提供一个简单的示例说明如何使用委托。 答案: 委托的概念: 委托是一种类型,它允许将方法作为参数传递,使得可以…

电商设计网站哪个好哪些网站的简历做的比较好

蜂鸣器常用分类从两方面 声源类型:压电蜂鸣器( Piezoceramic Element Buzzers )、电磁蜂鸣器( Magnetic Buzzers ) 驱动类型:有源蜂鸣器( Indicators )、无源蜂鸣器( Transducers ) 一、电磁式蜂鸣器 无源电磁式设计电路 电磁蜂鸣器的线圈类似于电感&am…

东南亚cod建站工具住房和城乡建设部网站标准下载

本文介绍了OpenHub框架 -基于Apache Camel的新的开源集成解决方案。 本文回答了一些问题,为什么您应该关心另一个集成框架,强弱属性以及如何使用OpenHub启动新项目。 OpenHub框架是Apache Camel,但经过改进…… 当然,您只能使用A…

wordpress怎么设置跳站外链接网站型销售怎么做的

1.map是什么? map函数是Python中的一个内置函数,用于将一个函数应用到一个或多个可迭代对象的每个元素上,生成一个新的可迭代对象。它的一般形式是: map(function, iterable1, iterable2, ...)其中,function是一个函…

北京网站建设建设公司上海网站建设平台

Linear Decoders Deep Learning and Unsupervised Feature Learning Tutorial Solutions 以三层的稀疏编码神经网络而言,在sparse autoencoder中的输出层满足下面的公式 从公式中可以看出,a3的输出值是f函数的输出,而在普通的sparse autoenc…

广州商城建站搭建公司内部网站

1.概要这一系列将进行PrismWPF技术的实战讲解。实战项目内容选型为Email邮件收发的客户端(WeMail),项目结构简单方便大家理解。相关技术:C#、WPF、Prism软件开发环境:VS2019 、 .NET5 、 windows11需掌握技能&#xf…

利用业务时间做的网站与公司有关吗在百度上怎么搜到自己的网站

文章目录 openssl3.2 - xx_fetch函数参数名称字符串有效值列表概述笔记xx_fetch函数所在的头文件目录xx_fetch函数所在的头文件列表xx_fetch函数列表每个xx_fetch()API的字符串名称的有效值列表OSSL_DECODER *OSSL_DECODER_fetch();OSSL_ENCODER *OSSL_ENCODER_fetch();EVP_CIP…