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

PasteForm框架开发之Entity多级嵌套的表单的实现

你相信么,使用PasteForm框架开发,管理端居然不要写代码!!!
一起来看看PasteForm是否支持多级表模式(外表)

需求假设

假如有这么一个需求,就是订单表,包含了多级的信息,比如这个订单包含了哪些商品,又有哪些货品信息等,以下是一个概览,模拟的是实际的一些层级关系

Entity定义

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;namespace LevelEntity.levelmodels
{/// <summary>/// /// </summary>public class OrderDetail : Entity<int>{/// <summary>/// 标题/// </summary>[MaxLength(128)]public string Title { get; set; }/// <summary>/// 封面图/// </summary>[MaxLength(128)]public string CoverImage { get; set; }/// <summary>/// 订单包含产品/// </summary>public ICollection<OrderProduct> Products { get; set; }/// <summary>/// 订单金额/// </summary>public OrderPrice Price { get; set; }}/// <summary>/// /// </summary>public class OrderProduct : Entity<int>{/// <summary>/// /// </summary>public int ProductId { get; set; }/// <summary>/// /// </summary>public int BuyNum { get; set; }/// <summary>/// /// </summary>public int ProductPrice { get; set; }/// <summary>/// 货品信息/// </summary>public SkuInfo Sku { get; set; }}/// <summary>/// /// </summary>public class SkuInfo : Entity<int>{/// <summary>/// 货品名称/// </summary>[MaxLength(32)]public string SkuName { get; set; }}/// <summary>/// /// </summary>public class OrderPrice : Entity<int>{/// <summary>/// 订单总金额/// </summary>public int TotalAmount { get; set; }/// <summary>/// 优惠总金额/// </summary>public int FreeAmount { get; set; }}/// <summary>/// 购买者信息/// </summary>public class OrderBuyer : Entity<int>{/// <summary>/// 姓名/// </summary>[MaxLength(16)]public string Name { get; set; }/// <summary>/// 年龄/// </summary>public int Age { get; set; }}
}

如上所示,我把他们全部放于XXX.Domain/levelmodels的文件夹的OrderDetail.cs中
结构如下
在这里插入图片描述

确认了字段的注释等之后,右键OrderDetail.cs这个文件,使用PasteBuidler构建代码
可以生成对应的Dto和AppService模块
在这里插入图片描述

如上图所示,会在这些地方生成对应的代码,自动生成的代码有些需要调整,我们进行针对性的调整下

调整Dto

我们以新增OrderDetail为例子,对OrderDetailAddDto调整如下

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using LevelEntity.Application.Contracts;
using PasteFormHelper;namespace LevelEntity.levelmodels
{///<summary>//////</summary>public class OrderDetailAddDto{///<summary>///标题///</summary>[MaxLength(128)]public string Title { get; set; }///<summary>///封面图///</summary>[MaxLength(128)]public string CoverImage { get; set; }///<summary>///包含产品 这里会自动构建组,因为是list和directsun///</summary>[PasteDirectsun]public List<OrderProductUpdateDto> Products { get; set; }///<summary>///订单金额///</summary>[PasteDirectsun]public OrderPriceUpdateDto Price { get; set; }}///<summary>//////</summary>public class OrderDetailUpdateDto : OrderDetailAddDto{/// <summary>/// /// </summary>public int Id { get; set; }/<summary>/标题/</summary>//[MaxLength(128)]//public string Title { get; set; }/<summary>/封面图/</summary>//[MaxLength(128)]//public string CoverImage { get; set; }/<summary>/订单包含产品/</summary>//public List<OrderProductDto> Products { get; set; }/<summary>/订单金额/</summary>//public OrderPriceDto Price { get; set; }}///<summary>//////</summary>public class OrderDetailDto : OrderDetailUpdateDto{/<summary>/标题/</summary>//[MaxLength(128)]//public string Title { get; set; }/<summary>/封面图/</summary>//[MaxLength(128)]//public string CoverImage { get; set; }/<summary>/订单包含产品/</summary>//public List<OrderProductDto> Products { get; set; }/<summary>/订单金额/</summary>//public OrderPriceDto Price { get; set; }}///<summary>//////</summary>public class OrderDetailListDto{/// <summary>/// ID/// </summary>public int Id { get; set; }///<summary>///标题///</summary>[MaxLength(128)][PasteClass]public string Title { get; set; }///<summary>///封面图///</summary>[MaxLength(128)][PasteClass]public string CoverImage { get; set; }///<summary>///订单包含产品///</summary>[PasteHidden]public List<OrderProductDto> Products { get; set; }///<summary>///订单金额///</summary>[PasteDisplay("totalAmount")][PasteFenToYuan]public OrderPriceDto Price { get; set; }}///<summary>/// 查询///</summary>public class InputQueryOrderDetail : InputSearchBase{/// <summary>/// 货品名称/// </summary>public string sku_name { get; set; }/// <summary>/// 商品ID/// </summary>public int pro_id { get; set; }}
}

