关于树型结构的表,及排序的问题

CATIA二次开发功能案例 结构树快速手动和自动排序功能演示 立即下载

刚才一同事碰到一个树型结构表的排序的问题,让我想到一个隐藏很深的BUG。我通常对树型结构的表都是这样设计的:在表中与排序相关的有三个列,ID,ParentID, TreeKey

ID:本条记录的唯一主键
ParentID:父记录的编号
TreeKey:表示层级结构,形如xx.xxx.xxxx

关键是TreeKey,我以前都要求存入父ID的编号,像这样

ID                              ParentID                              TreeKey
---------------------------------------------------------------------
1        NULL            1
2        1            1.2
3        1            1.3
...
10       1            1.10
11        1            1.11

像这样的话,按照TreeKey进行排序就会出现问题,因为TreeKey是个字符串,而1.10会排到1.2, 1.3之前,很显然,这不是我们要的结果。要解决其实也很简单,在编号前面补0,比如,1.10就写成0001.0010,1.2就写成0001.0002,这样排序就不会有问题了。

这让我想起很早前看的微软的一个有关树的软件代码,就看到他们是以000x.000x这种方式进行处理的,当时我还感觉他们怎么这么麻烦,现在想来,才发现是自己无知了,呵呵。

TSMaster实战:如何用LIN总线唤醒你的汽车电子系统(附波形分析) 本文通过TSMaster工具实战解析LIN总线唤醒机制。详细介绍了LIN网络唤醒的协议要求、时序参数计算,并演示了如何在TSMaster中配置唤醒信号、捕获分析波形,以及验证休眠流程。文章结合常见问题排查,为汽车电子工程师提供了从理论到实践的完整调试指南。 阅读详情

相关推荐

开源onlyoffice编译完整过坑版

onlyoffice 编译过坑完整版;

sHImart 4551

数据库设计中常见表结构的设计技巧

