自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机网络-传输层-知识点总结(全程干货)

传输层只有主机才有,而路由器这种中间设备至多只有物理层、数据链路层和网络层三层架构。是面向通信的最高层,也是用户功能的最底层。

2024-11-13 19:12:17 1035

原创 七大设计原则

如果子类前置条件比父类窄,那么如果调用窄条件的时候,会用子类的方法,但这个功能在父类中也实现了,应该都用父类的,不然逻辑混乱,会出错。这里的经纪人是明星的朋友,而粉丝和媒体公司是明星的陌生人,明星不需要认识媒体公司,也不需要知道要和哪些粉丝见面,什么时候见面,经纪人安排就可以了。实际开发中很多都不符合单一职责原则,受很多因素的影响,比如项目的规模,项目的周期,技术人员的水平,是否有Deadline等等,这些都是需要平衡的因素。背景介绍:慕课网上的课程,有课程id,课程名,课程价格。这不满足接口隔离原则。

2024-11-13 09:58:50 1143

原创 Network—basic

支持万维网应用的。

2024-11-12 14:31:42 1105

原创 HTTP详解

HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。文本:html,字符串,~ ….超文本:图片,音乐,视频,定位,地图…….80Https:安全的443。

2024-11-12 14:28:50 654

原创 Spring IOC

BeanFactory,从名字上也很好理解,生产 bean 的工厂,它负责生产和管理各个 bean 实例。初学者可别以为我之前说那么多和 BeanFactory 无关,前面说的 ApplicationContext 其实就是一个 BeanFactory。我们来看下和 BeanFactory 接口相关的主要的继承结构:我想,大家看完这个图以后,可能就不是很开心了。ApplicationContext 往下的继承结构前面一张图说过了,这里就不重复了。

2024-11-11 16:59:50 880

原创 Spring_basic

bean id="user" class="当前注解的类"/>Spring 是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性。。我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。这些模块是:核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。

2024-11-11 14:21:09 1049

原创 Redis基础

比如有5台机器,线程1获取到1-3的锁,获取到锁。Gossip 协议规定,节点会定期随机选择周围节点发送消息,而收到消息的节点也会重复该步骤,因此就不可避免的存在消息重复发送给同一节点的情况,造成了消息的冗余,同时也增加了收到消息的节点的处理压力。完成的,不同的是当开启混合持久化时,fork出的子进程先将共享的内存副本全量的以RDB方式写入aof文件,然后在将重写缓冲区的增量命令以AOF方式写入到文件,写入完成后通知主进程更新统计信息,并将新的含有RDB格式和AOF格式的AOF文件替换旧的的AOF文件。

2024-11-11 14:19:14 1130

原创 Web安全

CSRF 英文全称是 Cross-site request forgery,又称为“跨站请求伪造”。顾名思义,CSRF 攻击就是黑客引诱用户打开黑客的网站,利用用户的登陆状态发起跨站请求。降维解释:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证, 达到冒充用户对被攻击的网站执行某项操作的目的。反弹技术就是利用反弹服务器实现攻击的技术。

2024-11-10 15:29:29 919

原创 Spring

依赖注入是Spring实现IoC的一种重要手段,将对象间的依赖关系的控制权从开发人员手里转移到容器。在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。连接点是在应用执行过程中能够插入切面的一个点。这个点可以是调用方法时、抛出异常时、甚至修改一个字段时。切点的定义会匹配通知所要织入的一个或多个连接点。我们通常使用明确的类和方法名称,或是利用正则表达式定义所匹配的类和方法名称来指定这些切点。

2024-11-10 15:11:03 942

原创 Servlet

Servlet是服务器端的程序JSP是服务器页面程序JSP本质上就是一个Servlet,在访问jsp时,在服务器端会将jsp先转换成servlet,再将生产的servlet的结果响应给浏览器。jsp是html页面中内嵌Java代码,侧重页面显示;Servlet是中书写Java代码,侧重逻辑控制;服务端包含(SSI)是一种简单的解释型服务端脚本语言,大多数时候仅用在Web上,用servlet标签嵌入进来。SSI最常用的场景把一个或多个文件包含到Web服务器的一个Web页面中。