注意看OrderDetailAddDto的这个信息

        ///<summary>///包含产品 这里会自动构建组,因为是list和directsun///</summary>[PasteDirectsun]public List<OrderProductUpdateDto> Products { get; set; }///<summary>///订单金额///</summary>[PasteDirectsun]public OrderPriceUpdateDto Price { get; set; }

我偷懒了下,直接用UpdateDto,其实应该用AddDto的,也就是

        ///<summary>///包含产品 这里会自动构建组,因为是list和directsun///</summary>[PasteDirectsun]public List<OrderProductAddDto> Products { get; set; }///<summary>///订单金额///</summary>[PasteDirectsun]public OrderPriceAddDto Price { get; set; }

不过实际中影响不大,因为我直接把对应的Id隐藏了
比如对应的OrderProductUpdateDto的代码调整如下

    ///<summary>//////</summary>public class OrderProductUpdateDto{/// <summary>/// /// </summary>[PasteHidden]public int Id { get; set; }///<summary>///商品ID///</summary>public int ProductId { get; set; }///<summary>///购买数量///</summary>public int BuyNum { get; set; }///<summary>///售价///</summary>public int ProductPrice { get; set; }///<summary>///货品信息///</summary>[PasteDirectsun]public SkuInfoUpdateDto Sku { get; set; }}

而SkuInfoUpdateDto的代码修改如下

    ///<summary>//////</summary>public class SkuInfoUpdateDto{/// <summary>/// /// </summary>[PasteHidden]public int Id { get; set; }///<summary>///货品名称///</summary>[MaxLength(32)]public string SkuName { get; set; }}

Dto解读

由上面的代码可知,主要是在子Object中加入了[PasteDirectSun]
这个其实就是特性directsun的内容,具体的可以查看
https://soft.pastecode.cn/doc/form/classfunc/directsun
(如果没有,就是我文档还没有升级哈!)
至于其他字段就是正常的字段了,不做其他说明,一起来看看如何实现新增和更新

新增

开发过ABP框架项目的都知道,新增走的是AddDto,这里就是OrderDetailAddDto
然后我们看下PasteForm在对于这个新增的时候做了什么操作
一起看下XXX.Application/levelmodels的OrderDetailAppService.cs中的
ReadAddModel
代码如下

        /// <summary>/// 读取AddDto的数据模型/// </summary>/// <returns></returns>[HttpGet][TypeFilter(typeof(RoleAttribute), Arguments = new object[] { "data", "add" })]public VoloModelInfo ReadAddModel(){var dto = new OrderDetailAddDto();dto.Products = new List<OrderProductUpdateDto> { new OrderProductUpdateDto() { Sku = new SkuInfoUpdateDto { } } };var _model = PasteBuilderHelper.DynamicReadModelProperty<OrderDetailAddDto>(dto);return _model;}

上面代码中要注意,当设计子对象的时候,需要先new一个对象出来,不然UI中没法解析对象!
估计这个问题后续会改版,就是初始化对象的问题!
这样让返回的数据格式中包含了比如Products的内容,也就是UI知道ProductUpdateDto的格式信息,以及对应的SkuInfoUpdateDto的内容!
注意,我上面解析对象用的反射是PasteBuilderHelper.DynamicReadModelProperty

新增表单

修改完成以上代码之后,我们要做一个add-migration操作
因为修改了数据库表结构等

