基于Android Studio 实现通讯录—原创

news2024/12/26 0:22:19

目录

一、项目演示

二、开发环境

三、项目详情

四、项目完整源码


一、项目演示

基于Android Studio 实现通讯录—原创

二、开发环境

三、项目详情

1.启动页

这段代码是一个简单的Android应用程序启动活动(Activity),具体功能如下:

1. **延迟进入登录页面:**
   - 在 `onCreate()` 方法中,使用 `Handler` 和 `Runnable` 实现了一个延迟执行的功能,延迟时间为3秒。
   - `runnable` 对象的 `run()` 方法调用了 `tomainActive()` 方法,在延迟结束后启动 `LoginRegisterActivity` 并关闭当前的 `StartActivity`。

2. **计时器功能:**
   - 定义了一个内部类 `TimeCount`,继承自 `CountDownTimer`,用于执行一个四秒的倒计时操作,每隔一秒触发一次。
   - `onFinish()` 方法中,倒计时结束后移除了 `handler` 中的 `runnable` 对象,确保不会在倒计时结束后再次跳转到登录页面。

3. **Activity 生命周期方法:**
   - `onCreate()` 方法中,设置了布局文件 `activity_start.xml` 作为界面显示内容,并启动了延迟执行和计时器。
   - `onDestroy()` 方法中未显示重写,但在 `toMainActive()` 方法中的 `finish()` 方法确保了在跳转完成后关闭当前 Activity。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:background="@drawable/start"
    tools:context=".Activity.StartActivity">

    <Button
        android:id="@+id/btn_skip"
        android:layout_width="70dp"
        android:layout_height="30dp"
        android:layout_marginTop="24dp"
        android:layout_marginEnd="16dp"
        android:background="@drawable/start_bg"
        android:text="跳过"
        android:textColor="#fff"
        android:textSize="12sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

2.登陆、注册

1. 获取输入数据:从用户输入框中获取手机号和密码,检查“保存密码”复选框的状态。
2. 保存或清除数据:
   - 如果复选框选中,则保存手机号、密码和复选框状态到 `SharedPreferences`。
   - 如果复选框未选中,则清空 `SharedPreferences` 中的数据。
3. 检查输入:如果手机号或密码为空,弹出提示。
4. 验证用户:检查手机号和密码是否匹配。
5. 登录处理:
   - 成功:保存用户信息,跳转到主界面,显示成功消息。
   - 失败:显示错误消息。

  private void login() {
        btnLogin.setOnClickListener(v -> {
            String phone = etUserPhone.getText().toString();
            String password = etUserPassword.getText().toString();
            boolean isSavePwdChecked = savePwdCheckBox.isChecked();
            if (TextUtils.isEmpty(phone)||TextUtils.isEmpty(password)){
                Toast.makeText(this, "请输入完整的信息!", Toast.LENGTH_SHORT).show();
                return;
            }
            boolean b = userHelper.validateUser(phone, password);
            if (b){
                Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                Toast.makeText(this, "登录成功!", Toast.LENGTH_SHORT).show();
                startActivity(intent);
                finish();
            }else {
                Toast.makeText(this, "登录失败,请检查手机号或密码是否正确!", Toast.LENGTH_SHORT).show();
            }
        });
    }

1. 获取输入数据:从用户输入框中获取手机号、密码和确认密码。
2. 非空验证:检查手机号、密码和确认密码是否为空。如果有为空的情况,弹出提示信息。
3. 密码匹配验证:检查密码和确认密码是否一致。如果不一致,弹出提示信息。
4. 用户注册:调用userHelper.addUser() 方法尝试将用户信息添加到数据库中(假设使用了 SQLite 数据库)。
5. 注册结果处理:
   - 如果注册成功,显示“注册成功”消息并结束当前活动(即关闭注册界面)。
   - 如果注册失败(比如手机号已存在),显示“注册失败”消息提示用户更换手机号。 