2024-11-10 09:47:59 893

原创 MongoDB

数据库可以看成是一个电子化的文件柜,用户可以对文件中的数据运行新增、检索、更新、删除等操作。数据库是一个所有集合的容器,在文件系统中每一个数据库都有一个相关的物理文件。集合就是一组 MongoDB 文档。它相当于关系型数据库(RDBMS)中的表这种概念。集合位于单独的一个数据库中。一个集合内的多个文档可以有多个不同的字段。一般来说,集合中的文档都有着相同或相关的目的。文档由一组key value组成。文档是动态模式,这意味着同一集合里的文档不需要有相同的字段和结构。在关系型。

2024-11-09 16:29:45 983

原创 Linux详解

如过需要在系统上维护同一文件的两份或者多份副本,除了保存多分单独的物理文件副本之外。还可以采用保存一份物理文件副本和多个虚拟副本的方法,这种虚拟的副本就叫做链接。bash shell用一个叫作环境变量(environment variable)的特性来存储有关shell会话和工作环境的信息。这项特性允许你在内存中存储数据,以便程序或shell中运行的脚本能够轻松访问到它们。这也是存储持久数据的一种简便方法。

2024-11-09 16:27:55 1026

原创 java集合

HashMap中,如果key经过hash算法得出的数组索引位置全部不相同,即Hash算法非常好,那样的话,getKey方法的时间复杂度就是O(1),如果Hash算法技术的结果碰撞非常多,假如Hash算极其差,所有的Hash算法结果得出的索引位置一样,那样所有的键值对都集中到一个桶中,或者在一个链表中,或者在一个红黑树中,时间复杂度分别为O(n)和O(lgn)。当然Java里的数组是无法自动扩容的,方法是使用一个新的数组代替已有的容量小的数组,就像我们用一个小桶装水,如果想装更多的水,就得换大水桶。

2024-11-09 11:05:27 950

原创 Java基础

公共静态不可变,即public static final修饰的变量就是我们所说的编译期常量.这里的public可选的.实际上这些变量在编译时会被替换掉,因为编译器明确的能推断出这些变量的值(如果你熟悉C++,那么这里就相当于宏替换).编译器常量虽然能够提升性能,但是也存在一定问题:你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端没有重新编译,这意味着你仍然在使用被修改之前的常量值.

2024-11-09 11:04:17 978

原创 Java多线程

是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。synchronized关键字可以时间一个简单的策略来防止线程干扰和内存一致性错误,如果一个对象是对多个线程可见的,那么对该对想的所有读写都将通过同步的方式来进行。

2024-11-08 20:15:29 1038

原创 6.1 总线概述

总线是一组能为多个部件分时共享的公共信息传送线路分时:同一时刻只能有一个部件向总线发送消息共享:同一时间可以有多个设备从总线接收消息。

2024-11-08 19:12:44 952

原创 Java 关键字

Java 自己保留的一些单词,作为特殊功能的。关键字不能用来作为类名或者是变量名称,否则报错。说明This 关键字可以出现在成员方法、构造器中,代表当前对象的地址。This 关键字一般用来访问当前对象的成员变量、成员方法。thissuper使用总结场景说明访问本类成员this.成员变量访问本类成员方法this.成员方法(…)访问本类构造器this(…)访问父类成员变量super.成员变量访问父类成员方法super.成员方法(…)访问父类构造器super(…)注意事项子类通过this...

2024-11-04 10:18:17 1301

原创 Java 字符串

概述String 类定义的变量可以用于存储字符串,同时还提供了很多操作字符串的功能。String 类属于java.lang包。特点String 常被称为不可变字符串类型,它的对象在创建后不能被更改。说明StringBuilder 是一个可变的字符串类,可以把它看成是一个对象容器 ,用来提高字符串的操作效率,如拼接、修改等操作。StringBuilder 只是拼接字符串的手段,最后还是要恢复成 String 类型。构造函数// 创建一个空白的可变的字符串对象,不包含任何内容。

