自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【JavaEE】AQS原理

首先有个整体认识,全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架。常用的ReentrantLock、Semaphore、CountDownLatch等都有实现它。

2024-07-22 10:29:44 353

原创 【JavaEE】Executors中常见线程池工厂方法及其使用

本文将介绍Executors中常见一些工厂方法。Executors中的工厂方法其实就是对ThreadPoolExecutor的封装,方便使用。

2024-07-19 16:14:28 727

原创 【JavaEE】CAS原理实现 + 常见应用

CAS:比较和交换(设置) Compare And Swap(Set)。当A的值为5的时候,给A设置值为10。这里涉及到的比较和设置值的操作是原子的。

2024-07-19 11:28:13 843

原创 【JavaEE】volatile + final + wait-notify + join + park-unpark 相关原理

本文所讲的一些原理都是在多线程中经常使用的内容。

2024-07-18 12:19:48 978

原创 【JavaEE】synchronized原理详解

synchronized的加锁过程是逐步提高的,并不是一上来就要加重量级锁。

2024-07-17 21:52:50 1220

原创 【MySQL】事务&实现原理

事务是将一组SQL语句打包成一个整体,在这组SQL的执行过程中,要么全部成功,要么全部失败。这组SQL语句可以是也可以是。如果转账成功,应该满足以下要求:张三的账户余额减少100,变成900;李四的账户余额增加了100,变成1100。不允许出现张三的余额减少而李四的余额没有增加的情况。(原子性)转账前张三和李四的总余额不变,即转账前他们的余额总数为2000,转账后他们的余额总数也应为2000。(一致性)转账后的余额结果应当保存到存储介质中,以便日后查询和确认。(持久性)

2024-07-01 14:18:36 986 2

原创 【MySQL】InnoDB架构

InnoDB架构整体上是分成两部分的:内存结构(提高效率)和磁盘结构(数据持久化),下面将把每个区域都大致做一个介绍。

2024-06-29 17:08:51 819

原创 【MySQL】InnoDB的存储结构

InnoDB的存储结构:每个表都会生成一个表空间文件,这个文件里面最小结构就是行,存储的真正的数据,一个页来管理若干行,一个区来管理若干页,一个区组来管理若干区。段并不是真正的物理存储结构,它只是把这些数据结构划分成两部分(B+树的叶子节点和非叶子节点)。

2024-06-28 14:20:53 787

原创 【MySQL】架构体系概览

MySQL架构整体由外部程序和MySQL服务器构成。其中内部服务器分成连接层,服务层,服务管理和公共组件,存储引擎层和文件系统层。

2024-06-27 12:18:29 1095

原创 阿里AI-Spring Cloud Alibaba AI:快速搭建自己的通义千问

Spring Cloud Alibaba AI 目前基于 Spring AI 0.8.1 版本 API 完成通义系列大模型的接入。通义接入是基于阿里云 灵积模型服务,灵积模型服务建立在“模型即服务”(Model-as-a-Service,MaaS)的理念基础之上,围绕 AI 各领域模型,通过标准化的API提供包括模型推理、模型微调训练在内的多种模型服务。在当前最新版本中,Spring Cloud Alibaba AI 主要完成了几种常见生成式模型的适配,包括对话、文生图、文生语音等,开发者可以使用 Sp

2024-06-26 16:56:31 769

原创 【SpringCloud】API网关(Spring Cloud Gateway)

Spring Cloud Gateway 提供了过滤器的扩展功能,开发者可以根据实际业务需求自定义过滤器。自定义过滤器也支持 GatewayFilter 和 GlobalFilter 两种类型。自定义 GatewayFilter 需要实现对应的接口 GatewayFilterFactory。Spring Boot 默认提供了一个实现该接口的抽象类 AbstractGatewayFilterFactory,我们可以直接使用它。配置@Data实现@Slf4j@Component。

2024-06-24 20:27:57 885

原创 【SpringCloud】OpenFeign-远程调用

Netflix于2013年6月发布了Feign的第一个版本1.0.0,并于2016年7月发布了最后一个版本8.18.0。在2016年,Netflix将Feign捐献给社区,并于同年7月发布了OpenFeign的首个版本9.0.0,随后持续发布至今。因此,可以简单理解为Netflix Feign是OpenFeign的祖先,或者说OpenFeign是Netflix Feign的升级版。OpenFeign是Feign的一个更强大、更灵活的实现。(后续提到的Feign都是 OpenFeign)

2024-06-23 12:57:01 696

原创 【SpringCloud】Nacos

