Navigation

    云、贵、川、渝IT人的圈子
    • Register
    • Login
    • Search
    • 主页
    • 问答
    • 话题
    • 热门
    • 圈子
    • 招聘
    • 活动
    • 项目
    1. Home
    2. 帝国文明
    帝
    • Profile
    • Following 1
    • Followers 0
    • Topics 72
    • Posts 79
    • Best 0
    • Groups 0

    帝国文明

    @帝国文明

    0
    Reputation
    5
    Profile views
    79
    Posts
    0
    Followers
    1
    Following
    Joined Last Online

    帝国文明 Follow

    Latest posts made by 帝国文明

    • 滴滴系统崩溃反映出软件测试工程师的重要地位

      早上,正是一个人们出行的高峰季。结果,出现滴滴打车APP崩溃。今天想说的不是滴滴崩溃的原因,而是想通过这件事告诉大家,在软件公司有一个重要的职业,叫软件测试。 在没有发生这件事之前呢,我们一提到软件呢,都会和软件开发工程师划对等。其实还有一个和他同等重要的职业,那就是软件测试工程师。我们来以软件测试的角度来分析如何避免这次事件的发生。 首先,出现上面的问题,第一种情况就是有新版本上线。 那么要如何保证新版本上线的质量呢?其实只需要需求评审。需求会议评审的最根本有以下几个目的:第一,评审需求中产品设计的功能中有问题的地方,和没有量化的地方,比如功能设计的字段的类型和限制长度,规则等等。第二,评审需求中有问题的地方我们肯定都要推动产品进行修改最终达成一致。第三,我强调为什么要量化,只有量化之后,测试才能后期的用例编写,开发才能进行一些程序设计包括数据库设计。 第二种,就是大用户量的涌入导致服务器瘫痪。 毕竟,作为滴滴这样的企业,在上线之前应该会做过各种并发场景的验证,比如:主要业务功能的压测,甚至对于这样的大型企业,会有全链路的压测技术以及相应的流量回放机制作为上线前性能的保证。 对于上线的过程中,滴滴也有一套完整的保障措施,新功能在上线的过程中会采取如下的一些措施功能的定向投放;灰度发布:当然,在滴滴这样的大型互联网公司,灰度发布的规则也不会像传统企业那样简单,有可能采取根据用户和地域等分布的情况进行逐级发布,最后由小及大,最终达到一个全流量发布; AB测试:当然,对于互联网公司的一个最大的特质就是思想open,经常会有不同的方案产生,很多方案不知道那个更优化,带来的转化率,PV,UV等指标更优化的提升,这时候往往采取的AB测试。829a30ed-22d4-4d6d-b8cc-965ad21af5a0-image.png

      posted in 极客生涯
      帝
      帝国文明
    • #跨越异构鸿沟,Redis应用而生

      #跨越异构鸿沟,Redis应用而生
      随着云计算十余年的高速发展,作为目前可见的最新阶段,多云正在快步大踏步前进。而多云趋势所带来得数据云间迁移,也逐步常态化。因此,缓存 Redis 已成为高并发场景下提升数据访问速度的标配。 不仅是数据云间迁移,目前大型系统对于缓存强依赖,致使大多数企业都会面临大量并发读写数据时访问速度慢、数据库压力大,以及缓存数据不⾜带来的缓存击穿及雪崩⻛险。其中,Redis 就起到了降低数据库压力,提升数据访问速度的作用。 RedisSyncer 是京东云用于在 redis 之间数据同步的产品,支持跨版本、异构集群间的数据同步。它模拟了redis的replication协议,在rdb版本不⼀致时进⾏命令转换,以实现跨rdb版本迁移,并通过缓存value的⽅式完成INCR、INCRBY、DECR、DECRBY等⾮命令的幂等转换。最终适应云上与云下、原生与托管等多种场景,能够快速灵活地满足用户的同步、迁移、扩容的需求。8510a886-f97a-41f8-a920-1aac1714de3d-image.png

      posted in 极客生涯
      帝
      帝国文明
    • 一个简单web容器的设计和实现

      我们只需要提供三个最基本的类,分别是: Request - 表示请求,这里表示浏览器发起的HTTP请求 HttpServer - 表示处理请求的服务器,同时这里使用我们上面铺垫的ServerSocket Reponse - 表示处理请求后的响应, 这里表示服务器对HTTP请求的响应结果。从图中我们可以看到,组织这几个类的入口在Server的启动方法中,即main方法中, 所以我们透过main方法从Server类进行分析。 当我们run上面HttpServer中的main方法之后,我们就可以打开浏览器http://localhost:8080, 后面添加参数看返回webroot目录中静态文件的内容了。 链接接收器:主要的职责就是监听是否有客户端套接字连接并接收socket,再将socket交由任务执行器(线程池)执行。不断从系统底层读取socket,做尽可能少的处理,再扔进线程池。为什么强调要做尽可能少的处理?这里关系到系统性能问题,过多的处理会严重影响吞吐量。因为一般只有一个接收器(一条线程负责套接字接收工作),所以它对每次接收处理的时间长短将很可能对整体性能产生影响。于是接收器所干的活都是非常少且简单的,仅仅维护了几个状态变量、流量控制闸门的累加操作、serverSocket的接收操作、设置接收到的socket的一些属性、将接收到的socket放入线程池以及一些异常处理。其他需要较长时间处理的逻辑就交给了线程池,例如对socket底层数据的读取,对http协议报文的解析及响应客户端的一些操作等等。 套接字工厂:不同的使用场合可能需要不同的安全级别,例如在支付相关的交易就必须对信息加密后再发送,这其中还涉及到密钥协商的过程,而在另外一些普通场合则无需对报文加密。反应到应用层则是使用http与https的问题。 简单讲TLS\SSL协议给每次通信①提供认证服务,认证本次会话实体身份的合法性。②提供加密服务,强加密机制能保证通信过程中的消息不会被破译。③提供防篡改服务,利用Hash算法对消息进行签名,通过验证签名保证通信内容不被篡改。 http协议对应Socket,而https则对应SSLSocket。如何生成Socket及SSLSocket则交由套接字工厂。8c019c8b-a3ff-40c3-b716-2d1ba540dd6e-image.png

      posted in 极客生涯
      帝
      帝国文明
    • 了解并总结es6

      ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015)。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 另外,一些情况下ES6也泛指ES2015及之后的新增特性,虽然之后的版本应当称为ES7、ES8等。 在es6之前都是以版本号递增的,由于从2015年起修改方案,每年6年发布一版稳定版,以当年年份命名,所以2015年发布的一版以es2015命名,且这一版做了特别大的改动,在以前的版本号命名就是es6,所以把2015年之后的版本统称es6,其实每年的改动都有自己的版本命名es2016、es2017 但都是在2015的基础上,做小范围的改动。 let和const特性:不存在变量提升;暂时性死区;不允许重复声明;块级作用域的好处;防止内层变量覆盖全局变量;用来计数的循环变量泄露为全局变量;解构赋值。 只要某种数据结构具有Iterator接口,都可以采用数组形式的解构赋值,属于一种模式匹配。默认值使用严格相等运算符,只能将undefine的值进行默认值赋 如果默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候,才会求值。字符串解构赋值会将字符串先转化成类似数组的对象。布尔值和数字解构赋值会将其转化成对象类型。ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。 ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。下面代码在代码块之中,分别用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。7284fa85-3f75-4ef3-85c3-cfc386112c3b-image.png

      posted in 极客生涯
      帝
      帝国文明
    • 让设计创造价值的六要素

      第一流程的定义和组成要素。流程是“工作流转过程”的简称,工作的推进需要多个部门、多个岗位的参与和配合,这些部门、岗位之间会有工作的承接、流转,因此流程也可以说是“跨部门、跨岗位工作流转的过程”。 第二流程管理的六要素。输入资源:前期输入的资源是流程运作的不可或缺的组成部分,在流程运作中这些资源可以被有序有效地消耗、利用、转化,并最终对流程产出产生影响。流程活动:在一条流程中,会包含一项或多项活动,这是满足客户需求所必须进行的相关活动,这些活动对于流程输出是核心的、关键的、不可缺失的、有增值效果的 。相互作用:流程中的活动可能由不同的职能部门实现,活动执行有串行或并行的关系,活动输入和输出上下衔接,这些相互作用构成了流程的结构。 流程客户:流程客户是流程输出结果的最终消费者,这些客户可以是外部市场客户,也可以是组织内部客户。在设计流程时一定要明确流程的客户是谁,仔细把握客户需求,这样设计出的流程才有义。输出结果:流程输出结果可能是有形或无形资产,同一个流程中可能有几种不同的输出,对应着不同的客户需求,设计的流程要以主要客户的关键需求为主,这样的流程才能达到期望的效果。创造价值:流程的输出要承载着流程的价值,这个价值需要有客户进行判断,看产出与客户需求是否吻合。 第三流程管理的目的和价值。流程的目的是增值,也就是说流程的每一个循环都有必要比前一个循环更好。要把“流程”作为管理对象,就要利用一条“流转的线”,把流程基本的六个要素好好地串联起来,然后通过这条线,也就是这条流程周而复始地高效循环,使企业价值不断得到提升。 第四面向流程的企业管理模式。业务需要跨部门、跨岗位的流转协同工作,流程顺畅,会使业务运作加快,公司效率提升,进而提升盈利能力。很多经理人会抱怨公司部门协调困难,责任推诿,这种情况下流程运作也会遇到严重问题。 第五基于六要素设计业务流程。做流程设计,首先要明确流程的客户是谁,流程给客户创造的价值是什么。然后需要注重流程的输出是什么,流程的输出应该承载着流程的价值,并且这些价值需要让客户可感知。 第六在设计流程时,流程的六要素是比具体流程图更为优先考虑的东西,是一个流程的基本骨架。流程的活动配置需要减少一切不必要的非增值环节,提高流程的质量和效率,使流程路径最短、效率最高、价值创造最大。f8a7a367-4f34-45f8-be0e-2e78f3f1f42c-image.png

      posted in 极客生涯
      帝
      帝国文明
    • 如何进行ASO优化

      ASO是“应用商店优化”的简称。ASO(App store Optimization)就是提升你APP在各类APP应用商店/市场排行榜和搜索结果排名的过程。类似普通网站针对搜索引擎的优化,即SEO(Search Engine Optimization)优化。 ASO优化就是利用App Store的搜索规则和排名规则让APP更容易被用户搜索或看到。通常我们说的ASO就是App Store中的关键词优化排名。重点在于关键词搜索排名优化。 ASO大致有两种方法:Keyword Optimization(包含:选词、词排名、转化率)和Asset Optimization即app其它属性的优化(图标、截图、描述等,通过a/b测试)。 第一点是搜索引擎的问题:本质是信息检索系统、更好地满足用户查找信息的需求;搜索引擎在很多场景下面成为信息的入口,让人更方便地找到想要的东西;通过更好的排序来解决(相关性、权威性、时效性、丰富性、多样性);任何搜索引擎都都有优化空间,不论从外部或者内部,有些搜索引擎优化空间大,有些空间有限。 第二点是影响Appstore搜索排序的主要因素及主要优化方式:关键词匹配、下载量+近期下载量、搜索关键词后的下载app(点击调权)、其它因子;目前能做的优化:关键词上面的优化(标题+100字关键词):标题权重大于关键词,做好品牌词及相关扩展,重点关注热门相关特征词,适当做一些热门相关其它品牌词。 优化的几个主要途径:利用自身渠道或者外部流量渠道给产品详情页导量以增加基础权重;利用积分墙任务带来真实用户的搜索下载量提升排名;利用机刷操作快速提升热门关键词排名。 产品层面的优化主要是指优化关键词的权重(即关键词的排名)。就目前可优化的内容而言,主要包括 App Title/ Keywords/App Description /IAP item Name/Description 。

      本文地址: http://www.woshipm.com/operate/373831.html12ccf919-82df-4086-88f7-bd4d5c0e0495-image.png

      posted in 极客生涯
      帝
      帝国文明
    • ApacheECharts更方便方式创造可视化作品

      数据可视化在过去的几年中得到了长足的发展。开发者对于可视化产品的期待不再是简单的图表创建工具,而在交互、性能、数据处理等方面有了更高级的需求。 “表·达”是 Apache ECharts 5 的核心,通过五大模块、十五项特性的全面升级,围绕可视化作品的叙事表达能力,让图“表”更能传“达”数据背后的故事,帮助开发者更轻松地创造满足各种场景需求的可视化作品。 Apache ECharts 5 新增支持动态排序柱状图(bar-racing)以及动态排序折线图(line-racing),帮助开发者方便地创建带有时序性的图表,展现数据随在时间维度上的变化,讲述数据的演变过程。 除了动态排序图,Apache ECharts 5 在自定义系列中提供了更加丰富强大的动画效果,支持标签数值文本的插值动画,图形的形变(morph)、分裂(combine)、合并(separate)等效果的过渡动画。 视觉设计的作用并不仅仅是为了让图表更好看,更重要的是,符合可视化原理的设计可以帮用户更快速地理解图表想表达的内容,并且尽可能消除不良设计带来的误解。 标签是图表中的核心元素之一,清晰而明确的标签可以帮助用户对数据有更准确的理解。Apache ECharts 5 提供了多种新的标签功能,让密集的标签能清晰显示、准确表意。 Apache ECharts 5 可以通过一个配置项开启自动隐藏重叠的标签。对于超出显示区域的标签,可以选择自动截断或者换行。密集的饼图标签,现在有了更美观的自动排布。 Apache ECharts 5 带来了适于表达时间标签刻度的时间轴。时间轴的默认设计更突出重要的信息,并且提供了更灵活的定制化能力,让开发者根据不同的需求定制时间轴的标签内容。b0a7d414-1122-420a-8899-c728c39f104a-image.png

      posted in 极客生涯
      帝
      帝国文明
    • 开源分布式应用程序协调服务Zookeeper

      ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所连接的zookeeper机器来处理。 对于写请求,这些请求会同时发给其他zookeeper机器并且达成一致后,请求才会返回成功。因此,随着zookeeper的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。 有序性是zookeeper中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一个唯一的时间戳,这个时间戳称为zxid(Zookeeper Transaction Id)。而读请求只会相对于更新有序,也就是读请求的返回结果中会带有这个zookeeper最新的zxid。 在 ZooKeeper 集群中将服务器分成 Leader 、Follow 、Observer 三种角色服务器,在集群运行期间这三种服务器所负责的工作各不相同。 Zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。 Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。替代文字

      posted in 极客生涯
      帝
      帝国文明
    • 做运维需要具备哪些的核心能力

      最核心也是最重要的一点:运维人员必须具备运维思想;学高数的大学生都需要具备数学思维,更何况运维呢。运维人员还是管理、制度、规范、流程的制定和推行、监督角色。 运维的核心是运维思想,非运维技术本身。 运维流程、运维规范、运维制度、自动化、智能化、批量部署、批量管理、网站架构优化、监控预警、流量及日志分析统计、成本控制才是真正的运维人员需要做的。运维的宗旨:保护数据安全、7*24小时网络稳定、用户体验良好。 运维人员必须对即将面对威胁要特别清楚。IT部门就需要有一套完善的并可管理的IT服务流程,对IT运维进行有效地管理、使信息系统更加适应业务持续变化的需求、使IT部门从成本中心转变为利润中心。当现代企业建立完善而成熟的IT运维管理体制后,通过流程管理,不断提高IT运维质量,实现高效运维,提升组织内IT服务满意度。 运维人员必须具备故障管理及库管理的能力和过硬的专业技能。这是运维人员所具备的最基本的能力。故障管理,通过系统预定义好的故障情况,准确定位故障的级别,并通过多样的告警方法将故障信息派发给直接负责人员,避免故障的无法及时处理和是否升级的判定。 提供问题库的管理,管理人员可以把在运维过程中遇到的无法解决的问题录入到知识库中,让系统对相关的问题进行分配,让对应职位的人员进行处理。同时提出人还可以对问题进行跟踪,这样就不会让提出的问题石沉大海。 知识库管理:用来记录系统故障情况及维修记录的;用来帮助管理员排查系统故障的工具; 用来给管理员提供问题的处理办法的;用来给管理员提供运维经验。 预案库管理:提供预案库管理,管理人员可以让对相关事件有过处理经验的人员就相关的情况编写一份处理预案,当不熟悉这个事件处理流程的人员进行处理时有据可以。同时极大的缩短了人员培训的时间,也帮企业节约了成本。4e50ced8-fd1c-422d-a6b2-5d222ed48d89-image.png

      posted in 极客生涯
      帝
      帝国文明
    • 简单易用的产品设计方法论

      “简单易用”,无论是每本和产品设计有关的经典书籍,或是产品大拿的经验总结里,毫无疑问都是一个核心的关键词。 我们系统学习理论,当然是希望应用这些高度抽象和提炼出来知识,但在实际工作中,在产品原型设计阶段的操作上,如何将这些高屋建瓴的理论运用到实际工作中,却存在一定的门槛。本质上,如果我们把产品经理看做是这些理论的用户,那对于产品经理来说,这些讲“简单易用”的理论,在实践经验还有所欠缺的产品经理看来,要把这些理论扎实落实到实践中,避免犯一些基本的错误,反而不是那么“简单易用”了,而是需要每一个产品经理在不断的实践中去摸索的。 本文的目标,就是试图总结一些简单易懂、方便操作的方法和步骤,能将上述人机交互学的理论快速贯彻到具体的产品设计上。我在这里以APP的设计为例,列举出对APP进行设计时,确保产品易用性的五个系统化的方法,每一个方法包含2-3个步骤,以期对大家的实际操作有所帮助。 第一步:选项最少化检查;这个方法对应的是交互设计原则里的“删除”和“隐藏”。第二步:可辨识和可理解检查;经过了第一步之后,我们已经确保每一层级的选项数量是在贴合产品业务逻辑上的最少化了,也就是剩下的选项就是本层级所必须的了。那么对用户来说,这时候易用性的体现,就是这些存在下来的选项,是否能够一眼就看出区别,并迅速理解其含义。 对每一个层级的选项,进行数量最少化、可辨识和可理解的检查。对每一个内容性的页面,进行重点内容是否突出、是否可理解和可辨识的检查。对每一个功能性页面,进行重点操作是否突出、操作结果是否明确、操作门槛是否足够低的检查。b071076a-984e-4ba5-a705-577def16e47e-image.png

      posted in 极客生涯
      帝
      帝国文明