自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 sql优化的方法

普通索引 最基本的索引,没有任何限制唯一索引 与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值主索引 即主键索引,关键字PRIMARY复合索引 为了更多的提高MySQL效率可建立组合索引,遵循“最左前缀”原则全文索引 可用于MyISAM表,MySQL5.6之后也可用于innodb表,用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时和空间。

2024-01-28 16:13:17 1385

原创 java验证ftp地址是否可用

在实际开发中我们的业务是我们将订单发到客户的指定的地方, 我们需要验证用户的ftp地址是否真实且有效, 我们根据java程序来进行验证, 步骤和思路应该是.步骤描述1导入所需要的 java类库(jar包依赖)2创建ftp客户端对象3设置ftp连接服务端的连接参数4建立与ftp的服务端的连接5测试连接是否成功6关闭ftp连接。

2024-01-21 12:15:40 830

原创 java发送邮件(注:本章以163邮箱为例)

电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等。但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送。本文将简单介绍如何通过 Java 代码来创建电子邮件,并连接邮件服务器发送邮件。

2024-01-15 09:56:59 1794

原创 java 工具类: CompareUtils(比较对象字段值变化)

我们在工作中,可能会在日志中记录数据的变化情况或者在公共处理的数据增加一个日志页面,记录每次修改的变化。我们可以根据CompareUtils工具类比较数据前后发生了怎样的变化, 这样我们就可以知道数据做了哪些改变./*** 字段标记注解*//*** 字段名称*/

2023-12-03 15:23:34 1768

原创 注解之@Configuration、@Bean、@Component

首先:我们先简单描述一下这三个的作用@Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean。@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑。用于显式声明单个bean,而不是让Spring像上面那样自动执行它。它将bean的声明与类定义分离,并允许您精确地创建和配置bean。另外@Bean注解的方法返回值是对象,可以在方法中为对象设置属性。

2023-11-26 14:21:29 851

原创 jwt单点登录

在我们日常开发中登录是每个系统都要做的,对于单点登录是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。开一下传统登录:单点登录:通俗讲:用户登录一次,就可已访问系统里的其他子系统。

2023-11-20 18:05:58 1608

原创 Java钩子函数的使用

在Java编程中,钩子函数(Hook Function)是一种能够在特定事件发生时执行的代码块。钩子函数可以被用来在程序的不同阶段插入自定义逻辑,以实现一些特定的需求。本文将介绍Java钩子函数的使用技巧,并通过代码示例来说明。

2023-11-13 09:31:19 947

原创 redis五种数据类型

sorted set对象实现有序排序依赖一个特有的属性——分数(score),分数是一个double类型的值,sorted set对象允许score重复,但是不允许存放对象的值重复。我们可以发现,顺序是倒过来的,这样不太直观,我们可以使用另一个关键字lpop,这个关键字可以弹出list对象第一个元素,弹出的意思是获取他的值然后将它从list中删除。此时key3这个list中有五个值,分别是why,yes,no,safe,dangerous。此时list中只有4个元素,说明dangerous元素已经被删除。

2023-11-06 10:56:02 134

原创 Redis(windows+Linux)安装及入门

Redis是什么?Redis(motectionaryerver),即远程字典服务Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis能干什么?特性准备。

2023-10-29 16:33:19 414

原创 spring懒加载

Spring默认会在容器初始化的过程中,解析xml或注解,创建配置为单例的bean并保存到一个map中,这样的机制在bean比较少时问题不大,但一旦bean非常多时,spring需要在启动的过程中花费大量的时间来创建bean ,花费大量的空间存储bean,但这些bean可能很久都用不上,这种在启动时在时间和空间上的浪费显得非常的不值得。所以Spring提供了懒加载机制。所谓的懒加载机制就是可以规定指定的bean不在启动时立即创建,而是在后续第一次用到时才创建,从而减轻在启动过程中对时间和内存的消耗。

2023-10-23 14:26:33 246

原创 nginx反向代理

