设计

透视学的应用(五)

淺唱寂寞╮ 提交于 2020-04-26 04:32:30
上图,是非常著名的作品《最后的晚餐》。意大利艺术家达芬奇对 透视 学做出了重要贡献。在《论绘画》中,达芬奇提出三个透视方法的观点:一是远距离物体尺寸的减小(精准的缩放比例);二是颜色的逐渐衰减;三是物体轮廓逐渐模糊。比如,在我们生活中著名的建筑师,他往往就能把远处的尺寸目测出来,而且非常精准。我们在日常绘画中,常常举起笔头测量物体的长度,画面上的比例就会更加精准。这些思考的过程就是透视学潜意识发挥的作用。《最后的晚餐》是经典的焦点透视,可见整个场景的轮廓线都聚于一点,如图九,如果我们从画中单个物体来观察,那么B点只是四边形的棕红色墙体;我们再从整体来观察,就会发现那是四个面积相同的矩形棕红色墙体。透视把原来物体的轮廓都“改变”了,因为我们视觉已经习惯这种变化规律,当我们拥有透视学知识和实践经验,就不难目测尺寸以及辨别物体的空间关系。 图十是《最后的晚餐》延伸的 透视 线框图。其中线段C为视平线,所有物体因为越来越远而最终消失在这条线上;线段A是视中线,它通常把视觉画面分成两半;视中线和视平线的交点(B点),也是我们视觉的焦点,称为心点;而在视平线的两端分别有两个透视的消失点,称之为灭点(D点);在视中线上下两端也分别有两个透视点,上方的交点称为天点(E点),下方的交点称为地点(F点)。 通过以上的作品我们知道,在中国画的散点透视中,为了使画面形成一个统一的整体

透视学的应用(九)

落花浮王杯 提交于 2020-04-26 03:13:27
每当我们仰视的时候,视平线就会上升,与地面垂直的建筑轮廓就会向上靠近,最终交于天上的一点,称为 天点 ;而当我们站在高楼往下看的时候,视平线就会降低,与地面垂直的建筑轮廓线就会乡下聚拢,而延伸线最后交于地下更深的一个点,称为 地点 ;如图十六,A为视觉焦点,它是无限延伸的空间纵深,最终消失成一个点;B点是天点,与地平线垂直的轮廓线最终无限消失于天空的一个消失点;C点是右灭点,当物体的轮廓线与水平线产生夹角时,无限延伸的一个点。 来源: oschina 链接: https://my.oschina.net/u/2971691/blog/814020

也谈淘点点60s短信订单的架构设计

早过忘川 提交于 2020-04-12 17:55:57
1. 前言## 看到了这个 http://www.oschina.net/question/926166_2137672 然后有人写了博客还分析设计了一下 http://my.oschina.net/u/926166/blog/522227 本人最近对架构设计较感兴趣,下面是我的设计,可以做到极大化性能和水平扩展,所有的性能issue都在网络IO。redis存储方面轻松支持同时上亿个订单。 2. 基于redis的详细设计## 使用一个高可用的时间序列发生器服务器。timeserver。 订单server产生了订单之后立即往redis的订单号服务器写一条记录,key为timeserver的nanosecond,存储类型为sorted set。把订单的详细信息写入另一个redis的详单服务器集群(用订单号hash写入)。 订单服务器有一个定时器线程,60s运行一次,时间到了发送一条消息(包含time server的当前nanosecond)给短信发送server。 短信发送server收到nanosecond的消息后,去redis订单号服务器取出所有小于该nanosecond的订单号,开启多个协程用订单号去redis详单服务器集群拿到详单数据,发送短信。 redis配置成高可用。订单业务server和短信server都是无状态的,可以横向水平扩展。 3. 性能估计数据量估计##

计算器 abacus 3 详细设计

半世苍凉 提交于 2020-03-01 08:47:05
[介绍]:abacus 2 是一个扩展性良好的小型计算器,得名于中国古代著名的计算工具----算盘,目前版本 2。支持四则混合运算、支持符号常量、支持变量参与运算、支持众多的数学函数、并可以把自己常用的公式定义成函数并像内置函数一样使用。 一、软件框架 1. 软件逻辑框架 2. 子模块清单 编号 模块 备注 01 会话管理器 02 命令处理器 03 词法分析器 04 语法分析器 05 计算器 06 错误管理器 二、模块功能设计 1. 会话管理器 编号 功能 备注 01 管理用户自定义变量,包括 : 添加用户自定义变量 用户自定义变量赋值 删除用户用户自定义变量 获取用户自定义变量列表 02 管理用户自定义运算符与函数,包括 : 添加用户自定义运算符(函数) 删除用户自定义运算符(函数) 获取用户自定义运算符(函数)列表 2. 命令处理器 编号 功能 备注 01 创建业务命令 02 执行业务命令 3. 词法分析器 编号 功能 备注 01 词法分析:分割字符串为表达式元素列表 4. 语法分析器 编号 功能 备注 01 语法分析:构造运算符前置表达式 5. 计算器 编号 功能 备注 01 根据运算符前置表达式递归计算表达式的值 6. 错误管理器 编号 功能 备注 01 添加错误信息 02 获取最后一个错误信息 三、业务流程设计 1. 软件主体流程 2. 业务流程 2.1 计算命令流程 2

