Activity之间数据回传【Android、activity回传、结合实例】

news2024/11/19 15:15:14

任务要求

在Android应用中,有时需要从一个Activity向另一个Activity传递数据,并在第二个Activity处理后将结果传递回第一个Activity。

这种情况下,我们可以使用startActivityForResult()onActivityResult()方法来实现数据回传。

实现步骤

  1. 创建新的Android项目:
    打开Android Studio并创建一个新的Android项目,确保选择适当的项目名称和包名。
    在这里插入图片描述

  2. 创建两个Activity:
    在项目中创建两个Activity,一个用于发送数据,另一个用于接收和处理数据。
    右键单击app文件夹,然后选择New > Activity来创建这些Activity。

  3. 创建两个Activity:在项目中创建两个Activity,一个用于发送数据,另一个用于接收数据。分别命名它们为SendDataActivityReceiveDataActivity
    在这里插入图片描述
    在这里插入图片描述

  4. 设计SendDataActivity界面:在activity_send_data.xml中设计SendDataActivity的界面,添加一个EditText和一个Button,用于输入数据并发送它。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".SendDataActivity">
    
        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter data to send"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true" />
    
        <Button
            android:id="@+id/sendButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Send Data"
            android:layout_below="@id/editText"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="16dp" />
    
    </RelativeLayout>
    

实现效果
在这里插入图片描述

  1. 设计ReceiveDataActivity界面:在activity_receive_data.xml中设计ReceiveDataActivity的界面,添加一个TextView用于显示接收到的数据。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ReceiveDataActivity">

    <TextView
        android:id="@+id/receivedDataTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="这里将显示接收到的值"
        android:textSize="24sp"
        android:textColor="#FF5733"
        android:textStyle="bold"
        android:letterSpacing="0.05"
        android:lineSpacingExtra="8dp"
        android:background="#F2F2F2"
        android:padding="16dp"
        android:drawablePadding="8dp" />

    <Button
        android:id="@+id/returnButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="返回数据"
        android:layout_below="@id/receivedDataTextView"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="16dp" />

</RelativeLayout>

实现效果
在这里插入图片描述

  1. 在SendDataActivity中发送数据:在SendDataActivity.java中,使用startActivityForResult()发送数据到ReceiveDataActivity。首先,定义一个 请求码(可以是任何整数)和一个数据键来标识数据。
package com.leo.activitytransfer;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class SendDataActivity extends AppCompatActivity {

    private static final int REQUEST_CODE = 1;
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_send_data);

        editText = findViewById(R.id.editText);
        Button sendButton = findViewById(R.id.sendButton);

        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String dataToSend = editText.getText().toString();
                Intent intent = new Intent(SendDataActivity.this, ReceiveDataActivity.class);
                intent.putExtra("data", dataToSend);
                startActivityForResult(intent, REQUEST_CODE);
            }
        });
    }

}
  1. 在ReceiveDataActivity中接收数据:在ReceiveDataActivity.java中,使用getIntent()来接收来自SendDataActivity的数据,并将其显示在TextView中。
package com.leo.activitytransfer;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class ReceiveDataActivity extends AppCompatActivity {

    private TextView receivedDataTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_receive_data);

        receivedDataTextView = findViewById(R.id.receivedDataTextView);

        Intent intent = getIntent();
        if (intent != null) {
            String receivedData = intent.getStringExtra("data");
            if (receivedData != null) {
                receivedDataTextView.setText(receivedData);
            }
        }
    }
}
  1. 处理回传数据:在SendDataActivity中,使用onActivityResult()方法来处理从ReceiveDataActivity回传的数据。

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE) {
            if (resultCode == RESULT_OK && data != null) {
                String receivedData = data.getStringExtra("dataFromReceive");
                // 处理回传的数据
                System.out.println(receivedData);
            }
        }
    }
    
  2. 在ReceiveDataActivity中回传数据:在ReceiveDataActivity中,如果需要回传数据给SendDataActivity,可以通过setResult()方法进行回传。

     @Override
     public void onBackPressed() {
         // 在返回键按下时回传数据给SendDataActivity
         String dataToReturn = "Data from ReceiveDataActivity";
         Intent resultIntent = new Intent();
         resultIntent.putExtra("dataFromReceive", dataToReturn);
         setResult(RESULT_OK, resultIntent);
         finish();
     }
    

