4 Java识堂

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 1k+

面试官:说一下NIO和BIO的区别

介绍BIO,面向流,只能读或者只能写,阻塞IONIO,面向缓冲区,可以同时进行读写,非阻塞IO整个BIO的继承关系如上图,每种流只能写或者读,整个BIO流的设计用了装饰者模式,如果你不清楚的话,可以看《面试官:说一下装饰者模式的作用,以及哪些地方用到了装饰者模式吧》,本文不再介绍NIO涉及到的api主要为Buffer Channel Selector。Buffer可以用来存储和读取数据,Channel是网络通道,Selector主要用来监听事件的发生。后续的内容会简单介绍一下三者是如何协同.

2020-10-18 22:17:40

面试官:如何查看/etc目录下包含abc字符串的文件?

介绍其实这种需求在工作中用的还是很多的,例如进行数据库迁移的时候,就得知道哪些项目用了指定的数据库,如果一个一个查看配置文件还是很费时间的。我想到的有2种写法第一种写法find /etc -type f | xargs grep -l 'abc'第二种写法grep -rl abc /etcfind命令还是挺强大的,我打算重开一篇好好分享一下,今天就先分享一下grep egrep的使用用法使用一般有如下两种形式第一种形式grep [option] [pattern] [file1,.

2020-10-11 23:29:47

面试官:maven jar包冲突如何解决?

先介绍2个概念依赖传递假设我们现在有一个多模块项目,依赖关系如图,我们在st-web模块中引入st-dal依赖时,st-common-lib这个依赖也会被我们引入,这个就是依赖传递,下表中列出了scope在依赖过程中发生的变化,列标题为被依赖的模块,每行为要依赖的模块compiletestprovidedruntimecompilecompile--runtimetesttest--testprovidedprovided-provide.

2020-10-11 23:21:38

面试官:我想把Spring Boot项目放在tomcat中运行,该怎么配置?

介绍继承SpringBootServletInitializer并重写configure方法spring-boot-starter-tomcat的scope改为provided打包方式改为war<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <sco.

2020-10-11 23:17:26

面试官:说一下Spring MVC的执行流程,为什么要这么设计?

手写一个Spring MVC我们先手写一个Spring MVC,让你对Spring MVC的整体实现有一个基本的认识github代码:https://github.com/erlieStar/servlet-learningv3分支用的是servlet 3.0所以就不用web.xml了,全程注解定义注解@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface Controller { .

2020-10-11 19:27:43

RabbitMQ系列教程五:RabbitMQ如何保证消息的可靠投递

介绍一个消息往往会经历如下几个阶段所以要保证消息的可靠投递,只需要保证这3个阶段的可靠投递即可生产阶段这个阶段的可靠投递主要靠ConfirmListener(发布者确认)和ReturnListener(失败通知)前面已经介绍过了,一条消息在RabbitMQ中的流转过程为producer -> rabbitmq broker cluster -> exchange -> queue -> consumerConfirmListener可以获取消息是否从producer.

2020-10-09 00:19:48

RabbitMQ系列教程六:如何处理消费过程中的重复消息?

介绍看到本节的题目你有可能会想怎么会遇到消费重复消息的场景呢?生产者只发送一次不就行了,或者消息队列自动把重复的消息丢掉不就行了当生成者成功发送消息到broker,但是没有得到响应时,会重新发送消息到broker,此时broker中就会有重复的消息。如果不重试的话就有可能造成消息丢失。MQTT协议中阐明了消息传递的三种服务质量,这三种服务质量从低到高是At most once:至多一次,消息在传递时,最多被送达一次At least once:至少一次,消息在传递时,至少被送达一次Exact.

2020-10-08 19:22:32

RabbitMQ系列教程四:RabbitMQ整合Spring Boot

介绍github地址:https://github.com/erlieStar/rabbitmq-examplesSpring有三种配置方式基于XML基于JavaConfig基于注解当然现在已经很少使用XML来做配置了,只介绍一下用JavaConfig和注解的配置方式RabbitMQ整合Spring Boot,我们只需要增加对应的starter即可 <dependency> <groupId>org.springframework.boot</gr.

2020-10-07 18:05:51

RabbitMQ系列教程二:RabbitMQ的安装及图形界面的使用

安装RabbitMQDocker安装(建议)可能有小伙伴没用过Docker,这里就简单介绍一下Docker的安装centos7安装# 安装yum install docker# 如果想卸载,可以先查找安装的docker包,然后remove即可yum list installed | grep dockeryum remove -y(-y不询问)包名启动# 启动dockerservice docker start# 关闭dockerservice docker stop# 设置开

2020-10-07 13:38:17

深入理解 Java try-with-resource 语法糖

背景众所周知,所有被打开的系统资源,比如流、文件或者Socket连接等,都需要被开发者手动关闭,否则随着程序的不断运行,资源泄露将会累积成重大的生产事故。在Java的江湖中,存在着一种名为finally的功夫,它可以保证当你习武走火入魔之时,还可以做一些自救的操作。在远古时代,处理资源关闭的代码通常写在finally块中。然而,如果你同时打开了多个资源,那么将会出现噩梦般的场景:public class Demo { public static void main(String[] args.

2020-09-27 22:48:02

糟了,银行线上跑了一年的代码出事故了

介绍周末在水群的时候,发现有个小伙伴遇到了一个线上问题线程池中线程的状态只有一个为RUNNABLE,其他都为WAITING,问有可能是哪些原因造成的?线程池有25个线程,只有一个线程卡在网络读取上面,状态为RUNNABLE,其他线程都为WAITING。本来我想让这个小伙伴把代码发过来看看的,可他却说自己做的是银行的项目,连不上外网,只能用手机开视频对着电脑让我看个大概。我复原一下这个代码的场景,估计很多小伙伴一下就能发现问题了,因为我把多余的代码都省略了,只留了会造成问题的代码public .

2020-09-19 17:03:13

面试官:Dubbo是如何同时支持同步调用和异步调用的?

介绍前面一篇文章说到,我用CompletableFuture将调用2个服务的过程异步化了一下。其实Dubbo接口本身就支持异步调用,我们可以直接获取一个CompletableFuture对象,不用自己去新建。来演示一下同步调用和异步调用的两种方式同步调用DemoService demoService = context.getBean("demoService", DemoService.class);String hello = demoService.sayHello("world");/

2020-09-12 18:34:19

面试官:如果我一直往线程池里面放任务,会发生什么?

线程池的各种参数面试的时候最常问的就是线程池的各种参数的含义,和线程池的整个运行流程,这个一定要会ThreadPoolExecutor一共有4个构造函数,但最后调用的都是如下构造函数参数含义corePoolSize核心线程池大小maximumPoolSize线程池最大容量大小keepAliveTime线程池空闲时,线程存活的时间TimeUnit线程活动保持时间的单位BlockingQueue<Runnable>任务队列,用于保存等待执.

2020-09-12 17:10:40

异步神器CompletableFuture

介绍上个礼拜我们线上有个接口比较慢,这个接口在刚开始响应时间是正常的。但随着数据量的增多,响应时间变慢了。这个接口里面顺序调用了2个服务,且2个服务之间没有数据依赖。我就用CompletableFuture把调用2个服务的过程异步化了一下,响应时间也基本上缩短为原来的一半,问题解决。正好上次分享了函数式接口和Stream的使用,这次就分享一下CompletableFuture,里面也用到了大量的函数式接口想方便的异步执行任务,就必须放到单独的线程中。继承Thread类,实现Runnable都不能拿

2020-09-07 23:04:14

面试官:cookie和session是怎么交互的?

介绍Http协议使用的是无状态连接,这样会造成什么问题呢?看如下Demo@RestControllerpublic class LoginController { @RequestMapping("login") public String login(HttpServletRequest request, @RequestParam("username") String username) { request.setAttribute("username", us.

2020-09-03 22:10:48

面试官:说一下八种基本数据类型及其包装类吧

介绍整型:byte,short,int,long浮点型:float,double逻辑型:boolean字符型:char原始类型原始类型所占的字节数包装类byte1个字节Byteshot2个字节Shortint4个字节Integerlong8个字节Longfloat4个字节Floatdouble8个字节Doubleboolean1个字节Booleanchar2个字节Character要注意的是基本.

2020-09-01 22:12:37

强大的Stream

介绍Stream不会存储元素Stream不会改变原来的数据,会返回一个新的持有结果的StreamStream的步骤创建Stream一系列中间操作中止操作中间操作中止操作查找与匹配函数名解释allMatch是否匹配所有元素anyMatch是否至少匹配一个元素noneMatch是否没有匹配所有元素findFirst返回第一个元素findAny返回当前流中的任意元素count返回当前流中元素总个数max返回流中最大

2020-08-31 12:39:06

微服务项目(Spring Cloud,Dubbo)如何自测?

前言测试框架有很多,Junit,EasyMock,PowerMock,TestNG,DBUnit等。建议重要的业务流程写单测,使用Junit,EasyMock测试框架假如业务类为A,单测类的命名方式为ATest,ATest类和A类的包结构保持一致,测试的方法名保持一致IDEA快速生成Test类所在类按快捷键Win:Ctrl + Shift + TMac:⇧ + command + T选中要单测的方法点击OK即可EasyMock在微服务应用中,有时候需要调用别人的服务,在别人接口没开

2020-08-22 14:23:04

面试官:你们项目中是怎么解决跨域的?

跨域问题现在绝大多数公司的项目都是前后端分离的,前后端分离后势必会遇到跨域问题。如下图继续debug发现,reponse为undefined,提示消息为Network Error。所以当你和前端联调的时候一直请求失败,报网络错误,一般情况下是后端没有做跨域配置。注意此时并不是后端没有收到请求,而是收到请求了,也返回结果了,但是浏览器将结果拦截了,并且报错。同源策略那么浏览器为什么会报错呢?因为浏览器基于安全考虑而引入的同源策略当协议+域名+端口三者都相同时,才不会产生跨域问题,即同.

2020-08-12 21:39:25

一文讲清Dubbo SPI

介绍最近看了一下Dubbo的源码,国人写的框架和国外的果然是两种不同的风格,Dubbo的源码还是比较清晰容易懂的。Spring框架一个Bean的初始化过程就能绕死在源码中.Dubbo的架构是基于分层来设计的,每层执行固定的功能,上层依赖下层,下层的改变对上层不可见,每层都是可以被替换的组件Service和Config为API接口层,让Dubbo使用者方便的发布和引用服务其他各层均为SPI层,意味着每层都是组件化的,可以被替换例如,注册中心可以用Redis,Zookeeper。传输协议可以用dub

2020-08-08 17:51:16

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力计划专属勋章
    原力计划专属勋章
    2019年《原力计划【第一季】》专属勋章,现已经开启第二季活动啦,小伙伴们快去参加吧
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 博客之星-入围
    博客之星-入围
    授予每年博客之星评选结果第21-200名的用户
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 分享精英
    分享精英
    成功上传11个资源即可获取