add-migration init_database -Context SqliteDbContext

由于我本地测试使用的是Sqlite数据库
运行后,需要添加菜单

  • pasteform/index.html?path=orderDetail
    然后刷新页面后,可以点击新增,可以看到如下
    在这里插入图片描述

发现没有,字段已经对应上了,上面还有一个分组模块,叫包含产品
这个包含产品后面还有+ -,这个对应的就是Products
!!!注意,如果都点击-,一个都没有保留,那就需要刷新页面重新加载了!
我们多点击+几次,然后输入信息,大概如下

表单效果

在这里插入图片描述

点击保存!
理论上是没有错误的,提示成功,然后刷新表格页面!
点击编辑看看数据是否一致!!!
这里数据是否一致,要看查询接口,也就是

        /// <summary>/// 读取UpdateDto的数据模型/// </summary>/// <returns></returns>[HttpGet][TypeFilter(typeof(RoleAttribute), Arguments = new object[] { "data", "edit" })]public async Task<VoloModelInfo> ReadUpdateModel(int id){var _info = await _dbContext.OrderDetail.Where(x => x.Id == id).Include(x => x.Products).ThenInclude(op => op.Sku).Include(x => x.Price).AsNoTracking().FirstOrDefaultAsync();if (_info == null || _info == default){throw new PasteCodeException("查询的信息不存在,无法执行编辑操作!");}var dto = ObjectMapper.Map<OrderDetail, OrderDetailUpdateDto>(_info);var _dataModel = PasteBuilderHelper.DynamicReadModelProperty<OrderDetailUpdateDto>(dto);return _dataModel;}

看代码,是不是把Product.sku也包含进来了!!!

表格查询

上面已经例举了新增多层级表单和编辑多层级表单,那么接下来就是查询表格数据,就是按页查询数据,这里演示下包括子集的查询!

查询项配置

我们知道PasteForm框架的查询也是依托于Dto的,默认是InputQueryXXXX
本次这里的就是

    ///<summary>/// 查询///</summary>public class InputQueryOrderDetail : InputSearchBase{/// <summary>/// 货品名称/// </summary>public string sku_name { get; set; }/// <summary>/// 商品ID/// </summary>public int pro_id { get; set; }}

在默认基础上我加了2个字段查询
然后看看使用的地方

        /// <summary>/// 获取/// </summary>/// <param name="input"></param>/// <returns></returns>[HttpGet]public async Task<PagedResultDto<OrderDetailListDto>> Page([FromQuery] InputQueryOrderDetail input){var _query = _dbContext.OrderDetail.Where(t => 1 == 1).Include(x => x.Products).ThenInclude(op => op.Sku).Include(x => x.Price).WhereIf(!string.IsNullOrEmpty(input.word), x => x.Title.Contains(input.word)).WhereIf(input.pro_id != 0, x => x.Products.Any(y => y.ProductId == input.pro_id)).WhereIf(!string.IsNullOrEmpty(input.sku_name), x => x.Products.Any(y => y.Sku != null && y.Sku.SkuName.Contains(input.sku_name)));var _pagedto = new PagedResultDto<OrderDetailListDto>();if (input.page == 1){_pagedto.TotalCount = await _query.CountAsync();}var dataList = await _query.OrderByDescending(x => x.Id).Page(input.page, input.size).AsNoTracking().ToListAsync();if (dataList == null || dataList.Count == 0){throw new PasteCodeException("没有查询到数据", 204);}var temList = ObjectMapper.Map<List<OrderDetail>, List<OrderDetailListDto>>(dataList);_pagedto.Items = temList;return _pagedto;}

一起来看看表格中是怎样的

查询区域

在这里插入图片描述

如上所示,多了2个查询项,就是我们在InputQueryOrderDetail中添加的,所以说PasteForm添加查询就是这么简单!
测试下是否会按照输入值查询
对于前端来说就是F12看看提交的查询数据
对于后端来说,就是接受到查询条件,然后执行查询
我这测试OK!

功能回顾

有没有一种感觉,加一个表居然这么简单???
你以为上面漏了啥?实话告诉你,上面的步骤真没有漏!

!!不需要修改管理端代码,就添加了一个多级表的表单实现!!

