摘要: 最近读了一本关于产品的好书 《用户思维+ 好产品让用户为自己尖叫》 ,虽然是一本产品相关的书,但是全书都在围绕如何 让你的用户变得更优秀 展开讨论。作者的观点很明确也很独到,可持续成功的产品都是由 推荐 (口碑传播)产生的。而激发这些推荐的是用户对自己的感觉,也就是我们的产品或服务帮助他们做了什么或 阅读全文
posted @ 2018-08-28 09:25 CoderFocus 阅读(1463) 评论(4) 推荐(7) 编辑
摘要: 半个月之前,和大学篮球队的兄弟们约定一起回一次母校。大家毕业之后各奔东西,天南海北,想要再聚一次真的很不容易。昨天终于实现了。看着曾经并肩作战了四年的兄弟们,心中思绪万千,努力回忆着大学里的那些人和事。晚上和大家伙吃了饭道别已经快0点了,打车回高新。雨后的空气格外清新,景色也别有一番风味。我借着酒劲 阅读全文
posted @ 2018-05-07 02:07 CoderFocus 阅读(2953) 评论(18) 推荐(70) 编辑
摘要: 之前自己一个人负责完成了公司的消息推送服务,和移动端配合完成了扫码登录、订单消息推送、活动消息广播等功能。为了加深自己对Websocket协议的理解,自己通过进行抓包的方式学习了一番。现在分享出来,希望对大家能有所帮助。 Chrome控制台 (1)F12进入控制台,点击Network,选中ws栏,注 阅读全文
posted @ 2018-03-15 19:18 CoderFocus 阅读(100788) 评论(10) 推荐(30) 编辑
摘要: [TOC] 我看依赖注入 new代码味道——狎昵(xia ni)关系:过分亲近 这个主题是我比较想重点聊聊的,因为我个人的理解是依赖注入思想最终想解决的问题就是消除对象之间的耦合,再通俗一点讲就是 消除new代码味道 ,解决的指导思想是 将组件的配置和使用分离 。 什么是代码味道? 如果某段代码可能 阅读全文
posted @ 2018-03-15 10:53 CoderFocus 阅读(3344) 评论(7) 推荐(22) 编辑
摘要: 我这里的业务场景是根据消息类型将离线消息存入mongoDB不同的collection中。其中就涉及到大量的分支判断,为了增强代码的可读性和可维护性,对之前的代码进行了重构。 先对比一下使用反射+策略模式前后的代码: 重构前: 重构后: 我们可以看到重构前的代码充斥着大量的分支判断,以后每增加一个新的 阅读全文
posted @ 2017-09-11 15:13 CoderFocus 阅读(5137) 评论(5) 推荐(7) 编辑
摘要: 在 "JavaScript 作用域不完全指北" 中,我们介绍了作用域的概念以及 JavaScript 引擎、编译器和作用域的关系。作用域有两种主要的工作模型: 词法作用域 和 动态作用域 。其中最为普遍的也是大多数编程语言所采用的是词法作用域,我们主要对其进行研究学习。在传统编译语言的流程中, 程序 阅读全文
posted @ 2019-07-09 15:37 CoderFocus 阅读(431) 评论(0) 推荐(1) 编辑
摘要: 什么是作用域 对于几乎所有编程语言,最基本的功能之一就是能够存储变量的值,并且能在之后对这个值进行访问和修改。这样就会带来几个问题,这些变量存储在哪里?程序在需要的时候又是如何找到它们的?要解决这些问题,就需要引入一套规则来存储变量和访问变量,这套规则就是作用域。 理解作用域 在刚开始接触 Java 阅读全文
posted @ 2019-06-10 09:10 CoderFocus 阅读(473) 评论(0) 推荐(1) 编辑
摘要: 外连接的基础概念 标准SQL里定义了外连接的三种类型,如下: 左外连接「LEFT OUTER JOIN」 右外连接「RIGHT OUTER JOIN」 全外连接「FULL OUTER JOIN」 在这三种中,左外连接和右外连接功能上没有什么区别,我们都比较熟悉,全外连接相对来说使用较少。 我们使用具 阅读全文
posted @ 2019-01-02 09:39 CoderFocus 阅读(526) 评论(0) 推荐(1) 编辑
摘要: 我们在这个系列的前四篇文章中分别介绍了SOLID原则中的前四个原则,今天来介绍最后一个原则——依赖注入原则。依赖注入(DI)是一个很简单的概念,实现起来也很简单。但是简单却掩盖不了它的重要性,如果没有依赖注入,前面的介绍的SOLID技术原则都不可能实际应用。 控制反转(IoC) 人们在谈论依赖注入的 阅读全文
posted @ 2018-10-31 08:56 CoderFocus 阅读(2415) 评论(4) 推荐(4) 编辑
摘要: 接口分离原则 在面向对象编程中,接口是一个非常重要的武器。接口所表达的是客户端代码需求和需求具体实现之间的边界。接口分离原则主张接口应该足够小,大而全的契约(接口)是毫无意义的。 接口分离的原因 将大型接口分割为多个小型接口的原因有: ①需要单独修饰接口 ②客户端需要 ③架构需要 需要单独修饰接口 阅读全文
posted @ 2018-10-29 08:35 CoderFocus 阅读(1116) 评论(3) 推荐(4) 编辑
摘要: 最近越发觉得浮躁和焦虑,也感受到了前所未有的迷茫。大概是我给了自己太多的选择项,并且没有给自己制定计划,制定优先级,所以不知道自己要先做哪一项、后做哪一项。等到要学习提升自己的时候,茫茫多的选择项,不浮躁不焦虑才不正常。 以我订阅技术专栏为例,看了看购买统计,震惊了。我想我可能是陷入为了买而买的怪圈 阅读全文
posted @ 2018-09-30 11:24 CoderFocus 阅读(533) 评论(1) 推荐(0) 编辑
摘要: Liskov替换原则(Liskov Substitution Principle)是一组用于创建 继承层次结构 的指导原则。按照Liskov替换原则创建的继承层次结构中,客户端代码能够放心的使用它的任意类或子类而不担心所期望的行为。 Liskov替换原则定义 如果S是T的子类型,那么所有的T类型的对 阅读全文
posted @ 2018-09-18 06:54 CoderFocus 阅读(1241) 评论(0) 推荐(8) 编辑
摘要: 开放封闭原则定义 开放与封闭原则有两种不同的定义,分别是20世纪80年代最原始的定义和后期一个更现代的定义,后者对前者进行更加详尽的阐述。 Meyer的定义 软件实体应该允许扩展,但禁止修改 ​ ——《面向对象软件构造》 Martin的定义 ”对于扩展是开放的。“ 这意味着模块的行为是可以扩展的。当 阅读全文
posted @ 2018-09-06 08:57 CoderFocus 阅读(2474) 评论(0) 推荐(0) 编辑
摘要: SOLID是一组最佳编码实践的首字母缩写 S 单一职责原则 O 开放与封闭原则 L Liskov(里式)替换原则 I 接口分离原则 D 依赖注入原则 同时应用这些最佳实践,可以提升代码适应变更的能力。但是凡事要有度,过度使用虽然可以让代码有很高的自适应能力,但是会导致层次粒度过小而难以理解或使用,还 阅读全文
posted @ 2018-09-04 08:58 CoderFocus 阅读(1353) 评论(0) 推荐(4) 编辑
摘要: 优化嵌套查询 嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。嵌套查询写起来简单,也容易理解。但是,有时候可以被更有效率的连接(JOIN)替代。 现在假如要找出从来没有在网站中消费的客户,也就是查询在客户customer表中但是不在支付 阅读全文
posted @ 2018-08-31 08:24 CoderFocus 阅读(10815) 评论(6) 推荐(11) 编辑