自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程池的类型和状态

调用了ScheduledThreadPoolExecutor实现类的ScheduledThreadPoolExecutor方法实现。

2024-09-19 19:05:32 326

原创 线程池的执行流程和配置参数总结

提交线程任务;如果线程池中存在空闲线程,则分配一个空闲线程给任务,执行线程任务;线程池中不存在空闲线程,则线程池会判断当前线程数是否超过核心线程数(corePoolSize)若未超出核心线程数,则创建一个核心线程用来执行线程任务;若超出核心线程数,则线程池会检查工作队列(workQueue)是否已满如果工作队列未满,则将该线程任务存入工作队列中,当线程池中出现空闲线程,从工作队列中依次取出线程任务并执行;如果工作队列已满,则判断是否超出最大线程数(maximumPoolSize)

2024-09-19 12:16:14 1550

原创 Spring面试题二

如果 Bean 在 Spring 配置文件中配置了。

2024-08-24 23:25:12 1425 1

原创 解决雪崩的方案之一:流量控制

流控模式包括:直接:对当前的资源进行限流关联:关联资源触发阈值,对资源进行限流(高优先级资源触发阈值,对低优先级资源限流)链路:只统计入口资源进入资源的请求,对入口资源进行限流(只统计从指定资源进入当前资源的请求数,是对请求来源的限流)流控效果包括:快速失败:QPS超过阈值时,直接拒绝新的请求warm up:QPS超过阈值时,拒绝新的请求,但QPS阈值是逐渐提升的,可避免冷启动时高并发导致服务宕机排队等待:请求会进入队列,按照阈值允许的时间间隔依次执行请求;

2024-08-24 22:10:24 1009

原创 DDL——三范式与表约束

为了建立冗余较小、结构合理的数据库,设计数据库时要遵循一定的规则,在关系型数据库中这个规则就叫做范式,范式包括:第一范式、第二范式、第三范式。约束就是表中数据的限制条件。约束包括:非空约束、唯一性约束、主键约束、外键约束、检查约束(目前MySQL不支持,Oracle支持)

2024-08-22 22:26:51 947

原创 微服务的保护

1.初始SentinelSentinel是阿里巴巴开源的⼀款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控:Sentinel 同时提供实时的监控功能。

2024-08-21 22:55:59 1632 1

原创 微服务注册中心

在 SpringCloud 中, Nacos⼀般配合Ribbon进⾏使⽤,Ribbon提供了客户端负载均衡的功能,Ribbon利⽤从Nacos中读取到 的服务信息,在调⽤服务节点提供的服务时,会合理的进行负载。zookeeper它是⼀个分布式服务框架,是Apache Hadoop 的⼀个⼦项⽬,它主要是⽤来解决分布式应 ⽤中经常遇到的⼀些数据管理问题,如:统⼀命名服务、状态同步服务、集群管理、分布式应⽤配置项 的管理等。注册中心可以说是微服务架构中的"通讯录",它记录了服务和服务地址的映射关系。

2024-08-21 21:22:05 1328

原创 Spring面试题一

Bean 代表被IOC容器管理的对象。我们通过配置文件或注解,告诉IOC容器帮助我们管理哪些对象。

2024-08-18 23:07:28 789

原创 Spring Boot 核心配置

YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如:C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。YAML文件的扩展名可以使用.yml或者.yaml。

2024-08-17 23:59:24 1517

原创 SpringBoot自动配置

自定义redisstarter,要求当导入redis坐标时,SpringBoot自动创建Jedis的Bean直接设置port、host。

2024-08-17 22:09:06 1449

原创 Redis的持久化

官方推荐两个都启用,如果对数据不敏感,可以选单独用RDB,不建议单独用 AOF,因为可能会出现Bug。如果只是做纯内存缓存,可以都不用。

2024-08-15 19:33:41 1030

原创 springboot有关事务的实现

Spring Boot 中的事务管理器是通过 AOP(面向切面编程)实现的,它可以拦截带有 @Transactional 注解的方法,并在方法执行前后自动开启和提交事务。如果方法执行过程中发生异常,事务管理器会自动回滚事务,从而保证数据的一致性和完整性。事务是指一组操作,这些操作要么全部成功,要么全部失败。如果在一组操作中有一个操作失败了,那么整个事务都应该回滚,即撤销已经执行的操作,从而保证数据的一致性和完整性。事务管理器可以确保一系列操作要么全部成功,要么全部失败,从而保证数据的一致性和完整性。

2024-08-14 20:37:40 433

原创 Redis的数据类型以及使用java简单操作redis

