Java程序猿搬砖笔记(十四)

news2024/11/18 0:04:36

文章目录

    • MySQL自定义排序
      • 用locate本质是数字排序
      • case when then...语法排序
      • field()函数排序
    • 阿里云Maven镜像仓库无法下载spring-cloud-dependencies依赖问题
    • MySQL更新同一个表的同个字段
      • 解决方法一(推荐)
      • 解决方法二
    • SpringBoot返回的JSON中的null转换为空字符串
    • Spring的相关注解
    • MySQL JSON对象、数组查询
      • JSON对象查询
      • JSON数组查询
    • Nacos的配置自动刷新
      • @Value注解读取配置
      • @ConfigurationProperties(prefix = "user")注解注入实体类 读取配置
    • Nacos基于profile粒度的多环境配置
    • Nacos服务配置数据模型
    • Nacos数据持久化
      • 解决Nacos 1.3.1连接MySQL 8数据库报错
    • Spring事务机制
    • Spring事务嵌套和传播行为
    • Spring事务失效场景
    • MySQL 8修改用户密码
    • Validation支持同时加两个@Pattern注解
    • Validation自定义注解实现:不为空才进行正则表达式校验
    • Linux防火墙给某个端口添加指定ip
    • Mysql order by中使用case when
    • 批量导入MySQL报错
    • 鼠标右键没有360压缩菜单的解决

MySQL自定义排序

用locate本质是数字排序

用locate本质是数字排序,可以先把数字打印出来

SELECT id, second_class, LOCATE(second_class, '【现场发布】世界互联网大会领先科技成果,世界互联网大会领先科技成果,国际电联WSIS奖-Winner(最高项目奖),国际电联AI/ML in 5G大赛奖,国际电联WSIS奖-Winner(大奖)') AS sort
FROM t_awards
WHERE award_type = '8' AND top_class = '国际奖项';

不存在与LOCATE中的记录,结果集会放到最前面。
建议用倒序排。

case when then…语法排序

SELECT id, second_class,
	   case
		   when second_class = '【现场发布】世界互联网大会领先科技成果' then 20
		   when second_class = '世界互联网大会领先科技成果' then 18
		   when second_class = '国际电联WSIS奖-Winner(最高项目奖)' then 16
		   ELSE -1 END as sort
FROM t_awards
ORDER BY sort desc

field()函数排序

ORDER BY FIELD(second_class,'【现场发布】世界互联网大会领先科技成果','世界互联网大会领先科技成果','国际电联WSIS奖-Winner(最高项目奖)') desc;

不存在与field中的记录,结果集会放到最前面。
建议用倒序排。

参考链接

阿里云Maven镜像仓库无法下载spring-cloud-dependencies依赖问题

http://maven.aliyun.com/nexus/content/groups/public/
上面这个url下载不了,更换url链接即可:

<mirror>
  <id>nexus-aliyun</id>
  <mirrorOf>central</mirrorOf>   
  <name>Nexus aliyun</name>
  <url>https://maven.aliyun.com/repository/public</url> 
</mirror>

参考链接

MySQL更新同一个表的同个字段

MySQL在同一SQL语句中,如果不能先查询出表中的某些值,再update这个表。
例如:

// 这样做会报错:You can't specify target table 'table name' for update in FROM clause。
UPDATE 表A
SET 字段A = (SELECT 字段B FROM 表A)

解决方法一(推荐)

update1 a1 
inner join (select 字段1,字段2 from1 where 条件) a2 on 条件
set a1.字段1 = a2.字段2 

解决方法二

创建一张临时表

参考链接

SpringBoot返回的JSON中的null转换为空字符串

Jackson自定义序列化null值处理(处理数组、list、array、set类型的null值)
springboot中返回值json中null转换空字符串

Spring的相关注解

@ConditionalOnMissingBean
@ConditionalOnProperty
@ConditionalOnBean
@Primary
参考链接

MySQL JSON对象、数组查询

JSON对象查询

  • 使用对象操作的方法进行查询:字段->‘$.json属性’
  • 使用函数进行查询:json_extract(字段, ‘$.json属性’)
  • 获取JSON数组/对象长度:JSON_LENGTH()

JSON数组查询

  • 对象操作方式查询:字段->‘$[0].属性’
  • 使用函数查询:JSON_CONTAINS(字段,JSON_OBJECT(‘json属性’, ‘内容’))
  • 获取JSON数组/对象长度:JSON_LENGTH()

示例:

// detail_list为JSON数组字段 flowKey、opened为数组中的对象属性
select json_contains(detail_list, json_object('opened', '1')) as opened 
from t_flow_path 
where json_contains(detail_list, json_object('flowKey', 'threeLeaderAudit'));

参考链接

Nacos的配置自动刷新

@Value注解读取配置