private void register() {
        btnRegister.setOnClickListener(v -> {
            String phone = etUserPhone.getText().toString();
            String password = etUserPassword.getText().toString();
            String rpassword = etRuserPassword.getText().toString();
            if (TextUtils.isEmpty(phone) || TextUtils.isEmpty(password) || TextUtils.isEmpty(rpassword)) {
                Toast.makeText(RegisterActivity.this, "所有内容均不可为空!", Toast.LENGTH_SHORT).show();
                return;
            }
            if (!password.equals(rpassword)) {
                Toast.makeText(RegisterActivity.this, "两次密码不一致,请重新输入!", Toast.LENGTH_SHORT).show();
                return;
            }
            boolean b = userHelper.addUser(phone, password);
            if (b) {
                Toast.makeText(RegisterActivity.this, "注册成功!", Toast.LENGTH_SHORT).show();
                finish();
            } else {
                Toast.makeText(RegisterActivity.this, "注册失败,手机号已存在,请更换手机号!", Toast.LENGTH_SHORT).show();
            }
        });
    }

3.首页

1. 排序联系人:
   - 按首字母排序,`#` 字母排在最后。
2. 创建联系人列表:
   - 根据首字母分组联系人,添加分组标题和联系人条目。
3. 更新视图:
   - 控制侧边栏和空状态显示。
   - 更新 ListView 的适配器。 

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:background="#F6F6F6"
    tools:context=".Fragment.HomeFragment">
    <!-- Add this in your fragment_home.xml -->

    <LinearLayout
        android:id="@+id/ll_kong"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:gravity="center"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="@+id/lv"
        app:layout_constraintEnd_toStartOf="@+id/sidebar_layout"
        app:layout_constraintStart_toStartOf="@+id/lv"
        app:layout_constraintTop_toTopOf="@+id/lv">

        <ImageView
            android:id="@+id/img_kong"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:src="@drawable/kong"
            android:visibility="visible" />

        <TextView
            android:id="@+id/textView11"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:gravity="center"
            android:text="暂无数据~"
            android:textColor="#000"
            android:textStyle="bold" />
    </LinearLayout>

    <View
        android:id="@+id/view5"
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_marginStart="2dp"
        android:layout_marginTop="2dp"
        android:layout_marginEnd="2dp"
        android:background="#2aa515"
        app:layout_constraintEnd_toEndOf="@+id/linearLayout7"
        app:layout_constraintStart_toStartOf="@+id/linearLayout7"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout7" />

    <LinearLayout
        android:id="@+id/linearLayout9"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:orientation="horizontal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TextView
            android:id="@+id/textView10"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="联系人"
            android:textColor="#000"
            android:textSize="24sp"
            android:textStyle="bold" />

        <ImageView
            android:id="@+id/img_add"
            android:layout_width="30dp"
            android:layout_height="match_parent"
            android:src="@drawable/home_add" />
    </LinearLayout>

    <ListView
        android:id="@+id/lv"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="24dp"
        android:layout_marginEnd="8dp"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:scrollbars="none"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="@+id/linearLayout7"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="@+id/linearLayout7"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout7"
        app:layout_constraintVertical_bias="0.0" />

    <LinearLayout
        android:id="@+id/linearLayout7"
        android:layout_width="0dp"
        android:layout_height="30dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="8dp"
        android:background="#F6F6F6"
        android:gravity="center"
        android:orientation="horizontal"
        android:padding="3dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout9">

        <ImageView
            android:id="@+id/img_search"
            android:layout_width="25dp"
            android:layout_height="match_parent"
            android:src="@drawable/search" />

        <EditText
            android:id="@+id/et_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_weight="1"
            android:background="#F6F6F6"
            android:ems="10"
            android:gravity="center|left"
            android:hint="可按照姓、电话、分组查询"
            android:inputType="textPersonName"
            android:textSize="14sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/sidebar_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#F6F6F6"
        android:orientation="vertical"
        android:padding="4dp"
        app:layout_constraintBottom_toBottomOf="@+id/lv"
        app:layout_constraintEnd_toEndOf="@+id/lv"
        app:layout_constraintTop_toTopOf="@+id/lv" />
</androidx.constraintlayout.widget.ConstraintLayout>

4.添加页面、修改页面

 

1. setupSpinner:
   - 设置一个下拉菜单(Spinner),从资源文件中读取选项,并创建一个映射关系以用于管理联系人分组(如同学、同事等)。

2. setupUserPhone:
   - 从共享偏好中读取用户的电话号码。

3. handleIntentData:
   - 根据 Intent 传递的 `addressbook_id` 决定是修改现有联系人还是添加新联系人。设置相应的界面元素(如标题和按钮)。

