自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程池的执行流程总结

1.首先,向线程池提交一个任务,线程池会分配一个。:线程池中非核心线程空闲的存活时间值和时间单位;,线程池会创建一个核心线程,去处理提交的任务;空闲线程,那么,线程池会判断目前线程池中。:阻塞工作队列,存放等待执行的线程任务;未满,那么新提交的任务,会被放进。二、线程池的执行流程是什么?:创建新线程的线程工厂;已满,那么线程池会判断。:线程池的核心线程数;:线程池的最大线程数;:线程池的拒绝策略;

2024-09-19 11:29:17 286 1

原创 线程池的状态

②如果工作队列为空,并且线程池中执行的任务也为空,线程池进入TIDYING 状态;①该状态的线程池,不会接收新任务,也不会处理工作队列中的任务,同时会中断正在运行。①该状态表明所有的任务已经终止,工作线程的数量为0,即将调用terminated();①该状态的线程池会接受新任务,并处理阻塞队列中的任务;①该状态的线程池,不会接收新任务,但是会继续处理工作队列中的任务;②线程池中执行的任务为空进入TIDYING 状态;①terminated()执行完毕,表示线程池彻底终止;

2024-09-19 11:28:19 306

原创 线程池的类型

(2)创建ThreadPoolExecutor对象,按照业务需要自定义线程池参数,创建线程池;:用于任务分治的线程池实现类,它支持任务的分叉Fork和合并Join ,适合。(1)通过Executors工具类的静态方法,创建线程池;处理可以分解为多个子任务并行执行的计算密集型任务;:执行定时任务或周期性任务的线程池实现类;二、常见的线程池有哪几种?:标准线程池实现类;

2024-09-19 11:26:51 214

原创 静态代理和动态代理

代理模式是一种设计模式,它允许一个对象访问另外一个对象。代理对象通常通过包含真实对象的引用来控制对真实对象的操作。代理模式分为静态代理和动态代理两种。静态代理是在编译时期就确定的代理类。代理类与目标类实现相同的接口。代理类手动编写,代理类的作用是调用目标类的方法,同时可以在方法调用前后加入一些操作。动态代理是在运行时生成代理类的。与静态代理不同,动态代理不需要手动编写代理类,而是使用Java的反射机制动态生成代理类。静态代理适用于结构简单、需求明确的场景,如对固定业务逻辑的增强。动态代理。

2024-09-10 20:29:09 624

原创 java-反射(Reflection)

反射(Reflection)是一种 Java 程序运行期间的动态技术,可以在运行时(runtime)检査、修改其自身结构或行为。通过反射,程序可以访问、检测和修改它自己的类、对象、方法、属性等成员。

2024-09-09 20:03:37 2043

原创 微服务网关

Spring Cloud Gateway 是 Spring Cloud 的⼀个全新项⽬,该项⽬是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的⽹关,它旨在为微服务架构提供 ⼀种简单有效的统⼀的 API 路由管理⽅式。 Gateway⽹关是我们服务的守⻔神,所有微服务的统⼀⼊⼝。架构图: 在SpringCloud中⽹关的实现包括两种: Zuul是基于Servlet的实现,属于阻塞式编程。⽽SpringC

2024-08-21 23:53:08 565

原创 微服务注册中心

Nacos 致⼒于帮助您发现、配置和管理微服务。Nacos 提供了⼀组简单易⽤的特性集,帮助您快 速实现动态服务发现、服务配置、服务元数据及流量管理。nacos的作⽤就是⼀个注册中心,⽤来管理注册上来的各个微服务是 Netflixfa 发布的⼀个负载均衡器,有助于控制 HTTP 和 TCP客户端⾏为。在 SpringCloud 中, Nacos⼀般配合Ribbon进⾏使⽤,Ribbon提供了客户端负载均衡的功能,Ribbon利⽤从Nacos中读取到 的服务信息,在调⽤服务节点提供的服务时,会合理的进⾏负载。

2024-08-21 23:11:34 1041

