学习Android的第十七天

news/发布时间2024/5/19 15:57:38

目录

Android ListView 添加插入数据

添加记录

在指定位置插入数据

Android ListView 删除数据

ListView 删除数据

ListView 清空数据

Android ListView 更改数据

ListView 数据更新

Android ListView 查询数据

ListView 数据查询


Android ListView 添加插入数据

添加记录

我们在顶部添加一个按钮,每次点击添加一条记录,并且数据为空时提示用户没数据

XML 布局文件(activity_main.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/addButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="添加记录"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="16dp"/><ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/addButton"android:dividerHeight="1dp"/><TextViewandroid:id="@+id/noDataText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="无可用数据"android:layout_centerInParent="true"android:visibility="gone"/> <!-- 初始设置为隐藏 --></RelativeLayout>

Java 代码(MainActivity.java): 

package com.example.myapplication;import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {private ArrayList<String> dataList;private ArrayAdapter<String> adapter;private TextView noDataText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button addButton = findViewById(R.id.addButton);ListView listView = findViewById(R.id.listView);noDataText = findViewById(R.id.noDataText);dataList = new ArrayList<>();adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList);listView.setAdapter(adapter);addButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {addRecord();}});}private void addRecord() {// 在这里添加记录dataList.add("新建记录 " + (dataList.size() + 1));adapter.notifyDataSetChanged();// 如果有数据,则隐藏文本消息if (!dataList.isEmpty()) {noDataText.setVisibility(View.GONE);}}@Overrideprotected void onResume() {super.onResume();// 在 onResume 中检查数据列表是否为空,并根据情况显示或隐藏文本消息if (dataList.isEmpty()) {noDataText.setVisibility(View.VISIBLE);} else {noDataText.setVisibility(View.GONE);}}
}

在指定位置插入数据

要在指定位置插入数据,可以添加一个编辑框让用户输入要插入的位置,然后添加一个按钮来触发插入操作。

XML 布局文件(activity_main.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/addButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="添加记录"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="16dp"/><EditTextandroid:id="@+id/positionEditText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/addButton"android:layout_marginTop="16dp"android:layout_marginStart="16dp"android:layout_marginEnd="16dp"android:hint="要插入的位置"android:inputType="number"/><Buttonandroid:id="@+id/insertButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="在指定位置插入"android:layout_below="@id/positionEditText"android:layout_centerHorizontal="true"android:layout_marginTop="16dp"/><ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/insertButton"android:dividerHeight="1dp"/><TextViewandroid:id="@+id/noDataText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="无可用数据"android:layout_centerInParent="true"android:visibility="gone"/> <!-- 初始设置为隐藏 --></RelativeLayout>

Java 代码(MainActivity.java):

package com.example.myapplication;import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {private ArrayList<String> dataList;private ArrayAdapter<String> adapter;private TextView noDataText;private EditText positionEditText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button addButton = findViewById(R.id.addButton);Button insertButton = findViewById(R.id.insertButton);ListView listView = findViewById(R.id.listView);noDataText = findViewById(R.id.noDataText);positionEditText = findViewById(R.id.positionEditText);dataList = new ArrayList<>();adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList);listView.setAdapter(adapter);addButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {addRecord();}});insertButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {insertRecord();}});}private void addRecord() {dataList.add("新建记录 " + (dataList.size() + 1));adapter.notifyDataSetChanged();toggleNoDataTextVisibility();}private void insertRecord() {try {int position = Integer.parseInt(positionEditText.getText().toString());if (position >= 0 && position <= dataList.size()) {dataList.add(position, "插入记录 " + (dataList.size() + 1));adapter.notifyDataSetChanged();toggleNoDataTextVisibility();} else {Toast.makeText(this, "位置无效", Toast.LENGTH_SHORT).show();}} catch (NumberFormatException e) {Toast.makeText(this, "请输入有效的位置", Toast.LENGTH_SHORT).show();}}private void toggleNoDataTextVisibility() {if (dataList.isEmpty()) {noDataText.setVisibility(View.VISIBLE);} else {noDataText.setVisibility(View.GONE);}}
}

Android ListView 删除数据

ListView 删除数据

从 ListView 中删除某项数据有两种方法

  • 根据对象删除
  • 根据游标(position) 删除

例子:

