自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 将Idea项目上传到gitee仓库

【代码】将Idea项目上传到gitee仓库。

2023-06-02 20:14:04 154

原创 SpringBoot中的Aop用法

SpringBoot中Aop的使用方法

2022-12-21 17:07:27 1900 1

原创 docker查看运行容器日志

docker查看容器日志

2022-11-25 17:43:08 3426

原创 Java中的instanceof用法

instanceof用法

2022-11-12 16:42:12 1133

原创 Linux安装redis6.2.7

linux安装redis6.2.7

2022-10-09 14:53:43 1517

原创 Linux系统安装MySQL数据库

Linux操作系统安装MySQL8.0.11数据库

2022-10-08 14:51:28 652

原创 按指定大小分割List集合,将集合按规定分为n个部分

分割List集合的工具类(按指定大小,分隔集合,将集合按规定个数分为n个部分)

2022-09-02 15:16:44 464

原创 SpringCloud Config分布式配置中心

127.0.0.1 config-3344.com 修改hosts启动测试访问:http://config-3344.com:3344/master/config-dev.yml/{label}-{name}-{profiles}.ymllabel:分支(branch)name :服务名profiles:环境(dev/test/prod)改pombootstrap.yml改bootstrap.yml主启动:业务类:Config客户端之动态刷新避免每次更新配置都要重启客户端

2022-06-11 18:28:54 59

原创 SpringCloud GateWay网关

官网: https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/1.反向代理2.鉴权3.流量控制4.熔断5.日志监控…Route(路由):Predicate(断言):Filter(过滤):核心逻辑: 路由转发+执行过滤器链新建cloud-gateway-gateway9527模块改pom:写yml:主启动:测试:添加网关前访问:http://localhost

2022-06-04 22:20:41 1403

原创 Hystrix断路器详解

分布式系统面临的问题:复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。服务雪崩:多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序

2022-05-20 01:42:34 848

原创 OpenFeign服务接口调用

OpenFeign是什么?官网解释:https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/#spring-cloud-openfeignFeign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Sp

2022-05-03 18:41:04 378

原创 Ribbon负载均衡服务调用

概述Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们很容易使用Ribbon实现自定义的负载均衡算法。

2022-04-13 10:44:40 983 1

原创 CAP理论

CAPC:Consistency(强一致性)A:Availability(可用性)P:Partition tolerance(分区容错性)CAP理论关注粒度是数据,而不是整体系统设计的策略经典CAP图最多只能同时较好的满足两个。CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三大类:CA - 单点集群,满足一致性,可用性的系统,通常在可扩展

2022-04-09 18:27:11 74

原创 Consul服务注册与发现

Consul官网官网:https://www.consul.io/intro/index.html什么是ConsulConsul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。它具有很多优点。包括: 基于 raft 协议,比较简洁; 支持健康检查, 同时支持 HTT

2022-04-09 18:20:05 152

原创 java8新特性 Stream流之根据条件过滤统计个数