blpop list 30 获取数据,有则返回,没有则等待30秒,此时可以在另一个客户端添加数据进去,则这个客户端就会返回数据。zrange key start(开始索引) stop(结束索引) [WITHSCORES]通过下标截取指定的长度,这个list已经被改变了,只剩下截取的元素。将某个具体的value插入到列中的某个元素的前面或者后面!数据操作不成功的反馈与数据正常操作之间的差异。随机获取集合中的某个数据并将该数据移出集合。求两个集合的交、并、差集并存储到指定集合中。

2024-08-14 20:26:18 984

原创 Redis的简单介绍

NoSQL( Not Only SQL),意即“不仅仅是SQL”,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。Redis是用C语言开发的一个开源的高性能键值对数据库。1. 数据间没有必然的关联关系2. 内部采用单线程机制进行工作。

2024-08-14 20:19:24 701

原创 Spring Boot简介

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

2024-08-12 20:31:25 1182

原创 Spring IOC使用DButil实现对数据库的操作

dbutil是由阿帕奇提供操作数据库的插件,其核心类为QueryRunner,存在方法 .query() 查询,.update() 增删改;

2024-08-10 22:24:27 484

原创 代理模式Proxy

代理模式给某一个对象提供一个代理对象,并由代理对象控制对真实对象的访问,起到对代理对象已有功能的增强通俗的来讲代理模式就是我们生活中常见的中介。

2024-08-08 19:52:48 1322 4

原创 单例模式(懒汉式、饿汉式)

单例模式三要素:构造方法私有化静态属性指向实例的方法,返回自己创建的静态属性。

2024-08-08 18:09:43 490

原创 六大设计原则和23种设计模式

设计原则是为了更好的设计软件的高层指导方针,它不提供具体的实现方式也不会绑定任何一种编程语言。最常用的原则是SOLID(SRP,OCP,LSP,ISP,DIP)原则。策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。单一职责原则(SRP)里氏替换原则(LSP)依赖倒置原则(DIP)

2024-08-08 13:44:18 452

原创 Spring IOC容器对Bean管理

5.2属性 destory-method=“”语法:<bean scope="属性值"></bean>3.2属性 init-method=“”含义:spring对于创建javaBean实例的方式。===>teacher的初始化(接口)===>teacher的初始化(属性)===>teacher的销毁(接口)===>teacher的销毁(属性)===>teacher的属性赋值。===>teacher的实例化。1.通过构造方法(默认)3.通过静态工厂方法。

2024-08-08 00:06:22 541

原创 使用DI实现三层架构

2.将需要spring管理的类注入spring容器(配置文件中 beans.xml)3.1.加载spring核心配置文件,获取spring容器对象。3.向spring容器中索取java实例(解耦)(测试类)3.扫描所有被@Component注解所修饰的类,注入容器。1.找到需要以解耦方式获取实例对象的类(使用set方法)2.使用注解注入数据访问层、业务层、控制层。2.使用注解注入数据访问层、业务层、控制层。4.向spring容器中索取java实例。3.向spring容器中索取java实例。

2024-08-07 23:29:14 297

原创 Spring DI

DI(Dependecy Inject,依赖注入)是对IOC概念的不同角度的描述,是指应用程序在运行时,每个Bean对象都依赖IOC容器注入当前bean对象所需要的另一个bean对象。@Component(value="注入容器中的id,如果省略id为类名且首字母小写,value属性名称可以省略")属性:value:它和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。bean代表被IOC容器管理的对象,通过配置文件或者注解,告诉IOC容器哪些是需要管理的对象。

2024-08-07 22:42:53 747

原创 Spring IOC

ClassPathXmlApplicationContext===>通过加载主配置文件的相对路径,获取spring容器FileSystemXmlApplicationContext===>通过加载主配置文件的绝对路径,获取spring容器AnnotationConfigApplicationContext===>加载配置类,获取spring容器。2.将需要spring管理的类注入spring容器(配置文件中 beans.xml)找到需要以解耦方式获取实例对象的类,在配置文件中写出key=实例对象类。

2024-08-06 21:19:38 1140 1

原创 SQL语句——DDL(数据定义语言)语句

方式二:show create table 表名,出现表后,全选、复制、粘贴,可显示执行语句的具体实现方式。2.如果已经存在具体的数据无法覆盖,要修改要确保数据式可以做隐式转换,不能转换的都不能改,否则就会报错。alter table 表名 change 旧字段名 新字段名 要修改的类型 要修改的属性;alter table 表名 modify 字段名 要修改的类型 要修改的属性;表名.ibd存储数据和索引以及表结构。表名.frm存储表结构;删除表,不仅会删除表的数据,还有索引,以及表结构。

