天下武功,无坚不摧,唯快不破!所以我们重视速度没毛病!

老话说:不要过早优化。赞同!

我们在写代码过程中,有时可能就是为了追求所谓的性能,然后,就给自己挖坑了。

关于开发速度,我有以下几点思考:

1. 程序运行速度的思考:不能只为了速度而丢弃了:扩展性,高内聚性,低耦合性;还要站在更高层次来考虑问题,比如易于理解,易于维护,分层架构,功能扩展;

2. 开发速度的思考:快速开始是好事,但不要在想清楚之前就开始。开发未动,流程图(系分)先行;

3. 产品迭代速度的思考:在不确定的事情之前,先反复思考产品价值,如果觉得ok,那就去做,但是一定要快。快速试错,快速修改,允许有稍微bug上线,但是一定要有反馈机制;做到快而有序,机动有余;

4. 关于性能优化速度的思考:性能优化是个长期的事,切莫求快,一定求稳,反复测试,反复评估,带回滚机制,然后再上线;

代码速度:

1. 去纠结使用 if 不是 switch, 去纠结 ;

2. 在代码清晰性面前,不在乎多一两层嵌套;

3. 将相乘需要变成位移动;

4. 不在乎使用代理;

5. 不在乎多引入几个必要依赖包;

6. 不在乎多几个单元测试;

7. 不在乎多几个配置变量;

8. 不在乎多开几个后台维护线程;

9. 不在乎因功能内聚导致的层层调用;

10. 不在乎为可伸缩做的多余工作;

11. 不在乎由于服务拆分导致的网络开销;

12. 不在乎为统一外部调用多一层的封装;

13. 推荐书箱:《effective java》,《重构改善既有代码的设计》

开发速度的思考:

1. 不要一味想快;

2. 系统架构先行;

3. 架构依赖于现有需求及未来可能的发展规划;

4. 依据需求,做好模块划分;

5. 每个模块做好相应流程图(系分);

6. 写真正代码前,先写测试用例,做好结果预期;

7. 尽快提供统一稳定的对外接口,不要沉溺内部逻辑;

8. 来不及更改的地方,打上todo标签,待外部环境稍稳定后,再回来赶紧修复内部问题;

9. 多做单元测试;

10. 多观察真实测试结果,及是否存在报错,在黑盒外测试,在白盒里看问题;

11. 最后关注性能问题;

12. 推荐书籍:《head first 设计模式》,《大型网站架构设计》

产品迭代速度的思考:

1. 定位好解决的问题,定位好客户群体;

2. 以问题为核心,关注点集中,快速上线,市场验证;

3. 观察效果,尽可能接近真实用户,发现问题,快速修复;

4. 跟进后续突破的点,快速迭代;

5. 继续观察产品效果,改进;

6. 发现细微的点,发现用户潜在的点,为其解决问题;

7. 减慢产品速度,开拓新市场;

关于性能优化速度的思考:

1. 别想一次就把性能优化做好;

2. 审阅代码;

3. 压测,记录结果;

4. 发现性能瓶颈点,想办法优化掉;

5. 继续压,记录结果;

6. 再发现瓶颈点,再优化;

7. 时刻关注cpu,内存,网络;(磁盘次之)

8. 针对某些业务场景,做降级策略备用;

9. 压测,记录结果;

10. 性能监控要跟上;

11. 回滚方案需有数;

12. 优化工具:jmx,jmeter,sonar,grafana,

唠叨: 凡事没有看起来那么简单。

