自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot集成RabbitMQ

介绍RabbitMQ之前先说一下AMQP协议:AMQP,即Advanced Message Queuing Protocol(高级消息队列协议),一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。AMQP 其实和Http一样 都是一种协议, 只不过 Http是针对网络传输的, 而AMQP是基于消息队列的。

2024-03-27 17:11:14 1142

原创 Spring Cloud - Openfeign 实现原理分析

OpenFeign 是一个声明式 RESTful 网络请求客户端。OpenFeign 会根据带有注解的函数信息构建出网络请求的模板,在发送网络请求之前,OpenFeign 会将函数的参数值设置到这些请求模板中。虽然 OpenFeign 只能支持基于文本的网络请求,但是它可以极大简化网络请求的实现,方便编程人员快速构建自己的网络请求应用。

2024-03-26 15:00:19 679

原创 SpringCloud - 架构体系详解

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

2024-03-25 10:54:59 661

原创 Elasticsearch面试系列-03

副本是分片的完整拷贝,副本的作用是增加了查询的吞吐率和在极端负载情况下获得高可用的能力。副本有效的帮助处理用户请求。

2024-03-22 14:50:50 1244

原创 Elasticsearch面试系列-02

1)根据业务增量需求,采取基于日期模板创建索引,通过roll over API滚动索引;2)使用别名进行索引管理;3)每天凌晨定时对索引做force_merge操作,以释放空间;4)采取冷热分离机制,热数据存储到SSD,提高检索效率;冷数据定期进行shrink操作,以缩减存储;5)采取curator进行索引的生命周期管理;5)仅针对需要分词的字段,合理的设置分词器;6)Mapping阶段充分结合各个字段的属性,是否需要检索、是否需要存储等。

2024-03-21 16:42:38 1067

原创 Elasticsearch面试系列-01

ES是一种开源、RESTful、可扩展的基于文档的搜索引擎,它构建在Lucene库上。用户使用Kibana就可以可视化使用数据,同时Kibana也提供交互式的数据状态呈现和数据分析。Apache Lucene搜索引擎基于JSON文档来进行搜索管理和快速搜索。

2024-03-20 16:03:43 1014

原创 MyBatis面试系列-02

接口绑定是指在MyBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置。接口绑定有两种实现方式:一种是通过注解绑定,就是在接口的方法上面加上@Select、@Update等注解,里面包含Sql语句来绑定;另外一种就是通过xml里面写SQL来绑定,在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名。

2024-03-19 15:14:15 1093

原创 MyBatis面试系列-01

Hibernate通过它强大的映射结构和HQL语言,大大降低了对象与数据库(oracle、mySQL等)的耦合性,而MyBatis由于需要手写SQL,因此与数据库的耦合性直接取决于程序员写SQL的方法,如果SQL不具通用性而用了很多某数据库特性的SQL语句的话,移植性也会随之降低很多,成本很高。如:order by #{userId},如果传入的值是1,那么解析成sql时的值为order by "1",如果传入的值是userId,则解析成的sql为order by "userId"。

2024-03-18 11:36:58 1050 2

原创 Spring Cloud面试系列-02

API网关组件,对请求提供路由及过滤功能。Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。

2024-03-14 10:34:21 770

原创 Spring Cloud面试系列-01

Spring Cloud是一系列框架的有序集合,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

2024-03-13 15:30:57 985

原创 Spring Boot面试系列-03

Swagger广泛用于可视化API,使用Swagger UI为前端开发人员提供在线沙箱。Swagger是用于生成RESTful Web服务的可视化表示的工具,规范和完整框架实现。它使文档能够以与服务器相同的速度更新。当通过 Swagger正确定义时,消费者可以使用最少量的实现逻辑来理解远程服务并与其进行交互。因此,Swagger消除了调用服务时的猜测。WebSocket是一种计算机通信协议,通过单个 TCP 连接提供全双工通信信道。

