记录下工作到现在接收到的知识,遇到的问题。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

进入公司至今马上一年。记录下接收到的知识。
文章写给自己看,会比较乱(自身知识体系不够成熟)。也可能有错误的地方


一、框架

1.springboot集成

1.1 中间件

RedisTemplate:springframework中操作redis的工具类,封装的有正常的存取操作。
Redission:第三方封装的redis工具类。 有对锁的封装。
redis的应用方面:目前项目中存的东西包括 => token,一些常用切基本不变的字典,项目启动时防止多个定时任务同时进行而发生数据错误的问题(key:时间戳 + 业务名)。
已经应用过的数据类型:Srting,list,hash
set和sort set还没有应用。并且目前的应用是单节点

kafkaTemplate:springframework中操作kafka的工具类。目前只进行过常用的存。

1.2 mybatis-plus

1、目前项目中对mp的耦合只到mapper层。service进行弃用。组里两个大佬说是不想耦合严重。所以service还是自己控制。
2、mp的upd方法中默认过滤 null和空串,如果需要更新为空串,可以通过下面方法进行upd

baseMapper.update(
				null,
				Wrappers.<BizReportRecordDO>lambdaUpdate()
						.set(BizReportRecordDO::getSendTime, null) //把sendTime设置成null
						.set(BizReportRecordDO::getStatus, "0")
						.eq(BizReportRecordDO::getId, id)
		);

2.···

二.目前遇到的已解决的问题

一、maven的问题
1、在pom文件中设置私服但是maven始终不去私服中下载jar包的问题。setting.xml中 mirror 标签里面设置阿里云仓库时候,mirrorOf 设置为*,所以不过什么路径最后都会走阿里云。经过度娘,改为central后正常。
2、项目build漏掉*mapper.xml文件

		<resources>
			<resource>
				<directory>src/main/java</directory>
				<filtering>true</filtering>
			</resource>
		</resources>

在pom中加上面代码可解决(我们的xml是卸载src/main/java下面的)
PS:我用的是IDEA2020.3 我们组长用的是eclipse,不加这部分代码的情况下,他编译正常,我编译出来就没有xml,没有找到原因。
二、EasyExcel通过模板下载,模板中的excel计算不生效的问题。
甲方给了个excel模板,里面包含了大量的计算。把前端页面穿到后端的时候填充到这个模板上并生成新的excel文件,读取这个新的excel文件的计算结果返回前端。

		ExcelWriter writer = EasyExcel.write(fillPath).withTemplate(template_path).build();
        WriteSheet sheet = EasyExcel.writerSheet(0).build();
        //原来是.getWorkbook()。改为getCachedWorkbook()之后正常计算
        Workbook workbook = writer.writeContext().writeWorkbookHolder().getCachedWorkbook();
        writer.fill(map, sheet);
        workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
        writer.finish();
        workbook.close();

三.目前遇到的未解决的问题

一、mysql的问题
1、之前写代码的时候有个模块对数据库的操作比较多,debug调试代码的时候经常会出现一个问题。数据库连接满了。
可能是我debug住发现问题之后没有让代码运行完直接重启项目导致连接没有释放?或者是程序错误连接不会释放?
这个问题在那个时间一直存在。。。重启了两遍数据库服务之后,询问了度娘,最后找到一个方法,查出来所有数据库连接,根据id手动清掉(就是有时候连接满的Navicat都连不上,最后又是重启mysql。还好我们当时我们项目组和别的项目组用的不是一个数据库,玩坏了也没事)
2、(个人疑惑)同一个mysql,不用库之间做连表查询会有什么不好的地方吗?
3、(个人疑惑)mysql触发器和存储过程。当时大学学习了mysql触发器之后,还写了一个删除主表数据的时候,后位触发根据id删除附表数据。感觉挺好用的,起码代码里逻辑不用关注这一部分了。实际工作中发现没有用到触发器。
我们公司的业务也不涉及金融之类的东西,所以也没有存储过程。之前学习的时候视频距离都是存钱扣钱的时候用存储过程。现在工作中发现代码里面也可以控制方法整体回滚。那这部分现在实际还有用吗?
二、git的问题
1、push内容过大。前端项目初始化提交的时候,经常会出现项目过大,push不到远端的情况。经过查问度娘,得出的结论是和git关系不大。原因可能是 nginx?的问题。git commit 和push的时候都是直接制定的http地址,没有经过nginx吧?(最后解决办法我分了四次给push上去了。。。)
2、回滚。有时候会出现因为设计和需求更改,需要找回之前代码的情况。目前都是拿到版本号,切换到该版本上(相当于一个分支),再把需要的代码复制出来。能不能直接把某几个文件给覆盖了?

总结

目前对大部分技术的应用处于比葫芦画瓢阶段(linux上nginx的配置等)


2021-11-16 省的下次再写吧

上一篇:.net5 core webapi进阶之一:System.Text.Json的用法详解


下一篇:Python操作csv,Excel,word