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

三国志14信息查询小程序(历史武将信息一览)制作更新过程05-后台接口的编写及调用

1,创建ASP.NET Web API项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
生成完毕,项目结构如下:
在这里插入图片描述
运行看一下:
在这里插入图片描述

2,后台接口编写

(1)在Models文件夹中新建一个sandata.cs文件(就是上篇中武将信息表的model文件)
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;namespace API.Models
{public  class Sandata{/// <summary>/// Desc:/// Default:/// Nullable:False/// </summary>           [SugarColumn(IsPrimaryKey=true)]public int Id {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string sex {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public int tongshuai {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public int wuli {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public int zhili {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public int zhengzhi {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public int meili {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string zhuyi {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string zhengce {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string zhengcedengji {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string peiou {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string name {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string gexing1 {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string gexing2 {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string gexing3 {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string gexing4 {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string gexing5 {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string shengnian {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string dengchang {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string zunian {get;set;}/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string hjqy { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string fdlm { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string eyyx { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string qxgj { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string gdzz { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string sgml { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string cbzz { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string hzzdz { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string gybww { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string csb { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string ztld { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string hdlb { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string hszc { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string hbys { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string cjfl { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string zzql { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string eftx { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string jmc { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string qfzh { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string yxjj { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string yxlw { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string yyyz { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string ccds { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string lbtfz { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           public string hbzz { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>public string tgzz { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>public string hfzz { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>public string ylzz { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>public string zfnm { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>public string qfwzy { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>public string zszb { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>public string shmw { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>public string htdl { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>public string hbgs { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>public string xsbl { get; set; }/// <summary>/// alias:/// Default:/// Nullable:True/// </summary>           public string alias { get; set; }/// <summary>/// biography1:/// Default:/// Nullable:True/// </summary>           public string biography1 { get; set; }/// <summary>/// biography2:/// Default:/// Nullable:True/// </summary>           public string biography2 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string biography3 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string xiangxing { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string xueyuan { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string fuqin { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string muqin { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string shidai { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string yxd { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string zx { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string zf { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string like1 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string like2 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string like3 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string like4 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string like5 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string like6 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string like7 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string like8 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string dislike1 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string dislike2 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string dislike3 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string dislike4 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string dislike5 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string dislike6 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string dislike7 { get; set; }/// <summary>/// biography3:/// Default:/// Nullable:True/// </summary>           public string dislike8 { get; set; }public string qingyi { get; set; }public string yexin { get; set; }public string hanchao { get; set; }public string haozhan { get; set; }public string waijiao { get; set; }public string wuzi { get; set; }public string jianshe { get; set; }}
}
(2)在Models文件夹中新建一个MessageModel.cs文件作为通用返回格式:
namespace API.Models
{/// <summary>/// 通用返回信息类/// </summary>public class MessageModel<T>{/// <summary>/// 状态码/// </summary>public int status { get; set; } = 200;/// <summary>/// 页码/// </summary>public int page { get; set; }/// <summary>/// 数据条数/// </summary>public int pageCount { get; set; }/// <summary>/// 操作是否成功/// </summary>public bool success { get; set; } = false;/// <summary>/// 返回信息/// </summary>public string msg { get; set; } = "服务器异常";/// <summary>/// 返回数据集合/// </summary>public T response { get; set; }}
}
(3)在Controllers文件夹里新建DataController.cs文件(新建控制器)
(4)使用sqlsugar这一款ORM框架来进行数据库操作

程序NuGet引入两个类库sqlsugar和Newtonsoft.Json
在这里插入图片描述
在这里插入图片描述

(5)Controllers文件夹下新建Helper.cs类

在这里插入图片描述
Helper.cs全部内容如下:

using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;namespace API.Helper
{public class dbContext{private static SqlSugarClient _db = null;/// <summary>/// test是数据库名/// </summary>                                          public static string ConnectionString = "server=localhost;uid=xxx;pwd=xxx;database=vue_test";public static SqlSugarClient CretClient(){_db = new SqlSugarClient(new ConnectionConfig(){ConnectionString = ConnectionString, //数据库连接字符串DbType = DbType.MySql, //必填IsAutoCloseConnection = false, //默认falseInitKeyType = InitKeyType.Attribute});return _db;}}
}

其中,DbType = DbType.MySql表示我们要连接的数据库为mysql,当然你也可以选择其他的数据库。或者切换多个不同的数据库(具体查看官方文档,既上面的sqlsugar),本篇中只使用一个数据库。server=localhost;uid=xxx;pwd=xxx;database=xxx为连接字符串,这是Mysql的连接字符串样式,不同的数据库是不同的,把里面的xxx换为你自己的数据库用户名,密码,使用的数据库名。

(6)打开我们之前写的DataController.cs文件添加接口方法

首先使用Helper.cs里新建的DbContext类来连接数据库

public static SqlSugarClient DbContext = dbContext.CretClient();

在这里插入图片描述
添加引用。此时,当前文件完整引用为:

using Newtonsoft.Json;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using MySql.Data.MySqlClient;
using System.Collections;
using System.Text;
using System.Threading.Tasks;
using API.Models;
using System.Collections.Generic;
using System.Web;
using SqlSugar;
using System.Diagnostics;
using System.Reflection;
using API.Helper;

然后添加接口方法,例如添加一个分页查询的方法

        /// <summary>/// 获取数据(分页)/// </summary>///<param name="page">当前页数</param>///<param name="intPageSize">每页显示数据条数</param>///<param name="key">查询条件</param>public async Task<MessageModel<object>> GetAsync(int page = 1,int intPageSize=10,string key=""){Expressionable<Data> exp = Expressionable.Create<SanData>();if (!string.IsNullOrEmpty(key)){exp.And(it => it.Name.Contains(key));}var result = DbContext.Queryable<SanData>().Where(exp.ToExpression()).ToPageList(page, intPageSize);return await Task.FromResult(new MessageModel<object>(){status = 200,success = true,msg = "获取成功",response = result});}

3,接口发布

(1)首先打包项目

项目上右键,选择“发布”
在这里插入图片描述
点击发布,目标位置里的app.publish文件夹就是我们后台打的包

(2)然后通过IIS发布

如果是新的服务器可能需要启用IIS服务
在这里插入图片描述

4,接口调用

注意1:接口在小程序使用之前,应保证可在外网访问。(这可在服务器平台的安全组设置以及服务器的出入口规则设置端口号来实现)
注意2:正式上线的小程序如要访问外网接口,接口必须是绑定在已经备案的域名上;并且,在小程序平台上的开发管理中,将开发设置下的服务器域名配置成你备案的域名。若是在本地微信开发者工具上访问,则先直接访问IP地址加端口号的形式也可以。

这里以获取亲爱/厌恶武将A的数据接口GetAllBeLove为例:
请求url为:BASE_URL /GetAllBeLove
参数有两个,name即武将名称,type即亲爱/厌恶

在小程序中获取数据:

         //获取亲爱武将A的数据let name="刘备";let type="like";let result_like = await fetchData(BASE_URL + 'GetAllBeLove', { name, type });//请求数据async function fetchData(url, data = {}) {return new Promise((resolve, reject) => {wx.request({url,data,header: {'content-type': 'application/x-www-form-urlencoded'},method: "GET",success: resolve,fail: reject});});}  

获取结果结构如下:
在这里插入图片描述

相关文章:

三国志14信息查询小程序(历史武将信息一览)制作更新过程05-后台接口的编写及调用

1&#xff0c;创建ASP.NET Web API项目 生成完毕&#xff0c;项目结构如下&#xff1a; 运行看一下&#xff1a; 2&#xff0c;后台接口编写 &#xff08;1&#xff09;在Models文件夹中新建一个sandata.cs文件&#xff08;就是上篇中武将信息表的model文件&#xff09; u…...

时序预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.Matlab实现SVM-Adaboost时间序列预测&#xff08;风…...

useEffect和useLayoutEffect的区别

烤冷面加辣条的抖音 - 抖音 (douyin.com) 一、看下面的代码&#xff0c;即使调换useLayoutEffect和useEffect的位置依旧是useLayoutEffect先输出。 import { useState, useEffect, useLayoutEffect } from "react"; const Index () > {useLayoutEffect(() >…...

[科研图像处理]用matlab平替image-j,有点麻烦,但很灵活!

做材料与生物相关方向的同学应该对image-j并不陌生&#xff0c;前几天有个师兄拜托我用image-j分析一些图片&#xff0c;但使用过后发现我由于不了解image-j的工作流程而对结果并不确信&#xff0c;而且image-j的功能无法拓展&#xff0c;对有些图片的处理效果并不好&#xff0…...

Node.js |(五)包管理工具 | 尚硅谷2023版Node.js零基础视频教程

学习视频&#xff1a;尚硅谷2023版Node.js零基础视频教程&#xff0c;nodejs新手到高手 文章目录 &#x1f4da;概念介绍&#x1f4da;npm&#x1f407;安装npm&#x1f407;基本使用&#x1f407;生产依赖与开发依赖&#x1f407;npm全局安装&#x1f407;npm安装指定包和删除…...

【ES专题】ElasticSearch集群架构剖析

目录 前言阅读对象阅读导航要点笔记正文一、ES集群架构1.1 为什么要使用ES集群架构1.2 ES集群核心概念1.2.1 节点1.2.1.1 Master Node主节点的功能1.2.1.2 Data Node数据节点的功能1.2.1.3 Coordinate Node协调节点的功能1.2.1.4 Ingest Node协调节点的功能1.2.1.5 其他节点功能…...

Kafka与Flink的整合 -- sink、source

1、首先导入依赖&#xff1a; <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-kafka</artifactId><version>1.15.2</version></dependency> 2、 source&#xff1a;Flink从Kafka中读取数据 p…...

小鱼ROS

git clone git clone https://ghproxy.com/https://github.com/stilleshan/ServerStatus git clone 私有仓库 Clone 私有仓库需要用户在 Personal access tokens 申请 Token 配合使用.git clone https://user:your_tokenghproxy.com/https://github.com/your_name/your_priv…...

简单讲讲RISC-V跳转指令基于具体场景的实现

背景 在 RISC-V指令集中&#xff0c;一共有 6 条有条件跳转指令&#xff0c;分别是 beq、bne、blt、bltu、bge、bgeu。如下是它们的定义与接口 BEQ rs1, rs2, imm ≠ BNE rs1, rs2, imm &#xff1c; BLT rs1, rs2, imm ≥ BGE rs1, rs2, imm < unsigned BLTU rs1…...

第13章 Java IO流处理(一) File类

目录 内容说明 章节内容 一、 File类 内容说明 结合章节内容重点难点,会对重要知识点进行扩展,以及做示例说明等,以便更好理解重点难点 章节内容 一、 File类 1、文件与目录的描述类——File ✔️ File类并不用来进行文件的读/写操作,并未涉及到写入或读取文件内容的…...

测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)

本系列文章总结归纳了一些软件测试工程师常见的面试题&#xff0c;主要来源于个人面试遇到的、网络搜集&#xff08;完善&#xff09;、工作日常讨论等&#xff0c;分为以下十个部分&#xff0c;供大家参考。如有错误的地方&#xff0c;欢迎指正。有更多的面试题或面试中遇到的…...

pytorch中的矩阵乘法

1. 运算符介绍 关于运算&#xff0c;*运算&#xff0c;torch.mul(), torch.mm(), torch.mv(), tensor.t() 和 *代表矩阵的两种相乘方式&#xff1a; 表示常规的数学上定义的矩阵相乘&#xff1b; *表示两个矩阵对应位置处的两个元素相乘。 1.1 矩阵点乘 *和torch.mul()等同…...

Java--Stream流详解

Stream是Java 8 API添加的一个新的抽象&#xff0c;称为流Stream&#xff0c;以一种声明性方式处理数据集合&#xff08;侧重对于源数据计算能力的封装&#xff0c;并且支持序列与并行两种操作方式&#xff09; Stream流是从支持数据处理操作的源生成的元素序列&#xff0c;源可…...

[PHP]ShopXO企业级B2C免费开源商城系统 v2.3.1

ShopXO 企业级B2C免费开源电商系统&#xff01; 求实进取、创新专注、自主研发、国内领先企业级B2C电商系统解决方案。 遵循Apache2开源协议发布&#xff0c;无需授权、可商用、可二次开发、满足99%的电商运营需求。 PCH5、支付宝小程序、微信小程序、百度小程序、头条&抖音…...

Python基础入门系列详解20篇

Python基础入门&#xff08;1&#xff09;----Python简介 Python基础入门&#xff08;2&#xff09;----安装Python环境&#xff08;Windows、MacOS、CentOS、Ubuntu&#xff09; Python基础入门&#xff08;3&#xff09;----Python基础语法&#xff1a;解释器、标识符、关键…...

P02项目(学习)

★ P02项目 项目描述&#xff1a;安全操作项目旨在提高医疗设备的安全性&#xff0c;特别是在医生离开操作屏幕时&#xff0c;以减少非授权人员的误操作风险。为实现这一目标&#xff0c;我们采用多层次的保护措施&#xff0c;包括人脸识别、姿势检测以及二维码识别等技术。这些…...

pandas 笔记:get_dummies分类变量one-hot化

1 函数介绍 pandas.get_dummies 是 pandas 库中的一个函数&#xff0c;它用于将分类变量转换为哑变量/指示变量。所谓的哑变量&#xff0c;就是将分类变量的每一个不同的值转换为一个新的0/1变量。在输出的DataFrame中&#xff0c;每一列都以该值的名称命名 pandas.get_dummi…...

PTE作文练习(一)

目录 65分备考建议 WE模版 范文 Supporting ideas: SWT 65分备考建议 RA重在多听标准的正确的示范&#xff0c;RS重在抓大放小&#xff0c;WFD重在整理错题&#xff0c;以及反反复复的车轮战&#xff0c;FIBRW重在“以对代记” 就是直接看答案&#xff0c;节约时间&#…...

如何做到一套FPGA工程无缝兼容两款不同的板卡?

试想这样一种场景,有两款不同的FPGA板卡,它们的功能代码90%都是一样的,但是两个板卡的管脚分配完全不同,一般情况下,我们需要设计两个工程,两套代码,之后还需要一直维护两个版本。 那么有没有一种自动化的方式,实现一个工程,编译出一个程序文件,下载到这两个不同的板…...

VSCode修改主题为Eclipse 绿色护眼模式

前言 从参加开发以来&#xff0c;一直使用eclipse进行开发&#xff0c;基本官方出新版本&#xff0c;我都会更新。后来出来很多其他的IDE工具&#xff0c;我也尝试了&#xff0c;但他们的主题都把我劝退了&#xff0c;黑色主题是谁想出来&#xff1f;&#x1f602; 字体小的时…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...