计算器 abacus 技术文档之二----初步设计

﹥>﹥吖頭↗ 提交于 2020-03-01 08:30:56
======================================= 计算器 abacus 的下载地址:http://www.oschina.net/code/snippet_736932_13725 如果你有关于 abacus 的问题或者建议,请发邮件至 zhoucosin@163.com。谢谢。 ======================================= 本节介绍一些问题以及如何设计计算器以解决这些问题。 程序的目标: 支持四则混合运算 ok. 支持数学函数,如三角函数、指对函数、组合数等 ok. 支持符号常量,如圆周率、自然对数的底数等 ok. 支持变量运算(并非符号计算) doing... 支持表达式函数(即含有变量的表达式作为函数) doing... 支持有控制流程的函数 wait for doing. 首先确定程序的使用方式,目前只打算以命令行的方式运行程序,暂不考虑界面的问题,程序启动后,用户逐条输入表达式以计算其值,每计算完一个表达式并显示之后,程序将等待用户输入下一个表达式,直到用户输入"quit" 退出程序。 表达式在本质上就是一个由运算符、运算数、标点符号这些表达式元素组成的序列,所以问题的关键在于解释这些序列的数学意义。 首先需要从字符串形式的表达式中提取各个表达式元素(运算符、运算数、标点符号:主要是括号和逗号)

软件开发中,设计的最终交付物应该是什么?

我是研究僧i 提交于 2020-02-29 16:34:50
设计交付物,就是设计师交给开发人员最终的文件或者资料。这些文件和资料在各个公司有不同的表现形式。这是我个人觉得比较合理的交付物的类型。 两大平台 对于不同的平台,提供不同的交付物,首先需要知道各自平台的特点。有针对性的制作和提供交付物,会大量减少设计师的工作。同时也会对流程有一个更加详细的了解。 针对不同的平台,各个交付物是有差别的。主要的两个平台:Web和移动App。 web端的特点 界面操作和功能较多 一个web页面可能多达20种操作和功能 同一界面展示不同内容较多 功能多引起的界面展示和切换也就比较多,对话框之类的,页面的动态更新之类的 界面元素多 web的页面有多丰富也就不用说了 页面尺寸比较大 一般web的页面宽度,最起码是800像素。高度就更不用说了。 界面跳转比较单一 跳转单一表现为:要么是进入到另一个界面,要么是在本页面显示不同的内容。 移动端的特点 界面操作和功能比较类似 App的界面,基本上是按照功能来区分的,界面和操作基本相同。 同一界面展示内容类似 App的界面内容基本上是内容相关为主的。 界面元素类似 界面的布局基本相同。列表或者九宫格。每一项的布局也基本相同。 界面跳转单一 一般点击都是跳转到另一个页面。 设计交付物的种类 交付物的种类,按照不同的衡量标准,可以分成不同的种类。 按界面粗细程度分 线框图 线框图就是用简单的线和方框来描绘出框架。 高保真

快速JavaEE轻量级框架&公用业务模块 设计&实现 7

隐身守侯 提交于 2020-02-28 12:01:44
这部分的代码在 http://git.oschina.net/terrymanu/miracle-framework/tree/master/miraclesea/framework-webmvc 这个部分写的比较晚了,本来是设计的时候应该写的,但是因为当时写这个项目的时候,还没想好需要往这个模块中放什么。 现在随着rbac模块的开发,渐渐的想到了一些可以提取出来的东西。 目前第一版,只支持rest api,以后会考虑支持freemarker。 1. 首先是一个流程。基本的CRUD都有一些标准流程。 如,增加一个实体的时候,首先要validate这个实体,其次通过业务方法从数据库中查询,判断这个实体是否打破了业务规则(如:唯一的用户名),如果失败,则返回相应的错误代码,如果成功。则返回正确的。 2. 基于这个流程,需要定义一个BaseResponse,用于封装Http状态码和业务对象。springmvc虽然提供了ResponseEntity,但是并没有可以放入error以及warn的地方。所以需要扩展一下。 所以现在新增加了两个包,com.miraclesea.webmvc.vo,用于存放 BaseResponse ;com.miraclesea.webmvc.controller用于存放模板逻辑。 其中核心的代码在AsyncBaseMangementController这个类中