原创 微服务案例搭建

Spring框架提供的RestTemplate类可⽤于在应⽤中调⽤rest服务,它简化了与http服务的通信⽅式,统 ⼀了RESTful的标准,封装了http链接, 我们只需要传⼊url及返回值类型即可。相较于之前常⽤的 HttpClient ,RestTemplate是⼀种更优雅的调⽤RESTful服务的⽅式。在Spring应⽤程序中访问第三⽅REST服务与使⽤Spring RestTemplate类有关。

2024-08-20 21:15:56 1120

原创 微服务基础知识

SOA 全称为 Service-Oriented Architecture,即⾯向服务的架构。它可以根据需求通过⽹络对松散耦合的粗粒度应⽤组件(服务)进⾏分布式部署、组合和使⽤。⼀个服务通常以独⽴的形式存在于操作系统进程中。站在功能的⻆度,把业务逻辑抽象成可复⽤、可组装的服务,通过服务的编排实现业务的快速再⽣,⽬的:把原先固有的业务功能转变为通⽤的业务服务,实现业务逻辑的快速复⽤。服务注册:服务实例将⾃身服务信息注册到注册中⼼。这部分服务信息包括服务所在主机IP和。

2024-08-20 20:22:46 770

原创 Bean的实例化流程 与 Spring后处理器 与 Spring Bean的生命周期

总结加载xml配置文件,解析获取配置中的每个的信息,封装成一个个的BeanDefinition对象将BeanDefinition存储在一个名为beanDefinitionMap的Map中;ApplicationContext底层遍历beanDefinitionMap,创建Bean实例对象;创建好的Bean实例对象,被存储到一个名为singletonObjects的Map中。

2024-08-19 22:55:47 1182

原创 springboot的自动配置与实现

①定义条件类:自定义类实现Condition接口,重写 matches 方法,在 matches 方法中进行逻辑判 断,返回boolean值。matches 方法两个参数:context:上下文对象,可以获取属性值,获取类加载器,获取BeanFactory等。metadata:元数据对象,用于获取注解属性。②判断条件: 在初始化Bean时,使用 @Conditional(条件类.class)注解。通过刚才的自动配置我们可以发现我们可以自己配置一个spring.factories来完成自定义的启动器。

2024-08-18 17:22:12 772

原创 SpringBoot和Redis的交互数据操作 以及 Redis的持久化/删除策略和缓存问题

当我们客户端访问不存在的数据时,先请求redis,但是此时redis中没有数据, 此时会访问到数据库,但是数据库中也没有数据,这个数据穿透了缓存,直击数据库,我们都知道数据 库能够承载的并发不如redis这么高,如果大量的请求同时过来访问这种不存在的数据,这些请求就都会 访问到数据库,简单的解决方案就是哪怕这个数据在数据库中也不存在,我们也把这个数据存入到redis 中去,这样,下次用户过来访问这个不存在的数据,那么在redis中也能找到这个数据就不会进入到缓存了。是用于指定该实体类对应的数据库表名。

2024-08-18 15:26:40 1142

原创 Redis的基本概念和使用

这是一个之前的一个新闻,很多平台接连二三的连续崩溃,原因是为什么呢?总的来说两点:海量用户高并发。主要是因为关系型数据库,虽然能实现联查等关系查询,但是性能瓶颈,磁盘IO性能低下。扩展瓶颈,数据关系复杂,扩展性差,不便于大规模集群。那怎么解决这种问题呢?降低磁盘IO次数,越低越好,使用内存存储。去除数据加密关系,越简单越好,不存储关系,仅存储数据。那就用Nosql解决。概念:Redis (REmote DIctionary Server) 是用C 语言开发的一个开源的。

2024-08-17 16:45:51 987

原创 SpringBoot的事务/调度/缓存/邮件发送和一些Spring知识点总结

如果 Bean在Spring配置文件中配置了init-method属性,则会自动调用其配置的初始化方法。

2024-08-15 23:06:24 1260

