自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mybatis---逆向工程

MyBatis 逆向工程是 MyBatis 提供的一个自动生成 MyBatis 映射文件的工具,可以通过逆向工程生成对应的实体类、Mapper 接口和映射文件。两种方式实现:使用代码实现使用插件方式实现。

2023-12-20 16:40:45 419

原创 Mybatis

MyBatis中文网Mybatis是一款用于持久化层的、轻量级的半自动化ORM框架,封装了所有jdbc操作以及设置查询参数和获取结果集的操作,支持自定义sql、存储过程和高级映射1.1 什么是持久层框架就是和数据库进行交互的框架,用于数据存储等数据操作的框架1.2 什么是轻量级框架简单理解为:所用框架开发的程序启动时占用的资源较少,对业务代码的侵入性不强,比较容易配置,部署简单,不需要依赖于其他框架1.3 什么是ORM框架。

2023-12-19 19:09:10 48

原创 线程的基础学习(一)

总的来说,Thread是直接创建线程的方式,Runnable是将任务逻辑封装为一个可执行的对象,不是一个真正的线程,而Callable则是具有返回值的任务。并发:伪并行,CPU在多个线程之间加速的切换,感觉是是多个线程同时执行,本质上同一个时刻只能执行一条线程。异步:多个操作指令,一个指令执行时,不用等待执行结果,就可以执行下一个指令(多个指令同时执行)守护线程:为其他线程提供辅助,被守护线程终止,对应的守护吸线程也会立即终止。当线程对象被创建时,处于新建状态,此时线程尚未启动,还没有分配到系统资源。

2023-11-23 18:19:23 36

原创 Java IO中的设计模式

适配器模式和装饰者模式。

2023-11-23 09:53:27 90

原创 Socket/TCP/UDP

Socket套接字是网络通信的编程接口,而TCP是一种面向连接的、可靠的传输协议。在使用TCP进行网络通信时,应用程序可以使用Socket套接字来建立连接、发送和接收数据。Socket套接字是实现TCP协议的一种方式。socket可以看作实现网络传输的对象Socket套接字可以用于实现不同的网络协议,包括TCP、UDP等使用创建了一个Socket对象。Socket类通常用于TCP、UDP通信。Socket套接字是用于网络通信的编程接口,它提供了一种机制,使得应用程序能够通过网络进行数据传输。

2023-11-22 18:06:57 213

原创 装饰者模式

装饰者模式是一种结构型设计模式,它允许你动态地将新功能添加到对象中,同时保持相同的接口。在Java中,装饰者模式可以通过组合和继承来实现。在装饰者模式中,有一个抽象组件和具体组件,它们实现了相同的接口。装饰者也实现了相同的接口,并持有一个指向抽象组件的引用。装饰者可以在调用组件的方法之前或之后添加额外的功能。// 抽象组件// 具体组件@OverrideSystem.out.println("执行具体操作");// 装饰者@Override// 在调用具体组件方法前添加额外功能。

2023-11-21 14:20:40 30

原创 MQ的相关学习

MQ代表消息队列,是一种应用程序对应用程序的通信方法;通过消息传递队列发送和接收消息数据,支持应用程序、系统、服务和文件之间的信息交换,这简化了业务应用程序的创建和维护。消息队列有流量削峰、应用解耦和异步通信三个作用。

2023-08-29 20:48:28 36

原创 SpringMVC的复习

1.4 后端控制器(自己定义的Controller对象):可以定义多个方法,每个方法都可以配置自己 的资源路径(URL)2、将请求交给控制器映射器,控制器映射器根据请求找到对应的后端控制器(可执行 链),将该后端控制器返回给前端控制器。3、前端控制器将可执行链交给控制适配器,控制适配器执行对应的可执行链,将执行结果返回给前端控制器。4、前端控制器将执行结果交给视图解析器,视图解析器找到对应的视图,将该视图返回给前端控制器。5、前端控制器将数据渲染到视图上,将视图响应给前端。

2023-08-27 00:30:00 31

原创 Mybatis的复习

1、mybatis的基础知识OBject Relation Mapping,叫做对象关系映射框架,这种框架能够协助我们链接到数据库库,并简化从业务层发起到数据库请求过程中的代码量和简化参数配置。同时,可以将查出的内容直接转化为对象,提供给用户使用。ORM框架,目前在市面上能见到的,比如:全自动化的框架:Hibernate半自动的ORM框架:Mybatis当然还有类似 JPA等等mybatis需要结合jdbc使用,相当于对jdbc的二次封装。

2023-08-27 00:15:00 33

原创 Redis集群