由以上信息得知,对于多层级的Entity或者有集合的Entity的表单,对于PasteForm框架来说,可以在一个表单中完成!
需要注意的点是关于对象的实例信息,也就是进行反射Model的时候,那些对象的字段需要进行new一个默认的出来,反射才能获得对应的信息!
对于Collection来说,UI会支持±的功能!

上面回顾其实还是有可圈可点的地方

  • 1.对于字段是Object的,其实可以在解反射的时候自己new一个出来,然后解析!
  • 2.其实上面有一个冲突的地方,就是directsun的地方不能用group特性,这样会覆盖,查看前端代码可知,group要支持±的功能,需要是多层级模式!
  • 3.?是否支持->obj->items->obj->items的模式呢?等待你的测试!!!

相关文章:

PasteForm框架开发之Entity多级嵌套的表单的实现

你相信么,使用PasteForm框架开发&#xff0c;管理端居然不要写代码&#xff01;&#xff01;&#xff01; 一起来看看PasteForm是否支持多级表模式(外表) 需求假设 假如有这么一个需求&#xff0c;就是订单表&#xff0c;包含了多级的信息&#xff0c;比如这个订单包含了哪些…...

Anaconda笔记

下载Anaconda 清华源 官方源 本文下载&#xff1a;Anaconda3-2024.10-1-Windows-x86_64.exe 建议不要安装到C盘&#xff0c;我的安装到D&#xff1a;Anaconda目录 设置环境变量 WinR cmd命令行输入&#xff1a; conda --version&#xff1a;可以查看到版本信息安装成功c…...

Linux——共享内存

目录 一、共享内存概念 二、共享内存的一些函数 2.1 shmget 创建共享内存 2.2 shmat 访问共享内存 2.3 shmdt 解除共享内存的映射 2.4 shnctl 删除共享内存段 三、共享内存 3.1 创建测试进程 3.2 使用循环测试 ​编辑 3.3 共享内存写入程序 3.4 带有信号量的共享内…...

计算机系统---烤机(性能测评)

计算机烤机 一、烤机的定义与核心目的 烤机&#xff08;Burn-in Test&#xff09; 是通过对计算机硬件施加持续高负载&#xff0c;模拟极端运行环境&#xff0c;以验证硬件稳定性、性能极限、散热能力及潜在缺陷的测试方法。核心目标包括&#xff1a; 硬件稳定性验证&#x…...

Linux命令+Git命令

Linux命令Git命令 linux查看两个操作系统cd命令的区别操作文件和文件夹vim不同模式保存和退出 Git linux Linux操作系统中&#xff0c;几乎所有的东西都以文件夹或文件形式存在&#xff0c;这些文件夹/文件有一个共同的根目录/。如果我们在某块磁盘A上&#xff08;无其他分区&…...

【前端】Nuxt打包部署的几种方式

一、总结知识点 Nuxt 是基于 Vue 的服务端渲染框架&#xff0c;部署方式主要取决于你使用的 Nuxt 模式&#xff1a;Universal (SSR)、SPA 或 Static Site Generation (SSG)。不同模式下的打包部署流程略有不同。以下将分别介绍 Nuxt 应用的打包和部署方式。 二、详细说明 1. …...

DP 16bit位宽数据扰码实现和仿真

DisplayPort 1.4协议中数据需进行扰码&#xff0c;扰码用到了16-bit LFSR&#xff0c;表达式如下。 LFSR每移位8个bit后&#xff0c;用最高有效 8 位以相反的位顺序与一个字节数据进行异或从而实现数据加扰/解扰。 我们已利用这个框图进行8个时钟周期迭代&#xff0c;得到了和…...

力扣每日打卡 1534. 统计好三元组 (简单)

力扣 1534. 统计好三元组 简单 前言一、题目内容二、解题方法1. 暴力解法2.官方题解2.1 方法一&#xff1a;枚举2.2 方法二&#xff1a;枚举优化 前言 这是刷算法题的第十二天&#xff0c;用到的语言是JS 题目&#xff1a;力扣 1534. 统计好三元组 (简单) 一、题目内容 给你一…...

CExercise_13_1排序算法_1插入排序

