自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 MySQL数据库设计范式与反范式详解

1 第一范式该范式是为了排除 重复组 的出现,因此要求数据库的每个列的值域都由原子值组成;每个字段的值都只能是单一值。1971年埃德加·科德提出了第一范式。即表中所有字段都是不可再分的。1.1 实例重复组通常会出现在会计账上,每一笔记录可能有不定个数的值。举例来说:“数量”就是所谓的重复组了,而在这种情况下这份资料就不符合第一范式。再比如,如下联系方式是一个复合属性,就违反了该范式,在数据库中是无法分离出来的。1.2 解决方案想要消除重复组的话,只要把每笔..

2020-08-26 13:40:07 884 1

原创 数据库设计之字段冗余

学过数据库设计的同学都知道,数据库设计有三大范式,但是在实际工作中,三大范式很难被严格的执行。本文将给大家介绍一种常见的、违反范式的数据库设计方案——字段冗余1 经典示例先来看一个经典的例子,在一些商城系统里,要显示已购买的订单,一般会显示订单号、下单时间、订单金额、商品名称等,如下图。正常我们如果按三大范式来设计表,应该是下面这样,包含【订单表】和【商品表】,在【订单表】中用【商品ID】来关联【商品表】但是这样设计的话,在订单详情页面,要显示商品名称的...

2020-08-26 13:36:16 2583

原创 用Python网络爬虫获取Mikan动漫资源

【一、项目背景】[蜜柑计划 - Mikan Project] :新一代的动漫下载站。是一个专门为喜欢动漫的小伙伴们打造的动漫视频在线播放网站,为大家第一时间分享最新动漫资源,每日精选最优质的动漫推荐。【二、项目目标】实现获取动漫种子链接,并下载保存在文档。【三、涉及的库和网站】1、网址如下:https://mikanani.me/Home/Classic/{}2、涉及的库:**reques****ts、****lxml、**fake_useragent3、软件*.

2020-08-26 12:01:43 6503

原创 Linux教程:Linux下如何高效切换目录?(附视频教程)

Linux 下对于目录的切换,大家肯定会想到一个命令:cd 命令。这个是 Linux 下再基本不过的命令,如果这个命令都不知道的话,赶紧剖腹自尽去吧。cd 命令确实很方便,但如果需要频繁在下面的目录切换,你可能要怀疑人生了:/home/alvin/projects/blogdemos/linux-system-programming/thread/home/alvin/projects/blogdemos/diff/home/harry/study/日本文化/中日交流/影视业/动作片如果

2020-08-26 11:01:27 345 1

原创 Windows下Scoop安装、配置与使用

Scoop简介Scoop是Windows的命令行安装程序,是一个强大的包管理工具。可以在github上找到其项目的相关信息,项目网址。安装的起因:在平常生活中如果要安装像gcc、git等一些需要手动配置相关参数的工具,需要先去官网下载安装程序,点击安装,之后还需要配置,不仅过程麻烦,而且工具多了之后整理起来也相当不容易,配置也很杂,整个电脑就像被污染了一样。而scoop可以很好地解决这一问题,安装scoop后,只需要在命令行输入简单的一串命令即可安装你想要的软件。比如我想安装gcc,只需要输入s

2020-08-26 10:54:01 1741

原创 换一种方式编写 Spring MVC 接口