当然,也可以直接设置返回按钮的响应事件

    private TextView receivedDataTextView;
    private Button returnButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_receive_data);

        receivedDataTextView = findViewById(R.id.receivedDataTextView);
        returnButton = findViewById(R.id.returnButton);

        Intent intent = getIntent();
        if (intent != null) {
            String receivedData = intent.getStringExtra("data");
            if (receivedData != null) {
                receivedDataTextView.setText(receivedData);
            }
        }

        returnButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 在按钮点击事件中触发数据回传
                String dataToReturn = "Data from ReceiveDataActivity";
                Intent resultIntent = new Intent();
                resultIntent.putExtra("dataFromReceive", dataToReturn);
                setResult(RESULT_OK, resultIntent);
                finish();
            }
        });
    }
  1. 配置AndroidManifest.xml:确保在AndroidManifest.xml文件中正确配置两个Activity的声明。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools">

 <application
     android:allowBackup="true"
     android:dataExtractionRules="@xml/data_extraction_rules"
     android:fullBackupContent="@xml/backup_rules"
     android:icon="@mipmap/ic_launcher"
     android:label="@string/app_name"
     android:roundIcon="@mipmap/ic_launcher_round"
     android:supportsRtl="true"
     android:theme="@style/Theme.AppCompat.DayNight"
     tools:targetApi="31">
     <activity
         android:name=".SendDataActivity"
         android:exported="true"
         android:label="@string/app_name"
         android:theme="@style/Theme.AppCompat.DayNight">
         <intent-filter>
             <action android:name="android.intent.action.MAIN" />

             <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
     </activity>
     <activity
         android:name=".ReceiveDataActivity"
         android:exported="false" />
 </application>

</manifest>

实现效果
请添加图片描述

下面我将解释一下原理,并验证是否成功回传了数据。

  1. 原理:

    • 当你从SendDataActivity启动ReceiveDataActivity时,你使用startActivityForResult()方法,传递了一个请求码(REQUEST_CODE)。
    • ReceiveDataActivity中,当用户按下返回键或者点击returnButton按钮时,你设置了回传的数据,并调用了setResult()方法来设置结果码和传递数据。
    • 然后,ReceiveDataActivity调用了finish()来关闭自身,将数据回传给调用它的SendDataActivity
    • SendDataActivity中,你实现了onActivityResult()方法,在这个方法中,你检查返回的请求码和结果码,如果它们符合预期,就从data中提取回传的数据。
  2. 验证是否成功回传了数据:

    • ReceiveDataActivity中,你在按钮点击事件和onBackPressed()方法中都设置了回传数据。这确保了不论用户是点击按钮还是返回键,都会回传数据。
    • SendDataActivity中,你实现了onActivityResult()方法,用于接收回传的数据。

要验证是否成功回传了数据,你可以按照以下步骤进行:

  1. 运行你的应用程序并打开SendDataActivity
  2. SendDataActivity中输入一些数据,然后点击发送按钮。
  3. 这将启动ReceiveDataActivity,并将数据传递给它。
  4. ReceiveDataActivity中,你可以看到传递的数据显示在receivedDataTextView中。
  5. 然后,你可以点击返回按钮或按下返回键,ReceiveDataActivity将被关闭,并将数据回传给SendDataActivity
  6. SendDataActivityonActivityResult()方法中,你会看到回传的数据。你已经在这个方法中使用了System.out.println()来打印数据,所以你可以在控制台中看到打印的数据。

如果你看到控制台中输出的数据是"返回的数据 Data from ReceiveDataActivity",那就表示成功回传了数据。这就是验证是否成功回传了数据的方式。

请确保在SendDataActivity中使用正确的请求码(REQUEST_CODE),并检查回传的结果码和数据是否符合你的预期,以确保数据回传的成功与否。

应用实例: 实现图片选择并显示:

如果要实现图片选择和显示功能,我们可以使用Android的图像选择器来实现。在接收数据的Activity中,启动图像选择器,然后在成功选择图像后,将图像的URI传递给发送数据的Activity。

1. 在AndroidManifest.xml中添加权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

这是为了获取访问外部存储的权限。

2. 创建placeholder_image.xml文件:

