Web交互设计优化的简易Check list
“优化已有产品的体验”,这是用户体验相关岗位职责中常见的描述。我们的产品常常是在快速的迭代过程中不断完善的,就像孩子生下来需要养育才能长大一样,优化已有功能/产品,和设计新功能/产品同样重要,不可偏废。 但是,相比实现新功能,已有功能的优化总是显得没有那么紧迫而且很零散,导致了迭代优化的计划总是被归入“重要不紧急”甚至是“不重要不紧急”的象限,变成了东一棒子西一榔锤的买卖。我们可以通过可用性测试来发...
精选技术长文、实践记录与系统化阅读
低噪声、高可扫读;标题、摘要、来源、标签一目了然。
采集自各技术站点的近期文章。
“优化已有产品的体验”,这是用户体验相关岗位职责中常见的描述。我们的产品常常是在快速的迭代过程中不断完善的,就像孩子生下来需要养育才能长大一样,优化已有功能/产品,和设计新功能/产品同样重要,不可偏废。 但是,相比实现新功能,已有功能的优化总是显得没有那么紧迫而且很零散,导致了迭代优化的计划总是被归入“重要不紧急”甚至是“不重要不紧急”的象限,变成了东一棒子西一榔锤的买卖。我们可以通过可用性测试来发...
Lee Sallows 最近做了一个网站,收集了很多在几何意义上也成立的幻方,集数学与艺术于一体,为传统意义的幻方赋予了新的生命。大家来欣赏一下吧。 这是一个幻方,它由九块积木组成。这些积木所含的小方格数恰好是从 2 到 18 的偶数,每行每列和两对角线上的方格总数都是 30 。 牛 B 的是,每条线上的三块积木正好也都能拼成一个 6 × 5 的矩形。 与上图类似的一个几何幻方,不过明显更帅一些。
假设我们正在运营一个手机相关的网站,用户可以通过指定若干参数(如操作系统,屏幕分辨率,摄像头像素等等)来筛选自己想要的手机。不过由于手机的参数多,且不同的手机其参数差异大,所以参数表结构通常是纵表(一个参数是一行),而不是横表(一个参数是一列),此时使用若干参数来取结果,通常就是把每个单独参数来取结果,再一起取交集。
经常有公司问这样的面试题. 这个问题非常基础,很多面试的人,都知道String对象是不可变的,在说原因的时候没说清,其实看看String源码就知道了 在new String的时候,String 中的3个成员变量value,count,offset都是final的,当然String类也是final的,所以一旦初始化后不能修改的。 StringBuffer,与StringBuilder都实现了相同的接口,而且都继承相同的父类,不同的是,StringBuffer的大部分方法都是同步的,所以是线程安全,Str...
我们的服务框架已经持续做了三年了,在厂内广泛的使用,目前部署在服务框架上的服务为2k+,每天经过服务框架的服务执行次数为120亿+,摸高到150亿+,三年的发展并非一帆风顺,由于经验的原因,还是摔了不少跤的,在这篇blog中,来给大家分享下,希望能够给要做服务框架或服务化的同学带来一些帮助,少走一些弯路,不一定要一开始就做成完整的服务框架,但至少先做好铺垫,避免在广泛使用后再来挽救。
很多时候在online的应用出现问题时,很多时候我们需要知道更多的程序的运行细节,但又不可能在开发的时候就把程序中所有的运行细节都打印到日志上,通常这个时候能采取的就是修改代码,重新部署,然后再观察,但这种方法对于online应用来说不是很好,另外一方面如果碰到不好改的代码,例如引用的其他的外部的包什么的,就很麻烦了,BTrace就是一个可以在不改代码、不重启应用的情况下,动态的查看程序运行细节的工具,其官方网站在...
产品发展越快,对代码的管理也就需要越严格。通常代码在进入QA测试环节前就要进行代码review。review的目的倒不是为了发现bug,主要是为了避免代码设计上的缺陷和保证代码的可维护性。当然还有针对性的review比如安全性、性能、易用性等等。代码review除了可以提高代码的品质外,还能加强团队的协作精神,以及提高团队的整体技术能力。显然这是一件非常有意义的事。
1 hbase简介 2 hbase逻辑视图 3 hbase物理存储 4 hbase系统架构 5 hbase关键流程和算法 6 hbase接口结语
SIM卡背面的20位数字所代表的含义如下: 前6位:898600中国移动;898601中国联通;898603联通133 第7位:业务接入号,对应于134、135、136、137、138、139中的4、5、6、7、8、9; 第8位:SIM卡的功能位:一般为0,现在的预付费SIM卡为1; 第9、10位:各省的编码; 第11、12位:年号; 第13位:供应商代码; 第14―19位:用户识别码; 第20位:校验位。 中国移动: 如8986 00 79 09 04 4 9...
NOSQL系统一般都会宣传一个特性,那就是性能好,然后为什么呢?关系型数据库发展了这么多年,各种优化工作已经做得很深了,NOSQL系统一般都是吸收关系型数据库的技术,然后,到底是什么因素束缚了关系型数据库的性能呢?我们从系统设计的角度看这个问题。
Key-Value系统只需要支持简单的随机读(Get),写(Put)和删除(Del)操作。由于磁盘是顺序存储介质,因此可以往数据文件追加Key-Value记录并在内存中存放记录所在的磁盘位置,即索引信息。由于对同一个Key的更新(Put)操作以最后一个为准,内存中的索引只需要记录最新的Key-Value对位置即可,而对于删除操作,也是往数据文件追加一个删除记录。由于内存的大小有限,需要尽可能减小索引记录的大小,比如只支持64位的整数Key(其它类型的K...
单机存储引擎解决单机读写问题,Merge-Dump存储引擎设计成一种通用的存储引擎,同时支持数据写入,随机读取和顺序扫描功能。顺序扫描功能应用很广,比如MapReduce批处理,同一个广告主的所有关键词广告统计,用户浏览所有的收藏信息,淘宝卖家管理大量的商品等。简单的KV系统只需要支持随机读取,而类似Bigtable这样的通用表格系统需要考虑基于主键的顺序扫描功能。
OSDI 10中有一篇Facebook图片存储系统Haystack的论文,名称为”Finding a needle in Haystack: Facebook’s photo storage”。从这篇论文可以看出,数据量大的应用有时也并不复杂。 我们先给Facebook图片存储系统算一笔账。Facebook目前存储了260 billion图片,总大小为20PB,通过计算可以得出每张图片的平均大小为20PB / 260GB,约为800KB。用户每周新增图片数为1 billion (总大小为60TB),平均每秒钟新增的图片数...
我们正在开发的类数据库系统有一个内存模块,出现了一个疑似”内存泄露”问题,现象如下:内存模块的内存释放以后没有归还操作系统,比如内存模块占用的内存为10GB,释放内存以后,通过TOP命令或者/proc/pid/status查看占用的内存有时仍然为10G,有时为5G,有时为3G, etc,内存释放的行为不确定。 首先说一下内存模块的内存管理机制。我们的内存管理很简单,使用全局的定长内存池,每一个内存块为64KB,如果申请的内存小...
检测一台机器是否宕机的应用场景如下: 1, 工作机器宕机,总控节点需要能够检测到并且将原有服务迁移到集群中的其它节点。 2, 总控节点宕机,总控节点的备份节点(一般称为Slave)需要能够检测到并替换成主节点继续对外服务。 检测一台机器是否宕机必须是可靠的。在大规模集群中,机器可能出现各种异常,比如停电,磁盘故障,过于繁忙导致假死等。对于机器假死,如果总控节点认为机器宕机并将服务迁移到其它节点,假死的机器又认为...
这季度学习java nio及其相关的内容和框架,所以就想先看看Unix下的一些IO模型。结合网络上的资料进行学习,自己也写篇日志,加强一下理解吧。 POSIX中对同步IO和异步IO的规定: 同步IO操作:引起进程的阻塞直到IO操作完成 异步IO操作:IO操作不会引起进程阻塞 在UNIX下,有5中操作模型: 阻塞IO 非阻塞IO IO复用 信号驱动IO 异步IO 按照网络上的说法,前四种是属于同步IO,第五种才属于异步IO,对于这个结论,我的理解是根据用户进...
Java在运行时,可以根据声明周期大致把内存分为两部分:与JVM声明周期一致的内存,与线程生命周期一致的内存。根据Java虚拟机规范第二版,Java在运行时内存可以分为以下6个部分:PC计数器,栈,堆,方法区,运行时常量池,本地方法栈 。
分布式文件系统很多,包括GFS,HDFS,淘宝开源的TFS,Tencent用于相册存储的TFS (Tencent FS,为了便于区别,后续称为QFS),以及Facebook Haystack。其中,TFS,QFS以及Haystack需要解决的问题以及架构都很类似,这三个文件系统称为Blob FS (Blob File System)。本文从分布式架构的角度对三种典型的文件系统进行对比。 我们先看GFS和HDFS。HDFS基本可以认为是GFS的一个简化版实现,二者因此有很多相似之处。
httpd在linux下默认使用prefork, 我们网站的服务器,在编译httpd的时候,就指定了使用worker模式。 简单了解 worker模式与 prefork模式 worker : httpd在启动的时候,会由root进程派生出几个子进程,每个子进程中会有固定数量的线程,到时候提供服务的,就是这些线程,也就是说一个进程能够同时提供多次服务。 prefork : httpd使用进程来提供服务,每个进程在同一时间提供一次服务。 worker 参数配置 由于我比较关注 worker 模式...
SQL Azure简介 SQL Azure是Azure存储平台的逻辑数据库,物理数据库仍然是SQL Server。一个物理的SQL Server被分成多个逻辑分片(partition),每一个分片成为一个SQL Azure实例,在分布式系统中也经常被称作子表(tablet)。和大多数分布式存储系统一样,SQL Azure的数据存储三个副本,同一个时刻一个副本为Primary,提供读写服务,其它副本为Secondary,可以提供最终一致性的读服务。每一个SQL Azure实例的允许的最大数据量可以为1GB...