JAVA将List转成Tree树形结构数据和深度优先遍历
引言:
在日常开发中,我们经常会遇到需要将数据库中返回的数据转成树形结构的数据返回,或者需要对转为树结构后的数据绑定层级关系再返回,比如需要统计当前节点下有多少个节点等,因此我们需要封装一个ListToTree的工具类和学会如何通过深度优先遍历数据。
数据准备:
先简单准备一下具有父子关系的数据。
package data;public class OrgData {private String id;private String pId;private String orgName;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getpId() {return pId;}public void setpId(String pId) {this.pId = pId;}public String getOrgName() {return orgName;}public void setOrgName(String orgName) {this.orgName = orgName;}
}
package data;import java.util.ArrayList;
import java.util.List;public class SingData {public static List<OrgData> getData() {OrgData orgData1 = new OrgData();orgData1.setId("1");orgData1.setpId("root");orgData1.setOrgName("根节点A");OrgData orgData2 = new OrgData();orgData2.setId("2");orgData2.setpId("root");orgData2.setOrgName("根节点B");OrgData orgData3 = new OrgData();orgData3.setId("3");orgData3.setpId("1");orgData3.setOrgName("A目录");OrgData orgData4 = new OrgData();orgData4.setId("4");orgData4.setpId("2");orgData4.setOrgName("B目录");List<OrgData> list = new ArrayList<>();list.add(orgData1);list.add(orgData2);list.add(orgData3);list.add(orgData4);return list;}
}
正常情况下,我们都会选择封装一个将List转换为Tree的工具类,并且通过链式顺序LinkedList存储来遍历Tree数据,这里使用stream来实现,如下:
package data;import java.util.List;public class TreeBean {private String treeId;private String treePid;private String orgName;private Integer flag = 0;private List<TreeBean> children;private OrgData orgData;public String getTreeId() {return treeId;}public void setTreeId(String treeId) {this.treeId = treeId;}public String getOrgName() {return orgName;}public void setOrgName(String orgName) {this.orgName = orgName;}public String getTreePid() {return treePid;}public void setTreePid(String treePid) {this.treePid = treePid;}public List<TreeBean> getChildren() {return children;}public void setChildren(List<TreeBean> children) {this.children = children;}public OrgData getOrgData() {return orgData;}public void setOrgData(OrgData orgData) {this.orgData = orgData;}public Integer getFlag() {return flag;}public void setFlag(Integer flag) {this.flag = flag;}@Overridepublic String toString() {return "TreeBean{" +"treeId='" + treeId + '\'' +", treePid='" + treePid + '\'' +", orgName='" + orgName + '\'' +", children=" + children +'}';}
}
执行结果:
620fc2d13f944d61888c2f0af8198ad2.png
对tree数据进行遍历,通过链表的形式:
import data.OrgData;
import data.SingData;
import data.TreeBean;
import utils.ListToTreeUtil;import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;public class Main {public static void main(String[] args) {// 模拟查询数据List<OrgData> orgDataList = SingData.getData();// 构建tree数据List<TreeBean> treeBean = ListToTreeUtil.toTree(orgDataList, "root");// 使用LinkedList实现链式队列,实现深度遍历LinkedList<TreeBean> stack = new LinkedList<>();stack.addAll(treeBean);while (!stack.isEmpty()) {// 从栈顶开始访问TreeBean pop = stack.peek();// Flag=1表示已经遍历过一次且该节点存在子节点if (pop.getFlag() == 1) {OrgData orgData =pop.getOrgData();List<TreeBean> children = pop.getChildren();// 获取子节点的节点名称,也可以进行其他的操作List<String> collect = children.stream().map(TreeBean::getOrgName).collect(Collectors.toList());StringBuilder builder = new StringBuilder();for (String s : collect) {builder.append(s);builder.append(">");}pop.setOrgName(builder.toString());orgData.setOrgName(pop.getOrgName());// pop出栈,当前节点已经统计完,出栈获取下一个栈顶peekstack.pop();} else {// flag为0表示未遍历,判断是否已经遍历到叶子节点(最底部)if (pop.getChildren()!= null && !pop.getChildren().isEmpty()) {// 非叶子节点pop.setFlag(1);List<TreeBean> children = pop.getChildren();for (TreeBean child : children) {// 将叶子节点入栈,放到栈顶,实现深度遍历,nextstack.push(child);}} else {// 叶子节点直接出栈即可,cnt为本身stack.pop();}}}// 遍历最终的数据for (OrgData orgData : orgDataList) {System.out.println(orgData.toString());}}
}
但是现在有一个问题,当我们响应的数据从OrgData换到其他类型的时候,这时候就需要封装成一个泛型类使得我们的tree数据生成类变成一个通用的,完整代码如下:
完整代码:JAVA将List转为Tree和深度优先遍历
package data;import java.util.List;public interface Tree<T> {String getTreeId();String getTreePid();void setChild(List<T> list);
}
package data;import java.util.List;/*** 实现Tree<OrgData>并定义响应类型为本身* 定义转为树的参数返回
*/
public class OrgData implements Tree<OrgData>{private String id;private String pId;private String orgName;// 转成树需要的参数private Integer flag = 0;private List<OrgData> child;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getpId() {return pId;}public void setpId(String pId) {this.pId = pId;}public String getOrgName() {return orgName;}public void setOrgName(String orgName) {this.orgName = orgName;}public Integer getFlag() {return flag;}public void setFlag(Integer flag) {this.flag = flag;}public List<OrgData> getChild() {return child;}@Overridepublic String toString() {return "OrgData{" +"id='" + id + '\'' +", pId='" + pId + '\'' +", orgName='" + orgName + '\'' +'}';}@Overridepublic String getTreeId() {return id;}@Overridepublic String getTreePid() {return pId;}@Overridepublic void setChild(List<OrgData> list) {this.child = list;}
}
ListToTree方法
package utils;import data.OrgData;
import data.SingData;
import data.Tree;
import data.TreeBean;import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;/*** 将List转为Tree* <T extends Tree>告诉编译器有Tree的get方法**/
public class ListToTreeUtil {public static <T extends Tree> List<T> toTree(List<T> list, String root) {// 当根节点为null时,定义一个初始值,防止nullString treeRoot = "treeRoot";String finalRoot = root;if (list.isEmpty()) {return new ArrayList<>();}// 构建Map数据// 根据pid分组,获取所有的子节点集合Map<String, List<T>> childMap =list.stream().collect(Collectors.groupingBy(item -> {String treePid = item.getTreePid();if (treePid == null) {treePid = treeRoot;}return treePid;}));return list.stream().peek(data -> {List<T> children = childMap.get(data.getTreeId());if (children != null && !children.isEmpty()) {data.setChild(children);}}).filter(data -> data.getTreePid().equals(finalRoot)).collect(Collectors.toList());}
}
深度优先遍历
import data.OrgData;
import data.SingData;
import data.TreeBean;
import utils.ListToTreeUtil;import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;public class Main {public static void main(String[] args) {// 模拟查询数据List<OrgData> orgDataList = SingData.getData();// 构建tree数据List<OrgData> treeBean = ListToTreeUtil.toTree(orgDataList, "root");// 使用LinkedList实现链式队列,实现深度遍历LinkedList<OrgData> stack = new LinkedList<>();stack.addAll(treeBean);while (!stack.isEmpty()) {// 从栈顶开始访问OrgData pop = stack.peek();// Flag=1表示已经遍历过一次且该节点存在子节点if (pop.getFlag() == 1) {List<OrgData> children = pop.getChild();// 获取子节点的节点名称,也可以进行其他的操作List<String> collect = children.stream().map(OrgData::getOrgName).collect(Collectors.toList());StringBuilder builder = new StringBuilder();for (String s : collect) {builder.append(s);builder.append(">");}pop.setOrgName(builder.toString());// pop出栈,当前节点已经统计完,出栈获取下一个栈顶peekstack.pop();} else {// flag为0表示未遍历,判断是否已经遍历到叶子节点(最底部)if (pop.getChild()!= null && !pop.getChild().isEmpty()) {// 非叶子节点pop.setFlag(1);List<OrgData> children = pop.getChild();for (OrgData child : children) {// 将叶子节点入栈,放到栈顶,实现深度遍历,nextstack.push(child);}} else {// 叶子节点直接出栈即可,cnt为本身stack.pop();}}}// 遍历最终的数据for (OrgData orgData : orgDataList) {System.out.println(orgData.toString());}}
}
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
JAVA将List转成Tree树形结构数据和深度优先遍历
引言: 在日常开发中,我们经常会遇到需要将数据库中返回的数据转成树形结构的数据返回,或者需要对转为树结构后的数据绑定层级关系再返回,比如需要统计当前节点下有多少个节点等,因此我们需要封装一个ListToTree的工具类…...
![](https://www.ngui.cc/images/no-images.jpg)
设计模式——开闭、单一职责及里氏替换原则
设计原则是指导软件设计和开发的一系列原则,它们帮助开发者创建出易于维护、扩展和理解的代码。以下是你提到的几个关键设计原则的简要说明: 开闭原则(Open/Closed Principle, OCP): 开闭原则由Bertrand Meyer提出&am…...
![](https://img-blog.csdnimg.cn/img_convert/c87883abbab15ed764790b0b2227fc25.png)
代码随想录算法训练营第59天:动态[1]
代码随想录算法训练营第59天:动态 两个字符串的删除操作 力扣题目链接(opens new window) 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。 示例: 输入: …...
![](https://img-blog.csdnimg.cn/direct/48b98ad78da9414a85b3f2d55374ec07.png)
jvm性能监控常用工具
在java的/bin目录下有许多java自带的工具。 我们常用的有 基础工具 jar:创建和管理jar文件 java:java运行工具,用于运行class文件或jar文件 javac:java的编译器 javadoc:java的API文档生成工具 性能监控和故障处理 jps jstat…...
![](https://i-blog.csdnimg.cn/direct/eb950b3a71924df18229a00c5f1fab94.png)
ISP IC/FPGA设计-第一部分-SC130GS摄像头分析-IIC通信(1)
1.摄像头模组 SC130GS通过一个引脚(SPI_I2C_MODE)选择使用IIC或SPI配置接口,通过查看摄像头模组的原理图,可知是使用IIC接口; 通过手册可知IIC设备地址通过一个引脚控制,查看摄像头模组的原理图ÿ…...
![](https://www.ngui.cc/images/no-images.jpg)
HTTP协议头中X-Forwarded-For是能做什么?
X-Forwarded-For和相关几个头部的理解 $remote_addr 是nginx与客户端进行TCP连接过程中,获得的客户端真实地址. Remote Address 无法伪造,因为建立 TCP 连接需要三次握手,如果伪造了源 IP,无法建立 TCP 连接,更不会有后…...
![](https://img-blog.csdnimg.cn/direct/91ba9a7e593f4124acdb14243d93865f.png)
Linux高并发服务器开发(八)Socket和TCP
文章目录 1 IPV4套接字结构体2 TCP客户端函数 3 TCP服务器流程函数代码粘包 4 三次握手5 四次挥手6 滑动窗口 1 IPV4套接字结构体 2 TCP客户端 特点:出错重传 每次发送数据对方都会回ACK,可靠 tcp是打电话的模型,建立连接 使用连接 关闭连接…...
![](https://www.ngui.cc/images/no-images.jpg)
力扣第220题“存在重复元素 III”
在本篇文章中,我们将详细解读力扣第220题“存在重复元素 III”。通过学习本篇文章,读者将掌握如何使用桶排序和滑动窗口来解决这一问题,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释,以便于理解。 问题描述…...
![](https://img-blog.csdnimg.cn/direct/4c2e4de5a1a248ec96af7b27b5395abc.png)
Qt实战项目——贪吃蛇
一、项目介绍 本项目是一个使用Qt框架开发的经典贪吃蛇游戏,旨在通过简单易懂的游戏机制和精美的用户界面,为玩家提供娱乐和编程学习的机会。 游戏展示 二、主要功能 2.1 游戏界面 游戏主要是由三个界面构成,分别是游戏大厅、难度选择和游戏…...
![](https://img-blog.csdnimg.cn/direct/26954117593243f1b88034d03648834f.png)
Windows 10,11 Server 2022 Install Docker-Desktop
docker 前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 docker-compose Compose 是用于定义和运行…...
![](https://www.ngui.cc/images/no-images.jpg)
C++中的RAII(资源获取即初始化)原则
C中的RAII(Resource Acquisition Is Initialization,资源获取即初始化)原则是一种管理资源、避免资源泄漏的惯用法。RAII是C之父Bjarne Stroustrup提出的设计理念,其核心思想是将资源的获取(如动态内存分配、文件句柄、…...
![](https://img-blog.csdnimg.cn/direct/829dc1b4006d4f8b95932940608a8c7c.png)
【机器学习】Whisper:开源语音转文本(speech-to-text)大模型实战
目录 一、引言 二、Whisper 模型原理 2.1 模型架构 2.2 语音处理 2.3 文本处理 三、Whisper 模型实战 3.1 环境安装 3.2 模型下载 3.3 模型推理 3.4 完整代码 3.5 模型部署 四、总结 一、引言 上一篇对ChatTTS文本转语音模型原理和实战进行了讲解&a…...
![](https://www.ngui.cc/images/no-images.jpg)
ubuntu22.04 编译安装openssl C++ library
#--------------------------------------------------------------------------- # openssl C library # https://www.openssl.org/source/index.html #--------------------------------------------------------------------------- cd /opt/download # 下载openssl-3.0.13…...
![](https://img-blog.csdnimg.cn/direct/57441e5b867e455f8f54fdd10acaca8c.png)
百度Agent初体验(制作步骤+感想)
现在AI Agent很火,最近注册了一个百度Agent体验了一下,并做了个小实验,拿它和零一万物(Yi Large)和文心一言(ERNIE-4.0-8K-latest)阅读了相同的一篇网页资讯,输出资讯摘要࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
7-491 3名同学5门课程成绩,输出最好成绩及所在的行和列(二维数组作为函数的参数)
编程:数组存储3名同学5门课程成绩 输出最好成绩及所在的行和列 要求:将输入、查找和打印的功能编写成函数 并将二维数组通过指针参数传递的方式由主函数传递到子函数中 输入格式: 每行输入一个同学的5门课的成绩,每个成绩之间空一格,见输入…...
![](https://img-blog.csdnimg.cn/direct/7c0cb1e5c7dc487e9698b5ff9a5c3bab.png)
OpenCloudOS开源的操作系统
OpenCloudOS 是一款开源的操作系统,致力于提供高性能、稳定和安全的操作系统环境,以满足现代计算和应用程序的需求。它结合了现代操作系统设计的最新技术和实践,为开发者和企业提供了一个强大的平台。本文将详细介绍 OpenCloudOS 的背景、特性…...
![](https://www.ngui.cc/images/no-images.jpg)
排序题目:多数元素 II
文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 前言解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题:多数元素 II 出处:229. 多数元素 II 难度 3 级 题目描述 …...
![](https://img-blog.csdnimg.cn/direct/e27c8fb34092430891cd07e5316108e4.png)
<电力行业> - 《第1课:电力行业的五大四小》
1 什么是电力行业的五大四小? 我们常说的电力行业的五大四小,指的是电力行业有实力的公司,分为:较强梯队的五大集团、较弱梯队的四小豪门。 五个实力雄厚的集团,分别是: 中国华能集团公司中国大唐集团公…...
![](https://img-blog.csdnimg.cn/direct/2c23aa9f360b4165adc2c9f353b16c8a.png#pic_center)
数据库定义语言(DDL)
数据库定义语言(DDL) 一、数据库操作 1、 查询所有的数据库 SHOW DATABASES;效果截图: 2、使用指定的数据库 use 2403 2403javaee;效果截图: 3、创建数据库 CREATE DATABASE 2404javaee;效果截图: 4、删除数据…...
![](https://img-blog.csdnimg.cn/direct/ef6d79931edc4cb6af94a0f0c27fba63.png)
mybatis实现多表查询
mybatis高级查询【掌握】 1、准备工作 【1】包结构 创建java项目,导入jar包和log4j日志配置文件以及连接数据库的配置文件; 【2】导入SQL脚本 运行资料中的sql脚本:mybatis.sql 【3】创建实体来包,导入资料中的pojo 【4】User…...
![](https://img-blog.csdnimg.cn/direct/a41cc83b5d32467884945b6ac6819978.jpeg)
数据结构:队列详解 c++信息学奥赛基础知识讲解
目录 一、队列概念 二、队列容器 三、队列操作 四、代码实操 五、队列遍历 六、案例实操 题目描述: 输入格式: 输出格式: 输入样例: 输出样例: 详细代码: 一、队列概念 队列是一种特殊的线性…...
![](https://img-blog.csdnimg.cn/direct/a458caf98dfc40779db782f546292ab2.png)
硬件开发笔记(二十三):贴片电阻的类别、封装介绍,AD21导入贴片电阻原理图封装库3D模型
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140110514 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...
![](https://img-blog.csdnimg.cn/20200624171149382.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NjQ5OQ==,size_16,color_FFFFFF,t_70)
Kafka基本原理详解
(一)概念理解 Apache Kafka是一种开源的分布式流处理平台,专为高性能、高吞吐量的实时数据处理而设计。它最初由LinkedIn公司开发,旨在解决其网站活动中产生的大量实时数据处理和传输问题,后来于2011年开源࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
【Unity】RPG2D龙城纷争(七)关卡编辑器之剧情编辑
更新日期:2024年7月1日。 项目源码:第五章发布(正式开始游戏逻辑的章节) 索引 简介一、剧情编辑1.对话数据集2.对话触发方式3.选择对话角色4.设置对话到关卡5.通关条件简介 严格来说,剧情编辑不在关卡编辑器界面中完成,只不过它仍然属于关卡编辑的范畴。 在我们的设想中…...
![](https://img-blog.csdnimg.cn/img_convert/bf3805b641abedd296dbf6e1fc2169c4.png)
uniapp启动页面鉴权页面闪烁问题
在使用uni-app开发app 打包完成后如果没有token,那么就在onLaunch生命周期里面判断用户是否登录并跳转至登录页。 但是在app中页面会先进入首页然后再跳转至登录页,十分影响体验。 处理方法: 使用plus.navigator.closeSplashscreen() 官网…...
![](https://www.ngui.cc/images/no-images.jpg)
全志H616交叉编译工具链的安装与使用
交叉编译的概念 1. 什么是交叉编译? 交叉编译是指在一个平台上生成可以在另一个平台上运行的可执行代码。例如,在Ubuntu Linux上编写代码,并编译生成可在Orange Pi Zero2上运行的可执行文件。这个过程是通过使用一个专门的交叉编译工具链来…...
![](https://img-blog.csdnimg.cn/direct/f6c38c9869e94460b24ee2de0e32a4e4.png)
深入解析Java和Go语言中String与byte数组的转换原理
1.Java String与byte[]互相转换存在的问题 java中,按照byte[] 》string 》byte[]的流程转换后,byte数据与最初的byte不一致。 多说无益,上代码,本地macos机器执行,统一使用的UTF-8编码。 import java.nio.charset.S…...
![](https://www.ngui.cc/images/no-images.jpg)
什么是strcmp函数
目录 开头1.什么是strcmp函数2.strcmp函数里的内部结构3.strcmp函数的实际运用(这里只列举其一)脑筋急转弯 结尾 开头 大家好,我叫这是我58。今天,我们要来认识一下C语言中的strcmp函数。 1.什么是strcmp函数 strcmp函数来自于C语言中的头文件<str…...
![](https://www.ngui.cc/images/no-images.jpg)
Follow Carl To Grow|【LeetCode】491.递增子序列,46.全排列,47.全排列 II
【LeetCode】491.递增子序列 题意:给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等,也可以…...
![](https://www.ngui.cc/images/no-images.jpg)
pytorch nn.Embedding 用法和原理
nn.Embedding 是 PyTorch 中的一个模块,用于将离散的输入(通常是词或子词的索引)映射到连续的向量空间。它在自然语言处理和其他需要处理离散输入的任务中非常常用。以下是 nn.Embedding 的用法和原理。 用法 初始化 nn.Embedding nn.Embed…...
![](https://img-blog.csdnimg.cn/direct/7feddcae6fbd49d692d90cfc5de58e3e.png#pic_center)
Python中常用的有7种值(数据)的类型及type()语句的用法
目录 0.Python中常用的有7种值(数据)的类型Python中的数据类型主要有:Number(数字)、Boolean(布尔)、String(字符串)、List(列表)、Tuple…...
![](https://img-blog.csdnimg.cn/img_convert/367ea767066b62e716d2f6b033f254d2.png)
某配送平台未授权访问和弱口令(附赠nuclei默认密码验证脚本)
找到一个某src的子站,通过信息收集插件,发现ZABBIX-监控系统,可以日一下 使用谷歌搜索历史漏洞:zabbix漏洞 通过目录扫描扫描到后台,谷歌搜索一下有没有默认弱口令 成功进去了,挖洞就是这么简单 搜索文章还…...
![](https://www.ngui.cc/images/no-images.jpg)
01.总览
目录 简介Course 1: Natural Language Processing with Classification and Vector SpaceWeek 1: Sentiment Analysis with Logistic RegressionWeek 2: Sentiment Analysis with Nave BayesWeek 3: Vector Space ModelsWeek 4: Machine Translation and Document Search Cours…...
![](https://img-blog.csdnimg.cn/direct/a5849c36a691498b9428542cf909c07b.png)
Linux换源
前言 安装完Linux系统,尽量更换源以提高安装软件的速度。 步骤 备份原始源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak修改sources.list sudo vim /etc/apt/sources.list将内容替换成对应的源 **PS:清华源地址:https:…...
![](https://www.ngui.cc/images/no-images.jpg)
【高考志愿】 化学工程与技术
目录 一、专业概述 二、就业前景 三、就业方向 四、报考注意 五、专业发展与深造 六、化学工程与技术专业排名 七、总结 一、专业概述 化学工程与技术专业,这是一门深具挑战与机遇的综合性学科。它融合了工程技术的实用性和化学原理的严谨性,为毕…...
![](https://www.ngui.cc/images/no-images.jpg)
2024上半年网络与数据安全法规政策、国标、报告合集
事关大局,我国数据安全立法体系已基本形成并逐步细化。数据基础制度建设事关国家发展和安全大局,数据安全治理贯穿构建数据基础制度体系全过程。随着我国数字经济建设进程加快,数据安全立法实现由点到面、由面到体加速构建,目前已…...
![](https://img-blog.csdnimg.cn/direct/e7f568b06e2948f2b4140fbed30dfdc6.png)
基于SpringBoot扶农助农政策管理系统设计和实现(源码+LW+调试文档+讲解等)
💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…...
![](https://www.ngui.cc/images/no-images.jpg)
淘宝商铺电话怎么获取?使用爬虫工具采集
访问淘宝商铺是一个合法的行为,你可以使用爬虫工具来提取淘宝商铺的信息。下面是一个基本的Python程序示例,用于使用爬虫工具访问淘宝商铺: import requestsdef get_store_info(store_id):url fhttps://shop{id}.taobao.comresponse reque…...
![](https://www.ngui.cc/images/no-images.jpg)
ModStart:开源免费的PHP企业网站开发建设管理系统
大家好!今天我要给大家介绍一款超级强大的开源工具——ModStart,它基于Laravel框架,是PHP企业网站开发建设的绝佳选择! 为什么选择ModStart? 模块化设计:ModStart采用模块化设计,内置了众多基…...
![](https://img-blog.csdnimg.cn/img_convert/ed79f053a59e70d430350f139b00a1c8.png)
npm安装依赖报错——npm ERR gyp verb cli的解决方法
1. 问题描述 1.1 npm安装依赖报错——npm ERR! gyp verb cli npm MARN deprecated axiosQ0.18.1: critical security vuLnerability fixed in v0.21.1. For more information, npm WARN deprecated svg001.3.2: This SVGO version is no Longer supported. upgrade to v2.x.x …...
![](https://img-blog.csdnimg.cn/img_convert/c7cf7640072d42dc58e23898d393c73e.png)
公网环境使用Potplayer远程访问家中群晖NAS搭建的WebDAV听歌看电影
文章目录 前言1 使用环境要求:2 配置webdav3 测试局域网使用potplayer访问webdav4 内网穿透,映射至公网5 使用固定地址在potplayer访问webdav 前言 本文主要介绍如何在Windows设备使用potplayer播放器远程访问本地局域网的群晖NAS中的影视资源ÿ…...
![](https://img-blog.csdnimg.cn/direct/6fe40d27472e4a6284cc26e77bf7a70f.png)
Forecasting from LiDAR via Future Object Detection
Forecasting from LiDAR via Future Object Detection 基础信息 论文:cvpr2022paper https://openaccess.thecvf.com/content/CVPR2022/papers/Peri_Forecasting_From_LiDAR_via_Future_Object_Detection_CVPR_2022_paper.pdfgithub:https://github.co…...
![](https://img-blog.csdnimg.cn/direct/7f2819cdbf4d487ba3af2e0652739c06.png#pic_center)
【unity笔记】五、UI面板TextMeshPro 添加中文字体
Unity 中 TextMeshPro不支持中文字体,下面为解决方法: 准备字体文件,从Windows系统文件的Fonts文件夹里拖一个.ttf文件(C盘 > Windows > Fonts ) 准备字库文件,新建一个文本文件,命名为“字库”&…...
![](https://img-blog.csdnimg.cn/img_convert/53d711215e2fde08000c0c5afcca4fff.png)
如何在Windows 11上设置默认麦克风和相机?这里有详细步骤
如果你的Windows 11计算机上连接了多个麦克风或网络摄像头,并且希望自动使用特定设备,而不必每次都在设置中乱动,则必须将首选设备设置为默认设备。我们将向你展示如何做到这一点。 如何在Windows 11上更改默认麦克风 有两种方法可以将麦克…...
![](https://img-blog.csdnimg.cn/direct/498b79ec080747968d9a742df70f730b.png)
Flutter循序渐进==>数据结构(列表、映射和集合)和错误处理
导言 填鸭似的教育确实不行,我高中时学过集合,不知道有什么用,毫无兴趣,等到我学了一门编程语言后,才发现集合真的很有用;可以去重,可以看你有我没有的,可以看我有你没有的…...
![](https://img-blog.csdnimg.cn/direct/f24b6c6d14d8498797f3b99d89445de0.png)
泛微E9开发 限制明细表列的值重复
限制明细表列的值重复 1、需求说明2、实现方法3、扩展知识点3.1 修改单个字段值(不支持附件类型)3.1.1 格式3.1.2 参数3.1.3 案例 3.2 获取明细行所有行标示3.2.1 格式3.2.2 参数说明 1、需求说明 限制明细表的“类型”字段,在同一个流程表单…...
![](https://www.ngui.cc/images/no-images.jpg)
magicapi导出excel
参考:Hutool参考文档 response模块 | magic-api import response;import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map;import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; …...
![](https://img-blog.csdnimg.cn/direct/274440ba75ee462aa6a003a129bbcefd.png#pic_center)
【秋招突围】2024届秋招笔试-科大讯飞笔试题-03-三语言题解(Java/Cpp/Python)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系计划跟新各公司春秋招的笔试题 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📧 清隆这边…...
![](https://i-blog.csdnimg.cn/direct/a9ed054119084910899dad6c8054cec7.png)
springboot是否可以代替spring
Spring Boot不能直接代替Spring,但它是Spring框架的一个扩展和增强,提供了更加便捷和高效的开发体验。以下是关于Spring Boot和Spring关系的详细解释: Spring框架: Spring是一个广泛应用的开源Java框架,提供了一系列模…...
![](https://img-blog.csdnimg.cn/img_convert/a5fed1f97d384c277ca61c2328821fbf.png)
基于SpringBoot的CSGO赛事管理系统
您好!我是专注于计算机技术研究的码农小野。如果您对CSGO赛事管理系统感兴趣或有相关开发需求,欢迎随时联系我。 开发语言:Java 数据库:MySQL 技术:SpringBoot框架,Java技术 工具:Eclipse&a…...
![](https://img-blog.csdnimg.cn/direct/735be89007f3476b9d3edded4f1106ce.jpeg)
沃尔核材:价值重估
当英伟达这个曾经的GPU行业龙头,伴随AI的发展成为AI芯片架构的供应商时,他就跳出了原本行业的竞争格局,曾经还能与之一战的超威半导体被远远甩在身后,成为宇宙第一公司。 这说的就是一家公司价值的重估。今天给大家聊的也是这样一…...
![](https://img-blog.csdnimg.cn/direct/a3a96a7f1f4345579832e95b0f869c93.png)
Continual Test-Time Domain Adaptation--论文笔记
论文笔记 资料 1.代码地址 https://github.com/qinenergy/cotta 2.论文地址 https://arxiv.org/abs/2203.13591 3.数据集地址 论文摘要的翻译 TTA的目的是在不使用任何源数据的情况下,将源预先训练的模型适应到目标域。现有的工作主要考虑目标域是静态的情况…...
![](https://www.ngui.cc/images/no-images.jpg)
第8天:模块和包
学习目标 理解Python模块和包的概念学习如何创建和导入模块掌握标准库模块的使用学习如何使用包组织代码 学习内容 1. 模块的概念 模块是一个包含Python代码的文件,模块可以包含函数、类和变量,也可以包含可执行的代码。模块使你能够组织和重用代码。…...
![](https://img-blog.csdnimg.cn/direct/c1f6b2d844ef487fa64cd57528c57b14.png)
2024高考作文题“人工智能”
今年开年到现在,明显的感受就是,咨询人工智能机器人的客户比往年更多了。什么原因,是因为人工成本太高了,今年整体经济环境变差,招不起人,所以想用AI机器人来降低用工成本吗? 还是说因为语音线路…...
![](https://img-blog.csdnimg.cn/direct/7dc88b23dba6408aace27ad5d44503ee.gif#pic_center)
【数据结构|C语言版】四大排序(算法)
前言1. 插入排序1.1 直接插入排序1.2 希尔排序 2. 选择排序2.1 选择排序2.2 堆排序 3. 交换排序3.1 冒泡排序冒泡排序的步骤 3.2 快速排序快速排序的步骤 4. 归并排序归并排序的步骤:代码解释:归并排序的性能: 上期回顾: 【数据结构|C语言版】…...
![](https://img-blog.csdnimg.cn/cc002cbd5c414c5393e19c5e0a0dbf20.gif#pic_center#pic_center)
【TS】TypeScript 原始数据类型深度解析
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 TypeScript 原始数据类型深度解析一、引言二、基础原始数据类型2.1 boolean2.2 …...
![](https://img-blog.csdnimg.cn/direct/b75507ffff1b4efdafb4a3e4024713b6.png)
CSS浮动详细教学(CSS从入门到精通学习第四天)
css第04天 一、其他样式 1、圆角边框 在 CSS3 中,新增了圆角边框样式,这样我们的盒子就可以变圆角了。 border-radius 属性用于设置元素的外边框圆角。 语法: border-radius:length; 参数值可以为数值或百分比的形式如果是正方形&…...
![](https://img-blog.csdnimg.cn/direct/548f4522b4184f0c9d1d8fd86a74ab97.png)
算法与数据结构高手养成:朴素的贪心法(上)最优化策略
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
![](https://img-blog.csdnimg.cn/direct/c506b4d9675d461aab4f937cb91c017f.jpeg)
win10如何查看本机ip地址?三招搞定,快来试试吧
在数字化时代,IP地址作为网络设备的唯一标识,对于计算机使用者来说具有重要意义。无论是为了进行网络设置、远程连接,还是解决网络问题,了解如何查看本机IP地址都是一项必备技能。对于使用Windows 10操作系统的用户来说࿰…...
![](https://img-blog.csdnimg.cn/direct/ce8f0712e46f406ab441d922623a872e.png)
YOLOV10阅读总结
GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection YOLOv10 - Ultralytics YOLO Docs https://arxiv.org/pdf/2405.14458 论文地址 最近yolo又出了个yolov10了,不得不感慨CV是真卷,毕竟yolov9也才没多久。记录一下阅读笔记。…...
![](https://www.ngui.cc/images/no-images.jpg)
嘉道理慈善基金会董事到访中国残联
5月22日下午,中国残联副理事长尤亮在京会见嘉道理慈善基金会董事彼得保罗一行。尤亮对彼得保罗一行到访中国残联表示欢迎。他介绍了近年来中国残疾人事业发展的新成就,并回顾了中国残联与嘉道理基金会自1997年以来的合作历程。他表示,在长期合作过程中,双方在残疾人教育、就…...
![](https://img-blog.csdnimg.cn/direct/2361205cf86c41b28aa2dd6e4f786291.png#pic_center)
【Game】Powerful
文章目录 【小伙伴】隐藏小伙伴 【百趣集】【人物属性点】【宠物打造】【奇遇】【钓鱼】 【小伙伴】 刷新位置 小伙伴等级详情 克制关系 隐藏小伙伴 1、仙缘小伙伴(6种) 遇到仙缘驭宠师然后进入战斗抓取 107、七彩仙凤 108、小青兔 109、小布 110、黑腹蛛…...