4. loadContactData:
   - 如果是修改联系人,加载并显示联系人的数据(包括头像、姓名、电话和分组信息)。

5. openImagePicker:
   - 启动图片选择器以允许用户选择头像图片。

6. onActivityResult:
   - 处理图片选择的结果,将图片转换为 Base64 格式并显示在界面上。

7. convertToBase64:
   - 将 Bitmap 图像转换为 Base64 字符串。

8. addContact:
   - 添加新联系人到数据库中,调用 `validateInput` 进行输入验证,并根据操作结果显示相应的提示信息。

9. modifyContact:
   - 修改现有联系人信息,调用 `validateInput` 进行输入验证,并根据操作结果显示相应的提示信息。

10. validateInput:
    - 验证联系人姓名和手机号是否为空。

11. showToast:
    - 显示操作成功或失败的提示信息。

12. onRequestPermissionsResult:
    - 处理权限请求结果,如果权限被授权,打开图片选择器;否则显示权限被拒绝的提示。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:background="#fff"
    tools:context=".Activity.AddActivity">

    <LinearLayout
        android:id="@+id/linearLayout4"
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:background="#2aa515"
        android:gravity="center"
        android:orientation="horizontal"
        android:padding="10dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <ImageView
            android:id="@+id/img_back"
            android:layout_width="15dp"
            android:layout_height="match_parent"
            app:srcCompat="@drawable/back" />

        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="新建联系人"
            android:textColor="#fff"
            android:textSize="18sp"
            android:textStyle="bold" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout6"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="24dp"
        android:layout_marginEnd="16dp"
        android:orientation="vertical"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout4">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:gravity="center"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/img_avatar"
                android:layout_width="80dp"
                android:layout_height="80dp"
                app:srcCompat="@drawable/add" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="40dp"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView4"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:gravity="center"
                android:text="姓名:"
                android:textColor="#000"
                android:textSize="16sp"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/et_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:hint="请输入姓名"
                android:inputType="textPersonName"
                android:textSize="16sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView8"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:gravity="center"
                android:text="电话:"
                android:textColor="#000"
                android:textSize="16sp"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/et_phone"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:hint="请输入电话"
                android:inputType="phone"
                android:textSize="16sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView9"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:gravity="center"
                android:text="群组:"
                android:textColor="#000"
                android:textSize="16sp"
                android:textStyle="bold" />

            <Spinner
                android:id="@+id/spinner"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"></LinearLayout>
    </LinearLayout>

    <Button
        android:id="@+id/btn_add"
        android:layout_width="0dp"
        android:layout_height="30dp"
        android:background="@drawable/btn"
        android:text="立 即 新 建"
        android:textColor="#fff"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="@+id/linearLayout6"
        app:layout_constraintStart_toStartOf="@+id/linearLayout6"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout6" />
</androidx.constraintlayout.widget.ConstraintLayout>

5.我的页面、修改页面

 1. 点击修改密码:跳转到 `ModifyActivity` 活动。
2. 点击显示版本:弹出一个消息,显示当前软件版本。
3. 点击退出登录:跳转到 `LoginActivity` 活动,并结束当前活动。

  private void ll() {
        llModifypassword.setOnClickListener(v -> {
            Intent intent = new Intent(getActivity(), ModifyActivity.class);
            startActivity(intent);
        });
        llVersions.setOnClickListener(v -> {
            Toast.makeText(getActivity(), "当前软件版本:1.0.0", Toast.LENGTH_SHORT).show();
            return;
        });
        llQuit.setOnClickListener(v -> {
            Intent intent = new Intent(getActivity(), LoginActivity.class);
            startActivity(intent);
            getActivity().finish();
        });
    }