原创 基于MyBatis-plus的SpringBoot开发

MyBatis-Plus 是一个基于MyBatis的增强工具,它旨在简化 MyBatis 的开发过程,提供了很多开箱即用的功能,使得开发者可以更加高效地进行持久层开发。MyBatis-Plus 不改变 MyBatis 原有的 API 和功能,而是在其基础上提供了更丰富的功能和自动化工具。MyBatis-Plus 提供了一套通用的CRUD 接口,只需要简单地继承这些接口就可以获得常用的 CRUD 操作方法,如和select,减少了大量重复的代码。

2024-08-14 21:11:43 1154

原创 上传/删除文件到七牛云存储服务

再次刷新查看:已经删除成功。进入七牛云开发者中心。

2024-08-13 17:03:31 282

原创 Spring Boot 的Web开发

Enjoy 模板引擎经过优化,具有较高的性能,适合处理大规模的模板渲染需求。Enjoy 提供了丰富的功能,比如条件判断、循环、宏定义等,使得模板能够处理复杂的逻辑。这意味着它有较少的依赖和较低的内存开销,对于需要简化配置和减少资源占用的项目尤为合适。Enjoy 模板引擎是一个 Java 的模板引擎,旨在简化模板的创建和渲染。你可以根据项目的需求自定义模板引擎的行为和功能,例如添加自定义的模板指令或函数。* method=常量,此请求的类型(get,post),若不设置则此请求适配所有的请求方式。

2024-08-12 20:38:12 831

原创 SpringBoot的搭建和使用

随着动态语言的流行(Ruby、Scala、Node.js), Java的开发显得格外的笨重;繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术整合难度大。在上述环境下,Spring Boot由此诞生,它的设计是为了使您能够尽可能快地启动和运行。它使用 “习惯优于配置” (项目中存在大量的配置,而 Spring Boot 内置一个习惯性的配置,让你无须手动进行配置)的理念让你的项目快速运行起来。使用 Spring Boot 很容易创建一个独立运行(运jar内嵌Servlet 容器。

2024-08-12 13:30:45 815

原创 SpringAOP_面向切面编程

面向切面编程):将那些与业务无关, 却为业务模块所共同调用的逻辑(例如事务处理、日志管理、权限控制等)封装抽取成一个可重用的模块,这个模块被命名为“切面”(Aspect),便于减少系统的重复代码降低模块间的耦合er度,并有利于未来的可拓展性和可维护性;

2024-08-08 16:38:21 1014

原创 SpringIOC整合dbUtil做的增删改查以及转账业务的实现

dbUtil-阿帕奇提供操作数据库的插件1.事务管理应该由service层进行实现代码优化:目的:业务层进行事务管理1.同一个业务方法的多个dao方法公用一个connection对象3.通过连接对象进行事务的统一管理代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。举个例子来说明:假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过户流程,但是这确实太浪费我得时间和精力了。

2024-08-07 23:36:28 825

原创 Spring注解(annotation)以及Spring 配置类

替换:就是将本来在xml中的bean引用一个类的实例换成在类上面的注解来完成一些配置文件的功能来减少配置文件的使用。属性:value:它和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。替换:@Value("${动态获取}")

2024-08-07 22:09:41 661

原创 SpringIOC容器对Bean管理

SpringIOC容器对Bean管理一.bean实例化1.通过构造方法(默认)2.通过工厂方法3.通过静态工厂方法二.bean作用域含义:spring对于创建javaBean实例的方式语法:<bean scope="属性值"></bean>属性值:singleton=====>单例(默认)prototype=====>多例request=======>一个请求创建一个session=======>一个会话创建一个三.bean生命周期1.实例化2.属性赋值(DI)

2024-08-06 22:05:03 811

原创 SpringDI(依赖注入)的理解