2018年6月,Eureka 2.0宣布闭源(但1.X版本仍然活跃),同年7月,阿里Nacos宣布开源,并迅速成为国内开发者关注的焦点。作为Eureka的替代品,Nacos目前已经成为国内开发者的首选。ming andervice)最初开源时,选择将内部的三个产品(Configserver非持久注册中心,VIPServer持久化注册中心,Diamond配置中心)合并并统一开源。其定位为一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

2024-06-21 13:39:58 730

原创 【SpringCloud】负载均衡(Spring Cloud LoadBalancer)

负载均衡策略一般有轮询,随机。Spring Cloud LoadBalancer默认使用的是轮询。接下来将自定义一个随机的算法。// 不需要Configuration注解,只需要在组件扫描范围内即可@Bean。

2024-06-20 12:55:19 1302

原创 【SpringCloud】Eureka的简单使用

本文使用的是jdk17,mysql8。以下用两个服务做演示:订单服务:提供订单ID,获取订单详细信息。商品服务:提供商品ID,获取商品详细信息。对于上篇订单服务调用商品服务的时候,使用Spring提供的RestTemplate远程调用时,url部分是写死的,这是很不方便我们后续的操作。针对这个问题,这里使用Eureka来解决。

2024-06-17 14:45:49 995

原创 【MySQL】日志详解

本文使用的MySQL版本是8。介绍了MySQL常见的日志。

2024-06-13 15:42:48 967

原创 【SpringCloud】创建新工程

本文使用的是jdk17,mysql8。以下用两个服务做演示:订单服务:提供订单ID,获取订单详细信息。商品服务:提供商品ID,获取商品详细信息。

2024-06-12 17:38:44 836 3

原创 【MySQL】服务器配置和管理

MySQL服务器通常说的是mysqld程序。mysqld 是 MySQL 数据库服务器的核心程序,负责处理客户端的请求、管理数据库和执行数据库操作。管理员可以通过配置文件和各种工具来管理和监控 mysqld 服务器的运行本文将介绍下面三个内容:服务器启动选项:可以在命令行和配置文件中指定,用于配置服务器的行为和特性。服务器系统变量:反映了启动选项的当前状态和值,其中一些变量可以在服务器运行时修改。服务器状态变量:包含了关于运行时操作的计数器和统计信息。

2024-06-09 21:49:51 1048 2

原创 【MySQL】常见可执行程序

本文介绍了一些常用的mysql应用程序,包括使用,注意事项及其常用选项或者命令。

2024-06-08 21:58:53 803 2

原创 【JavaEE】MyBatis + 单元测试

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

2023-05-21 22:59:12 849 1

原创 【JavaEE】SpringMVC

请求重定向是指将请求从一个Web资源(如Servlet或JSP)发送到另一个Web资源,并且在过程中会更改URL。在请求重定向期间,Web容器会向浏览器发送一个302 HTTP状态码的响应,该响应包含一个新的URL,浏览器会自动发送一个新的请求以获取新的资源。简单来说就是 客户端像服务器发送请求,服务器这里不处理这个请求,但是会给客户端一个URL,然后客户端根据返回的URL重新访问。上述代码虽然保存了文件,但是有个致命的错误,就是下次再上传文件的时候,之前的旧文件会被新文件覆盖,原因是文件名写死了。

2023-05-12 11:32:02 579

原创 【JavaEE】SpringBoot的日志

日志门面:是一个抽象层,它提供了统一的日志接口,使应用程序能够按照一致的方式记录日志,而不需要关心具体的日志实现。在应用程序中使用日志门面接口编写代码,使得应用程序可以在运行时动态地切换具体的日志实现,而不需要修改代码。日志实现:是实现了日志门面接口的具体日志框架,应用程序在运行时通过配置文件指定所需要的具体日志实现,日志门面就会调用相应的日志实现来记录日志信息。上述的日志只是打印在了控制台上,并没有记录到文件(持久化)当中,这显然是不科学的。在配置文件中修改日志级别,现在来修改一下上一个程序的日志级别。

2023-04-26 22:07:42 1084 1

原创 【JavaEE】SpringBoot配置文件的设置及其读取

Properties 是一种常见的配置文件类型,其以键值对(key-value)的形式保存配置信息。Properties 格式的文件通常使用 .properties 后缀名,该文件包含了若干行文本和 ASCII 编码的字符集,其中每一行都表示一个属性的键值对。以上两个读取配置文件的方法默认读取的是主配置文件中的内容。通常在IDEA中的properties的字符集是不适配中文的,读取配置文件信息的方法有很多,下面将介绍一些常见的方法。通过该注解可以指定读取的位置,然后读取出来配置项。这就需要我们修改一下。

2023-04-25 14:58:32 754

原创 【JavaEE】社区版IDEA(2021.X版本及之前)创建SpringBoot项目

