问题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出现异常:
这个情况在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成功啦!