自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 XXL-JOB(2)

任务以源码的形式去维护调度中心,支持实时编译,无需指定JobHandler。实际上是继承自JobHandler的java类代码,在执行器中运行,可以使用注入执行器里中的其他服务.在执行器中添加service在 调度中心添加Gule任务,在gule idea中添加代码启动任务即可。

2023-08-27 12:28:27 173

原创 XXL-JOB

XXL-JOB是一个分布式的任务调度平台。目的:为了自动完成特定的任务,在约定的特定时间去执行任务的过程。原因:在spring中有@scheduled,放到业务层代码上面也可以。但是其无法做到高可用、防止重复执行,单机处理极限。XXL-JOB由调度中心和执行器组成。调度中心:管理调度信息,根据配置发出请求;自身不承担业务代码;调度系统和执行任务解耦,提高稳定和可用性,同时让调度系统不受任务模块的限制;支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,glue开发等。

2023-08-26 19:05:36 346

原创 数据结构(7)

通过磁盘预读,将数据放到B树中,3层B树可容纳1024*1024*1024差不多10亿个数据,查询数据只需要小于3次硬盘读取即可,B树大大提高了 IO的操作效率。在数据库中,查询操作最为常见,为了提高效率,可基于某张表的某个字段建立索引,即可提高查询效率,而这个索引就是在B+树上实现的。2.B+树叶子节点相互连接,对整棵树的遍历只需要一次线性遍历即可。1.非叶子结点不含数据,只作为索引,在内存相同情况下,可存放更多的key;2.树的所有结点构成一个有序链表,可通过key排序遍历全部数据。

2023-08-24 16:49:31 532

原创 数据结构(6)

2-结点:含有一个键(及其对应的值)和两条链,左链接指向2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。3-结点:含有两个键(及其对应的值)和三条链,左链接指向的2-3树中的键都小于该结点,中链接指向的2-3树中的键都位于该结点的两个键之间,右链接指向的2-3树中的键都大于该结点。查找:判断一个键是否在树中,先和根节点的键比较,如果相等,查找命中,如果不同,根据比较结果,在其子树中继续查找。还是空连接,查找未命中。

2023-08-23 20:25:37 1574

原创 数据结构(5)

创建一个新数组,将原数组0~length-1的数据拷贝到新数组1~length处,从新数组长度的一般开始往索引1处扫描(从右往左),对每个元素进行下沉处理。2.通常使用数组实现,将二叉树结点依次放入数组中,根结点再位置1,子结点在2和3,子结点的子结点在4,5,6,7,以此类推。1.堆是完全二叉树,除了树最后一层不需要满,其余层次都需要满,如果最后一层不是满的,那么要求左满右不满。2.下沉堆顶元素,忽略最大索引处的最大元素,范围是【1,N-执行次数】3.重复1和2步骤,直到范围变成【1,1】

2023-08-23 16:31:39 580

原创 数据结构(4)

无论是符号表还是线性表,随着元素的增多,增删查操作耗时增加,为了提高运算效率,需要树。树是由N(N>=1)个有限结点组成一个具有层次关系的集合。特征:1.每个结点有零个或多个结点2.没有父结点的结点为根节点3.每个非根结点只有一个父结点术语:1.结点的度:一个结点含有的子树的个数。2.叶结点:度为0的结点。3.分支结点:度不为0的结点。4.结点的层次:从根节点开始,根结点的层次为1,根的后继层次为2.

2023-08-23 10:13:47 755

原创 数据结构(4)

符号表目的是将一个值和一个键联系起来,存储键值对,根据键寻找值。应用场景:字典、图书索引。符号表中,键具有唯一性。

2023-08-23 08:54:30 46

原创 数据结构(3)

线性表是多个具有相同特征的数据的有限序列。前驱元素:A在B前面,称A为B的前驱元素。后继元素:B在A后面,称B为A的后继元素。线性表特征:1.一个元素没有前驱元素,就是头结点;2.最后一个元素没有后继元素,就是尾结点;3.除了头结点和尾结点,都具有前驱和后继线性表分为顺序表和链表。

2023-08-22 11:48:23 938 2

原创 数据结构(2)

1.比较相邻的两个元素。如果前一个元素比后一个元素大,则交换两者位置。2.对每一对相邻元素做相同工作,从第一对元素到最后一对元素,最后的一个元素就是最大的元素。时间复杂度为(n^2)

