leaf

组合模式(Composite Pattern)

大城市里の小女人 提交于 2019-12-19 17:07:59
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 组合模式,也称作部分整体模式。是结构型设计模式之一。组合模式画成图就是数据结构中的树结构,有一个根节点,然后有很多分支。将最顶部的根节点叫做根结构件,将有分支的节点叫做枝干构件,将没有分支的末端节点叫做叶子构件. 定义 将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 使用场景 想表示对象的部分-整体层次结构时。 希望用户忽略单个对象和组合对象的不同,对对象使用具有统一性时。 从一个整体中能够独立出部分模块或功能时。 UML 安全的组合模式 Component:抽象节点,为组合中的对象声明接口,适当的时候实现所有类的公有接口方法的默认行为。 Composite:定义所有枝干节点的行为,存储子节点,实现相关操作。 Leaf:叶子节点,没有子节点,实现相关对象的行为。 看一下这个模式的通用代码 抽象的节点: public abstract class Component { protected String name; public Component(String name) { this.name = name; } public abstract void doSonthing(); } 1 2 3 4 5 6 7 8 枝干节点: public class

如何实现报表数据的动态层次钻取(一)

别说谁变了你拦得住时间么 提交于 2019-12-17 09:59:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在报表项目中有时会遇到进行动态层次钻取的需求,这种报表的开发难度一般都较大。而润乾报表的实现则相对简便很多。下面就以《各级部门 KPI 报表》为例,讲解润乾报表(需要结合集算器实现)实现此类报表的过程。 《各级部门 KPI 报表》初始状态如下图: 当前节点是根节点“河北省”,要求报表显示当前节点的下一级节点“地市”,以及汇总的 KPI 数值。Kpi 又分为普通指标和 VIP 指标两类,共四项。当点击“石家庄”进行钻取的时候,要求显示石家庄下一级(区县)的 KPI 汇总指标,如下图: 再点击“中心区”进行钻取,要求显示下一级(营业部)的 KPI 汇总指标。以此类推,直到显示到最后一级。如下图: 前四级固定是“省、地市、区县、营业部”,后边则是动态的“架构 4、架构 5、架构 6. . . 架构 13”(根节点“省”对应“架构 0”)。 这个报表对应的 oracle 数据库表有两个,Tree(树形结构维表)和 kpi(指标事实表)。其中 Tree 表的叶子节点,通过 id 字段与 kpi 表关联,数据示例如下图: Tree表 Tree表 Kpi表 Kpi表 这个报表的难点在于 1、动态的树形多层数据、标题;2、树形结构与事实表关联。 具体实现步骤如下: 第一步 编写集算脚本 tree.dfx,完成源数据计算。

How to upload images from the browser to Amazon S3 using Vapor and Leaf?

久未见 提交于 2019-12-11 12:40:00
问题 I have set up AWS S3 bucket and I'm able to upload files there using Vapor 3 and Postman (PUT -request and with headers: ["x-amz-acl" : "public-read"]) but I would like to do that from the browser (I'm using leaf). So how can I upload image files from the browser? I'm new with HTML, AWS S3 and Vapor. I'm using: Vapor 3 AWS S3 Leaf package S3 package VaporExt package I followed this tutorial to set up everything (except the get request and the bucket policies): https://fivedottwelve.com/blog

Access Session in Leaf template

不羁的心 提交于 2019-12-11 06:18:50
问题 I have a question regarding the Leaf template engine. How can I access the Session values in the Leaf Template? For instance to loop through Flash messages like in Laravel: https://laravel.com/docs/5.3/redirects#redirecting-with-flashed-session-data I can't find a solution to accomplish this. Thanks in advance 回答1: The latest version of Vapor includes the request by default when rendering views. Therefore you'll be able to access the session using #(request.session) // in the latest version

How to pass data from using POST/form leaf template?

