个人笔记
攀攀攀啦
这个作者很懒,什么都没留下…
展开
-
Jmockit入门应用
公司项目单元测试使用Jmockit框架,最近对我这个菜鸡进行一次培训,一下是对单元测试以及Jmockit的总结。为什么要写单元测试这个问题不用解释了,脑容量太小了多几个分支就想不过来的人,为了面子还是覆盖率高一点吧,不然后面遇到线上bug面子上过不去啊。那么为什么要使用框架写单元测试呢?蛮荒时代,我们都会用main方法进行测试,但是这种代码看着就不太舒服,写个测试用例就得修改代码,这谁能保证有没有破坏分子利用补单元测试的机会搞破坏呢?使用框架写单元测试的好处主要就是以下两点:生产代码和测试代码隔离原创 2020-08-30 18:30:27 · 455 阅读 · 0 评论 -
方法中的异常处理
在定义一个方法时,方法中会出现一些异常情况(不仅仅包括Exception),合理处理这些异常才能使方法更加好用,代码更加简洁。下面根据《Effective Java》中的一些建议总结如下:如果因为调用方的一些低级错误,或者说是代码编写不规范导致方法不能正常执行,应该产生运行时异常(不应该产生的异常),在测试时修改这种bug,同时在注释中应该明确注明这些会产生运行时异常的情况。 方法有一些前提...原创 2019-11-16 16:59:29 · 666 阅读 · 0 评论 -
对协程的初步理解
首先要强调的是协程不是线程,如果一定要将它与线程作比较,那么可能会陷入泥潭,个人认为单纯将协程看作一种编程方式感觉更容易理解. 协程的优点包括:协程更加轻量,创建成本更小,降低了内存消耗减少了 CPU 上下文切换的开销减少同步加锁,整体上提高了性能可以按照同步思维写异步代码 协程这么厉害,那到底有什么用呢?协程有一个很重要的场景,就是IO密集型任务。以前使用同步 IO 的情况下...原创 2019-11-01 17:02:10 · 275 阅读 · 0 评论 -
Spring注解配置分析(七)——对象实例化和初始化
通过前面的分析已经知道如何将我们配置的一些类加载到容器中,但是到目前位置,只是分析了如何发现这些配置并转化为 BeanDenifition 保存在 BeanFactory 中。下面将会分析,将 BeanDenifition 转化为 bean 对象的流程。AbstractApplicationContext 的 refresh 方法,会调用 finishBeanFactoryInitiali...原创 2019-10-23 18:00:03 · 644 阅读 · 0 评论 -
Spring注解配置分析(六)——@Bean注解分析
通过前面的分析,@Bean 注解的方法会 ConfigurationClassParser 的 parse 方法中添加到对应的配置类的 beanMethods 集合中。 @Bean 注解是用来代替之前 XML 配置 bean 对象,为了让容器管理 bean, 那么还需要将 @Bean 注解方法转化成合适的 BeanDenifition 注入到 BeanFactory 中才算是完成了对 @Bea...原创 2019-10-23 10:27:05 · 225 阅读 · 0 评论 -
Spring注解配置分析(五)——@EnableAutoConfiguration自动配置分析
前面已经分析过如何加载配置类以及相关的注解 @ComponentScan 和 @Import 注解,当然在处理配置类中还有其他注解需要解析,具体可以参考代码。在熟悉了加载配置类的过程之后,下面分析 SpringBoot 自动配置注解 @EnableAutoConfiguration。 使用 SpringBoot 开发的方便的原因就是在于这个注解自动配置了一些开发中经常需要使用的组件,下面通...原创 2019-10-18 11:51:17 · 244 阅读 · 0 评论 -
Spring注解配置分析(四)——@Import注解分析
首先按照源码注释说明一下 @Import 的作用声明一个Bean ( @Import 注解的类如果没有 @Configuration 注解,至少有一个 @Bean 注解的方法)导入一个 @Configuration 注解的配置类导入 ImportSelector 的实现类导入 ImportBeanDefinitionRegistrar 的实现类 在处理配置类时,先处理 @Com...原创 2019-10-17 09:50:31 · 441 阅读 · 0 评论 -
Spring注解配置分析(三)——@ComponentScan处理流程
前面已经介绍了配置类处理流程, 解析配置类的过程就是处理配置类上的各种注解,例如 @Import 、 @ComponentScan 、 @Component、 @ImportResource 等。下面分析 @ComponentScan 的处理过程。 ConfigurationClassParser 的 doProcessConfigurationClass 方法中利用 Component...原创 2019-10-12 17:28:41 · 476 阅读 · 0 评论 -
Spring注解配置分析(二)——ConfigurationClassPostProcessor处理配置类流程
ConfigurationClassPostProcessors 是处理配置类的处理器,前面已经知道它是在初始化 AnnotationConfigApplicationContext 时添加到 BeanFactory 中,并且作为一个 BeanDenifitionRegistryPostProcessor 在 AbstractApplicationContext 的 refresh 方法中被调...原创 2019-09-27 18:09:31 · 484 阅读 · 0 评论 -
Spring注解配置分析(一)——从启动到加载配置类
Spring是一个IOC容器,只要配置了bean之后在程序的其他地方可以自动注入实例,现在使用最多是注解配置,那么配置的那些 @Configuration、@EnableAutoConfiguration等注解是如何工作的呢?Spring是通过BeanFactory保存Bean的配置,那么BeanFactory如何创建?SpringApplication启动时在其run方法中会创建一个App...原创 2019-09-26 13:31:50 · 484 阅读 · 0 评论 -
《程序员代码面试指南》找到二叉树中符合搜索二叉树条件的最大拓扑结构
题目 与前一题不同,本题不是查找最大的子树而是拓扑结构,所以下面的解法都是采用由上到下的搜索得到最大的拓扑结构。思路思路一 如果要求最大的拓扑结构,那么最直接的办法就是对每一个节点进行一次搜索,计算以该节点为根节点的最大拓扑结构。所以现在问题是如何从根节点得到一个拓扑节结构。 在二叉搜索树中插入节点时,是通过查找一个能插入当前节点的空隙,这个空隙也就是一个范围。如果插入的节点是父节...原创 2019-08-07 13:57:09 · 273 阅读 · 0 评论 -
《程序员代码面试指南》找到二叉树中的最大搜索二叉子树
题目 题目要求找到最大的二叉搜索子树,补充一下子树的定义,从节点a开始,a以及a的所有后裔构成一个子树。如果不按照这个子树定义的话,书中给出的例子存在一个节点数为8的二叉树。解题思路思路一 判断一个二叉树是不是搜索二叉树一般的方法就是利用先序遍历,如果先序遍历序列是升序则是搜索二叉树,如果将此方法应用到本题,那么需要遍历所有子树。思路二 判断一个二叉树是否是搜索二叉树第二种方法的...原创 2019-08-06 14:03:07 · 242 阅读 · 0 评论