自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 isNotBlank和 != null的区别

用于检查字符串是否 非空、非 null 且不为空白。!= null:仅用于检查对象是否为 null,不能检查空字符串或空白字符串。如果你的目标是判断一个字符串是否有效(即非空、非 null 且不全是空白字符),推荐使用 StringUtils.isNotBlank()。

2024-11-21 13:05:41 370

原创 Exception-try/catch/finally的return顺序

会被执行,输出Finally block。这种在finally块中使用return的做法一般不推荐,因为它会使程序的流程变得难以理解,并且可能会隐藏try和catch块中的错误。当在try - catch - finally语句块中有return语句时,finally块中的代码总是会被执行,并且其执行顺序在try或者catch中的return语句之后,但在方法真正返回之前。在 Java 中,如果finally块中也有return语句,那么这个return语句会覆盖try或者catch中的return语句。

2024-11-06 14:57:54 223

原创 统计机器运行时间,Sql及代码重构优化

要做的就是用每台机器每个线程的end减去start,然后求和并除以线程数,得到每台机器的平均时间。将四个字段都查出来用List封装好后,交给业务层去处理。取代两层for循环后能够将数据处理耗时降低到2ms。使用stream流和map来处理同机器多线程的问题。需求:统计每台机器各个线程的平均运行时间。将结果封装进List,直接返回。直接用Sql语句去做。

2024-11-05 17:12:17 356

原创 Spring框架的AOP理解及添加日志案例

1。

2024-11-05 17:07:36 352

原创 常见用于从 HTTP 请求中提取数据的注解

RequestParam:用于从查询参数或表单数据中提取数据。@PathVariable:用于从 URL 路径中提取数据。@RequestBody:用于从请求体中提取数据(如 JSON 或 XML 格式)。@RequestHeader:用于从请求头中提取数据。@CookieValue:用于从请求的 Cookie 中提取数据。@ModelAttribute:用于将多个请求参数绑定到一个 Java 对象。

2024-11-05 17:02:13 1636

原创 网页请求到加载的过程

整个过程涉及多种技术和协议,包括 DNS 解析、TCP/IP 通信、HTTP 请求和响应、浏览器渲染等。每一步都是确保最终用户能够快速且正确地访问所请求页面的重要环节。

2024-10-31 21:27:33 580

原创 @Configuration+@Bean 和 @Component 的区别

Bean创建时机在第一次调用 @Bean 方法时创建并注册 bean控制程度显式定义创建和配置逻辑使用场景适合复杂的初始化逻辑、依赖其他 bean@Component创建时机应用启动时自动扫描并注册类为 bean控制程度由 Spring 自动管理,较少的控制使用场景适合简单的业务逻辑组件、服务类、数据访问类等。

2024-10-30 15:56:39 450

原创 Nacos启动报错中含有No DataSource set