Spring Boot 是基于 Spring 构建的一个快速开发框架,它就像一个集成了 Spring 的生态系统,提供了各种功能来简化 Spring 应用程序的开发和配置,同时还支持自动配置、内嵌式容器等特性,可以快速构建可执行的、独立运行的应用程序。版本兼容性:Spring 与其相关技术的版本需要手动配置,而 Spring Boot 提供了严格的版本管理,确保不同版本之间的兼容性。开发体验:Spring Boot 提供了更好的开发体验,提供了快速开发的功能和可视化的指标展示等。有什么错误评论区指出。

2023-04-23 09:30:00 764 1

原创 【JavaEE】Bean的作用域和生命周期

最后Service从Spring中获取到User,查看是否和最开始的User一样。由于我们目前的项目是Spring Core项目,目前只可以演示单例作用域和原型作用域。现在来演示一下单例作用域的效果。销毁容器的各种⽅法,如 PreDestroy、DisposableBean 接⼝⽅法、destroy-method。默认的作用域是单例作用域,当我们想要更改其作用域是,通过注解和配置文件的方式更改。最后打印一下User,看看是否符合单例的模式。把上述的Bean从单例作用域变成原型作用域。

2023-04-22 15:54:46 277

原创 【JavaEE】Spring中存储和获取Bean(使用注解)

上篇文章的存储Bean是在Spring的配置文件下通过bean标签来把Bean存储到Spring容器中,其中需要设置标签属性id 和 name,还是比较麻烦的,接下来介绍一种更为简单也最为常用的方法来存储Bean。但是通过方法名获取通常是不使用的,我们可以在@Bean注解后重写命名,通过新名字来获取,同时。5. 该注解是把方法的返回值存入到Spring中,如果方法没有返回值,就不能使用该注解。这是JDK提供的注入Bean的注解,和@AutoWired有以下的区别。上述工作完成后就可以通过注解存储Bean。

2023-04-16 14:05:21 1370

原创 【JavaEE】Spring项目的创建与使用

功能方面:ApplicationContext出了拥有BeanFactory的所有功能之外,还添加了一些其他功能:对国际化支持、资源访问的支持、事务传播方面的支持等。在存储Bean之前,先要在resources目录下创建一个Spring的配置文件,这里面是用来声明存放Bean的。继承方面:二者都是Spring容器的顶级接口,ApplicationContext是BeanFactory的子类。Spring项目的创建主要是在maven项目引入依赖后下载依赖,这时一个maven项目就变成了Spring项目。

2023-04-12 10:49:36 786

原创 【JavaEE】Spring + IoC + DI

在Spring框架中,DI通过@Autowire注解、构造函数注入、Setter方法注入等方式来实现。其中,@Autowire注解是最常用的方式,它可以自动装配对象,并且可以根据类型、名称、注解等条件进行注入。它从Spring容器中取出已经注册的对象,比如上面的车身、底盘和轮胎,哪个类需要,直接从容器中取出使用即可。上面提到了IoC,它是一种反转控制权思想,而DI则是它的实现方式。这就导致了,所有的代码都要大改动。,是面向对象的一种设计原则。由于每个类之间都是层层依赖的关系,并且都是。

2023-04-11 13:30:00 516

原创 【Java】有关JVM常见的一些问题

每隔一段时间进行一下扫描,JVM从根节点(GCroots)出发,把可以访问得到的对象做个标记,不能访问到的全部当成垃圾回收了。以上三个部分的数据区域都是每个线程私有的,每个线程创建出这样的空间来。内存模型:每个Java方法执行的时候都会创建一个函数的栈帧,包括:局部变量表,操作帧,动态链接,方法返回地址。Java中的对象都是通过引用来指向并访问的,引用中的成员又指向了其他对象。符号引用:记录的不是真正的地址,而是相较于真正地址的偏移量。:执行类的构造器,把对象初始化,加载父类,执行静态代码块等。

2023-04-06 16:10:48 449

原创 【Linux】常用的命令

上述文件的读写操作只是最简单的用法。VIM这个软件给我们提供了更加丰富的操作。VIM相当于Windows中的记事本。显示数字形式地址而不是去解析主机、端口或用户名。复制要递归复制目录中的每一份文件,所以要有 r。而移动则是移动整个目录,内部文件一起移动了。有什么错误评论区指出。以用户为主的格式来显示程序状况。显示所有正在或不在侦听的套接字。相较于ls,查看的文件内容更加。显示所有程序,不以终端机来区分。退出编辑模式,回到普通模式。删除文件(不用确认)显示一个终端的所有进程。显示套接字所属进程的。

2023-04-05 15:22:14 323

原创 【JavaWeb】博客系统(前端部分)

