新拉的项目下完依赖后dependencies还是出现红色波浪线
可以尝试删除pom中相关依赖,import change后重新添加。
Mybatis generatorConfig.xml中
http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd
出现红色波浪线,使用idea的红色小灯泡,点击Fetch external resource
启动服务报错:
Caused by: java.nio.charset.MalformedInputException: Input length = 1
编码设置有问题,File --> Settings --> Editor --->File Encodings ,将所有的格式都转成utf-8格式
idea2019.2中中文字体忽大忽小不规范的问题
File --> Settings --> Editor --->Font调整“Fallback font”为SimHei、SimSun、YouYuan等
idea设置代码行宽度超出限制时自动换行
1、settings->editor->code style->default options->勾选wrap on typing
2、settings->editor->code style->java->wrapping and braces栏->ensure right margin is not exceeded
引用自定义包报错The POM for xxxx is missing, no dependency information available
打成springboot jar包,再引用自己做的包时,不要用这个打包命令:
mvn package -Dmaven.test.skip=true
正确的打包命令:
mvn clean install -Dmaven.test.skip=true
mysql插入emoji报错
Incorrect string value: '\xF0\x9F\x90\x96' for column
原因:
一个ASCII字符占用1个字节,一个汉字占用3个字节;
MySql的utf8编码最多3个字节,算不上真正的utf8字符集。在MySql5.5.3的版本增加了utf8mb4编码集,专门用于兼容4个字节的unicode。在MySql中utf8mb4是utf8的超集,除了修改数据库的编码集为utf8mb4外不需要做其他的修改。
解决办法:MySql使用utf8mb4
第一步:检查版本
查询版本语句:
select version();
第二步:修改MySql配置文件
打开mysql配置文件mysql/my.cnf或mysql/my.ini, 并且添加如下内容:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
第三步:重启数据库
1、Windows请到服务管理界面重新启动MySql服务:services.msc
2、Linux请执行命令:/etc/init.d/mysql restart
第四步:检查数据库配置
执行查看数据库字符集命令:
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
|| character_set_client | utf8mb4
|| character_set_connection | utf8mb4
|| character_set_database | utf8mb4
|| character_set_filesystem | binary
|| character_set_results | utf8mb4
|| character_set_server | utf8mb4
|| character_set_system | utf8
|| collation_connection | utf8mb4_unicode_ci
|| collation_database | utf8mb4_unicode_ci
|| collation_server | utf8mb4_unicode_ci
+--------------------------+--------------------+
必须保证:
character_set_client/character_se_connection/character_set_database/character_set_results/character_set_server
为utf8mb4
。
第五步:更新客户端配置文件
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true
jdbc.username=username
jdbc.password=password
第六步:修改数据库、表和列的字符集SQL语句:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE table_name table_name CHANGE column_name VARCHAR(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
第七步:修改应用连接字符串(druid):
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc-driver}"/>
<property name="url" value="${jdbc-url}"/>
<property name="username" value="${jdbc-user}"/>
<property name="password" value="${jdbc-password}"/>
<property name="filters" value="stat"/>
<property name="maxActive" value="20"/>
<property name="initialSize" value="1"/>
<property name="maxWait" value="60000"/>
<property name="minIdle" value="1"/>
<property name="timeBetweenEvictionRunsMillis" value="3000"/>
<property name="minEvictableIdleTimeMillis" value="300000"/>
<property name="validationQuery" value="SELECT 'x'"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<property name="poolPreparedStatements" value="true"/>
<property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
<property name="connectionInitSqls" value="set names utf8mb4;"/> //必须添加
</bean>
注意:mysql-connector-java驱动在5.1.13之前是不支持utf8mb4,请使用5.1.13以后的版本。
jdk8 使用stream进行Collectors.toMap操作时的错误
1、当value为null时会报错,解决方法为
List.stream().collect(HashMap::new,(m,v)->m.put(v.getId(),v.getValue()),HashMap::putAll);
2、当主键重复时会报错,解决方法为
List.stream().collect(Collectors.toMap(V::getId, V::getValue, (oldValue, newValue) -> newValue));