2 沈霆盛

学生身份

我要认证

欢迎互关,一起学习,共同进步

等级
TA的排名 2w+

为什么要重写 hashCode() 和 equals()

目录Object 的 hashCode() 与 equals()hashCodeequals重写 equals() 的场景String 的 equals()重写 hashCode() 的场景Object 的 hashCode() 与 equals()hashCodepublic native int hashCode();原生的 hashCode() 是一个本地方法,返回的是根据物理地址换算出来的一个唯一值。equalspublic boolean equals(Object obj) {

2020-07-19 17:47:06

关于 String、StringBuffer、StringBuilder 的常见面试题

目录String创建方式一方式二方式三最大长度拼接方式一方式二StringBuilderappendtoStringStringBuffertoStringString类不可变(final),内部维护的 char[] value 数组不可变(final)。创建方式一String str = "xxx";字符串常量池如果有 “xxx”,不创建对象;如果没有,在字符串常量池创建"xxx"。方式二String str = new String("xxx");字符串常量池如果有 “xxx”,创

2020-07-19 16:45:15

Docker 面试题

目录DockerDocker镜像Docker容器Docker仓库Docker与虚拟机有何不同Docker的工作原理Docker容器的几种状态DockerDocker是一个容器化平台,它以容器的形式将应用程序及其所有依赖项打包在一起,以确保应用程序在任何环境中运行。Docker镜像Docker 镜像是 Docker 容器的只读模板,用于创建容器。Docker容器Docker容器包括应用程序及其所有依赖项,但与其他容器共享内核,作为主机操作系统上用户空间中的独立进程运行。Docker容器不依赖于任何

2020-07-19 11:48:09

Eureka 的多级缓存设计

目录三种缓存三种缓存Eureka Server 存在三个变量:registry、readWriteCacheMap、readOnlyCacheMap 保存服务注册信息。类 AbstractInstanceRegistryprivate final ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>> registry = new ConcurrentHashMap<

2020-07-18 18:17:55

SpringBoot 整合 Mybatis 源码阅读(2.3.1.RELEASE)

目录从 spring.factories 开始MybatisAutoConfiguration@MapperScanMapperScannerRegistrarrefreshinvokeBeanFactoryPostProcessorsConfigurationClassPostProcessor从 spring.factories 开始导入依赖 mybatis-spring-boot-starter 后,会出现如图所示这么一个包,主要看 MybatisAutoConfigurationMybati

2020-07-14 10:02:41

EurekaClient 服务注册流程

服务注册的入口 这篇文章最后一段代码@Overridepublic void start() { // only set the port if the nonSecurePort or securePort is 0 and this.port != 0 if (this.port.get() != 0) { if (this.registration.getNonSecurePort() == 0) { this.registration.setNonSecurePort(this.p

2020-07-12 16:54:01

服务注册的入口

目录接口服务注册的触发路径接口SpringCloud 是一个生态,它提供了一套标准,这套标准可以通过不同的组件来实现,其中就包含服务注册/发现、熔断、负载均衡等,在 spring-cloud-commons 这个包中, org. springframework. cloud. client. serviceregistry路径下,可以看到个服务注册的接口定义 ServiceReglstry。它就是定义了 SpringCloud 中服务注册的一个接口。public interface Servi

2020-07-12 14:34:17

Spring5 源码阅读笔记(1.5)finishRefresh() 完成刷新

protected void finishRefresh() { //清空上下文级别的资源缓存 clearResourceCaches(); //初始化上下文的LifecycleProcessor 见1.5.1 initLifecycleProcessor(); //调用所有LifeCycle的start方法 见1.5.2 getLifecycleProcessor().onRefresh(); //发布ContextRefreshedEvent publishEvent(new Co

2020-07-12 11:26:54

Eureka 自我保护机制

什么是自我机制?自我保护机制是一种应对网络异常的安全保护措施。它的架构哲学是宁可保留不健康的微服务,也不轻易注销健康的微服务。Eureka在运行期间会统计全部服务总体的心跳失败的比例,在15分钟内是否低于85%。如果低于,则认为是网络异常问题,应该保护,Eureka Server会将当前的实例注册信息保护起来,同时提示一个警告。一旦进入保护模式:Eureka Server将会不再删除服务注册表中的数据。也就是不会注销任何微服务。Eureka server仍然能够接受新服务的注册和查询请求,但是不

2020-07-11 20:54:30

push 和 pull 的优缺点

push 和 pull 的优缺点push优点缺点适用场景优化pull优点缺点优化方案适用场景push优点生产者主动推送给消费者,及时性很高缺点当消费者消费能力远低于生产者生产能力,那么一旦生产者推送大量消息到消费者时,就会导致消费者消息堆积,处理缓慢,甚至服务崩溃。(那么如何解决这个问题呢?需要mq提供流控制,也就是依据消费者消费能力做流控。比如rabbitmq设置Qos,限制消费数量。)生产者需要维护和每个消费者之间的会话。适用场景对于数据实时性要求高的场景优化不采用

2020-07-09 16:44:50

Netty 源码阅读笔记(4) ServerBootStrap

目录类关系图4 bind4.1 initAndRegister4.1.1 newChannel4.1.2 init4.1.2.1 ServerBootstrapAcceptor类关系图4 bind类 AbstractBootstrappublic ChannelFuture bind() { validate(); SocketAddress localAddress = this.localAddress; if (localAddress == null) {

2020-07-05 17:34:28

Netty 源码阅读笔记(5) NioServerSocketChannel

目录类关系图5.1 构造方法类关系图5.1 构造方法public NioServerSocketChannel() { this(newSocket(DEFAULT_SELECTOR_PROVIDER));}public NioServerSocketChannel(ServerSocketChannel channel) { //注册接收事件 super(null, channel, SelectionKey.OP_ACCEPT); config = ne

2020-07-04 21:03:56

Netty 源码阅读笔记(6) DefaultChannelPipeline

目录类关系图6.1 构造方法6.1.1 TailContext6.1.2 HeadContext类关系图6.1 构造方法protected DefaultChannelPipeline(Channel channel) { this.channel = ObjectUtil.checkNotNull(channel, "channel"); succeededFuture = new SucceededChannelFuture(channel, null); voidPro

2020-07-04 21:01:34

Netty 源码阅读笔记(1) NioEventLoopGroup

目录类结构图1.1 构造方法1.1.1 newChild类结构图1.1 构造方法public NioEventLoopGroup() { this(0);}public NioEventLoopGroup(int nThreads) { this(nThreads, (Executor) null);}public NioEventLoopGroup(int nThreads, Executor executor) { this(nThreads, executo

2020-07-04 19:39:18

Netty 源码阅读笔记(3) NioEventLoop

目录类关系图3.1 构造方法3.2 run3.2.1 select3.2.2 processSelectedKeys类关系图3.1 构造方法NioEventLoop(NioEventLoopGroup parent, Executor executor, SelectorProvider selectorProvider, SelectStrategy strategy, RejectedExecutionHandler rejectedExecutionHandler)

2020-07-04 19:33:51

Netty 源码阅读笔记(2)ThreadPerTaskExecutor

public final class ThreadPerTaskExecutor implements Executor { private final ThreadFactory threadFactory; public ThreadPerTaskExecutor(ThreadFactory threadFactory) { if (threadFactory == null) { throw new NullPointerException("

2020-07-04 15:32:46

基于 SpringBoot 手写 RPC 框架

目录文件目录Messageconsumer@EnableRpcConsumer@ReferenceReferenceInvokeProxyRpcHandlerprovider@EnableRpcProvider@ServiceBeanMethodInitialMediatorMediatorServiceHandlerSocketServerInitial示例consumer启动类配置文件TestControllerprovider启动类配置文件ExampleServiceImpl结果文件目录Mess

2020-06-20 11:46:48

序列化相关面试题

1.如果一个子类实现了序列化,父类没有实现,那么父类中的成员变量能否被序列化?不会。2.transient是干嘛的?有什么方法能够绕过transient的机制?这个实现机制的原理是什么?transient是干嘛的?transient 关键字的作用是控制变量的序列化,在变量声明前加上该关键字,可以阻止该变量被序列化(Java 的序列化方式)到文件中,在被反序列化后,transient 变量的值被设为初始值。有什么方法能够绕过transient的机制?虽然 name 被 transient 修饰,但

2020-06-16 16:05:47

如何选择线程池最优线程数

目录任务分类公式公式一公式二对比联想CPU密集型IO密集型任务分类我们一般用一个线程池做同一种类型的任务,而不是把各种类型的任务都丢进同一个线程池执行。而任务可以分成2种类型:CPU 密集型、IO密集型。公式先来看看2个公式,这两个公式适用任何一种类型。公式一Nthreads = Ncpu x Ucpu x (1 + W/C)其中:Ncpu = CPU的核心数量Ucpu = CPU的使用率, 0 <= Ucpu <= 1W/C = 等待时间与计算时间的比率注意: Inte

2020-06-12 16:51:22

什么是 RESTful ?

目录约束Representational State TransferResourcesRepresentationalState Transfer约束前后端分离出现后,后端提供给前端的 API 应该如何设计成则便于理解、容易使用的,成了一个问题。而所谓的 RESTful 就是用来规范后端提供的 API 的一种约束。Representational State TransferRESTful,意思是 REST 风格的。REST 是 Representational State Transfer 的

2020-06-10 10:13:17

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力探索
    原力探索
    参与《原力计划【第二季】——打卡挑战》的文章入选【每日精选】的博主将会获得此勋章。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。