为了在ImageView中显示默认的占位图像,我们可以直接在虚拟机中拍照

在这里插入图片描述
在这里插入图片描述

3. 修改布局文件:
activity_send_data.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".SendDataActivity">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter text..."
        android:layout_marginBottom="16dp"
        />

    <Button
        android:id="@+id/sendButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Send Data"
        android:layout_below="@id/editText"
        />

    <!-- 添加一个按钮来选择图片 -->
    <Button
        android:id="@+id/chooseImageButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Choose Image"
        android:layout_below="@id/sendButton"
        android:layout_marginTop="16dp"
        />

    <!-- 用于显示选择的图片 -->
    <ImageView
        android:id="@+id/selectedImageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/chooseImageButton"
        android:layout_marginTop="16dp"
        android:visibility="gone"
    />
</RelativeLayout>

这里我们添加了一个ImageView用于显示选择的图片,并添加了一个按钮用于触发图片选择操作。
实现效果
在这里插入图片描述

activity_receive_data.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".ReceiveDataActivity">

    <TextView
        android:id="@+id/receivedDataTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:text=""
        />

    <Button
        android:id="@+id/returnButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Return Data"
        android:layout_below="@id/receivedDataTextView"
        />

    <!-- 添加一个ImageView来显示选择的图片 -->
    <ImageView
        android:id="@+id/receivedImageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/returnButton"
        android:layout_marginTop="16dp"
        android:visibility="gone"
    />
</RelativeLayout>

3. 修改activity文件:
SendDataActivity.java

package com.leo.transfer;

import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class SendDataActivity extends AppCompatActivity {

    private static final int REQUEST_CODE = 1;
    private EditText editText;
    private ImageView selectedImageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_send_data);

        editText = findViewById(R.id.editText);
        Button sendButton = findViewById(R.id.sendButton);
        selectedImageView = findViewById(R.id.selectedImageView); // 添加ImageView的引用

        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String dataToSend = editText.getText().toString();
                Intent intent = new Intent(SendDataActivity.this, ReceiveDataActivity.class);
                intent.putExtra("data", dataToSend);
                startActivityForResult(intent, REQUEST_CODE);
            }
        });

        // 添加按钮点击事件来选择图片
        Button chooseImageButton = findViewById(R.id.chooseImageButton);
        chooseImageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 打开系统图库应用
                openGallery();
            }
        });
    }

    // 打开系统图库应用
    private void openGallery() {
        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(intent, REQUEST_CODE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
                if (data != null) {
                    String receivedData = data.getStringExtra("dataFromReceive");
                    // 处理回传的文本数据
                    // ...

                    // 处理回传的图片数据
                    Uri selectedImageUri = data.getData();
                    if (selectedImageUri != null) {
                        Intent intent = new Intent(SendDataActivity.this, ReceiveDataActivity.class);
                        intent.putExtra("dataFromSend", receivedData);
                        intent.putExtra("imageUri", selectedImageUri.toString());
                        startActivityForResult(intent, REQUEST_CODE);
                    }
                }
            }
        }
    }

}

这个代码中,我们首先在onCreate方法中初始化了ImageView和按钮。然后,在按钮的点击事件中,我们启动了图库选择图片的意图。

onActivityResult方法中,我们检查是否返回了正确的请求码(REQUEST_CODE)和结果码。如果一切正常,我们获取选中的图片的URI,并使用MediaStore.Images.Media.getBitmap()方法将图片加载到ImageView中,从而显示出来。

ReceiveDataActivity.java

package com.leo.transfer;

import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class ReceiveDataActivity extends AppCompatActivity {

    private TextView receivedDataTextView;
    private ImageView receivedImageView;
    private Button returnButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_receive_data);

        receivedDataTextView = findViewById(R.id.receivedDataTextView);
        receivedImageView = findViewById(R.id.receivedImageView); // 添加ImageView的引用
        returnButton = findViewById(R.id.returnButton);

        Intent intent = getIntent();
        if (intent != null) {
            String receivedData = intent.getStringExtra("dataFromSend");
            if (receivedData != null) {
                receivedDataTextView.setText(receivedData);
            }

            String imageUriString = intent.getStringExtra("imageUri");
            if (imageUriString != null) {
                Uri imageUri = Uri.parse(imageUriString);
                try {
                    Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
                    receivedImageView.setVisibility(View.VISIBLE);
                    receivedImageView.setImageBitmap(bitmap);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

        returnButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 在按钮点击事件中触发数据回传
                String dataToReturn = "Data from ReceiveDataActivity";
                Intent resultIntent = new Intent();
                resultIntent.putExtra("dataFromReceive", dataToReturn);
                setResult(RESULT_OK, resultIntent);
                finish();
            }
        });
    }

    @Override
    public void onBackPressed() {
        // 在返回键按下时回传数据给SendDataActivity
        String dataToReturn = "Data from ReceiveDataActivity";
        Intent resultIntent = new Intent();
        resultIntent.putExtra("dataFromReceive", dataToReturn);
        setResult(RESULT_OK, resultIntent);
        finish();
    }
}