写在前面通常我们编写Spring MVC接口的范式是这样的:@RestController@RequestMapping("/v1/userinfo")public class UserInfoController { @GetMapping("/foo") public String foo() { return "felord.cn"; }}这种我都写吐了,今天换个口味,使用Spring 5新引入的函数式端点(Function...

2020-08-26 10:50:45 333

原创 小清新风车短教程:10步教你绘制一副插画

AI教程:10步教你绘制一副小清新风车插画效果图Tutorial Step:1绘制房子的基础图形,先使用矩形工具(M)绘制一个120×140PX的白色矩形,作为风车房子的基础图形。但是我们的房子是一个梯形现在只是长方形,所以我们要使用自由变换工具(E)选中图形顶部的顶点向中间移动,记住移动的数值,为了图形美观我们要确保两边变换数值一致,然后我们的梯形就完成了。图1:绘制房子基本图形Tutorial Step:2绘制风车的房顶,我们只需要在梯形顶部上绘制一个三角形就..

2020-08-26 10:46:41 473

原创 运维自救攻略:避免“锅”从天而降

开始这个话题之前,我们先来看看运维充(苦) 实 (bi) 的工作日常。不被理解的工作日常——运维是做什么的?——装系统的、修电脑的、机房电工、修电路的、扯网线的、搬服务器的……我们也不知道他在做什么,反正看上去整天忙来忙去的……其实,以上只是运维日常工作的一小部分。一般来说,当产品上线后,项目组成员去欢喜庆祝的时候,就是运维忙到飞起的时候。打扫战场、收尾工作,样样都要做;报警分析报告、系统监控数据报告,“告告”不能少。24小时提心吊胆的工作日常...

2020-08-26 10:37:10 260

原创 从几百个Excel中查找数据,用Python一分钟搞定

今天给大家分享一个真实的办公自动化需求,日常办公肯定都会遇到的,大家一定要仔细阅读需求说明,在理解需求之后即可体会Python的强大!一、需求说明首先我们来看下今天的需求,有一份档案记录总表的Excel工作簿, 每天会根据当天日期建立新表,每天的表格内包含所有档案信息,同时也有可能会添加新的档案名。同个年度的总表在年末可能会有两、三百个工作表,同时每个表中可能也存在千余份档案信息。表格形式如下(为了直观呈现本例以7个工作表和十余份档案的形式呈现)需要完成的操作:为了方便审查特定档案信息.

2020-08-25 17:26:58 4885 2

原创 这些自动化场景,批处理脚本完全可以取代 Python

一. 写在前面提到自动化解决方案,相信大部分人会想到用 Python 语言,只需要根据功能场景,编写 Python 脚本即可相反,PC 端的 Batch 批处理 似乎快被忘记了,很多人对它嗤之以鼻,认为这么古老的脚本语言貌似没什么用,Python 似乎可以取而代之相比 Python 脚本,Batch 批处理脚本在某些场景下,使用更简洁、方便、高效,即写即用,不需要依赖 Python 环境,并且可以完全摆脱打包等繁琐步骤二. 批处理基础新建批处理脚本很简单,只需要新建一个文本文件,然后修改

2020-08-25 17:16:02 447

原创 干货来了:Chrome常用快捷键整理汇总

工欲善其事,必先利其器,chrome前端调试必备工具!要想操作浏览器更有效率,我们可以试试掌握以下这些快捷键。Ctrl+N打开新窗口Ctrl+T打开新标签页Ctrl+Shift+N在隐身模式下打开新窗口Ctrl+O在 Google Chrome 浏览器中打开计算机中的文件按住 Ctrl 键的同时点击链接 或用鼠标中键(或鼠标滚轮)点击链接 从后台在新标签页中打开链接按住 Ctrl+Shift 的同时点击链接或按住 Shift 键的同时用鼠标中键(或鼠标滚轮)点击链接在新标签页中打开链

2020-08-25 17:11:13 727

原创 面试官问:我把数据库部署在Docker容器内,你觉得如何?

近2年Docker非常的火热,各位开发者恨不得把所有的应用、软件都部署在Docker容器中,但是您确定也要把数据库也部署的容器中吗?这个问题不是子虚乌有,因为在网上能够找到很多各种操作手册和视频教程,小编整理了一些数据库不适合容器化的原因供大家参考,同时也希望大家在使用时能够谨慎一点。目前为止将数据库容器化是非常不合理的,但是容器化的优点相信各位开发者都尝到了甜头,希望随着技术的发展能够更加完美的解决方案出现。Docker不适合部署数据库的7大原因1、数据安全问题不要将数据储存.

2020-08-25 15:32:53 1207

原创 5G带给我们的机会

5G回首过去,展望未来1G时代1973年,美国著名的摩托罗拉公司工程师,马丁.库帕发明世界上第部推向民用的手机,马丁.库帕从此被成为“现代手机之父”。他的第一个电话打给了尤尔·恩格尔,这个人不是别人正是他的竞争对手,库珀兴奋地用几乎颤抖的声音说道:“尤尔,我正在用一个真正的移动电话和你通话,一个真正的手提电话!”手机那头沉默了。接电话的不是别人,正是库珀长期以来的竞争对手—贝尔实验室的一名科学家尤尔·恩格尔。但是这也标志着一个新时代的开始——无线通信的诞生。1987年11月18日,第一.

2020-08-25 14:58:42 582 1

原创 内存小还要速度快,终于找到可以基于File的Cache了

一:背景1. 讲故事18年的时候在做纯内存项目的过程中遇到了这么一个问题,因为一些核心数据都是飘在内存中,所以内存空间对我们来说额外宝贵,但偏偏项目中有些数据需要缓存,比如说需要下钻的报表上的点,基于性能的考虑,不希望采用独立的缓存中间件,比如 redis, mongodb,毕竟再怎么滴还是要走网络io,但直接放在本机内存中也不现实,那有没有均衡于 native cache 和 cache server 之间的方案呢? 对的,就是 disk cache,毕竟 磁盘IO 的读写要远大于网络IO,更何况

2020-08-25 14:52:52 346 1

原创 使用 Horoscope 测试 TiDB 优化器

优化器在数据库中一直位于至关重要的位置,性能调优也常常需要围绕优化器来进行。作为数据库厂商,我们希望在各类复杂的业务场景中,TiDB 都能够给出比较理想的执行计划,因此在优化器和执行器上做了非常多的工作和努力,但是选错执行计划或者索引的情况仍然是日常中最为常见的一个问题。优化器有关的问题可以简单归结为两种:统计信息准确的情况下给出了错误的执行计划。 另一类则是在统计信息过期的情况下给错了执行计划。选错索引是其中比较常见的一种情况,用户希望添加索引来加速查询速度,某些情况下,优化器可能会走到全表扫

2020-08-24 10:24:33 259

原创 大型Kubernetes集群的资源编排优化

云原生这个词想必大家应该不陌生了,容器是云原生的重要基石,而Kubernetes经过这几年的快速迭代发展已经成为容器编排的事实标准了。越来越多的公司不论是大公司还是中小公司已经在他们的生产环境中开始使用Kubernetes, 原生Kubernetes虽然已经提供了一套非常完整的资源调度及管理方案但是在实际使用过程中还是会碰到很多问题:集群节点负载不均衡的问题 业务创建Pod资源申请不合理的问题 业务如何更快速的扩容问题 多租户资源抢占问题这些问题可能是大家在使用Kubernetes的过程中应该会

2020-08-24 10:16:07 374

原创 UI教程:工作流程指南之需求分析

从需求到产品上线,要经历多少个阶段,每个阶段有哪些应该掌握的基础知识?工作流程第一节:需求分析。UI 设计工作,包括APP 设计、网页设计、小程序设计等方面。而一个产品完整的 UI 设计流程,是指拿到一个新的项目需求后,从设计思考开始,产品前期分析,设计产品,设计评审,用户测试,直至产品上线。工作流程如下:以上的流程都是与UI设计师密切相关的内容,我们的关注点不能只有视觉效果,孤立的设计容易脱离产品,反复修改,因此前期分析与后期支持都值得我们重视。原文中推荐使用的【...

2020-08-24 09:52:45 280

原创 如何将斐波那契数列应用到排版设计中

斐波那契黄金比例数列是一组非常奇妙的数字,这种数列规律可以应用到设计、摄影、艺术创作等领域。斐波那契数列是0,1,1,2,3,5,8,13,21......从第三个数开始,每一项都等于前两项之和,接下来我们将利用这一规律制作黄金比例网格。在AI中新建画板,绘制矩形按住alt键复制矩形,CTRL+D重复操作移动矩形,按照1,1,2,3,5,8,13,21....这样的顺序依次添加参考线选中所有矩形,旋转90度选中所有矩形,旋转180...

2020-08-24 09:46:02 541

原创 不可变数据之Immutable

在讲不可变数据(Immutable Data)前,先说说可变数据(Mutable Data),在原生js中创建的数据都是可变的,如: var a = {qty:1} a.qty = 10;可能有小伙伴说,可以用const啊,const对基本数据类型还行,但对引用数据类型根本没辙,如 const a = {qty:1} a.qty = 10;​ a.qty;// 10如果把对象a赋值给其它变量还会导致新的问题,如: const a =

2020-08-24 09:42:00 470

原创 Flask - Cookie的使用

Flask - Cookie的使用用户使用浏览器第一次访问服务端时,服务端生成cookie,放在响应response里返回,并保存在用户浏览器里.from flask import Flask,make_response@app.route('/set/<name>')def set_cookie(name): response = make_response(redirect(url_for('hello'))) response.set_cookie('name',

2020-08-14 13:44:22 445

原创 搭建个人Huginn步骤

1. 安装docker2. 安装Huginndocker run -it -p 3000:3000 huginn/huginn3. 访问服务[http://docker-machine ip:3000]默认用户名/密码: admin/password微博更新自动提醒使用Weibo User Agent , uid要填写正确 , 例子里填为30分钟查询一次.{“uid”: “602949”,“access_token”: “2.00f1xxxxdfbcTwwWUD”,“app_k

2020-08-14 10:55:03 748

原创 从零开始学Python:第22课-Python标准库初探

Python语言最可爱的地方在于它的标准库和三方库实在是太丰富了,日常开发工作中的很多任务都可以通过这些标准库或者三方库直接解决。下面我们先介绍Python标准库中的一些常用模块,后面的课程中再陆陆续续为大家介绍Python常用三方库的用途和用法。base64 - Base64编解码模块Base64是一种基于64个可打印字符来表示二进制数据的方法。由于log2 64=6 ,所以Base64以6个比特(二进制位,可以表示0或1)为一个单元,每个单元对应一个可打印字符。对于3字节(24比特)的.

2020-08-13 17:48:01 174

原创 从零开始学Python:21课-函数的高级应用

在前面的一节Python课中,我们已经对函数进行了更为深入的研究,还探索了Python中的高阶函数和Lambda函数。在这些知识的基础上,这节课我们为大家分享两个和函数相关的内容,一个是装饰器,一个是函数的递归调用。整理的这俩大集合视频教程,想学习的伙伴,可以来学了!Python 900集全套视频教程:https://pan.baidu.com/s/1cU5lDWq9gh0cQ7hCnXUiGA2020最新_Python_(MySQL_SQL_Redis)数据库详解https://pan.bai

2020-08-13 17:43:51 156

原创 Python实战操作:解题之被围绕的区域

题目给定一个二维的矩阵,包含‘X’和‘O’(字母 O)。找到所有被‘X’围绕的区域,并将这些区域里所有的‘O’用‘X’填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的‘O’都不会被填充为‘X’。 任何不在边界上,或不与边界上的‘O’相连的‘O’最终都会被填充为‘X’...

2020-08-13 17:37:31 338

原创 Java面试题:之ZooKeeper篇

本期教程主要跟大家总结ZooKeeper相关的面试题;在后续,会沿着第一篇开篇的知识线路一直总结下去!ZooKeeper是什么?ZooKeeper是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。Zookeeper

2020-08-13 16:38:19 625 1

原创 kbone 高级 - 使用小程序内置组件(二)

2.5 编写系列组件2.5.1 App.vue在 src/index 下创建 App.vue 文件,内容如下:<template> <div> <ul class="tab"> <li class="tab-item" :class="{selected: wxPrefix === 0}" @click="wxPrefix = 0">wx-component 用法</li> <li class

2020-08-13 16:23:19 183

原创 kbone 高级 - 使用小程序内置组件(一)

1、用法需要明确的是,如果没有特殊需求的话,请尽量使用 html 标签来编写代码,使用内置组件时请按需使用。这是因为绝大部分内置组件外层都会被包裹一层自定义组件,如果自定义组件的实例数量达到一定量级的话,理论上是会对性能造成一定程度的影响,所以对于 view、text、image 等会被频繁使用的内置组件,如果没有特殊需求的话请直接使用 div、span、img 等 html 标签替代。部分内置组件可以直接使用 html 标签替代,比如 input 组件可以使用 input 标签替代。目前已支持的可

2020-08-13 15:57:26 920

原创 如何用PS把夏天变成冬天

如何用PS把夏天变成冬天1. 将素材图拖进PS中2.新建通道混合器调整图层,调整参数3.选择通道面板,选中RGB通道并创建选区,返回图层面板,选中通道混合器的蒙版,填充黑色4.CTRL shift alt E盖印图层5. 选择-色彩范围6. 新建图层,填充为白色,右键 设置混合选项的混合颜色带7. 新建图层,填充为黑色,滤镜-像素化-点状化8. 图像-调整-阈值9. 将图层混合模式改为滤色...

2020-08-13 15:54:47 1548

原创 做完这20道前端面试题,你定会瞬间膨胀

1、Vue框架的作者是谁?A、秦始皇B、孙悟空C、弥勒佛D、尤雨溪E、刘德华2、MongoDB底层的程序语言是:A、汉语B、C++C、英语D、日语3、你用过的最令你苦恼的浏览器是:A、IAB、IBC、ICD、IDE、IE4、下列什么命令可以在当前目录新建一个Git仓库?A、git initB、请创建一个仓库C、求求你创建一个仓库吧D、你丫快创建一个仓库!5、开发js程序需要在什么设备上完成:A、手扶拖拉机B、热水

2020-08-13 15:45:31 286

原创 面试挖坑题:之C语言底层操作问题

C语言的内存模型基本上对应了现在von Neumann(冯·诺伊曼)计算机的实际存储模型,很好的达到了对机器的映射,这是C/C++适合做底层开发的主要原因,另外,C语言适合做底层开发还有另外一个原因,那就是C语言对底层操作做了很多的的支持,提供了很多比较底层的功能。  下面结合问题分别进行阐述。  1、问题:移位操作  在运用移位操作符时,有两个问题必须要清楚:  (1)、在右移操作中,腾空位是填 0 还是符号位;  (2)、什么数可以作移位的位数。  答案与分析: .

2020-08-13 15:28:53 428

原创 Kafka与ActiveMQ的区别与联系详解

1. 背景分析消息队列这个类型的组件一直是非常重要的组件,当经过两家企业后我就很坚信这个结论了。队列这种东西,最广泛的作用还是在于解耦,宽泛一点的说,它可以将不同部门的工作内容进行有效的整合,基于一个约定好的格式,就可以两头互相不干扰的进行开发。可以说这个生产消费的思想不仅仅适用于程序也适用于非常多的地方。目前对于我看到的来说,Kafka更多的还是做为一个数据源,数据桥梁的作用,不同业务之间的沟通。比如需要实时接入A部门的业务数据的话,就会有这样的手段:落地到HDFS的数据会用来进行一些算.

2020-08-13 15:09:36 4219 1

原创 如何保证消息不被重复消费

一. 重复消息为什么会出现消息重复?消息重复的原因有两个:1.生产时消息重复,2.消费时消息重复。1.1 生产时消息重复由于生产者发送消息给MQ,在MQ确认的时候出现了网络波动,生产者没有收到确认,实际上MQ已经接收到了消息。这时候生产者就会重新发送一遍这条消息。生产者中如果消息未被确认,或确认失败,我们可以使用定时任务+(redis/db)来进行消息重试。@Component@Slf4Jpublic class SendMessage { @Autowired p

2020-08-07 17:50:04 1315

转载 让我放弃FastDFS拥抱MinIO的8个瞬间

目前可用于文件存储的网络服务选择有很多,比如阿里云OSS、七牛云、腾讯云等等,但是收费都有点小贵。为了帮公司节约成本,之前一直是使用fastDFS作为文件服务器,准确的说是图片服务器。直到我发现了MinIO,我决定放弃FastDFS。关于MinIO的使用方法,我就不说了。大家可以去看MinIO官网瞄一眼吧,非常详细。我就从对比的角度来说说我为什么果断的放弃了fastDFS,转而使用MinIO作为图片存储服务器。一:安装部署(运维)复杂度之前公司在使用fastDFS的时候,只有少数的几个人能够掌握fa

2020-08-07 17:47:49 3413

原创 面试官写了个双冒号::问我是什么语法,Java中有这玩意么?

一:简洁方法引用分为三种,方法引用通过一对双冒号:: 来表示,方法引用是一种函数式接口的另一种书写方式静态方法引用,通过类名::静态方法名, 如 Integer::parseInt 实例方法引用,通过实例对象::实例方法,如 str::substring 构造方法引用,通过类名::new, 如 User::new二:方法引用public final class Integer { public static int parseInt(String s) throws Number

2020-08-07 17:43:47 198

原创 敏捷开发竟也有仪式感?

敏捷开发中也存在这种仪式感,如用户故事中角色、活动、商业价值三要素,敏捷扑克牌估算工时,迭代计划需求优先级排序,每日站立会议,功能演示,代码评审,回顾会议等流程都遵循了一定的仪式。具体的敏捷中的仪式感有以下表现:最大程度可视化敏捷借鉴精益的可视化管理理念,形成了具有自己独特风格的可视化管理工具——看板。看板是敏捷开发中保证软件的持续集成,并不让开发团队超负荷的可视化工具。在敏捷项目中,团队成员通过物理移动卡片来表示任务的状态和进度,强化任务开始和结束的仪式感。敏捷估算在迭代开始前,会对迭代中

2020-08-07 17:38:39 208

原创 越来越多的非计算机领域企业,在自主做软件选用快速开发工具

在这十几二十年间,我国的互联网的普及和建设的速度之快,大家都有目共睹。尤其近两年5G技术的成熟与普及,已然将人类文明的科技树提升到前所未有的新高度。甚至在计算机产业、工业、制造业,乃至于整个社会的各行各业中都出现一种声音,那就是以第五代网络通信技术为代表的现代互联网科技,已经正式将我们推入到第五次工业革命的浪潮之中。早在民用互联网初普及时,就已经有诸多知名企业,开始利用互联网的快捷与便利来帮助企业运作与经营。具体表现在以在包括但不限于,线办公系统、企业资源计划系统、客户关系管理系统、人力..

2020-08-07 17:29:42 214

原创 如何查看Docker容器环境变量,如何向容器传递环境变量

1写在前面了解Docker容器的运行环境非常重要,我们把应用放在容器里执行,环境变量会直接影响程序的执行效果。所以我们要知道容器内部的环境变量,也要知道如何改变这些环境变量。2 查看环境变量2.1 方式一:docker inspect通过docker inspect命令不仅能查看环境变量,还能查看容器其它相关信息,非常丰富,以Json格式输出。$ docker inspect centos截取片段来看看:可读性还可以,但也不算很高,可以通过grep命令过滤一下:.

2020-08-07 17:21:56 7251

原创 小程序制作平台或公司,如何选择呢?

小程序自从开发出来,就受到了很多人的关注,随着时间的流逝,小程序的种类也越来越多,许多人都觉得微信的小程序比较好用,而且是特别方便,容易进入,省去了下载安装关注卸载等这些繁杂的流程,因此很多企业都想要开发一款小程序帮助企业扩大销售渠道,企业在开发小程序之前都会选择一个小程序制作平台帮忙开发,那么小程序制作平台该怎么选择呢?1、看平台口碑小程序开发平台的口碑选择很重要,没有口碑的小程序开发就没有质量保证,小程序制作是有专业的技术团队的,目前这方面存在着强大的商业契机,所以团队也是比较多的,那.

2020-08-07 17:15:27 370

原创 开发Web应用为什么要用TypeScript?

一、什么是 TypeScriptTypeScript 是近几年被火爆的应用了,这让大家产生了一个错觉:这么多的拥护者,难道TypeScript是一个新的语言?TypeScript是微软公司开发和维护的一种面向对象的编程语言。它是JavaScript的超集,包含其所有元素。TypeScript完全遵循OOPS的概念,在TSC(TypeScript编译器)的帮助下,我们可以将TypeScript代码(.ts文件)转换成JavaScript(.js文件)TypeScript是JavaS.

2020-08-04 16:23:14 438

原创 交互设计—奥卡姆剃刀原理(附教程)

“奥卡姆剃刀原则”又被称为“简单有效原则”。我们常听到的“如无必要,勿增实体“指的就是奥卡姆剃刀原则。奥卡姆剃刀的含义,就是指一些不必要的元素会降低设计的效率,而且增加不可预测后果的发生概率。不管是实体、视觉或认知上,多余的负担都会削弱表现效能。多余的设计元素,有可能造成失败或其他问题。这个法则可以理解成去除设计中多余的元素,去除”解决方案的杂质,让最后的设计会更严谨、更纯粹。要在多项功能相当的设计中进行衡量、选择,可采用奥卡姆剃刀法则。比如我们产出了三个设计方案,我们在进行最后的设计评估的时候可以

2020-08-04 16:08:09 1166

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除