统计list中性别为女的个数 public static void main(String[] args) { List<User> list = new ArrayList<User>(); list.add(new User("李师师",23,"女")); list.add(new User("陈圆圆",26,"女")); list.add(new User("潘安",24,"男")); list.add(new User("赵飞燕",26,"女"));

2022-03-23 20:05:51 4719

原创 Eureka服务注册与发现

服务治理:Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理。在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。服务注册与发现:Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka的客户端连接到 Eureka Serve

2022-03-23 19:59:04 2549

原创 两数之和.

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = .

2021-09-24 16:40:08 74

原创 两个数组的交集 II

给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。先对两个数组进行排序,然后使用两个指针分别指向两个数组的开始位置。首先判断两个指针指向的值是否相同,相同则是交集,把这个值存到

2021-09-20 13:43:50 200

原创 主程序类注解@SpringBootApplication注解详解

首先点开 @SpringBootApplication 注解:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExclude

2021-07-30 17:08:47 170

原创 数据访问-整合mybatis原理及源码注解

数据访问整合mybatis去GitHub上找mybatis的场景依赖:mybatis的场景依赖starterSpring Boot官方的starter: spring-boot-starter-*第三方的:*-spring-boot-starter<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter

2021-05-31 15:22:36 109 1

原创 Spring Boot数据访问数据库的自动配置及源码注解分析

导入数据库jdbc的开发场景: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency>

2021-05-24 15:20:57 459 2

原创 银行系统取款的顺序图

某银行系统的取款用例执行如下:工作人员输入取款单,输入后,银行系统请求银行数据库匹配用户,进行身份验证,验证通过后,数据库注销相应存款,返回注销完成信息,银行系统在存折上打印取款记录。根据以上信息绘制顺序图:...

2021-05-12 17:18:26 12001

原创 SpringBoot configuration Annotation Processor not configured问题解决

问题:SpringBoot configuration Annotation Processor not configured的意思是:未处理SpringBoot配置注释处理器解决:在pom.xml文件中引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</art

2021-05-09 23:57:06 2509

原创 算法的时间复杂度、渐进表达式、渐进性分析和渐进符号(O、Ω、θ、o、ω)

用“渐近记号”来表示“渐近复杂度”。渐近记号包括:(1)Θ(西塔):渐进紧确界。 相当于"="(2)O(大欧):渐进紧确上界。 相当于"<="(3)o(小欧):非渐进紧确上界。 相当于"<"(4)Ω(大欧米伽):渐进紧确下界。 相当于">="(5)ω(小欧米伽):非渐进紧确下界。 相当于">"Θ(西塔):Θ(g(n))={f(n):存在正常数c1,c2,和n0,使得对所有n≥n0,有0≤c1

2021-05-08 18:21:54 9601 1

转载 合成复用原则

合成复用原则的定义:合成复用原则( Composite Reuse Principle, CRP )又叫组合/聚合复用原则( CARP)。 它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。如果要使用继承关系,则必须严格遵循里氏代换原则。合成复用原则同里氏代换原则相辅相成的,两者都是开闭原则的具体实现规范。合成复用原则的重要性:(1)通常类的复用分为继承复用和合成复用两种,继承复用虽然有简单和易实现的优点,但它也存在以下缺点。①继承复用破坏了类的封装性

2021-05-08 09:50:44 3158 2

转载 迪米特法则

迪米特法则的定义:迪米特法则(Law of Demeter,LoD)又叫做最少知识原则(LKP),只与你的直接朋友交谈,不跟“陌生人”说话。其含义是:如果两个软件实体无需直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。迪米特法则中的“朋友”是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系,可以直接访问这些对象的方法。迪米特法则的优点:迪米特法则要求限制软

2021-05-07 20:26:50 283

转载 接口隔离原则

接口隔离原则的定义: 接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。 一个定义是:客户端不应该被迫依赖于它不使用的方法。另外一个定义是:一个类对另一个类的依赖应该建立在最小的接口上。两个定义的含义是:要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。 接口隔离原则和单一职责都是 为了提高类的内聚性、降低它们之间的耦合性,体现了封装

2021-05-07 17:28:49 1217

转载 单一职责原则

单一职责原则的定义: 单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起他变化的原因,否则类应该被拆分。 该原则提出对象不应该承担太多职责,如果一个对象承担了太多的职责,至少存在以下两个缺点:1.一个职责的变化可能会削弱或者抑制这个类实现其他职责的能力;2.当客户端要该对象的某一职责时,不得不将其他不需要的职责全部包含进来,从而造成冗余代码或代码的浪费单一职责的优点: 单

2021-05-07 15:50:35 543

原创 @ConditionalOnBean和@ConditionalOnMissingBean注解

// 当容器中有tom组件的时候才会加载user01组件@ConditionalOnBean(name = "tom")// 当容器中没有tom组件的时候才会加载user01组件@ConditionalOnMissingBean(name = "tom")组件是按顺序加载的 @ConditionalOnBean(name = "tom") @Bean public User user01(){ User zhangsan = new User("zha

2021-05-06 12:38:36 328

原创 @Import、@Bean注解

@Import({User.class, DBHelper.class})给容器中自动创建出这两个类型的组件,默认组件的名字就是全类名// 给容器中添加组件,以方法名作为组件的id,返回类型就是组件的类型,返回的值就是组件在容器中的实例 @Bean public User user01(){ User zhangsan = new User("zhangsan", 18);// User组件依赖了Pet组件 zhangsan.set

2021-05-06 11:28:06 840

原创 @Configuration注解

SpringBoot2新特性@Configuration告诉Spring Boot这是一个配置类 == 配置文件@Configuration(proxyBeanMethods = true)proxyBeanMethods:代理bean的方法Full(proxyBeanMethods = true)Lite(proxyBeanMethods = false)组件依赖配置类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断配置类组件之间有依赖关系,方法会被调用得到之前单实例组件,用

2021-05-06 11:14:47 182

原创 依赖倒置原则

依赖倒置原则的定义: 高层模块不应该依赖底层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。核心思想是:要面向接口编程,不要面向实现编程。 依赖倒置原则是实现开闭原则的...

2021-05-01 10:52:31 445 2

原创 里氏替换原则

里氏替换原则的定义: 继承必须确保超类所拥有的性质在子类中仍然成立。它反映了积累与子类之间的关系,是对开闭原则的补充,是对实现抽象化的具体步骤的规范。里氏替换原则的作用: (1)里氏替换原则是实现开闭原则的重要方式之一。 (2)它克服了继承中重写父类造成的可复用性变差的缺点。 (3)他是动作正确性的保证。即类的扩展不会给已有的系统引入新的错误,降低了代码出错的可能性。里氏替换原则的实现方法: 里氏替换原则通俗来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类

2021-04-30 15:41:08 730

原创 开闭原则

开闭原则的作用:

2021-04-30 14:28:04 69

原创 JDK动态代理

JDK中的动态代理是通过反射类Proxy以及InvocationHandler回调接口实现的,要生成某一个对象的代理对象,这个代理对象通常也要编写一个类来生成,所以首先要编写用于生成代理对象的类。在java中如何用程序去生成一个对象的代理对象呢,java在JDK1.5之后提供了一个"java.lang.reflect.Proxy"类,通过"Proxy"类提供的一个newProxyInstance方法用来创建一个对象的代理对象。package chapter02.com.xttc.jdk;public

2021-04-23 15:40:56 53

原创 SpringMVC的执行流程

SpringMVC的执行流程①用户发送请求至前端控制器DispatcherServlet。②DispatcherServlet收到请求调用HandlerMapping处理器映射器。③处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。④DispatcherServlet调用HandlerAdapter处理器适配器。⑤HandlerAdapter经过适配调用具体的处理器(Co

2021-04-07 18:49:22 62

原创 org.springframework.aop.framework.AopProxyUtils.getSingletonTarget(Ljava/lang/Object;)Ljava/lang/Obj

报错原文:javax.servlet.ServletException: Servlet.init() for servlet despatcherServlet threw exception java.lang.NoSuchMethodError:org.springframework.aop.framework.AopProxyUtils.getSingletonTarget(Ljava/lang/Object;)Ljava/lang/Object我的开发坏境:IDEA 2017.2.5

2021-04-06 23:15:48 725

原创 Mybatis的一级缓存和二级缓存

mybatis默认为一级缓存@Test public void findOrdersWithProduct(){ SqlSession sqlSession = MybatisUtils.getSession(); OrdersMapper mapper = sqlSession.getMapper(OrdersMapper.class); List<Orders> ordersWithProduct = mapper.findOrder

2021-04-04 09:49:10 63

原创 Mybatis的延迟加载

延迟加载只有用的时候或输出结果的时候查询,不用不查询使用嵌套查询<mapper namespace="chapter09.com.xttc.mapper.ProductMapper"> <select id="findProductById" parameterType="Integer" resultType="product"> select * from tb_product where id in(select product_id from tb

2021-04-04 09:39:53 53

原创 Mybatis的Dao层实现:传统开发方式和代理开发方式

1.Mybatis的Dao层实现1.1 传统开发方式1.1.1编写UserDao接口public interface UserDao { List<User> findAll() throws IOException;}1.1.2.编写UserDaoImpl实现public class UserDaoImpl implements UserDao { public List<User> findAll() throws IOException {

2021-03-27 13:30:01 132

空空如也

空空如也

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

TA关注的人

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