现在,我们的应用程序能够允许用户选择图片,并在ReceiveDataActivity中显示它。按照以下步骤验证:

  1. 运行程序,并打开SendDataActivity
  2. SendDataActivity中点击 “Select Image” 按钮。
  3. 选择一个图片(从图库中选择)。
  4. 选中的图片应该显示在ReceiveDataActivityImageView中。

实现效果
请添加图片描述

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

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

相关文章

Day-07 修改 Nginx 配置文件

至此&#xff1a; 简单的 Docker 安装 Nginx并启动算是成功了! ps: 如何修改 Nginx的配置、更改nginx 的资源文件&#xff1f; eg&#xff1a; 1、可以将容器中的目录和本机目录做映射。 2、达到修改本机目录文件就影响到容器中的文件。 1.本机创建实例文件夹 新建目录&#x…

图像拼接后丢失数据,转tiff报错rasterfile failed: an unknown

图像拼接后丢失数据 不仅是数据丢失了&#xff0c;还有个未知原因报错 部分数据存在值不存在的情况 原因 处理遥感数据很容易&#xff0c;磁盘爆满了 解决方案 清理一些无用数据&#xff0c;准备买个2T的外接硬盘用着了。 然后重新做处理

获取沪深300的所有个股列表

脚本&#xff1a; import requests from bs4 import BeautifulSoupurl "https://q.stock.sohu.com/cn/bk_4444.shtml" response requests.get(url) soup BeautifulSoup(response.text, "html.parser")# 找到包含class为e1的元素 elements soup.find_a…

计算机毕设 大数据房价预测分析与可视

文章目录 0 前言1 课题背景2 导入相关的数据 3 观察各项主要特征与房屋售价的关系4 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟…

战火使命攻略,高级回响怎么出现

《战火使命》中&#xff0c;高级回响材料是每个玩家追求的梦想&#xff0c;因为它们不仅能够提升角色的实力&#xff0c;还能让你在战场上独具风采。本战火使命攻略将详细介绍三种获取高级回响的方法&#xff0c;助你在游戏中更加强大&#xff01; 关注【娱乐天梯】&#xff0c…

数据结构-图-基础知识

图 图的基本概念图的概念顶点和边有向图和无向图完全图有向完全图无向完全图 邻接顶点顶点的度路径和路径长度简单路径和回路子图生成树 连通图强连通图 图的存储结构邻接矩阵邻接表 图的遍历BFSDFS 图的基本概念 图的概念 &#x1f680;图是由顶点集合及顶点间关系组成的一种…

O(根号n/ln(根号n))时间复杂度内求n的所有因子

O&#xff08;&#xff09;复杂度内求n的所有因子&#xff0c;在2e9数量级比O&#xff08;&#xff09;快10倍左右 先用范围内的质数除n&#xff0c;求出n的分解质因数形式&#xff0c;然后爆搜求出n的所有因子&#xff0c; n范围内的质数大约有个&#xff0c;所以是这个时间…

Spring Framework 黑马程序员-学习笔记

5.spring-核心概念 IoC &#xff1a;控制反转 使用对象时&#xff08;如在service类中调用Dao层的对象&#xff0c;以便使用Dao类中的方法&#xff09;&#xff0c;本来是依靠new一个Dao层的对象来实现&#xff0c;而实现了Ioc思想的Spring为了解耦&#xff0c;将此过程改为&…

Play Beyond:Sui让优秀的游戏变得更好