题目&#xff1a; 请自己手动实现插入排序算法&#xff1a; // 插入排序 void insertion_sort(int arr[], int len); 然后给定一个int数组&#xff0c;实现将它从小到大进行排序。 关键点 分析&#xff1a; 在插入排序中&#xff0c;稳定性指的是排序算法能够保持相等元素的原始…...

图论--DFS搜索图/树

目录 一、图的存储结构 二、题目练习 846. 树的重心 - AcWing题 dfs&#xff0c;之前学习的回溯算法好多都是用dfs实现搜索的&#xff08;把题目抽象成树形结构来搜索&#xff09;&#xff0c;其实 回溯算法就是 深搜&#xff0c;只不过针对某一搜索场景 我们给他一个更细分…...

blender 超逼真角色daz 纹理材质 humanpro插件

https://www.youtube.com/KhanhVo-zp9lh/featured https://superhivemarket.com/products/humanpro https://superhivemarket.com/products/humanpro HUMANPRO 插件 - BLENDER HumanPro 是一款专为帮助用户轻松快速地创建高度精细逼真的人体皮肤纹理和复杂皱纹而设计的插件…...

关于响应式编程框架ReactiveUI的感悟

1.我第一个接触的MVVM框架是Caliburn Micro&#xff0c;后来接触到了ReactiveUI这种响应式编程思想的框架&#xff0c;主要说一下本人目前学习感想&#xff08;针对尽快上手使用MVVM开发WPF&#xff09;&#xff1b; 首当其冲的工具是DeepSeek&#xff0c;总结好问题直接提问&…...

Swift —— delegate 设计模式

一、什么是 delegate 模式 所谓 delegate 就是代理模式。简单来说&#xff0c;delegate 模式就是在类的函数里运行完一段代码后&#xff0c;你可以通过一个符合某个代理协议的属性来调代理的方法。其中&#xff0c;代理方法就是回调函数。 二、delegate 模式与闭包比的优势 …...

远方游子的归家记:模仿美食网页的制作与实现

前言 2023年的夏天&#xff0c;闲得无聊学了一个礼拜前端知识点。并根据所学知识点模仿制作了一篇网络上公开发布的关于家乡美食的文章。今天才想到有这个不错的案例可以分享出来&#xff0c;以供大家学习参考。 知识点简介 运用的知识点比较简单&#xff0c;常规的div盒子&…...

React JSX?

JSX JSX 是 JavaScript XML 的缩写&#xff0c;它是一种 JavaScript 的语法扩展&#xff0c;允许你在 JavaScript 中写 HTML 类似的代码&#xff0c;常用于 React 中定义 UI 组件的结构。 JSX 示例代码&#xff1a; import React from react;function App() {return (<di…...

【Pandas】pandas DataFrame iterrows

Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法DataFrame.loc用于基于标签&#xff08;行标签和列标签&#…...

docker多架构镜像构建

docker多架构镜像构建 Docker 多架构镜像构建&#xff08;Multi-Architecture Image Build&#xff09;允许你为不同平台&#xff08;如 linux/amd64, linux/arm64, linux/arm/v7 等&#xff09;构建和推送统一的镜像标签&#xff0c;解决在不同硬件架构之间部署的问题。 Doc…...

日志查询 Less命令:/搜索

跟more命令一样&#xff0c;唯一不同的是less命令可以向上翻页&#xff0c;但是more命令不行 注意&#xff1a;按空格或F -- 进行翻页&#xff1b; 按回车 -- 一行一行往下翻&#xff1b; 按q或Q – 表示退出 Page up:一页一页向上翻&#xff1b; 向上键&#xff1a;一行一行…...

[MySQL] 事务管理(一) 事务的基本概念

1.为什么需要事务 1.1 CURD不加控制会有什么问题 我认为要解决上面的问题&#xff0c;CURD必须要有以下的属性 买票的过程必须是原子的 买票相互之间不可以收到影响 买完票需要永久有效 买前&#xff0c;买后的状态必须是确定的 2. 什么是事务&#xff1f; 事务就是一组DML语…...

rk3588 驱动开发(一)字符设备开发

