工作笔记
RestTemplate使用详解
https://blog.csdn.net/Sophia_0331/article/details/121196840
数、HTTP响应转换被转换成的对象类型
使用restTemplatej河restu接口非常的简单粗暴无脑。(url.reouestBean. ResponseBean.cass )这三个参数分别代表 请求地址、请求参
CONVERT(bs.sku_name USING gbk) COLLATE gbk_chinese_ci, SUBSTR(CONVERT(bs.sku_name USING gbk), 1, 1) COLLATE gbk_chinese_ci ASC,
这里的 CONVERT
函数将 bs.sku_name
中的中文转换为拼音,使用 gbk
编码进行转换,COLLATE gbk_chinese_ci
指定了排序规则,确保中文的排序是按照拼音的顺序进行的。SUBSTR
函数提取了拼音的首字母,COLLATE gbk_chinese_ci
同样指定了排序规则,确保按照拼音首字母的顺序进行排序。这样就可以将 bs.sku_name
中的中文名称按照首字母升序排序了。
HAVING
关键字:用于在 GROUP BY 分组查询中对分组后的结果进行过滤。与 WHERE 关键字不同的是,HAVING 关键字可以使用聚合函数和分组条件进行过滤。HAVEN
函数:MySQL 中没有这个函数,可能是您输入有误或者是其他数据库系统中的函数。- 字符串函数:MySQL 中有很多用于处理字符串的函数,比如 CONCAT、SUBSTR、LENGTH、LOWER、UPPER 等。这些函数可以用于拼接字符串、截取子串、计算字符串长度、转换大小写等操作。
- 数学函数:MySQL 中也有很多用于处理数字的函数,比如 ABS、ROUND、CEILING、FLOOR、MOD 等。这些函数可以用于计算绝对值、四舍五入、向上取整、向下取整、取模等操作。
- 日期时间函数:MySQL 中还有很多用于处理日期时间的函数,比如 DATE、TIME、NOW、YEAR、MONTH、DAY、HOUR、MINUTE、SECOND 等。这些函数可以用于获取当前日期时间、提取日期时间的年、月、日、时、分、秒等部分。
用java对中文首字母排序
您可以使用 Java 中的 Collator 类来对中文进行排序。Collator 是 Java 的国际化类,可用于比较和排序文本。
以下是一个示例,该示例使用 Collator 类对中文字符串进行排序:
1 | import java.text.Collator;import java.util.Arrays;import java.util.Locale; public class Main { public static void main(String[] args) { // 定义要排序的中文字符串数组 String[] strings = { "中国", "美国", "日本", "韩国" }; // 使用 Collator 类的静态工厂方法 getInstance() 获取 Collator 对象 Collator cnCollator = Collator.getInstance(Locale.CHINA); // 使用 Collator 类的 compare() 方法对字符串数组进行排序 Arrays.sort(strings, cnCollator); // 输出排序后的字符串数组 for (String s : strings) { System.out.println(s); } }} |
MYSQL函数,枚举清晰
(1)if(expr,v1,v2)
若expr返回true则返回v1否则v2
(2)ifnull(v1,v2)函数
IFNULL(v1,v2)加入v1不为null,则IFNULL()的返回值为V1;否则其返回值为v2。
IFNULL的返回值是数字还是字符串,根据其具体的语境而定。
MySQL之case when than else end 函数
Case具有两种格式。简单Case函数和Case搜索函数。
CASE sex
WHEN ‘1’ THEN ‘男’
WHEN ‘2’ THEN ‘女’
ELSE ‘保密’ END
Case搜索函数;判别式条件,有点类似Java的if….else….的感觉
CASE WHEN sex = ‘1’ THEN ‘男’
WHEN sex = ‘2’ THEN ‘女’
ELSE ‘保密’ END
case 后跟一个字段,when当某某条件时…than执行某某…else否则就怎样,一定不能少了结束条件end
时间格式排版示例:
CASE
WHEN doc_asn_header.expect_reach_time = ‘0001-01-01 00:00:00’ THEN NULL
WHEN doc_asn_header.expect_reach_time IS NOT NULL AND doc_asn_header.expect_reach_end_time IS NULL
THEN DATE_FORMAT(doc_asn_header.expect_reach_time, ‘%Y-%m-%d %H:%i:%s’)
WHEN DATE(doc_asn_header.expect_reach_time) != DATE(doc_asn_header.expect_reach_end_time)
THEN CONCAT(DATE_FORMAT(doc_asn_header.expect_reach_time, ‘%Y-%m-%d %H:%i:%s’), ‘ ~ ‘, DATE_FORMAT(doc_asn_header.expect_reach_end_time, ‘%Y-%m-%d %H:%i:%s’))
ELSE CONCAT(DATE_FORMAT(doc_asn_header.expect_reach_time, ‘%Y-%m-%d %H:%i:%s’), ‘ ~ ‘, DATE_FORMAT(doc_asn_header.expect_reach_end_time, ‘%H:%i:%s’))
END AS expectReachTimeFormat
6、MySQL之IF函数
IF函数根据判别式是否成立进行选择执行,成立执行前面的语句,不成立执行后面的语句;
IF(conditional, value_if_true, value_if_false);
7、MySQL排序函数RANK
窗口函数用法:
<窗口函数> OVER ( [PARTITION BY <列清单> ] ORDER BY <排序用列清单> )
在计算排序时,若存在相同位次,会跳过之后的位次。
例如,有3条排在第2位时,排序为:1,2,2,2,4······
2、DENSE_RANK()
这就是题目中所用到的函数,在计算排序时,若存在相同位次,不会跳过之后的位次。
例如,有3条排在第1位时,排序为:1,1,1,2······
3、ROW_NUMBER()
这个函数赋予唯一的连续位次。
例如,有3条排在第1位时,排序为:1,2,3,4······
相信自己😘
8、MySQL聚合函数
注意:聚合函数不能嵌套调用。比如不能出现类似***AVG(SUM(字段名称))***形式的调用。
见名思意 求平均值
AVG()
求和
SUM()
求最大值
MAX()
求最小值
MIN()
统计一组数据的个数
COUNT()
聚合函数一般搭配分组函数group by使用,可以解决很多问题,本人是屡试不爽 😄
如果对聚合后的数据还要进行条件筛(shai)选,就需要用到having
例如:题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 第1050题
至少合作过三次的导演,对演员和导演进行分组查询之后,要有一个条件就是需要他们至少合作过三次以上,所以加上 having count(0) >2 【这地方有我自己老是忘记的点为什么 count(0)>2;其实写成count(0)>=3更容易理解一些,count(0)>2,在2的上面那个数不就是3么🤣】
select actor_id, director_id from ActorDirector group by actor_id, director_id having count(0) >2;
模板的列表没有数据
看sql查询语句有没有这个字段然后看有没有查出来数据都没问题
再看字段映射和实体类字段,有没有判空或者格式化,最后看判断条件
stream并发流计算单个箱数并完成详情统计使用示例:
1 |
|
log.info(“vo 查询出来的 headderPage 分页:” + headerIPage);
return headerIPage;
}
字段格式化
@JsonFormat(targetType = StringUtil.LOCALDATETIME)
targetType = StringUtil.LOCALDATETIME此处可以用enum枚举类
字段上枚举类使用
在循环里判空的时候如果某个字段为空则可以用continue;跳过此次计算,因为是空的不需要计算而且可以提高性能
养成一个好习惯,不用正式的数据库就关闭链接!!!
注意统计数量和计算单个数量有点细节差别,主要是在除法的四舍五入上,计算单个数量然后在统8计,那么统计的过程不要四舍五入,等统计完再四舍五入。(计算统计总箱数时发现的细节)
调用别人的写的工具类特别是时间格式化工具类,最好点进去看一下是否是按要求格式化(坑)
@RequestBody(required = false)
是Spring框架中用于标记一个方法参数的注解。它用于指定一个请求体参数,并指示该参数是否是必需的。
在Spring框架中,当你使用@RequestBody
注解标记一个方法参数时,它表示该参数将从请求的主体中提取数据。默认情况下,@RequestBody
注解要求请求主体中必须包含该参数的数据。如果请求主体中没有提供该参数的数据,将会抛出异常。
查询类的功能,可以用正式数据测试查询以确保上线没有问题
1 | DocOrderDetail targetDetail = new DocOrderDetail(); |
即使id被设置为null,但是
@TableId(value = “order_detail_id”, type = IdType.AUTO)
private Long orderDetailId;
在代码里是自增的所有还是能拿到新增之后的id,记住哈
从k8s命令行界面复制出来的json数据可以放大https://oktools.net/进行格式化,前提是json数据是对的,当然这里因为没看到json包含两个单子,导致被吊
https://mp.weixin.qq.com/s/J8sk7YUVZHg8OjQSPr5LAw
在 Java 中,将一个 null 变量与空字符串(””)相加会得到一个字符串 “null”。这是因为在 Java 中,将任何对象(包括 null)与一个字符串相加时,会将该对象转换为字符串形式,然后进行字符串拼接操作。
例如:
1 | String result = null + ""; |
在这个例子中,null 被转换为字符串 “null”,然后与空字符串相加,得到的结果是字符串 “null”。
因此,如果你有一个 null 的变量,将其与空字符串相加会得到一个非空的字符串 “null”。这可能会对你的业务逻辑产生影响,因此在处理这种情况时需要格外注意。
这三种类型的连接是在关系型数据库中常见的连接操作,它们在连接两个表时有不同的行为。
- Inner Join(内连接):
- 内连接返回两个表中满足连接条件的行。即,只有当连接条件在两个表中都存在时,才会返回结果。
- 如果表 A 和表 B 分别有 m 和 n 行,且它们有共同的连接键,则内连接的结果最多会有 min(m, n) 行。
- Left Join(左连接):
- 左连接返回左表中的所有行,以及右表中满足连接条件的行。如果右表中没有匹配的行,那么会在结果中显示为 NULL 值。
- 换句话说,左连接会保留左表中的所有行,即使右表中没有与之匹配的行。
- Join(等同于 Inner Join):
- 在一些数据库系统中,JOIN 关键字默认表示内连接。
这里是一个简单的示例,假设有两个表 A 和 B,它们通过某个共同的键进行连接:
- Inner Join:只返回 A 和 B 中共同存在的键的行。
- Left Join:返回 A 中所有的行,以及 A 中与 B 中共同存在的键的行,如果 B 中没有匹配的行,则在结果中显示为 NULL 值。
这些连接类型在实际数据库查询中经常被使用,以便根据不同的需求来获取合适的数据。
String.format()是Java中一个用于格式化字符串的方法。它允许我们在字符串中插入变量并指定格式化的方式。
下面是一个使用String.format()的示例:
1 | String name = "Fengfeng"; |
在上面的示例中,我们使用String.format()方法创建了一个格式化的字符串。在字符串中,我们使用占位符 %s
表示一个字符串变量,%d
表示一个整数变量。在String.format()方法的后面,我们按顺序提供了要替换占位符的变量,这里是name和age。最终,String.format()方法将占位符替换为实际的变量值,并返回格式化后的字符串。
上述示例的输出将会是:My name is Fengfeng and I am 18 years old.
使用String.format()可以方便地将变量插入到字符串中,并指定它们的格式。你可以使用各种类型的占位符,例如 %s
(字符串)、%d
(整数)、%f
(浮点数)、%b
(布尔值)等。
在该别人的代码前不要随便删除任何一行不起眼的代码,因为有可能是关键bug
默认情况下,当生产者将消息发送到RabbitMQ的时候,队列中的消息会尽可能的存储在内存之中,这样可以更加快速的将消息发送给消费者。即使是持久化的消息,在被写入磁盘的同时也会在内存中驻留一份备份
我们可以配置允许rabbitmq使用的最大内存是多少,当达到最大内存时,rabbitmq将会阻塞生产者继续发送消息给它
多线程事务
当在查询语句中使用 FOR UPDATE
时,数据库会对查询结果中的行或表进行锁定,以防止其他事务对这些行或表进行修改。这种锁定方式称为行级锁或表级锁,具体取决于数据库的实现。