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

news2024/12/24 0:25:29

文章目录

    • MySQL数据库生成自动增长序号
    • MySQL修改密码
    • SpringBoot定时任务
    • 解决Mybatis出现的各种Parameter ' ' not found. Available parameters are [ , ]
    • Mybatis的foreach标签遍历map
    • SpringBoot项目打包
    • SpringBoot @Async使用注意事项
    • Spring Cloud Config bootstrap文件(重要)
    • Fastjson的JSONObject学习
    • Fastjson的parseObject不支持泛型
    • RestTemplate 接收泛型化参数
    • SpringBoot Maven项目打包报 Error assembling JAR错误解决
    • Linux 给文件加可执行权限
    • Spring事务报错: org.springframework.transaction.UnexpectedRollbackException
    • Mybatis这种方式批量插入list,只返回list第一条数据的主键
    • Spring jasypt加密
    • MySQL insert语句使用case when
    • MySQL now()和sysdate()的区别
    • Linux nohup打印日志
    • validation的校验顺序
    • Red Hat、Centos、Ubuntu之间的关系图解
    • CentOS 7 忘记密码解决方法
    • CentOS 7 修改密码的方法
    • CentOS 7关闭防火墙命令

MySQL数据库生成自动增长序号

变量需要每次初始化为0,否则会自增
参考代码:

SELECT (@i:=@i+1) AS orderNo , p.proposition_code AS propositionCode , p.proposition_name AS propositionName
FROM  t_proposition_collect p,(SELECT @i := 0) AS i

参考链接

MySQL修改密码

alter user 'root'@'localhost' identified by '密码';
// 这种方式可能报语法错误
set password for root@localhost = password('密码');

SpringBoot定时任务

在类上使用@EnableScheduling和@Component注解,在方法中使用@Scheduled注解。
@Scheduled注解支持cron表达式。
参考代码如下:

@Slf4j
@EnableScheduling
@Component
public class AchievementRepetitionJob {

    @Autowired
    private RepetitionStorageService repetitionStorageService;

    @Scheduled(cron = "${com.aspire.achievement.repetition.job.insert-into-task.cron:0/20 * * * * ? }")
    public void insertIntoTaskJob() {
        repetitionStorageService.insertIntoTaskJob();
        log.info("查重任务表插入数据 (定时任务)执行完毕");
    }
}

参考链接

解决Mybatis出现的各种Parameter ’ ’ not found. Available parameters are [ , ]

Mybatis中如果有多个参数,在xml中使用参数名会包错。
示例代码:

int updateStatus(Long id, String status);

方法一:

// 增加@Param注解
int updateStatus(@Param("id") Long id, @Param("status") String status);

方法二(推荐):
MyBatis3.5+, 在JDK8下使用新反射特性,若传递多参数时,不使用@Param标注每个参数名,则需开启javac的-parameters编译参数。
在Maven的pom.xml中增加下面的配置:

<plugins>
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-compiler-plugin</artifactId>
		<version>${maven.compiler.plugin.version}</version>
		<configuration>
			<source>${java.version}</source>
			<target>${java.version}</target>
			<compilerArgument>-parameters</compilerArgument>
		</configuration>
	</plugin>
</plugins>

Mybatis 3.5.5正常不会报错 但是某些同事打包还会报错,加上@Param注解双重保险。

参考链接

Mybatis的foreach标签遍历map

遍历map时,index是元素的key,item为元素的value。
示例:

<foreach collection="tagsMap.entrySet()" index="key" item="value">
  and  tags-> #{key} = #{value}
</foreach>

SpringBoot项目打包

1、打包方式注意为jar、父项目为pom

<packaging>jar</packaging>

2、需要引入spring-boot-maven-plugin

<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
	<version>${springboot.plugin.version}</version>
</plugin>

如果打包方式为pom,会少很多文件。

SpringBoot @Async使用注意事项

必须不同类间调用
例如:A类 --> B类的@Async方法,可以异步调用
如果在同一个类中调用,会变同步执行
例如:A类.B()–>A类.@Async C()

原因:
底层实现是代理对注解扫描实现的,B方法上没有注解,没有生成相应的代理类。
当然把@Async加到类上也能解决但所有方法都异步了,一般不这么用。

Spring Cloud Config bootstrap文件(重要)

bootstrap.yml读多个文件时,后面的配置覆盖前面的配置