Nginx作为一个高性能的反向代理服务器,具有灵活的配置和强大的性能优势。本文将详细介绍Nginx的反向代理配置,并提供一些代码示例,以帮助优化网站性能。在现代Web应用中,HTTPS已经成为标配,为了提供更安全的访问,需要将HTTP请求转发到HTTPS服务器上。通过使用反向代理,可以实现负载均衡、缓存、HTTPS支持等功能,从而提高网站的性能和安全性。通过合理配置Nginx的反向代理功能,可以实现负载均衡、缓存、HTTPS支持等功能,从而提高网站的性能和安全性。负载均衡是反向代理的一项重要功能。

2023-10-07 09:43:50 187

原创 nginx 负载均衡

上一篇讲了nginx的入门配置及命令,今天我们说一下nginx的负载均衡。

2023-09-24 14:18:43 476

原创 nginx入门

Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件代理服务器,在 BSD-like 协议下发行,具有高性能、高可靠性、丰富的模块化支持和简单易用的优势。

2023-09-17 09:24:10 189

原创 拦截器学习

Spring MVC 中的拦截器( Interceptor )类似于ServLet中的过滤器( Filter ),它主要用于拦截用户请求并作出相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。该拦截器是全局生效的,可能有些场景某个接口不需要限制,这样我们可以把这个拦截器改造成注解方式应用。某些接口需要则加上注解即可。

2023-09-10 14:47:13 216

原创 JVM 内存结构

Java虚拟机在运行Java程序 时,把它所管理的内存划分为若干个不同的数据区域,主要包括以下五个部分:程序计数器、Java堆、Java虚拟机栈、方法区和本地方法栈。

2023-09-04 10:43:26 1233 1

原创 设计模式--策略模式

高内聚低耦合,可扩展,遵循ocp原则(开放封闭原则)

2023-08-11 17:06:31 803

原创 mysql函数及用法

mySQL 是一种常见的关系型数据库管理系统,提供了大量的函数可以帮助开发者有效地操作和管理数据库。mySQL根据这些函数将数据更好的进行操作,从而是我们的sql变得更加简洁清楚。创建student表来验证我们的sql函数INSERT INTO `student` VALUES (1, '小刚', 12, 100, '2011-03-09 16:18:31', '2023-08-04 16:19:17', '小刚考了全班第一,拥有所有荣誉');

2023-08-04 17:04:30 202

原创 sql优化

冗长的SQL都好理解,一段SQL太长阅读性肯定会差,出现问题的频率肯定会更高。更进一步判断SQL问题就必须得从执行计划入手,如下所示:执行计划告诉我们本次查询走了全表扫描Type=ALL,rows很大(9950400)基本可以判断这是一段"有味道"的SQL。

2023-07-23 14:06:40 218

原创 try catch finally执行顺序

疑问:既然finally中的代码是必须执行的,函数在最后才会返回,那么最后执行步骤a的时候,res应该已经执行了步骤b了呀。如果try中没有异常,不会执行catch,如果有异常,先执行catch.在第一步就已经确定了返回值,被临时保存到局部变量区了,最后用于返回。finally操作的代码无法影响返回值,除非,finally返回 return;猜测,第一次执行到步骤a的时候,把res的值保存了,用于最后返回,后面finally修改res的时候就不影响最后的返回结果。

2023-07-16 14:05:19 271

原创 java实现上传文件到oss

OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高可靠的云存储服务。它是面向Internet应用设计的分布式存储服务,支持RESTful API,可以在任何时间、任何地点、任何互联网设备上进行上传、下载、管理和分享数据稳定可靠:对象存储具有多重冗余架构设计;且基于高可用架构设计,消除单节点故障,跨数据中心的副本冗余,能够保障服务的高可用性,确保数据业务的持续性;

2023-07-07 16:03:47 3599

原创 mybatis的#和$使用和区别

MyBatis是一种基于Java的持久层框架,用于将数据库操作和Java对象之间的映射进行处理。在MyBatis中,#和$符号是用于SQL语句中的占位符。在使用符号时,需要注意一些风险,例如如果使用不当,可能会导致SQL注入攻击。因此,建议在使用符号时,对参数值进行严格的检查和过滤处理。

2023-07-03 09:03:14 379

原创 将List转化为String 以逗号隔开

在我们日常开发中, 在前后端交互的时候 , 会遇到多个id或其他字段存放到一个字段中, 这时我们会遇到一个List(集合)---->String(单个字段), 这时我们要进行操作数据, 使得我们的数据可以保存到数据库中 .在我们开发中要多尝试不同的解决思路, 这样我们才会更快成长, 所以跟我有类似业务场景的或好的方法希望大家留言讨论在我们使用Stream时不利于我们对代码的解析(Debug看流程) , 请谨慎使用。