2023-08-21 10:49:06 922

原创 数据结构(1)

2>链式存储结构:将数据存放在任意的存储单元中,存储单元可以连续也可以不连续,数据之间的逻辑关系不能反映物理关系,因此引入了一个指针存放数据的地址,通过指针找到相关数据间的位置。逻辑结构是从具体问题中抽象出来的模型,是抽象意义的结构,按照对象中数据的相互关系进行分类。1>顺序存储结构:将数据放到地址连续的存储单元里面,数据间的逻辑关系和物理关系是一致的。复杂层度:O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)2>线性结构:线性结构中的元素之间存在一对一的关系。

2023-08-19 11:40:45 416

原创 elaticsearch(3)

- 统一版本 -->@Data。

2023-08-18 16:42:09 396

原创 elaticsearch(2)

分词:把一段中文或其他文字划分为一个个关键字。将搜索的信息分词,并把数据库或索引库中的数据分词,进行匹配。默认每个中文是一个词(不使用IK分词器时)IK分词器提供了两个算法:ik_smart和ik_max_word,ik_smart为最少切分,ik_max_word为最细粒度切分。添加自定义词到字典中1.elasticsearch目录/plugins/ik/config/IKAnalyzer.cfg.xml2.打开文件,扩展字典,加入my.dic3.编辑my.dic,写入自定义词组4.重启ES。

2023-08-18 16:11:48 77

原创 elaticsearch(1)

Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。

2023-08-18 11:21:10 206

原创 mysql(4)

1.创建和维护索引需要时间,对记录进行增删改查时会修改索引,降低sql语句执行效率。索引是一种用于快速查询和检索数据的数据结构,本质上是一种排序好的数据结构。2.通过创建唯一性索引,可以保证数据库表中每一行记录的唯一性。常见的索引结构:B树、B+树、Hash、红黑树。在数据量不大时,索引并不会带来很大的提升。2.索引需要物理存储,会耗费一定空间。InnoDB是B+树结构。

2023-08-17 11:48:07 25

原创 mysql(3)

2.水平分库:将同一个表按照一定规则拆分到不同的数据库中,每个库可以位于的服务器上,实现了水平扩展,解决了单表存储和性能瓶颈的问题。1.无法使用join:同一个表分布在不同数据库中,无法使用join,只能手动操作,查询到一个数据后,再由此数据查询其他数据。1.垂直分库:把单一的数据按照业务进行划分,不同的业务使用不同的数据库,进而将一个数据库的压力分散到多个数据库。2.事务问题:单个表在不同的数据库中,单个操作设计多个数据库,数据库自带的事务已经无法满足我们的要求。的拆分,把一张字段比较多的拆分成多张表。

2023-08-16 17:35:24 440

原创 mysql(2)

关系型数据库都有ACID特性AtomicityIsolationDurability此时一个事务读取数据并修改了数据,修改对其他事务是可见的,但是此事务未提交。另一个事务读取了这个未提交的数据,第一个事务回滚,未将数据提交到数据库。第二个事务读取到的数据就是脏读。指一个事务多次读取同一数据。两个事务同时读取一个数据,第一个事务修改数据,第二事务再次读取,得到修改后的数据,此时,第二个事务读取的数据不一致。

2023-08-16 14:11:06 290

原创 mysql(1)

关系型数据库:建立在关系模型上的数据库。关系模型表明了所存储的数据之间的联系(一对一、一对多、多对多),可简单的理解为二维表格模型。优点:1.二维表结构贴近于正常开发逻辑2.支持通用的sql3.支持事务,保证事务的正确执行,同时提供了事务的恢复、回滚、并发控制、死锁4.数据保存于磁盘中,安全缺点:1.高并发读写能力差2.海量数据情况下,读写效率低3.可扩展性不足非关系型数据库:数据以对象的形式存储于数据库中,而对象之间的关系通过每个对象自身的属性决定的。

2023-08-15 16:20:58 195

原创 线程记录(2)

1.线程状态。

2023-08-14 19:52:26 137

原创 线程池记录

