工作、学习问题记录(一)

文章列举了一系列在Java开发中遇到的问题及其解答,包括AOP切面无法切入Service层的原因、Macos系统启动项目时logging.properties的权限问题、IDEA中找不到mapper.xml的解决办法、SpringBoot集成MyBatis-Plus时的实体类与表名映射问题、如何开启MyBatisSQL打印、IDEAJava代码兼容性问题、MyBatisSQL查询中的异常处理、switch语句中break和default的作用,以及Redis集群搭建时的Ruby版本问题和ActiveMQ安装注意事项。
摘要由CSDN通过智能技术生成

 问题1:AOP+自定义注解可以切入Controller方法中,但是不能切入Service层

解:因为项目架构中,是分布式的架构,切面的实现方法,是在admin模块下,service模块依赖core模块,但是不可能依赖admin模块,切面的实现方法没有放到core模块中,所以serviceImpl中访问不到,不跳到切面中。

问题2:Mac os系统上启动项目,logging.properties文件报permission denied异常

解:1.需要在某一目录创建对应的log文件,然后赋权777!!

问题3:idea中不能找到mapper.xml文件,抛出org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

解:因为idea只会从rescoure中找文件,不会从src/main/java中寻找,需要在pom.xml中,添加 

问题4:springboot集成mybatis-plus的时候,数据库表为user_info,实体类为userInfo,使用其内置的方法查询的时候,出现库.userInfo不存在

解:是因为会默认查询数据库名为实体名,需求手动配置开启

问题5:开启打印mybatis的语句sql

解:需要具体指定到哪个mapper包下的日志输出

问题6:IDEA中Java错误:Usage of API documented as @since 1.8+ less...

当使用1.8新特性时,idea出现这个问题,当确定自己项目引入的jdk版本没有问题后,打开File ->Project Structure->Project Settings -> Modules -> Module名称 -> Sources -> Language Level->可以看到当前并不是8,更改一下选择就行。 

第äºæ­¥

问题7:mybatis出现异常:

Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.ArrayList and java.lang.String

这个情况在list集合查找数据的sql中出的问题,在接受list的时候加了判断  list!='' ,引起了集合与String类型的比较

<choose>
      <when test="names!= null and names.size!=''">
        and name in
        <foreach collection="names" item="name" index="index" open="(" close=")" separator=",">
          #{name}
        </foreach>
      </when>
      <otherwise>
        and name= ''
      </otherwise>
    </choose

换成

<choose>
      <when test="names!= null and names.size>0">
        and name in
        <foreach collection="names" item="name" index="index" open="(" close=")" separator=",">
          #{name}
        </foreach>
      </when>
      <otherwise>
        and name= ''
      </otherwise>
    </choose>

问题8:switch语法中break,default的作用

当没有break的情况下,猜想输出的结果是什么
int i = 1, j = 0;
  switch (i) {
    case 2:
        j += 6;
    default:
        j += 2;
    case 0:
        j += 4;
    case 4:
        j += 2;
  }
System.out.println("j=" + j);

结果输出的是:j=8

当有了break后,输出结果是什么?