DI(Dependecy Inject,中文释义:依赖注入)是对IOC概念的不同角度的描述,是指应用程序在运行时,每一个bean对象都依赖IOC容器注入当前bean对象所需的另外一个bean对象。(例如在 MyBatis 整合Spring 时,SqlSessionFactoryBean 依赖| IOC容器注入一个DataSource数据源bean )二、SpringDI(依赖注入)的作用是什么?将springioc 容器所创建的各个组件,使用DI的语法进行关联,耦合(胶水)

2024-08-06 21:29:59 571

原创 初识Spring与SpringIOC容器

IOC的作用是解耦,使用IOC容器管理项目组件之间的耦合关系IOC:是Spring框架的核心思想之一,主要用于解耦。IOC是指将创建对象的控制权转移给Spring框架根据配置文件或注解等方式,创建bean对象并管理各个bean对象之间的依赖关系。使对象之间形成松散耦合的关系,实现解耦;控制:指的是对象创建(实例化、管理)的权力反转:控制权交给外部环境(| Spring 框架、IoC容器)

2024-08-05 22:36:21 1191

原创 MyBatis缓存

立即加载是:不管用不用信息,只要调用,马上发起查询并进行加载比如:当我们查询学生信息时,就需要知道学生在那个班级里,所以就需要立马去查询班级的信息通常:当一对一或者多对一的时候需要立即加载延迟加载是: 在真正使用数据时才发起查询,不用的时候不查询,按需加载(也叫懒加载)比如:在查询班级信息,每个班级都会有很多的学生(假如每个班有100个学生),如果我们只是查看 班级信息,但是学生对象也会加载到内存中,会造成浪费。

2024-08-05 11:29:58 966

原创 MyBatis映射器注解

• @Insert ,@Delete,@Update,@Select 注解的功能• 分别完成新增,删除,修改和查询操作;• @Results 注解和 @ResultMap 注解的功能• @Results 定义结果映射,@ResultMap 调用对应的结果映射;• 动态 SQL 的注解。

2024-08-01 22:14:38 1406

原创 MyBatis动态SQL+模糊查询

满足条件的语句

2024-08-01 15:59:14 983

原创 MyBatis 动态代理和映射器+多表联查

在接口中有方法的返回值定义,参数的定义,方法名,在sqlMapper.xml 中也对应这接口给予了赋值, 这时候dao的实现类就显得多余,这是Mybatis可以帮助我们自动产生实现类,并可以调取方法得到结果,这就是Mybatis的mapper动态代理。级联(cascade),是指多个对象之间的映射关系,建立数据之间的级联关系提高管理效率一对一:一个对象对应唯一的对象, 举例:中国公民和身份证;一对多:一个对象对应多个对象, 举例:班级和学生;多对多:多个对象对应多个对象, 举例:公司角色和公司员工。

2024-07-31 22:07:45 1168

原创 MyBatis基础配置

功能:标识配置文件的起始,所有配置信息都存放在这里。

2024-07-31 13:34:10 1233

原创 JDBC的回顾 与 Mybatis的简介

ORM 模型是数据库的表和简单 Java 对象(Plain Ordinary Java Object,简称 POJO)的映射关系模型,主 要解决数据库数据和 POJO 对象的相互映射。Java对象POJO 对象(Plain Ordinary Java Object): 简单的 Java 对象,实际就是 普通 JavaBeans。映射配置配置分为:类与数据库中表 的映射;对象与表中记录的 映射;类的属性与数据库中 表的字段的映射。数据库。

2024-07-30 12:02:42 1172

原创 MySql-慢查询

MySQL默认10秒内没有响应SQL结果,则为慢查询。可以去修改MySQL慢查询默认时间。

2024-07-25 20:07:40 817

原创 MySql-函数

数学函数 用作常规的数学运算;字符串函数 对于字符串类型的字段处理;日期时间函数 对于日期和时间类型的字段进行 处理;聚合函数 常用于GROUP BY从句的 SELECT查询中;自定义函数 根据实际需求自定义函数;MySQL函数,是一种控制流程函数,属于数据库用语言。二、

2024-07-25 14:04:29 404

原创 MySQL-事务