spring:
  application:
    name: webbas32-manage-v1
  cloud:
    config:
      name: common,webbas32-application-manage-v1
      profile: ${ENV_TYPE:test}
      uri: http://${ENV_CONFIG_IP:10.12.7.124}:${ENV_CONFIG_PORT:8888}
      failFast: true
      enabled: true
  main.allow-bean-definition-overriding: true

webbas32-application-manage-v1-test.yml文件的配置会覆盖common-test.yml文件的配置,所以一般公用配置放在前面。

Fastjson的JSONObject学习

在这里插入图片描述
在这里插入图片描述
Fastjson 的JSONObject实际类型是Map,可以获取、遍历它的key和value。

public class JSONObject extends JSON implements Map<String, Object>, Cloneable, Serializable, InvocationHandler {
}

JSONObject jsonObject = JSONObject.parseObject(contrastResultVo.getDetail());
for(Map.Entry<String, Object> entry: jsonObject.entrySet()){
	JSONObject jsonObjectValue = (JSONObject)entry.getValue();
	BigDecimal prob = jsonObjectValue.getObject("prob", new TypeReference<BigDecimal>(){});
	if(prob != null && prob.compareTo(configRate) > -1 ){
	   String s1 = jsonObjectValue.getObject("s1", new TypeReference<String>(){});
	   String s2 = jsonObjectValue.getObject("s2", new TypeReference<String>(){});
   }
}

参考链接

Fastjson的parseObject不支持泛型

public class ListResult<T>{
	protected String status;
	protected String message;
	private List<T> data;	
}

解决方法一:

// 多转换一次
ListResult rateResult = JSONObject.parseObject(result,ListResult.class);
List<RepetitionRateVo> list =  JSONObject.parseArray(rateResult.getData().toString() ,RepetitionRateVo.class);

解决方法二(推荐):

// 使用泛型化类 TypeReference
ListResult<RepetitionRateVo> list = JSONObject.parseObject(result,new TypeReference<ListResult<RepetitionRateVo>>(){});

参考链接

RestTemplate 接收泛型化参数

示例代码:

ParameterizedTypeReference<ResponseMsg<MemberInfoVo>> typeRef = new ParameterizedTypeReference<ResponseMsg<MemberInfoVo>>() {};
ResponseEntity<ResponseMsg<MemberInfoVo>> result = restTemplate.exchange(findEmployeeUrl, HttpMethod.POST, formEntity, typeRef);
log.info("commonCallUniuser69 接口调用返回数据:{}",result);
if(result != null && result.getBody() != null){
	responseMsg = result.getBody();
}

SpringBoot Maven项目打包报 Error assembling JAR错误解决

需要指定启动类:

<plugins>
	<plugin>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-maven-plugin</artifactId>
		<version>2.3.2.RELEASE</version>
		<configuration>
			<mainClass>com.aspire.achievement.repetition.AchievementRepetitionApplication</mainClass>
		</configuration>
		<executions>
			<execution>
				<goals>
					<goal>repackage</goal>
				</goals>
			</execution>
		</executions>
	</plugin>
</plugins>

Linux 给文件加可执行权限

// 最高权限
chmod 775 文件名
// 可执行权限
chmod +x 文件名

Spring事务报错: org.springframework.transaction.UnexpectedRollbackException

参考链接、参考链接

Mybatis这种方式批量插入list,只返回list第一条数据的主键

示例代码如下:

<insert id="insertList" useGeneratedKeys="true" keyProperty="id">
	<foreach collection="propositionCollectAddList" item="item" separator=";">
		insert into t_proposition_collect
		<trim prefix="(" suffix=")" suffixOverrides=",">
			<if test="item.propositionCode != null">
				proposition_code,
			</if>
			<if test="item.propositionName != null">
				proposition_name,
			</if>
		</trim>
		<trim prefix="values (" suffix=")" suffixOverrides=",">
			<if test="item.propositionCode != null">
				#{item.propositionCode,jdbcType=VARCHAR},
			</if>
			<if test="item.propositionName != null">
				#{item.propositionName,jdbcType=VARCHAR},
			</if>
		</trim>
	</foreach>
</insert>

Spring jasypt加密

添加依赖:

<dependency>
	<groupId>com.github.ulisesbocchio</groupId>
	<artifactId>jasypt-spring-boot-starter</artifactId>
	<version>2.1.0</version>
</dependency>

配置文件修改:

// 公钥
jasypt:
  encryptor:
    password: 15d670c2d2be4dba8f8e1596c5bc457e
