蘑菇街后端开发工程师
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
在学习数据结构时学到了链表,因为日常工作,写java写多了,想换个语言玩下,就试着想用scala实现一个链表。哪到知道碰到很多问题, 这里记录下使用scala时,所遇到的那些坑。
这篇博客,主要会分析spring aop是如何实现代码增强的。 从上一篇博客 我们大概知道,spring能在不改变代码的前提下,往一个方法的之前和之后添加代码。
我们都知道spring aop的底层是动态代理,这篇博客会分析下spring aop的实现原理。当然,spring aop的实现还是非常复杂的,这里会拆成多篇博客分析。
spring源码已经看了很久了,在对spring源码越来越熟悉的同时,也想对这一次的源码学习做个阶段性的总结。这次总结也不会一次写完,会在后续逐渐完善。 spring与设计模式 spring对于设计模式的应用,可以说非常的多。
这篇博客介绍了scala的数组 + 可变数组的基本使用,及其与java数组的区别(博客中代码参照 快学scala) scala数组基本操作 def main(args: Array[String]): Unit = { //new一个大小不变...
之前分析spring的依赖注入时,主要分析的是xml配置方式。但是在实际项目中,我们其实用的更多的是注解方式。这一篇博客会分析下spring是如何处理这种注解注入的。
上一篇博客简单地分析了下依赖注入。但是对于依赖注入的很多细节,都没有深入的分析。这一篇博客会继续分析spring的依赖注入。这篇博客会解决分析getBean缓存时候遗留下来的循环依赖问题。
在分析初始化bean时候,我跳过了非常重要的一步,关于spring的依赖注入。这篇博客会分析spring是如何帮我们实现依赖注入的。 开始之前 在分析spring依赖注入之前,我先想下,如果不用spring我是如何进行注入的。
上一篇博客,讲了下spring如何初始化bean的 当然,当时只讨论了很简单的一种情况:初次加载bean时候,并且只考虑了单例。 这篇博客会试着理清楚spring在加载bean的时候的一部分缓存。
上一篇博客,讲了下spring如何解析xml,并将我们的配置转换成BeanDefinition,最终注册到BeanDefinitionRegistry中(默认实现,DefaultListableBeanFactory)接下来就要说明,spring拿到这个BeanDefinition后,如何将其初始化。
上一篇博客介绍了spring如何解析配置文件,这篇文章会补充spring解析xml的细节及如何将这些对象封装为BeanDefinition DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions 上一篇文章差不多说到这个入口,这里继续跟下去。
上一篇博客说明了下spring是如何找到资源文件的,classpath下的xml,最终会被解析为 ClassPathContextResource,下面进一步分析,有了这个资源文件之后spring是如何将其解析为BeanDefinition的 入口XmlBeanDefinitionReader.
spring是日常开发中用的非常多的一个框架,那么spring究竟是如何帮我们简化开发?短短的几行配置里,spring究竟做了啥?后续几篇博客会分析下spring的源码。
概述 使用过spring aop的人应该都知道,spring是通过动态代理来实现的。而动态代理听过的有jdk的动态代理以及cglib的动态代理。究竟这两种代理方式有什么区别,好奇研究了下。
概述 使用zookeeper自己来实现选举还是有点麻烦的(使用zookeeper实现选举),这个时候可以使用curator 正如官网所说,curator对于zookeeper就像guava对于java,它让我们能更加便利、可靠地使用zookeeper。
概述 分布式的集群很容易有“选举”的需求,所谓的选举可以先简单的理解为选出集群多个节点的“老大”(leader) 例子1 —— 主从节点选举 举个不是很恰当的例子(mysql不是使用zk来做选举的),我们使用mysql时候,为了做到高可用,可能会同时布两个mysql,一主多备。
概述 最开始使用原生的springmvc时,总是免不了有如下xml配置 spring org.springframework.web.
Kafka的Replica 概念 kafka的replica指的是消息的备份,为了保证kafka的高可用(当leader节点挂了之后,kafka依然能提供服务)kafka提供了备份的功能。
工作也快两年了。总想着有时间,写点什么,做个总结。然而,太懒了。。总是各种理由推脱。想要做什么,总归要有个开始,趁现在有时间定下这个目标,写出来了就是承诺,一定要做到啦。
kafka简单使用 //1、consumer基本配置 Properties props = new Properties(); props.put("zookeeper.
正则表达式获取匹配到的字符串 //需要匹配出来的地方用括号括起来 val pattern="""(.*)\[(.*)\]""".r //新建一个正则表达式 val pattern(ele,str)="fff[ascdrewr]" println(s"$ele,$str") 这样有个问题,当匹配不到会抛异常 image.
java 与 scala 正则表达式 本篇文章用于比较java与scala正则表达式的差别 检查某个字符串是否匹配某个正则表达式 java 版本 核心方法 string.
java 泛型数组初始化 public class GenericArray { private T[] arr; public GenericArray(){ arr = new T[10]; //编译错误 } } 使用这样的方式初始化java的数组会出错,因为java不支持泛型数组。