自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(192)
  • 收藏
  • 关注

转载 BIO、NIO、AIO、Netty面试题(35道含答案)

Java中I/O是以流为基础进行数据的输入输出的,所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据传输流,字符串流,对象流等等等。比如程序从服务器上下载图片,就是通过流的方式从网络上以流的方式到程序中,在到硬盘中BIO:同步并阻塞,服务器实现一个连接一个线程,即客户端有连接请求时服务器端就需要启动一。

2023-04-06 19:27:17 769

转载 TCP,UDP,Socket,Http网络编程面试题(47道含答案)

网络编程网络编程的本质是多台计算机之间的数据交换。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给其他设备,然后接受另外一个设备反馈的数据。现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈。在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(Client),等待其他程序连接的程序被称作服务器(Server)。客户端程序可以在需要的时候启动,而服务器为了能够时刻相应连接,则需要一直启动。

2023-04-06 19:21:02 1367

转载 Redis面试题(2022最新版)

redis面试题

2022-07-07 09:38:03 2211 1

转载 DDD领域模型设计

DDD领域驱动设计_靖节先生的博客-CSDN博客_ddd领域驱动设计

2022-05-07 14:11:44 432

转载 Google浏览器 安装 Elasticsearch-head 插件

第一步 下载插件下载插件地址:https://github.com/liufengji/es-head第二步 修改名称并解压将elasticsearch-head.crx更名为elasticsearch-head.rar 再解压;进入elasticsearch-head文件夹将_metadata文件夹重命名为metadata第三步 安装插件打开Google的扩展程序,点击加载已解压的扩展程序,选择解压elasticsearch-head文件夹即可添加插件成功...

2022-04-24 17:41:08 2015 2

转载 spring boot 学习文档

Spring Boot框架入门教程(快速学习版)

2022-04-12 11:38:44 131

转载 channelOption中的属性了解

ChannelOption类中的各个属性的定义publicstaticfinal ChannelOption<ByteBufAllocator> ALLOCATOR = valueOf("ALLOCATOR");Netty适用对象池,重用缓冲区public static final ChannelOption<RecvByteBufAllocator> RCVBUF_ALLOCATOR = valueOf("RCVBUF_ALLOCATOR");Ne...

2022-04-03 21:24:53 1201

转载 Netty中Channel的生命周期(SimpleChannelInboundHandler)

Netty中Channel的生命周期(SimpleChannelInboundHandler)_小龙哒的博客-CSDN博客_netty生命周期

2022-04-03 12:22:19 264

转载 dubbo官方文档

文档 | Apache Dubbo

2022-03-04 15:37:17 1313

转载 动静分离架构模式

1.动静分离概念动静分离(动态文件与静态文件的分离)是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。静态资源:当用户多次访问这个资源,资源的源代码永远不会改变的资源。 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变。2.为什么要用动静分离提高用户访问静态代码的速度,降低对后台应用访问。 Nginx作为静态资源服务器比Tocmat响应吞吐高很多;传统的架

2022-01-22 17:54:37 207

转载 缓存策略汇总

1.浏览器缓存浏览器自带缓存304:图片的默认缓存时间为7天客户端(浏览器)发送请求到服务器端 第一次请求的时候会缓存所有的静态资源到浏览器;客户端发送第二次请求的时候 如果本地浏览器有缓存,就使用本地浏览器的;Key:访问的urlvalue:具体的值信息原理:a、第一次下载资源的时候,客户端会保存修改时间b、第二次下载资源的时候,客户端上传修改时间,服务端决定返回200还304.----这种时间不一定准,所以请求的时候一般会加上一个时间戳或版本号信息强制刷新。http://www.ba

2022-01-22 17:52:17 714

转载 后端服务的雪崩效应及解决思路

1.RPC与本地调用的区别RPC远程调用,一般是跨平台、采用http协议,因为http协议底层使用socket技术,只要你的语言支持socket技术,就可以相互进行通讯。比如:java语言开发的接口,使用http协议,如此以来C#语言可以调用。本地调用:只支持java语言与java语言开发,使用虚拟机和虚拟机之间的通讯,RMI。2.雪崩效应产生的原因默认情况下只有一个线程池维护所有的服务接口,如果大量的请求访问同一个接口,达到tomcat线程池默认极限,可能会导致其他服务无法访问。3.雪

2022-01-22 17:44:24 206

转载 服务的隔离、降级和熔断

1.服务隔离、降级和熔断的产生背景tomcat底层都会共享一个线程池(自己创建的例外),当某个方法(服务)访问非常慢造成响应延迟,会造成大多数线程阻塞,导致整个线程池被占用甚至拖垮。线程名定义:线程池名称+线程ID2.服务隔离解决思路2.1 线程池隔离不同的http服务使用不同的线程池,当自己的资源用完,直接返回失败而不是占用别人的资源优点:可提高并发性缺点:增加CPU调度开销使用场景:第三方应用或接口;并发量大2.2 信号量隔离原子计数器方式记录当前运行的线程数,超过则拒绝,不超过则+

