自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_41934990的博客

我们各自努力,最高处见。

  • 博客(233)
  • 资源 (15)
  • 收藏
  • 关注

原创 SpringBoot运行流程源码分析------阶段三(Spring Boot外化配置源码解析)

首先看一下ApplicationArguments接口的具体方法定义及功能介绍。//返回原始未处理的参数(通过application传入的) String [ ] getSourceArgs();//返回所有参数的集合,如参数为:--foo=bar --debug,则返回【"foo","debug"】 Set < String > getOptionNames();//选项参数中是否包含指定名称的参数 boolean containsOption(String name);

2023-10-24 23:25:16 681

原创 SpringBoot运行流程源码分析------阶段二(run方法核心流程)

在上面的代码中,实例化监听器需要有一个默认的构造方法,且构造方法的参数为Class

2023-08-07 22:28:12 438

原创 算法------排序算法------插入排序法

插入排序法是将数组中的元素逐一已排好序的数据进行比较,先将前两个元素排好序,再将第三个插入适当的位置,以此类推,重复此步骤,知道排完序为止。

2023-06-26 21:48:47 164

原创 算法------排序算法------选择排序法

选择排序法也算是枚举法的应用,就是反复从未排序的数列中去除最小的元素加入到另一个数列中,最后的结果即为已排序的数列。选择排序法可以使用两种方式排序,即在所有的数据中,若从大到小排序,则将最大值放入第一个位置;若是从小到大排序,则将最小值放入到第一个位置。

2023-06-25 23:34:11 129

原创 算法------排序算法------冒泡排序法

冒泡排序法又称交换排序法,原理是从第一个元素开始,比较相邻元素的大小,如大小顺序有误,则对调后再进行下一个元素的比较,一次扫描之后可以确保最后一个元素位于正确的位置。接下来进行的第二次扫描,以此类推知道所有元素排序完成为止。例如下面的示例:由上图可知,5个元素的冒泡排序必须执行5-1次扫描,第一次扫描需要比较5-1次,第二次比较5-1-1次,以此类推,共比较4+3+2+1=10次。

2023-06-24 22:02:37 121

原创 SpringBoot构造流程源码分析------阶段一

在入口类主要通过SpringApplication的静态方法–run方法进行SpringApplication类的实例化操作,然后再针对实例化对象调用另一个run方法完成整个项目的初始化和启动。本章节重点围绕此过程的前半部分(即SpringApplication类的实例化)来讲解。//创建SpringApplication对象并执行某run方法 return(new SpringApplication(primarySources)) . run(args);

2023-06-20 22:39:25 749

原创 SpringBoot核心运行原理解析之------@Conditional条件注解

在SpringBoot核心运行原理解析之------@EnableAutoConfiguration文档中我们完成了自动配置类的读取和筛选,在这个过程中已经涉及了像@ConditionalOnClass这样的条件注解。打开每个自动配置类,都会看到@Conditional或其衍生的条件注解,本节我们来认识下@Conditional注解。

2023-05-17 21:11:52 663

原创 SpringBoot核心运行原理解析之-------@EnableAutoConfiguration