2024-07-21 23:35:11 861

原创 MySQL简介

数据在磁盘上怎样存储由数据库管理而不依赖于应用程序,这样当数据的物理存储改变了,应用程序不用改变。SQL语句是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。数据和数据之间的结构关系,数据和程序之间的依赖关系,如何能让这些关系持久维系?大量程序产生的数据在程序运行时和程序结束运行后,数据应该怎么保存?数据在数据库中的存储可以依靠二维表结构来逻辑的存储数据,可以。口令,用户的权限进行限制,再比如对数据的存储进行限制。语句sql结尾处加一个";

2024-07-19 17:39:21 337

原创 网络安全与操作

IP地址可以唯一的标识网络上的每一台计算机,IP地址是32位,由4个8位二进制数组成,但它由点分十进制表示。

2024-07-18 18:48:04 847

原创 如何处理压缩文件

如果FileHeader类型的对象是文件,则创建子文件:file.createNewFile()、获取压缩包中的子文件输入流(getInputStream()方法)、复制文件输入流至新子文件(FileUtils.copyInputStreamToFile()方法)。每循环一次创建一个ZipEntry类型的对象,写入一个压缩包的子文件(调用putNextEntry方法);如果ZipEntry类型的对象是文件,则创建子文件:file.createNewFile();4>遍历子目录和子文件(遍历List集合)

2024-07-12 18:51:47 1146

原创 String字符串的常见方法总结

将字符串按指定的分割字符进行分割,并将分割后的结果存储在字符串数组中。注:没查找到就返回-1。

2024-02-28 13:35:13 718

原创 String为什么是不可变的

观察源代码,String类被final修饰,该类不能被继承。String字符串被存储在char类型的数组value,而value数组被声明为final,,且被private修饰,表示value数组被初始化后不能再改变(引用地址无法改变)。修改字符串的某个字符,不会在原有的字符串上进行修改(字符串的不可变性),而是会分配一个新的内存地址给他,产生一个新的字符串。观察源代码,对数据进行修改时,会创建一个新的字符串。

2024-02-28 11:58:59 581

原创 数组常见算法代码总结

一个从头开始查找(下标i=0),一个从尾部开始查找(下标k=数组长度-1),分别判断是否与目标元素相同,相同则返回对应下标,不同则继续查找。一个数组arr,随机产生一个数字,将数组arr中最后一个元素与前面元素中下标为随机数的元素交换位置。就是将数组的最后一位元素与前面元素依次交换,直到最后一位元素存放在首元素的位置上。方法4:利用Arrays工具类的方法实现,先使用sort()方法对数组进行排序,再使用binarySearch()方法进行二分查找。向左旋转同样,不过是第一位元素依次向后交换,交换到最后。

2024-02-27 18:14:14 426

原创 Arrays工具类的常见方法总结

参数2:复制后的新数组的长度。参数fromindex:要使用指定值填充的最后一个元素的下标(不包括)参数fromindex:要使用指定值填充的第一个元素的下标(包括)传入的参数可以单独为数组、数组和比较器、数组和两个int类型的参数。参数3:要复制范围的最后下标位置,可大于复制数组的长度。参数fromindex:要开始排序的最后一个元素的下标;参数fromindex:要开始排序的第一个元素的下标;参数value:要分配给数组指定范围中的每个元素的值。将指定数组的指定长度复制到一个新的数组。

2024-02-27 00:28:16 946

原创 数值类型的运算方式总结

对BigDecimal进行加减乘除都不会存在精度丢失问题,但除法会出现无法除尽的情况,此时必须指定精度以及如何截断。由于整数存在范围限制(例如int型:-2147483648 ~ +2147483647),如果计算结果超出了范围,就会产生溢出,但不会出现错误,只会产生一个奇怪的结果。计算机计算时通常会将数据转换成二进制,而浮点数的小数位转换成二进制时,每次乘以二,会形成无限循环小数,计算机会自动将它转换为近似值,这时就会形成精度丢失。如果两个数不同,结果为1,否则为0。只要任意一个为1,结果就为1。

2024-02-25 23:00:10 476 1

原创 == 与 equals 的区别

=比较两个变量的值是否相等无法使用equals比较。

2024-02-12 18:06:58 422 1

原创 接口与抽象类的区别

通过abstract关键字定义抽象类接口由interface关键字定义。

2024-02-07 18:32:28 468 2

空空如也

空空如也

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

TA关注的人

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