19.2.6
多个moudle下
spring boot项目 使用mybatis-plus的分页配置项 MybatisPlusConfig
由于没有放在有有Application的启动moudle里 报错
BossFaeWebApplication
重新放到有Application的项目下就好了
19.2.12
多个moudle下 通用异常类不生效,没有被spring扫描到,放到带main方法的项目下 或者在注解
@SpringBootApplication
加扫描
(scanBasePackages = {"包名"})*
19.3.13
int转double double加减都需要通过BigDecimal 转换,不然有误差
19.3.14
com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
mysql版本太高 具体原因待查证
解决方案 添加时区
&serverTimezone=UTC
url: jdbc:mysql://localhost:3306/demo_user?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
utc gmt 插入后时间少8个小时 可以使用下面格式
serverTimezone=Asia/Shanghai
serverTimezone=GMT%2B8
19.3.14
java8 设置最大时间 最小时间
取最小时间 输出 yyyy-HH-mm 00:00:00
LocalDateTime localDateTime1 = LocalDateTime.now();
localDateTime1.with(LocalDateTime.MIN);
加入尝试下面输出 23:59:59 插入数据库就不行了 输出可以
LocalDateTime localDateTime1 = LocalDateTime.now();
localDateTime1.with(LocalDateTime.MAX);
输出得这样 先求的最小值 然后加上23 59 59
LocalDateTime dateTime = localDateTime.plusDays(days);
return dateTime.with(LocalTime.MIN).plusHours(23).plusMinutes(59).plusSeconds(59);
327
mybatis plus 条件拼接and遇到的坑
and 也有条件 true false判断,不加判断,查询会出现null 条件拼接
使用前面的进行空判断是否使用条件
IPage<Card> cardIPage = cardMapper.selectPage(page, new QueryWrapper<Card>()
.and((StringUtils.isNotBlank(cardDto.getKey())), x -> x.eq("数据库字段", cardDto.getKey()).or()
.eq("数据库字段", cardDto.getKey()))
.orderByDesc("创建时间"));
518域名请求被拒绝 报错 浏览器控制台报错net::ERR_CONNECTION_RESET原因:
可能也是别的原因造成的
我是因为起初把域名加到了本地hosts里面,结果项目上线后请求域名怎么请求怎么报错,忘记了配置在本地了 删除后就可以正常请求域名了
616
若执行ssh-add /path/to/xxx.pem是出现这个错误:Could not open a connection to your authentication agent,则先执行如下命令即可:
ssh-agent bash
生成多个密钥
https://gitee.com/help/articles/4229#article-header0
生成一个 添加一下 ssh-add ~/.ssh/密钥名字
621
java.lang.NumberFormatException: For input string: ""
读取的文件有问题。。
启动找不到主类
clean install 然后编译一下
按周几查询
oracel
select to_char(sysdate - 1,'d') from dual;
mysql
SELECT DAYNAME('2012-12-01'), DAYOFWEEK('2012-12-01');
oracle 关联表更新
UPDATE 表版2
SET
表2.C = (SELECT B FROM 表1 WHERE 表1.A = 表2.A)
WHERE
EXISTS ( SELECT 1 FROM 表1 WHERE 表1.A = 表2.A)
1031
git feath使用
1106
两个服务传递
A调用B 不能穿localdateTime
返回时 B传给A localdateTime 需要配置
localdateTime 不格式化 返回前台格式
1113
mysql8连接数据库配置
serverTimezone=Asia/Shanghai
空指针
如果对象的属性可能是空的 get的在后面
值.equals(对象.get属性)
spring boot版本升级后字段校验依赖
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别
关于获取类的字段有两种方式:getFields()和getDeclaredFields()。我们先来看看这两者的区别吧:
getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。
getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。
同样类似的还有getConstructors()和getDeclaredConstructors()、getMethods()和getDeclaredMethods(),这两者分别表示获取某个类的方法、构造函数。
测试类启动报错 无法注入mapper
mapperScan 扫描错误 扫描是具体mapper的包名 不能带*
例 所有的mapper文件放在com.example.demo.dao 包下
正确
@MapperScan("com.example.demo.dao")
错误
@MapperScan("com.example.demo.dao.*")
代码报红 项目正常启动
复制项目出一个副本 重新打开 原因没找到。
nacos 启动注册到localhost:8848
配置文件需要时bootstrap.yml applcation.yml会报错
虚拟机网络服务启动失败Failed to start LSB 解决方法
/etc/sysconfig/network-scripts
的ifcfg-eth0 文件 name跟device需要跟外面一致
启动mysql
mysqld --initialize --user=mysql --console
idea 启动不自动生成target文件 修改文件必须重启才生效
删除项目的idea文件夹 重新打开项目
java.lang.IllegalArgumentException: endpoint format should like ip:port
datasource无法注入
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
配置信息
不能有驼峰写法 需要是 . 分割
枚举类
使用枚举类 保存更新 要进行判断
springboot No primary or default constructor found for interface java.util.List
controller 没有加 @requestbody 或者 @requetparam注解
mysql
查看mysql版本
select version() from dual;
notepad++ 查找替换
^ 首字符 $ 尾字符
mybatis 日志打印配置
# 在dev环境开启mybatis的日志打印
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
get请求接收 {} 格式
server:
port: ${PORT:8980}
tomcat:
relaxed-query-chars: "{,}" # get请求 兼容 {}
无效的源发行版 11
创建项目用的8 但是实际要用11
修改jdk版本 删除 .idea 文件夹
操作步骤一
操作完删除 .idea 文件夹
cmd ssh连接虚拟机额
ssh ip地址
按提示输入账号密码
请求参数是连接的需要编码
encode 编码
decode解码
maven 私服上传
设置对应的仓库地址 有密码的加密码 然后使用mvn命令上传
<distributionManagement>
<repository>
<id>nexus</id>
<name>Nexus Release Repository</name>
<url>http://admin:12345678@localhost:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus</id>
<name>Nexus Snapshot Repository</name>
<url>http://admin:12345678@localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
私服依赖
传到私服的依赖 需要升级版本 不然是不发更新的
feign 继承加fallback 报错
数据比较时的空指针
docker
解决docker Error response from daemon invalid argument
在低版本的centos7下安装最新的docker可能会出现的错误
docker run 的时候报错
err:docker: Error response from daemon:
mkdir /var/lib/docker/overlay2/948…: invalid argument.
See ‘docker run --help’.
修改docker文件系统驱动
systemctl stop docker
rm -rf /var/lib/docker
cat /etc/docker/daemon.json
{
“storage-driver”: “devicemapper”
}
systemctl restart docker
控制台不打印异常信息
rest类放的太深
父类中list判空
@Valid
@NotEmpty(message = "区域信息不能为空")
@ApiModelProperty(description = "区域信息", value = "区域信息", forceReq = true)
private List<AreaCreateReq> areaList;
使用NotEmpty
才可以 不能使用 notnul
NoClassDefFoundError
RedisTemplate测试类空指针
测试类添加 @RunWith(SpringRunner.class)
# java.nio.charset.MalformedInputException: Input length = 1
SpringBoot application.yml文件报错 java.nio.charset.MalformedInputException: Input length = 1
application.yml编码错误
删除一个新建后,将内容填充
不再支持源选项 5。请使用 6 或更高版本。
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
日志打印中文乱码,system打印不乱吗
修改日志文件配置,将logback-spring.xml 中的所有UTF-8注释掉 即可解决
java项目中未找到 javax.servlet.jsp.PageContext 的类文件
- tomcat里面的lib目录下,jsp-api.jar与servlet-api.jar都导进项目中去
- spring boot项目 导入这两个依赖
mysql 5.7升级8.0
解决方式
group查询错误
查询类型
select @@sql_mode
将查询出的 删掉最前面 group的单词,放到 my.ini
文件内 重启 mysql
mysq8 默认没有 my.ini
文件,在mysql根目录创建 my.ini
文件 添加以下代码
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Could not initialize class gnu.io.RXTXCommDriver问题解决方法
问题原因:%JAVA_HOME%-搜索环境变量即可看见对应的值
%JAVA_HOME%/jre下的rxtxParallel.dll与rxtxSerial.dll对应的版本不一致
rxtxcomm官网地址http://rxtx.qbang.org/wiki/index.php/Download
gateway提示 服务不可用
为什么会这样,是因为在Spring Cloud 2020
版本以后,默认移除了对Netflix的依赖,其中就包括Ribbon,官方默认推荐使用Spring Cloud Loadbalancer
正式替换Ribbon
,并成为了Spring Cloud
负载均衡器的唯一实现。
解决
在当前模块导入Spring Cloud Loadbalance
依赖就可以了。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
【No buffer space available】异常解决
1. 问题原因
这是端口不够所导致的。Windows默认情况下的端口启用情况可以用命令:
netsh int ipv4 show dynamicportrange tcp来查看
2. 解决方法
以管理身份运行命令窗口,然后通过命令
netsh int ipv4 set dynamicport tcp start=2000 num=63000
或者修改注册表
运行regedit打开注册表,依次找到以下路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
在右侧空白处,右键新建DWORD值
名称:MaxUserPort
数值数据:65534
基数:十进制
确定,关闭注册表。重启电脑
查看端口号
(2)输入命令
查找占用的端口号:netstat -ano |findstr 8005
。端口8005被PID(进程号)为4728的进程占用
查看端口8005被哪个应用占用:tasklist |findstr 4728
强行终止进程:taskkill /f /pid 4728
socket
FTP上传
有文件,但是0kb, 添加 ftp.enterLocalPassiveMode()
FTPClient ftp = new FTPClient();
ftp.connect(host,port);
ftp.login(user,passWord);
ftp.enterLocalPassiveMode()
ftp.storeFile(reomte,InputStream);
ip ping不通
一般是防火墙问题,关掉还不通,查看几个网络
Error: error:0308010C:digital envelope routines::unsupported
直接在package.json文件里面加上set NODE_OPTIONS=–openssl-legacy-provider如下:
"scripts": {
"serve": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --open",
"start": "set NODE_OPTIONS=--openssl-legacy-provider && npm run serve",
"dev": "set NODE_OPTIONS=--openssl-legacy-provider && npm run serve",
"build": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --report",
},
host pc2022 is not allowed to connect to this mysql
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;
前端
语音播报
const synth = window.speechSynthesis;
const message = new SpeechSynthesisUtterance();
function voice_playback(text) {
message.text = text;
message.lang = 'zh';
message.rate = 1; //语速设置,数字越大越快
synth.speak(message);
}
mysql
备份的sql执行报错 解决办法
查看配置的大小
show global variables like 'max_allowed_packet';
修改大小
set global max_allowed_packet=1024*1024*150;
linux防火墙
如无法访问管理系统,执行命令 systemctl status firewalld 检查下是否开启了防火墙 ,如状态栏看到绿色显示 Active: active (running) 需要放行 2122 端口。
放行管理系统的 2122 端口
firewall-cmd --add-port=2122/tcp --permanent
重启防火墙才会生效
firewall-cmd --reload
mysql 安装报错 缺少dll
如果出现找不到vcruntime140_1.dll的错误,说明这可能是 windows 缺少vc_redist.x64.exe程序导致的服务安装错误,下载该安装包进行安装即可解决问题,下载链接在这。
安装完成后,如果又出现找不到vcruntime140_1.dll,前往下载 vcruntime140_1.dll 文件,完成下载后,解压文件,并复制到C:\Windows\System32目录下,再次执行mysqld --initialize --console,安装结束后会在cmd界面得到mysql的初始密码:xDaCq<&q;4wd。
1. 2023-02-28T07:35:00.631721Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xDaCq<&q;4wd