2024-03-12 15:55:40 1107

原创 Spring Boot面试系列-02

Spring Boot Batch提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。Spring Boot Batch还提供了更先进的技术服务和功能,通过优化和分区技术,可以实现极高批量和高性能批处理作业。简单以及复杂的大批量批处理作业可以高度可扩展的方式利用框架处理重要大量的信息。跨站点请求伪造,指攻击者通过跨站请求,以合法的用户的身份进行非法操作。

2024-03-11 17:12:51 668

原创 Spring Boot面试系列-01

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。Spring Boot框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。2014年4月发布第一个版本的全新开源的Spring Boot轻量级框架。

2024-03-09 10:14:45 1164

原创 Spring MVC面试系列-02

WebApplicationContext继承了ApplicationContext并增加了一些WEB应用必备的特有功能,它不同于一般的ApplicationContext ,因为它能处理主题,并找到被关联的servlet。

2024-03-07 14:38:58 1008

原创 Spring MVC面试系列-01

Spring MVC属于Spring FrameWork的后续产品,已经融合在Spring Web Flow中。Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入MVC架构,从而在使用Spring进行WEB开发时,可以选择使用Spring中的Spring MVC框架或集成其他MVC开发框架,如Struts1(已基本淘汰),Struts2(老项目还在使用或已重构)等。

2024-03-06 14:31:46 1080

原创 Spring面试系列-03

AOP核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一组API提供横切功能。比如,一个日志模块可以被称作日志的AOP切面。根据需求的不同,一个应用程序可以有若干切面。在Spring AOP中,切面通过带有@Aspect注解的类实现。被一个或者多个切面所通知的对象。它通常是一个代理对象。也指被通知(advised)对象。Spring配置文件是一个XML文件。此文件包含类信息,并描述了这些类是如何配置和相互引入的。在Spring中定义一个时,我们也可以为bean声明一个范围。

2024-03-04 15:49:58 606

原创 Spring面试系列-02

Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。Spring beans是那些形成Spring应用的主干的java对象。它们被Spring IOC容器初始化,装配,和管理。这些beans通过容器中配置的元数据创建。比如,以XML文件中<bean/> 的形式定义。Spring 框架定义的beans都是单件beans。

2024-03-02 11:05:58 675

原创 Spring面试系列-01

Spring中文翻译过来是春天的意思,被称为J2EE的春天,是一个开源的轻量级的Java开发框架, 具有控制反转(IoC)和面向切面(AOP)两大核心。Java Spring框架通过声明式方式灵活地进行事务的管理,提高开发效率和质量。Spring框架不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从Spring中受益。Spring框架还是一个超级粘合平台,除了自己提供功能外,还提供粘合其他技术和框架的能力。1)IOC 控制反转。

2024-02-29 17:53:34 1097

原创 Java WEB面试系列-03

继承TagSupport或者BodyTagSupport。两者的差别是前者适用于没有主体的标签,而后者适用于有主体的标签。继承TagSupport,可以实现doStartTag和doEndTag两个方法实现Tag的功能继承BodyTagSupport,可以实现doAfterBody这个方法。

2024-02-28 09:27:40 1034

原创 Java WEB面试系列-02

与UNIX和DOS命令中的管道类似,你也可以将多个servlet以特定顺序链接起来。在servlet链中,一个servlet的输出被当作下一个servlet的输入,而链中最后一个servlet的输出被返回到浏览器。servlet链接提供了将一个servlet的输出重定向为另一个servlet的输入的能力。这样,你就可以划分工作,从而使用一系列servlet来实现它。另外,你还可以将servlet组织在一起以提供新的功能。

2024-02-26 14:47:55 754

原创 Java WEB面试系列-01

Servlet是用Java编写的服务器端程序, 其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,我们一般将Servlet理解为后者。extends HttpServlet并覆盖doPost或doGet方法。在web.xml中进行部署。

