工作中遇到的一些问题

1、解决 Maven 本地仓库有jar包,还是要到远程仓库去取的问题
删除maven本地仓库jar包目录下的 .lastUpdated 和 .repositories 文件,即可解决

#使用cmd命令批量清除
 
cd d:
 
cd d:\maven_local_repository  #首先要进入本地仓库目录
 
for /r %i in (*.lastUpdated) do del %i
 
for /r %i in (*.repositories) do del %i

如果把.repositories文件删除后,想要拉取源代码,就会拉不下来,因为它不知道该去哪里下,因为.repositories记录得有仓库地址

解决一:把jar包删除后从新下
解决二:在eclipse中设置(window → preferences → maven → download artifact sources),下载jar包时把source.jar也下下来,这样即使删除.repositories,源代码也存在

2、get方法报空指针,如果从数据库查询的值是null值,那么我们再去调用该对象的get方法就会报空指针问题

  ProxyAdapter adapter= proxyAdapterService.selectOne(entId);
  //这里如果不判断就会报空指针问题
        if (adapter !=null){
            if(StringUtils.isEmpty(adapter.getUrl())){
                log.info("外呼名单导入接口执行入库逻辑");
            }
                log.info("请求转发接口为:" + adapter.getUrl());
                res=proxyRecordService.uploadCallData(uploadCallDataRequest,adapter.getUrl());
                log.info("返回参数为:{}",res);
        }else {
            log.error("数据库中查询不到该企业");
        }

更多方法请查看:https://blog.csdn.net/weixin_39546747/article/details/111222515

3、maven下载出错,解决办法

在idea设置maven下边的runner中进行配置
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

然后执行mvn clean install -U

4、不要在 for-each 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式。
因为 foreach 循环是基于迭代器实现的,而迭代器在遍历集合时会维护一个 expectedModCount 属性来记录集合被修改的次数。如果在 foreach 循环中执行删除操作会导致 expectedModCount 属性值与实际的 modCount 属性值不一致,从而导致迭代器的 hasNext() 和 next() 方法抛出 ConcurrentModificationException 异常。
为了避免这种情况,应该使用迭代器的 remove() 方法来删除元素,该方法会在删除元素后更新迭代器状态,确保循环的正确性。如果需要在循环中删除元素,应该使用迭代器的 remove() 方法,而不是集合自身的 remove() 方法。
在这里插入图片描述
5、mysql数据库需要配置多个数据源,此外由于数据库名字以企业id命名,而企业id是会发生变化的,sql语句怎么写
springboot配置数据源有两种办法
a、引入依赖,使用ds注解
b、使用config配置
详细情况百度

sql语句使用库名.表名这种方式,注意符号的使用。

select fastdfs_url from `${entId}`.ent_record_fastdfs_url where record_name = #{recordFile,jdbcType=VARCHAR}
数据源配置随便配置一个企业库

6、springboot中一些Template的使用
a、redis

redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set

b、http

delete() 在特定的URL上对资源执行HTTP DELETE操作
exchange()
在URL上执行特定的HTTP方法,返回包含对象的ResponseEntity,这个对象是从响应体中
映射得到的
execute() 在URL上执行特定的HTTP方法,返回一个从响应体映射得到的对象
getForEntity() 发送一个HTTP GET请求,返回的ResponseEntity包含了响应体所映射成的对象
getForObject() 发送一个HTTP GET请求,返回的请求体将映射为一个对象
postForEntity()
POST 数据到一个URL,返回包含一个对象的ResponseEntity,这个对象是从响应体中映射得
到的
postForObject() POST 数据到一个URL,返回根据响应体匹配形成的对象
headForHeaders() 发送HTTP HEAD请求,返回包含特定资源URL的HTTP头
optionsForAllow() 发送HTTP OPTIONS请求,返回对特定URL的Allow头信息
postForLocation() POST 数据到一个URL,返回新创建资源的URL
put() PUT 资源到特定的URL

7、实现@value 给静态变量赋值
注意添加@Component注解
第一种方式

/**文件存储目录*/
public static String SAVE_PATH;

//记得去掉static
@Value("${local.file.temp.dir}")
public void setSavePath(String savePath){
    SAVE_PATH = savePath;
}

第二种方式:使用 @postconstruct

    /**文件存储目录*/
    public static String SAVE_PATH;

    @Value("${local.file.temp.dir}")
    public String SAVE_PATH_TEMP;

    @PostConstruct
    private void init(){
        SAVE_PATH = SAVE_PATH_TEMP;
    }

  @GetMapping("test")
    public void test(){

        System.out.println(SAVE_PATH);
    }

@PostConstruct 是在 bean 初始化(initializeBean)过程中调用的,是在@value之后调用的,可以通过这种方式给静态变量赋值。

第三种方式:
实现InitializingBean 接口

public class IndexController implements InitializingBean {

    /**文件存储目录*/
    public static String SAVE_PATH;

    @Value("${local.file.temp.dir}")
    public String SAVE_PATH_TEMP;

    @GetMapping("test")
    public void test(){

        System.out.println(SAVE_PATH);
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        SAVE_PATH = SAVE_PATH_TEMP;
    }
}

InitializingBean 接口也是在bean初始化(initializeBean)过程中调用的,具体可以看下spring bean 的实例化过程

8、java无效版本,非法字符

配置设置编译
配置maven

编码方式移除bom

9、netstat命令
在这里插入图片描述
10、lombok无法使用buider链式调用
首先查看pom文件中lombok版本,插件是否安装lombok。
查看实体类是否引用对所属的包。

            //构建流量包对象
            TrafficDO trafficDO = TrafficDO.builder().accountNo(accountNo)
                    .dayLimit(productVO.getDayTimes() * buyNum)
                    .dayUsed(0)
                    .totalLimit(productVO.getTotalTimes())
                    .pluginType(productVO.getPluginType())
                    .level(productVO.getLevel())
                    .productId(productVO.getId())
                    .outTradeNo(outTradeNo)
                    .expiredDate(date).build();

11、Hoxton.M2版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错,所以加入spring-cloud-loadbalancer依赖 并且在nacos中排除ribbon依赖,不然loadbalancer无效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值