- 博客(22)
- 收藏
- 关注
原创 head first design patterns
least knowledge最少只是原则调用对象的方法,只允许一下情况:1、对象本身的方法2、通过参数传入的对象的方法3、对象的方法创建的或者实例化的对象的方法4、对象的成员对象的方法...
2020-02-03 09:55:52
169
原创 如何在工作中快速成长——认知升级方法论(职业规划需要修改)
本文介绍如何在工作中快速成长的10条定理,写给即将入职的软件工程师(myself)。快速成长,总得来说就是就是认知升级,认知就是对问题的认、对解决办法的知,认知升级就是寻求从问题到解决办法的最短路径、最佳路径,需要依靠思考沉淀形成认知,经过行为惯性导致升级。1、培养直觉划重点:思考形成逻辑,将逻辑反射化、习惯化原因:行动被思考脑和反射脑驱使,一个人一天的行为中,5%是非习惯性的,用思考...
2020-01-02 18:59:33
823
原创 java可重入锁ReentrantLock
一、使用1、创建一个可重入锁 rL= ReentrantLock(true/false)2、rL.lock()3、try{业务代码块}catch(){异常记录}finally{ rL.unlock() 释放锁}二、lock的时候发生了什么、线程处于怎样的状态1、rL最重要的字段:抽象队列同步器 AbstractQueuedSynchronizer sync,负责获锁 acquir...
2019-08-31 00:39:40
178
原创 重构第十一章及以后——处理继承关系等
主要是将字段、函数、构造函数上下移动于继承体系之中;抽象出子类、接口;继承与委托。1、字段上移:针对子类字段重复的情况2、函数上移:针对子类函数重复,如果子类需要上移的函数依赖于子类的特性,可以将这个函数在超类中定义为抽象函数3、构造函数函数体上移:也就是子类构造函数,利用超类构造函数构造一部分字段。4、函数下移5、字段下移6、抽取类:新建一个子类,将特性移到新类中,使用子类而不是类型...
2019-08-13 08:56:44
158
原创 重构第十章——简化函数调用
重构第十章——简化函数调用1、函数改名,做到顾名思义2、添加参数,如果可以不添加参数,那就不添加参数3、移除参数4、将查询和修改函数分离:如果遇到并发问题,可以查询、修改各自独立,并都神明为synchronized5、令函数携带参数:5和12中的2)做法相反,12中的2)为同一件事情创建不同的方法,5是为不同的方法抽象参数变成一个方法6、用简单传单的不同的函数,代替复杂传参的一个函数,...
2019-08-11 22:28:23
198
原创 重构第九章——简化条件语句
重构第九章,讲解如何简化条件语句(if then else、switch case),使得程序逻辑更加清楚,同时方便扩展,主要手法有8种。我在每种手法的后面加了一句话,总结这种手法的目的或者做法。1、分解条件:结合Extract Method使得逻辑更清晰做法:将if-else if-else语句块的 条件 和 每个条件执行的逻辑,分解成方法。这样一来,条件更加清楚(通过方法名来传达),每...
2019-04-29 16:04:13
298
原创 六大设计原则和补充原则 以及其他原则(待写)
六大设计原则和补充原则 以及其他原则(待写)https://mp.weixin.qq.com/s/9wfEJvU_ON6gq71L9Oni7g
2019-04-29 11:45:01
401
原创 重构第八章——重新组织数据
第8章介绍重新组织对象的数据的重构方法,对象的数据包括普通字段、常量、类型码等,以下16条重构手段涉及到封装、解耦、设计模式。1、自封装字段什么时候进行自封装:当类的字段在其他地方(如子类中、别的类中)使用时,进行自封装是必要的,因为不封装的话,只能修改字段的可见范围(对象的字段可见范围绝大多数情况下都应该是private的,在继承体系中可能是protected,不能根据访问需要而改动)。...
2019-04-28 17:04:23
499
原创 职场基本三原则——安全、进步、收益
职场基本三原则:安全原则——保证自身安全、进步原则——谋求晋升拒绝佛系、收益原则——懂得算账,处理领导给钱少的问题1、安全原则安全原则是首要原则。第一是工作安全,稳定了工作和位置才能图发展。第二是信用安全,良好的信用是职场的通行证、润滑剂。工作安全与信用安全冲突时:变通行为。比如帮同时代打卡,帮的话可能存在一定后果,对工作安全不利;不帮,对人情不利,信用安全受损。衡量对工作安全的不利程...
2019-04-28 12:37:14
553
原创 java中的观察者模式使用——Observer和Observable
本文翻译java源码中对Observer和Observable的注解,介绍观察者使用过程。1、Observer接口用途:当一个类想要获得被观察对象变化的通知时,可以实现Observer接口。主要方法:Observer接口只有一个方法,void update(Observable o, Object arg)。这个方法在被观察对象变化时,被自动调用。应用程序调用被观察者的notifyOb...
2019-04-27 21:05:06
952
原创 重构第七章——在对象之间搬移特性
针对对象的重构,解决 把责任放在哪里 的问题,主要8个手段:函数搬家、字段搬家、当类承担过多责任时提取新类(反之一个类不太有责任时就是删之,将类内联化)、利用委托或代理作中间人(反之就是移除中间人)、无法修改类时的扩增方法(两种)。1、方法搬家A类和B类,A类中的某个方法中的逻辑依赖B类中的字段,可以考虑将这个方法移到B中。如果这个方法还需要A中的字段,可以将作为参数传入。2、字段搬家...
2019-04-27 16:54:26
204
原创 RabbitMQ消息可靠性、延迟队列以及高可用集群
介绍RabbitMQ的作用、不可靠性、如何保证可靠性、死信队列、集群。1、作用:①②RabbitMQ Server作为消息的接收者、消息的发送者;③消息持久化;④消息堆积延后传递;⑤消息广播;⑥消息分类路由2、生产端和消费端都会存在不可靠的问题。1)消费端不可靠:消息的传递的过程:RabbitMQ Server-->OS buffer --> network --&...
2019-04-25 13:48:45
620
原创 重构第六章——重新组织函数
本文首先记录了对重构这本书第六章的学习笔记,第六章讲重新组织函数,主要过程是:发现问题(long method)——> Extract Method ——>Substitute Algorithm。其中抽取方法是重点和难点。1、问题源于long methods2、手段是Extract Method,当提炼没有必要是,使用Inline Method,使用函数动作本体,Extra...
2019-04-24 00:31:41
212
原创 重构第二章——重构的注意事项及重要性&杂记
本文在阅读重构这本书的基础上,摘记了一些重要的观点,包括重构的注意事项、重要性和一些编程的杂记。注意事项:1、开发过程中的两顶帽子——重构和添加新功能,原则是:只干一件事,添加新功能时不做重构,重构时不添加新功能。2、何时重构:①事不过三(重复遇到某个问题、重复写相似代码等),三则重构②添加新功能,尤其不易添加时③修补错误时④复审代码时重要性:1、作者的结论是:重...
2019-04-23 23:04:37
561
原创 重构第三章:何时重构——22种坏味道
1、重复代码2、方法过长3、类过大4、过长参数列5、发散式变化,类由于不同的原因在不同的地方发生变化。怎么解决:运用Extract Class部分内容提炼到一个新类中,这样每个类都因只因一种变化而需要修改。策略模式是对付发散式变化的典型手段。6、散弹式修改,也就是说当系统需要修改时,只用修改某一处,而不用修改多个地方。怎么解决:使用Move Method 和 Move Fiel...
2019-04-23 22:14:07
434
原创 Python学习概论
0、Python是一种解释型、面向对象、动态数据类型的高级程序设计语言1、python适合开发哪些类型应用?Web开发,包括网站、后台服务等等;人工智能、数据分析、自动化运维方面大量运用。其次是许多日常需要的小工具、网络爬虫,包括系统管理员需要的脚本任务等等;另外就是把其他语言开发的程序再包装起来,方便使用。2、python的缺点第一个缺点就是运行速度慢,和C程序相比非常慢...
2019-04-19 14:53:17
207
原创 重构第一章——重构三部曲:抽取方法、移动方法、使用多态
在阅读重构改善既有代码的设计(Refactoring improving the Design of Existing Code)这本书的第一章的基础上,对于其给的演示的例子,来梳理一下第一章重构的流程,以及重构前和重构后的对比效果。第一章主要运用了三种基本的重构方法,我称之为三部曲:抽取方法、移动方法、使用多态。目的是:对象方法责任合理分配、代码易于维护。下面具体展开。首先介绍背景。重构...
2019-04-19 14:36:45
462
原创 Vector源码解读
本文介绍Vector源码分析,对其API doc注解进行翻译并解释。一、翻译Vector类的注解:①基本功能:Vector类实现了一系列的array对象。像一个array一样,它包含的成员可以通过整数下标来访问,但是它的长度(size)可以根据需要进行扩增和收缩,以适应在Vector对象创建后增加和移除元素的需求。Vector对象通过维护一个容量和一个容量扩增(capacityIncrem...
2019-04-19 11:01:10
345
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人