自问世以来&#xff0c;视频游戏就紧随着文化产业发展。从Pong和Space Invaders的时代到Animal Crossing和Among Us&#xff0c;伟大的游戏总有能力吸引玩家&#xff0c;并推动娱乐产业发展。根据Grand View Research的数据&#xff0c;全球视频游戏市场在2022年估计为2170.6亿…

fastadmin插件 shopro 商城支付配置

1、 2、 注意上图中有添加支付方式链接&#xff0c;可以点击添加&#xff0c;这里添加后立即生效

zkVM设计性能分析

1. 引言 本文主要参考&#xff1a; 2023年9月ZKSummit10 Wei Dai 1k(x) & Terry Chung 1k(x)分享视频 ZK10: Analysis of zkVM Designs - Wei Dai & Terry Chung 当前有各种zkVM&#xff0c;其设计思想各有不同&#xff0c;且各有取舍&#xff0c;本文重点对现有各z…

[C语言】(指针解决)输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组

代码 下面是使用指针解决的代码示例&#xff1a; #include <stdio.h>void swap(int *a, int *b) {int temp *a;*a *b;*b temp; }int main() {int arr[100], n, max_index 0, min_index 0;printf("Enter the size of the array: ");scanf("%d"…

Maven(项目构建管理工具)

为什么要使用Maven&#xff1f; 传统项目管理状态分析&#xff1a; ①jar包不统一&#xff0c;jar包不兼容&#xff1b; ②工程升级维护过程操作繁琐&#xff1b; ........... Maven(JAVA书写)&#xff1a;管理jar包以及jar之间的依赖关系&#xff0c;完成项目编译&#xff0c;…

【算法】排序——归并排序和计数排序

主页点击直达&#xff1a;个人主页 我的小仓库&#xff1a;代码仓库 C语言偷着笑&#xff1a;C语言专栏 数据结构挨打小记&#xff1a;初阶数据结构专栏 Linux被操作记&#xff1a;Linux专栏 LeetCode刷题掉发记&#xff1a;LeetCode刷题 算法头疼记&#xff1a;算法专栏…

回归预测|GWO-BPNN-Adaboost算法原理及其实现(Matlab)

在上一篇文章中介绍了BPNN-Adaboost算法的原理及其实现&#xff0c;Adaboost算法可以将多个BPNN作为弱分类器进行训练&#xff0c;使其相互补充&#xff0c;集成为具有较强鲁棒性的强分类器。但由于BPNN对于初始权值和阈值的选取具有随机性&#xff0c;这将导致模型精度的不定性…

【易语言】m3u8下载器源码

前阵子接了个下载视频的小单子&#xff0c;部分视频是m3u8链接的&#xff0c;临时弄了个批量下载器&#xff0c;如图&#xff1a; 这东西网上虽然很多&#xff0c;但还是喜欢自己折腾一下&#xff0c;就直接开源了。代码好不好&#xff0c;只看能不能跑。 原理就是调用ffmpeg&a…

Polygon Mide状态模型:解决状态膨胀,而不牺牲隐私和去中心化

1. 引言 前序博客有&#xff1a; Polygon Miden&#xff1a;扩展以太坊功能集的ZK-optimized rollupPolygon Miden zkRollup中的UTXO账户混合状态模型Polygon Miden交易模型&#xff1a;Actor模式 ZKP &#xff1e; 并行 隐私 在Polygon Miden交易模型&#xff1a;Actor模…

国庆day5

客户端 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);socket new QTcpSocket(this);//此时&#xff0c;已经向服务器发送连接请求了&#xff0c;如果成功连…

安全防御—密码学

1. 什么是APT&#xff1f; APT&#xff08;Advanced Persistent Threat&#xff09;是指高级持续性威胁&#xff0c;本质是针对性攻击。 利用先进的攻击手段对特定目标进行长期持续性网络攻击的攻击形式&#xff0c;APT攻击的原理相对于其他攻击形式更为高级和先进&#xff0c;…

一文教你搞懂Redis集群

一、Redis主从 1.1、搭建主从架构 单节点的Redis的并发能力是有上限的&#xff0c;要进一步的提高Redis的并发能力&#xff0c;据需要大家主从集群&#xff0c;实现读写分离。 共包含三个实例&#xff0c;由于资源有限&#xff0c;所以在一台虚拟机上&#xff0c;开启多个red…