2、之后,这个 sentinel 节点会与其他 sentinel 节点交换信息,如果发现认为主节点发生故障的 sentinel 节点 的个数超过了某个阈值(通常为 sentinel 节点总数的 1/2+1,即超过半数),则 sentinel 会认为 master 节点 已经处于客观下线的状态,即大家都认为 master 故障不可用了。3、命令传播阶段:主节点将已执行的命令发送给从节点,从节点接收命令并执行,从而实现主从节点的数据 一致性 主从模式中,一个主节点可以有多个从节点。架构简单,部署方便;

2023-08-26 16:49:26 30

原创 Redis事务

对于事务的执行来说,如果 redis 开启了 AOF 持久化的话,那么一旦事务被成功执行,事务中的命令就会通过 write 命令一次性写到磁盘中去,如果在向磁盘中写的过程中恰好出现断电、硬件故障等问题,那么就可能出 现只有部分命令进行了 AOF 持久化,这时 AOF 文件就会出现不完整的情况,这时可以使用 redis-check-aof 工 具来修复这一问题,这个工具会将 AOF 文件中不完整的信息移除,确保 AOF 文件完整可用。事务是指一个完整的动作,要么全部执行,要么什么也没有做。

2023-08-26 15:24:48 31

原创 Redis学习总结---缓存问题

是指某个热点的key失效,大量请求同时访问这个过期数据,就会造成大量请求读缓存没有读到数据,从而导致高并发访问数据库,引起数据库压力剧增考虑热点key不设置过期时间互斥锁使访问有序在缓存失效后,通过互斥锁或者队列来控制读数据和写缓存的线程数量,比如某个key只允许一个线程查询数据和写数据,其他线程等待指的是大量请求缓存中大面积失效的缓存数据。缓存数据设置随机的过期时间,防止同一时间大量数据集合失效。集群,将数据分布在不同的缓存数据库中。限流,通过加锁或队列来控制读 数据库写缓存的线程数量。

2023-08-23 21:27:03 30

原创 Redis学习总结---相关策略 3

常见选择: allkeys-lru 用于应用对缓存的访问符合幂律分布,也就是存在相对热点数据,或者不太清楚应用的缓存访问分 布状况,可以选择 allkeys-lru 策略。allkeys-random 应用对于缓存 key 的访问概率相等,则可以使用这个策略。2、allkeys-lfu:当内存不足以容纳新写入数据时,在键空间中,移除最不经常使用的key。1、volatile-lfu:从已设置过期时间的数据集中挑选最不经常使用的数据淘汰算法。每秒花费固定的 CPU 资源,维护内存。

2023-08-22 15:26:47 39 1

原创 Redis持久化---学习总结2

AOF是以日志的形式来记录每个操作,将Redis执行过的所有写指令记录下来,只许追加文件但不能修改文件,Redis启动之初会读取该文件重新构造数据。当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集。因此,为了能够重用Redis数据,或者防止系统故障,需要将redis中的数据写入到磁盘空间中,即持久化。优点:每次发生数据变更会立即记录到磁盘,性能较差,但数据完整性较好,AOF相对RDB更加安全,一般不会有数据的丢失或者很少。

2023-08-22 14:10:47 70 1

原创 Redis的学习总结 1

Redis的本质是一个Key-Value类型的内存数据库,它是NoSQL中的一种,是非关系型数据库。单线程还有一个问题:就是对于每个命令的执行时间是有要求的,如果其中的某一个命令执行过长,会造成其 他命令的阻塞,这对于 Redis 这种高性能的服务来说是致命的,记住 Redis 是面向快速执行场景的数据库。注意:本质上 Redis 并不是单纯的单线程服务模型,一些辅助工作比如持久化刷盘、惰性删除等任务是由 BIO 线程来完成的,这里说的单线程主要是说与客户端交互完成命令请求和回复的工作线程。

2023-08-21 21:34:31 33

原创 Http的响应状态码

HTTPhttp协议的承载是TCP一个http请求应该包含三个部分:请求行,请求头,请求体相应行:协议、协议版本号、状态码、状态码解释。

2023-08-18 21:14:39 36 1

原创 Lock锁的学习

3、当多个线程读写文件时,读操作和写操作会发生冲突现象,写操作和写操作也会发生冲突现象,但是读操作和读操作不会发生冲突现象,但是如果采用synchronized进行同步的话,就会导致当多个线程都只是进行读操作时也只有获取锁的线程才能进行读操作,其他线程只能等待锁释放后才能读,Lock则可以实现当多个线程都只是进行读操作时,线程之间不会发生冲突,例如:ReentrantReadWriteLock()。公平锁:是指多个线程按照申请锁的顺序来获取锁,线程直接进入队列中排队,队列中的第一个线程才能获得锁。

2023-08-17 21:02:03 38 1

原创 网络------总结

即传输控制协议,规定了发送与接受方应该以一种什么样的方式传输数据。TCP 保障了两个应用程序之间的可靠通信,通常用于互联网协议,被称 TCP / IP。TCP提供双全工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接受缓存,用来临时存储数据。

