摘要:
全链路数据监控的一个非常有意义的地方是:可以大幅提高测试业务准确性的效率,因为一个请求发过去,通过查看汇总的全链路的数据就知道哪里有问题了 阅读全文
随笔档案-2019年05月
墨菲定律对我的影响
2019-05-31 10:55 by 乘着风去破浪, 273 阅读, 收藏, 编辑
摘要:
墨菲定律对我的影响 如果有监控告警,而且已经预知到将来如果发生的严重性,而不进行改进或者做好备用机制的话,那么迟早会得到深刻的教训的。(墨菲定律)因此,当你的redis集群没有从的时候,而出现了告警,随后恢复了,但是事情不能就此终止,你应该着手去做备份方案,你可以再冷备一个redis集群用于故障时进 阅读全文
学以致用:
2019-05-31 10:53 by 乘着风去破浪, 178 阅读, 收藏, 编辑
摘要:
学以致用:在软件开发中,经常会有一些很好的思想和原则来指导我们开发出一个健壮的,可扩展的,可运维的程序,但是我们往往学过之后,不会分析自己的业务和情形,不能很好的把这些使用在自己的代码中,而只有碰到问题,发生故障后(造成严重损失)后才知道痛,才会痛定思痛。比如,可运维中的核心服务的备份,里面有热备和 阅读全文
代码里面到底有什么?或者说代码有哪些成分组成?
2019-05-30 10:44 by 乘着风去破浪, 1880 阅读, 收藏, 编辑
摘要:
代码里面到底有什么?或者说代码有哪些成分组成?有逻辑,有计算,有存储,有语法,有语义,有业务有的代码侧重于存储部分比较多,有的是计算部分比较多,有的是逻辑部分比较多逻辑是什么,就是if else ,while ,等等计算是什么,科学计算是一种,还有位运算等,还有查找存储(和存储操作)是什么,内存,硬 阅读全文
看过学过,不进行沟通交流,永远停留在自己的理解中
2019-05-29 19:34 by 乘着风去破浪, 261 阅读, 收藏, 编辑
摘要:
思考:看过学过,不进行沟通交流,永远停留在自己的理解中;如果看过学过不想或者没机会交流,那么看看它如何使用的,也能促进或者改善你对它的理解。 思考:简单东西就是很简单,但是很多简单的东西组合在一起,就会变得不简单,因此,一个复杂的系统一定是有很多模块组成的,虽然这些模块每一个都看起来很简单 阅读全文
为什么有的语言没有一些其他语言有的东西?
2019-05-29 19:33 by 乘着风去破浪, 237 阅读, 收藏, 编辑
摘要:
为什么有的语言没有一些其他语言有的东西?比如java语言没有bit,c++和c没有字符串,没有复杂的数据结构?是因为这些语言本身不需要它,还是有另外一种很好的方式来表示“这些没有的东西”来表达;或者还是这个语言的定位就是这样? 阅读全文
优秀的代码有哪些特点:
2019-05-29 19:32 by 乘着风去破浪, 2080 阅读, 收藏, 编辑
摘要:
优秀的代码有哪些特点:1.恰当合适的可读性强的命名2.良好的可扩展的代码组织结构(可扩展才能被更多地应用)3.高性能(有些应用可能对极致高性能要求可能没那边高,所以此时该项只是一个辅助参考)4.恰当合适精巧的(抽象)数据结构(对内存的使用上的考虑) 阅读全文
“尝尝鲜”的学习方法(点到为止)
2019-05-29 19:32 by 乘着风去破浪, 280 阅读, 收藏, 编辑
摘要:
思考:“尝尝鲜”的学习方法(点到为止),就是一个对框架有一个整体的全面的架构了解,功能了解,使用了解,能够简单安装一个本机版本,跑一个简单的demo,这就是所谓的“尝尝鲜”的学习法,因为一个人毕竟精力有限,而且关注的点可能不一样,因此要把我自己的价值点,然后横向扩大下知识面;后面有机会要用到就好好补 阅读全文
辩证的看问题,更好的理解问题
2019-05-24 11:31 by 乘着风去破浪, 695 阅读, 收藏, 编辑
摘要:
辩证的看问题,更好的理解问题看待问题要辨证地看要一分为二地看,tcp传输数据,从宏观上来看是按照顺序传输的也是按照顺序接收数据的,就是说一般来讲都是先后顺序(对包进行编号)发送数据的,而且先发送的先接收(这里是说同一个进程内的),但是从微观上来讲,或者说实际上有的请求并不是这样,因为网络的问题,可能 阅读全文
关于测试的思考和总结
2019-05-21 17:52 by 乘着风去破浪, 342 阅读, 收藏, 编辑
摘要:
关于测试的思考和总结对未知的信息越多,做出判断的错误性也越多,更多的信息,更好的判断;更多的信息可以把一些很平庸的坑给避开;去get更多的信息,而不是去猜测;特别是if else的时候,因此这些条件数据非常重要,因为这里既是分支,就是决策,非常重要的。一个错误的条件数据会导致走不同的逻辑处理,就是走 阅读全文
谈代码架构的可扩展性:
2019-05-21 16:12 by 乘着风去破浪, 1493 阅读, 收藏, 编辑
摘要:
谈代码架构的可扩展性:每次新加的代码或者补丁能够在合适的位置合适的地方找打它的位置(不影响原来的代码,不改动原来的代码),这就是一种代码架构可扩展性的一个重要表现;当然做到这个,需要你对业务的理解非常透彻,能够前瞻性地知道哪些可能会变,哪些可能固化,这个是一个设计一个扩展性好的架构的前提;或者,你可 阅读全文
读源码的经验总结:
2019-05-21 16:08 by 乘着风去破浪, 284 阅读, 收藏, 编辑
摘要:
读源码的经验总结:1.第一遍读的时候要做笔记,对主流程中的主要的核心的类进行记录下,混个脸熟,有个印象;知道这些核心的的类在主流程中都做了哪些事,负责哪些子功能;2.第二遍就要找出主流程的核心点,进行专攻,每读一遍的时候应该仅仅抓住你要搞懂的一个类是怎么创建的,在哪里创建的,什么时候被触发调用的,如 阅读全文
阅读面向对象的代码:我们要有两个关注点:
2019-05-21 11:50 by 乘着风去破浪, 358 阅读, 收藏, 编辑
摘要:
阅读面向对象的代码:我们要有两个关注点:对象如何被创建,创建流程是什么样的;对象是如何被组织的,也就是被谁引用了;对象的方法是如何被调用的,也就是方法在什么地方,什么时机被触发执行的;如果对上述三点能够很好的把我,那么阅读代码也是一种剥丝抽茧的过程另外,在分析调用关系时,一定要有一个主链条,不能什么 阅读全文
关于监控:
2019-05-20 16:31 by 乘着风去破浪, 460 阅读, 收藏, 编辑
摘要:
关于监控:如果一个功能上线时没有监控,那么这个功能最好要认真关注或者没有对核心数据的监控,功能就不要上线,把监控当做功能的一部分; 阅读全文
解决java异常的方法:
2019-05-20 16:30 by 乘着风去破浪, 3142 阅读, 收藏, 编辑
摘要:
解决java异常的方法:1.首先要把异常打印处理(有时有人会直接catch,然后不打印任何日志)2.然后分析使用的java api,自己是否熟悉,如果不熟悉,看看java 源码有什么注释可以帮助你来分析问题的原因3.上网搜资料(很多人很多时候上来就去网上搜,这种做法不可取,甚至搜了半天也没有解决问题 阅读全文
es组集群的必不可少的要素:
2019-05-20 10:55 by 乘着风去破浪, 288 阅读, 收藏, 编辑
摘要:
es组集群的必不可少的要素:1.集群名2.Discovery(要在一个可以互访的网络环境里面,而且要设置Discovery策略) 阅读全文
认识ES:从能够看得见的地方
2019-05-20 10:54 by 乘着风去破浪, 224 阅读, 收藏, 编辑
摘要:
认识ES:从能够看得见的地方1.占用了哪些端口2.生成了哪些文件(数据文件和日志文件),了解各个文件的含义和用途?3.使用了哪些本地文件目录4.项目的代码目录结构5.(通过Kibana)了解ES运行的各个指标项的含义(据此可看出一些ES运行时潜在的问题和风险) 阅读全文
谈“适配”的思考方式去解决问题
2019-05-20 10:52 by 乘着风去破浪, 249 阅读, 收藏, 编辑
摘要:
谈“适配”的思考方式去解决问题每个软件都有自己适合的场景,有些情况下,它支持的不太好,那么我们应该换个思考,把我们的场景往它上面靠,去适配它的优势所在的情景,去用好它;这也是一种规避问题(的产生)去解决问题的方法 阅读全文
沟通的一个点就是
2019-05-18 15:30 by 乘着风去破浪, 225 阅读, 收藏, 编辑
摘要:
沟通的一个点就是:给别人解惑,知道别人想知道什么,以及采用最容易明白的方式,最容易被别人理解的方式把有价值的信息传递给对方。 阅读全文
关于软件系统的一些问题总结
2019-05-18 15:21 by 乘着风去破浪, 622 阅读, 收藏, 编辑
摘要:
关于软件系统的一些问题总结:一个软件都有哪些部分?首先,我们说软件的时候意味着什么,一个软件是解决某一类的问题的,也就是软件解决是一个有确定范围的问题域的;那么不同的问题,解法是不一样的,涉及的方面和技术也不一样,对涉及的方面和采用的技术的深度也是不一样的;我们不说软件解决的问题,我们现在要说下软件 阅读全文
为什么会有设计模式
2019-05-16 20:54 by 乘着风去破浪, 285 阅读, 收藏, 编辑
摘要:
为什么会有设计模式只是让看起来或者写起来更优雅(阅读性好,扩展性好),优雅这个词是”艺术性“的,所以设计代码也是一种艺术比如,buider模式,如果一个对象有多个参数(以后还有可能增加),那么使用构造方法就不优雅,另外,不可能每次新增一个属性,都要修改构造方法吧,如果采用builder模式就很好得解 阅读全文
如何思考来解决一个问题
2019-05-16 20:53 by 乘着风去破浪, 285 阅读, 收藏, 编辑
摘要:
如何思考来解决一个问题解决一个问题,首先要能够对确定问题域,然后针对问题域中的核心的问题一定要认真分析和理解,如果一个核心问题没有解决,那么方案就是不可行的。 阅读全文
如何学习并掌握一个新技术
2019-05-16 20:52 by 乘着风去破浪, 299 阅读, 收藏, 编辑
摘要:
如何学习并掌握一个新技术如果你对一个东西不熟悉,没有用过它(的功能),那么当你要解决问题的时候,怎么会想到用它呢?如果你知道一个东西的特性,想要用它,那么最好先写个demo熟悉下套路,把常见的一些坑先消耗掉,把一些基本的东西操作熟练,多测测它的特性是不是和它讲的是一样的,实践出真知。我们写个demo 阅读全文
如何测试代码:review代码就够了吗?
2019-05-16 19:16 by 乘着风去破浪, 454 阅读, 收藏, 编辑
摘要:
如何测试代码:review代码就够了吗?逻辑对是一回事,数据对是另外一回事有些看似逻辑对,但是通过数据验证后发现并不多,因此要用数据来做测试而不是单纯看代码逻辑,特别是针对偏重于数据计算的代码 阅读全文
jvm进行系统调用和JNI有什么关系?
2019-05-16 15:12 by 乘着风去破浪, 824 阅读, 收藏, 编辑
摘要:
jvm进行系统调用和JNI有什么关系?JVM是java虚拟机(可以了解下虚拟机是什),它对操作系统进行了很好的抽象,而JNI是java语言进行调用非java语言的一种实现方式;想要使用jni,那么有他的一套规范,按照规范来尽可以使用了JNI了。 阅读全文
推荐系统是一个复杂而又庞大的系统
2019-05-16 13:58 by 乘着风去破浪, 338 阅读, 收藏, 编辑
摘要:
推荐系统是一个复杂而又庞大的系统推荐系统可以包含和涉及到了太多东西,有工程侧的,有算法侧的,当然也可以使用更多的技术和方方面面 阅读全文
如何搞懂吃透一个知识点
2019-05-16 11:17 by 乘着风去破浪, 2024 阅读, 收藏, 编辑
摘要:
如何搞懂吃透一个知识点如果对一个东西迟迟不能吃透,那么一定是哪个地方卡壳了,一定是哪个环节,哪个概念么有吃透,或者理解错了导致我们对基于它的一些知识无法真正的领悟和理解透彻;存在模糊、不确定、疑惑等;所以要反过头来吃透它的前置和依赖的基础知识,吃透它依赖的每一个概念。 有些知识是帮你认清问题,有些知 阅读全文
虚拟内存和虚拟地址的区别?mmap
2019-05-16 10:12 by 乘着风去破浪, 769 阅读, 收藏, 编辑
摘要:
虚拟内存和虚拟地址的区别?这个影响我对mmap的理解mmap是什么?是(进程内创建一个虚拟地址空间,就可以绕过用户内存和内核内存的拷贝,进行直接访问): mmap() creates a new mapping in the virtual address space of the calling 阅读全文
对数据结构的认识
2019-05-15 15:18 by 乘着风去破浪, 844 阅读, 收藏, 编辑
摘要:
对数据结构的认识数据结构中包含一些基础的数据结构,当然还有很多的变体,这些变体正是以基础的数据结构为基础,在结合应用情景之下做出的变换和适配。 阅读全文
redis是单线程的,这个该怎么理解?
2019-05-15 15:14 by 乘着风去破浪, 779 阅读, 收藏, 编辑
摘要:
redis是单线程的,这个该怎么理解?单线程-多路复用IO模型:处理网络请求和真正的处理都是在同一个也是唯一的一个线程环境中执行的,因此一个慢操作会导致redis的并发量降下来。参考:https://segmentfault.com/a/1190000017375843 阅读全文
服务的运维之核心之一
2019-05-15 15:13 by 乘着风去破浪, 319 阅读, 收藏, 编辑
摘要:
服务的运维之核心之一所有的核心服务的核心指标都要在监控系统的监控之下,当出现问题时能够及时告警,及时进行人工干预。 阅读全文
java(异步)监听文件变更
2019-05-15 11:26 by 乘着风去破浪, 591 阅读, 收藏, 编辑
摘要:
java(异步)监听文件变更java.nio.file.WatchService 阅读全文
泛型的一大用途
2019-05-15 11:25 by 乘着风去破浪, 236 阅读, 收藏, 编辑
摘要:
泛型的一大用途:就像模板一样,可以用同一个工厂来创建不同的对象;像模板一样,可以走相同的流程(比如从池中拿对象,归还对象);比如,jedis的pool所使用的common-pool.jar就是使用泛型的一个优秀的例子;可以用来理解泛型的用途 阅读全文
持久化到磁盘的常见逻辑:
2019-05-14 21:17 by 乘着风去破浪, 339 阅读, 收藏, 编辑
摘要:
持久化到磁盘的常见逻辑:把内存数据写入一个临时文件,然后对将临时文件的名字替换为目标文件名字 比如redis的rdb 阅读全文
计算机基础的重要性
2019-05-14 21:15 by 乘着风去破浪, 539 阅读, 收藏, 编辑
摘要:
计算机的内存管理(比如虚拟地址等等)计算机的进程管理对于学习系统编程的人来讲,这两块技术是非常重要的技术,对于理解一些依赖系统的软件的原理也是非常重要的。 阅读全文
不重复造轮子
2019-05-14 21:04 by 乘着风去破浪, 176 阅读, 收藏, 编辑
摘要:
不重复造轮子就是理解并利用现有的功能,并适配它包装它,利用它,做到最大利用现有的功能 比如你有一个很好的监控告警系统了,那么你要利用它来对你的服务进行设置监控告警,你不需要重新做一个监控告警系统了,只需要适配现有的监控告警系统就行了 阅读全文
如何做好总结
2019-05-14 14:18 by 乘着风去破浪, 561 阅读, 收藏, 编辑
摘要:
如何做好总结如果总结时,能够按照给别人分享的思路来整理(你要想到你讲的是不含糊的,你要想到别人可能会问各种问题(包括你想到的,你没有想到的)),那么将会对你提高标准,你会总结的更好。 阅读全文
如何阅读源码?
2019-05-10 21:02 by 乘着风去破浪, 226 阅读, 收藏, 编辑
摘要:
如何阅读源码?阅读源码,如果想看别人对源码的注释,首先需要先做功课,具体如下:自己先分析下源码,多看几遍,做到对遇到的类不陌生,也可以运行下代码,多跟几遍,把自己的疑惑写下来,或者总结下自己的认识。最后多看看网上别人是怎么理解这些源码的(集大家之长)。这样才能更高效、 阅读全文
从功能角度来认识一个(高可用的网络服务)Client-Server是有哪些东西组成的?
2019-05-08 17:34 by 乘着风去破浪, 213 阅读, 收藏, 编辑
摘要:
从功能角度来认识一个(高可用的网络服务)Client-Server是有哪些东西组成的?trace模块;(熔断)降级模块;限速模块;RPC模块;配置中心;访问分布式缓存模块;访问Nosql数据库模块;注册中心模块;本地缓存模块;连接池模块;定时器模块;并行调度模块;日志模块;异常框架模块; 阅读全文
如何选择语言:比如c++还是java?
2019-05-08 12:19 by 乘着风去破浪, 496 阅读, 收藏, 编辑
摘要:
如何选择语言:比如c++还是java?如果内存需要被程序(员)管理,或者需要能够根据运行期的不断申请内存,或者释放内存,那么选择c++(注意:堆外内存的使用是不是可以缓解java的内存申请的管理问题);如果对性能有较高的要求,优先选择c++,但是java也不弱;具体情况具体分析和权衡;如果没有上面两 阅读全文
约束之语义约束
2019-05-08 11:58 by 乘着风去破浪, 806 阅读, 收藏, 编辑
摘要:
思考问题的思维:考虑问题也是有方法可行的,这就是哲学的范畴,因此学习哲学可以让我们更好的思考 约束之语义约束我们生活在一个人类自己到处制定的“约束”之中,如果我们能很好的理解这些“约束”,那么我们就搞懂了在这些“约束”框架之下的道理;比如,c++语言中定义了很多的“语义约束”,这些语义约束通过一些比 阅读全文
关于设计方案的争执:去做,而不是说
2019-05-08 10:00 by 乘着风去破浪, 291 阅读, 收藏, 编辑
摘要:
关于设计方案的争执:去做,而不是说如果你认为你的方案可行,或者在某一方面有优势,但是你劝不了别人对你的认可,那么最好的方法就是自己动手,去实现它,有了一些成果再来说服别人就相对容易达成。 阅读全文
开发一个小功能也要注意的事项
2019-05-07 16:09 by 乘着风去破浪, 224 阅读, 收藏, 编辑
摘要:
开发一个小功能也要注意的事项写代码不要只是追求功能,不能按照打补丁的思维方式来开发,否则后面维护会变得异常复杂,即使是一个简单的程序; 阅读全文