帅比萌擦擦* 提交于 2019-12-11 06:04:59
问题 I have a couple of major gaps in my understanding of vapor/leaf/html. I am working from the "todo" example that is created using the beta branch of vapor. First, I made my own fluent model (no problems that I know of): import FluentSQLite import Vapor final class affordatmodel: SQLiteModel { var id: Int? var propertyCost: String var targetEquity: String var interestRate: String var amortization: String var sponsor1: String var sponsor2: String var rent: String var rentInflation: String var

python2和python3的继承方式的不同,广度优先和深度有限

Deadly 提交于 2019-12-07 15:18:59
脚踏黄土,头顶清风,不道苦楚,莫问前程!!! 参考文章三篇 简书第一篇 , 简书第二篇 , 博客园的文章,这篇博客园文章讲的很好 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”,继承的过程,就是从一般到特殊的过程。在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现 python2 中经典类和新式类的继承方式不同, 经典类 采用 深度优先搜索 的继承, 新式类 采用的是 广度优先搜索 的继承方式 python3 中经典类和新式类的继承方式都采用的是都采用 广度优先搜索 的继承方式 在Python 3.x中取消了经典类,默认都是新式类,并且不必显式的继承object,也就是说: class Person(object): pass class Person(): pass class Person: pass 三种写法并无区别,推荐第一种 但是在Python2.x中,默认都是经典类,只有显式继承了object才是新式类,即: class Person(object): pass 新式类写法 class Person(): pass 经典类写法 class Person: pass 经典类写法 举个例子来说明:现有4个类,A,B,C,D类,D类继承于B类和C类

14.设计模式之十二:组合模式【结构型模式】

六眼飞鱼酱① 提交于 2019-12-05 15:24:12
在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学院、总公司中的部门与分公司、学习用品中的书与书包、生活用品中的衣月艮与衣柜以及厨房中的锅碗瓢盆等。在软件开发中也是这样,例如,文件系统中的文件与文件夹、窗体程序中的简单控件与容器控件等。对这些简单对象与复合对象的处理,如果用组合模式来实现会很方便。 定义与特点 组合(Composite)模式的定义:有时又叫作 部分-整体模式 ,它是一种将 对象组合成树状的层次结构的模式 ,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。 主要优点有: 组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码; 更容易在组合体内加入新的对象,客户端不会因为加入了新的对象而更改源代码,满足“开闭原则”; 主要缺点是: 设计较复杂,客户端需要花更多时间理清类之间的层次关系; 不容易限制容器中的构件; 不容易用继承的方法来增加构件的新功能; 结构与实现 组合模式的结构不是很复杂,下面对它的结构和实现进行分析。 模式的结构 组合模式包含以下主要角色。 抽象构件(Component)角色:它的主要作用是为树叶构件和树枝构件声明公共接口,并实现它们的默认行为。在透明式的组合模式中抽象构件还声明访问和管理子类的接口;在安全式的组合模式中不声明访问和管理子类的接口

UCloud可支撑单可用区320,000服务器的数据中心网络系统设计

青春壹個敷衍的年華 提交于 2019-12-04 07:49:48
2018年10月份,UCloud数据中心基础网络完成了V4新架构的落地,自此,新建的数据中心(下简称DC)全面升级到25G/100G网络,极大提升了DC容量和DC间互联的性能。V4架构下的单可用区可提供320,000个服务器接入端口,是此前V3架构的4倍。并且支持无损网络特性,提供可用区资源的水平扩展和滚动升级能力。上线以来,新架构有力保障了UCloud福建GPU可用区开放、北京二可用区B/C/D扩容等需求。 对比云产品通过软件的灵活性来创造丰富的用户价值,公有云物理网络更注重规划的前瞻性与设计的合理性。其目标是简单、稳定、高效。通过对上层虚拟网络提供极度可靠的、一维寻址的逻辑连通面,来帮助实现上层产品“软件定义一切”的使命。下文就将详述我们秉承这种理念设计DCN V4架构的细节。 UCloud DCN V3架构设计 UCloud公有云以可用区(下简称AZ)为最小资源池单位对外提供服务,一个可用区由一个或多个数据中心组成。UCloud数据中心基础网络架构(下简称DCN)在2016年升级到V3架构,如下图所示: 图:UCloud DCN V3架构 V3架构的设计目的: 全面升级到10G接入、40G互连; 彻底拆掉了堆叠,避免了堆叠的种种弊端; 采用了两级CLOS、Spine-Leaf架构,实现了一定的水平扩展能力; 数据中心核心交换机为Spine,提供标准的BGP路由接入,TOR

Image Upload in Vapor 3 using PostgreSQL

我只是一个虾纸丫 提交于 2019-12-04 01:22:26
I'm following this guys Martin Lasek Tutorials and now i'm at "image upload". It seems that no one has the answer to the question "How do you upload images i Vapor 3" Db connection is ok, all the other values are saved. This is mye create method: func create(_ req: Request) throws -> Future<Response> { return try req.content.decode(Question.self).flatMap { question in return question.save(on: req).map { _ in return req.redirect(to: "/form") } } } and Model: final class Question: PostgreSQLModel { var id: Int? var questionText: String var answers: [String] var theme: String? var imageName:

python 实现服务树结构化

爱⌒轻易说出口 提交于 2019-12-01 23:50:12
1. 所有服务树数据 tree_list = [{'id': 1, 'pid': 0, 'name': '1211', 'path': '1211', 'leaf': 0, 'type': 0}, {'id': 2, 'pid': 1, 'name': 'a1', 'path': '1211.a1', 'leaf': 0, 'type': 0}, {'id': 3, 'pid': 1, 'name': 'a2', 'path': '1211.a2', 'leaf': 1, 'type': 0}, {'id': 16, 'pid': 0, 'name': 'ddssa', 'path': 'ddssa', 'leaf': 0, 'type': 0}, {'id': 17, 'pid': 16, 'name': '11', 'path': 'ddssa.11', 'leaf': 0, 'type': 0}, {'id': 18, 'pid': 17, 'name': '121ss1', 'path': 'ddssa.11.121ss1', 'leaf': 1, 'type': 0}, {'id': 19, 'pid': 17, 'name': '13', 'path': 'ddssa.11.13', 'leaf': 1, 'type': 0}, {'id': 22, 'pid': 17