自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringCloud-consul

实现两个独立微服务之间的调用提供多种便捷访问远程Http服务的方法,是一种简单便捷的访问restful服务模板类,是Spring提供的用于访问Rest服务的客户端模板工具集方法:getForObject 返回对象为响应体中数据转化成的对象,基本可以理解为JsongetForEntity 返回对象为ResponseEntity对象,包含了响应中的一些重要信息,比如响应头,响应状态码,响应体等 在方法后面再加一个getBody()

2025-03-23 21:32:06 793

原创 SpringCloud-创建项目

能让所有在子项目中引用一个依赖而不显示的列出版本号,maven会沿着父子层次向上走,知道找到一个拥有。好处:如果有多个子项目都引用一样依赖,则可以避免在每个使用的子项目里面都声明一个版本号。当想升级或切换另一个版本的时候,只需要在顶层父容器更新,而不需要一个一个修改子项目。如果某个子项目需要另外一个版本,只需要声明version就可。扩展:接口调用时间之类,timestamp:接口调用时间。code状态值:由后端统一定义各种返回结果的状态码。思路:定义返回标准格式,3大标配。6.file type 过滤。

2025-03-20 17:24:54 571

原创 MySQL分库分表

随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈:IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。请求数据太多,带宽不够,网络IO瓶颈CPU瓶颈:排序、分组、连接查询、聚合统计等sql会耗费大量的CPU资源,请求数太多,CPU出现瓶颈分库分表的中心思想都是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。

2025-03-05 00:35:00 126

原创 MySQL主从复制

主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步mysql支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制mysql复制的优点主要包括以下三个方面:主库出现问题,可以快速切换到从库提供服务实现读写分离,降低主库的访问压力可以在从库中执行备份,以避免备份期间影响主库服务。

2025-03-05 00:32:57 607

原创 MySQL日志

慢查询日志记录了所有执行时间超过参数long_query_time设置并且扫描记录数不小于min_examined_row_limit的所有sql语句的日志,默认未开启。错误日志是mysql中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。基于sql语句的日志记录,记录的是sql语句,对数据进行修改的sql都会记录在日志文件中(主要ddl,dml)该日志是默认开启的,默认存放目录/var/log/,默认的日志文件名为mysqld.log。

2025-02-21 16:54:17 675

原创 MySQL管理

服务器生成的二进制日志文件以二进制格式保存,所以如果想要检查这些文本的文本格式,会使用mysqlbinlog日志管理工具。-e选项可以在mysql客户端执行sql语句,而不用连接到mysql数据库再执行,对于一些批处理脚本,这种方式尤其方便。执行管理操作的客户端程序,可以用来检查服务器的配置和当前状态、创建并删除数据库等。客户端对象查找工具,用来很快地查找存在哪些数据库、数据库中的表、表中的列或者索引。提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等。通过帮助文档查看选项。

2025-02-18 16:39:06 272

原创 InnoDB引擎

一个mysql实例可以对应多个表空间,用于存储记录、索引等数据:分为数据段(leaf node segment)、索引段(non-leaf node segment)、回滚段(rollback segment),InnoDB是索引组织表,数据段就是B+树55的叶子节点,索引段即为B+树的非叶子节点。段用来管理多个extent(区):表空间的单元结构,每个区的大小为1M。默认情况下,InnoDB存储引擎页大小为16K,即一个区中一共有64个连续页。

2025-01-24 06:33:09 758