在该类上添加@RefreshScope注解

@ConfigurationProperties(prefix = “user”)注解注入实体类 读取配置

默认支持自动刷新配置

Nacos基于profile粒度的多环境配置

读取(Data Id)文件格式:

${spring.application.name}-${spring.profiles.active}.${nacos.config.file-extension}

比如在Nacos上新增一个Data Id为:nacos-config-dev.yaml的基础配置
需要在项目的配置文件中增加

   spring.profiles.active=dev 

激活配置

Nacos服务配置数据模型

在这里插入图片描述
一共有三种配置方案:
1、
默认命名空间(public) + 默认Group分组(DEFAULT_GROUP) + 自定义Data Id(没有默认值)
2、
默认命名空间 + 自定义Group分组 + 自定义的Data Id(没有默认值)
3、
自定义命名空间 + 自定义Group分组 + 自定义的Data Id(没有默认值)

详情可以参考20200804课件.docx

Nacos数据持久化

解决Nacos 1.3.1连接MySQL 8数据库报错

解决方法如下:
第一步:在nacos安装目录下新建plugins/mysql文件夹,并放入mysql-connector-java-8.0.18.jar
在这里插入图片描述

我的数据库是8.0.27,用这个包可以连接上。
windows和linux都需要做这一步。

第二步:修改conf/application.properties文件中的数据库信息。注意需要修改url链接。

#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://10.1.128.188:3306/nacos_config?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
db.user=root
db.password=

注意url ?号后的内容需要修改,nacos默认的连接Mysql 8会报错

解决Nacos无法连接Mysql8.0+的问题(坑爹的阿里官方文档,已无力吐槽)

Spring事务机制

  • Spring事务底层是基于数据库事务和AOP的,Spring事务隔离级别对应的是数据库的隔离级别。
  • Spring事务的传播行为是自己实现的,也是Spring事务中最复杂的。
  • Sprino事务的传播机制是基于数据库连接来做的,一个数据库连接一个事务,如果传播机制配置为需要新开一个事务,那人实际上就是先建立一个
    数据库连接,在此新数据库连接上执行sql。

Spring事务嵌套和传播行为

  • 在同一个类中事务嵌套,最终的结果应该是取决于最外层的方法事务的传播特性。
  • 在不同的类的事务嵌套,外层的方法按照外层的事务传播属性执行,内层的传播属性按照内层的传播属性的特点去运行。注意:内层方法如果没有加事务注解会以外层方法事务为准,内层方法如果加了事务注解会以内层方法事务为准。
    事务嵌套和传播行为

Spring事务失效场景

  • 事务方法访问修饰符不是public。
  • 事务方法是static、final的。
  • 事务方法中的异常被catch后,没有再次抛出新的异常。
  • 操作的数据库表如果本身不支持事务。
  • 多线程的调用导致事务失效。
    有两种解决方法:1、可以使用thread.setUncaughtExceptionHandler方法来处理线程内部的异常。 2、外层方法使用FutureTask,并且抛出ExecutionException, InterruptedException。

事务失效场景

MySQL 8修改用户密码

-- 修改密码
alter user 'root'@'%' IDENTIFIED BY '新密码';
-- 刷新权限
flush privileges;

参考链接

Validation支持同时加两个@Pattern注解

@Pattern(regexp = "111|3", message = "奖项等级类型有误1")
@Pattern(regexp = "111|4", message = "奖项等级类型有误2")
private String topClass;

Validation自定义注解实现:不为空才进行正则表达式校验

/**
 * 自定义注解整合 javax.validation:不为空才进行正则表达式校验
 *
 * @author liquanhong
 * @createTime 2023/05/26
 */
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = NotBlankThenPattern.NotBlankThenPatternValidation.class)
@Documented
public @interface NotBlankThenPattern {

    String regexp() default "";

    String message() default "格式错误";

    /**
     * @return the groups the constraint belongs to
     */
    Class<?>[] groups() default {};

    /**
     * @return the payload associated to the constraint
     */
    Class<? extends Payload>[] payload() default {};


    class NotBlankThenPatternValidation implements ConstraintValidator<NotBlankThenPattern, String> {

        private Pattern pattern;

        @Override
        public void initialize(NotBlankThenPattern constraintAnnotation) {
            this.pattern = Pattern.compile(constraintAnnotation.regexp());
        }

        @Override
        public boolean isValid(String value, ConstraintValidatorContext context) {
            if (StringUtil.isEmpty(value)) {
                return true;
            }
            return pattern.matcher(value).matches();
        }
    }
}

其中StringUtil.isEmpty可以用其他框架的。

Linux防火墙给某个端口添加指定ip

sudoroot:<42&x24<3T{/}5#6

sudo firewall-cmd --list-all
sudo firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.1.121.76" port protocol="tcp" port="9002" accept"
sudo firewall-cmd --reload

