
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
嘿嘿,一不小心从25年鸽到了26年,,还记得我们在这里留了一点尾巴,也就是JUC(java.util.concurrent包),里面包括一些多线程相关工具,接下来我们就来介绍一下。

在日常开发中,我们几乎每天都在和“文件”打交道:读取配置文件、写日志、上传下载文件……但很多时候,我们对“文件”的理解其实是比较模糊的,这篇文章我们将从文件的基本概念出发,重新了解一下文件~

不出意外这是多线程的最后一篇文章,主要介绍的是面试中比较常考的一个点——多线程下使用容器,我们开始吧~我们知道,在单线程环境下ArrayList、HashMap等容器使用起来非常方便,但在多线程环境中,如果多个线程同时对容器进行修改,就可能导致数据不一致、数组越界甚至死循环等问题那么在多线程环境下我们该如何安全地使用这些容器呢?

上一篇文章中,我们介绍了Java IO中的字节流,并通过InputStream / OutputStream 完成了文件的读写操作字节流以byte为最小单位,能够精确地操作文件中地原始数据,因此非常适合处理图片、视频等二进制文件而在实际开发中,我们更多面对的是文本文件,此时开发者真正关心的往往不是“字节”,而是“字符”为了解决文本读写以及字符编码相关的问题,Java在字节流之上,有提供了一套的抽象

通过上文我们知道,流是一个操作系统层面的概念,本质上,流表示的是Java提供了一组IO相关的类,用来统一描述对数据的输入和输出操作。

现在,BService已经是完整对象,Spring回到AService,将BService注入进AService,AService创建完成Spring能解决循环依赖的前提,是Bean在依赖注入之前,就已经有了一个真实存在的对象实例也就是说,构造方法先执行,对象先“出生”,再慢慢补齐依赖这正是字段、Setter注入能被解决的原因。

)通过这种方式,可以显示指定需要扫描的包路径。

书接上文,我们已经把对象交给了 Spring,类被注册为 Bean,依赖由容器注入,一切看起来都非常优雅。Bean 在什么时候创建?依赖在什么时候注入?初始化方法什么时候执行?上一篇,我们已经把这些问题拆得很清楚了,但事情并没有结束你有没有想过一个问题:你拿到的,真的就是当初 new 出来的那个 UserService 对象吗?如果你在项目里用过事务、日志、权限校验、监控……

前情提要:前文书我们说到Spring AOP并不会修改原始Bean,而是通过代理对象,接管方法调用过程那么问题来了,这个代理对象是怎么来的?是谁生成的?为什么它看起来像原始对象?答案就俩字:代理这篇文章,我们就来详细介绍一下这两种机制以及他们之间的区别。

正如标题所言,这篇文章来介绍一下我是怎么使用zookeeper+dubbo成功搭建一个分布式项目的。