XML 布局文件(activity_main.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/addButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="添加记录"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="16dp"/><Buttonandroid:id="@+id/deleteByObjectButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="对象删除"android:layout_below="@id/addButton"android:layout_alignParentStart="true"android:layout_marginStart="16dp"android:layout_marginTop="16dp"/><Buttonandroid:id="@+id/deleteByPositionButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="游标删除"android:layout_below="@id/addButton"android:layout_alignParentEnd="true"android:layout_marginEnd="16dp"android:layout_marginTop="16dp"/><ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/deleteByObjectButton"android:dividerHeight="1dp"/><TextViewandroid:id="@+id/noDataText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="无可用数据"android:layout_centerInParent="true"android:visibility="gone"/> <!-- 初始设置为隐藏 --></RelativeLayout>

Java 代码(MainActivity.java):

package com.example.myapplication;import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {private ArrayList<String> dataList;private ArrayAdapter<String> adapter;private TextView noDataText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button addButton = findViewById(R.id.addButton);Button deleteByObjectButton = findViewById(R.id.deleteByObjectButton);Button deleteByPositionButton = findViewById(R.id.deleteByPositionButton);ListView listView = findViewById(R.id.listView);noDataText = findViewById(R.id.noDataText);dataList = new ArrayList<>();adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList);listView.setAdapter(adapter);addButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {addRecord();}});deleteByObjectButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {deleteByObject();}});deleteByPositionButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {deleteByPosition();}});}private void addRecord() {dataList.add("新建记录 " + (dataList.size() + 1));adapter.notifyDataSetChanged();toggleNoDataTextVisibility();}private void deleteByObject() {if (!dataList.isEmpty()) {// 根据对象删除最后一项数据dataList.remove(dataList.size() - 1);adapter.notifyDataSetChanged();toggleNoDataTextVisibility();} else {Toast.makeText(this, "无数据可删除", Toast.LENGTH_SHORT).show();}}private void deleteByPosition() {if (!dataList.isEmpty()) {// 根据游标(position)删除第一项数据dataList.remove(0);adapter.notifyDataSetChanged();toggleNoDataTextVisibility();} else {Toast.makeText(this, "无数据可删除", Toast.LENGTH_SHORT).show();}}private void toggleNoDataTextVisibility() {if (dataList.isEmpty()) {noDataText.setVisibility(View.VISIBLE);} else {noDataText.setVisibility(View.GONE);}}
}

ListView 清空数据

清空 ListView 数据有两种方式

  • 调用 remove() 方法一项一项的删除
  • 调用 clear() 方法一次性删除

下面我们就写二个按钮 来演示下这两种方法

XML 布局文件(activity_main.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/addButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="添加记录"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="16dp"/><Buttonandroid:id="@+id/removeOneByOneButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="逐个删除"android:layout_below="@id/addButton"android:layout_alignParentStart="true"android:layout_marginStart="16dp"android:layout_marginTop="16dp"/><Buttonandroid:id="@+id/clearAllButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="一次性删除"android:layout_below="@id/addButton"android:layout_alignParentEnd="true"android:layout_marginEnd="16dp"android:layout_marginTop="16dp"/><ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/removeOneByOneButton"android:dividerHeight="1dp"/><TextViewandroid:id="@+id/noDataText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="无可用数据"android:layout_centerInParent="true"android:visibility="gone"/> <!-- 初始设置为隐藏 --></RelativeLayout>

Java 代码(MainActivity.java):

package com.example.myapplication;import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {private ArrayList<String> dataList;private ArrayAdapter<String> adapter;private TextView noDataText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button addButton = findViewById(R.id.addButton);Button removeOneByOneButton = findViewById(R.id.removeOneByOneButton);Button clearAllButton = findViewById(R.id.clearAllButton);ListView listView = findViewById(R.id.listView);noDataText = findViewById(R.id.noDataText);dataList = new ArrayList<>();adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList);listView.setAdapter(adapter);addButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {addRecord();}});removeOneByOneButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {removeOneByOne();}});clearAllButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {clearAll();}});}private void addRecord() {dataList.add("新建记录 " + (dataList.size() + 1));adapter.notifyDataSetChanged();toggleNoDataTextVisibility();}private void removeOneByOne() {if (!dataList.isEmpty()) {dataList.remove(dataList.size() - 1);adapter.notifyDataSetChanged();toggleNoDataTextVisibility();} else {Toast.makeText(this, "无数据可删除", Toast.LENGTH_SHORT).show();}}private void clearAll() {if (!dataList.isEmpty()) {dataList.clear();adapter.notifyDataSetChanged();toggleNoDataTextVisibility();} else {Toast.makeText(this, "无数据可清空", Toast.LENGTH_SHORT).show();}}private void toggleNoDataTextVisibility() {if (dataList.isEmpty()) {noDataText.setVisibility(View.VISIBLE);} else {noDataText.setVisibility(View.GONE);}}
}