// 加密示例	
ENC(v7hGT7XN3unK9TFOr4/oNaxGnPCpIbr6)

MySQL insert语句使用case when

示例sql:

INSERT INTO table_name(id, code, name)
SELECT id, 
       code,
    CASE introduce
        WHEN 1 THEN '2020' 
        WHEN 2 THEN 'Black'
        WHEN 3 THEN 'Manuel' 
    END
FROM table_name_two

MySQL now()和sysdate()的区别

参考链接

Linux nohup打印日志

nohup java -jar  app_name.jar >  /home/log/app_name.log &
nohup java -jar  app_name.jar >> /home/log/app_name-$(date +%Y-%m-%d).log 2>&1 & 2>&1

参考链接

validation的校验顺序

参考链接

Red Hat、Centos、Ubuntu之间的关系图解

在这里插入图片描述
参考链接

CentOS 7 忘记密码解决方法

注意最后面是执行:exec /sbin/init 命令。
参考链接

CentOS 7 修改密码的方法

修改root密码只需要输入passwd命令,然后输入两遍密码即可。
在这里插入图片描述
非root用户密码修改,参考下面链接:
参考链接

CentOS 7关闭防火墙命令

1、命令行界面输入命令systemctl status firewalld.service并按下回车键。

2、然后在下方可以查看得到active(running),此时说明防火墙已经被打开了。

3、在命令行中输入systemctl stop firewalld.service命令,进行关闭防火墙。

4、然后再使用命令systemctl status firewalld.service,在下方出现disavtive(dead),这权样就说明防火墙已经关闭。

5、再在命令行中输入命令systemctl disable firewalld.service命令,即可永久关闭防火墙。

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

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

相关文章

内蒙古自治区出台加快充换电基础设施建设实施方案

摘要&#xff1a;为深入贯彻落实《国务院办公厅关于印发新能源汽车产业发展规划&#xff08;2021—2035年&#xff09;的通知》&#xff08;国办发 ﹝2020﹞39号&#xff09;、《国家发展改革委等部门关于进一步提升电动汽车充电基础设施服务保障能力的实施意见》&#xff08;发…

杭州久斗贸易有限公司官网上线 | LTD酒水行业案例分享

​一、公司介绍 杭州久斗贸易有限公司是集现代化电子商务与传统销售网络于一体的新兴企业。成立于2022年12月&#xff0c;是杭州地区一家专业的酒类销售贸易公司。 公司股东及经营者拥有二十年以上国内名酒销售经验&#xff0c;目前主营茅台.五粮液等高端白酒批发业务&am…

halcon matlab 中pose matrix之间的转换

pose_to_hom_mat3d (TransPose, HomMat3D) 原理&#xff1a; matlab 验证&#xff1a; function [a,b]getMatrix(pose) syms x y z; xdeg2rad(pose(4)); ydeg2rad(pose(5)); zdeg2rad(pose(6)); mat_x[1 0 0 0;0 cos(x) -sin(x) 0;0 sin(x) cos(x) 0; 0 0 0 1]; mat_…

Object.defineProperty到底有啥用

Object.defineProperty Object.defineproperty 的作用就是直接在一个对象上定义一个新属性&#xff0c;或者修改一个已经存在的属性 使用Object.defineProperty之前 number和person之间并无关联 使用Object.defineProperty之后 person和number之间有了关联&#xff1b;修…

1164 Good in C(38行代码+超详细注释)

分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 When your interviewer asks you to write "Hello World" using C, can you do as the following figure shows? Input Specification: Each input file contains one test case. For each case, the …

Ceph 分布式存储

Ceph概述 存储基础 单机存储设备 ●DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机的主板总线上去的存储&#xff09; IDE、SATA、SCSI、SAS、USB 接口的磁盘 所谓接口就是一种存储设备驱动下的磁盘设备&#xff0c;提供块级别的存储 ●NAS&#xff08;网络附加存…

jwt----介绍,原理

token&#xff1a;服务的生成的加密字符串&#xff0c;如果存在客户端浏览器上&#xff0c;就叫cookie -三部分&#xff1a;头&#xff0c;荷载&#xff0c;签名 -签发&#xff1a;登录成功&#xff0c;签发 -认证&#xff1a;认证类中认证 # jwt&…

火伞云全球节点分布国家及城市列表

