自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SSM应用程序启动流程

在一个基于SSM(Spring + Spring MVC + MyBatis)框架的Web应用程序中,启动过程涉及到Spring的IOC容器和MVC容器的初始化。用于扫描Web层的类,将其注册为Spring MVC的Controller。配置用于启动Spring MVC的DispatcherServlet。用于加载属性文件,配置数据源和其他MyBatis相关的Bean。用于扫描指定包下的类,将其注册为Spring的Bean。启用基于注解的Spring MVC特性。配置用于启动Spring的IOC容器,而。

2023-11-21 17:41:06 382

原创 Redisson中的对象

原文链接:https://blog.csdn.net/u010963948/article/details/79240050。版权声明:本文为CSDN博主「南北雪树」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

2023-11-07 09:27:22 374

原创 Docker desktop安装mysql

上面的情况下启动的 MySQL 能够满足基本需求,不过每次重启之后数据就丢失了,就算是开发环境这样也不能接受的,需要挂接本地磁盘,方便下次可以访问。首先本地已经有 docker 环境存在,然后可以拉取 MySQL 镜像。等待镜像完成之后就可以启动 mysql 了,注意需要配置一些启动参数。,然后可以用客户端登录了,而且下次启动不会丢失数据。

2023-08-14 20:36:29 3282

原创 docker desktop搭建 nginx

启动一个新的 nginx 容器,并将容器中的配置目录挂载到本地磁盘的目录中。复制 docker 中的 nginx 配置文件。本地浏览器访问 127.0.0.1:8081。查看运行的容器 docker ps -a。本地磁盘创建 nginx 目录。停止刚启动的 nginx 容器。拉取 nginx 镜像。

2023-08-12 23:28:00 946

原创 SpringBootDemo-0.0.1-SNAPSHOT.jar 中没有主清单属性

下面展示一些cmd代码片。

2023-08-10 11:26:00 2774 3

原创 SpringBoot 将项目打包成 jar 包

通过命令行来修改属性值固然提供了不错的便利性,但是通过命令行就能更改应用运行的参数,那岂不是很不安全?,通过使用—server.port属性来设置xxx.jar应用的端口为8888。,该设置在样例工程中可见,读者可通过册除该值或使用命令行来设置该值来验证。在项目的生命周期中,package 一下。在命令行运行时,连续的两个减号–就是对。package 完成后的 jar 包。该 jar 包所在的路径下 cmd。中的属性值进行赋值的标识。找到对应的 jar 包路径下,打包后的名字即可运行成功;

2023-08-10 11:14:35 3665

原创 docker安装MinIO

Minio 是一个面向对象的简单高性能存储服务。使用 Go 语言编写,性能高、具有跨平台性。,有一个中文站点,单内容更新不是很及时,建议从原始官网学习。本文采用,参考官方资料。

2023-08-05 12:36:04 1335

原创 jar包手动添加到本地maven仓库

场景:使用拉取依赖时,经常出现找不到 jar 包的情况,有可能我们 maven 配置的远程仓库中并没有这个 jar 包,那么这些 jar 需要我们自己手动导入到我们的本地仓库中,才能加入 maven 的 pom 中。

2023-07-26 13:21:37 622

原创 Javascript函数

并不限于原始值或对象类型,也可以使用调用函数返回的值。箭头函数同样也可以这样使用默认参数,只不过在只有一个参数时,就必须使用括号而不能省略了。如果函数是使用箭头语法定义的,那么传给函数的参数将不能使用 arguments 关键字访问,而只能通过定义的命名参数访问。在使用默认参数时,arguments 对象的值不反映参数的默认值,只反映传给函数的参数。arguments 对象的另一个有意思的地方就是,它的值始终会与对应的命名参数同步。参数是按顺序初始化的,所以后定义默认值的参数可以引用先定义的参数。

2023-07-23 23:09:02 73

原创 VO/DTO/DO/PO通俗的解释加上自己的理解

PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系。PO:service接收到传递的DO之后,转换成一个PO,传给mapper的方法,进行持久化处理。DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。DO:controller中接收到DTO之后,新建一个DO传递给service,VO:前端页面显示使用的数据,后端传递给前端的。DTO:前端调用后端接口的时候传递给后端。

2023-07-20 14:05:18 188

原创 终止占用端口的进程

终止进程: 打开任务管理器(Task Manager),切换到 “详细信息”(“Details”)选项卡,并找到具有相应 PID 的进程。右键单击该进程,并选择 “结束任务”(“End Task”)来终止该进程。请注意,终止进程可能会导致相关应用程序或服务的异常终止。在终止进程之前,请确保您了解正在终止的进程是哪个应用程序或服务,并确认终止该进程不会对系统产生负面影响。这将显示占用端口 80 的进程的相关信息,包括进程 ID(PID)。替换为要终止的进程的实际 PID。