2024-11-01 18:45:15 1064

原创 01背包问题(经典dp题解)

有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 ii 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。

2024-10-28 10:12:24 2093

原创 Nacos

Nacos服务注册和配置中心,兼顾两种Nginx + 3个Nacos + mysql的集群化配置。

2024-12-08 13:47:49 951

原创 SpringCloudSleuth分布式请求链路跟踪

在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。当链路特别多的时候就需要有一个用于调用链路的监控和服务跟踪的解决方案SpringCloudSleuth提供了一套完整的服务跟踪解决方案,在分布式系统中,提供了追踪解决方案,并且兼容支持了zipkin。

2024-12-08 13:44:12 251

原创 SpringCloud Stream 消息驱动

屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型这就有点像Hibernate,它同时支持多种数据库,同时还提供了Hibernate Session的语法,也就是HQL语句,这样屏蔽了SQL具体实现细节,我们只需要操作HQL语句,就能够操作不同的数据库。官方定义 SpringCloudStream是一个构件消息驱动微服务的框架应用程序通过inputs或者outputs来与SpringCloudStream中binder对象(绑定器)交互。

2024-12-08 13:43:31 688

原创 消息总线SpringCloudBUS

分布式自动刷新配置功能,SpringCloudBus配合SpringCloudConfig使用可以实现配置的动态刷新Bus支持两种消息代理:RabbitMQ和KafkaSpringCloudBus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能。SpringCloudBus能管理和传播分布式系统的消息,就像一个分布式执行器,可用于广播状态更改,事件推送等,也可以当做微服务的通信通道。

2024-12-08 13:42:02 686

原创 分布式配置中心SpringCloudConfig

label:分支,branchname:服务名profiles:环境(dev/test/prod)

2024-12-08 13:41:13 415

原创 服务网关详解

全局日志记录统一网关鉴权@Component@Slf4j@Overridelog.info("用户名为null,非法用户");// 放行/*** 过滤器加载的顺序 越小,优先级别越高* @return*/@Overridereturn 0;

2024-12-08 09:37:32 891

原创 Hystrix断路器

复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败(网络卡顿,网络超时)熔断打开:请求不再进行调用当前服务,内部设置时钟一般为MTTR(平均故障处理时间),当打开时长达所设时钟则进入半熔断状态熔断关闭:熔断关闭不会对服务进行熔断熔断半开:部分请求根据规则调用当前服务,如果请求成功且符合规则,则认为当前服务恢复正常,关闭熔断。

2024-12-08 09:36:14 835

原创 OpenFeign实现服务调用

Feign是一个声明式WebService客户端。使用Feign能让编写WebService客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可插拔式的编码和解码器。Spring Cloud对feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

2024-12-08 09:34:51 607

原创 Ribbon实现负载均衡

Ribbon目前已经进入了维护模式,但是目前主流还是使用RibbonSpring Cloud想通过LoadBalancer用于替换Ribbon。

2024-12-08 09:34:17 680

原创 Eureka停更后的替换

Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go语言开发提供了微服务系统中的服务治理、配置中心、控制总线等功能,这些功能中的每一个都可以根据需要单独使用,也可以一起使用构建全方位的服务网路,总之Consul提供了一种完整的服务网络解决方案。它具有很多优点,包括:基于raft协议,比较简洁;支持健康检查,同时支持HTTP和DNS协议,支持跨数据中心的WAN集群,提供图形化界面,跨平台,支持Linux,MAC,Windows组件名语言健康检查对外暴露接口CAP。

2024-12-08 09:33:32 885

原创 Eureka集群

没有集群带来的高可用,会带来单点故障。

2024-12-08 09:32:32 1078

原创 微服务基础

微服务架构下的一整套解决方案。

2024-12-08 09:31:32 366