3.字符设备驱动开发 3.1 什么是字符设备驱动 字符设备&#xff1a;就是一个个字节&#xff0c;按照字节流进行读写操作的设备&#xff0c;读写是按照先后顺序的。 举例子&#xff1a;IIC 按键 LED SPI LCD 等 Linux 应用程序调用驱动程序流程&#xff1a; Linux中驱动加载成功…...

【第45节】windows程序的其他反调试手段上篇

目录 引言 一、通过窗口类名和窗口名判断 二、检测调试器进程 三、父进程是否是Explorer 四、RDTSC/GetTickCount时间敏感程序段 五、StartupInfo结构的使用 六、使用BeingDebugged字段 七、 PEB.NtGlobalFlag,Heap.HeapFlags,Heap.ForceFlags 八、DebugPort:CheckRem…...

通过人类和机器人演示进行联合逆向和正向动力学的机器人训练

25年3月来自哥伦比亚大学的论文“Train Robots in a JIF: Joint Inverse and Forward Dynamics with Human and Robot Demonstrations”。 在大型机器人演示数据集上进行预训练是学习各种操作技能的强大技术&#xff0c;但通常受到收集以机器人为中心数据的高成本和复杂性限制…...

云渗透三(对象存储攻防)

对象存储是什么? 对象存储(Cloud Object Storage,COS)是腾讯云提供的⼀种存储海量⽂件的分布式存储服务,⽤户可通过⽹络随时存储和查看数据。腾讯云 COS 使所有⽤户都能使⽤具备⾼扩展性、低成本、可靠和安全的数据存储服务。 COS 通过控制台、API、SDK 和⼯具等多样化⽅…...

ShenNiusModularity项目源码学习(17:ShenNius.Admin.Mvc项目分析-2)

ShenNiusModularity项目的后台管理主页面如下图所示&#xff0c;该页面为ShenNius.Admin.Mvc项目的Views\Home\Index.cshtml&#xff0c;使用的是layuimini后台模板&#xff08;参考文献2&#xff09;&#xff0c;在layuimini的GitHub主页中提供有不同样式的页面模版链接&#…...

Sentinel源码—2.Context和处理链的初始化一

