集合运算

《领域驱动设计》学习笔记

走远了吗. 提交于 2020-02-10 00:55:12
【第一部分】运用领域模型 第1章:消化知识 有效的建模要素 (1)模型和实现的绑定 (2)建立了一种基于模型的语言 (3)开发一个蕴含丰富知识的模型 (4)提炼模型 (5)头脑风暴和实验 【学习心得】:千万不要用自己有限的思维规划完整的图形,持续学习、消化、输出(讨论)、沉淀,所有道理都是一致的。 第2章:交流语言与使用 模式:UBIQUITOUS LANGUAGE(通用语言) 术语的交集产生了UBIQUITOUS LANGUAGE 想要创建种灵活的、蕴含丰富知识的设计,需要一种通用的、共享的团队语言,以及对语言不断的试验——然而,软件项目上很少出现这样的试验。 如果语言支离破碎,项目必将遭遇严重问题。领域专家使用他们自己的术语,而技术团队所使用的语言则经过调整,以便从设计角度讨论领域。日常讨论所使用的术语与代码(软件项目的最重要产品)中使用的术语不一致,甚至同一个人在讲话和写东西时使用的言语也不一致,这导致的后果是,对领域的深刻表达常常稍纵即逝,根本无法记录到代码或文档中。翻译使得沟通不畅,并削弱了知识消化。然而任何一方的语言都不能成为公共语言,因为它们无法满足所有的需求。 【学习心得】:在自己有限的项目经验里,说沟通成本占据项目总成本的八成都不为过,就像本书一开始的重点,就是无处不在的语言。这语言可以是人话、可以是图形、可以是表格,重点在于可以帮助项目高质量高效率的落地

Python基础语法三组合数据类型

断了今生、忘了曾经 提交于 2020-02-10 00:31:42
一、列表(Lists) 列表属于Python中的序列类型,它是任意对象的有序集合,通过 “ 位置 ”或者 “ 索引 ” 访问其中的元素,它具有可变对象、可变长度、异构和任意嵌套的特点。 列表里第一个元素的为值或者索引是从 “ 0 ” 开始,第二个元素则是 “ 1 ”,一次类推。 列表的元素放置在方括号 [] 中,以逗号来分隔各元素; 格式如下: listname = [元素1,元素2,元素3,...,元素n ] 1 1 listname = [元素1,元素2,元素3,...,元素n ] 例: sample_list1 = [1,2,3,4] sample_list2 = ["P","y","t","h","o","n"] sample_list3 = ['Python','sample','list','for','your','reference'] print(sample_list1) print(sample_list2) print(sample_list3) 6 1 sample_list1 = [1,2,3,4] 2 sample_list2 = ["P","y","t","h","o","n"] 3 sample_list3 = ['Python','sample','list','for','your','reference'] 4 print(sample

集合运算之美

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-08 13:19:48
算法训练 集合运算 时间限制:1.0s 内存限制:512.0MB 锦囊1 排序后处理。 问题描述 给出两个整数集合A、B,求出他们的交集、并集以及B在A中的余集。 输入格式 第一行为一个整数n,表示集合A中的元素个数。 第二行有n个互不相同的用空格隔开的整数,表示集合A中的元素。 第三行为一个整数m,表示集合B中的元素个数。 第四行有m个互不相同的用空格隔开的整数,表示集合B中的元素。 集合中的所有元素均为int范围内的整数,n、m<=1000。 输出格式 第一行按从小到大的顺序输出A、B交集中的所有元素。 第二行按从小到大的顺序输出A、B并集中的所有元素。 第三行按从小到大的顺序输出B在A中的余集中的所有元素。 样例输入 5 1 2 3 4 5 5 2 4 6 8 10 样例输出 2 4 1 2 3 4 5 6 8 10 1 3 5 样例输入 4 1 2 3 4 3 5 6 7 样例输出 1 2 3 4 5 6 7 1 2 3 4 #include <iostream> #include <set> using namespace std; set<int> sa,sb,sc; int main(int argc, char** argv) { int n,m; cin>>n; int num; for(int i=0;i<n;i++){ cin>>num; sa.insert

EL表达式

醉酒当歌 提交于 2020-02-08 06:23:51
一、EL表达式简介   EL 全名为Expression Language。EL主要作用:   1、获取数据     EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)   2、执行运算     利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}   3、获取web开发常用对象     EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。   4、调用Java方法     EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。 1.1、获取数据   使用EL表达式获取数据语法:" ${标识符} "    EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、 session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。   EL表达式可以很轻松获取JavaBean的属性

EL表达式获取数据

坚强是说给别人听的谎言 提交于 2020-02-08 02:13:16
EL 全名为Expression Language。 EL主要作用 获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组) 执行运算: •利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null} 获取web开发常用对象 •EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。 调用Java方法 •EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。 EL表达式获取数据 1.使用EL表达式获取数据语法:“${标识符}” 2.EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。EL表达式${xxx}会先看xxx是不是EL表达式的隐式对象,是就直接返回隐式对象的引用,不是就翻译成pageContext

ArrayList数据结构及主要方法分析