Think in Speed (关于速度的一点思考)的更多相关文章

  1. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  2. 关于java异常的一点思考

    关于异常的一点思考 异常生命周期 异常的来源 所有的异常都是抛出来的 有底层api抛出的 有自定义抛出的 异常的处理 1, 运行时异常 不做任何处理仍可编译通过 不建议捕获(不建议用异常来做流程控制, ...

  3. MSSQL显错注入爆数字型数据的一点思考

    Title:MSSQL显错注入爆数字型数据的一点思考 --2011-02-22 15:23 MSSQL+ASP 最近在弄个站点,密码是纯数字的,convert(int,())转换出来不报错,也不知道其 ...

  4. 对dump脱壳的一点思考

    对dump脱壳的一点思考 偶然翻了一下手机日历,原来今天是夏至啊,时间过的真快.ISCC的比赛已经持续了2个多月了,我也跟着比赛的那些题目学了2个月.......虽然过程很辛苦,但感觉还是很幸运的,能 ...

  5. 关于linux kernel slab内存管理的一点思考

    linux kernel 内存管理是个很大的话题,这里记录一点个人关于slab模块的一点思考总结. 有些书把slab介绍成高速缓存,这会让人和cache,特别是cpu cache混淆,造成误解.sla ...

  6. 关于html页面元素语义化的一点思考

    这几天在看招聘公告前端工程师的要求基本都附带了html语义化的要求,所以稍微关注了下这方面的知识.对于其中的一点就是要求页面元素在去除css样式之后还能有良好的布局引发了我一点思考.作为前端刚入门的我 ...

  7. 基于CAS分析对ABA问题的一点思考

    基于CAS分析对ABA问题的一点思考 什么是CAS? 背景 synchronized加锁消耗太大 volatile只保证可见性,不保证原子性 基础 用CPU提供的特殊指令,可以: 自动更新共享数据; ...

  8. 【翻译】全球用尽IPv4的一点思考

    作者:Dimple 公众号:奔跑吧攻城狮 简介:专属于Java和Android开发,和你聊聊职场话题,一同展望未来 作为小小号主的我表示很无力啊,这几天,天天都是热点.前有网易员工勇敢发声维护自己的利 ...

  9. 关于KMP的一点思考

    关于KMP的一点思考 KMP的\(next\)数组的性质很精妙,有必要开一个坑学习一下 Part 1 啥是next \(next[i]\)表示对于\(pre_i\)这个字符串,这个抠出来的字符串本身后 ...

随机推荐

  1. 浅谈C++ STL string容器

    浅谈C++ STL string容器 本篇随笔简单讲解一下\(C++STL\)中\(string\)容器的使用方法及技巧. string容器的概念 其实\(string\)并不是\(STL\)的一种容 ...

  2. javascript ES6 新特性之 class

    在之前的文章中我们讲过原型,原型链和原型链继承的文章,在 ES6 中为我们提供了更为方便的 class,我们先来看一下下面的例子: function Person(name) { //构造函数里面的方 ...

  3. choose Perseverance :)

    心里话 很久都没有更新博客了,我会陆陆续续的把云笔记中的一些有意思的文章放在博客中. 这10个月以来经历了很多,9月份参加了省赛获得了一个二等奖,和一等奖失之交臂的滋味很难受,到10月份开始维护自己的 ...

  4. Dynamics CRM - js中用webapi基于fetchxml查询遇到的问题 -- Invalid URI: The Uri scheme is too long.

    最近用WebApi做基于Fetchxml的查询的时候,遇到一个很蛋疼的报错:Invalid URI: The Uri scheme is too long. 检查了整个URL,也没发现有什么问题. - ...

  5. jmeter控制器(四)

    交替控制器: 交替控制器主要是让控制器里面的请求顺序执行,如下图设置了审批管理循环3次,那么第一次运行就执行了请假模块,第二次运行执行了请假模块1,第二次执行了请加模块2,依顺序每一个请加模块只执行一 ...

  6. Linux下使用 github+hexo 搭建个人博客07-next主题接入搜索和站点管理

    这是搭建个人博客系统系列文章的最后一篇,如果你是从第一篇一路跟下来的,那么恭喜你,即将完成整个博客网站的搭建.OK,话不多说,开始我们的收官之战. 不知你想过没有,如果我们的文章少,一眼看完整个目录, ...

  7. 微信退款异步通知报错Illegal key size or default parameters 的解决办法

    问题原因: Java几乎各种常用加密算法都能找到对应的实现.因为美国的出口限制,Sun通过权限文件(local_policy.jar.US_export_policy.jar)做了相应限制.因此存在一 ...

  8. 网络编程~~~osi五层协议

    物理层 / 数据链路层 / 网络层 / 传输层 / 应用层(表示层/会话层) 一 物理层 物理层指的就是网线,光纤, 双绞线等物理传输介质 物理层发送的是数据(比特流) 二 数据链路层 数据链路层对数 ...

  9. Linux:DNS服务器搭建

    DNS简介 DNS(Domain Name System)域名系统: 是一种采用客户端/服务器机制,负责实现计算机名称与IP地址转换的系统.DNS作为一种重要的网络服务,既是国际互联网工作的基础,同时 ...

  10. Mysql—下载安装与使用

    一.安装前准备 检查是否已经安装过mysql,执行命令,显示结果为:bt-mysql57-5.7.26-1.el7.x86_64 [root@localhost ~]# rpm -qa | grep ...