2023-06-21 16:35:33 10506 1

原创 mybatis-plus 条件构造器 (Wapper)中last()方法的使用

参数说明lastSql:要追加到 SQL 后面的 SQL 语句condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件。注意: last方法只能用于查询语句中, 不能用于其他语句 . 有sql注入风险, 使用时请检查好书写sql.

2023-06-16 17:32:22 7998

转载 Mapstruct 的使用

MapStruct是一个Java注释处理器,用于生成类型安全的bean映射类。您要做的就是定义一个映射器接口,该接口声明任何必需的映射方法。在编译期间,MapStruct将生成此接口的实现。此实现使用简单的Java方法调用在源对象和目标对象之间进行映射,即没有反射或类似内容。与手动编写映射代码相比,MapStruct通过生成繁琐且易于出错的代码来节省时间。遵循配置方法上的约定,MapStruct使用合理的默认值,但在配置或实现特殊行为时不加理会。

2023-06-05 09:40:42 3441 1

原创 sql 中如何利用别名作为查询条件

在日常开发中我们根据工作需求来编写sql, 在开发中遇到一个利用不是表中字段作为条件进行查询, 因为困惑了我很久 , 今天来记录一下。

2023-05-26 18:12:24 1270

原创 BigDecimal 类型的使用

float和double类型的主要设计目标是为了科学计算和工程计算,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。所以项目与金融挂钩的小伙伴们应该是比较熟悉的。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。

2023-05-19 15:43:15 1348

原创 Java如何判空

实际项目中我们会有很多地方需要判空校验,如果不做判空校验则可能产生NullPointerException异常。针对异常的处理我们在上一篇有提及:先来看一下实际项目中一些判空方式通常我们判断一个对象是否为Null,可以使用java.util中的Objects.nonNull(obj)、hutool中的ObjectUtil或者直接 null!= obj。

2023-05-14 09:03:24 1100

原创 Lambda表达式

Lambda表达式是一种在现代编程语言中越来越常见的特性,可以简化代码、提高生产力。这篇文章将介绍10个必须掌握的Lambda表达式,这些表达式涵盖了在实际编程中经常用到的常见场景,例如列表操作、函数组合、条件筛选等。通过学习这些Lambda表达式,你将更加深入地理解函数式编程的思想,能够更加高效地编写代码。

2023-05-07 13:44:44 450

原创 java获取某个文件夹下的所有文件

在我们平时编写开发文档的时候, 我们会获取到项目文件中的所有子文件来展示我们的源代码所储存的位置, 获取我们项目下的所有文件路径, 这时我们会如何用Java代码来获取我们项目下的所有文件呢, 今天我们来比编写一下代码。

2023-04-17 17:05:37 4582

转载 MySql索引

当查询的数据在索引树中,找不到的时候,需要回到主键索引树中去获取,这个过程叫做回表。比如在第6小节中,使用的查询SQL复制代码需要查询所有列的数据,idx_age普通索引不能满足,需要拿到主键id的值后,再回到id主键索引查找获取,这个过程就是回表。如果我们查询SQL的select *修改为的话,其实是不需要回表的。因为id和age的值,都在idx_age索引树的叶子节点上,这就涉及到覆盖索引的只是点了。覆盖索引是select。

2023-04-15 20:01:59 310

原创 mysql 中 union 和 union all 的区别与使用场景

在我们日常开发中, 经常会遇到分表储存数据的场景, 取数据时需要取出两个表的的数据, 将两个表的数据联合查询, 这时我就用到了我们的数据库函数union 和 union all, 其实我们也可以取用代码实现想要的联合查询结果, 但我个人认为还是使用数据开函数比较好一点1、union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct;2、union all: 对两个结果集进行并集操作,, 不管是不是重复;

2023-04-10 10:57:40 750

原创 数据库报错:1045-Access denied for user “root“ @localhost (using password: yes)

