1.java开发近期踩坑

背景

近期的开发中遇到的坑,及时的整理,主要内容包括:

  • mybatis 原名与别名的问题
  • maven项目properties文件找不到的问题
  • darknet调用路径的问题
  • 基于proto的grpc的经验积累问题
  • 关于50051端口的问题
  • spring中异步注解容易造成的问题

参考资料

https://blog.csdn.net/chenmixuexi_/article/details/76177331 关于别名的问题
https://www.cnblogs.com/jpfss/p/10273129.html @async注解的说明

解决方案

1.关于mybatis原名与别名的问题

这里的别名我想用两种场景去解释,首先,我们都知道表结构与entity是建立了映射的,比如通过select标签的resultmap属性与 resultmap标签的id对应。但是表的字段与属性的对应,其实是有两种解决方案的,第一种就是在resultmap中直接对应,如下:

<!-- 
	返回的数据映射 
		type:代表是要映射的对象
		id:代表唯一(过会我们要拿到它)
-->
<resultMap type="cn.itsource.domain.Product" id="productMap">
	<!-- 
		column:对应的列名
		property:对应的属性名
	 -->
	<id column="id" property="id"  />
	<result column="productName" property="name" />
</resultMap>	
<select id="queryOne" parameterType="long" resultMap="productMap">
	select * from product where id = #{id}
</select>

但是有时候,原生的列名,太过冗长,不好写也不好记忆,字段多了就容易出错,尤其是在联表的场景,还可能出现冲突的字段名称的问题,哪怕通过给表起别名的方式可以区分,但是还是看起来不容易区分。这时候,就需要给字段起别名,简单的别名,好写也好记忆。需要注意的是,有了别名之后,就要使用别名,如果不使用别名,还使用原来的表的字段名字,就会出现映射的问题,提示找不到字段

2.maven项目properties文件找不到的问题

这个问题发生在,原来的idea项目写的好好的,在我建了idea项目的子模块A之后,父模块中的代码显示找不到父模块中的properties文件。反思了一下操作,也就是建立了一个子模块A,于是把父模块的中的代码和配置文件,新建了一个子模块B,然后放入了代码和配置文件,一样的代码,运行没有问题。于是就有了总结:一个多模块的项目,在建立子模块的时候,idea的目录结构配置文件会产生变化,导致父目录启动的时候找不到配置文件,也算是idea的一种思想吧,父目录只作为pom,不作为代码的容器

3.关于darknet框架的问题

调用的所有链接,不管是代码中的还是 文件中的,都用根目录,否则就会找不到地址。可能因为其内部的寻址比较奇怪。

4.基于proto的grpc踩坑经验

1.proto文件要使用同一版本,不同的版本一定报错。
2.需要注意的是,proto文件中哪怕是大小写有差异,也会产生找不到方法的问题,接口大小写敏感。

5.windows端口的问题

50051端口会被神秘的占用,排查了很多也找不到具体是哪个进程占用了,猜测可能是病毒的原因。
重启之后,端口就不再被占用了。

6.关于spring的async注解的问题

需要注意的是,一旦添加了这个注解,在测试的时候,如果这个方法是一个耗时的方法,可能还没等到方法执行完毕jvm就关闭了,这个方法产生的现象自然也就不会出现了。比如发http请求的场景。测试的时候,只要把这个注解去掉,就不会出现这种情况了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值