原创 Feign配置全局Sentinel流控异常和降级异常

最近在使用feign调用的时候,因为加入了sentinel进行流控和降级机制,在我们如果没有对Sentinel异常处理进行封装的话,默认返回的信息如下所示很显然上述的异常信息,对我们目前的项目来说不太适用,所以就打算在对异常进行封装,使其返回我们项目中统一的格式。

2024-12-08 09:29:49 569

原创 SpringBoot项目将Swagger升级3.0

这阵子观察到Swagger官方已经升级到了3.0的版本,想着升级体验一下最新的版本。

2024-12-07 11:39:07 489

原创 Swagger-ui.html页面出现404

因为 swagger-ui的引入比较简单,所以我先排查了一下依赖和配置,以及对应方法上的注解,都是正常的,并且同样的配置在mogu_web和mogu_admin项目是正常的,所以非常好奇问题出来哪里?

2024-12-07 11:38:27 1311

原创 SpringBoot中使用注解的方式创建队列和交换机

最开始蘑菇博客在进行初始化配置的时候,需要手动的创建交换机,创建队列,然后绑定交换机,这个步骤是非常繁琐的,而且一不小心的话,还可能就出了错误,之前就有个小伙伴在创建交换机的时候 , 将交换机的名称写成了。然后导致消息无法正常被消费,后面通过排查了很久才发现这个问题,下面为了解决这个手动创建的痛苦,使用了注解的方式来进行队列和交换机的创建。

2024-12-07 11:37:34 395

原创 SpringBoot拦截器无法注入Bean

今天在给mogu_picture模块添加拦截器,用于拦截用户传递过来的token,并获取到用户信息,这里需要注入RedisUtil工具类但是我在使用的时候,一直报空指针异常,开始以为是代码有问题,后面经过排查是因为没有注入RedisUtil。

2024-12-07 11:36:58 314

原创 SpringBoot解决时区问题

蘑菇博客一直存在时区不正确的问题,让我苦不堪言,比如刚刚发表的评论会显示八小时前但是我们查看数据库的和服务器的时间能够发现,时间显示是正常的刚刚发表的评论的时间:以及服务器的时间。

2024-12-07 11:35:59 782

原创 Eureka管理页面配置/actuator/info接口返回git信息

通过查阅资料发现,微服务若是用git管理,当前微服务部署的git的版本信息是不可或缺的信息,spring boot admin中通过/actuator/info接口返回git基本信息。添加完成后,我们查看IDEA的Maven,能够发现多出了一个 git-commit-id:revision。发现进去的页面没有 任何内容显示,后面想想可能是没有什么东西没有配置而引起的。然后启动eureka页面,在点击刚刚的a标签,发现能够成功获取到git信息了。这阵子在弄监控页面,我点击eureka里面的地址。

2024-12-07 11:35:18 268

原创 Bean的生命周期

在我们没有使用Spring框架之前,创建对象一般都是使用new关键字进行创建,当然除了new关键字外,还有一旦对象不再被使用的时候,将有可能被JVM垃圾回收器进行回收。但是在Spring通过IOC容器进行管理之后,Bean 的生命周期就变得更加复杂了,下图展示了Bean的构造过程。

2024-12-07 11:34:40 695

原创 Redis中的跳跃表

对于单个链表来讲,即便链表中存储的数据是有序的,如果我们要向在其中查找某个数据,它只能从头到尾遍历链表。这样查找效率就会很低,时间复杂度会很高,达到了O(n)。如果我们想要提高其查询效率,可以考虑在链表上构建索引的 方式,每两个节点提取一个节点到上级,我们把抽出来的那一级就叫做索引。这个时候,我们假设要查找节点8,我们可以心在索引层遍历,当遍历到索引层中值为7的节点时,发现下一个节点是9,那么要查找的节点肯定在这两个节点之间,我们下降到链表层继续遍历就找到了8这个节点。。

2024-12-07 11:33:41 1010

空空如也

空空如也

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

TA关注的人

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