代码改变世界

思考架构演进的主要驱动因素是什么?

2018-09-26 11:27 by 乘着风去破浪, 595 阅读, 0 推荐, 收藏, 编辑
摘要:思考架构演进的主要驱动因素是什么?是业务,是业务的具体形态;因为架构只是业务形态的一个抽象和另外一种表现形式,一个好的架构,第一要符合业务,能够准确表达业务,然后才是一些非功能性的保证等; 阅读全文

软件设计的一点理解

2018-09-26 11:11 by 乘着风去破浪, 257 阅读, 0 推荐, 收藏, 编辑
摘要:1.以前经常形而上学,以后要形而下学,就是要多读源码 2.我们设计代码,在设计思想和理念上,会经常用到“抽象”,这个抽象是一个非常重要的方法,我们把业务的数据抽象成合适的对象,合适的结构,我们把业务中的动作抽象成合适的对象的操作或者方法,我们把业务中的流程,抽象成合适的软件中的流程;在抽象对象时,不 阅读全文

从接触的代码进行源码阅读

2018-09-25 17:24 by 乘着风去破浪, 188 阅读, 0 推荐, 收藏, 编辑
摘要:从接触的代码进行源码阅读对自己平时用到的一些代码(比如java中用到 Collections.shuffle(xxlist)的方法)的源码进行分析,这个是非常有价值的源码阅读方式;首先,你可以知道你自己使用的工具是如何工作的,而且通过了解其实现方式,可以更加清楚知道自己的项目使用这个工具是否合适,能 阅读全文

设计一个存储方案的存储结构的细节问题,需要考虑以下因素:

2018-09-25 17:10 by 乘着风去破浪, 876 阅读, 0 推荐, 收藏, 编辑
摘要:设计一个存储方案的存储结构的细节问题,需要考虑以下因素:1.采用什么结构能够使存储容量小即节省内存,而且查找速度快,即寻找二者的一个平衡点;另外要分析出存储容量增长的趋势是线性的,还是二次方,还是Log,或者是常数;也要分析查询的变化趋势(比如随着整体数据量的增大或者随着单个item的数据量的增大) 阅读全文

使用修改数据达到适配的目的

2018-09-25 16:36 by 乘着风去破浪, 284 阅读, 0 推荐, 收藏, 编辑
摘要:对一个方法A,如果在其内部的处理逻辑依赖某个值的不同进行的处理方式而不同,那么如果新增一种调用情况,此种情况下,传入的数据是这个A不能处理的;并且,A的逻辑也是新增的调用情况想要进行的处理,也就说你可以拷贝一个A进行重新命名方法B;你也可以在方法A中新增点逻辑,达到对该数据的支持;但是这里有一个更好 阅读全文

阅读源码

2018-09-22 14:30 by 乘着风去破浪, 190 阅读, 0 推荐, 收藏, 编辑
摘要:阅读源码首先,明白一块代码的语言层面的执行逻辑,比如知道这是一个for循环,这是一个if else语句等,知道什么情况下循环中进行了break;然后,需要弄明白一块代码中的执行逻辑使用的数据的结构,比如是list,是map,还是queue等,然后看下都执行了哪些数据结构的操作;然后,需要弄明白,这些 阅读全文

抓手机请求包

2018-09-20 11:53 by 乘着风去破浪, 186 阅读, 0 推荐, 收藏, 编辑
摘要:前提:手机和电脑在同一个局域网内 1.在本机电脑中打开Charles;2.设置手机打开代理,设置代理Ip为电脑的Ip,端口为88883.发送请求,通过Charles抓包,进行分析 TODO 如何修改请求包内容? 阅读全文

随便想想-20180920

2018-09-20 10:31 by 乘着风去破浪, 161 阅读, 0 推荐, 收藏, 编辑
摘要:客户端对zk上的某个节点路径监听变更是如何识别这个节点路径变更的,我觉得应该在监听链接,当链接上有可读数据时(这个底层实现是依赖操作系统实现),然后读取数据并分析数据,数据中应该包含哪个节点路径发生了什么变更,然后解析下生成相应的事件传递给注册的监听回调程序就行了! 监听的底层实现有时也是轮训(所以 阅读全文

如何阅读以网络形式提供服务的软源码

2018-09-20 10:25 by 乘着风去破浪, 173 阅读, 0 推荐, 收藏, 编辑
摘要:如何阅读以网络形式提供服务的软源码一个服务,如果按照网络调用的方式提供服务,那么阅读它的源码,就要从以下几个方面来阅读;1.服务的启动流程,比如做了哪些初始化,使用了哪些网络IO模型2.接收请求并处理请求的流程,比如网络消息如何接收(是直接启动线程处理,还是放到自定义的队列中),如何解析,如何处理( 阅读全文

自测要抓住几个要点:

2018-09-17 16:19 by 乘着风去破浪, 242 阅读, 0 推荐, 收藏, 编辑
摘要:自测要抓住几个要点:1.一个是流程测试,测试你新增的需求能否走正确的流程;2.一个是影响范围点的测试,通过idea的add to watches动态修改值(一次请求,多次reuse,不用每次都发请求)测试修改的代码影响的其他部分(或者分支)能否正确执行;3.一个是数据结构的测试,测试运行过程中你关注 阅读全文