Android ListView 更改数据

ListView 数据更新

更新 ListView 中的数据有两种办法

  • 根据对象更新
  • 根据游标(pos) 更新

例子:

XML 布局文件(activity_main.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/addButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="添加记录"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="16dp"/><Buttonandroid:id="@+id/updateByObjectButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="根据对象更新"android:layout_below="@id/addButton"android:layout_alignParentStart="true"android:layout_marginTop="16dp"/><Buttonandroid:id="@+id/updateByPositionButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="根据游标更新"android:layout_below="@id/addButton"android:layout_alignParentEnd="true"android:layout_marginTop="16dp"/><ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/updateByObjectButton"android:dividerHeight="1dp"/><TextViewandroid:id="@+id/noDataText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="无可用数据"android:layout_centerInParent="true"android:visibility="gone"/> <!-- 初始设置为隐藏 --></RelativeLayout>

Java 代码(MainActivity.java):

package com.example.myapplication;import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;public class MainActivity extends AppCompatActivity {private ArrayList<String> dataList;private ArrayAdapter<String> adapter;private ListView listView;private TextView noDataText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button addButton = findViewById(R.id.addButton);Button updateByObjectButton = findViewById(R.id.updateByObjectButton);Button updateByPositionButton = findViewById(R.id.updateByPositionButton);listView = findViewById(R.id.listView);noDataText = findViewById(R.id.noDataText);dataList = new ArrayList<>();adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList);listView.setAdapter(adapter);addButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {addRecord();}});updateByObjectButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {updateByObject();}});updateByPositionButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {updateByPosition();}});}private void addRecord() {dataList.add("新记录 " + (dataList.size() + 1));adapter.notifyDataSetChanged();toggleNoDataTextVisibility();}private void updateByObject() {if (!dataList.isEmpty()) {// 根据对象更新第一个数据项dataList.set(0, "更新的记录 1");adapter.notifyDataSetChanged();Toast.makeText(this, "根据对象更新成功", Toast.LENGTH_SHORT).show();} else {Toast.makeText(this, "没有可更新的数据", Toast.LENGTH_SHORT).show();}}private void updateByPosition() {if (!dataList.isEmpty()) {// 根据游标更新第二个数据项int position = 1; // 第二个位置if (position >= 0 && position < dataList.size()) {dataList.set(position, "更新的记录 2");adapter.notifyDataSetChanged();Toast.makeText(this, "根据游标更新成功", Toast.LENGTH_SHORT).show();} else {Toast.makeText(this, "位置无效", Toast.LENGTH_SHORT).show();}} else {Toast.makeText(this, "没有可更新的数据", Toast.LENGTH_SHORT).show();}}private void toggleNoDataTextVisibility() {if (dataList.isEmpty()) {noDataText.setVisibility(View.VISIBLE);} else {noDataText.setVisibility(View.GONE);}}
}

Android ListView 查询数据

ListView 数据查询

例子:

XML 布局文件(activity_main.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/addButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="添加记录"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="16dp"/><EditTextandroid:id="@+id/searchEditText"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入查询条件"android:layout_below="@id/addButton"android:layout_marginTop="16dp"android:layout_marginStart="16dp"android:layout_marginEnd="16dp"/><Buttonandroid:id="@+id/searchButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="查询"android:layout_below="@id/searchEditText"android:layout_centerHorizontal="true"android:layout_marginTop="16dp"/><ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/searchButton"android:dividerHeight="1dp"/><TextViewandroid:id="@+id/noDataText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="无可用数据"android:layout_centerInParent="true"android:visibility="gone"/> <!-- 初始设置为隐藏 --></RelativeLayout>

Java 代码(MainActivity.java):

package com.example.myapplication;import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {private ArrayList<String> dataList;private ArrayList<String> originalDataList; // 保存原始数据private ArrayAdapter<String> adapter;private ListView listView;private TextView noDataText;private EditText searchEditText;private Button searchButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button addButton = findViewById(R.id.addButton);searchEditText = findViewById(R.id.searchEditText);searchButton = findViewById(R.id.searchButton);listView = findViewById(R.id.listView);noDataText = findViewById(R.id.noDataText);dataList = new ArrayList<>();originalDataList = new ArrayList<>(); // 初始化原始数据列表adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList);listView.setAdapter(adapter);addButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {addRecord();}});searchButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {searchRecords();}});searchEditText.addTextChangedListener(textWatcher);}private final TextWatcher textWatcher = new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void afterTextChanged(Editable s) {// 每次文本发生变化时不自动查询}};private void addRecord() {originalDataList.add("新记录 " + (originalDataList.size() + 1)); // 添加记录到原始数据列表if (searchEditText.getText().toString().isEmpty()) {// 如果查询条件为空,则更新列表updateList(originalDataList);}searchRecords(); // 执行查询操作}private void searchRecords() {String query = searchEditText.getText().toString().trim().toLowerCase();List<String> filteredList = new ArrayList<>();for (String record : originalDataList) {if (record.toLowerCase().contains(query)) {filteredList.add(record);}}updateList(filteredList);}private void updateList(List<String> records) {dataList.clear();dataList.addAll(records);adapter.notifyDataSetChanged();toggleNoDataTextVisibility();}private void toggleNoDataTextVisibility() {noDataText.setVisibility(dataList.isEmpty() ? View.VISIBLE : View.GONE);}
}

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

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

相关文章

Springboot项目的run debug都是灰色解决方法

IDEA下新建SpringBoot项目后&#xff0c;问题显示如下&#xff1a; 解决方法如下&#xff1a; 这个问题是由于缺少Configuration构建器的原因&#xff0c;因此&#xff1a; 1.点击Add Configuration 添加Spring Boot构建器&#xff0c;启动类选择好&#xff0c;点击确认即可&a…

Runtime Error while Saving a PyTorch bin Model: “File /** Cannot Be Opened“

原始保存代码为&#xff1a; quant_path "baichuan2_awq" torch.save(model.state_dict(), quant_path)报错如下&#xff1a; RuntimeError: File baichuan2_awq cannot be opened解决方法&#xff1a;需要保存的文件名字为"pytorch_model.bin" import…

Word docx文件重命名为zip文件,解压后直接查看和编辑

一个不知道算不算冷的知识[doge]&#xff1a; docx格式的文件本质上是一个ZIP文件 当把一个.docx文件重命名为.zip文件并解压后&#xff0c;你会发现里面包含了一些XML文件和媒体文件&#xff0c;它们共同构成了Word文档的内容和格式。 例如&#xff0c;word/document.xml文件…

Rust Vs Go:从头构建一个web服务

Go 和 Rust 之间的许多比较都强调它们在语法和初始学习曲线上的差异。然而&#xff0c;最终的决定性因素是重要项目的易用性。 “Rust 与 Go”争论 Rust vs Go 是一个不断出现的话题&#xff0c;并且已经有很多关于它的文章。部分原因是开发人员正在寻找信息来帮助他们决定下…

箱形理论在交易策略中的实战应用与优化

箱形理论&#xff0c;简单来说&#xff0c;就是将价格波动分成一段一段的方框&#xff0c;研究这些方框的高点和低点&#xff0c;来推测价格的趋势。 在上升行情中&#xff0c;价格每突破新高价后&#xff0c;由于群众惧高心理&#xff0c;可能会回跌一段&#xff0c;然后再上升…

HAL库 CubeMX STM32采用SDIO实现对SD卡和NAND Flash的读写

目录 完整项目源代码下载地址&#xff1a;HAL库CubeMX STM32采用SDIO实现对SD卡和NAND Flash的读写资源-CSDN文库 一、选择合适的存储芯片。 可以去雷龙官网白嫖&#xff0c;白嫖链接&#xff1a;免费样品 二、SD卡/SD NAND底层原理 三、硬件设计 1、SD NAND引脚图 2、芯片外观…

【4.3计算机网络】网络规划与设计

目录 1.网络规划2.逻辑网络设计3.物理网络设计 1.网络规划 需求分析->通信规范分析->逻辑网络设计->物理网络设计->实施阶段 2.逻辑网络设计 3.物理网络设计 例题1&#xff1a; 解析&#xff1a;选A。 例题2&#xff1a; 解析&#xff1a;选A。 例题3. 解析&am…

【数据库】哪些操作会导致索引失效

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;数据库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 在数据库管理中&#xff0c;索引的有效性对于查询性能至关重要。然而&#xff0c;索引可能会因为各种操…

14. UE5 RPG使用GameplayTag

GameplayTag本来是应用在GAS游戏技能系统里面的&#xff0c;后来UE直接将其抽离出来&#xff0c;作为一个模块&#xff0c;现在可以不在GAS里也可以使用这个模块。比如&#xff0c;我需要判断一个射线拾取的物体&#xff0c;首先我需要判断这个actor是否存在&#xff0c;然后判…

Sora了解资料

一、基本介绍 1.1sora 在 2024 年 2 月 16 日&#xff0c;Open AI 宣布推出全新的生成式人工智能模型“Sora”。据了解&#xff0c;通过文本指令&#xff0c;Sora 可以直接输出长达 60 秒的视频&#xff0c;并且包含高度细致的背景、复杂的多角度镜头&#xff0c;以及富有情感…

Spring中常见的注解

1 spring注解介绍 Spring Framework是一个开源的Java平台&#xff0c;广泛用于创建高性能的企业应用程序。随着Spring的发展&#xff0c;注解&#xff08;Annotation&#xff09;已经成为了配置Spring应用程序的主要方式&#xff0c;逐渐取代了传统的XML配置。使用注解可以使代…

9、使用 ChatGPT 的 GPT 制作自己的 GPT!

使用 ChatGPT 的 GPT 制作自己的 GPT! 想用自己的 GPT 超越 GPT ChatGPT 吗?那么让我们 GPT GPT 吧! 山姆 奥特曼利用这个机会在推特上宣传 GPTs 的同时还猛烈抨击了埃隆的格罗克。 GPTs概览 他们来了! 在上周刚刚宣布之后,OpenAI 现在推出了其雄心勃勃的新 ChatGPT…

开源数据可视化应用程序JSON Crack

什么是 JSON Crack &#xff1f; JSON Crack 是一款免费的开源数据可视化应用程序&#xff0c;能够将 JSON、YAML、XML、CSV 等数据格式可视化为交互式图表。凭借其直观且用户友好的界面&#xff0c;JSON Crack 可以轻松探索、分析和理解即使是最复杂的数据结构。无论您是从事大…

数据结构--排序

数据结构--排序 1. 各类排序算法的性质2. 插入排序2.1 直接插入排序2.2 折半插入排序 3. 希尔排序4. 交换排序4.2 冒泡排序 5. 快速排序6. 选择排序6.1 简单选择排序6.2 堆排序 7. 归并排序8. 基数排序 1. 各类排序算法的性质 2. 插入排序 2.1 直接插入排序 2.2 折半插入排序 …

openai公司的chatgpt-3.5参数库内还未增加sora的语料信息

openai公司的chatgpt-3.5参数库内还未增加sora的语料信息&#xff01;我想通过openai公司的chatgpt3.5来了解一下关于sora的技术信息&#xff0c;结果呢&#xff0c;它竟然回答不知道sora是什么。看来&#xff0c;sora的语料库信息还未来得及加入chatgpt3.5的训练模型中。 如图…

vue的十大面试题详情

1 v-show与v-if区别 v-if与v-show可以根据条件的结果,来决定是否显示指定内容&#xff1a; v-if: 条件不满足时, 元素不会存在. v-show: 条件不满足时, 元素不会显示(但仍然存在). <div id"app"><button click"show !show">点我</but…

计算机视觉基础【OpenCV轻松入门】:获取图像的ROI

OpenCV的基础是处理图像&#xff0c;而图像的基础是矩阵。 因此&#xff0c;如何使用好矩阵是非常关键的。 下面我们通过一个具体的实例来展示如何通过Python和OpenCV对矩阵进行操作&#xff0c;从而更好地实现对图像的处理。 ROI&#xff08;Region of Interest&#xff09;是…

【Spring】循环依赖

目录标题 什么是循环依赖循环依赖场景Java SE 演示Spring 容器演示三级缓存核心知识三级缓存四大方法三级缓存中的迁移 三级缓存源码分析源码思维导图 源码图例课前问题推荐阅读 循环依赖是什么&#xff1f;循环依赖的场景有哪一些&#xff1f;三级缓存分别是什么&#xff1f;三…

HarmonyOS4.0系统性深入开发34栅格布局(GridRow/GridCol)

栅格布局&#xff08;GridRow/GridCol&#xff09; 概述 栅格布局是一种通用的辅助定位工具&#xff0c;对移动设备的界面设计有较好的借鉴作用。主要优势包括&#xff1a; 提供可循的规律&#xff1a;栅格布局可以为布局提供规律性的结构&#xff0c;解决多尺寸多设备的动态…

HarmonyOS4.0系列——08、整合UI常用组件

HarmonyOS4.0 系列——08、UI 组件 Blank Blank 组件在横竖屏占满空余空间效果 // xxx.ets Entry Component struct BlankExample {build() {Column() {Row() {Text(Button).fontSize(18)Blank()Toggle({type: ToggleType.Switch}).margin({top: 14,bottom: 14,left: 6,righ…
推荐文章