火伞云融合CDN划分为中国境内和中国境外两个服务区域。 中国境内区域为中国大陆全地区统一计费&#xff08;不含港澳台&#xff09;&#xff0c;全球用户访问均会调度至中国内地加速节点进行服务。 中国境外区域&#xff0c;按CDN 节点服务器所在地区&#xff0c;划分为北美地…

uni-app使用echarts绘制数据可视化图

先打开项目 然后选择 使用命令行窗口打开所在目录(U) 在弹出的终端中输入指令来引入依赖 npm install echarts然后 我们 打开echarts的官网 点击这里这个 示例 找一个自己喜欢的案例点进去 我这里就用一个最简单的吧 代码看着不会乱 将他这个 option中的内容复制出来 然后…

重塑未来:科技创新驱动社会变革

科技创新驱动社会变革 前言正文一、人工智能&#xff08;AI&#xff09;&#xff1a;智能技术的崛起二、区块链技术&#xff1a;去中心化的数字经济三、量子计算&#xff1a;开启未来的大门四、生物技术&#xff1a;拓展医学与农业的边界 总结 前言 近年来&#xff0c;科技领域…

Python开发工具PyCharm入门指南 - 如何创建密码短语生成器(下)

PyCharm是一种Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外&#xff0c;该IDE提供了一些高级功能&#xff0c;以用于Django框架下的专业Web开发。 PyCharm 最新版下载 在上篇文章中&#xff0c;我们学习了密码短语、密码短语…

统信UOS系统开发笔记(二):国产统信UOS系统搭建Qt开发环境安装Qt5.12

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/130984263 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

得物人事系统时间轴设计的演化历程

1 什么是时间轴 ~&#xff08;以上图片出自电影《星际穿越》&#xff09;~ 如果你看过《星际穿越》&#xff0c;应该对这一幕印象深刻&#xff0c;女儿墨菲所处的房间&#xff0c;按照时间分为了无数个三维空间实体。三维空间加时间组合成四维空间&#xff0c;即时空。 时间轴…

奇怪,能ping通怎么还是上不了网?

我的网工朋友大家好啊 一般如果遇到没法上网的问题&#xff0c;你会怎么办。 可能会尝试去使用ping命令来测试一下网络是不是正常&#xff0c;对吧&#xff1f; 但是有时候会出现&#xff0c;ip能ping通&#xff0c;但是就是无法上网&#xff0c;应该大部分网工都遇到过这种…

虚实连接:惯性动作捕捉系统系列产品多领域广泛应用

近年来&#xff0c;将人体数字化融入虚拟世界已经成为一股浪潮&#xff0c;特别聚焦于姿态动作捕捉和人体运动学分析。此时建立准确的虚拟与现实数字模型&#xff0c;并研究运动参数和力学参数的关联至关重要。同时可推动虚拟现实和人机交互的发展&#xff0c;拓展医疗康复、体…

【Atlas200】继承MxBase类自制插件(C++),以官方例程为例

目录 MindX SDK简介插件的Buffer与Metadata自定义插件Init初始化接口DeInit资源释放接口Process插件入口DefineProperties接口DefineInputPorts接口MindX SDK简介 MindX是一款针对昇腾系列AI芯片的软件开发工具包(SDK),它提供了一系列的API和工具,帮助开发者对昇腾系列AI芯…

1、 快速入门

0、回顾jdbc操作数据库 在MySQL数据库创建一数据库实例mybatis&#xff0c;在其创建一张表 CREATE TABLE employee(id INT(11) PRIMARY KEY AUTO_INCREMENT,last_name VARCHAR(255),gender CHAR(1),email VARCHAR(255) ); -- 再插进一条随意数据&#xff0c;用于测试 INSERT …

day5 -- 函数

学习内容 MySQL支持何种函数&#xff0c;以及如何使用这些函数 brief 大多数SQL实现支持以下类型的函数&#xff1a; 用于处理文本串&#xff08;如删除或填充值&#xff0c;转换值为大写或小写&#xff09;的文本函数用于在数值数据上进行算术操作&#xff08;如返回绝对值…

Linux 6.2 系列生命周期已结束

导读Linux 6.2 系列内核已结束生命周期&#xff0c;在 kernel.org 上被标记为 EOL &#xff0c;这意味着该版本不会再有任何新功能、Bug 修复或安全补丁。 Linux 6.2 于 2023 年 2 月底正式发布&#xff0c;是一个非 LTS 版本&#xff0c;只有为期三个月的支持&#xff0c;在维…