我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是并发线程数量增多,执行的任务短,这样频繁创建和销毁线程会消耗大量时间。4.Executors.newSingleThreadScheduledExecutor:创建一个单线程的定时线程池。3.Executors.newScheduledThreadPool:创建一个固定大小的定时线程池。2.Executors.newSingleThreadExecutor:创建一个单线程的线程池。3.提高线程的可管理性。

2023-08-14 11:53:38 61

原创 java内存模型JMM

工作内存:每条线程私有,保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量。use(使用):作用于工作内存的变量,它把工作内存中一个变量的值传递给执行引擎,每当虚拟机遇到一个需要使用到变量的值的字节码指令时将会执行这个操作。read(读取):作用于主内存的变量,它把一个变量的值从主内存传输到线程的工作内存中,以便随后的load动作使用。lock(锁定):作用于主内存的变量,它把一个变量标识为一条线程独占的状态。

2023-08-14 10:34:18 56

原创 线程记录(1)

2.创建子类对象,将子类对象作为参数传递到thread的构造器中,创建出Thread类的对象。四、1.以方式二、三创建好runnable接口或callable的实现类,重写run()或call()五、匿名类:再thread对象中,将参数作为一个方法,new一个runnable(),重写run()run()中包含要执行的线程内容,当run()方法运行结束后,线程随即终止。三、1.实现Callable接口,实现call(),将操作写入其中,start()启动线程,调用start0()进行系统调度资源分配。

2023-08-12 16:38:26 156

原创 源码角度分析@configuration和@component不同

2.@configuration中所有带@Bean都会被CGLIB动态代理,调用此配置类中的方法都会返回同一个实例。1.@configuration是@component的内部类,@configuration包含@component注解。4.@Bean方法不会进一步反过来创建配置类,即便有@configuration,只会作为不同的Bean。,将配置类带@configuration的配置类添加标志位FULL,@component、@ComponentScan添加Lite。

2023-08-11 20:20:32 164

原创 为什么一个main就能启动springboot项目

调用load()方法,调用load(source);,来判断资源是class类型、resourece类型、package类型、CharSequence,然后调用对应的load方法load((Resource) source)、load((Package) source)。

2023-08-07 18:55:23 81

原创 springboot(6)

为一个对象创建对应的Fastclass对象,对象的各个方法会创建索引index关联到fastclass对象,每个index对应一个方法,之后只需要通过对象实例以及index,调用invoke(instance,index,args),即可调用对应对象的方法。4.调用代理对象的invoke,参数为代理方法cglib索引,代理对象,形参,执行cglib方法,在cglib方法中有super.a();2.走到intercept方法中,o为代理类,method为调用的方法。代理类,继承于目标类。

2023-08-07 11:05:51 32

原创 springboot(5)

通过实现InvotionHandler接口,定义横切逻辑,通过反射调用目标类的代码,将横切逻辑和业务代码编织。再通过Proxy为InvotionHandler实现类创建一了符合目标类接口的具体实例。CGLIB利用asm开源包,对代理对象类的class文件加载,修改字节码生成 子类。2.通过enhancer代理对象 指明代理的方法 和 目标类,返回代理对象。CGLIB代理类:代理类是目标类的子类,依赖于CGLIB。父类负责业务逻辑,子类将增强逻辑编织进去。JDK代理:目标类和代理类实现相同的接口。

2023-08-06 16:20:47 31

原创 springboot(4)

OOP(Object Oriented Programming,面向对象编程)AOP(Aspect Oriented Programming,面向切面编程)POP(Process Oriented Programming,面向过程编程)FP(Functional Programming,函数式编程)AOP的诞生就是为了弥补OOP(面向对象编程)的不足。面向对象非常擅长 解决纵向的业务逻辑,但是对于横向的公共操作却显得有些“力不从心”。

2023-08-06 14:47:34 189

原创 springboot(3)

URI:Uniform Resource Identifier,统一资源标识符URL:Uniform Resource Locator,统一资源定位符URN:Uniform Resource Name,统一资源名称但URN只是对资源的描述,而通过URL可以直接找到资源。

2023-08-06 10:28:47 787

原创 springboot(2)

Handler,也就是处理器,它直接对应着MVC中的C层,即Controller层,它可以表现为多种形式,可以是类,也可以是方法或者是其他的形式,它的类型是Object。我们用的最多的就是用@RequestMapping注解标注的方法,它就对应着一个Handler。视图(View):在Java EE应用程序中,View可以由JSP(Java Server Page)担任。模型(Model):Model是由一个实体Bean实现的,是数据的载体 ·@PathVariable用来修饰参数,用于获取URL上的值。