2024-02-23 16:36:48 888

原创 设计模式面试系列-03

外观模式又叫门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。外观模式是为了解决类与类之家的依赖关系的,为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。外观模式是一种结构型模式。使用外观模式,它外部看起来就是一个接口,其实他的内部有很多复杂的接口已经被实现。原型模式是一种创建型设计模式,通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。

2024-02-22 09:44:36 1052

原创 设计模式面试系列-02

简单工厂模式又称静态工厂方法模式,在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化,如同一个交通警察站在来往的车辆流中,决定放行那一个方向的车辆向那一个方向流动一样。简单工厂模式的具体组成如下:1)工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,用来创建产品。2)抽象产品角色:它一般是具体产品继承的父类或者实现的接口。3)具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。

2024-02-20 17:35:14 1061

原创 设计模式面试系列-01

设计模式(Design pattern) 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路,通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。使用设计模式最终的目的是实现代码的高内聚和低耦合。高内聚低耦合是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低。目的是使程序模块的可重用性、移植性大大增强。通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。

2024-02-19 14:54:37 823

原创 Jenkins面试系列

Pipeline,简而言之,就是一台运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。Jenkins Pipeline是一组插件,让Jenkins可以实现持续交付管道的落地和实施。Blue Ocean是pipeline的可视化UI。同时他兼容经典的自由模式的job。Jenkins Pipeline从头开始设计,但仍与自由式作业兼容,Blue Ocean减少了经典模式下的混乱并为团队中的每个成员增加了清晰度。

2024-02-18 09:21:46 855

原创 网络编程面试系列-02

对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,非常的慢。socket是应用层与传输层的一个抽象,将复杂的TCP/IP协议隐藏在Socket接口之后,只对应用层暴露简单的接口。

2024-02-06 11:29:56 822

原创 网络编程面试系列-01

序列化是指一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。简单来说就是为了保存在内存中各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。

2024-02-04 16:23:42 975

原创 数据结构与算法面试系列-03

B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数。当m取2时,就是我们常见的二叉搜索树。一颗m阶的B树定义如下:1)每个结点最多有m-1个关键字。2)根结点最少可以只有1个关键字。3)非根结点至少有Math.ceil(m/2)-1个关键字。4)每个结点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。

2024-02-01 10:20:33 653

原创 数据结构与算法面试系列-02

程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。程序代码return 10;System.out.println("第五个的年龄为" + getAge(5));运行结果第五个的年龄为18希尔排序(Shell Sort)是DL.Shell在1959年提出的,是插入排序的一种,它是是直接插入排序算法的一种更高版本的改进版本。其实质是一种分组排序。

2024-01-31 10:18:27 828

原创 数据结构与算法面试系列-01

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。

2024-01-26 16:00:37 837

原创 架构设计面试系列-01

前后端分离已成为互联网项目开发的业界标准使用方式,例如通过nginx与tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从“猿”进化成“人”的必经之路。前端HTML页面通过AJAX调用后端的RESTFUL API接口并使用JSON数据进行交互。一般指像Nginx,Apache这类的服务器,他们一般只能解析静态资源;

2024-01-26 09:59:15 834

原创 常见 BUG 问题面试系列-01

例如controller层返回url中出现有大写,文件名config.html,路径写成了device/Config,在window下启动项目时可能可以正常访问页面,但是在Linux系统时必须与文件名一致,还有就是前面不要加/,否则也会报500的问题。或者将Maven的刷新设置为自动,单击File|Setting菜单项,打开Settings选项卡,在左侧的目录树中展开Maven节点,勾选Import Maven projects automatically选择项。

2024-01-25 11:09:59 1077

原创 Linux面试系列-02