ic void test02() {
    int i = 1, j = 0;
    switch (i) {
        case 2:
            j += 6;
        default:
            j += 2;
            break;
        case 0:
            j += 4;
        case 4:
            j += 2;
    }
System.out.println("j=" + j);

输出结果的是:j=2

得出结论:

(1)switch语句关键地方是进入点,有了进入点没有break的情况下会执行到底 
(2)没有匹配值的时候default就是进入点,进入default以后会和普通进入点一样,如果没有break继续执行下面语句 
(3)如果有break 则是从进入点到 break中间的语句执行

问题9:Redis集群搭建的时候遇到的问题

9.1 ruby版本过低

在执行gem install redis时,提示如下错误:

gem install redis

ERROR: Error installing redis:

redis requires Ruby version >= 2.2.2.

CentOS7 yum库中ruby的版本支持到 2.0.0,可gem 安装redis需要最低是2.2.2,采用rvm来更新ruby(RVM 是一个命令行工具,可以提供一个便捷的多版本Ruby 环境的管理和切换)

1、安装RVM:

  [root@linux ~]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

  [root@linux ~]# curl -sSL https://get.rvm.io | bash -s stable

  [root@linux ~]# find / -name rvm -print

     /usr/local/rvm

     /usr/local/rvm/src/rvm

     /usr/local/rvm/src/rvm/bin/rvm

     /usr/local/rvm/src/rvm/lib/rvm

     /usr/local/rvm/src/rvm/scripts/rvm

     /usr/local/rvm/bin/rvm

     /usr/local/rvm/lib/rvm

     /usr/local/rvm/scripts/rvm

[root@linux ~]# source /usr/local/rvm/scripts/rvm

2、查看rvm库中已知的ruby版本:

[root@linux ~]# rvm list known

    MRI Rubies

    [ruby-]1.8.6[-p420]

    [ruby-]1.8.7[-head] # security released on head

    [ruby-]1.9.1[-p431]

    [ruby-]1.9.2[-p330]

    [ruby-]1.9.3[-p551]

    [ruby-]2.0.0[-p648]

    [ruby-]2.1[.10]

    [ruby-]2.2[.7]

    [ruby-]2.3[.4]

    [ruby-]2.4[.1]

    ruby-head

    ….

3、安装一个ruby版本:

[root@linux ~]# rvm install 2.4.1

    Searching for binary rubies, this might take some time.

    Found remote file https://rvm_io.global.ssl.fastly.net/binaries/centos/7/x86_64/ruby-2.4.1.tar.bz2

    Checking requirements for centos.

    Requirements installation successful.

    ruby-2.4.1 - #configure

    ruby-2.4.1 - #download

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                     Dload  Upload   Total   Spent    Left  Speed

    100 14.1M  100 14.1M    0     0    97k      0  0:02:27  0:02:27 --:--:--  159k

    No checksum for downloaded archive, recording checksum in user configuration.

    ruby-2.4.1 - #validate archive

    ruby-2.4.1 - #extract

    ruby-2.4.1 - #validate binary

    ruby-2.4.1 - #setup

    ruby-2.4.1 - #gemset created /usr/local/rvm/gems/ruby-2.4.1@global

    ruby-2.4.1 - #importing gemset /usr/local/rvm/gemsets/global.gems..............................

    ruby-2.4.1 - #generating global wrappers........

    ruby-2.4.1 - #gemset created /usr/local/rvm/gems/ruby-2.4.1

    ruby-2.4.1 - #importing gemsetfile /usr/local/rvm/gemsets/default.gems evaluated to empty gem list

    ruby-2.4.1 - #generating default wrappers........

4、使用一个ruby版本:

  [root@linux ~]# rvm use 2.4.1

       Using /usr/local/rvm/gems/ruby-2.4.1

5、设置默认版本:(设置ruby2.4.1为默认的ruby,因为还安装有1.8.3)

  [root@linux ~]# rvm use 2.4.1 --default

        Using /usr/local/rvm/gems/ruby-2.4.1

6、卸载一个已知版本:

  [root@linux ~]# rvm remove 2.3.4

7、查看ruby版本:

  [root@linux ~]# ruby --version

      ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

8、安装redis:

  [root@linux ~]# gem install redis

    Fetching: redis-4.0.1.gem (100%)

    Successfully installed redis-4.0.1

    Parsing documentation for redis-4.0.1

    Installing ri documentation for redis-4.0.1

    Done installing documentation for redis after 3 seconds

    1 gem installed

大功告成!!!

9.2 统一启动和关闭节点

由于有多个节点,分别启动太慢,所以创建.sh脚本,统一启动和关闭节点

新建一个.sh文件:vim redis-cluster-allStart.sh

#!/bin/bash

/redis/bin/redis-server /redis/redis_cluster/7001/redis.conf

:wq!

在创建后,需要进行权限设置才能变成可执行文件

chmod 775 vim redis-cluster-allStart.sh

9.3 redis集群最少有6个节点,至少有3个主节点

9.4 错误了无法连接服务器的错误

[ERR] Sorry, can't connect to node 192.168.159.130:7004

原因:因为我先创建了7001 7002 7003三个节点,后面三个节点并没有启动,这样直接创建集群就会连接不上

9.5.集群创建成功

[OK] All 16384 slots covered.

16384个槽位被使用

9.6. 当集群模式下的数据存储问题

当集群模式下的数据存储,重定向到哪个节点,哪个节点就有数据,但是其他的节点是没有这个数据,这时候查询就会重定向到那个节点

问题10:ActiveMQ的安装

1.window环境下安装activeMQ失败

解决:我用的apache-activemq-5.15.2 ,这个版本的activeMQ 要用JDK1.8需要安装JDK1.8以上版本,原来是1.7

启动成功之后浏览器输入:http://127.0.0.1:8161/admin/  默认账号密码是:admin/admin,到此为止,就安装ActiveMQ成功啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芦蒿炒香干

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值