Mysql order by中使用case when

需求:
在这里插入图片描述

**实现逻辑:**只管未分配专家的数据,分配了专家的数据按后面的字段排序。
代码如下:

order by
case when awardExpert.id is null then 1 else 2 end,
apply.submit_time desc,apply.id,expert.update_time desc;

批量导入MySQL报错

Connection memory limit 50331648 bytes exceeded. Consumed 81426016 bytes.
; uncategorized SQLException; SQL state [HY000]; error code [4082]; Connection closed. Connection memory limit 50331648 bytes exceeded. Consumed 81426016 bytes

问题原因:
MySQL 8用户连接内存限制,设置单个用户连接可以使用的最大内存量(默认16MB)。如果任何用户连接使用超过这个数量,任何来自该连接的新查询都会被ER_CONN_LIMIT拒绝。

  • 此限制不适用于系统用户或root帐户;
  • InnoDB缓冲池使用的内存也不包括在内。
    就是说限制临时内存,排序,链接等内存

解决方法:
MySQL> set global connection_memory_limit=可以使用的最大内存(字节);

附: 查询单个用户连接可以使用的最大内存量SQL语句
select @@connection_memory_limit;

参考链接、参考链接

鼠标右键没有360压缩菜单的解决

确保电脑管家没有禁止自启动:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/633826.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenGL光照之光照贴图

文章目录 漫反射贴图镜面光贴图放射光贴图代码 每个物体都拥有自己独特的材质从而对光照做出不同的反应的方法。这样子能够很容易在一个光照的场景中给每个物体一个独特的外观&#xff0c;但是这仍不能对一个物体的视觉输出提供足够多的灵活性。 我们将整个物体的材质定义为一个…

Linux命令:lsof

目录 一、理论 1.lsof 二、实验 1.无参数 2.-p 参数 3.-l 参数 4. -u 参数 5.-c 参数 6.-d 参数 7.fileName 8. -i 参数 一、理论 1.lsof (1)概念 命令 lsof &#xff08; list opened files &#xff09;负责列出系统中已经打开的文件&#xff0c;包括普通文件&a…

【uni-app】使用uni-app实现简单的登录注册功能

文章目录 前言一、页面布局二、注册页面1.注册接口使用2.注册成功提示3.注册成功页面跳转4.完整代码 三、登录页面1.登录接口使用2.本地存储使用3.完整代码 总结 前言 大家好&#xff0c;今天和大家分享一下如何在uni-app中实现简单的登录注册功能。 首先你需要掌握一下知识点…

【SQL Server】数据库开发指南(九)详细讲解 MS-SQL 触发器的的创建、修改、应用与适用场景

本系列博文还在更新中&#xff0c;收录在专栏&#xff1a;#MS-SQL Server 专栏中。 本系列文章列表如下&#xff1a; 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南&#xff08;一&#xff09;数据库设计的核心概念…

UE特效案例 —— 火堆

一&#xff0c;环境配置 创建默认地形Landscape&#xff0c;如给地形上材质需确定比例&#xff1b;添加环境主光源DirectionalLight&#xff0c;设置相应的强度和颜色&#xff1b;PostProcessVolume设置曝光&#xff0c;设置Min/Max Brightness为1&#xff1b; 与关闭Game Sett…

03并发进程

文章目录 哲学家进餐问题1.利用结构型信号量解决哲学家进餐问题解决方案1&#xff1a;每次最多允许四位哲学家就餐 2.利用AND型信号量解决哲学家进餐问题 生产者-消费者问题1.利用结构型信号量解决生产者-----消费者问题单缓冲区生产者-消费者问题多缓冲区 2.利用AND型信号量解…

高并发编程:并发容器

一、概述 常见的容器如下图&#xff0c;我们会挑选高并发中常用的容器进行介绍。 二、ConcurrentHashMap 个ConcurrentHashMap提高效率主要提高在读上面&#xff0c;由于它往里插的时候内部又做了各种各样的判断&#xff0c;本来是链表的&#xff0c;到8之后又变成了红黑树&a…

详细讲解!selenium:解决页面元素display:none的方法

目录 前言&#xff1a; 1、具体问题 2、解决方案 代码解析&#xff1a; 结尾&#xff1a; 前言&#xff1a; 在进行 Web 自动化测试时&#xff0c;页面元素的可见性对测试结果的准确性和稳定性至关重要。然而&#xff0c;有些时候页面元素会被设置为 display:none&#x…

亚马逊云科技出海日,助推出海业务全球拓展突飞猛进

出海路漫漫&#xff0c;企业开拓全球市场而孤军奋战&#xff0c;常常会感到力不从心。好的产品有了&#xff0c;渠道有了&#xff0c;供应链有了&#xff0c;还要自己从0-1搭建存储、网络和架构&#xff1f;营销季来了想趁机冲一波销量&#xff0c;还要自己运维本地IDC、大促来…