1. 获取用户输入的手机号、旧密码和新密码。
2. 检查输入是否完整,手机号是否正确,以及新旧密码是否相同。
3. 如果检查通过,就尝试更新密码。
4. 更新成功后,清除登录信息,显示成功提示,并跳转回登录界面。
5. 如果更新失败,显示错误信息。 

    private void modify() {
        btnModify.setOnClickListener(v -> {
            // 获取输入框中的信息
            String userPhone = etPhone.getText().toString();
            String oldPassword = etOld.getText().toString();
            String newPassword = etNew.getText().toString();

            // 校验输入信息是否为空
            if (userPhone.isEmpty() || oldPassword.isEmpty() || newPassword.isEmpty()) {
                Toast.makeText(this, "请输入完整的信息!", Toast.LENGTH_SHORT).show();
                return;
            }

            // 校验手机号是否正确
            if (!userPhone.equals(phone)) {
                Toast.makeText(this, "手机号错误,请重新输入!", Toast.LENGTH_SHORT).show();
                return;
            }
            if (oldPassword.equals(newPassword)) {
                Toast.makeText(this, "旧密码不可与新密码相同!", Toast.LENGTH_SHORT).show();
                return;
            }

            // 更新密码
            boolean isUpdated = userHelper.updatePassword(userPhone, oldPassword, newPassword);
            if (isUpdated) {
                // 显示修改成功的提示
                Toast.makeText(this, "修改成功!", Toast.LENGTH_SHORT).show();
                // 跳转到登录界面
                Intent intent = new Intent(ModifyActivity.this, LoginActivity.class);
                startActivity(intent);
                finish(); // 结束当前活动
            } else {
                Toast.makeText(this, "手机号或密码错误!", Toast.LENGTH_SHORT).show();
            }
        });
    }

四、项目完整源码

👇👇👇👇👇快捷获取方式👇👇👇👇👇

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

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

相关文章

【看雪-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

学习 SSM框架 项目总结

通过指导老师发布的学习SSM框架项目&#xff0c;这次我深刻体会到了SSM整体项目之间的紧连关系。 以下是我自己学习过程中总结出来的经验。 SSM框架 配置 导入核心 spring 组件坐标 将spring相关组件坐标&#xff0c;导入到 pom 文件中 <!--spring、springMVC--><…

集成电路学习:什么是RTOS实时操作系统

RTOS&#xff1a;实时操作系统 RTOS&#xff0c;全称Real Time Operating System&#xff0c;即实时操作系统&#xff0c;是一种专为满足实时控制需求而设计的操作系统。它能够在外部事件或数据产生时&#xff0c;以足够快的速度进行处理&#xff0c;并在规定的时间内控制生产过…

UE5.3 新学到的一些性能测试合计(曼巴学习笔记)

一.简单命令行 stat FPS stat unit //增加GPU渲染时间和变量 stat unitgraph //追加了图表显示 二.查看GPU的消耗。调试GPU渲染用的高级命令 可以记录这一刻各个部分的占用情况,只能看当前的 1.在编辑器下&#xff0c;ctrlShift, 。 2.输入命令行&#xff0c;pr…

硬件-经典的TL431三端稳压管

文章目录 一&#xff1a;TL431三端稳压管1.1 器件说明1.2 电路分析1.3 把TL431设计成一个可调电压源的电路1.4 常用型号1.5 阅读手册1.6 2.5V 电压基准应用电路道友&#xff1a;努力的意义&#xff0c;不在于一定会让你取得多大的成就&#xff0c;只是让你在平凡的日子里&#…

虚幻5|知识点(1)寻找查看旋转,击打敌人后朝向主角

举例说明&#xff0c;我们想让角色一直朝着摄像头&#xff0c;我们控制角色任意位置&#xff0c;都能自行旋转都能朝向摄像头 下面是敌人一直朝向角色&#xff0c;无论主角走向哪个位置&#xff0c;敌人都能朝向主角 start是获取敌人的位置向量大小&#xff0c;Target是获取主…

【复杂系统系列(中级)】复杂系统科学的层级与不确定性方程【代码模拟】

【通俗理解】复杂系统科学的层级与不确定性方程 关键词提炼 #复杂系统科学 #层级结构 #不确定性 #上行因果 #下行因果 #初值敏感 #混沌现象 第一节&#xff1a;层级与不确定性方程的类比与核心概念【尽可能通俗】 1.1 层级与不确定性方程的类比 复杂系统科学的层级与不确定…

游戏玩家新宠:高性能远程控制解决方案

如果你出差一些存在公司电脑上的数据急需用到&#xff0c;这时候有一个远程控制工具就非常方便了。如果你担心一些远程控制软件的安全问题&#xff0c;那就从正规渠道下载&#xff0c;比如向日葵远程控制官网下载就可以得到它官方的软件。我今天给你分享一些安全可靠的远程控制…

基于STELLA系统动态模拟技术及在农业、生态环境等科学领域中的实践应用

