一:npm ERR! code ERR_SOCKET_TIMEOUT
npm ERR! errno ERR_SOCKET_TIMEOUT解决:先执行一次
npm install rxjs
,再次执行npm install vue-cl
二:Vue中路径中有#/
解决:在router文件中的index.js
const router = new VueRouter({ mode: 'history', routes })
三,在使用postman进行请求时,如果参数是对象
Content type 'multipart/form-data;boundary=--------------------------496238283102520395700876;
解决:(1)将请求中的@RequestBoby去掉
(2):在postman中选中boby中的json格式,以json的形式传入对象
四,在配置Shiro类
No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.ThreadContext or as a vm static singleton. This is an invalid application configuration.
解决:在Shiro配置类中可能是少注解,@Bean
五,在自己编写jwt时,需要在MyRealm中添加
用JwtToken来代替Shiro中系统的Token,
@Override //获得自己定义的token public boolean supports(AuthenticationToken token) { return token instanceof JwtToken; }
六,在shiro整合Redis时,hostname is null
原因可能是在yaml中Redis的配置位置放置的不正确
Redis是spring的下一级的位置
七,如果postman中对需要认证的请求是不符合逻辑 ,而在页面上是符合逻辑的,
这是两种不同的显示结果。
解决:是因为postman没有进行登录操作,只要进行登录就能和页面是同样的显示结果。
八,在验证注解切面时,加强业务不能实现。
解决:在验证时,不能使用简单主函数进行检测,而是使用@Autowried方法,再调用正式的业务逻辑事务。
九,在启动vue项目时,一直在启动的状态,但启动初始化一直进行。
解决:不是项目本身的问题
- vue的路径问题
- vue中标签问题,是否写<div>标签,
- vue中书写小问题
十,Nginx报错:nginx: [error] OpenEvent("Global\ngx_reload_14944") failed (2: The system cannot find the file specified) 解决:是因为没有nginx要在启动后才能reload
Nginx 尚未启动导致,执行 start nginx 命令开启Nginx
nginx.exe -s reload
十一,在使用nginx时,配置都是正确的情况下,就是本地地址转换不到本地的端口时,
需要重启计算机,再重新启动项目。
十二,在使用springboot vue,mysql时,拥有数据绑定出现:java.sql.SQLSyntaxErrorException: Unknown column 'XXX' in 'field list'。
在数据库中如果是多个字符串联,如oldFileName需要写成old_file_name
在springboot后端实体字段中可以用oldFileName进行映射,在vue中表格字段绑定的依据是与springBoot中实体类进行绑定的
补:vue中集合table[],只要与后端的返回的数据是list集合即可
然后table中的字段将绑定list集合中的数据字段进行对应即可,无需其他操作
十二,cannot add foregin key,
解决:使用因为外键的字段类型申明,数据表中的编码等问题,只要改为一直即可
十三,安装linux后,需要配置外网(选择VMnet8)
选择适配器为NAT
2,在编辑中查看虚拟网络编译器
3,在NAT中查看网关
4,vi /etc/sysconfig/network-scripts/ ifcfg-ens33
5,添加或修改
BOOTPROTO,ONBOOT,IPADDR,NETMASK,GATEWAY,DNS1,
其中IPADDR是上述网关的子段,就是最后一位小于网关IP即可
注意:IPADDR是192.168.229.129,不是192.168.299.129
6,需要重启
systemctl restart network
十四,当虚拟机不能ping,一定要执行该语句
[root@kvm ~]#systemctl stop NetworkManager
[root@kvm ~]#systemctl disable NetworkManager
[root@kvm ~]#systemctl restart network
或
[root@kvm ~]#systemctl restart NetworkManager
[root@kvm ~]#systemctl restart network
重启之后,网络恢复正常十五,当ip addr 没有ip地址时,
解决:dhclient ens33命令
十五,有关虚拟机的联网问题的终极版
- 将虚拟机的适配器变成net模式
- vi /etc/sysconfig/network-scripts/ ifcfg-ens33
- 首先不需要设置成静态,而是要先设置成动态dhcp,ONBOOT=yes即可,其他的地址,网关,掩码,DNS都不要加
- 重启网络:systemctl restart network,若不能重启,则使用systemctl stop NetworkManager 和 systemctl distable NetworkManager,然后再重启systemctl restart network
- 说明:再出现错误不需要管,继续下一步的操作
- ip addr命令查看inet
- 再次进入vi /etc/sysconfig/network-scripts/ ifcfg-ens33
- 修改成静态网址
- 其中最重要的是ipADDR要与inet是一致的
- 重启网络如步骤5,
- 此时如果还有错误,但还是能够ping www.baidu.com
- 当初始化ip addr中没有ens33下地址,可以使用dhclient ens33就能够再次出现ip地址,放dhlient ens33没有作用时,可以使用reboot进行重启操作,然后在使用dhclient ens33命令,即可上网
十六,如果由于某种原因想要指定的IPADDR=192.168.229.129,需要
进入vi /etc/sysconfig/network-scripts/ ifcfg-ens33
更改IPADDR
然后一定让ens33生效,就要使用dhclient ens33命令
此时ip addr 就要出现
192.168.229.132是自动生成的
192.168.229.129是我自己设置
最后就可以ping www.baidu.com
十七,在安装CentOS7时出现Disk自动失败
要找到安装Centos位置文件夹
注意:删除的是.lck文件而不是文件夹
十八,解决yum服务中不能下载问题
终极操作:将etc/yum.repos.d/所有文件全部删除,换成正常的文件即可,不需要做其他任何操作
- 在 etc/yum.repos.d/ 下所有的文件都删除掉
- 在一台正常的系统中将etc/yum.repos.d/下的所有文件复制给有问题的系统中
- 不正常文件
- 正常文件
十九,在idea中创建多服务模块,
- 创建maven项目,把多余的src掉,保留pom.xml和.idea
- 在模块中建立java,maven,springboot都可以
- 当需要建立springboot项目时,一定要在父项目的pom.xml中下写《modul》将子模块引入进去,不让springboot项目不能启动,非常关键,
- 在springboot项目中只保留,src pom.xml gitignore三个文件即可
- 使用git clone 的话要将文件里面.git文件删除
二十,org.springframework.beans.factory.annotation.Autowired(required=true)
解决:1,查看主程序的位置,不在业务逻辑包内
2,在主程序中扫描Mapper的路径是否有问题
二十一,在安装nacos时,由于安装的配置都改好了,但是还是不行,就下载1.1.4的版本,因为使用最新的版本导致一直安装不成功
二十二,在springboot整合Redis出现outofdirectMemoryError 堆外内存溢出异常
原因:lettuce出现了bug.netty没有指定堆外内存
解决:使用jedis
二十三,在使用Redis可能出现的问题。
情景1:缓存失效-缓存穿透-缓存不命中-缓存中不存在数据,而是去数据库访问,同时数据库中也不存在数据 解决:将空结果进行缓存 情景2:缓存失效-缓存雪崩-由于给key设置的过期时间是一致的,导致某一时刻同时失效,而去访问数据库,导致数据库瞬时压力过大 解决:在设置过期时间时,可以设置一个随机的过期时间,降低过期时间的重复率 情景3:缓存失效-缓存击穿-某一个key失效,但是却有大量的同时访问 解决:加锁的方式-乐观锁 解决缓存击穿问题 情景1-本地锁:使用synchronized(this){逻辑代码}同步代码块,并在逻辑代码之前应该判断缓存是否有数据,没有 数据将重新加入内存。 问题1:每次只能锁住一个进程,在分布式中由于是多服务器,锁不住所有的服务器。 问题2:时序问题,不至一次访问数据库的现象。 解决: 将从数据库中得到数据后,放入缓存中,然后再释放锁。而不是去访问数据库时,释放锁,然后再放 入缓存中 情景2-分布锁:从redis角度设置锁setnx=setIfAbsent。执行的流程:占锁-业务逻辑-删除锁 问题1:在删除锁之前出现了宕机,锁一直没有删除 解决1:将锁设置自动过期时间,并且在设立锁与过期时间在一起,防止出现宕机,来保证原子性。 问题2:在删除锁时,锁已经过期,业务超时,来保证删除的是同一把锁。 解决2:使用lua脚本,保证原子性删除 情景3-框架redisson来构造分布式锁 方式1-可重入锁(reentrant lock) (1)lock上锁,采用阻塞式等待. (2)上锁后可以自动续期,如果业务时间过长,自动续上30秒,不用担心,由于业务时间过长,锁被 自动删除,当业务完成后,锁在30秒也会被删除。但是如果自己设置时间,但是不会自动续期。 方式2-读写锁(readwriterlock) (1)读数据加读锁,改数据加写锁 (2)读数据要在写数据完成后才能读,一定能读到最新数据。 (3)读+读:相当于是无锁的状态 (4)读+写:有读时,写还是需要等待 总之,当有写锁时,不断是先读还是后读,都需要进行等待 方式3-闭锁(CountdownLatch) 情景4-锁的粒度(锁的范围大小),越细越快 情景5-数据的一致性-双写模式:数据库中数据修改后,向缓存中修改。 问题:产生脏数据,出现数据延迟的现象,但是在最后都可以保证数据的一致性。 数据的一致性-失效模式 解决:使用canal,相当于数据库的从数据库,当数据库中的改变时,就会将缓存数据发生改变
二十四,热部署-实时更新页面
操作一;因为Devtool依赖 操作二:将thmeleaf缓存关闭
二十六,fengin请求丢失
描述:在fengin进行远程调用时会启动新的请求,但是这个请求没有带请求头,无法将以前的请求头携带过来 解决:fengin远程调用的拦截器-将老请求的cookie放到新请求中 步骤1:创建requestIntercept返回类 步骤2:重写apply(requesttemplate)方法 步骤3:使用requestcontextHolder.getrequestattributes()方法得到请求,并进行强转成 sevrletrequestattribute 步骤4:sevrletrequestattribute.getquest()方法就能等到老请求了,此时转为httprequest类 步骤5:httprequest.getheader("cookie")拿到老请求的cookie 步骤6:requesttemplate.header("cookie",老请求的cookie);给新请求进行加上cookie 总结:requestcontextHolder->sevrletrequestattribute->httprequest->getheader 描述:fengin丢失上下文问题 原因:线程不一样 解决:公用一个线程 步骤1:在实现异步线程之前添加:requestcontextHolder.getrequestattributes()不要强转得到 requestattribute类 步骤2:在异步线程里面添加:requestcontextattribute.setrequestattributes(requestattribute类)
二十七:等幂性,防止多次提交
描述:防止多次提交,接口的幂等性 方式一:防重令牌(key-value)-在后端生成令牌给前端和服务器,然后进行匹配 步骤1:使用redis发原子性,当验证时通过就要进行删除,这是使用lua脚本。使用redistemplate.excute(new Defaultredisscripts<long>(脚本,long.class),arrays.aslist(key),对比的value);
二十八,idea中自己设置的仓库不可以使用了,
二十九。‘mysql‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
https://blog.csdn.net/m0_57446284/article/details/121374171
mysql下载https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/
MySQL的安装:https://blog.csdn.net/m0_49284219/article/details/121972531
三十.xshell进行安装使用,破解版(在文件中使用绿化.bat后,先启动后就可以启动xshell.exe)
https://blog.csdn.net/Saturn_Mentos/article/details/122310056
三十一.使用宝塔面板的安装(最好是在云服务器是纯净的版本下安装,不然会有一定的影响的)
1.需要通过:xshell进行连接云服务器
2.在自己的xshell进行安装包:命令:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
3.bt命令提示符:可以使用14得到信息。
三十二.前后端分离项目步骤
1.前端:npm run build
2.将dis文件复制到,后端的static文件中
三十三.
三十四.当防火墙关闭一个端口时,使用navicat连接时,出现
三十四。windows下在redis闪退
三十五。JAVA - 解决:Java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency>
三十六。
Syntax Error: Error: ENOENT: no such file or directory, scandir 'D:\vue\rn-bms-vue\node_modules\_node-sass@4.14.1@node-sass\vendor'
三十七,数据库创建时间与更新时间在navicat中设计
其中CURRENT_TIMESTAMP是可以进行手动输入的
https://blog.csdn.net/Eternal_Blue/article/details/107929528
三十八. FirewallD is not running
三十九。tk.mybatis.mapper.MapperException: 无法获取实体类XXX对应的表名!
在使用it.mybatis时:
public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> { //TODO //FIXME 特别注意,该接口不能被扫描到,否则会出错 }
应为springboot引入了spring security部分,而spring是自动开启安全模式的
@SpringBootApplication(exclude={SecurityAutoConfiguration.class,SecurityFilterAutoConfiguration.class})
四十一.
解决:开启服务
参考:navicat创建连接 2002-can‘t connect to server on .... - xiao智 - 博客园 (cnblogs.com)
四十二.
有登录页面,但是点击登录没有任何反应,这是因为没有接受到数据库,所以只要连接上数据库即可。
四十三:
在forest开源框架时,总是提示接口注入失败,其原因是引入的依赖是有问题的
正确的引入依赖:
<dependency> <groupId>com.dtflys.forest</groupId> <artifactId>forest-spring-boot-starter</artifactId> <version>1.5.26</version> </dependency>
四十四.由于修改编码导致yaml文件有错误,length=2最终导致springBoot启动不了,
解决:修改编码为utf-8,然后重新rebuild project即可。