2023-08-16 19:41:08 39 1

原创 CAS的理解

全称compare and swap,即比较和交换。它是一条cpu同步原语。是硬件对多线程的支持,针对多处理器操作而设计的一种特殊指令,用于管理共享数据的并发访问。

2023-08-11 20:14:30 29 1

原创 Java线程池

核心思想是work-stealing工作窃取,ForkJoinPool提供了一个更有效的利用线程的机制,当ThreadPoolExecutor还在用单个队列存放任务时,ForkJoinPool已经分配了与线程数相等的队列,当有任务加入线程池时,会被平均分配到对应的队列上,各线程进行正常工作,当有线程提前完成时,会从队列的末端窃取其他线程未执行完的任务,当任务量特别大时,CPU多的计算机会表现出更好的性能。终止后,如果你又提交了新的任务,则线程池重新创建一个工作线程。没问题,可以修改核心线程数。

2023-08-10 19:39:37 32 1

原创 线程池的核心参数

1、corePoolSize:核心线程池的大小,程序一直运行,核心线程就不会停止2、maximumPoolSize:线程池的最大连接数量3、keepAliveTime:线程的最大空闲时间,如果线程在该时间内没有运行任务,线程就会消亡4、workQueue:阻塞队列,用来存放线程任务5、ThreadFactory:线程工程6、defaultHandler:饱和策略ThreadPoolExecutor类中一共有4中饱和策略,通过实现RejectExecutionHandler接口。

2023-08-10 19:33:44 131 1

原创 Wrapper条件构造器

增加方法无需条件构造器wrapper。

2023-08-04 20:47:35 35 1

原创 SpringBoot

登录实现。

2023-08-03 19:37:49 28

原创 cloud微服务

redis 速度快的原因 1、纯内存操作 2、单线程操作,避免了频繁的上下文切换和资源争用问题,多线程需要占用更多的 CPU 资源 3、采用了非阻塞 I/O 多路复用机制 4、提供了非常高效的数据结构,例如双向链表、压缩页表和跳跃表等,可以根据实际数据类型选择合理的数 据编码。

2023-08-02 20:25:03 55

原创 Mybatis Plus

MyBatis需要定义mapper.xml文件,使用相应的SQL查询语句,实现 Mybatis 提供的方法;Mybatis-Plus 其实可以看作是对 Mybatis 的再一次封装,升级之后,对于单表的 CRUD 操作,调用 Mybatis-Plus 所提供的 API 就能够轻松实现,此外还提供了各种查询方式、分页等行为。MyBatis-Plus相比于MyBatis提供了很多额外的功能,例如像条件构造器、代码生成器、分页插件、性能分析拦截器等实用的组件,使得开发者可以轻松快速完成业务逻辑的开发。

2023-07-28 19:53:44 70 1

原创 Redis

一、Redis的简介。

2023-07-27 23:44:33 28 1

原创 Spring Data

官网解释为:Spring Data的使命是为数据访问提供一个熟悉且一致的,基于Spring的编程模型,同时仍然保留底层数据存储的特殊特征。它使使用数据访问技术、关系和非关系数据库、map-reduce 框架和基于云的数据服务变得容易。简单来说,Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。官网地址为:https://spring.io/projects/spring-data数据库分为关系型数据库和非关系型数据库,在这里主要考虑对非关系型数据库进行访问。

2023-07-26 21:06:08 51 1

原创 方法参数异常

参数异常

2023-07-25 10:47:13 28

原创 Thymeleaf 的学习

Thymeleaf 是适用于 Web 和独立环境的现代服务器端 Java 模板引擎。Thymeleaf 的主要目标是为开发工作流程带来优雅的自然模板,既可以在浏览器中正确显示的 HTML,也可以 用作静态原型,从而在开发团队中实现更强大的协作。

2023-07-24 21:27:14 124

原创 Spring Boot-Swagger

它提供了一种标准的、可视化的方式来定义 API 的结构、参数、请求和响应等信息。此时已经配置好了 Swagger,可以开始正常使用 Swagger, Swagger 中常用的注解,分别在实体类上、Controller 类上以及 Controller 中的方法上,此时,在浏览器中输入 http://localhost:8080/test/swagger-ui/,即可看到 swagger 的 接口页面,说明 Swagger 集成成功。1、@Api 注解用于类上,表示标识这个类是 swagger 的资源。

2023-07-24 20:48:03 41

原创 SpringBoot的学习

这两天开始学习总结Springboot。1、如何理解SpringBoot。2、springboot的优势。

2023-07-22 23:49:16 28

Axios.md的学习笔记

Axios.md的学习笔记

2023-07-25

空空如也

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

TA关注的人

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