整个页面通用的CSS。因为页面有些操作是相同的(比如清楚浏览器的默认样式),有的地方贯穿了整个页面(比如导航栏),对于这些地方写一个通用的CSS可以节省工作量。这里的markdown文章编辑器使用现成的。有什么错误评论区指出。有了后端数据后就可以变成这样的页面。GitHub上一搜就有。至此,前端页面大功告成了。

2023-04-02 21:17:11 181

原创 【JavaWeb】Cookie和Session

Cookie是浏览器提供持久化存储数据的机制。Session是服务器提供持久化存储数据的机制。服务器收到的请求有很多,这些请求中有些是带有Cookie的请求。但是如何识别验证Cookie的,就是通过服务器存储的Session来验证的。

2023-03-30 19:45:01 592

原创 【JavaWeb】Servlet API详解

当写Servlet代码的时候,首先就是要创建类,然后继承这个HttpServlet这个类,重写里面的方法。上面的代码中或多或少已经使用到了这个类,这个类就是服务器给客户端返回响应用的。Servlet程序销毁前会使用一次destroy方法。Servlet程序的生命周期和它上面的方法息息相关。该类是通过Tomcat解析构造后表示的HTTP请求。Servlet程序启动的时候使用一次init方法。使用Postman构造浏览器请求。Postman构造的前端请求。使用ajax构造浏览器请求。通过上面的方法,我们只是。

2023-03-19 13:26:08 1815

原创 【JavaWeb】Tomcat的安装及使用 + Servlet + IDEA创建Servlet程序流程

创建Servlet程序是较为繁琐的,但是大多数步骤都是固定的。Servlet是实现动态页面的技术,是Tomcat给程序员提供的一组API,能够简单高效的开发web app。其中生成了 .jar后缀文件就是我们需要的,但又不是我们正真想要的。使用插件部署的不会生成 .war包,只能访问当前界面,和手动部署的完全是不同的。.war是Tomcat专门生成的描述webapp的包,里面还有一些其他资源。.jar打包的是一些 .class文件和一些其他的配置文件。我们需要的是 .war 为后缀的文件是我们想要的。

2023-03-15 00:21:25 591

原创 【JavaWeb】应用层协议——HTTPS协议加密流程

客户端发送 密钥 + 假公钥 给假机器,假机器通过 假私钥 解密出 密钥,并且记录密钥,然后用 记录的 真公钥 + 密钥 发送给 服务器。由于服务器不止给一个客户端服务,所以每个客户端应该生成自己的密钥发送给服务器(在建立连接的时候),此时的密钥就是处于裸露状态,如果被黑客截获了,那么加密就形同虚设。上面的情况是默认客户端已经真正的获取到了服务器的公钥了,但是可能最开始获取公钥的时候就已经被狸猫换太子了。上面的密钥是同一个密钥。正对上面的获取公钥被篡改的情况,又引入了证书。其中公钥是公开的,私钥是私密的。

2023-03-13 01:12:33 365

原创 【JavaWeb】应用层协议——HTTP协议

旧版只支持文本,而新版还支持图片... ...开发网页的时候,为了支持不同版本的浏览器,就做了很多版本的网页。由于HTTP报文中没有规定报头中的键值对可以存在多少个,也没有记录报头中有多少个键值对,通过这个空行就可以很好的把报头和正文部分分隔开来,从而有效的解决粘包问题。临时重定向:每次当浏览器向服务器请求访问某个网站,但是该网站的IP暂时转移了,所以服务器就返回新网站的IP,浏览器拿到新的IP后再访问新的。请求转发:当浏览器访问旧IP的时候,服务器直接自动找到新的IP,并且返回请求。

2023-03-12 14:42:46 285

原创 【JavaWeb】从输入URL到展示出页面的过程

这个过程大致分为以下几步:①DNS域名解析②三次握手建立连接③发送请求④接收响应⑤渲染网页界面⑥四次挥手断开连接简单的理解为先找到某人地址,给他发送消息可以去他家拿东西吗?他同意后拿到他的东西在自己家中展示出来。最后和他互道再见。下面将详细介绍其中的过程。

2023-03-06 16:01:14 710

原创 【JavaWeb】CSS基础知识:引入方式 + 选择器

CSS的引入有三种,三种的优缺点各不相同。

2023-03-04 12:09:29 943

原创 【JavaWeb】HTML常用标签

标签大部分成对出现,代表开始和结束 如 标签中的内容

2023-03-03 20:03:56 724

原创 【JavaWeb】数据链路层协议——以太网 + 应用层协议——DNS

以太网不是一个具体的网络,而是一个技术标准,主要应用于数据链路层和物理层。

2023-03-02 13:56:34 358

空空如也

空空如也

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

TA关注的人

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