自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring6

Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring 框架除了自己提供功能外,还提供整合其他技术和框架的能力。Spring 自诞生以来备受青睐,一直被广大开发人员作为 Java 企业级应用程序开发的首选。时至今日,Spring 俨然

2023-06-27 22:28:52 237

原创 Java 重写(Override)与重载(Overload)

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。

2023-02-05 17:00:35 924 3

原创 可变个数形参方法的注意事项

可变个数形参方法的注意事项

2023-02-05 13:06:33 199

原创 【Arrays工具类的使用】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、IO模型二、使用步骤1.引入库代码如下(示例):import num.

2023-02-04 21:55:05 250

原创 88. 合并两个有序数组

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2023-01-30 20:14:32 70

原创 题目:两数之和

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2023-01-29 22:56:01 156

原创 爬楼梯(LeetCode第70题)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2023-01-29 22:09:17 120

原创 分布式事务的解决方案

什么是事务?举个生活中的例子:你去小卖铺买东西,“一手交钱,一手交货”就是一个事务的例子,交钱和交货必 须全部成功,事务才算成功,任一个活动失败,事务将撤销所有已成功的活动。明白上述例子,再来看事务的定义:事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。

2022-09-14 14:10:41 185

原创 什么是泛型擦除

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2022-09-01 19:27:33 1123

原创 为什么重写equals方法,还必须要重写hashcode方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2022-09-01 19:01:14 168

原创 mysql面试题

事务的 隔离性 由这章讲述的 锁 来实现MyCat原理中最重要的一个动词就是 “拦截”, 它拦截了用户发送过来的SQL语句, 首先对SQL语句做一些特定的分析,如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL语句发往后端的真实数据库,并将返回的结果做适当处理,最终再返回给用户,如图所示。......

2022-08-31 00:34:07 373

原创 rocketMQ高级和源码

分布式队列因为有高可靠性的要求,所以数据要进行持久化存储。Apache下开源的另外一款MQ—ActiveMQ(默认采用的KahaDB做消息存储)可选用JDBC的方式来做消息持久化,通过简单的xml配置信息即可实现JDBC消息存储。由于,普通关系型数据库(如Mysql)在单表数据量达到千万级别的情况下,其IO读写性能往往会出现瓶颈。在可靠性方面,该种方案非常依赖DB,如果一旦DB出现故障,则MQ的消息就无法落盘存储会导致线上故障文件系统目前业界较为常用的几款产品(RocketMQ/Kafka/RabbitMQ

2022-08-21 11:32:20 292

原创 zookeeper——分布式理论知识,助你更好地理解分布式系统

以上所有理论的总结:1、集中式 和 分布式服务部署架构的分析首先提出了系统的架构演变,从集中式系统演变为分布式系统,由于集中式系统的扩展性无法满足当下的业务量,同时存在单点故障,造成服务的不可用。分布式系统的难题:数据一致性的问题2、2PC和3PC,分布式事务解决数据一致性,具有强一致性的特点,但是格子都有缺点,造成系统的可用性降低3、Paxos算法、Raft、 ZAB就算出现了分布式网络通信异常等相关棘手的问题,以上这些算法也能实现一致性拜占庭将军 问题!消息丢失 消息被恶意更改。...

2022-08-09 16:00:11 509

原创 分布式文件系统fastDFS

FastDFS是一个开源的轻量级分布式文件系统,为互联网应用量身定做,简单、灵活、高效,采用C语言开发,由阿里巴巴开发并开源。FastDFS对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)等,解决了大容量文件存储的问题,特别适合以文件为载体的在线服务,如相册网站、文档网站、图片网站、视频网站等等。FastDFS充分考虑了冗余备份、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。...

2022-08-07 18:47:04 337

原创 redis总结_原理