原创 MySQL锁

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算机资源(CPU,RAM,I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。MySQL中的锁,按照锁的粒度分,分为以下三类:全局锁:锁定数据库中的所有表表级锁:每次操作锁住整张表行级锁:每次操作锁住对应的行数据。

2025-01-22 23:27:40 977

原创 MySQL触发器

触发器是与表有关的数据库对象,指在insert/update/delete之前或之后,触发并执行触发器中定义的sql语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。使用别名old和new来引用触发器中发生变化的记录内容,这与其他数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。old标识修改之前的数据,new标识将要或已经修改后的数据。new表示将要或者已经新增的数据。old表示将要或者已经删除的数据。insert型触发器。delete型触发器。

2025-01-22 22:51:16 291

原创 MySQL存储过程

事先经过编译并存储在数据库中的一段sql语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的,思想上就是sql语言层面的代码封装与重用特点:封装,重用 可以接收数据,也可以返回数据 减少网络交互,提高效率查看指定数据库的存储过程及状态信息查询某个存储过程的定义删除注意:在命令行中,执行创建存储过程的sql时,需要通过关键字delimiter指定sql语句的结束符。

2025-01-16 23:43:57 960 1

原创 MySQL视图

一种虚拟存在的表,视图中的数据并不数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的通俗的讲,视图只保存了查询的sql逻辑,不保存查询结果。

2025-01-14 20:28:59 358

原创 mysql优化

可以根据索引的选择性来决定,而选择性是指不重复的索引值(基数)和数据表的记录总数的比值,索引选择性越高则查询效率越高,唯一索引的选择性是1,这是最好的索引选择性,性能也是最好的。先查辅助,然后聚集,查到之后并不是直接返回,而是拿到email的值与传递的一致不,如果是,拿到返回,然后辅助再查下一个链表,不是直接返回,若是,再去聚集查,最终组装数据返回。若索引了多列(联合索引),要遵循最左前缀法则,指的是查询从索引的最左列开始,并且不跳过索引中的列,若跳过某一列,索引将部分失效(后面的字段索引失效)

2025-01-11 21:35:54 677

原创 Linux系统上安装MySQL

执行rpm -ivh mysql-community-devel-8.0.26-1.el7.x86_64.rpm命令出错是要先执行。如图所示会修改失败,因为系统默认密码校验规则长度达到8,区分字母大小写。yum install openssl-devel,在重新试一下。注意一定不要执行错误,否则要删了,重新执行。安装完的mysql会随机生成一个密码。注意此时该用户只能在本地上使用。远程连接时要注意防火墙是否关闭。

2025-01-09 01:22:05 287

原创 MyBatis-plus

自定义的Mapper继承Mybatis-Plus提供的BaseMapper接口用Wrapper构建复杂的where条件,自定义sql语句中剩下的部分。

2024-11-04 20:54:41 1659 2

原创 Java的参数传递

Spring和Spring Boot都是Java领域中非常流行的开发框架,用于简化企业级应用程序的开发。确保你已经在Spring容器中配置了要注入的Bean对象。这可以通过在XML配置文件或Java配置类中定义Bean来完成。在目标类中使用@Autowired注解来标记需要注入的属性或构造函数参数。@Component // 声明这是一个Spring托管的Bean@Autowired // 使用@Autowired注解进行自动注入// 使用注入的repository对象执行操作。

2023-12-10 21:28:31 1040

原创 字符集和File类

static listRoots() //返回File[] 所有磁盘分区大小。Unicode:汉字3个字节,英文字母数字占一个字节兼容(ASCII)mkdirs() //创建多级目录,只能创建文件夹,不能创建文件。listFiles() //获取目录的子文件,返回File[]getUsableSpace() //返回可用的内存。getAbsolutePath() //返回绝对路径。getFreeSpace() //返回磁盘剩余空间。getTotalSpace() //返回总共内存。

2023-12-10 21:20:23 82

原创 2023多益网络二面

给定一个集合s(没有重复元素),输出他的所有子集,输入1,2,3,输出1,2,12,3,13,23,123。为什么要用redis,redis为什么这么快?什么是docker容器,docker容器的数据持久化方式?非对称加密如何保证你的数据更安全?线程池的大小如何确定?docker的关闭和移除会不会导致数据的丢失?怎么保证redis与mysql的一致性?一个大的文件进行加密,数据过长怎么办?状态码301,302,304的区别?为什么签名算法可以保证数据的完整性?面向对象与面向过程的区别?

2023-12-10 21:18:23 108

原创 阻塞队列的使用

LinkedBlockingQueue:底层链表,无界(int最大值)ArrayBlocking:底层数组,有界。

2023-11-26 15:32:22 71

原创 mybatis + springBoot实现增删改查

resource层中的templates。

2023-11-06 22:15:32 86

原创 Session + Cookie

使用注解@MultipartConfig将⼀个 Servlet 标识为支持文件上传Servlet 将 multipart/form-data 的 POST请求封装成Part对象, 通过Part对上传的文件进行操作// 用于从该部分数据所包含的请求头中获取所有//用于从该部分数据所包含的请求头中获取指定字段名称对应的单个取值//用于从该部分数据所包含的请求头中获取指定字段名称对应的所有取值//用于获取该部分数据对应的表单组件的名称//用于获取用户所上传文件的原始名称。

2023-10-27 18:28:31 53

原创 总结JDBC

jdbc

2023-10-05 19:01:43 104

原创 学习JDBC

是Statement接口的子接口,表示预编译的sql语句的对象,用与执行预编译的sql语句并获取返回结果,sql语句被预编译并存储在PreparedStatement对象中。//在此PreparedStatement对象中执行sql语句,该语句必须是一个sql数据操作语言语句,比如insert,update,delete,或者返回无内容的sql语句,比如DDL语句。可用于获取关于ResultSet对象中列的类型和属性信息的对象,列的类型和属性信息被称为表的元数据。

2023-09-22 22:08:32 48

原创 学习网络编程

传输数据时,不需要建⽴连接,不管对⽅端服务是否启动,直接将数据、数据源和⽬的地都封装在数据包中,直接发送。TCP协议是⾯向连接的通信协议,即传输数据之前,在发送端和接收端建⽴逻辑连接,然后再传输数据,它提供了两台计算机之间可靠⽆差错的数据传输。CS架构的特点:CS架构需要用户在自己电脑或手机上安装客户端软件,然后由客户端软件通过网络连接服务器程序,由服务器把数据发送给客户端,客户端可以在页面上看到数据。三次握⼿:TCP协议中,在发送数据的准备阶段,客⼾端与服务器之间的三次交互,以保证连接的可靠。

2023-09-21 21:22:19 1083

原创 学习线程池

handler: 线程池的饱和策略,当阻塞队列满了,且没有空闲的⼯作线程,如果继续提交任务,必须采取⼀种。,如果要执行的任务耗时比任务执行的间隔时间长,下次任务执行的时间是上一次任务执行后就执行。线程池中的核⼼线程数,当提交⼀个任务时,线程池创建⼀个新线程执⾏任务,直到当前线。创建线程的⼯⼚,通过⾃定义的线程⼯⼚可以给每个新建的线程设置⼀个具有识别度的线程。线程空闲时的存活时间,即当线程没有任务执⾏时,继续存活的时间;线程池中允许的最⼤线程数。带来风险:死锁,资源不足,并发错误,线程泄露,请求过载。

2023-09-20 22:43:06 54

原创 学习线程同步

wait()、notify()、notifyAll()都是Object中的final方法,被所有的类继承并不能重写,wait()、notify()与同步代码、同步方法一起出现(synchronized),否则会抛出异常。notify():调用任意对象的notify()方法会在因调用该对象的wait()方法而阻塞的线程中随机选择一个线程解除阻塞,但要等到获得锁后才可以真正执行。同步代码块:在同步代码块中,你可以选择精确控制哪部分代码需要同步,只有被包裹在同步块内的代码会受到同步锁的保护。

2023-09-19 21:11:48 42

原创 多线程学习

并行:同一时刻同时执行多个任务并发:同一时间处理多个任务,但不一定同时执行多个任务进程:正在运行的程序,独占内存空间(取决于内存)进程是系统运行程序的基本单位每一个进程都有自己独立的一块内存空间、一组系统资源每一个进程的内部数据和状态都是完全独立的当一个应用程序运行的时候会产生一个进程线程:线程是进程中执行运算的最小单位,一个进程在其执行过程中可以产生多个线程,而线程必须在某个进程中执行(取决于CPU)多线程:在一个进程中运行多个线程一个进程中至少要有一个线程。

2023-09-19 20:21:32 42

原创 IO流总结

read() 读取一个字节 readAllBytes() 读取所有字节 read(byte[] bytes[, int offset, int len]) 读取多个字节 avaliable()获取流中有效字节数 close()关闭流 skip(long n)跳过n个字节 mark(int readlimit) reset() markSupported() transferTo(OutputStream out)将输入流中的内容通过输出流写出(in) (in, size) 默认是 8192。

2023-09-18 22:12:21 46

原创 字符流和缓存流

BufferWriter:字符缓存输出流,实现AutoCloseable接口。使用内部缓存区暂时存储数据,若数据写入前发生程序崩溃和异常,会数据丢失损坏。s.mark() //当前流的位置标记,与底层缓存数据比较,取最大值。字符缓存输入流,实现AutoCloneable接口,Read的子类。append与write一样,将字符序列拼接返回输出流。int read() //读取单个字符,返回char。继承AutoCloseable接口。s.set() //返回标记处。字符输出流写完必须刷新关闭。

2023-09-16 11:41:19 64

原创 转换流与JSON

*深拷贝:**创建一个新对象,并将原始对象的所有成员变量(包括引用类型)递归的复制到新对象中,默认情况下,clone()是浅拷贝,要是实现深拷贝,在对象的clone()方法中进行额外的处理,递归的复制引用类型的成员变量。引用数据类型1中包含引用数据类型2,复制引用数据类型1的属性,创建2的对象,并将2的属性赋值给2的对象,并返回。Writer的子类,字符输出流,继承AutoCloseable接口,不能单独使用,是一个包装流,将字节流转换为字符输出流,默认GBK加载输出。

2023-09-15 21:19:25 138

原创 Java字节流

int read(byte[] b,int offset, int len) //从输入流中读取最多len长度的字节,保存到字节数组b中,保存的位置从offset开始。字节流是8位通⽤字节流,其基本单位是字节,字节流的基类是InputStream类和OutputStream类,它们是抽象类。字节流是8位通⽤字节流,其基本单位是字节,字节流的基类是InputStream类和OutputStream类,它们是。国际上⼤多数的字符集和语言。字符流的基类是Reader类和Writer类,它们也是抽象类。

2023-09-14 22:58:53 103 1

原创 leecode面试题 01.01. 判定字符是否唯一

示例 1: 输入: s = "leetcode" 输出: false。实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 2: 输入: s = "abc" 输出: true。如果你不使用额外的数据结构,会很加分。s[i]仅包含小写字母。

2023-09-12 22:26:42 57

原创 LeeCode - 20. 有效的括号

判断字符串是否有效。

2023-09-11 22:59:48 65

原创 Hashtable + TreeMap + Property + LinkedHashSet + Stream流

ArrayListLinkedList和Vector都是用于存储和操作一组元素的数据结构,但它们在实现和性能上有一些区别。ArrayList使用数组作为底层数据结构。它通过动态扩展数组的大小来实现动态大小,当数组空间不足时,会重新分配更大的数组并将数据复制到新数组中。LinkedList使用双向链表作为底层数据结构。每个元素都包含一个指向前一个元素和下一个元素的引用。Vector也使用数组作为底层数据结构,类似于ArrayList,但Vector支持同步,即它是线程安全的。在访问元素方面,

2023-09-11 22:12:35 102

原创 泛型+HashMap

类型 对象 = new 类型 ();泛型类:具有一个或多个类型 参数的类访问修饰符 class classname{}创建泛型类实例:泛型限定:a<?extends E> 前面可以是E本身或其子类a<?super E> 前面可以是E本身或其父类a<?> 任意类型泛型擦除:泛型只能编译阶段有效,一旦编译成字节 码,字节码中是不包含泛型的。泛型工作在编译阶段的,一旦程序编译成class文件,class文件中就不存在泛型了,这就是泛型擦除。

2023-09-09 11:31:25 157

原创 Set接口

set集合

2023-09-07 23:18:32 95

原创 集合Day02

ArrayList的空间浪费在数组末尾预留2一定容量的空间,LinkedList的浪费在每个节点都要消耗空间来存储prev,next等信息。是List接口的链接列表实现类,实现了Deque接口,即能将LinkedLidt当作双端队列使用。ArrayList不支持高效插入和删除操作,LinkedList不支持高效的随机访问元素。Iterator :使用Iterator中的remove()删除,无参数,删除当前元素。static of() :返回不可修改的List集合,对象的属性可以修改。

2023-09-06 22:32:32 36

原创 集合Day01

数组长度固定不变。可通过数组名.length获取数组长度,却无法直接获取数组中实际存储的元素个数。数组采用在内存中分配连续空间的存储方式存储,根据元素信息查找时效率比较低,需要多次进行比较。集合框架中的接口和类位于java.util包。单列集合:一个一个 Collection双列集合:一对一对 MapCollection:接口,是java集合框架中的根接口,继承了Iterable接口,因此可以用于遍历集合中的元素。存储的元素不唯一,无序。

2023-09-05 23:03:06 38

原创 枚举 + 单例模式 + 双链表

有构造函数,默认private修饰,不能实例化,不能继承,有成员。static values() : 将枚举的所有对象存到数组中。static valueOf() : 返回对象所在的下标。提供对外访问方法,static(外部不创建对象)用来定义一组命名的常量,存放的都是有关的常量。ordinal() : 返回实例声明的索引。在外类,构造私有,提供方法返回内部类属性。缺点:从未使用过这个实例,造成内存浪费。优点:避免线程不安全,延迟加载,效率高。创建对象直接赋值,对象私有,静态常量。私有构造,对外不能访问。

2023-09-04 22:43:42 46

原创 lambda表达式

Lambda可以简化匿名内部类的书写。Lambda表达式只能简化函数式接口的匿名内部类的写法。函数式接口:有且仅有一个抽象方法的接口叫做函数式接口,接口上方可以加上@FunctionalInterface注解。

2023-08-30 21:27:07 72

原创 接口day01

类只能有一个直接父类,但可以实现多个接口,一个类若要实现某个接口,必须重写接口中的所有方法,或者定义为抽象类,若在继承一个类的同时又实现了多个接口,extends必须位于implements之前。在实现抽象方法时,使用public,因为接口中默认public,不写时,会默认package-access,访问权限变小,编译错误。default可以在接口中修饰方法,修饰的方法可以有具体实现,也只能在接口中实现,修饰的方法可以被重写。static修饰的方法,使用接口名.方法名调用,不能被继承,但可以隐藏。

2023-08-29 23:04:39 47

空空如也

空空如也

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

TA关注的人

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