自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库相关面试重点知识

InnoDB 引擎中,定义了四种隔离级别供我们使用,级别越高事务隔离性越好,但性能就越低,而隔离性是由 MySQL 的各种锁以及MVCC 机制来实现的。隔离级别脏读不可重复读幻读脏写(更新丢失ReadUncommit(读未提交)会出现会出现会出现第二类ReadCommit(读已提交)解决会出现会出现第二类RepeatableRead(可重复读,默认解决解决会出现解决Serializable(串行)解决解决解决解决。

2025-01-06 02:41:55 1344

原创 Redis实战篇(四、高级数据结构的使用)

综上,在本案例中, 由于是点评项目,我们选择第二种:推模式。

2024-12-23 05:44:19 1070

原创 Redis实战篇(三:优惠券秒杀及优化)

在各类购物App中,都会遇到商家发放的优惠券。id 规律性太明显受单表数据量的限制如果我们的订单id 有太明显的规律,那么对于用户或者竞争对手,就很容易猜测出我们的一些敏感信息,例如商城一天之内能卖出多少单,这明显不合适。随着我们商城的规模越来越大,MySQL 的单表容量不宜超过 500W,数据量过大之后,我们就要进行拆库拆表,拆分表了之后,进行分布式存储。从逻辑上讲,这些表是同一张表,所以它们的 id 不能重复,于是乎我们就要保证 id 的唯一性。

2024-12-21 18:38:12 873

原创 Redis实战篇(二:商户查询缓存)

缓存(Cache)就是数据交换的缓冲区,是存储数据的临时地方,一般读写性能较高。硬件缓存:一般指的是机器上的 CPU、硬盘等等组件的缓存区间,一般是利用的内存作为一块中转区域,都通过内存交互信息,减少系统负载,提供传输效率。客户端缓存:一般指的是某些应用,例如浏览器、手机 App、视频缓冲等等,都是在加载一次数据后将数据临时存储到本地,当再次访问时候先检查本地缓存中是否存在,存在就不必去远程重新拉取,而是直接读取缓存数据,这样来减少远端服务器压力和加快载入速度。

2024-12-09 23:10:39 1199 1

原创 Redis实战篇(一:项目导入和短信登录)

有关资料,可以进入百度网盘下载(提取码:eh11):百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间。

2024-12-09 23:09:48 1049

原创 Redis基础篇

NoSQL 可以翻译做 Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库。关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能自然会好一些关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。

2024-12-07 14:46:59 1016

原创 SpringCloud框架学习(第七部分:分布式事务Seata)

SimpleExtensibleAutonomousTransactionArchitecture:简单可扩展自治事务框架阿里巴巴作为国内最早一批进行应用分布式(微服务化)改造的企业,很早就遇到微服务架构下的分布式事务问题。2019年1月份蚂蚁金服和阿里巴巴共同开源的分布式事务解决方案:2014 年,阿里中间件团队发布 TXC(Taobao Transaction Constructor),为集团内应用提供分布式事务服务。

2024-12-02 19:42:46 869

原创 SpringCloud框架学习(第六部分:Sentinel实现熔断与限流)

等价于 Spring Cloud Circuit BreakerSentinel 能够对流量进行控制,主要是监控应用的 QPS 流量或者并发线程数等指标,如果达到指定的阈值时,就会被流量进行控制,以避免服务被瞬时的高并发流量击垮,保证服务的高可靠性。1资源名资源的唯一名称,默认就是请求的接口路径,可以自行修改,但是要保证唯一。2针对来源具体针对某个微服务进行限流,默认值为default,表示不区分来源,全部限流。3阈值类型QPS表示通过QPS进行限流,并发线程数表示通过并发线程数限流。4单机阈值。

2024-11-29 21:12:24 1595 1

原创 SpringCloud框架学习(第五部分:SpringCloud Alibaba入门和 nacos)

2018.10.31,Spring Cloud Alibaba 正式入驻了 Spring Cloud 官方孵化器,并在 Maven 中央库发布了第一个版本。前四个字母分别为Naming 和Configuration 的前两个字母,最后的s为 ServiceNacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。(Nacos就是注册中心 + 配置中心的组合,等价于 Spring Cloud Consul)替代 Eureka / Consul 做服务注册中心。

2024-11-23 23:30:10 1188

原创 SpringCloud框架学习(第四部分:Gateway网关)

是在 Spring 生态系统之上构建的 API 网关服务,基于 Spring6,Spring Boot 3和 Project Reactor 等技术。它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式,并为它们提供跨领域的关注点,例如:安全性、监控/度量和恢复能力。Cloud 全家桶中有个很重要的组件就是网关,在 1.x 版本中都是采用的Zuul网关;

2024-11-22 16:57:35 1161

原创 SpringCloud框架学习(第三部分:Resilience4j 与 Micrometer)

Hystrix 是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等。Hystrix 能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。但 Hystrix 目前已经进入了维护模式,我们不再使用。Hystrix 新的替代方案是 Resilience4j,接下来将进行介绍。Sleuth 目前已经进入了维护模式,它的核心功能已转移至 Micrometer Tracing​!

2024-11-14 23:04:19 1177

原创 SpringCloud框架学习(第二部分:Consul、LoadBalancer和openFeign)

Question1:Consul是什么?Consul是一款开源的分布式服务发现与配置管理系统,由HashiCorp公司使用Go语言开发。官方:http://consul.io/Question2:为什么不使用Eureka了?① Eureka 停更了,不在开发新版本了② Eureka 对初学者不友好,有自我保护机制③ 我们希望注册中心能够从项目中分离出来,单独运行(解耦),而 Eureka 做不到这一点Question3:Consul能干什么?① 服务发现:提供HTTP和DNS两种发现方式。

2024-11-11 20:35:23 1692

原创 SpringCloud框架学习(第一部分:初始项目搭建)

将业务的所有功能集中在一个项目中开发,打成一个包部署架构简单部署成本低当随着业务越来越多,代码量将上升至几万行甚至几十万行,开发人员也会需要越来越多!各业务之前存在耦合性,编写、提交代码时,可能会产生冲突。同时,代码量过高也会造成编译,打包时间过长。某些业务存在高并发,就会很容易将服务器资源耗尽,其他业务就只能等待,访问时就会卡顿。团队协作成本高系统发布效率低系统可用性差单体架构适合开发功能相对简单,规模较小的项目。

2024-11-08 22:35:29 1633

原创 SSM框架学习(七、MyBatis-Plus高级用法:最优化持久层开发)

(简称 MP)是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特性:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错。

2024-10-18 22:15:51 1120

原创 SSM框架学习(六、快速启动框架:SpringBoot3实战)

(1)Question1:为什么依赖不需要写版本?每个boot项目都有一个父项目 spring-boot-starter-parentparent 的父项目是 spring-boot-dependenciesspring-boot-dependencies 中的 properties 标签,把所有常见的 jar 的依赖版本都声明好了。SpringBoot 工程下,进行统一的配置管理。

2024-10-12 16:41:02 875

原创 SSM框架学习(五、框架实战:SSM整合原理和实战)

将学习的Spring SpringMVC Mybatis框架应用到项目中。SpringMVC框架负责控制层Spring 框架负责整体和业务层的声明式事务管理MyBatis框架负责数据库访问层Spring接管一切(将框架核心组件交给Spring进行IoC管理),代码更加简洁。SpringMVC管理表述层、SpringMVC相关组件Spring管理业务层、持久层、以及数据库相关(DataSource,MyBatis)的组件使用IoC的方式管理一切所需组件。

2024-10-09 19:14:41 1522

原创 SSM框架学习(四、SpringMVC实战:构建高效表述层框架)

spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring Framework中。正式名称“Spring Web MVC”来自其源模块的名称( spring-webmvc ),但它通常被称为“Spring MVC”。SpringMVC作为Java EE项目表述层开发的首选方案。之所以能做到这一点,是因为SpringMVC具备如下显著优势:① Spring 家族原生产品,与IOC容器等基础设施无缝对接②表述层各细分领域需要解决的问题全方位覆盖。

2024-09-22 23:02:49 918

原创 SSM框架学习(三、MyBatis实践:提高持久层数据处理效率)

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2024-09-14 19:53:47 1293

原创 SSM框架学习(二:SpringFramework实战指南)

一个项目,一个工程,导出为一个war包,在一个Tomcat上运行,即 all in one。单一架构的项目主要应用技术框架为:Spring , SpringMVC , Mybatis负责实例化、配置和组装 bean(组件)。容器通过读取配置元数据(配置文件)来获取有关要实例化、配置和组装组件的指令。XML、Java 注解或 Java 代码形式。它允许表达组成应用程序的组件以及这些组件之间丰富的相互依赖关系。应用程序类与配置元数据相结合,才拥有完全配置且可执行的系统或应用程序。

2024-09-09 19:49:04 1354

原创 SSM框架学习(一:Maven入门和进阶)

Maven就是一个软件,掌握软件安装、配置、以及基本功能(项目构建、依赖管理)使用即可。

2024-07-18 01:38:16 1180

原创 JavaWeb(四:Ajax与Json)

JavaScript Object Notation:⼀种轻量级数据交互格式,完成 js 与 Java 等后端开发语⾔对象数据之间的转换。客户端和服务器之间传递对象数据,需要用到 JSON 格式。

2024-07-12 20:03:50 1045 1

原创 JavaWeb(三:JDBC 与 MVC)

JDBC(Java DataBase Connectivity) :Java数据库连接技术JDBC 是一个独立于特定数据库的管理系统,是通用的 SQL 数据库存取和操作的公共接口。定义了一组标准,为访问不同数据库提供了统一的途径。JDBC 是是一种用于数据库访问的应用程序API,由一组用Java语言编写的类和接口组成。包括两个层面:① 面向应用的 API,供程序员调用。② 面向数据库的 API,供厂商开发数据库的驱动程序。

2024-07-12 00:32:48 1295

原创 JavaWeb(二:Servlet与Jsp,监听器与过滤器)

Servlet 是Sun公司开发 动态web 的一门技术,负责与客户端进行通信。Sun 在这些API中提供了一个接口叫做:Servlet① 编写一个类实现Servlet接口② 把开发好的Java类部署到web服务器中Servlet:实现了Servlet接口的Java程序Java Server Pages:Java服务端页面,和servlet一样,用于动态web技术写jsp就像在写htmlhtml只给用户提供静态的数据jsp页面中可以嵌入Java代码,为用户提供动态数据。

2024-07-12 00:25:46 1032

原创 JavaWeb(一:基础知识和环境搭建)

HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。文本:html,字符串,~……超文本:图片,音乐,视频,定位,地图……端口:80端口:443。

2024-07-12 00:20:35 3262

原创 Java反射

反射:允许对成员变量,成员方法和构造方法的信息进行编程访问。所以,想要获取 成员变量,成员方法和构造方法,得首先获取 class对象。

2024-06-30 23:08:03 609

原创 Java网络编程

在网络通信协议下,不同计算机上运行的程序,进行的数据传输(计算机跟计算机之间通过网络进行数据传输)常见的软件架构:CS 和 BS① 不需要开发客户端,只需要 页面 + 服务端② 用户不需要下载,打开浏览器就可以直接使用③ 如果应用过大,用户体验受到影响(图片等资源依靠网络传输,往往分辨率不会太高)① 需要开发客户端,也需要开发服务端② 用户需要下载和更新的时候太麻烦③ 画面可以做的非常精美,用户体验好(图片等资源都是存储在本地文件中的,不依靠网络)

2024-06-30 16:10:58 1128

原创 Java多线程

进程是程序的基本执行实体(每个软件都有对应的一个进程)线程是操作系统能够运行调度的最小单位。它被包含在进程之中,是进程的实际运作单位。(简单理解:应用软件中相互独立,可以同时运行的功能,就是不同的线程)CPU从上往下依次运行,不会切换到其他代码中运行CPU会在不同程序间进行切换,将等待的时间充分利用起来简单理解:多线程可以让程序同时做多件事情,从而提高效率。线程池就是一个容器,初始状态下是空的。当给线程池提交一个任务时,线程池就会自动创建一个线程。

2024-06-28 21:50:13 963

原创 Java基础:IO流

操作本地文件的字节输出流,可以把程序中的数据写到本地文件中。① 创建字节输出流对象② 写数据③ 释放资源//需求:写出一段文字到本地文件中(不含中文文字)//1.创建对象//2.写数据//3.释放资源字符输出流的细节:① 参数可以是 字符串表示的路径 或者是 File 对象② 如果文件不存在,会创建一个新的文件,但是要保证父级路径是存在的。③ 如果文件已经存在,则会清空该文件中的数据,重写写出新的数据。

2024-06-24 20:47:10 856

原创 Java异常和文件

Question:为什么需要自定义异常呢?假设现在要录入一个学生信息,姓名长度需要在 3~10 之间,年龄需要在 18~40 之间。那么在 set 方法进行赋值时,数据不正确的话,该抛出何种异常呢?我们发现,找不到一个合适的异常来描述这两个问题信息。所以只能被迫采用运行时异常的父类 RuntimeException。但这样的缺点是:无法单独处理这两个异常的信息,不能把姓名和年龄的处理方案分开。所以,我们需要自定义异常类来描述这两个异常。

2024-06-17 15:21:55 681

原创 Java基础:Stream流和方法引用

可以理解为一条流水线,可以对流水线上的数据进行各种操作(筛选、打印等)。结合了 Lambda表达式,简化集合、数组的操作① 先得到一个 Stream 流,将数据放上去② 利用 Stream 流中的中间方法进行各种操作。③ 利用 Stream 流中的终结方法进行各种操作。方法引用:把已经存在的方法拿过来用,当作函数式接口中重写的抽象方法的方法体。方法引用可以比 Lambda表达式 的写法更加简便。① 引用处必须是函数式接口。② 被引用方法必须已经存在(如果不存在,需要自定义方法或者使用第三方工具类)

2024-06-14 16:56:40 1142

原创 Java集合进阶

方法的形参是可以发生改变的(JDK5开始)。数据类型... 变量名(如:int... args)可变参数事实上底层就是一个数组,但这个数组无需手动创建,java会自动创建好。Collectons 不是一个集合,而是集合工具类,提供了一系列操作集合的方法。不可以被修改的集合(添加、删除、修改元素均不可以)。① 如果某个数据不能被修改,把它防御性的拷贝到不可变集合中是个很好的实践。② 当集合对象被不可信的库调用时,不可变形式是安全的。

2024-06-12 21:08:43 1369

原创 Java泛型

是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。<数据类型>泛型只能支持引用数据类型,基本数据类型需要变成其包装类。:在JDK5之前,没有泛型的时候,集合如何存储数据?我们注意到,如果没有泛型,add 方法的形参为 Object 类型。所以使用 add 方法可以添加任意类型的元素。由于添加的数据都是Object类的直接或者间接子类,所以我们可以使用多态的方式,获取数据。但我们知道,多态的缺点:不能访问子类的特有功能。

2024-06-05 21:16:40 1003

原创 Java常用API(三)

Arrays是一个用于操作数组的工具类。

2024-05-31 20:52:46 1061

原创 Java包装类

对于基本数据类型,在变量中记录的是真实的数据值。而对于基本数据类型的包装类, 本质是创建了一个对象,对象当中记录对应的数据值。即:包装类就是用一个对象,把基本数据类型给包起来。

2024-05-28 21:32:39 728 2

原创 Java时间类--JDK8

① JDK7的时间对象如果需要比较大小的话,必须都先转换成毫秒值;JDK8则不需要,可以直接比较。② JDK7的时间对象可以修改,在多线程环境下就会导致数据不安全;JDK8不能修改,不会发生安全问题。JDK8时间类一共有10个类,前3个类似于JDK7中的Date类,第4个类似于JDK7中的 SimpleDateFormat 类,第5~7类类似于JDK7中的 Calendar 类,最后三个类用于计算时间间隔。

2024-05-28 15:45:17 948

原创 Java时间类--JDK7

Date类是一个JDK写好的JavaBean类,用来描述时间,精确到毫秒。利用空参构造创建的对象,默认表示当前系统时间。利用有参构造创建的对象,表示指定的时间。事实上,我们可以简单认为Date类的定义如下:实际源码如下://1.无参构造 --> 创建对象表示当前时间//2.带参构造 --> 创建对象表示指定时间(距离时间原点一年以后)注:①带参构造中的形参,表示距离时间原点多少毫秒。比如 new Date(1000L)表示距离时间原点1000ms,也就是1s。

2024-05-26 16:52:03 782

原创 java正则表达式

matches("正则表达式") 校验字符串是否满足规则,满足返回true,不满足返回false① &&表示交集,但&并没有任何含义,只是一个特殊符号,表示匹配的字符串是否是该符号②[ ]只能匹配一个字符,如果字符串内有多个字符,则会返回false③. 表示任意一个字符均可,但 \n 回车符号不匹配。如果只想表示一个. 符号,需要使用转义,转义符是 \ ,也就是 \.。在java中,\\ 表示 \。

2024-05-25 15:48:12 3265

原创 java常用API(二)

细节:① BigDecimal 类和BigInteger 类一样,一旦创建对象就不可再改变。② 不论进行何种运算,对象都不会在改变了,而是创建一个新的对象。③ BigDecimal 类可以表示任意精度的有符号十进制数。

2024-05-22 19:20:50 1221 1

原创 java常用API

System也是一个工具类,提供了一些与系统相关的方法Runtime表示当前虚拟机的运行环境Object类是java中的顶级父类,所有的类都直接或间接的继承于Object类。Objects是一个对象工具类,提供了一些操作对象的方法。

2024-05-19 21:48:08 1062 1

原创 java基础:内部类

在一个类里面定义的类就叫做内部类包含了继承或实现,方法重写,创建对象三部分。整体就是一个类的子类对象或接口的实现类对象匿名内部类事实上只是 { } 代表的内容匿名内部类编译时也会产生字节码文件:可以看出,匿名内部类并非真的没有名字,只不过不需要自己命名而已,名字为 外部类$序号验证:通过反编译查看匿名内部类的详细信息因为整体事实上是一个匿名内部类对象,所以可以直接调用该对象的方法,或直接将该对象赋值给变量。

2024-04-12 16:14:56 923

SSM框架学习(五、框架实战:SSM整合原理和实战)

《任务列表案例》前端资源

2024-10-05

空空如也

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

TA关注的人

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