2023-07-17 11:16:29 915

原创 js数组常用方法

Array.concat() 方法创建并返回一个新数组,它的元素包括调用 concat() 的原始数组的元素和 concat() 的每个参数。如果参数中的任何一个自身是数组,则连接的是数组的元素,而非数组本身,concat() 不会递归扁平化数组,也不会修改调用数组。indexOf() 和 lastIndexOf() 方法不接收一个函数作为其参数,第一个参数是需要搜索的值,第二个参数是可选的:它指定数组的一个索引,从指定位置开始搜索。filter() 方法返回的数组元素是调用的数组的一个子集。

2023-07-17 10:00:44 129

原创 集合引用类型

属性一般是通过点语法来存取的。这也是面向对象语言的惯例,但也可以使用中括号来存取属性。属性可以是字符串和数值(注意,数值属性会自动转换为字符串。使用对象字面量(object literal)表示法。使用 new 操作符和 Object 构造函数。Array中也有很多的实例方法。在ES6中,新加了两个静态方法。

2023-07-13 14:15:11 85

原创 Redis的内存淘汰策略和过期删除策略

通过这三种删除策略的对比,惰性删除+定期删除结合可以一定程度上避免内存的无效占用,但不可能完全避免。假设一下:如果某些键一直没被扫描到也没被使用,那它就会逃脱定期与惰性删除使得内存还是得不到释放,这样,我们就需要设置淘汰策略了。这里说的定时和定期的主要差别:定时会扫描全部的键,如果过期进行删除;而定期并不会扫描全部键,而只是对其中一部分进行删除。Redis是将数据放在内存中,内存是有限的而且有的业务场景需要将数据设置为过期,所以就有了过期删除策略和内存淘汰策略。Redis过期删除策略。

2023-07-02 15:49:54 342

原创 JMM的规定

JMM又叫java内存模型,定义共享变量放在主内存中,然后每一个线程都有自己的本地内存,分别操作自己本地线程中的副本共享变量。JMM这样的机制,导致了可见性问题,一个线程操作了自己的本地内存中的共享变量,无法立刻响应到主内存中。

2023-07-02 15:47:39 60

原创 JVM中判断无效对象算法

JVM 内存大致分为和虚拟机栈、本地方法栈和程序计数器,这三个区域是线程私有的。虚拟机栈用于描述Java方法执行的过程。每一个方法在执行的过程中会创建一个栈帧。栈帧中包括局部变量、操作数栈、动态链接和方法出口等信息。当方法执行完成后,对应的栈帧就会弹栈。虚拟机栈的内存分配是确定的,所以不需要特别关注虚拟机栈及其他线程私有区域的内存使用情况。方法区和堆是线程共享区域。方法区和堆主要存放对象、数组等不确定数量的数据。在方法执行的过程中创建的对象数量是不确定的。所以需要合理的内存管理机制来管理这两个区域。

2023-07-02 15:46:57 583

原创 多线程中的可见性

JMM 这样的规定可能会导致 在线程修改了本地内存中的共享变量的副本之后,并没有及时的更新到主内存,或者线程没能即时将共享变量的最新值同步到本地内存中,从而使得线程在使用共享变量时的值不是最新值。JMM 定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存,本地内存中存储了该线程以读/写共享变量的副本。JMM模型描述的是共享变量存储在主内存中,而每个线程都有一个自己的本地内存,在这个里面存储了共享变量的副本。我们怎么保证多线程的情况下保证共享变量的可见性呢?

2023-07-01 23:36:22 261

原创 String中的常用方法

返回值为0表示相等,正数表示当前字符串大于参数字符串,负数表示当前字符串小于参数字符串。substring(int beginIndex)和substring(int beginIndex, int endIndex):返回从指定索引开始到结束的子字符串。replace(CharSequence target, CharSequence replacement):将字符串中的指定字符序列替换为新的字符序列。split()方法来分割字符串: 它接受一个正则表达式作为参数,并将字符串分割为子字符串数组。

2023-07-01 21:51:59 285

原创 nginx中的防盗链原理

资源盗链是指内容不在自己服务器上,而通过技术手段,绕过别人的限制,将别人的内容,比如热门的图片放到自己页面上,展示给用户,以此来盗取别人网站的流量,即蹭流量。简而言之就是用别人的东西成就自己的网站如下,分别在网上找的两个图片,可以直接在浏览器中打开这两个链接引导案例利用上面的这两个图片链接,在nginx的资源目录下,创建一个html页面,将两张图片的链接设置进去。

2023-06-29 22:25:55 854

原创 JAVA中的基本数据类型

1 字节 的是 byte 、boolean2 字节 的是 short 、char4 字节 的是 int 、float8 字节 的是 long 、double。

2023-06-29 12:06:15 293

原创 Feign的使用

以上就是使用Feign的基本步骤。您可以在Feign客户端接口中定义多个方法,每个方法对应不同的远程服务API。Feign会根据接口定义自动生成代理对象,简化了与远程服务的交互。

2023-06-29 11:18:09 257

原创 webSocket的使用

中添加Java WebSocket的依赖项。运行应用程序:启动你的Spring Boot应用程序,WebSocket端点将会被注册,并可用于处理WebSocket连接和消息。这个配置类可以用于将WebSocket端点类自动注册到Spring容器中,而无需手动配置和注册每个WebSocket端点。创建WebSocket端点:创建一个类作为WebSocket端点,用于处理WebSocket连接和消息。配置WebSocket支持:在Spring Boot应用程序的配置类中,启用WebSocket支持。

2023-06-26 16:00:42 1409

原创 arraylist,hashmap和hashset常用方法

ArrayList常用方法:HashMap常用方法:HashSet常用方法:

2023-06-25 18:50:57 190

原创 Stream流中Map方法的使用

map函数的作用就是针对管道流中的每一个数据元素进行转换操作。主要有三种用法。

2023-06-25 16:39:30 3501

原创 mysql执行顺序与索引算法

SQL查询中用到的关键词:select、distinct、from、join、on、where、group by、having、sum、count、max、avg、order by、limitselect->distinct->from->join->on->where->group by->having->order by->limit必须字段:select、from可选字段:distinct、join、on、where、group by、having、sum、count、max、avg、order by

2023-06-25 10:40:35 952

原创 finalize方法作用

方法在Java中用于在对象被垃圾回收之前执行清理操作,但它并不是一个强烈推荐或可靠的机制,更好的做法是通过其他方式显式地进行资源清理。方法提供了在对象被垃圾回收之前执行清理操作的机会,但它并不是一个可靠的机制。它被称为“终结方法”,用于在对象被垃圾回收之前进行特定的清除操作。是一个方法,被定义在。

2023-06-24 15:37:47 1144

原创 GROUP_CONCAT用法

GROUP_CONCAT 是用于将分组后的多个行连接为一个字符串的聚合函数。它可以在 SELECT 查询中使用,并结合 GROUP BY 子句来实现对分组数据的字符串拼接操作。注意:默认情况下,GROUP_CONCAT 函数会将连接后的字符串按照系统变量。

2023-06-23 00:10:13 3265

原创 Java8 stream流

中间操作:使用中间操作对Stream对象进行过滤、映射、排序、限制等操作。同种类型的多个值 —> 通过Stream接口的静态方法of(T…终止操作: 使用终止操作执行Stream流并产生最终结果。终止操作会触发实际的计算。创建Stream:通过集合、数组、I/O管道等源数据创建一个Stream对象。Collection集合 —> 使用默认方法stream()生成流。在集合中添加一些数据,过滤出开头为李的名称并且只要长度为2的数据。Map集合 —> 把Map转成Set集合,间接的生成流。

2023-06-21 19:41:33 279

原创 Spring Boot请求处理-常用参数注解

即获取请求体(请求必须是post请求–@PostMapping),一般情况下都会使用@RequestBody注解将参数映射到pojo类的能力,但是要保证前后传入的参数名是一样的。当进行转发时可以在请求中携带上请求的参数,转发会携带上一次请求的参数(一次完整的请求包括转发)该注解主要用于获取请求头header中的数据,客户端请求之后可以拿到一些头部携带的参数。由于是同一次请求,因此也可以直接拿到原生的HttpServletRequest,然后从这里面拿参数和属性也都是可以的【获取request域属性】。

2023-06-21 15:23:09 1026

原创 搭建SpringBoot项目 详细教程

选择Spring initializr,如果服务器URL这一栏一直在转圈(国外地址服务慢),可以使用https://start.aliyun.com/或者使用科学上网,然后完成组织名称、项目名称和项目描述,点击下一步。这个项目,可以作为种子项目,我打算把它放置Gitee上。包含大部分web开发的相关功能,后期所有的Spring Boot项目都可以用这个项目,简单修改一下配置,就可以快速开发了。添加maven镜像加快依赖下载速度(可以选择在maven配置文件中设置或者在项目的pom文件中配置)

2023-06-19 15:23:54 5428 2

原创 Spring事务失效的原因

Spring的事务传播行为。

2023-06-14 21:31:35 122

原创 JVM结构与运行

解决:TLAB(本地线程分配缓存)指的是在堆中分别一小块空间给每一个线程,线程在自己的内存区域完成对象的创建。一个类从被加载到虚拟机内存开始,再到从内存中卸载,生命周期包含7个阶段,分别是加载,连接(验证,准备,解析),初始化,卸载。会发生抢占的,因为堆是靠指针记录读写位置的,如果A线程在写数据,而另一个B线程也想写数据,然后这个指针就发生了抢占现象。类加载是JVM加载的起点,具体什么开始,Java虚拟机规范中并没有进行强制约束,所以是交给虚拟机实现自由发挥。随写:在new对象时,堆中会发生抢占吗?

2023-06-14 15:29:32 1057

原创 POST请求中的四种数据类型

为什么POST请求中会出现这些数据类型呢?POST请求常见数据类型GET 和 POST 是我们最常用的两个 HTTP 请求方法。对于 GET请求,需要传递的数据比较简单,我们通常使用 QueryString 的方式传递,例如,那么 Content-Type 的值就不是那么重要了。对于 POST 请求,Content-Type 的值就非常重要了,需要根据不同场景做不同选择。对于POST请求来说,在请求头中的content-type值比较重要一些。get请求一般是url请求。

2023-06-13 15:46:38 2905

原创 find练习

find . -name “.*txt” -type ffind /var/log -type f -atime -7find /home -type f -user johnfind . -type f -size +100Mfind /etc -name “*.conf”

2023-06-13 14:57:01 39

原创 grep指令

匹配连续出现两次的三个数字后跟一个连字符,再加上四个数字的模式。只有前两行匹配了这个模式,因此它们被返回作为结果。多级目录搜索,递归查询文件夹下的文件是否包含指定内容。在第二个文件中,查找和第一个相匹配的文本行。统计文件或者文本中包含匹配字符串的行数。输出包含匹配字符串的行数加结果 -n选项。搜索多个文件并查找匹配文本在哪些文件中。使用正则表达式,匹配符合条件的文本行。查询文件中的指定内容,并返回文本行。输出除指定内容文本行之外的所有行。搜索历史命令中输入过的命令的记录。忽略匹配样式中的字符大小写。

2023-06-13 13:25:22 463

原创 Java中的锁

为什么会有这些锁呢?因为一种类型的锁很难应对线程操作同步资源的情况。乐观锁和悲观锁自旋锁和适应性自旋锁无锁、偏向锁、轻量级锁和重量级锁公平锁和非公平锁可重入锁和非可重入锁。

2023-06-13 10:58:11 976

原创 死锁产生原因,如何避免死锁

请求并持有条件:指一个线程已经持有了一个资源,但又提高了一个新资源请求,而新资源已被其它线程占有,当前线程会阻塞,但阻塞的同时并不会释放自己已经获取的资源。互斥条件:该资源同时只由一个线程占用。如果有其他线程请求获取该资源,则请求者只能等待,直至占有资源的线程释放该资源。不可剥夺条件:指线程获取到的资源在自己使用完之前不能被其它线程抢占,只有在自己使用完毕后才由自己释放该资源。环路等待条件:指在发生死锁时,必然存在资源环形链。(至少破环死锁发生的一个条件)互斥是锁的特性,我们无法破坏。

2023-06-12 20:49:10 44

原创 HTTP报文结构

例如,在使用 gzip 压缩后的响应体中,Content-Encoding 响应头的值为“gzip”,Content-Type 响应头的值为“text/html;请求头紧随请求行之后,是 HTTP 请求报文的一部分,包含了客户端向服务器端发送的元数据。请求体的格式根据实际的需要选择。响应头紧随状态行之后,是 HTTP 响应报文的一部分,包含了服务器向客户端发送的元数据。a. HTTP 请求方法:指定客户端请求服务器所用的方法,常用的方法有 GET、POST、PUT、 DELETE、PATCH 等。

2023-06-12 00:13:57 1033

原创 文件上传用什么协议

在 HTTP 协议的 POST 请求中,客户端会将上传的文件使用 multipart/form-data 格式进行编码,服务端在接收到数据时则需要对 multipart/form-data 进行解码。multipart/form-data 是一种多部分内容的数据类型,用于在一个单独的 HTTP 请求中同时传输多个不同类型的数据,例如文本和二进制数据(例如文件)。multipart/form-data的格式使得请求非常灵活,可以同时上传多个文件和其他数据(例如文本、图片等)。

2023-06-10 15:31:03 774

原创 Spring Security配置AuthenticationManager

Override总结一旦通过 configure 方法自定义 AuthenticationManager 实现 就回将工厂中自动配置 AuthenticationManager 进行覆盖一旦通过 configure 方法自定义 AuthenticationManager 实现 需要在实现中指定认证数据源对象 UserDetaiService 实例。

2023-05-22 11:35:30 1792

空空如也

空空如也

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

TA关注的人

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