2023-08-05 11:12:34 161

原创 springboot(1)

精要:自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序, 无需传统项目构建。Actuator:提供在运行时检视应用程序内部情况的能力:Spring应用程序上下文里配置的BeanSpring Boot的自动配置做的决策应用程序取到的环境变量、系统属性、配置属性和命令行参数。

2023-08-05 10:44:43 101

原创 springcloud(6)

服务端(config Server )也是一个微服务,如果将配置全都放到服务端(config Server ),当放生版本改动时,整个小集群都要改。因此,可以将所有微服务的配置统一放到 git 远程仓储上进行版本管理。config Server 只需要配置 git 远程仓储地址,在 config Server 启动时候,config Server 会到 git 远程仓储上进行拉取配置到本地仓储,启动后如果远程仓储的配置有改动,则 config Server 会自动检测到远程仓储的配置改动,进行自。

2023-08-04 20:39:18 27

原创 springcloud(6)

Zull包含了对请求的(用来跳转)和两个最主要功能.。Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他服务的消息,也即以后的访问微服务都是通过Zull跳转后获得。

2023-08-04 16:34:03 16

原创 springcloud(6)

3.为服务提供者,添加监控。

2023-08-04 11:34:39 18

原创 springcloud(5)

Hystrix能够保证在一个依赖出问题的情况下,不会导致整个体系服务失败,避免级联故障,以提高分布式系统的弹性。“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控,(类似熔断保险丝),向调用方返回一个服务预期的,可处理的备选响应,(FallBack),而不是长时间的等待或者抛出调用方法无法处理的异常,这样就可以保证了服务调用方的线程不会被长时间,不必要的占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

2023-08-04 10:50:08 18

原创 springcloud(4)

Fegin是Springlcoud所提供的声明式、模板化的HTTP客户端,调用远程服务更容易。且Fegin继承了Ribbon,所以Fegin默认实现了负载均衡功能。调用微服务的两种方法:1.微服务名字【ribbon】2.接口和注解【fegin】

2023-08-03 20:42:33 19

原创 springcloud(3)

1.自定义规则/*** IRule:* RoundRobinRule 轮询策略* RandomRule 随机策略* AvailabilityFilteringRule : 会先过滤掉,跳闸,访问故障的服务~,对剩下的进行轮询~* RetryRule : 会先按照轮询获取服务~,如果服务获取失败,则会在指定的时间内进行,重试*/@Bean//使用随机策略//使用轮询策略//忽略某种规则的服务器//使用重试算法2.开启负载均衡。

2023-08-03 18:12:30 16

原创 springcloud(2)

Netflix在涉及Eureka时,遵循的就是API原则Spring Cloud Netflix最出名且最常用的五大组件分别是服务注册与发现:Eureka断路器:Hystrix服务网关:Zuul负载均衡客户端负载均衡:Ribbon服务端负载均衡:Feign(其也是依赖于Ribbon,只是将调用方式RestTemplete 更改成Service 接口)分布式配置:ConfigEureka是Netflix的核心模块之一。

2023-08-03 13:00:25 20

原创 springcloud(1)

微服务:强调的是服务的大小,关注于某一个点,是具体解决某一个问题或者是提供落地对应服务的 一个服务应用。狭义来讲:微服务是IDEA中的一个微服务工程,或者是一个moudel。微服务架构:一种架构模式,将应用程序划分为一组小服务,服务之间相互协调、配合。服务之间使用轻量级的通信机制Http相互协作,每个服务围绕着具体的业务进行构建,并且能够被独立部署到生产环境中,另外,应避免统一、集中式服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具进行构建。

2023-08-03 10:32:10 21

原创 springbatch记录(7)

前端。

2023-08-02 15:17:44 30

原创 springbatch记录(6)

默认情况下当任务出现异常时,SpringBatch会结束任务,当使相同的参数重启任务时,SpringBatch会去执行未执行的剩余任务。

2023-08-02 14:52:06 166

原创 springbatch记录(5)

ItemReader是一个数据一个数据的读, 而ItemWriter是一批一批的输出。

2023-08-02 14:16:32 103

空空如也

空空如也

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

TA关注的人

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