精华内容
下载资源
问答
  • 相较于国外产品使用门槛高、全英文的界面设计,vika维格表作为「多维智能表格」 的先行者,零门槛简易灵活的操作,纯中文的交互,更符合国人的使用习惯,对国内用户而言也更加友好。 多维表格,非表格 在国内,多维...

    更符合国人需求的多维表格

    在国外,「多维表格」的概念已经发展成熟,如Airtable、Clickup等团队协作工具,相继占领独角兽市场。

    自vika维格表在国内首次提出「多维智能表格」 的理念后,国内也掀起了一阵「多维表格」的风潮,市面上种类繁多、功能各异的多维表格开始层出不穷。

    相较于国外产品使用门槛高、全英文的界面设计,vika维格表作为「多维智能表格」 的先行者,零门槛简易灵活的操作,纯中文的交互,更符合国人的使用习惯,对国内用户而言也更加友好。

    多维表格,非表格

    在国内,多维表格还是一个比较新的概念,但多维表格带来的低代码、可视化和在线协同等技术将会给未来工作方式带来巨大的转变。

    我们先来简单说一下,什么是多维表格?

    以一个简单的使用场景来举例:

    通常很多人做表格时,仅仅只是将数据进行了罗列,密密麻麻的数据看得人头晕目眩,这样的数据既没有办法让我们get到什么是重点信息,也没办法从这些数据中找出规律和特征,大大降低了这些数据存在的意义。

    但是,设想一下,如果你利用多维表格,通过可视化的手段将数据转化成视图的形式呢?

    以相册视图举例,将表格内杂乱无章的数据变身为一张张卡片的样式逐一展示,比如以下这张电影清单。

    这样是不是可以直观地看到每个电影的详细信息,包括导演、海报展示、上映时间等,并且,在每次观影后还可以随心记录下你的想法。

    如此一来,通过多维表格,重点数据一键轻松获取,捕获数据信息的速度变得更加快捷,工作效率也大大提高。

    Right!这就是多维表格的价值所在啦。

    通过可视化的方式,我们看不懂的数据通过图形化的手段进行有效地表达,准确高效、简洁全面地传递信息,甚至帮助我们挖掘数据背后的规律和特征。

    当然,可视化只是多维表格其中一个功能亮点,多维表格在传统表格简单易上手的基础上还融入了在线协作与低代码技术等强大且实用的功能。

    而这不仅仅是国内多维表格首创者—vika维格表世界里的一角,还有更多的能量等着你去开启~

    vika维格表,是多维表格,又岂止于「多维表格」

    作为多维表格的首创者,vika维格表将多维表格努力做到了极致。

    vika 维格表是一款支持 API 的连接型智能多维表格,致力于创造一款新一代的团队数据协作和项目管理工具,通过降低技术的门槛,让任何人都可以任意DIY搭建专属的数据管理平台,而对于企业,通过vika维格表,无需高薪聘请IT技术人员,就可以自行搭建自己的业务开发系统、信息化系统等。

    简单来说,vika维格表通过轻量化的方式,解决了使用场景中传统表格所无法解决的问题。而对比传统的电子表格,vika维格表更加简易上手,如搭建乐高积木一般柔性使用,但基于关系型数据库的本质属性,应用场景也更为丰富广泛。

    也就是说,用一张vika维格表,可以替代N张手工重复劳作的电子表格!简直刷新了对”表格“的认知!

    万物皆可存储

    vika维格表作为一个多维智能表格,承载的不只是日常工作,还有不少人的「生活趣味」、「诗与远方」。在vika维格表,宝藏千千万。

    这是什么意思呢?先来上手体验一番~

    拥有丰富字段类型的vika维格表,可容纳多样数据。除了文本、电话、邮箱、日期、数字等基础的数据存储类型外,vika维格表还支持插入图片、音频、视频、表格、文件等多种类型的内容,每种类型都可以根据你的个性化需求自定义使用。也正因为这些特性,vika维格表可以实现的场景,简直超乎你想象。

    通过一张 vika 维格表,就能一键存储、记录、管理所有的任务事项,将散落在文件夹的图片、文档等都集中记录在一个表格中,轻轻松松玩转数据。

    不只是表格,还有数据可视化

    作为国内多维表格的首创者,vika维格表当然不仅局限于表格啦,还可以将数据一键切换为视图模式。

    一直以来,「可视化视图」 是 vika 维格表特色的数据呈现方式,包括经典的「相册视图」、「看板视图」、可以用作甘特图的「时间视图」以及类似 Excel 表格的基础类型的「维格视图」。

    那么,如何使用这些视图功能呢?

    你想想,在工作中,最害怕的是什么?

    可谓是”人在工位坐,锅从天上来“吧。

    每日工作任务记录不清晰,一旦领导问责,这个锅怎么甩也甩不掉。

    别担心,vika 维格表的 「智能视图」 就能帮到你啦,让工作流程和任务分配情况一目了然,leader 和组员都能找到适合自己的打开方式。在跨部门协作时,不同部门的成员不仅可以随时更新自己的工作进度、任务动态,也能够同时了解其他部门的工作进程。

    而对于项目管理者而言,「可视化视图」 的模式不仅可以及时掌握项目进展并进行总体规划,还可以更直观地了解不同成员近期的工作量和负荷情况,更方便地进行任务的调整。

    表格也有任意门?

    相信绝大多数人都看过哆啦a梦这部卡通,一定对任意门充满羡慕与幻想。

    那么,vika维格表的「神奇关联」黑魔法就可以满足你啦~

    这是怎么一回事呢?

    在vika维格表中,每一张多维表格间的数据都可以相互关联,也就是说,能把一张表格的信息同步关联到另一张表单中。

    具体而言,我们无需在不同表格间进行左右横跳来查看不同的数据信息,仅需在维格列的字段类型中选择「神奇关联」,就可以自行选择你需要的相关表格进行关联。甚至,还可以将多张表单的信息和数据进行串联,实现从一张表单上查看和引用其他表的数据,真正做到了灵活办公。

    比如,将「任务」表单与「项目」表单相互关联后,在「任务」表格中直接展开,便可以查看到「香港及海外项目」此项目表单的所有数据,包含项目负责人,项目成员,项目进度及成果等信息。

    无需多张表格间左右切换,无需重复地输入输出、增删数据,无需无休止地复制粘贴,仅需「神奇关联」,不同表单的数据就可以咻的一下瞬间连接。

    在线协同有多好,没用过的人不会明

    从前,每次修改了信息或更新了资料,都要发给同事最新版的文件,每天都要接收无数1.0、2.0甚至N.0的word、pdf、excel文件,这样反反复复的传输实在太麻烦了,有时候还会因为忘记更新,影响了工作进度。

    团队的沟通协作,信息传递,仿佛是一堵永远也无法穿越的”墙“。

    其实,我们渴望的不过是简单直接、高效透明的沟通方式,而不是升级打怪,突破层层阻扰,等到回应都凉透了。

    作为在线多维智能表格的vika维格表,就不得不提它在多人协作方面的优异表现了。

    vika维格表支持「千人在线协作」,仅需大家同时在线上打开同一张vika维格表,就可以对表中的数据编辑、修改,标注项目进度,同步实现沟通即创作。

    举个例子,当无处安放的灵感来临时,用vika维格表即时记录下你的灵感来源和灵感呈现,还可以分享给团队成员,随时随地进行灵感碰撞,头脑风暴。

    当涉及到跨部门协作时,再也不用翻看邮件、聊天记录、会议纪要啦~

    vika维格表一步到位,在vika维格表的工作台,便可以实现”编辑→协作→共享交流“等一站式体验,轻松规划任务,减少低效沟通,让办公更加专注。

    当然,除了上述功能,vika维格表还有很多亮点功能没有详细展开说明,比如实时评论、Excel一键导入、开放型API等众多玩法。更多高深莫测的玩法,等你来尝试~

    展开全文
  • 多维vector

    2014-01-03 20:16:19
     提起数组,大家想必都很熟悉,你可以用索引和指针来操作数组,给程序设计带来了很大的灵活性。但是你知道它有许多天生的缺陷吗?  首先,数组的越界可能会引起程序的崩溃(如果崩溃了,还算你走运^_^)。其次...
    
    用vector取代C-style的数组  
                提起数组,大家想必都很熟悉,你可以用索引和指针来操作数组,给程序设计带来了很大的灵活性。但是你知道它有许多天生的缺陷吗?
              首先,数组的越界可能会引起程序的崩溃(如果崩溃了,还算你走运^_^)。其次是动态性不好,包括动态改变大小,动态申请。诸如此类的事,一定会让你伤透脑筋。有什么办法可以解决这些问题吗?
              你不用担心,下面我来给大家介绍一种方法:用vector取代C-style的数组。
            关于vector我不想多说,我假设大家都了解temlplate   和   STL。各位在任何一本C++的书上都可以找的到这些内容的(如果没有,那赶快把它扔掉)。那为什么是vector呢?我们知道vector提供了operator[]函数,可以像数组一样的操作,而且还有边界检查,动态改变大小。(从这点上deque也是可以的)。vector本来就是可以用来代替一维数组的,这里只介绍用它来代替二维的数组。二维以上的可以依此类推。
            我们知道,C++的template参数是可以嵌套定义的,你可以这样定义一个模板的Instance
                vector <vector <int>     >   array2(3);//注意> 和> 之间的空格。
              这就是我们的关键,array2可以保存3个向量,向量的长度是可以改变的。array2[i]返回的是第i个向量。同理,array2[i][j]返回的是第i个向量中的第j个元素。
          到这里,你可能会得意的说: "我明白了,很简单吗! "。别急,还有一些细节问题:如下
              vector <vector <int>     >   array2(3);
              array2[1][2]=9;
        我保证你的程序会segement   failed,原因就是你没有指定向量的大小。用push_back函数可以解决问题:array2[1].push_back(9);但是好象不太爽。就不能用operator[]吗?答案是肯定的。不过要多加几个步骤,如下:
                for(int   i=0;i <3;i++)
                      array2[i].resize(3);
        这样,你就定义了一个3X3的数组了(另一个3在   申明时定义的)。而且你可以随时改变它的大小。
            其他的,你还可以用C++的异常机制来捕获如下标越界等非法行为。进行必要的处理。使你的程序更加的健壮。具体的方法我就不深入介绍了。留给各位自己钻研。下面提供一个范例,供参考。  
        //用vector来代替数组
        //                     潘李亮2002-1-13
        //在GNU   c++   Mandrake   Linux7.0下通过,
        //在VC下会有变量定义问题,大家自己解决
        #include   <iostream>
        #include   <vector>
        using   namespace   std;
        void   main()
        {
                vector <   vector <int>   >   array(3);
                for(int   i=0;i <3;i++)
                    array[i].resize(3);//设置数组的大小3X3
                      //现在你可以和使用数组一样使用这个vector
                for(int   i=0;i <3;i++)
                    for(int   j=0;j <3;j++)
                        array[i][j]=(i*j);
                //输出
                for(int   i=0;i <3;i++)
                {
                      for(int   j=0;j <3;j++)
                          cout < <array[i][j] < < "   ";
                      cout < <endl;
                  }
              array.resize(5);
              arry[3].resize(3);
              arry[4].resize(3);
                //现在是5X3的数组了
                for(int   i=0;i <5;i++)
                      for(int   j=0;j <3;j++)
                            array[i][j]=(i*j);
                for(int   i=0;i <5;i++)
                {
                      for(int   j=0;j <3;j++)
                            cout < <array[i][j] < < "   ";
                    cout < <endl;
                }
        }
    展开全文
  • 初步理解多维数据库和关系型数据库都表存储,只不过多维数据集里叫做事实表、维表,做分析的话关系型数据库也可以做到的呀?(书上说多维数据库的查询速度更快一点,可是为什么会更快呢?)多维数据库和关系型...

    Question:

    初步理解多维数据库和关系型数据库都是表存储,只不过是在多维数据集里叫做事实表、维表,做分析的话关系型数据库也可以做到的呀?(书上说多维数据库的查询速度更快一点,可是为什么会更快呢?)多维数据库和关系型数据库单单是查询速度上更优吗?还有会出于什么考虑来建多维数据库呢?

     

    Answer:

    我的理解如下:
    关系数据仓库设计严格按照三范式设计,在数据查询时,需要多次表连接才能实现,对于大数据量的仓库,这样的连接非常费时,所以性能较差;这种结构也导致了开发周期长,成本高;但节省空间,容易扩展,是理想中的的仓库设计方法。
    目前多使用一般采用多唯设计方法,此方法以事实表为核心,多个维度组合而成,结构简单容易理解,开发相对容易,此结构导致了出现很多冗余,但正因为这样,也提高了其性能,即所谓的空间换时间;这也是采用此方法的根本原因所在。

    转载于:https://www.cnblogs.com/cyechina/p/5392886.html

    展开全文
  • 什么关注的是多维的? 因为当某个类具有两个或两个以上的维度变化,若仅用继承将无法实现这种需要,或会使得设计变得相当臃肿。 这个多维度变化怎么理解?正好前几天新房到手要装修了,准备买个热水器,就以...

    类比于二维平面的坐标,或多维坐标。"桥"将多个维度的接口(或实现)连接起来,构成新的产品。

    一、什么是桥接模式?

    为什么关注的是多维的?

    因为当某个类具有两个或两个以上的维度变化,若仅用继承将无法实现这种需要,或会使得设计变得相当臃肿。

    这个多维度变化怎么理解?正好前几天新房到手要装修了,准备买个热水器,就以热水器为例,热水器有很多的品牌(海尔、格力等),每个品牌下按加热原理热水器也有很多类型(燃气、电、太阳能等),也就是说要挑选一个热水器要经过两个维度:一个是选啥品牌、一个是选啥加热类型。

    我们来简单实现下,代码如下:

    public class SelectHeater {
    
        public void doSelect(int brand, int type) {
            // 海尔
            if (brand == 1) {
                Console.log("挑选海尔旗下热水器");
                if (type == 1) {
                    Console.log("燃气热水器");
                } else if (type == 2) {
                    Console.log("电热水器");
                } else if (type == 3) {
                    Console.log("太阳能热水器");
                }
            // 格力
            } else if (brand == 2) {
                Console.log("挑选格力旗下热水器");
                if (type == 1) {
                    Console.log("燃气热水器");
                } else if (type == 2) {
                    Console.log("电热水器");
                } else if (type == 3) {
                    Console.log("太阳能热水器");
                }
            }
        }
    }
    

    上面的结构,就是基于继承的解决方案,一看就是一堆if、else,具体有以下缺点:

    • 1) 扩展性问题(类爆炸),如果再增加一种加热类型,比如空气能,就需要在各个品牌热水器中新增这个空气能加热方式的热水器,同样如果增加一个热水器品牌,也要在各个加热方式的热水器;
    • 2) 违反了单一职责原则,当增加加热方式时,要同时增加所有品牌的热水器,这样增加了代码维护成本;

    那要解决上面的尴尬,就出现了桥接模式,它的解决模型如下:

    桥接模式(Bridge模式)基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,将多个维度的变化彻底分离,最后,提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。从而可以保持各部分的独立性以及应对他们的功能扩展。

    说白了,核心实现也就是在A类中含有B类接口,通过构造函数传递B类的实现,这个B类就是设计的

    • Abstraction:定义抽象接口,维护了Implementor即它的实现类ConcreteImplementorA/B,二者是聚合关系,Abstraction充当桥接类;
    • RefinedAbstraction:是Abstraction抽象类的子类;
    • Implementor:是具体实现的接口,Implementor和RefinedAbstraction接口并不一定完全一致,实际上这两个接口可以完全不一样Implementor提供具体操作方法,而Abstraction提供更高层次的调用;
    • ConcreteImplementorA/B:实现Implementor接口,给出具体实现
    • Client:桥接模式的调用者。

    二、代码实例

    来实现下上面的热水器选择的场景:

    @AllArgsConstructor
    public abstract class WaterHeater {
        protected HeaterType heaterType;
        
        public abstract void heat();
    }
    public class HairWaterHeater extends WaterHeater {
    
        public HairWaterHeater(HeaterType heaterType) {
            super(heaterType);
        }
    
        @Override
        public void heat() {
            Console.log("海尔热水器准备加热");
            Boolean heat = heaterType.getHeat();
            if (heat) {
                Console.log("海尔热水器开始加热");
            }
            Console.log("加热完毕");
        }
    }
    public class GeliWaterHeater extends WaterHeater {
    
        public GeliWaterHeater(HeaterType heaterType) {
            super(heaterType);
        }
    
        @Override
        public void heat() {
            Console.log("格力热水器准备加热");
            Boolean heat = heaterType.getHeat();
            if (heat) {
                Console.log("格力热水器开始加热");
            }
            Console.log("加热完毕");
        }
    }
    public interface HeaterType {
        boolean getHeat();
    }
    public class Gas implements HeaterType {
        @Override
        public boolean getHeat() {
            Console.log("燃气加热!");
            return true;
        }
    }
    
    public class Electricity implements HeaterType {
        @Override
        public boolean getHeat() {
            Console.log("电加热!");
            return true;
        }
    }
    
    public class Sun implements HeaterType {
        @Override
        public boolean getHeat() {
            Console.log("太阳能加热!");
            return true;
        }
    }
    public class Client {
        public static void main(String[] args) {
            // 如果选择的是海尔燃气热水器
            WaterHeater hairWaterHeater = new HairWaterHeater(new Gas());
            hairWaterHeater.heat();
    
            Console.log("=============================================");
    
            // 如果选择的是格力太阳能热水器
            WaterHeater geliWaterHeater = new GeliWaterHeater(new Sun());
            geliWaterHeater.heat();
        }
    }
    海尔热水器准备加热
    燃气加热!
    海尔热水器开始加热
    加热完毕
    =============================================
    格力热水器准备加热
    太阳能加热!
    格力热水器开始加热
    加热完毕

     与上面的ifelse实现方式相比,外部的使用接口的用户不需要关心具体的实现,只按需选择使用即可。

    三、适用场景

    优点:

    (1)分离抽象和实现部分

    桥接模式分离了抽象部分和实现部分,从而极大地提高了系统的灵活性。让抽象部分和实现部分独立开来,分别定义接口,这有助于对系统进行分层,从而产生更好的结构化的系统。对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了。

    (2)更好的扩展性

    由于桥接模式把抽象部分和实现部分分离开了,分别定义接口,这就使得抽象部分和实现部分可以分别独立地扩展,而不会相互影响,大大地提高了系统的可扩展性。

    (3)可动态地切换实现

    由于桥接模式把抽象部分和实现部分分离开了,所以在实现桥接的时候,就可以实现动态的选择和使用具体的实现。也就是说一个实现不再是固定的绑定在一个抽象接口上了,可以实现运行期间动态地切换。比如海尔燃气、海尔电、格力燃气等自由组合。

    (4)可减少子类的个数

    根据前面的讲述,对于有两个变化纬度的情况,如果采用继承的实现方式,大约需要两个纬度上的可变化数量的乘积个子类;而采用桥接模式来实现,大约需要两个纬度上的可变化数量的和个子类。可以明显地减少子类的个数。

    缺点:

    桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。

    适用场景:

    1、如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。

    2、对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。

    3、一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。

    所以,对于两个独立变化的维度,使用桥接模式再适合不过了。

    展开全文
  • 什么是轻量级?抛开技术术语,从效果上看就是为了实现操作目的,使用更轻便、更省时的方法;那么什么是高性能呢?...轻量级的准确含义,相对于重量级框架而言的一种程序设计模式。轻量级的优点在于对容器没...
  • 1 数组是什么? 多个相同数据类型变量构成的集合就是数组,比如int a[2]; int b[6]。 2 为什么C语言要设计数组这个概念? 因为很多场合下需要把一堆相同类型的数据存放在内存中,而数组正好可以满足这个要求。 3...
  • 什么是类(自行车的设计图) 什么是对象(一辆辆的自行车) 为什么设计类的对象的机制(面向对象编程) 状态(属性) + 行为(方法) 面向对象的三大特性:封装、继承、多态 一、语法: 1、定义类的语法: ....
  • 6.6 多维数组使用示例 多维数组在实际使用时,更多的在于数组的设计,在实际使用... 所以在实际使用多维数组以前,需要考虑清楚:l 需要几维数组l 每一维的长度是多少l 按照怎样的规则存储值l 数组值的意义是什么
  • 将“让设计更简单”的企业愿景多维宣发,聚焦解决多场景设计需求。 天天向商升级为稿定设计在保持原有功能的基础上新增了丰富的设计场景,如:新媒体、企业场景等;除此之外,还在APP的基础上布局小程序,WEP端...
  • 什么是MDSA? MSDAPython中的开源low-code多传感器数据分析库,旨在在时序多传感器数据分析和实验中将假设减少到洞察周期。 它使用户能够快速,高效地执行端到端的概念验证实验。 该模块通过捕获变化和趋势来建立...
  • 总线架构Kimball的多维体系结构(MD)中的三个关键性概念之一,另两个一致性维度(Conformed Dimension)和一致性事实(Conformed Fact)。 在多维体系结构(MD) 的数据仓库架构中,主导思想分步建立数据...
  • 项目背景  '博客园'一家国内的...由于报表设计到多个方面,每一次有新的搭配或者比较的话就必须让程序人员修改代码,增加修改报表的内容.现在,'博客园'想通过数据分析人员自己来控制想得到的数据报表,想到什么
  • Analysis Services是什么

    千次阅读 2011-12-05 13:23:57
    Analysis Services 支持 OLAP,使您能够设计、创建和管理包含从其他数据源(如,关系型数据库)聚合来的数据的多维结构。对于数据挖掘应用程序, Analysis Services 使您能够通过使用各种各样的业界标准数据
  • 一直觉得星型和雪花型...在设计逻辑型数据的模型的时候,就应考虑数据按照星型模型还是雪花型模型进行组织。 当所有维表都直接连接到“事实表”上时,整个图解就像星星一样,故将该模型称为星型模型,如图 1 。 ...
  • 设计逻辑型数据的模型的时候,就应考虑数据按照星型模型还是雪花型模型进行组织。 当所有维表都直接连接到“事实表”上时,整个图解就像星星一样,故将该模型称为星型模型,如图1。 星型架构一种非正规化...
  • 数据仓库的架构与设计

    万次阅读 多人点赞 2017-04-01 17:52:19
    公司之前的数据都直接... 数据仓库多维数据模型的设计 1. 什么是数据仓库1.1 数据仓库的概念官方定义数据仓库一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。
  • 模型是什么 模型是结构+数据+方法的组合 结构是什么 结构是节点多维的组合, 同时结构又是节点. 数据是什么 数据是描绘对象当前性状的参数 方法是什么 方法是描绘运动的规律 任何事物都是在...
  • c++ 程序设计

    2019-01-20 22:53:37
    8.1.1 什么是面向对象的程序设计 8.1.2 面向对象程序设计的特点 8.1.3 类和对象的作用 8.1.4 面向对象的软件开发 8.2 类的声明和对象的定义 8.2.1 类和对象的关系 8.2.2 声明类类型 8.2.3 定义对象的方法 8.2.4 类和...
  • 1.什么是mondrian的Schema? Schema定义了多维数据库。其中包含了逻辑模型,由Cube、层次、成员组成,而且定义了逻辑模型到物理模型的映射。 逻辑模型组成了用来进行MDX查询的结构,包括cube、维度dimension、层次...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 430
精华内容 172
关键字:

多维设计是什么