try {// 1.建立连接 String host = "192.168.150.101";// 2.获取输出流、输入流 writer = new PrintWriter(new OutputStreamWriter(s . getOutputStream() , StandardCharsets . UTF_8));// 3.发出请求 // 3.1.获取授权 auth 123321 sendRequest("auth" , "123321");......

2022-08-06 19:33:24 198

原创 redsi总结_最佳实战

Key的最佳实践固定格式:[业务名]:[数据名]:[id]足够简短:不超过44字节不包含特殊字符Value的最佳实践:合理的拆分数据,拒绝BigKey选择合适数据结构Hash结构的entry数量不要超过1000设置合理的超时时间并不是很慢的查询才是慢查询,而是:在Redis执行时耗时超过某个阈值的命令,称为慢查询。......

2022-08-06 19:03:21 270

原创 nginx

我们都知道浏览器中可以显示的内容有HTML、XML、GIF等种类繁多的文件、媒体等资源,浏览器为了区分这些资源,就需要使用MIMEType。所以说MIMEType是网络资源的媒体类型。Nginx作为web服务器,也需要能够识别前端请求的资源类型。在Nginx的配置文件中,默认有两行配置用来配置Nginx响应前端请求默认的MIME类型。语法默认值位置在default_type之前还有一句#这里也可以设置成text/plain}18}';}语法默认值位置http,,语法。.........

2022-08-01 23:43:36 543

原创 redis总结_多级缓存

传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图存在下面的问题•请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈•Redis缓存失效时,会对数据库产生冲击浏览器访问静态资源时,优先读取浏览器本地缓存访问非静态资源(ajax查询数据)时,访问服务端请求到达Nginx后,优先读取Nginx本地缓存如果Nginx本地缓存未命中,则去直接查询Redis(不经过Tomcat)如果Redis查询未命中,则查询Tomcat。......

2022-08-01 00:35:26 506

原创 redis总结_分布式缓存

提示文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2022-08-01 00:15:47 159

原创 Redis总结_实战篇

亲爱的小伙伴们大家好,马上咱们就开始实战篇的内容了,相信通过本章的学习,小伙伴们就能理解各种redis的使用啦,接下来咱们来一起看看实战篇我们要学习一些什么样的内容这一块我们会使用redis共享session来实现通过本章节,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题,让小伙伴的对于这些概念的理解不仅仅是停留在概念上,更是能在代码中看到对应的内容通过本章节,我们可以学会Redis的计数器功能, 结合Lua完成高性能的redis操作,同时学会Redis分布式锁的原理,包括Redis的三种消息队列我们利用Re

2022-07-31 20:35:05 533

原创 redis总结_基础

存储方式关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能自然会好一些扩展性关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。称为水平扩展。关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦可读性差内存占用较大。.........

2022-07-31 19:34:39 442

原创 设计模式4

​对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象也可以是叶子对象。但是由于容器对象和叶子对象在功能上面的区别,使得我们在使用的过程中必须要区分容器对象和叶子对象,但是这样就会给客户带来不必要的麻烦,作为客户而已,它始终希望能够一致的对待容器对象和叶子对象。...

2022-07-25 22:43:32 110

原创 设计模式3

由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。我们先来看一个快餐店的例子。...

2022-07-25 22:36:22 101

原创 设计模式2

需求设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。具体类的设计如下在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。解耦。在本教程中会介绍三种工厂的使用。...

2022-07-25 15:28:04 106

原创 设计模式和单例模式

类图(Classdiagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。

2022-07-25 15:03:19 213

原创 JDK 7 ConcurrentHashMap和JDK 8 ConcurrentHashMap

JDK7关于初始化ConcurrentHashMap满老师可能是口误,稍微有点问题,应该是默认的初始化先初始化16个分段锁(segments[16])并且仅在下标为0的位置(segments[0])初始化Segment对象(它有个重要的属性HashEntry数组,初始大小是2)...

2022-07-24 13:46:50 125

原创 ThreadPoolExecutor源码分析

提示文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2022-07-23 10:08:17 144

原创 创建线程的方式

那必须找一个类,使其既和Runnable有关系,也和Callable有关系,,,FeatureTask,FeatureTask是Runnable实现类,同时它的构造器可以传Callable,这样就实现了Callable与Runnable的关联。1)Callable规定的方法是call(),Runnable规定的方法是run().(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值的。Threadl类中的构造器是不能传Callable的,只能传Runnable。...

2022-07-15 13:15:26 158

原创 JVM面试题(含答案和图和解释)

一个类什么时候被加载,《java虚拟机规范》中并没有强制约束,而是交给虚拟机自由实现,HotSpot虚拟机是按需加载,在需要用到该类的时候加载这个类首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这个类的符号引用代表的类是否已经被加载、解析、初始化。(即判断类元信息是否存在)如果没有,那么在双亲委派模式下,使用当前了类加载器以ClassLoader+包名+类名为key进程查找对应的.class文件。如果没有找到文件,则抛出ClassNotFoundExceptio

2022-07-14 22:04:30 1509

原创 RocketMQ高级

分布式队列因为有高可靠性的要求,所以数据要进行持久化存储。Apache下开源的另外一款MQ—ActiveMQ(默认采用的KahaDB做消息存储)可选用JDBC的方式来做消息持久化,通过简单的xml配置信息即可实现JDBC消息存储。由于,普通关系型数据库(如Mysql)在单表数据量达到千万级别的情况下,其IO读写性能往往会出现瓶颈。在可靠性方面,该种方案非常依赖DB,如果一旦DB出现故障,则MQ的消息就无法落盘存储会导致线上故障文件系统目前业界较为常用的几款产品(RocketMQ/Kafka/RabbitM

2022-07-10 18:02:56 113

原创 RocketMQ生产使用案例(中)

模拟电商网站购物场景中的【下单】和【支付】业务用户提交订单后,扣减库存成功、扣减优惠券成功、使用余额成功,但是在确认订单操作失败,需要对库存、库存、余额进行回退。如何保证数据的完整性?使用MQ保证在下单失败后系统数据的完整性用户通过第三方支付平台(支付宝、微信)支付成功后,第三方支付平台要通过回调API异步通知商家支付系统用户支付结果,支付系统根据支付结果修改订单状态、记录支付日志和给用户增加积分。商家支付系统如何保证在收到第三方支付平台的异步通知时,如何快速给第三方支付凭条做出回应?通过MQ进行数据分发,

2022-07-10 17:51:19 173

原创 RocketMQ(上)

消息队列是一种“先进先出”的数据结构其应用场景主要包含以下3个方面系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验。使用消息队列解耦合,系统的耦合性就会提高了。比如物流系统发生故障,需要几分钟才能来修复,在这段时间内,物流系统要处理的数据被缓存到消息队列中,用户的下单操作正常完成。当物流系统回复后,补充处理存在消息队列中的订单消息即可,终端系统感知不到物流系统发

2022-07-10 11:54:03 137

原创 MyCat-数据库中间件

如今随着互联网的发展,数据的量级也是成指数式的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求,这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的,所以还是需要使用关系性数据库。如何使用关系型数据库解决海量存储的问题呢?此时就需要做数

2022-07-09 13:04:23 114

原创 哪些情况适合创建索引,哪些情况不适合创建索引

字段的数值有唯一性的限制频繁作为 WHERE 查询条件的字段某个字段在SELECT语句的 WHERE 条件中经常被使用到,那么就需要给这个字段创建索引了。尤其是在数据量大的情况下,创建普通索引就可以大幅提升数据查询的效率。经常 GROUP BY 和 ORDER BY 的列索引就是让数据按照某种顺序进行存储或检索,因此当我们使用 GROUP BY 对数据进行分组查询,或者使用 ORDER BY 对数据进行排序的时候,就需要 对分组或者排序的字段进行索引 。如果待排序的列有多个,那么可以在这些列上建立 。UP

2022-07-07 16:29:29 1318

原创 MySQL8.0索引新特性

举例:分别在MySQL 5.7版本和MySQL 8.0版本中创建数据表ts1,结果如下:在MySQL 5.7版本中查看数据表ts1的结构,结果如下:从结果可以看出,索引仍然是默认的升序。在MySQL 8.0版本中查看数据表ts1的结构,结果如下:从结果可以看出,索引已经是降序了。下面继续测试降序索引在执行计划中的表现。分别在MySQL 5.7版本和MySQL 8.0版本的数据表ts1中插入800条随机数据,执行语句如下:在MySQL 5.7版本中查看数据表ts1的执行计划,结果如下:从结果可

2022-07-07 15:55:08 240

原创 索引的声明与使用

MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。小结:不同的存储引擎支持的索引类型也不一样 InnoDB :支持 B-tree、Full-text 等索引,不支持 Hash索引; MyISAM : 支持 B-tree、Full-text 等索引,不支持 Hash 索引; Memory :支持 B-tree、Hash 等索引,不支持 Full-text 索引; NDB :支持 Hash 索引,不支持 B-tree、Full-text 等索引; Archive :不支持 B-

2022-07-07 15:41:28 118

原创 索引会带来什么弊端?为什么选择B+树作为索引的数据结构?索引都是B+树的?

索引是个好东西,由于索引底层是基于B+树的,而查找也在B+树的基础上,利用二分查找的思想加快查找速度。我们今天不讨论索引为什么快,有什么好处,仅仅讨论它有什么坏处,或者有什么代价索引是个好东西,可不能乱建,它在空间和时间上都会有消耗::每建立一个索引都要为它建立一棵B+树,每一棵B+树的每一个节点都是一个数据页,一个页默认会占用 16KB 的存储空间,一棵很大的B+树由许多数据页组成,那就是很大的一片存储空间。:每次对表中的数据进行 增、删、改 操作时,都需要去修改各个B+树索引。而且我们讲过,B+树每层

2022-07-07 14:54:12 443

原创 MyISAM 与 InnoDB对比

一、从表空间结构看举例: 1、如果表b采用 ,data\a中会产生1个或者2个文件:此外:① MySQL5.7 中会在data/a的目录下生成 文件用于保存数据库的相关配置。比如:字符集、比较规则。而MySQL8.0不再提供db.opt文件。② MySQL8.0中不再单独提供b.frm,而是合并在b.ibd文件中。2、如果表b采用 ,data\a中会产生3个文件:二、从索引角度看从表空间结构也能看出,是把数据()和索引()分开存储的,所以常说都是二级索引。的是一起存储在一个 文件中。类型的表

2022-07-07 14:13:54 133

原创 顺序存储二叉树

基本说明从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组,要求:顺序存储二叉树的特点:顺序二叉树通常只考虑完全二叉树第n个元素的左子节点为 2 * n + 1第n个元素的右子节点为 2 * n + 2第n个元素的父节点为 (n-1) / 2n : 表示二叉树中的第几个元素(按0开始编号如图所示)需求: 给你一个数组 {1,2,3,4,5,6,7},要求以二叉树前序遍历的方式进行遍历。 前序遍历的结果应当为 1,2,4,5,3,6,7...

2022-07-06 16:30:20 112

原创 二叉树的前序遍历、中序遍历、后序遍历

1、数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低2、链式存储方式的分析优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可, 删除效率也很好)。缺点:在进行检索时,效率仍然较低,比如(检索某个值,需要从头节点开始遍历)3、树存储方式的分析能提高数据存储,读取的效率, 比如利用 二叉排序树(Binary Sort Tree),

2022-07-06 16:23:22 895

空空如也

空空如也

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

TA关注的人

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