事务(Transaction),就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内 的所有SQL都将被取消执行。为了让不同的事务之间相互不存在干扰,就需要对事务的操作进行隔离, 事务的隔离性也就是将操作同一个数据的事务相互分离,让操作之间分开有序的执行。

2024-07-25 13:26:16 1294 1

原创 学生选课表练习(面试题)

13. 查询各科成绩最高分、最低分和平均分,以如下形式显示:课程 ID,课程 NAME,最高分,最低分,平均分,及格率,中等率,优良率,优秀率(及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90)。张三',1,'1988-1-15','陕西咸阳','zhangsan@qq.com',3000.00);王五',1,'1977-7-1','山西太原','wangwu@qq.com',5000.00);赵雷' , '1990-01-01' , '男', '1');

2024-07-23 21:58:23 916

原创 MySQL-视图、存储过程和触发器

视图是从一个或者几个基本表(或视图)导出的表。它与基本表不同,是一个虚表,视图只能用来查询。不能做增删改查(虚拟的表)1.视图的作用简化查询重写格式化数据频繁访问数据库过滤数据2.创建视图-- 创建视图-- 语法:create view 视图名 【view_xxx / v_xxx】-- as 查询语句SELECT * FROM student WHERE ssex = '男';存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集。

2024-07-23 19:37:52 482

原创 高级数据查询语句-多表联查

非等值联查:笛卡尔积 逻辑上有错误,表中标红的一行数据是有错误的,班级编号为1,但是显示数据在2班。获取没有班级的学生和班级和学生都有的还要获取没有学生的班级(不去重的并集)-- 优点:表少,每张表的数据大,内存占用小,IO高(每次拿表,都要做判断)效率高。查询没有学过张三老师课程的学生(反向过滤*****)获取没有班级的学生,班级和学生都有,没有学生的班级。查询大于5人的班级名称和人数(不使用子查询)查询id最大的一个学生(子查询)查询学过张三老师课程的学生。查询大于5人的班级名称和人数(子查询)

2024-07-22 23:25:57 911

原创 基本的DQL语句-单表查询

如SELECT语句。是SQL语句 中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为。针对数据库中的一张数据表进行查询,可以通过各种查询条件和方式去做相关的优化。DQL(Data Query Language 数据查询语言)。语法: SELECT * FROM 表名 [WHERE 条件]表名或者字段名过长时,可以用AS关键字起别名,方便操作。7.where条件子句。分组 group by。% 任意多的任意字符。

2024-07-22 21:06:44 1300

原创 MySQL相关知识---DML数据操作语句和基本的DQL语句

例如,a列值为1、 b列值为2,c列不需要手动插入,定义a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。控制台备份时,依赖的是MySQL自带的备份工具mysqldump,该工具的功能是转储数据 库,将数据转移到另一个SQL数据库,当然并不局限于MySQL数据库。有条件的从数据库表中获取记录,通常同在修改,删除,和查询语句的时候,协助该类语句从条件中获取 记录。INSERT INTO `表名` (`字段1`,`字段n`) VALUES (值1,值n),(值1,值n),(值1,值n);

2024-07-20 23:48:31 751

原创 Collection接口的介绍(List)

②CopyOnWrite:"写入"操作时,先进行数组复制,然后在新数组中进行写入操作,然。:链表动态扩容,每添加一个节点,链表动态扩容一个元素空间。特点:特点:先进后出FILO or 后进先出LIFO。:数组:Object[ ] elementData。:数组:Object[ ] elementData。:①通过“ReentrantLock”锁实现。:查找、遍历效率高;:数组:Object[] array。特点:有序、允许重复(值不唯一):插入、删除效率高,查找效率低。,它有三个子接口,分别是。

2024-07-18 20:32:12 287

原创 MySQL相关知识

数据库(Database,简称DB)概念:长期存放在计算机内,有组织、可共享的大量数据的集合,是一个 数据“仓库”。

2024-07-18 19:46:18 1167 1

空空如也

空空如也

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

TA关注的人

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