【选择恐惧症】接口?虚基类?

北城以北 提交于 2019-12-21 10:50:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 症前兆 记得有个朋友跟我讨论过这样的一个问题,说到他刚刚学习 接口 和 虚基类 的相关知识时觉得很迷茫,不知道什么时候该用接口,什么时候该使用虚基类。后来慢慢地发现接口能做的事情,虚基类也能够实现,甚至有更多的特点。再后来就慢慢地放弃了接口,把所有的设计和实现都采用虚基类来替代。不能说我这个朋友这样的处理有错,但是就我个人对接口和虚基类的理解来说,这样的做法是有不妥的地方。 症分析 所谓的 接口 简单的来说就是个“门口”,而这个"门口"是安装在某个模块或者服务上,其目的就是为了让外面的世界通过这个“门口”可以访问到模块上的功能或服务。由于是跟外部环境做对接,因此给它定义为-- 接口 。而 虚基类 则更像一间毛胚房,整个架子已经有了(包括门口),想要什么东西就直接往里面放,但是摆放的东西跟整个架子的设计有关,不是所有的东西都能乱摆,就好像原本规划为洗手间的空间,总不能把床摆在里面吧(当然,你乐意也是可以的。)。 症解答 说到这里,其实已经能够感觉到它们的区别是什么了,表面上 虚基类 感觉更加强大一点,可以像 接口 那样声明一系列的方法(这里的方法是没有实现体的,在 虚基类 中我们把这类方法叫“虚方法”),又能定义一些共有的属性;但是,因为 虚基类 也是一个类型,是必须要继承与它才能够拥有这样的一些特性

怎么优化ViewController,区分模块,分类管理

你离开我真会死。 提交于 2019-12-09 18:53:28
View controllers 通常是 iOS 项目中最大的文件,并且它们包含了许多不必要的代码。所以 View controllers 中的代码几乎总是复用率最低的。我们将会看到给 view controllers 瘦身的技术,让代码变得可以复用,以及把代码移动到更合适的地方。 你可以在 Github 上获取关于这个问题的 示例项目 。 把 Data Source 和其他 Protocols 分离出来 把 UITableViewDataSource 的代码提取出来放到一个单独的类中,是为 view controller 瘦身的强大技术之一。当你多做几次,你就能总结出一些模式,并且创建出可复用的类。 举个例,在示例项目中,有个 PhotosViewController 类,它有以下几个方法: # pragma mark Pragma- (Photo*)photoAtIndexPath:(NSIndexPath*)indexPath { return photos[(NSUInteger)indexPath.row]; } - (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section { return photos.count; } - (UITableViewCell

触控手势怎么设计才好用(四)

一笑奈何 提交于 2019-12-09 14:44:32
记忆力限制 因为这些 手势 操作不能非常清楚的显示在界面上,没有能代表动作的可视化元素,这就需要用户记住哪种手势对应的是哪些操作,一些不常用的手势操作往往很难被发现。如果手势直观常用自然是没问题,而如果没有“自然”的手势去代表一个动作,那么用户就会感到困惑,于是便需要记忆,就像在使用DOS系统时要记住那些命令一样。 App中手势数量最好保持在5个数量以下,多依赖与界面的引导和暗示,让此类用户根据情境记忆这些手势,从而增加手势的易记性。 如果用户对其缺乏认知,那么这些手势操作就不易被发现,也不会为人所用,甚至会造成操作障碍。 Mozilla Firefox 4版本右划呼出Tab 不同应用场景采用不同的手势 设计 人们会在千奇百怪的环境中使用我们的产品,我们的产品在和周围环境争夺用户的注意力,凭借一个小屏幕与车水马龙、人声鼎沸的大千世界作斗争,因此在实际的手势设计中还需考虑该应用的使用场景。 效率型和实用型的应用,这类应用一般使用场景是在行进时,考虑手机一般随着用户的行进而摇晃,操作效率以及误操作等一些因素,一遍采用单手操作手机的手势交互。 游戏等屏幕沉浸型应用,一般为休闲且稳定的操作环境,可以适当的设置一些复杂手势配合游戏中的高级操作功能,增加游戏的操作乐趣。 Clear的手势操作令人印象深刻 来源: oschina 链接: https://my.oschina.net/u