10.无监督学习之K-means算法

10.1 无监督学习的定义 监督学习&#xff1a;我们有一些列标签&#xff0c;然后用假设函数去拟合它 无监督学习&#xff1a;给出的数据不带任何标签。对于无监督学习来说&#xff0c;需要做的就是将数据输入到算法中&#xff0c;让算法找到一些隐含在数据中的结构&#xff0c;通…

C语言—程序环境和预处理

程序环境和预处理 程序的翻译环境和执行环境编译、链接翻译环境编译预处理&#xff08;预编译&#xff09;编译汇编 链接 编译环境几个阶段的总结 运行环境&#xff08;执行环境&#xff09;预处理详解预定义符号#define#define 定义标识符#define 定义宏#define 替换规则#和##…

【MySQL】数据库中表的操作详解

【MySQL】数据库表的基本操作 一、表的创建二、查看表结构三、修改表结构3.1 添加表中字段3.2 修改表中字段3.3 删除表中字段3.4 修改表名3.5 修改列名 四、删除表 温馨提示&#xff1a;这里的表操作指的是表结构的操作&#xff0c;属于DDL数据定义语言 一、表的创建 CREATE …

hooks组件+例子+底层机制

1.React组件分类 函数组件 1.不具备"状态、ref、周期函数"等内容&#xff0c;第一次渲染完毕后&#xff0c;无法基于组件内部的操作来控制其更新&#xff0c;因此称之为静态组件!。但是具备属性及插槽&#xff0c;父组件可以控制其重新渲染 2.渲染流程简单&#xff…

Same Symbol | 哇咔咔!!!盘点一下表达矩阵中重复基因的处理方法!~

1写在前面 医院天天叫我们填问卷&#xff0c;我真是不能理解。&#x1fae0; 动不动就问我们对医院的福利满意吗&#xff0c;对自己的收入满意吗&#xff0c;觉不觉得工作负荷太重了&#xff1f;&#xff1f;&#xff1f;&#x1f642; 我们满不满意&#xff0c;觉不觉得累&…

大学物理(上)-期末知识点结合习题复习(2)——运动的描述考点总结、质点运动学-牛顿运动定律

目录 运动的描述 期末考点 质点运动学 牛顿运动定律知识点 题1(牛顿第二定律) 题目描述 题解 题2 (圆周运动) 题目描述 题解 运动的描述 期末考点 1.速度和加速度的推导 平均速度平均速度反映的只是在一段时间内位移的变化&#xff0c;如果需要精准的地知道质点在…

chatgpt赋能python:Python如何判断奇偶数?

Python如何判断奇偶数&#xff1f; 作为一门功能强大且容易上手的编程语言&#xff0c;Python具有许多有用的工具和功能。其中之一就是判断奇偶数。在本文中&#xff0c;我们将介绍Python中判断奇偶数的不同方法。 H1&#xff1a;Python中的基本判断方法 Python中最基本的判…

(八)CSharp-泛型协变和逆变(3)

一、协变和逆变 可变性分为三种&#xff1a; 协变、逆变和不变。 协变和逆变&#xff1a; 为泛型接口和泛型委托添加了一个处理类型转换问题的扩展。 问题&#xff1a; 当两个类对象是继承与派生的关系时&#xff0c;由于编译器通过泛型实例化时没法确认它们之间的关系&…

(数组) 1991. 找到数组的中间位置 ——【Leetcode每日一题】

❓1991. 找到数组的中间位置 难度&#xff1a;简单 给你一个下标从 0 开始的整数数组 nums &#xff0c;请你找到 最左边 的中间位置 middleIndex &#xff08;也就是所有可能中间位置下标最小的一个&#xff09;。 中间位置 middleIndex 是满足 nums[0] nums[1] ... num…

FTP协议详解

文章目录 1 FTP概述2 实验环境3 FTP详解3.1 文件传输过程3.2 报文格式3.3 数据连接3.4 主动模式3.5 被动模式3.6 匿名服务器 4 总结 1 FTP概述 FTP为File Transfer Protocol的缩写&#xff0c;即文件传输协议&#xff0c;是TCP/IP 协议族中的协议之一。FTP是一个用于在计算机网…

算法模板(3):搜索(3):图论提高

图论提高 最小生成树 &#xff08;1&#xff09;朴素版prim算法&#xff08; O ( n 2 ) O(n ^ 2) O(n2)&#xff09; 适用范围&#xff1a;稠密图易错&#xff1a;注意有向图还是无向图&#xff1b;注意有没有重边和负权边。从一个集合向外一个一个扩展&#xff0c;最开始只…