当前位置: 首页 > news >正文

学习Android的第十七天

目录

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);}
}

相关文章:

  • 【二叉搜索树】【前后指针】Leetcode 501. 二叉搜索树中的众数
  • UE4c++ ConvertActorsToStaticMesh ConvertProceduralMeshToStaticMesh
  • uniapp的h5端保存文件
  • Java中的Collection
  • 扩频通信信号的产生与接收
  • MySQL 常用优化方式
  • 学习:吴恩达:什么是神经元?神经网络如何工作?
  • idea生成WebServices接口
  • HTML超链接去下划线
  • vue3 + vite 项目可以使用纯Js开发吗?
  • Image Fusion via Vision-Language Model【文献阅读】
  • React Switch用法及手写Switch实现
  • 初学者如何学习python
  • leetcode 热题 100_三数之和
  • LeetCode——二叉树(Java)
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • const let
  • DOM的那些事
  • hadoop集群管理系统搭建规划说明
  • java2019面试题北京
  • Kibana配置logstash,报表一体化
  • leetcode386. Lexicographical Numbers
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Vue.js 移动端适配之 vw 解决方案
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 利用jquery编写加法运算验证码
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端面试题总结
  • 容器服务kubernetes弹性伸缩高级用法
  • 正则表达式小结
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #define与typedef区别
  • #include
  • $.ajax,axios,fetch三种ajax请求的区别
  • $forceUpdate()函数
  • (1)(1.13) SiK无线电高级配置(五)
  • (1)常见O(n^2)排序算法解析
  • (13)Hive调优——动态分区导致的小文件问题
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (ZT)出版业改革:该死的死,该生的生
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十三)Maven插件解析运行机制
  • (转)winform之ListView
  • (转)四层和七层负载均衡的区别