大纲 1.Sentinel底层的核心概念 2.Sentinel中Context的设计思想与源码实现 3.Java SPI机制的引入 4.Java SPI机制在Sentinel处理链中的应用 5.Sentinel默认处理链ProcessorSlot的构建 1.Sentinel底层的核心概念 (1)资源和规则 (2)Context (3)ProcessorSlot (4)Node (1…...

嵌入式C语言高级编程:OOP封装、TDD测试与防御性编程实践

一、面向对象编程(OOP) 尽管 C 语言并非面向对象编程语言&#xff0c;但借助一些编程技巧&#xff0c;也能实现面向对象编程&#xff08;OOP&#xff09;的核心特性&#xff0c;如封装、继承和多态。 1.1 封装 封装是把数据和操作数据的函数捆绑在一起&#xff0c;对外部隐藏…...

C++中unique_lock和lock_guard区别

目录 1.自动锁定与解锁机制 2.灵活性 3.所有权转移 4.可与条件变量配合使用 5.性能开销 在 C 中&#xff0c;std::unique_lock 和 std::lock_guard 都属于标准库 <mutex> 中的互斥锁管理工具&#xff0c;用于简化互斥锁的使用并确保线程安全。但它们存在一些显著区别…...

C# 使用.NET内置的 IObservable<T> 和 IObserver<T>-观察者模式

核心概念 IObservable<T> 表示 可观察的数据源&#xff08;如事件流、实时数据&#xff09;。 关键方法&#xff1a;Subscribe(IObserver<T> observer)&#xff0c;用于注册观察者。 IObserver<T> 表示 数据的接收者&#xff0c;响应数据变化。 三个核心…...

多模态大模型文字识别 vs OCR识别模型

论文简述 多模态大语言模型(Multimodal Large Language Models,简称多模态LLMs)具有高度通用性,能够处理图像描述、文档分析和自动化内容生成等多种任务。这种广泛的适用性使其在不同工业领域都受到了大量关注。 在OCR方面,多模态LLMs的表现超过了专门为OCR设计的模型。这…...

[区块链] 持久化运行区块链 | 并通过HTTP访问

实验目标 以Web服务的形式持久化运行区块链&#xff0c;并通过HTTP接口的形式实现对区块链的操作。 实验内容 构建区块链的区块对象和区块链对象。使用Flask等Web服务框架运行持久化的进程&#xff0c;实现基于HTTP接口实现新区块的添加功能以及传递区块索引查询区块链中的区…...

批量将不同位置的多个文件复制到一个文件夹

在日常工作中&#xff0c;我们常常需要将多个位置的文件集中到一个文件夹中。手动一个个复制文件既费时又容易出错。使用批量文件复制工具&#xff0c;您可以轻松将不同位置的多个文件快速复制到一个文件夹中&#xff0c;大大提高工作效率。 今天给大家介绍一下批量将不同位置的…...

CentOS 下 Zookeeper 常用命令与完整命令列表

一、服务管理命令 常用服务命令 启动 Zookeeper 服务: systemctl start zookeeper # 使用 systemd (推荐) /usr/local/zookeeper/bin/zkServer.sh start # 直接启动 停止服务: systemctl stop zookeeper /usr/local/zookeeper/bin/zkServer.sh stop 查看服务状态…...

React与Vue:哪个框架更适合入门?

React与Vue&#xff1a;选择哪个框架入门&#xff1f; 一、框架定位与发展趋势 1.1 技术背景对比 ‌React‌&#xff1a;Meta&#xff08;原Facebook&#xff09;2013年推出&#xff0c;采用声明式编程范式&#xff0c;专注构建用户界面‌Vue‌&#xff1a;尤雨溪2014年推出…...

突发!GitHub 被曝封禁中国区 IP

昨天&#xff0c;大量国内开发者发现&#xff0c;未登录状态下访问GitHub官网时&#xff0c;页面显示“Access to this site has been restricted.”&#xff0c;中国大陆及香港IP均被限制。尽管GitHub官方尚未发布声明&#xff0c;但多方实测显示&#xff1a; 猪哥亲测在已登…...

向量数据库Qdrant 安装 不使用docker

一、导读 环境&#xff1a;Ubuntu 24.04、Windows 10、WSL 2、Qdrant 1.13.4 背景&#xff1a;换了新工作&#xff0c;使用qdrant作为向量库&#xff0c;需要不使用docker安装 时间&#xff1a;20250415 说明&#xff1a;初入职&#xff0c;不了解&#xff0c;暂且记下 二、…...

基于坐标的神经表示实现零样本学习以用于快速三维多参数定量磁共振成像|文献速递-深度学习医疗AI最新文献

Title 题目 Coordinate-based neural representation enabling zero-shot learning for fast 3D multiparametric quantitative MRI 基于坐标的神经表示实现零样本学习以用于快速三维多参数定量磁共振成像 01 文献速递介绍 定量磁共振成像&#xff08;qMRI&#xff09;能…...

每日算法-250415

每日算法 - 2024-04-15: 今天我们来解决两道 LeetCode 上关于在旋转排序数组中寻找最小值的问题。 153. 寻找旋转排序数组中的最小值 题目描述 思路 核心思想是利用 二分查找。 解题过程 一个升序排序的数组&#xff08;无重复元素&#xff09;在经过若干次旋转后&#xf…...

第16届蓝桥杯省赛JavaB组真题回顾

第16届蓝桥杯省赛已经结束了&#xff0c;第一次参加也是坐牢了4个小时&#xff0c;现在还是来总结一下吧&#xff08;先声明以下的解法&#xff0c;大家可以当作一种思路来看&#xff0c;解法不一定是正解&#xff0c;只是给大家提供一种能够正常想到的思路吧&#xff09; 试题…...

[Godot] C#人物移动抖动解决方案

在写一个2D平台跳跃的游戏代码发现&#xff0c;移动的时候会抖动卡顿的厉害&#xff0c;后来研究了一下抖动问题&#xff0c;有了几种解决方案 1.垂直同步和物理插值问题 这是最常见的可能导致画面撕裂和抖动的原因&#xff0c;大家可以根据自己的需要调整项目设置&#xff0…...

hackmyvm-quick2

收集信息 arp-scan -l nmap 192.168.66.74 dirsearch -u http://192.168.66.74 -e * 访问file.php 尝试查看/etc/passwd 抓包 payload: /file.php?file=/home/andrew/.bashrc /file.php?file=/home/nick/.bashrc...

TDengine 与其他时序数据库对比:InfluxDB/TimescaleDB 选型指南(一)

引言 在当今数字化时代&#xff0c;物联网&#xff08;IoT&#xff09;、工业互联网等领域蓬勃发展&#xff0c;产生了海量的时序数据。这些数据记录了设备状态、传感器读数、业务指标等随时间变化的信息&#xff0c;对于企业的运营监控、数据分析和决策制定起着关键作用。为了…...

Jetson agx Orin 适配Xenomai4

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 一、Xenomai 4 二、使用步骤 1.获取源码 2.编译源码 3、安装 4、运行效果 5、libevl 总结 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了…...

Terraform - 理解 Count 和 For_Each 循环

概述 使用 Terraform 时&#xff0c;您可能需要为同一资源创建多个实例。这时 count 和 for_each 循环就派上用场了。这些循环允许您创建具有相同配置但具有不同值的多个资源。本指南将讲解如何在 Terraform 中使用 count 和 for_each 循环。 Terraform 中的 Count Terraform …...

Git本地更新和远端同步操作

1、将远端文件夹拉取到本地 从0—1&#xff1a;克隆 在文件夹空白处点击&#xff1a;Git克隆 输入url&#xff0c;克隆到本地 输入远端文件地址&#xff0c;点击确定&#xff0c;远端文件即可克隆到本地 2、拉取远端更新到本地 文件克隆到本地后&#xff0c;每次更新需…...

激活函数Softmax在不同维度上的应用 | dim参数理解

理解 Softmax 在不同维度上的应用&#xff0c;关键在于明确 Softmax 的作用以及 dim 参数的意义。Softmax 的目标是将输入张量的某些元素转换为概率分布&#xff0c;使得这些元素的和为1。dim 参数决定了沿着哪个维度进行归一化操作。 1. Softmax 的基本原理 Softmax 函数的公…...

地理人工智能中位置编码的综述:方法与应用

以下是对论文 《A Review of Location Encoding for GeoAI: Methods and Applications》 的大纲和摘要整理&#xff1a; A Review of Location Encoding for GeoAI: Methods and Applications 摘要&#xff08;Summary&#xff09; 本文系统综述了地理人工智能&#xff08;G…...

6.DJI-PSDK:psdk订阅无人机高度/速度/GPS/RTK/时间/经纬度等消息及问题解决

DJI-PSDK:psdk订阅无人机高度/速度/GPS/RTK/时间/经纬度等消息 消息订阅可以获取绝大多数无人机的动态信息,包括无人机的姿态、速度、加速度、角速度、高度、GPS 位置、云 台的角度和状态、飞行模式和飞行状态、电机和电池等各类关键信息。 这些信息并不会“一股脑儿地”全部…...

ArrayList的subList的数据仍是集合

ArrayList的subList结果不可强转成ArrayList&#xff0c;否则会抛出 ClassCastException异常 • 级别&#xff1a; 【CRITICAL】 • 规约类型&#xff1a;BUG • 最坏影响&#xff1a; 程序错误&#xff0c;抛出异常 说明&#xff1a;subList 返回的是ArrayList的内部类SubL…...

VS Code怎么换颜色

在 VS Code 中&#xff0c;你可以通过修改主题或自定义编辑器颜色来将界面改为白色。以下是几种方法&#xff1a; 方法 1&#xff1a;切换浅色主题&#xff08;推荐&#xff09; VS Code 自带多个浅色主题&#xff0c;可以直接切换&#xff1a; 按快捷键 Ctrl K&#xff0c;…...

jupyter中切换Anaconda虚拟环境

jupyter中切换虚拟环境 查看python路径 import sys sys.executable这个命令会输出当前 Notebook 使用的 Python 可执行文件的路径 2. 查看安装的包和环境信息&#xff08;前两步都在jupyter notebook中进行&#xff09; !which python !python --version !pip list将你的虚拟…...