2022-01-22 17:41:40 305

转载 限流算法整理

漏桶算法和令牌桶算法的区别“漏桶算法”能够强行限制数据的传输速率 “令牌桶算法”在能够限制数据的平均传输速率外,还允许某种程度的突发传输。在“令牌桶算法”中,只要令牌桶中存在令牌,那么就允许突发地传输数据直到达到用户配置的门限,因此它适合于具有突发特性的流量。服务限流之漏桶算法一个固定的漏桶,以常量固定的速率流出水滴。 如果桶中没有水滴的话,则不会流出水滴如果流入的水滴超过桶中的流量,则流入的水滴可能会发生溢出,溢出的水滴请求是无法访问的,直接调用服务降级方法,桶中的容量是不会发生变化。

2022-01-22 17:16:41 100

转载 自定义封装限流算法

定义注解:@Target({ ElementType.METHOD })@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface ExtRateLimiter { // 以每秒为单位固定的速率值往令牌桶中添加令牌 double permitsPerSecond(); // 在规定的毫秒数中,如果没有获取到令牌的话,则直接走服务降级处理 long timeout();}定义AOP:@Asp.

2022-01-22 17:08:03 105

原创 高并发专题

1:接入层限流接入层通常指请求流量的入口,该层的主要目的有:负载均衡、非法请求过滤、请求聚合、缓存、降级、限流、A/B测试、服务质量监控等等,可以参考笔者写的《使用Nginx+Lua(OpenResty)开发高性能Web应用》。对于Nginx接入层限流可以使用Nginx自带了两个模块:连接数限流模块ngx_http_limit_conn_module和漏桶算法实现的请求限流模块ngx_http_limit_req_module。还可以使用OpenResty提供的Lua限流模块lua-resty-l

2022-01-22 16:47:47 98

转载 高性能IO框架Netty五 - Netty内置的编解码器

一、什么是编解码器就像我们用的Spring里面的HttpRequest对象,难道客户端传过来就是一个HttpRequest对象吗?很显然一般网络中传输都是通过字节流进行传输的。那么由字节流转为我们需要的对象的过程就叫做解码。从对象再转为字节流或者其他对象的过程,叫做编码。每个网络应用程序都必须定义如何解析在两个节点之间来回传输的原始字节,以及如何将其和目标应用程序的数据格式做相互转换。这种转换逻辑由编解码器处理,编解码器由编码器和解码器组成,它们每种都可以将字节流从一种格式转换为另一种格式。那么...

2022-01-13 16:20:11 582

转载 Netty内存分配策略

Netty 作为一款高性能的 RPC 框架必然涉及到频繁的内存分配销毁操作。图片来自 Pexels如果是在堆上分配内存空间将会触发频繁的 GC,JDK 在 1.4 之后提供的 NIO 也已经提供了直接直接分配堆外内存空间的能力,但是也仅仅是提供了基本的能力,创建、回收相关的功能和效率都很简陋。基于此,在堆外内存使用方面,Netty 自己实现了一套创建、回收堆外内存池的相关功能。基于此我们一起来看一下 Netty 是如何实现内存分配的。Netty 中的数据容器分类谈到数据保存肯定要说

2022-01-13 15:22:19 104

翻译 netty中channelOption属性

ChannelOption类中的各个属性的定义publicstaticfinal ChannelOption<ByteBufAllocator> ALLOCATOR = valueOf("ALLOCATOR");Netty适用对象池,重用缓冲区public static final ChannelOption<RecvByteBufAllocator> RCVBUF_ALLOCATOR = valueOf("RCVBUF_ALLOCATOR");Ne...

2022-01-12 16:55:16 698

转载 Netty 核心模块组件

Bootstrap、ServerBootstrap1.1 解释  一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件,Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类;1.2常见的方法  1. publicServerBootstrapgroup(EventLoopGroup parentGroup, EventLoopGroup childGroup),该...

2022-01-12 14:49:03 85

原创 seata 官方文档

Seata术语

2022-01-04 16:46:52 2212

转载 分布式链路追踪技术对比

常见开源产品cat, zipkin, pinpoint , skywalkingcat由大众点评开源,基于Java开发的实时应用监控平台,包括实时应用监控,业务监控 。 集成方案是通过代码埋点的方式来实现监控,比如: 拦截器,注解,过滤器等。 对代码的侵入性很大,集成成本较高。风险较大。支持技术栈:dubbo spring mvc ,spring aop ,springmvc-url spring boot mybatis log4j , logback p...

2021-12-29 17:18:10 436

转载 商城秒杀流程

商城秒杀流程

2021-12-25 23:58:57 610

转载 Sentinel介绍

一、Sentinel简介Sentinel是阿里开源的项目,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。二:Sentinel 功能和设计理念流量控制流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel 作为一个调配器,可以根据需要把随机的请求调整成合适的形状,如下图所示:

2021-12-24 16:34:09 240

原创 设计架构原型

2021-12-24 10:10:23 1200

转载 Spring Cloud全家桶

1、什么是微服务1.1、架构演进架构的发展历程是从单体式架构,到分布式架构,到SOA架构,再到微服务架构。图1:架构演进单体架构:未做任何拆分的Java Web程序图2:单体架构示意图分布式架构:按照业务垂直划分,每个业务都是单体架构,通过API互相调用。图3:分布式架构示意图SOA架构:SOA是一种面向服务的架构。其应用程序的不同组件通过网络上的通信协议向其它组件提供服务或消费服务,所以也是分布式架构的一种。图4:SOA架构示意图1.2、微服务架构

2021-12-23 19:30:29 140

转载 Springboot Condition 实用讲解

正文先看看 Condition 是被放在包spring context(上下文/容器) 里面了:spring context(上下文/容器)接着我们看看作者写的 Condition 源码:ps: 学东西,一定要看看源码,往往作者留下的注释比你自己千方百计找的解释都好,当然你找到我这边的文章,另当别论(别当真)。大致意思我给各位看官简述一下:利用 Condition ,在一个bean快被注册前, 我们可以根据任何的自由标准,立即触发条件的检查 ,使用 match...

2021-12-22 15:34:06 191

转载 SpringBoot 面试题

1. SpringBoot基础1.1 什么是SpringBoot?用来简化Spring应用的初始搭建以及开发过程,使用特定的方式来进行配置 创建独立的Spring引用程序main方法运行 嵌入的tomcat无需部署war文件 简化maven配置 自动配置Spring添加对应的功能starter自动化配置SpringBoot来简化Spring应用开发,约定大于配置,去繁化简1.2 SpringBoot有哪些优点?独立运行 Spring Boot 而且内嵌了各种 servlet 容

2021-12-22 14:39:34 206

转载 TCP、UDP、Socket、HTTP网络编程面试题

第一场:面试官:你说一下TCP的三次握手 我:第一次Client将SYN置1......、第二次Server收........、 第三次........ 面试官:很难背吧? 我:......是啊,很难,要不我在和你说说四次挥手? 面试官:别了别了回去等通知吧...... 我:"......"第二场:心里憋了一万个草泥马来到的第二家.... 面试官:你说一下TCP的三次握手 我(心里在想,还来?):没什么好说的,就是为了保持一次网络通信交互正常 面试官:你能说的清楚一点吗? 我:.

2021-12-21 14:35:32 376

转载 netty 学习

学习网址:Netty 异步和数据驱动_w3cschool概览:Netty 是什么?为什么要用 Netty?Netty 应用场景了解么?Netty 核心组件有哪些?分别有什么作用?EventloopGroup 了解么?和 EventLoop 啥关系?Bootstrap 和 ServerBootstrap 了解么?NioEventLoopGroup 默认的构造函数会起多少线程?Netty 线程模型了解么?Netty 服务端和客户端的启动过程了解么?Netty 长连接、心跳机制了解么?Netty 的零

2021-12-20 14:33:37 103

转载 LVS与Nginx区别

lvs和nginx都可以用作多机负载方案,他们各有优缺点,在生产环境中需要好好分析实际情况并加以利用。一、lvs的优势:1.抗负载能力强,因为lvs工作方式的逻辑是非常简单的,而且工作在网络的第4层,仅作请求分发用,没有流量,所以在效率上基本不需要太过考虑。lvs一般很少出现故障,即使出现故障一般也是其他地方(如内存、CPU等)出现问题导致lvs出现问题。2.配置性低,这通常是一大劣势同时也是一大优势,因为没有太多的可配置的选项,所以除了增减服务器,并不需要经常去触...

2021-12-13 17:28:27 1127

转载 高并发性能指标:QPS、TPS、RT、并发数、吞吐量

高并发系统系统指标高并发系统核心指标一、QPS,每秒查询QPS:Queries Per Second是衡量信息检索系统(例如搜索引擎或数据库)在一秒钟内接收到的搜索流量的一种常见度量。该术语在任何请求-响应系统中都得到更广泛的使用,更正确地称为每秒请求数(RPS:Request Per Second)。高性能、高并发、高可用(简称“三高”)要求的系统必须注意其QPS,才能知道何时扩容系统以处理更多请求。二、TPS,每秒事务TPS:是Transactions Per Secon

2021-12-13 14:21:59 8084

转载 高并发解决思路

1:认识高并发问题高并发指的是:在同时或极短时间内,有大量的请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应的反馈。高并发问题的本质就是:资源的有限性,比如:带宽、CPU、内存、IO等。就是因为资源有限,我们不可能同时去处理并满足这些大量的请求,从而带来一系列的问题,统称就是高并发的问题。2:高并发解决思路从服务端来解决高并发问题的话:核心思想:分而治之——请求分流。现在不是同时来了太多的请求吗?我一台服务器肯定处理不过来啊,那我就开始分流,先增加服务器数量,比如

2021-12-13 11:53:27 1092

转载 Spring和SpringBoot比较

什么是Spring作为Java开发人员,大家都Spring都不陌生,简而言之,Spring框架为开发Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,如:SpringJDBC、SpringMVC、SpringSecurity、SpringAOP、SpringORM、SpringTest,这些模块缩短应用程序的开发时间,提高了应用开发的效率例如,在JavaWeb开发的早期阶段,我们需要编写大量的代码来将记录插入到数据库中。但是通过使用SpringJDB...

2021-12-06 16:19:18 384

转载 堆排序——Java实现

一、堆排序 堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。二、堆 什么是堆 堆是一个树形结构,其实堆的底层是一棵完全二叉树。而完全二叉树是一层一层按照进入的顺序排成的。按照这个特性,我们可以用数组来按照完全二叉树实现堆。 大顶堆与小顶堆 大顶堆原理:根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,...

2021-12-04 17:27:15 321

转载 Java中的21种锁

本篇文章已收纳到我的Java在线文档、 Github我的SpringCloud实战项目持续更新中帮你总结好的锁:序号 锁名称 应用 1 乐观锁 CAS 2 悲观锁 synchronized、vector、hashtable 3 自旋锁 CAS 4 可重入锁 synchronized、Reentrantlock、Lock 5 读写锁 ReentrantReadWriteLock,CopyOnWrite...

2021-11-19 15:53:29 136

转载 Java中的各种锁的分类

一. synchronized在 JDK 1.6 之前,synchronized 是重量级锁,效率低下。从 JDK 1.6 开始,synchronized 做了很多优化,如偏向锁、轻量级锁、自旋锁、适应性自旋锁、锁消除、锁粗化等技术来减少锁操作的开销。synchronized 同步锁一共包含四种状态:无锁、偏向锁、轻量级锁、重量级锁,它会随着竞争情况逐渐升级。synchronized 同步锁可以升级但是不可以降级,目的是为了提高获取锁和释放锁的效率。synchronized 的底层原理s

2021-11-19 15:32:26 555

转载 分布式全局唯一ID

每一次HTTP请求,数据库的事务的执行,我们追踪代码执行的过程中,需要一个唯一值和这些业务操作相关联,对于单机的系统,可以用数据库的自增ID或者时间戳加一个在本机递增值,即可实现唯一值。但在分布式,又该如何实现唯一性的ID分布式ID的特性 数据库自增的ID Redis分布式ID Zookeeper分布式ID 全局唯一UUID的优缺点 Twitter的雪花算法生成分布式ID关注公众号,一起交流,微信搜一搜: 潜行前行github地址,感谢star分布式ID的特性全局唯一性,必须性

2021-11-16 17:00:07 94

转载 开发必备linux命令大全

我们的服务一般都是在linux系统运行,因此了解一些关于linux命令是必须。接下来将一一详细介绍一些常用的linux的命令文件操作 远程登录与操作 磁盘挂载 进程管理 启动和结束 系统性能参数查看 网络数据抓取 shell 脚本命令 jvm 常用命令关注公众号,一起交流,微信搜一搜: 潜行前行1 文件操作命令findfind 用于在指定目录下查找文件或子目录,如果不指定查找目录,则在当前目录下查找 命令格式:·find path -option [-print] [ -e

2021-11-16 16:48:34 194

转载 跳跃表的原理和实现

一、高效查找算法我们在实际开发中经常会有在一堆数据中查找一个指定数据的需求,而常用的支持高效查找算法的实现方式有以下几种:有序数组:这种方式的存储结构,优点是支持数据的随机访问,并且可以采用二分查找算法降低查找操作的复杂度。缺点同样很明显,插入和删除数据时,为了保持元素的有序性,需要进行大量的移动数据的操作。 二叉查找树:如果需要一个既支持高效的二分查找算法,又能快速的进行插入和删除操作的数据结构,那首先就是二叉查找树莫属了。缺点是在某些极端情况下,二叉查找树有可能变成一个线性链表。 平衡二叉树

2021-11-16 16:45:22 661

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除