在我们开发中肯定会和数据库打交道, 我的电脑发生点小问题, 重做系统之后自己的环境和配置需要重新配置, 数据库也是重新下载, 在我安装数据库之后, 再打开Navicat 本地数据库时报错1045-Access denied for user "root" @localhost (using password: yes) 我们的数据库密码过期了, 要知道我的数据库新下载, 新配置的环境变量, 对于这个问题为和我同样问题的小伙伴解答一下, 希望同学们不要走弯路.

2023-04-01 21:50:42 9222

原创 mybatis-plus公共字段自动填充功能

这里是比较活泛的/*** 自定义sql字段填充器,自动填充创建修改相关字段*/@Override//为空则设置createUser//为空则设置insertTime@Override/*** 获取用户唯一id*/return -1L;//如果获取不到就返回-1return -1L;}*/

2023-03-24 11:03:06 474

原创 配置Jenkins

在实际开发中, 我们分为开发、测试、部署这几个基本步骤,开发和测试的步骤是相对多变的, 然而我们的部署代码的步骤是有条不稳的,差不多步骤是一样的(这里仅限开发时--中间件除外), 面对不同场景比如前后端分离和发现bug重新部署是很费时间的 , 所以我们的jenkins诞生了Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

2023-03-19 14:08:58 4045

原创 Nacos开机自动启动(不用手动shutdown.cmd)

在实际开发中我们的项目配置nacos时, 每次本机重启电脑和更换网络ip时nacos就会挂机(death), 我们还要手动再去执行nacos中的shutdown.cmd命令重新启动nacos最终才可以正常启动我们的程序.错误:方法一 一定要已管理员身份去运行, 不然是无法成功地(我试了好几次),方法二要注意自动启动路径,除了这两种方法还有在电脑设置登录时(开机时)自动启动, 不过是在前台显示的这里就不演示了, 有兴趣的小伙伴可以研究一下。

2023-03-09 16:07:57 1511

原创 JSONObject与JSONArray使用区别

(1).区别在于JSONObject是一个{}包裹起来的一个对象(Object),而JSONArray则是[]包裹起来的一个数组(Array),说白点就是一个是数组一个是对象或字符串(2).JSON有两种结构:对象和数组。对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。

2023-03-04 21:24:19 1073

原创 sql的执行顺序

在我们世家开发中,我们少不了和数据库打交道, 我们的持久层是与数据库打交道的, 少不了要用sql语句来请求数据库的数据, 前台(前端页面)请求到-->控制器(接口层)-->service(业务层)-->mapper或dao(持久层)简图: 在持久层我们的sql是怎么执行的, 它的执行顺序是怎样的, 今天一起来看一下1.创建测试表test1和test2 2.两张表test1test2 3.准备SQL逻辑查询测试语句2.2.SQL逻辑查询语句执行顺序还记得上面给出的那一长串的SQL逻辑查询规则么

2023-02-26 15:27:48 463

转载 Spring bean生命周期12个环节

阶段1:Bean元信息配置阶段阶段2:Bean元信息解析阶段阶段3:将Bean注册到容器中阶段4:BeanDefinition合并阶段阶段5:Bean Class加载阶段阶段6:Bean实例化阶段(2个小阶段)Bean实例化前阶段Bean实例化阶段阶段7:合并后的BeanDefinition处理阶段8:属性赋值阶段(3个小阶段)Bean实例化后阶段Bean属性赋值前阶段Bean属性赋值阶段阶段9:Bean初始化阶段(5个小阶段)Bean Aware接口回调阶段。

2023-02-19 15:56:30 233

原创 java ArrayList

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList 继承了 AbstractList ,并实现了 List 接口。// 引入 ArrayList 类// 初始化E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。objectName: 对象名。ArrayList 是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。

2023-02-12 16:00:01 1343

原创 java vector 类

Collection下的子类图Vector类 是在 java 中可以实现自动增长的对象数组Java中Vector类是允许不同类型元素共存的变长数组,Java.util.Vector提供了向量(Vector)类以实现类似动态数组的功能。在Java中是没有zhizheng 概念的,但如果能正确灵活地使用指针又确实可以大大提高程序的质量,比如在C、C++中所谓“动态数组”一般都由指针来实现。为了弥补这点缺陷,Java提供了丰富的类库来方便编程者使用,Vector类便是其中之一。

2023-02-03 17:21:46 1465

空空如也

空空如也

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

TA关注的人

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