零拷贝主要的任务是避免CPU将数据从一块存储拷贝到另外一块存储,利用各种零拷贝技术,避免让CPU做大量的数据拷贝任务,减少不必要的拷贝,或者让别的组件来做这一类简单的数据传输任务,让CPU解脱出来专注于别的任务。这些数据对大多数用户级的程序来说是不可见的,通常称为Meta Data。linux中hash命令管理着一个内置的哈希表,记录了已执行过的命令的完整路径,用该命令可以打印出你所使用过的命令以及执行的次数。坏处:大量数据的拷贝,用户态和内核态的频繁切换,会消耗大量的CPU资源,严重影响数据传输的性能。

2024-01-24 10:07:20 1030

原创 Linux面试系列-01

Linux全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。Linux不仅系统性能稳定,而且是开源软件。

2024-01-23 10:59:16 902

原创 消息队列面试系列-02

一方面,大型软件公司,具备足够的资金搭建分布式环境,也具备足够大的数据量。transaction机制就是说,发送消息前,开启事务(channel.txSelect()),然后发送消息,如果发送过程中出现什么异常,事务就会回滚(channel.txRollback()),如果发送成功则提交事务(channel.txCommit())。许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队 列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保 你的数据被安全的保存直到你使用完毕。

2024-01-22 09:56:56 1030

原创 消息队列面试系列-01

MQ全称为Message Queue 消息队列(MQ)是一种应用程序对应用程序的通信方法。消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。MQ是消费生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中的消息。消息生产者只需要把消息发布到MQ中而不用管谁来获取,消息消费者只管从MQ中获取消息而不管是谁发布的消息,这样生产者和消费者双方都不用清楚对方的存在。

2024-01-19 10:41:58 930

原创 MongoDB面试系列-03

复制是将数据同步到多个服务器的过程,通过多个数据副本存储到多个服务器上增加数据可用性。复制可以保障数据的安全性,灾难恢复,无需停机维护(如备份、重建索引、压缩),分布式读取数据。

2024-01-18 11:13:21 1059 1

原创 MongoDB面试系列-02

文档由一组key value组成。文档是动态模式,这意味着同一集合里的文档不需要有相同的字段和结构。在关系型数据库中table中的每一条记录相当于MongoDB中的一个文档。mongod是处理MongoDB系统的主要进程。它处理数据请求,管理数据存储,和执行后台管理操作。当我们运行mongod命令意味着正在启动MongoDB进程,并且在后台运行。它是一个命令行工具,用于连接一个特定的mongod实例。当我们没有带参数运行mongo命令,它将使用默认的端口号和localhost连接。

2024-01-17 11:05:32 1034

原创 MongoDB面试系列-01

NoSQL是非关系型数据库,NoSQL = Not Only SQL。关系型数据库采用的结构化的数据,NoSQL采用的是键值对的方式存储数据。非关系型数据库的显著特点是不使用SQL作为查询语言,数据存储不需要特定的表格模式。集合就是一组MongoDB文档。它相当于关系型数据库(RDBMS)中的表这种概念。集合位于单独的一个数据库中。一个集合内的多个文档可以有多个不同的字段。一般来说,集合中的文档都有着相同或相关的目的。

2024-01-16 10:51:08 1059

原创 Redis面试系列-03

若快照文件较大,对集群的服务能力会产生较大的影响,而且复制过程是在从机新加入集群或者从机和主机网络断开重连时都会进行,也就是网络波动都会造成主机和从机间的一次全量的数据复制,这对实际的系统运营造成了不小的麻烦。其实redis的主从模式很简单,在实际的生产环境中是很少使用的,也不建议在实际的生产环境中使用主从模式来提供系统的高可用性,之所以不建议使用都是由它的缺点造成的,在数据量非常大的情况,或者对系统的高可用性要求很高的情况下,主从模式也是不稳定的。同样,内核空间对这段区域的修改也直接反映用户空间。

2024-01-15 09:23:20 1060

密码学基础和PKI体系.pptx

适用初学了解密码技术人员

2023-10-17

空空如也

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

TA关注的人

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