a 夏天 提交于 2020-02-07 14:18:53
/** * Shared empty array instance used for default sized empty instances. We * distinguish this from EMPTY_ELEMENTDATA to know how much to inflate when * first element is added. */ private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; 可以看出ArrayList的是基于数组的型式实现的 1.ArrayList的初始空间大小 进入ArrayList源码中可以看到声明的初始容量(default capacity) /** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10; 从源码中我们可以得到ArrayList的初始容量为10 2.ArrayList的add()——>append操作(在最后追加) /** * Appends the specified element to the end of this list. * * @param e element to be appended to this list *

元组、字典、集合

爷,独闯天下 提交于 2020-02-07 09:48:13
基本使用:tuple  用途:记录多个值,当多个值没有改的需求,此时用元组更合适  定义方式:在()内用逗号分隔开多个任意类型的值tuple使用:  t1=tuple('hello')  结果是('h','e','l','l','o') 常用操作+内置的方法  1.按索引取值(正向取+反向取):只能取    t[0]  2.切片    t[0:3]  3.长度  4.成员运算in 和 not in  5.循环    for item in ('a','b','c'):      print(item)  6.count index   该类型总结:可以存多个值,有序,不可变字典类型  基本使用dict  用途:记录多个值,每一个值都对应的key用来描述value的作用  定义方式:在{}内用逗号分隔开多 个key:value,其中value可以是任意类型,而key必须是不可变的类型,通常情况下应该str类型  dict用法    1. dic=dict(x=1,y=1,z=1)    2.      userinfo=[      ['name','egon'],      ['age',18],      ['sex','male']      ]      d={}      for k,v in userinfo: #k,v=['name', 'egon']       d

python之3核心数据结构

空扰寡人 提交于 2020-02-07 00:48:26
3.1 列表list list列表是一种数据项构成的有限序列,即按照一定的线性顺序,排列而成的数据项的集合,在这种数据结构上进行的基本操作包括对元素的的查找,插入,和删除. 在python中,使用方括号[]表示列表 成员有序且可重复出现 列表常见的操作 操作 说明 list.append(obj) 在列表后面新增元素 del list[i] 删除元素 len(list) 求列表长度 list[i] 读取第i个元素 list[-i] 读取倒数第i个元素 list[i,j] 从第i个元素截取 list.index(objc) 从列表中找出某个值第一次出现的地方 list.index(i,obj) 在第i个元素的位置插入元素 list.pop(i) 移除第i个元素,并返回其值 3.2 集合set 在python中,使用花括号{}或set()函数创建集合 注意:当我们要创建一个空集合的时候,只能用set()进行创建,因为{ }表示的是空的字典 成员无序且不可重复出现 集合常见的操作 操作 说明 set.add(item) 往集合里添加一个元素 set.update(item) 往集合里添加元素,item是可迭代对象,如,列表、元组、字典等 set.remove(item) 将元素item从集合set中移除,如果元素不存在,则会发生错误 set.discard(item)

python基础 2 基本类型及操作

安稳与你 提交于 2020-02-06 00:27:19
文章目录 数字类型及操作 整数类型 进制转换 浮点类型 复数类型 数值运算操作符 数字类型的关系 数值运算函数 集合类型及操作 集合类型的定义 集合创建 集合操作符 集合处理方法 字符串类型 索引操作 切片操作 字符串类型表示 字符串的序号 特殊字符的表示 字符串操作符 字符串操作函数 字符串操作方法 字符串类型的格式化 序列类型 序列类型的定义 序列类型及操作 序列类型通用函数和方法 元组类型及操作 列表类型及操作 字典类型 列表类型操作函数和方法 数字类型及操作 整数类型 pow(a,b)函数 进制转换 浮点类型 运算存在不确定尾数。 0.1+0.2=0.3000000000004 原因:采用53位二进制表述浮点数。 round(x,d)函数:对x四舍五入,d是小数截取位数。 浮点数比较大小可能需要round函数辅助比较。 复数类型 数后面贴一个j代表复数。 z.real获取实部 z.image获取虚部 cmath库专门处理复数 数值运算操作符 + - * /(是浮点数结果) //整数除(10//3=2) % **(x**y:x的y次幂) += -= *= /= //= %= **= 数字类型的关系 混合运算,生成结果为”最宽“类型 整数 -> 浮点数 -> 复数 混合运算注意不确定尾数 数值运算函数 abs(x) 绝对值 divmod(x,y) 商余*(x//y,x%y)

最小生成树之克鲁斯卡尔(Kruskal)算法

百般思念 提交于 2020-02-05 16:54:56
学习最小生成树算法之前我们先来了解下 下面这些概念: 树 (Tree):如果一个无向连通图中不存在回路,则这种图称为树。 生成树 (Spanning Tree):无向连通图G的一个子图如果是一颗包含G的所有顶点的树,则该子图称为G的生成树。 生成树是连通图的极小连通子图。这里所谓极小是指:若在树中任意增加一条边,则将出现一条回路;若去掉一条边,将会使之变成非连通图。 最小生成树 (Minimum Spanning Tree,MST):或者称为最小代价树Minimum-cost Spanning Tree:对无向连通图的生成树,各边的权值总和称为生成树的权,权最小的生成树称为最小生成树。 构成生成树的准则有三条: <1> 必须只使用该网络中的边来构造最小生成树。 <2> 必须使用且仅使用n-1条边来连接网络中的n个顶点 <3> 不能使用产生回路的边。 构造最小生成树的算法主要有:克鲁斯卡尔(Kruskal)算法和普利姆(Prim)算法他们都遵循以上准则。 接下分别讨论一下这两种算法以及判定最小生成树是否唯一的方法。 克鲁斯卡尔算法 克鲁斯卡尔算法的基本思想是以边为主导地位,始终选择当前可用(所选的边不能构成回路)的最小权植边。所以Kruskal算法的第一步是给所有的边按照从小到大的顺序排序。这一步可以直接使用库函数qsort或者sort。接下来从小到大依次考察每一条边(u,v)。