一、树型关系的数据表不少程序员在进行数据库设计的时候都遇到过树型关系的数据,例如常见的类别表,即一个大类,下面有若干个子类,某些子类又有子类这样的情况。当类别不确定,用户希望可以在任意类别下添加新的子类,或者删除某个类别和其下的所有子类,而且预计以后其数量会逐步增长,此时我们就会考虑用一个数据表来保存这些数据。按照教科书上的教导,第二类程序员大概会设计出类似这样的数据表结构:类别表_1(T

littledream的专栏 3万+

VConsole动态加载

// 移动端真机调试工具 vconsole import VConsole from "vconsole"; import Vue from "vue"; // 动态使用VConsole if(process.env.NODE_ENV==='production'){ if(process.env.VUE_APP_BASEURL.includes('test')||process.env.VUE_APP_BASEURL.includes('pre')){ Vue.prototype

aliven1的博客 1041

树结构在关系型数据库中节点排序的实现(基于elementui)

本文主要介绍了在关系型数据库中树节点的排序,并利用elementui的拖拽实现节点的顺序切换。

weixin_43081649的博客 1174

SPSS&Mplus—共同方法偏差(Common Method Bias)控制与检验

共同方法偏差(Common Method Bias)的控制方法:程序控制(Procedural)和统计控制(Statistical)。

m0_54401011的博客 1万+

宜搭子表单(自定义页面全部展示)

效果:增加自定义页面添加表格组件,配置数据源变量: formUuid'表单编码'变量: pageSize10变量: currentPage1。

2301_80286061的博客 2275

vue如何通过ref判断是否存在class类名_vue表格树状结构的实现

这绝对是我最后一次写树状结构,我非常的确定一定以及肯定!上一篇文章总结了vue树状目录组件,忘记的可以点击传送门回顾一下:vue目录树组件还是这个目录树,改版成表格树状结构。我这里采用的UI库是Element,库自带了一种实现方式:但是这种自带的实现方式,可扩展性很差,就很low,而且这样偷懒会让自己的技术止步不前,心里不安呀。首先明确实现逻辑,表格树状结构中所谓的树状,并不是数据结构上...

weixin_39610807的博客 1801

利用netns做自环Iperf测试

netns可以让一台机器上模拟多个网络设备,是网络虚拟化的重要组成,将不同类型的网络应用隔离。一个net namespace有自己独立的路由表,iptables策略,设备管理。本文利用netns模拟网络来实现单机上网卡自环上的iperf测试或其他网络测试。

weixin_42414349的博客 3370

树形结构数据的数据表设计

程序中用到树形结构的地方有很多,比如自定义文章分类,允许用户无限级添加子分类,比如用户交流的时候的回复,可以对回复进行回复。树形结构可以完全避免让用户的逻辑思维和使用习惯受程序的限制,最大限度的给用户自由,实现对数据的最大利用。对于以行和列为基础来保存数据的关系形数据库而言,无法

Smart_Books 1402

【KDD2024】ShapeFormer:用于多元时间序列分类的Shapelet Transformer

多元时间序列分类(MTSC)因其在现实世界中的广泛应用而吸引了大量研究关注。最近,Transformer在MTSC中取得了先进的性能。然而,

m0_52597077的博客 4738

Python手记-9:Python LXML库XPath的爬取晋江书目

1. lxml库 lxml是功能最丰富且易于使用的库,用于处理Python语言中的XML和HTML,还可实现WEB爬取,官文参考:https://lxml.de/,完整的PDF文档下载链接https://lxml.de/lxmldoc-4.5.0.pdf,但是阅读起来……em……怪自己不够聪明的样子。 Linux下安装lxml库:[root@chengyu ~]# pip3 instal...

成屿的专栏 4万+

【Java用法】Hutool树结构工具-TreeUtil快速构建树形结构的两种方式 + 数据排序

考虑到菜单等需求的普遍性,有用户提交了一个扩展性极好的树状结构实现。这种树状结构可以根据配置文件灵活的定义节点之间的关系,也能很好的兼容关系数据库中数据。实现 关系型数据库数据 Tree JSON 树状结构中最大的问题就是关系问题,在数据库中,每条数据通过某个字段关联自己的父节点,每个业务中这个字段的名字都不同,如何解决这个问题呢?PR的提供者提供了一种解决思路:自定义字段名,节点不再是一个bean,而是一个map,实现灵活的字段名定义。

No8g攻城狮的博客 1万+

反激电源及其变压器计算与绕制

本内容以一个宽电压输入 24V3A 输出的 72W 反激电源为例来计算电路的各个参数和器件选型,包含反激变压器的计算与绕制方法。

让你爱上电路设计 1933

谦虚的向大家问个技术问题,树型结构的排序问题

<br />1:若是一个系统管理员,对数据进行了排序(微软的树形控件、遍历节点不太友善),那这个排序结果怎么保存?怎么产生排序算法?假设是一个无限的树形结构?读取数据时,如何读取才能按树形的结构可以在列表里显示出来?排序的算法写起来是否很简单、易懂?<br /> <br />2:若一个管理员只是一个省级的管理员,他只能加载一个省的数据,然后对这个省的数据进行了排序操作,可能有新增、删除、修改等等操作,那排序的结果会不会影响整体的排序算法?分级管理员排序后的数据是否能保证整体上是正确的?<br /> <br

通用权限管理系统 424

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

mysql 转成树_Mysql树型结构2种方式及相互转换

Mysql实现树型结构,数据库上常见有2种方式:领接表、预排序遍历树(MPTT)。领接表方式——主要依赖于一个 parent 字段,用于指向上级节点,将相邻的上下级节点连接起来,id 为自动递增自动,parent_id 为上级节点的 id。领接表方式的优点在于容易理解,代码也比较简单明了。缺点则是递归中的 SQL 查询会导致负载变大,特别是需要处理比较大型的树状结构的时候,查询语句会随着层级的增加...

weixin_39915700的博客 321

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

mysql 转成树_Mysql树型结构2种方式及相互转换_MySQL

Mysql实现树型结构,数据库上常见有2种方式:领接表、预排序遍历树(MPTT)。领接表方式——主要依赖于一个 parent 字段,用于指向上级节点,将相邻的上下级节点连接起来,id 为自动递增自动,parent_id 为上级节点的 id。领接表方式的优点在于容易理解,代码也比较简单明了。缺点则是递归中的 SQL 查询会导致负载变大,特别是需要处理比较大型的树状结构的时候,查询语句会随着层级的增加...

weixin_33148993的博客 381

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

顺序表、链式表、栈、队列

一、什么是数据结构 1、数据结构的起源 1968年,美国高德纳教授,《计算机程序设计的艺术》的第一卷《基本算法》 的出版,开创了数据结构和算法的先河 数据结构是一门研究数据之间的关系和操作的学科,而非计算方法 数据结构+算法=程序 沃斯,凭借这个观点,获得了图灵奖,这句话展示了程序 的本质 2、数据结构的基本概念 数据: 所有能输入到计算机中,能被程序处理的描述客观事物的符号 (变量、数组) 数据元素: 组成数据的,有一定意义的基本单位,也称为

Everglow21的博客 324

数据结构总结(线性结构,树型结构,图型结构,顺序结构,链式结构)

一、什么是数据结构 1、数据结构的起源 1968年,美国的高纳德教授开设了一门基本算法的课程,开创了数据结构的先河。 数据结构是一门研究数据之间关系和操作的学科,而非是计算方法。 数据结构+算法=程序 沃思凭借这名个论点,获得图灵奖,这句话展示出了程序的本质。 2、数据结构的基本概念 数据:所有能够输入到计算机中去描述事物的符号。 数据项:有独立含义的数据最小单位,也叫域。 数据元素:数据的基本单位也叫节点、记录。 数据结构:数据元素和数据关系的集合。 算法:数据结构所具备的功能,解决特定的问题的方法。 3

XITMan的博客 7938

BOM核算及树型排序

          我相信好多程序员朋友都遇到过核算公司BOM,求一个成品的单价的问题。在优快云上,也有许多朋友发贴问这样的问题。我为我们公司开发了许多报表,涉及到各个部门,当然也包括采购部门(采购经理要看),那核算BOM成品单价也是理所当然的事了。其实核算一个BOM成品的算法不是很难,但要以树型的方式来显示就有点难度了。在我们公司,我写了两个报表一个是单层的(老板要看),另一个是多层的也就

fa_ge的专栏 3732

树型结构(BST)

树型结构往往是用于描述分层级,类似组织架构关系之类的非线性的数据结构

m0_70935583的博客 1036

树型结构建模白皮书

树结构是递归自引用的数据结构。每个节点仅有一个父节点(除根节点外),可能有多个子节点,通常表示层级关系、继承关系、归属关系。建模原则推荐操作数据稳定性优先邻接表为首选,利于维护查询效率优先闭包表或嵌套集合节点频繁移动邻接表或路径枚举可扩展性与灵活性优先闭包表 + 元数据系统辅助建模建议配合领域建模与权限体系设计分类/部门/菜单建议统一策略。

nbsaas-boot基于Request-Response的企业级快速开发框架 1139

树型数据结构总结

文章目录前序,中序,后序知二推一求先序序列求可能中序序列二叉排序树构造二叉排序树二叉搜索树huffman树huffman编码其余题型层次遍历FBI树新二叉树 前序,中序,后序知二推一 求先序序列 题目描述 给出一棵二叉树的中序与后序排列,求出它的先序排列,(约定树结点用不同的大写字母表示,长度≤8)。 输入格式 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。 输出格式 1行,表示...

qq_38440882的博客 3449

数据结构-第七章(树型查找)-(三)

为了保证AVL树的平衡性,我们在插入删除时频繁地调整全树整体的拓扑结构,代价较大。(从目的入手,更好深入)因此,我们对二叉排序树不再进行高度平衡的限制(AVL树),而进行适度平衡的限制(红黑树)。这样在保证查找效率的同时我们进行插入删除操作所付出的代价也更小,因此红黑树的实际应用更广泛,C++中的map和set(Java中的TreeMap和TreeSet)就是用红黑树实现的。一棵红黑树是满足如下红黑性质的二叉排序树:每个结点或是红色,或是黑色的。根结点是黑色的。

2203_75970230的博客 2173

树型论坛的数据库设计和快速算法

 树型论坛(即阶梯式论坛)的实现算法,是一直被讨论的问题。总结起来,一般无非是两种:   第一是递归。这种方式最简单,思路最清楚,但是效率也最低,特别是进行页定位的时候。由于每进行一次递归调用,就必须执行一条数据库查询,使它在大量并发请求时的负载成为灾难性的。因此这种算法一般不实用。   第二是增加一个排序字段,思路是使用一个特殊设计的字段,例如排序串或者中值排序基数,来实现贴子的插入,在显示的时

每天努力点吧 1372

《数据结构与算法》实验:树型结构的建立与遍历

《数据结构与算法》实验和课程Github资源 《数据结构与算法》实验:线性结构及其应用——算术表达式求值 《数据结构与算法》实验:树型结构的建立与遍历 《数据结构与算法》实验:图结构的建立与搜索 《数据结构与算法》实验:查找结构的实验比较——二叉查找树BST & 二分(折半)查找 《数据结构与算法》实验:排序算法实验比较——选择排序 & 堆排序 《数据结...

Zhuoning Guo's Blog 1602
上一篇: 不改安全级别,上传前,在客户端判断图片文件大小
NetColorWolf
博客等级 码龄26年 1粉丝 3原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值