下面通过一张图来从整体了解AutoConfigurationImportSelector的核心功能及流程,然后再对照源码看具体的功能实现。当AutoConfigurationImportSelector被@Import注解引入之后,它的selectImports方法会被调用并执行其实现的自动装配逻辑。selectImports方法涵盖了组件自动装配的所有的处理逻辑。if(!if(!

2023-05-16 15:54:12 3526

原创 如何理解ThreadLocal

也就是说,调用ThreadLocal的set()方法存储的本地变量在具体线程的内存空间中,而ThreadLocal类支提供了set()和get()方法来存储和读取本地变量的值,当调用ThreadLocal类的set()方法时,把要存储的值存储在调用线程的threadLocals变量中,当调用ThreadLocal类的get()方法时,从当前线程的threadLocals变量中获取保存的值。保存数据时传递的key为当前ThreadLocal的this对象,而传递的value为调用set()方法传递的值。

2023-04-22 21:35:10 463

原创 如何理解线程池

当调用Executors.newSingleThreadExecutor方法创建线程池时,表示创建只有一个工作线程的线程池,即线程池中只有一个线程执行任务,能够保证提交到线程池中的所有任务按照先进先出的顺序,或者按照某个优先级的顺序来执行。如果在向线程池提交新任务时,线程池中无空闲线程,则新创建线程来执行任务。在调用shutdownNow()方法关闭线程时,线程池不能接受新提交的任务,也不能继续处理阻塞队列中的任务,同时,还会中断正在执行的线程,使得正在执行的任务被中断,线程池立即关闭并抛出异常。

2023-04-19 22:55:50 364

原创 如何理解CAS

ABA问题简单来说就是一个变量的初始值为A,被修改为B,然后再次被修改为A了。在使用CAS算法进行检测时,无法检测出A的值是否经历过被修改为B,又再次被修改为A的过程。

2023-04-08 15:09:53 728

原创 如何理解Lock

JDK层面提供了Lock锁都是通过Java提供的接口来手动解锁和释放锁的,所以在某种程度上,JDK中提供的Lock锁也叫显示锁、JDK提供的显示锁位于java.util.concurrent.locks包下,Lock接口的源码如下:lock()方法:阻塞模式抢占锁的方法。如果当前前程抢占锁成功,则继续向下执行程序的业务逻辑,否则,当前线程会阻塞。直到其他抢占到锁的线程释放锁后再继续抢占锁。lockInterruptibly()方法:可中断模式抢占锁的方法,当前线程在调用lockInterruptibl

2023-04-05 21:21:46 312

原创 如何理解AQS

这里需要结合acquireQueued()方法理解,当线程被唤醒后,会进入acquireQueued()方法中的if(p==head && tryAcquier(arg))逻辑判断,当条件成立是,被唤醒的线程会将自己所在的节点设置为head,表示已经获取到资源,此时,acquire()方法也执行完毕了。如果CAS操作设置成,则唤醒队列中的后继结点。在同步队列中,如果当前线程获取资源失败,就会通过addWaiter()方法将当前线程放入队列的尾部,并且保持自旋的状态,不判断自己所在的节点是否是队列的头结点。

2023-03-24 21:30:06 710

原创 如何理解Synchronized

synchronized是基于JVM中的monitor锁实现的,jdk1.5版本之前的synchronized锁性能较低,但是从jdk1.6版本开始,对synchronized锁进行了大量的优化,引入了锁粗化,锁消除,偏向锁,轻量级锁,适应性自旋等技术来提升synchronized锁的性能。无论synchronized修饰方法,还是修饰代码块,底层都是通过JVM调用操作系统的Mutex锁实现的,当线程被阻塞时会被挂起,等待CPU重新调度,这会导致线程在操作系统的用户态和内核态之间切换,影响程序的执行性能。

2023-03-22 18:14:50 282

原创 Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct..........

测试服务器接口遇到的问题,记录下翻译是嵌套异常为com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造“com.chilwe.dtos.socket.down.FivePower”的实例(不存在类似默认构造函数的创建者):无法从Object值反序列化(不存在基于委托或属性的创建者)原因是我在该实体类中添加了一个为了方便实例化该类用的构造函数,导致JVM不会添加默认的无参构造函数,而jackson的反序列化需要无参构造函数,因此报

2023-02-06 18:35:45 3485

原创 并发编程的三大核心问题(三)

类比现实案例并发编程中的分工同步问题类比现实案例并发编程中的同步互斥问题类比现实案例并发编程中的互斥

2022-07-07 22:43:44 122

原创 并发编程常见的锁介绍(二)

悲观锁和乐观锁公平锁与非公平锁独占锁和共享锁可中断锁与不可中断锁可重入锁与不可重入锁读/写锁自旋锁死锁/饥饿与活锁

2022-07-06 22:18:36 2598

原创 并发编程的一些概念(一)

主要介绍一些并发编程的一些基本概念,比如进程与线程,线程的一些基本概念,同步与异步,阻塞与非阻塞等

2022-07-05 22:16:30 99

原创 Windows 本地启动rocketmq报错-找不到或无法加载主类

记录下,windows安装rocketmq,启动mqbroker.cmd报错错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_321\lib\dt.jar;C:\Program解决方法找到安装rocketmq的安装路径bin目录下的runbroker.cmd文件打开使用英文双引号包起来再重启就好了...

2022-07-01 16:22:32 1595 2

原创 java.lang.OutOfMemoryError: Java heap space

项目部署在服务器上,上传图片的时候出现的问题记录下问题:java.long.OutOfMemoryError:java heap space(系统内存不足)修改启动参数

2022-06-29 11:05:11 560

原创 BigDecimal在使用中遇到的问题

BigDecimal在使用中遇到的问题

2022-04-14 16:34:31 1853

原创 http常见的状态码

100 客户端应当继续发送请求101:服务器根据客户端的请求切换协议,主要用于websocket或http2升级200(成功):请求已成功,请求所希望的响应头或数据体将随此响应返回201(已创建):请求成功并且服务器创建了新的资源202(已创建):服务器已经接收请求,但尚未处理203(非授权信息):服务器已成功处理请求,但返回的信息可能来自另一来源204(无内容):服务器成功处理请求,但没有返回任何内容205(重置内容):服务器成功处理请求,但没有返回任何内容..

2022-02-28 22:47:04 71

原创 分布式事务

祝所有的coder节日快乐今天简单介绍下什么是分布式事务问题分析根据自动选课(就是说在在网上买课学习,支付订单后然后讲你的课程添加到你的学习课程中去,这里面涉及到了两个服务,一个是订单服务,一个是学习服务,而且整个系统是分布式系统,里面包含多个服务)的需求,分析下用户支付完成后会将支付状态及订单状态保存到数据库中,由订单服务去维护订单数据库,而学生选课信息在学习中心数据库,由学习服务去维护学习中心数据库的信息,下图是系统结构图:如何实现两个分布式服务(订单服务,学习服务)共同完成一件事即订单支

2021-10-24 23:23:47 249

原创 Consider defining a bean of type ‘org.springframework.web.client.RestTemplat

记录下几天敲代码遇到的小问题Description:Field restTemplate in com.lifly.controller.FreemarkerController required a bean of type 'org.springframework.web.client.RestTemplate' that could not be found.Action:Consider defining a bean of type 'org.springframework.web

2021-09-20 11:37:13 7737

原创 Java实现腾讯云短信服务API接口

java对接腾讯云短信,通过api发送短信Api秘钥正文模板前提条件已开通短信服务,具体操作请参见国内短信快速入门如需发送国内短信,需要先购买短信套餐不过这个不要,初次注册就会有免费的100短信使用权已准备依赖环境:JDK 7 及以上版本。已在访问管理控制台 >【API密钥管理】页面获取 SecretID 和 SecretKey。SecretID 用于标识 API 调用者的身份。SecretKey 用于加密签名字符串和服务器端验证签名字符串的密钥,SecretKey 需妥善保

2021-09-16 15:29:37 798

原创 Error creating bean with name ‘servletEndpointRegistrar‘ defined in class path resource

记录一下今天在写为服务项目碰到的错误,如下面所示,只知道创建Error creating bean with name ‘servletEndpointRegistrar’ defined in class path resource失败,在网上也找了一些解决方法,最多的解决答案是说缺少jdbc依赖,要么就是说数据库配置文件出错了,我也比对了下数据库没错,也没缺少jdbc依赖,这说明我的数据库和依赖都没错,我就又比对了下其他service服务,发现就是配置文件多引入了个配置文件[${project.na

2021-09-10 23:35:55 6254 1

原创 通过sailing项目获取手机验证码

今天给大家分享个短信验证码项目sailing该项目主要是生产验证信息以及验证码的校验sailing项目我上传到了自己的资源上,地址为大家可以直接下载,使用idea直接打开运行,然后自己可以再创建一个springboot项目,配置下发送短信验证所需要的参数,访问我使用的是swagger接口文档来访问的,如果大家感兴趣,可以跟着我的步骤来实现验证码的生成及校验,实现步骤如下:运行sailing项目新创建springboot项目引入所需要的依赖yml配置文件配置swagger配置类编写获取短

2021-09-09 22:39:37 581

原创 七牛云对象存储实现文件的上传与下载

今天记录下通过七牛云文件存储来实现文件的上传与下载文件上传 /** * 上传 * @throws FileNotFoundException */ private static void upload() throws FileNotFoundException { //构造一个带指定 Region 对象的配置类 Configuration cfg = new Configuration(Region.huanan());

2021-09-08 21:48:58 3829

原创 mybatis-plus练习demo从swagger接口文档-controller-service-mapper-sql层层关联,找到就是学到哦

mybatis-plus 代码流程编写使用swagger接口测试创建springboot项目添加相关依赖sql文件编写实体类编写相关配置文件的编写编写业务逻辑测试创建springboot-mybatis-plus项目项目目录添加相关依赖<dependencies> <dependency> <groupId>com.baomidou</groupId> <art

2021-09-06 23:13:57 506 2

原创 初识微服务之Zuul

微服务架构图我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载。为了使得服务集群更为健壮,使用Hystrix的融断机制来避免在微服务架构中个别服务出现异常时引起的故障蔓延。在该架构中,我们的服务集群包含:内部服务Service A和Service B,他们都会注册与订阅服务至Eureka Server,而Open Service是一个对外的服务,通过均衡负载公开至服务调用方。我们把焦点聚

2021-09-06 09:19:15 407

原创 初识微服务之Feign

FeignFeign是Netflix公司开发的一个声明书的REST调用客户端Ribbon负载均衡,Hystrix服务熔断是Spring Cloud中进行微服务开发非常基础的组件,在使用时我们也发现他们一般都是同时出现的,而配置也非常相似,每次都会有很多相同的代码,因此Spring Cloud基于Netflix Feign整合了Ribbon和Hystrix两个组件,让我们的开发工作更加简单,就像Spring Boot是对Spring+Spring MVC的简化一样,Spring Cloud Feign对

2021-08-28 21:58:58 521

原创 初识微服务之Hystrix

Hystrix是什么在服务架构中,我们将一个单体应用拆分成多个服务单元,各个服务单元之间通过注册中心彼此发现和消费对方提供的服务,每个服务单元都是单独部署,在各自的服务进程中运行,服务之间通过远程调用实现信息交互,name当某个服务的响应太慢活着故障,又或者因为网络波动或故障,则会造成调用者延迟或调用失败,当大量请求到达,则会造成请求的堆积,导致调用者的线程挂起,从而引发调用者无法响应,调用者发生故障。为了解决此问题,微服务架构引入了一种熔断器的服务保护机制。微服务架构中的熔断器,就是当被调用方没有

2021-08-28 17:43:05 191

原创 初识微服务之Ribbon

Ribbon简介Ribbon是Netflix发布的负载均衡器,它有助于控制Http和TCP客户端的行为。为Ribbon配置服务提供者地址列表后,Ribbon就可以基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多的负载均衡算法,例如轮训,随机等等。当然也可以为Ribbon实现自定义的负载均衡算法。Spring Cloud中的Ribbon是什么通常所说的负载均衡是指将一个请求均匀地分配到不同的节点单元上执行,负载均和分为硬件负载均衡和软件负载均衡:硬件负载均衡比

2021-08-26 21:58:08 253

原创 再续微服务Eureka

Eureka架构中的三个核心角色服务注册中心Eureka的服务端应用,提供服务注册和发现功能,就是上篇文章里的springcloud-eurekaserver服务提供者提供服务的应用,可以是springboot应用,也可以是其它任意技术实现,只要对外提供的是Rest风格即可服务消费者消费应用从注册中心获取列表服务,从而得到每个服务的信息,直到去哪里调用服务方。Eureka注册中心高可用集群在微服务架构的这种分布式系统中,我们要充分考虑每个服务组件的高可用性问题,不能有单点故障,由于

2021-08-24 22:25:28 164

原创 初识微服务之Eureka

Eureka简介Eureka就好比是一个控制中心,负责管理,记录服务提供者的信息。服务调用者无需自己寻找服务,而是把自己的需求告诉Eureka,然后Eureka会把符合你需求的服务告诉你。同时,服务提供方与Eureka之间通过“心跳”机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除,这样就实现了服务的自动注册,发现,状态监控等。在微服务架构中,服务注册与发现是核心组件之一,手动指定每个服务是很低效的,Spring Cloud提供了多种服务注册与发现的实现方式,例如:Eur

2021-08-23 22:35:16 816 2

原创 微服务场景模拟(案例编写)

迷你一个服务调用的场景,搭建两个工程:provider(服务提供方)和consumer(服务调用方)服务提供方:使用mybatis操作数据库,实现对数据的查询,并对外提供rest接口服务服务消费方:使用restTemplate远程调用服务提供方的rest接口,获取数据服务提供者创建springboot工程编写application.yml配置文件添加相关依赖创建实体类编写mapper实现service实现controller启动并测试springboot工程applica.

2021-08-22 23:23:39 247 2

原创 系统架构演变与SpringCloud简介

系统架构的演变随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也在不断的演变、升级、迭代。从单一应用到垂直拆分、到分布式服务、到SOA,以及当下较火的微服务架构。集中式架构当网站流量较小时,只需要一个应用,将所有的功能都部署在一起,以减少部署节点和成本。此时,用于简化增删该查工作量的数据访问框架ORM是影响向项目开发的关键。存在的问题代码耦合,开发维护困难无法针对不同模式进行针对性优化无法水平扩展单点容错率低,并发能力差垂直拆分当访问量

2021-08-22 21:17:00 857 2

原创 打卡面试题-RabbitMQ

什么是rabbitmq?为什么使用rabbitmqrabbitmq是一款开源的,Erlang与编写的,采用AMQP高级消息队列协议的一种消息队列技术,最大的特点是消费并不需要确保提供方存在,实现了服务之间的高度解耦。为什么使用?在分布式系统下具备异步,削峰,负载均衡等一系列高级功能拥有持久化的机制,进程消息,队列中的信息也可以保存下来实现消费者和生产者之间的解耦对于高并发场景下,利用消息队列可以使得同步访问变为串行访问达到一定量的限流,利于数据库的操作可以使用消息队列达到异步下单的效果,排

2021-08-22 11:12:53 177

原创 SpringBoot整合RabbitMQ

创建springboot工程添加RabbitMQ依赖配置application.yml编写配置类测试生产者测试消费者测试结果RabbitMQ依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version&gt.

2021-08-21 21:28:18 102

原创 RabbitMQ的工作模式

RabbitMQ工作模式Work queuesPublish/SubscribeRoutingTopicsHeaderRPCWork queueswork queues工作模式是一个服务端,两个消费端共同消费同一个队列中的消息应用场景对于任务过重或任务较多情况使用工作队列可以提高任务处理的速度需求使用一个服务端发送消息,多个消费端接收工作模式代码演示一个生产者两个消费者生产者代码public class Producer01 { //队列名称

2021-08-21 15:20:28 150

工行icbc对接demo

工行icbc对接demo,主要是对接工行的一些业务demo,工行微信支付,工行h5支付,支付回调,查询支付信息,查询订单信息,对账单下载,子商户注册,签名验签,工行支付相关jar包,相关api等

2023-05-17

工银聚富通支付异步通知报文参数

工银聚富通支付报文说明,具体参数介绍,异步回调请求报文说明,通知交易响应码,支付方式,订单状态,订单号等

2022-08-10

sailing.rar

用于实现发送手机号获取验证码

2021-09-09

log4j.jar.rar

主要是log4j的jar包,里面包含了log4j的日志文件,希望对你有帮助

2021-04-22

jdkapi1.8.rar

该资源里内含java api 1.6中文版,java API 1.8中英文版,在学习java的过程中可以对比java API 1.6与1.8的差异,有利于我们更好地学习java

2021-03-29

6.数据库实战E_R图.docx

该文档是mysql专栏里的6数据库实战E_R图,由于文章中一直上传失败,就放在了我上传的资源里,有兴趣的可以看下。

2021-02-04

比较实在的五子棋.cpp

该cpp是一个使用面向对象的编写的五子棋小项目,可以再vc6.0里直接打开运行,不会出现错误哦,也可以直接在Dev C++里直接打开使用,也是没问题的。希望该资源对那些需要写期末大作业的有帮助。

2020-06-03

五子棋(菜鸟版).cpp

c++五子棋小项目,面向对象,适用于刚开始学习c++程序设计的入门学生,希望对那些入门学习c++的学生有点帮助

2020-06-02

网上书城jar包.rar

本jar包与分享的Javaweb网上书城项目搭配使用,如果想自己练习的话,可以下载导入自己的项目中,如果需要源码的可以给我留言,我可以无偿分享给你

2020-05-07

诊所信息管理系统.cpp

本源代码使用Dev c++编写的诊所信息关系系统 ,使用的面向对象方法,切记不是面向过程,期末大作业大多使用的是面向对象,主要实现了增删改查等功能,使用Dev c++打开可以直接直接使用,无需修改代码

2020-04-19

通讯录管理系统.cpp

c++编写的通讯录管理系统,使用Dev c++可以直接运行使用。主要实现了添加,删除,修改,查询,显示等功能,一般人不容易操作哦

2020-04-19

c++分数计算器课程大作业.rar

问题描述:定义一个整数类。定义一个分数类,有整数类派生。能对分数进行加减乘除运算和输入输出 功能需求:(1)定义整数类。包括构造函数,析构函数,显示函数 (2)输入输出:对流提取和流插入运算进行重载 (3)计算功能:可进行分数的加减乘除运算 (4)化简功能:将分数化简为最简分数 (5)菜单功能:每种功能的操作都在菜单中进行相应选择 ......... ..... ..

2019-12-19

hive(六)案例专用

hive六中案例所需要的资源,本案例是对sql语句的练习。

2018-08-21

hive案例资源

本资源是hive四中的资源准备,希望对大家有用处,文件不大哦

2018-08-21

关于hibernate的查询,事务概念,复杂表的关系

如果你正在学hibernate框架,我认为这份文档对你会有很大的关系。 如果你真的需要可以下载啊,积分又不是很多是吧,关键能学到知识就行了

2018-06-22

java经典设计模式

java典型的设计模式,模式的创建,模型结构,该文件包括工厂模式,抽象模式等

2018-05-19

空空如也

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

TA关注的人

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