STELLA是一种用户友好的计算机软件。通过绘画出一个系统的形象图形&#xff0c;并给这个系统提供数学公式和输入数据&#xff0c;从而建立模型。依据专业兴趣&#xff0c;STELLA可以用来建立各种各样的农业、生态、环境等方面的系统动态模型&#xff0c;为科研、教学、管理服务…

基于C++实现一个房贷计算小程序(含代码)

房贷计算程序&#xff0c;主要实现以下功能&#xff1a; 用户友好的界面&#xff1a;使用文本菜单来引导用户选择功能。支持不同还款频率&#xff1a;例如每季度还款、每半年还款等。支持贷款提前还款&#xff1a;计算提前还款对总支付利息的影响。详细的还款计划表&#xff1…

(二)ASP.NET Core WebAPI项目的启动地址设置

上一篇介绍了ASP.NET Core WebAPI项目创建&#xff0c;可参考&#xff1a; 1.webAPI的访问地址 1) 启动时&#xff0c;选择CoreWebAPI(项目名称)运行项目 可以看到打开浏览器后的地址是&#xff1a;applicationUrl"\"launchUrl 2) 启动时&#xff0c;选择IIS Expre…

C++mutable

文章目录 Claude 讲解基本用法mutable的常见用途注意事项 ChatGpt 讲解1. 基本概念2. 使用示例解释&#xff1a; 3. 适用场景4. 注意事项 lambda 讲解基本语法示例捕获方式使用场景 mutable 和 labmda 一起使用代码&#xff1a;代码分析&#xff1a;输出结果&#xff1a; 在C编…

(详细文档!)JavaSwing图书管理系统+mysql数据库

目 录 1.项目概述及需求分析................................ 1 2.系统设计......................................... 1 2.1程序总体设计......................................... 1 2.2数据库设计........................................... 2 2.3公共模块设计...…

论文学习(一):基于遥感技术的凉山州森林火险预测方法研究

文章目录 摘要部分一、绪论二、研究区历史火情分析2.1凉山州森林火灾年际变化特征2.2凉山州森林火灾月际变化特征2.3凉山州森林火灾空间分布特征2.4森林火灾等级与起火原因分析 三、数据与方法3.1数据来源3.2数据预处理3.3研究方法3.3.1逻辑回归&#xff1a;最大似然估计3.3.2决…

iOS——持久化

iOS的数据存储机制 沙盒机制 应用沙盒文件夹包含了&#xff1a; Application(应用程序包)&#xff1a;包含了所有的资源文件和和可执行文件&#xff0c;上架前经过数字签名&#xff0c;上架后不可修改。 Documents&#xff1a;文档目录&#xff0c;要保存程序生成的数据&…

华为OD机试 - 最大相连男生数 - 矩阵(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

[数据集][目标检测]水面垃圾检测数据集VOC+YOLO格式2027张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2027 标注数量(xml文件个数)&#xff1a;2027 标注数量(txt文件个数)&#xff1a;2027 标注…

信创实践(3):基于x2openEuler将CentOS升级成openEuler,享受其带来的创新和安全特性

引言&#xff1a; 在当前的 IT 行业中&#xff0c;创新和安全性是两大关键趋势。随着 CentOS 停止维护&#xff0c;许多用户正在寻找替代方案&#xff0c;以保持其系统的更新和安全。openEuler 作为一个强大的开源操作系统&#xff0c;成为了理想的迁移目标。本教程将指导您如…

大语言模型的上下文窗口(Context Windows):对人工智能应用的影响

大语言模型&#xff08;LLMs&#xff09;极大地提升了人工智能在理解和生成类人文本方面的能力。其中一个影响其效用的基本方面是它们的 “上下文窗口”—— 这个概念直接影响着这些模型接收和生成语言的有效性。我将深入探讨上下文窗口是什么、它们对人工智能应用的影响以及组…

【通俗理解】Baseline在竞赛中的意义——性能比较的标准尺

【通俗理解】Baseline在竞赛中的意义——性能比较的标准尺 关键词提炼 #Baseline #竞赛标准 #算法性能 #性能比较 #改进评估 #魔改基础 #优势彰显 第一节&#xff1a;Baseline的类比与核心概念【尽可能通俗】 1.1 Baseline的类比 Baseline在竞赛中就像是一场跑步比赛的起跑…