今天在云服务器上用Docker部署Nacos时遇到一个坑,折腾了好久,现在把几个要注意的点记下,提醒自己也是分享给同样踩坑的朋友1.报错:2024-10-29 01:52:32,574 INFO Bean ‘org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@6650813a’ of type [org.springframework.security.access.ex

2024-10-29 02:28:56 956

原创 接口中的静态常量在项目中的使用,以及固长列表和变长列表

因为这是接口内的定义,而我们并没有主动去加上权限修饰,出于接口出现的意义,那在 Java 接口内定义的字段默认会有:默认静态,默认常量,默认公共权限。但是,ALL 是一个可变的 ArrayList,它本身的引用不能变,但这个 ArrayList 可以修改其内容,因此你可以对它调用 add() 等修改操作。当使用 Arrays.asList() 方法时,返回的是一个固定大小的列表,这个列表不能改变大小,但它的内容(元素)是可以修改的。这种列表的大小是不可变的,意味着你不能对它进行修改,如添加或删除元素。

2024-10-14 19:32:04 1652

原创 RabbitMQ消息接收类Receiver

会使用 @RabbitListener 注解,来表示该类是一个消息接收器,用于处理来自 RabbitMQ 队列的消息。

2024-10-10 00:23:27 940

原创 调用RabbitMQ工具类Sender在Controller中完成消息发送

hi() 和 hello1() 方法 使用第一个 send(),通过默认交换器发送消息,直接使用路由键进行简单路由。hello2() 方法 使用第二个 send(),通过自定义交换器和路由键发送消息,支持更加灵活的消息路由。由此我们可以知道,

2024-10-09 23:55:26 1844 1

原创 队列,交换器,路由键之间的联系

在 RabbitMQ 中,队列(Queue)、交换器(Exchange)和路由键(Routing Key)之间的联系构成了消息的路由机制。绑定是交换器和队列之间的关联关系,它定义了消息如何通过路由键从交换器发送到特定的队列。首部交换器(Headers Exchange):基于消息的头部信息路由消息,路由键不在这类交换器中使用。扇出交换器(Fanout Exchange):将消息广播到所有与该交换器绑定的队列,不考虑路由键。交换器 → 队列:交换器根据绑定的路由键,将消息路由到匹配的队列中。

2024-10-09 18:01:32 365

原创 Mybatis-Plus的lambdaQuery()方法

除了 lambdaQuery(),MyBatis-Plus 还提供了很多类似的方法,比如 lambdaUpdate()、lambdaChainQuery() 用于更新操作或链式查询。:由于使用了 Lambda 表达式,字段名称是通过实体类的方法引用,避免了手动输入字段名时的拼写错误。使用 lambdaQuery() 方法时,可以基于实体类生成一个查询条件构造器,编写查询条件。该示例查询所有邮件地址包含 gmail 且年龄大于等于 25 岁的用户,并按照名字升序排序。创建 Lambda 查询。

2024-10-08 12:03:57 1352

原创 MySQL更新和删除数据

在这个例子中我们看到,首先 UPDATE后紧跟的就是你要更新的表名,然后用SET 设置你要修改的列名和它的新值,最后就是用WHERE确定要更新的行的过滤条件。因为没加WHERE子句的,就会更新表中所有的行。DELETE不需要列名或通配符,DELETE删除整行而不是删除列,为了删除指定的列,可以使用上文提到的UPDATE。,使得在更新多行数据时,即使某一行或某几行出错,也会继续更新其他的行,而不是默认的取消UPDATE操作。在使用DELETE语句时,也要注意不要省略WHERE子句,否则就是删除表中的所有行。

2024-09-22 11:18:55 436

原创 MySQL插入数据

此例子插入一个新客户到customers表。要存储到每个列中的值在VALUES子句中给出,对每个列必须给出一个值,如果数据源给某列没有值,也要使用NULL值。在第二种方式中,如果某列没给出值,可以直接在VALUES子句前面不提供列名,也就不用手动填入NULL值了(省略的列必须满足其中一个条件 : 1.该列定义为允许NULL值 2.在表定义中对该列给出了默认值)类似于合并两张所有列属性(列名可不同,只要每一对列的位置相互对应就行)相同的表。如果SELECT语句FROM的表为空,则没有行会插入,合并空表。

2024-09-19 23:58:25 238

原创 全文本搜索

MySQL创建指定列中各词的一个索引,搜索可以针对这些词进行。8、邻近搜索是许多全文本搜索支持的一个特定,它能搜索相邻的词(在相同的句子中,相同段落中或者在特定数目的词的部分中等等),但是MySQL全文本搜索现在不支持邻近操作符。在建立索引后,可以使用两个函数Match()和Against()执行全文本搜索,其中Match()指定被搜索的列,Against()指定要使用的搜索表达式。例如,它返回的结果表,在第一行或前几行会返回直接包含有索引的行,之后就会按顺序返回不包含索引但是包含有第一行的词的行。

2024-09-17 23:52:22 496

原创 MySQL组合查询

在用UNION组合查询时,只能使用一条ORDER BY子句,而且它必须出现在最后一条SELECT语句之后。但当遇到要过滤更加多样条件的数据时,或者从多个表中检索数据,使用UNION可能会使处理更简单。(WHERE只能完成像UNION一样的功能,如果确定需要每个条件的匹配行全部出现,则必须使用UNION ALL)UNION是使用很简单,就是先给出每条SELECT语句,在每条语句之间放上关键字UNION。以上的例子都是比较简单的组合查询,组合的均是相同的表,其实。1.在单个查询中从不同的表返回类似结构的数据。

2024-09-17 16:40:15 429

原创 创建高级联结

别名除了用于列名和计算字段外,SQL还允许该表名起别名。这样做主要有两个理由:1.缩短SQL语句2.允许在单条SELECT语句中多次使用相同的表表的别名不仅可以用于WHERE子句,它还可以用于SELECT的列表、ORDER BY子句以及语句的其他部分。

2024-09-16 16:08:37 353

原创 MySQL联结表

在联结两个表时,你实际上做的是将第一个表中的每一行与第二个表中的每一行配对。没有WHERE子句,第一个表中的每行将与第二个表中的每行配对,得到的就是两张表的笛卡尔积(检索出的行的数目将是第一个表中的行数乘以第二给表中的行数)。要注意的是,WHERE子句中的两个匹配列使用了完全限定名。所以我们在进行联表查询时要保证所有联结都有WHERE子句,并且同时保证WHERE子句的正确性。,外键是某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。联结的创建很简单,规定要联结的所有表以及它们如何关联即可。

2024-09-16 11:02:23 331

原创 使用子查询

涉及外部查询的子查询时一定要注意,使用完全限定名,如在对orders表进行子查询的子句里用到了customers表中的cust_id字段就是orders涉及外部查询。上述步骤都可以作为一个单独的SQL查询来执行,当然我们也可以把一条SELECT语句返回的结果用于另一条SELECT语句的WHERE子句。为了执行该操作,应如下操作。子查询即嵌套在其他查询中的查询。2.对于检索出的每个客户,统计其在orders表中的订单数目。2.检索具有1检索出的商品编号的所有客户ID。3.检索2返回的所有客户ID的客户信息。

2024-09-15 11:08:12 172

原创 MySQL分组与排序

分组是在SELECT语句的GROUP BY子句中创建的。上面的SELECT语句创建了两个列,vend_id表示供应商的编号,num_prods表示供应商对此订单供应了几件商品。GROUP BY子句的几个重要规定:1.GROUP BY子句可以包含任意数目的列。这使得对分组能进行嵌套。2.使用了嵌套分组后,所有分组的列将在一起进行计算。3.GROUP BY子句中的每个列都必须是检索列或有效的表达式(不能是聚集函数)。如果在SELECT语句中使用表达式,则必须GROUP BY子句中也要指定相同的表达式,

2024-09-12 01:21:52 552

原创 MySQL五大聚集函数

MAX()可以找出最大的数值和时间,如果是文本数据,那么MAX()找出的就是按照文本数据列排序后的最后一行。1.使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。2.使用COUNT(column)对特定的列中具有值的行进行计数,忽略NULL值。count()函数可用来计数,用来确定表中行的数目或符合特定条件的行的数目。AVG()可以返回所有列的平均值,也可以返回特定列或行的平均值。MAX() 函数忽略值为NULL的行。MAX()返回指定列中的最大值。

2024-09-09 00:51:18 313

原创 使用MySQL数据处理函数

如果你要的是日期,请使用Date()函数。相应的也存在一个Time()函数,当你只想要时间时应该使用它。如果你想检索九月出生的所有用户要怎么写呢?:可以检索出实际值不同,但发音相近的数据。:用来去除列值右边的空格。一般在项目中不去频繁使用。:用来将文本转化为大写。

2024-09-07 00:41:37 187

原创 SQL语句中通配符%的使用注意事项

总之,通配符的功能十分强大,但是它的搜索是及其耗时的,因此要慎用。如果其他操作符能够完成同样的功能,那么应该使用其他操作符。在搜索子句使用通配符,一定要使用LIKE操作符。LIKE会指示SQL用搜索模式利用通配符匹配而不是直接相等匹配。与%能匹配任意个字符不一样,下划线(_)通配符总是匹配一个字符,不能多也不能少。如果把通配符置于搜索模式的开始处,搜索起来是最慢的,要注意避免。也就是说,%代表搜索模式中给定位置的0个,1个或多个字符。即使时 ’ % ’ 也不能匹配到搜索值为NULL的行。

2024-09-06 20:30:17 436

原创 WHERE子句进行过滤数据

上面这个查询语句我们加入了order by,从结果上看,要根据那个字段进行排序,只要满足该字段是表的列名就行了,也不用跟检索字段保持一致。有时我们仔细观察where子句就会发现,有的值会被单引号’ '给括起来,而有的值没有括。“单引号是用来限定字符串的,如果将值与串类型进行比较,就要用限定单引号,用来和数值列进行比较就不用引号。在上述例子中我们不难发现,过滤条件和你需要的检索字段不是必须要一样的。我们用到的判断某个字段是不是NULL的子句,是IS NULL。两种操作符得到的结果是一样的。

2024-09-05 17:41:46 220

原创 order by排序检索

有时候对某一列我们需要按不止一个列进行排序,例如,对于学生表,我们希望先按照姓排序,再按照名排序。只要我们同时指定姓和名,并把这两个列用逗号隔开就行了。注意:order by 语句应该保证它在FROM子句之后,如果sql使用了limit关键词,limit则必须位于order by之后。数据排序默认为升序(ASC)排列,我们还可以使用DESC关键词来进行降序排列。如果要在多个列上进行降序排列,我们必须对每个列指定关键词DESC。需要注意的是,在MySQL中我们使用非选择列进行排序也是合法的。

2024-09-05 14:57:02 600

原创 SELECT语句

也就时对行进行去重,使用 ’ DISTINCT ‘关键词,’ DISTINCT '关键字它必须放在列名前面。在选择多个列时,要在列名后加上逗号来加以间隔区分,但是最后一个列名后面一定不要加上逗号,不然会报错。注意在MySQL4.1及以前的版本中,对于想数据库名称,列名,表名这些标识符是默认区分大小写的。行0:检索出来的第一行为行0而不是行1,因此,limit1,1返回的是第二行而不是第一行。在行数不够时,MySQL将只返回它能返回的那么多行。使用通配符’ * '来检索所有列。

2024-09-05 11:55:31 174

原创 MySQL的库表列

SHOW CREATE TABLE,分别用来显示创建特定数据库或表的SQL语句。此处可能你会发现我只选择了连接名,而没有选择数据库名。那为什么输入show tables会显示easypan中的表名呢?不要忘记我们一开始就输入过use easypan,表示要使用easypan中的数据了。MySQL支持用Describe作为show columns from的一种快捷方式。SHOW ERRORS和SHOW WARNINGS;用来显示广泛的服务器状态信息。这也是为什么可视化工具能够显示可用的数据库。

2024-09-05 01:01:56 203

原创 编程题(解读Gson库中的方法)

TypeToken 和 listType 主要用于在运行时保留泛型类型信息,使得 Gson 能够正确地将 JSON 数据映射到 Java 对象。这样可以确保 JSON 数据被正确解析为预期的类型结构,而不会出现类型不匹配的问题。TypeToken 通过利用 Java 的匿名内部类来捕获泛型类型的具体信息,并将这些信息传递给 Gson 库,帮助其在运行时正确解析泛型类型的 JSON 数据。这种方式避免了 Java 在运行时类型擦除的问题,使得 JSON 数据能够被准确地转换为目标类型。

2024-08-25 14:48:54 891

原创 位运算

//位运算 /* A = 101101001 B = 010011101 A&B = 000001001 逻辑与(&两边的操作数都为1(true),则该位的结果为1,否则为0) A|B = 111111101 逻辑或(只有|两边的操作数都为0时,结果才为0,其他时候都为1) A^B = 111110100 (相同为0 , 不同为1) ~A = 010...

2020-09-26 15:10:37 99

原创 Java常用运算符

运算符Java语言支持如下运算符算术运算符:+、-、*、/、%、++、–赋值运算符:=关系运算符:> , < , >= , <= , == , != , instanceof逻辑运算符:&& 、 || 、 !位运算符:& 、| 、^ 、~ 、》 、 《 、>>>条件运算符:? 、:扩展赋值运算符:+= 、-= 、*= 、 /=实例01package Base;public class Demo06 { s

2020-09-26 14:40:37 224

原创 Java运算符

运算符Java语言支持如下运算符算术运算符:+、-、*、/、%、++、–赋值运算符:=关系运算符:> , < , >= , <= , == , != , instanceof逻辑运算符:&& 、 || 、 !位运算符:& 、| 、^ 、~ 、》 、 《 、>>>条件运算符:? 、:扩展赋值运算符:+= 、-= 、*= 、 /=实例01package Base;public class Demo06 { s

2020-06-15 17:19:14 249

原创 Java类型转换

类型转换public class Dome04 { public static void main(String[] args) { int a = 127; byte b = (byte)a; //强制转换 (类型)变量名 byte c = (byte)(a+1); //内存溢出 输出-128 System.out.println(a); System.out.println(b); System

2020-06-05 15:27:32 151

原创 JAVA的JDK安装及环境变量配置

JDK安装JDK1.下载JDK安装包2.双击安装3.配置环境变量测试cmd java -version***如果HelloWorld***位运行成功且如上操作均无问题,则可能是控制台下执行命令的路径不对卸载1.删除环境变量(包括path和Java_Home,没添加JAVA_home变量的就直接删去path 就可以了)2.删除java安装目录3.cmd检查:打开控制台输入java- version...

2020-06-04 12:54:19 120

原创 灵活使用控制台

开始CMD的方式开始—WINDOWS系统—命令提示符(可以管理员身份运行)WIN+R键,输入cmd在桌面上按住shift键再右击选择powershell,打开控制台在文件位置处选中文件地址栏,在前面加上cmd加空格,回车(进入指定文件控制台)常用DOS命令1 #盘符切换 eg:d:(就可切换至D盘)2 #查看当前目录下的所有文件 dir3 #切换目录 cd /d 盘符+: cd . .是返回上级4 #清理屏

2020-06-03 16:17:29 203

原创 MarkDown语法简单介绍

大标题(#+空格然后回车)字体HelloWorldHelloWorldHelloWorldHelloWorld引用(英文的大于号加空格)分割线(三个*号或者三个-号)图片超链接点击跳转优快云网站列表ABC(减号加空格)1表格代码1 public...

2020-06-01 16:44:50 154

转载 BIAOTI

MARKDWN使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;

2020-06-01 16:02:41 134

空空如也

空空如也

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

TA关注的人

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