java程序员工作中遇到的问题解决记录

1.maven项目启动不成功,找不到指定mapper

在启动类里没有配@MapperScan

2.maven项目启动成功,但不能访问指定页面

pom.xml里缺少依赖

3.html中引入react.js文件不成功,显示antd is not defined

antd版本不对

4.python中的换行与不换行

换行实现:print(‘’) 单引号里写要输出的内容

不换行实现:python (‘’,end=‘’)
第一个单引号里写要输出的内容,第二个单引号填写与另一个输出内容之间相隔的内容

5. 改变List<Map<String,Object>>中某个对象的某个属性的值

for (int i = 0; i < logsList.size(); i++) {
					if(logsList.get(i).get("is_password_less").equals("0")) {
						logsList.get(i).put("is_password_less", "否");
					}else {
						logsList.get(i).put("is_password_less", "是");
					}
				}

6.精确到毫秒的字符串获取

SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS"); //精确到毫秒

String suffix = fmt.format(new Date());

7. There is no getter for property named ‘hostName’ in ‘class java.lang.String’

传入sql语句中的参数形式不对

8. Could not resolve type alias ‘interfacesList’. Cause: java.lang.ClassNotFoundException: Cannot find

<select id="selectAllInterface" resultMap="interfaces">
		select * from interface
	</select>

中的resultMap错误的写成了resultType

9.在下拉框使用map显示数据时,出现map of not defined

<Select placeholder="请选择接口所属类别" >
	 {this.state.type.map(typeNameOption)}
</Select>

未定义type为数组类型 type:[]

10.点击按钮,不能调用函数,而且显示函数名未定义

例如:将{this.add}换为{self.add}

11.向list集合中添加数据不成功

例如:向一个集合中添加一个实体类时,实体类中是有数据的但是却显示实体类为null,可能原因是只是声明了集合,并没有new

12.tomcat停止过程报错

查看端口号进程

在这里插入图片描述

表明已经关闭了

注意:tomcat在已经启动或者已经关闭的情况下再次启动或者关闭则会报错

13.mybatis配置文件中报错

例如http://mybatis.org/dtd/mybatis-3-mapper.dtd报错

解决办法:

pom.xml文件中没有相应的依赖

<dependency>
          <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
  </dependency>

14 Uncaught TypeError: Cannot read property ‘validate’ of undefined

this.props.form.validateFieldsAndScroll的验证数组里的内容不对

15redis.properties文件的配置和说明

redis.timeout=3000 #超时时间:单位ms

redis.password=123456 #授权密码

redis.pool.maxActive=200 #最大连接数:能够同时建立的“最大链接个数”

redis.pool.maxIdle=20 #最大空闲数:空闲链接数大于maxIdle时,将进行回收

redis.pool.minIdle=5 #最小空闲数:低于minIdle时,将创建新的链接

redis.pool.maxWait=3000 #最大等待时间:单位ms

redis.pool.testOnBorrow=true #使用连接时,检测连接是否成功

redis.pool.testOnReturn=true #返回连接时,检测连接是否成功

通配符的匹配很全面, 但无法找到元素 ‘jaxws:endpoint’ 的声明

Spring的配置文件中的xsi中少了

http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd

17.cxf中客户端接口类生成

在这里插入图片描述

18.使用@WebService注解后类名报错

该类必须在一个包下。

19.com.lambdaworks.redis.RedisException:NOAUTH Authentication required.

设定密码后重启redis服务

20.'net’ 不是内部命令或外部命令,也不是可运行的程序或批处理文件

我的电脑–>属性–>高级–>环境变量 path的变量值新加: %SystemRoot%\system32

修改完成后,需要重新打开cmd命令行,否则不会生效的。

若出现“java”不是内部命令或者外部命令时是因为环境变量没有添加成功

21.pom.xml文件中${spring.version}报错

需要在pom文件中定义:


<properties>
<spring.version>4.0.2.RELEASE</spring.version>
</properties>

才可以在下面引用:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
</dependency>

22.将一个服务器上的文件传输到另一个服务器上的scp命令

两台机器IP分别为:A.104.238.161.75,B.43.224.34.73。

在A服务器上操作,将B服务器上/home/lk/目录下所有的文件全部复制到本地的/root目录下,命令为:scp
-r root@43.224.34.73:/home/lk /root。

23.tomcat启动后产生文件

Tomcat启动后产生Catalina文件

24.linux使用下的常见命令

unzip FileName.zip 解包后原始文件仍存在

tail -f catalina.out 查看日志

ps -ef|grep tomcat名 查看tomcat相关信息

kill -9 pid 杀进程

启动和关闭tomcat在logs目录下

25.在bin文件中启动tomcat时,错误:-bash: ./startup.sh: Permission denied

解决办法:

用命令chmod 修改一下Tomcat的bin目录下的.sh权限就可以了

如chmod u+x *.sh

26.Linux Tomcat 关闭失败:Connection refused (Connection refused)

处理方法:

1.查看tomcat的状态:

ps -eaf | grep tomcat

出现:

root 12038 1 0 13:41 ? 找到tomcat的进程号

  1. kill -9 12038 杀死进程

3.重新结束tomcat ./shutdown.sh 时,就会出现下图,不会出现 Connection refused
(Connection refused)异常

27.查询日志时java.lang.ClassNotFoundException: org.apache.hadoop.util.ShutdownHookManager$2

hbase启动时链接出问题。可重启tomcat

28.SpringBoot项目运行报错Failed to configure a DataSource: ‘url’ attribute is not specified and no embedde

解决方法:

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

29.idea怎么去掉thymeleaf 模板变量取值时显示的红色波浪线?

File -> Settings -> Editor -> Inspections找到Thymeleaf,将后边的√取消选中。

30.在Spring Boot中使用 @ConfigurationProperties 注解

@ConfigurationProperties主要作用:就是绑定application.properties中的属性

31.Cannot read property ‘getFieldDecorator’ of undefined

需要对组件进行Myform = Form.create({})(Myform);

32.“ConfigPageForm” is read-only,ConfigPageForm为React中创建的类

const ConfigPageForm = Form.create()(ConfigPageForm);//命名不能相同。可命名如下

const ConfigPage = Form.create()(ConfigPageForm)

33.线程遍历出错

list遍历线程需要加泛型才能遍历。

34.linux命令解压文件到指定目录

unzip 要解压的文件名全称 -d 指定目录名

35.idea运行提示Error:java:无效的源发行版:1.9

解决方案:File->Project Structure->Project->Project language level

如果你是jdk1.8 改到8即可

36.解压war包到指定目录

unzip common.war -d common

37.expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it’s defined in, or you might have mixed up default and named imports.

import {Button, Input} from “antd”;和import {List} from “antd/lib/list”;冲突

应合并为import {Button, Input,List} from “antd”;

38.同一地址下,将一个文件复制到另外一个目录下

cp -r dir1 dir2

例如将第一个目录下的real文件复制到dir2目录下(dir2目录下无此文件)

cp -r real dir2 real

39.java.io.IOException: java.lang.reflect.InvocationTargetException

Hbase连接的包多引入了,例如同时引入了:hbase-protocol-1.2.0.jar和hbase-protocol-0.98.1-cdh5.1.3.jar

40.删除文件的linux命令

1.删除整个文件夹以及文件夹里所有的内容

rm -R 文件名

2.删除以 -f 开头的文件

[root]# touch ./-f

[root]# ls ./-f

./-f

[root]# rm ./-f

3.常规删除a.txt文件

rm a.txt

  1. 强行删除file.log文件

rm -f file.log

41.项目放入tomcat中不报错,访问时报404

可能原因:1.打包后的项目里没有class文件

2.web.xml中没有内容

42.在idea中从远程仓库拉代码时报错:error setting certificate verify locations:

打开git bash窗口
执行命令:

git config --system http.sslverify false //关闭证书校验

43.连接vpn出现NC未连接(IP地址或者路由配置失败)

解决方案一:重置电脑

因一直没有找到解决办法,便重置电脑后问题得以顺利解决,成功连接vpn

44.杀掉含有8098的所有进程

pgrep -f 8098|xargs kill -s 9

45.mybatis中写入批量操作sql语句(以分号分隔的)时,运行过程中报错

You have an error in your SQL syntax;

解决方案:需要在配置文件中spring.datasource.url中添加allowMultiQueries=true

否则会不识别这样批量的sql语句

46.Mybatis中将字符串转为日期格式类型

to_date(#{CREATE_DATE},‘YYYY/MM/DD HH24:mi:ss’)

47.mybatis中写sql语句时使用小于等于大于符号的转换方式

第一种写法:
原符号 < <= > >= & ’ "
替换符号 < <= > >= & ’ "
第二种写法:
大于等于

<![CDATA[ >= ]]>

小于等于

<![CDATA[ <= ]]>

例如:sql如下:

mc_end_date <![CDATA[ >= ]]> #{endTime} and mc_start_date <![CDATA[ <= ]]> #{startTime}

48.调用getClass报空指针

当值为null时,null.getClass会报空指针

49.JSONObject中存放有序数据

JSONObject jsonObject = new JSONObject(16,true)

50. java.lang.IllegalArgumentException: Illegal character in scheme at index 0 的几种解决方式

第一种 ASCII装换问题.链接http://blog.csdn.net/ismr_m/article/details/46383313

第二种发送url时的转化问题,

使用URL u = new URL(原url)转化

第三种,访问地址时需要有http:// 作为开头

51.Sql语句update返回影响的行数

下面的两种情况均返回0:

   1、没有找到需要更新的数据

比如,我们进行update的时候,条件是id=5,但是id=5的数据不存在。这种情况下,更新是失败的,返回0,很正确;

   2、要更新的数据和更新的值是完全一样的

比如,我们要对id=5的记录进行更新,把title变成hello。虽然这条记录存在,但是这条记录的title本来就是hello,那么,返回值也是0;

但是使用mybatis的时候,结果却不是这样的,执行两次的时候,发现update返回的影响行数始终是1。后面跟踪发现,原来mybatis这个第三方持久化框架返回来的是被匹配的影响行数,所以返回的始终是1,那如果想要以返回的行数作为判断结果,需要在mybatis连接数据库的时候加上参数,

jdbc:mysql://${jdbc.host}/${jdbc.db}?useAffectedRows=true

52.查询端口号是否被占用的linux命令

netstat -anp|grep 端口号

以5000端口为例:
#netstat -anp |grep 5000
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 28629/python
看监控状态为LISTEN表示已经被占用,最后一列显示5000端口被服务python占用,查看具体端口号,只要有如上这一行就表示被占用了。

53.mysql中在查询的时候遇到某个字段下的数据为NULL时指定为特定的值代替NULL

以0代替NULL为例

当表A中的字段q中的数据为NULL时用0代替

Select (CASE WHEN q IS NULL THEN 0 ELSE q END) as qs from A

或者用函数IFNULL(q,0)

54. mysql sum为空时默认显示0

做网站时,特别是电商有关的网站时,经常用到sum,我们预期的结果是没有值时显示0,但很多时候事与愿违,我们得到的值是NULL。

这个时候我们需要用到mysql的函数COALESCE,作用是将返回传入的参数中第一个非null的值。

解决办法

函数示例,例如:

SELECT COALESCE(NULL, …一长串NULL…,NULL, 1);

返回值为1

商品数量求和代码示例,例如:

SELECT COALESCE(sum(num),0) AS pro_num FROM product;

55.sql中将两列字段中的内容相连接

Select concat(trim(列名1),trim(列名2))

from 表名;

56.数据库中两张表的全连接

select * from TableA full join TableB on TableA.id=TableB.id

注:mysql不支持FULL JOIN,解决办法:right join + union + left join

两张表时:

select  * from A left join B on A.id = B.id (where 条件)
union
select  * from A right join B on A.id = B.id (where条件);

57.数据库两张表连接的方法

1.根据某个字段内容相等连接(普通连接)

select s.name s_name,s.sex s_sex,c.name c_name

from student s,class c

where s.s_id=c.s_id

2.inner join(内连接)

select s.name s_name,s.sex s_sex,c.name c_name

from student s inner join class c on s.s_id=c.s_id

结果和普通连接没有什么差别

3.left join ;right join ; full join 写法同上

普通连接和 inner join连接没什么差别!

left join:左表所有行都输出,如果找不到右表对应字段,即该字段为null

right join:右表所有行都输出,如果找不到左表对应字段,即该字段为null

full join:左右表行全部对应输出,如果找不到对应字段,即为null

58.判断map为空的情况下(避免出现空指针异常)

map==null||map.size()==0

59.运行程序时打印mybatis中执行的sql语句

mybatis 的配置文件中添加一行代码如下即可,

<setting name="logImpl" value="STDOUT_LOGGING" />

60.判断字符串为空的情况(避免出现空指针异常)

str!=null && str.length()!=0

61. Mysql 一个字段定义成int类型,查询时传入String能查询成功的原因

mysql会隐式转换,int类型的字段传入字符串会截取从第一位int型开始到第一个非int型的值作为条件

62. ibatis模糊查询的like '% n a m e name name%'的sql注入避免

用like '% n a m e name name%'的方式,其实这种方式会造成sql注入。ibatis对于$符号的处理是默认不加’‘号的,所以如果传入的参数是:

1’或者是1231%’ or 1%’ = ‘1这些形式就回造成注入危险。
解决是避免用like ‘% n a m e name name%’,可以进行字符的拼接进行规避,比如oracle:like ‘%’||#name#||’%‘;mysql:like concat(’%‘,#name#,’%');
注意:mybatis中能用#{}传参的就不要用${}

63. HTTP 400 错误 - 请求无效 (Bad request)

在ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad
request);出现这个请求无效报错说明请求没有进入到后台服务里;

原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;

2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;

解决方案:

1)对照字段名称,类型保证一致性

2)使用stringify将前端传递的对象转化为字符串 data: JSON.stringify(param) ;

64.字符串在转为JSONObject过程中保持字符串中的内容原有顺序不变。

JSONObject.parseObject(inparam,Feature.OrderedField)

65. Mybatis 查询的结果集,列的顺序如何去控制

设置resultType=“java.util.LinkedHashMap”,为保证查询的字段值有序(存入与取出顺序一致)所以采用LinkedHashMap。获取返回值的函数也应统一设置为LinkeHashMap

66.项目集成单点,登录后访问项目报“没有权限登录本系统”

securityServiceURL地址不对

67. MYSQL中批量替换某个字段的部分数据

update table set url= replace(url, 'aaa', 'bbb')

【将url字段中的aaa批量更改为bbb】

68. #{}与${}区别

#{}将传入的参数当成一个字符串,会给传入的参数加一个双引号

${}将传入的参数直接显示生成在sql中,不会添加引号

#{}能够很大程度上防止sql注入,${}无法防止sql注入

69. mybatis中传入动态的表名或者字段名

要实现动态传入表名、列名,需要做如下修改
添加属性statementType=”STATEMENT” (可省略)
同时sql里的所有变量取值都改成${xxxx},而不是#{xxx}

在实践过程中发现出了传递表名时需要用$,其他将把要传入的列名写成#{ColumnName}成功实现了

70.null调用静态方法和非静态方法

null调用非静态方法会报空指针异常

null调用的方法是类中声明的静态方法,也就是类方法,类方法是属于类的。通常使用类作为调用者来调用类方法,但我们也可以使用对象来调用类方法,其效果与通过类调用完全一样。当使用实例来调用类方法时,实际上依然是委托给该类来访问类成员,因此即使某个实例为null,它也可以访问它所属类的的类成员,而不发生空指针异常。

71. 关于java8接口中默认方法的使用

java8在接口中引入了默认方法,通过在方法前加上default关键字就可以在接口中写方法的默认实现,有点类似于C++中的多继承,但是当多个接口或父类中有相同签名的方法时,会引发一些问题,经过实验得出如下结论:

1.当继承的父类和实现的接口中有相同签名的方法时,优先使用父类的方法。

2.当接口的父接口中也有同样的默认方法时,就近原则调用子接口的方法。

3.当实现的多个接口中有相同签名的方法时,必须在实现类中通过重写方法解决冲突问题,否者无法通过编译,在重写的方法中可以通过
接口名.super.方法名(); 的方式显示调用需要的方法。

72. mybatis 打印SQL语句

方法一:
在mybatis-config.xml中配置加一个setting

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 打印查询语句 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
</configuration>

如果是spring集成mybatis的话,在sqlSessionFactory配置好configLocation属性

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:conf/mybatis-config.xml"></property>
        <!-- 自动扫描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:com/jstudio/user/dao/*.xml"></property>
</bean>

方法二:
首先将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句

###显示SQL语句部分

log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.Java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

73. MySQL|MyBatis如何实现批量插入数据时如果存在就更新或者忽略

首先,需要实现更新或忽略的数据的判别字段必须是主键或存在唯一索引(可以是单列或多列)。
比如要根据id判断是否重复,那么id必须是主键或者存在唯一索引。
比如要根据rid + type + date判断是否重复,那么要建立3个字段联合的唯一索引。
然后就是修改SQL了,如下

存在就更新:REPLACE INTO 表名(字段1, 字段2, …) VALUES(值1, 值2, …), (值1, 值2, …);

存在就忽略:
INSERT IGNORE 表名(字段1, 字段2, …) VALUES(值1, 值2, …), (值1, 值2, …);

74.计算一列数据下的多行值的和

sum(要计算的列的列名)
在这里插入图片描述

select sum(this_value) from index_overview where index_id='MHRHR001' and dept_code = '10.02.001'

在这里插入图片描述

75. 数字格式化类DecimalFormat

DecimalFormat是NumberFormat的一个具体子类,用于格式化十进制数字。
在日常开发中用的较多的是对java Double保留两位小数;

DecimalFormat df=new DecimalFormat(".##"); 
double d=1252.2563; 
String st=df.format(d);

76.Spring Boot 2.2.0 Spring HateOas启动问题

Parameter 0 of method linkDiscoverers in org.springframework.hateoas.config.HateoasConfiguration required a single bean, but 15 were found:
	- modelBuilderPluginRegistry: defined in null
	- modelPropertyBuilderPluginRegistry: defined in null
	- typeNameProviderPluginRegistry: defined in null
	- documentationPluginRegistry: defined in null
	- apiListingBuilderPluginRegistry: defined in null
	- operationBuilderPluginRegistry: defined in null
	- parameterBuilderPluginRegistry: defined in null
	- expandedParameterBuilderPluginRegistry: defined in null
	- resourceGroupingStrategyRegistry: defined in null
	- operationModelsProviderPluginRegistry: defined in null
	- defaultsProviderPluginRegistry: defined in null
	- pathDecoratorRegistry: defined in null
	- relProviderPluginRegistry: defined by method 'relProviderPluginRegistry' in class path resource [org/springframework/hateoas/config/HateoasConfiguration.class]
	- linkDiscovererRegistry: defined in null
	- entityLinksPluginRegistry: defined by method 'entityLinksPluginRegistry' in class path resource [org/springframework/hateoas/config/WebMvcEntityLinksConfiguration.class]


Action:

Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed

2019-10-29 11:23:47.459 ERROR 3640 --- [           main] o.s.test.context.TestContextManager      : Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener@20140db9] to prepare test instance [com.protect.fence.FenceApplicationTests@76bf1bb8]

java.lang.IllegalStateException: Failed to load ApplicationContext

此处由于我引入了版本为2.2.2的springfox,将其改为了2.6.1版本得以解决

如果有

<dependency>
  <groupId>org.springframework.hateoas</groupId>
  <artifactId>spring-hateoas</artifactId>
</dependency>

则可用如下代替

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>

77.navicat 连接 mysql 出现Client does not support authentication protocol

打开MySQL command Line Client

在这里插入图片描述

USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '安装mysql时设置的密码';

78.@ApiModelProperty>

@ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改
value–字段说明
name–重写属性名字
dataType–重写属性类型
required–是否必填
example–举例说明
hidden–隐藏

@ApiModel(value="user对象",description="用户对象user")
public class User implements Serializable{
    private static final long serialVersionUID = 1L;
     @ApiModelProperty(value="用户名",name="username",example="xingguo")
     private String username;
     @ApiModelProperty(value="状态",name="state",required=true)
      private Integer state;
      private String password;
      private String nickName;
      private Integer isDeleted;
 
      @ApiModelProperty(value="id数组",hidden=true)
      private String[] ids;
      private List<String> idList;
     //省略get/set
}

79.调用System.gc()

有时候调用此方法不起作用可以采用如下方式调用

System.gc();

runtime.runFinalizationSync();

System.gc();

80.字符串的length(),isEmpty()方法以及字符串判空

1.字符串中的length()方法和isEmpty()方法只能在字符串变量不为null时使用,否则会报错空指针异常(注意其实isEmpty()方法中也是对值的长度进行了判断)
2.字符串判空

if(str!=null && !"".equals(str)){
            System.out.println("非空字符串");
        }
if(str!=null && str.length()!=0){
            System.out.println("非空字符串");
        }
if(str1!=null&&str!=""){
            System.out.println("非空字符串");
        }

81.项目中HashMap使用注意

在mybatis中写sql查询语句时,将查询数据返回类型定义为Java.lang.HashMap时需要特别注意。在拿到返回值时对于可能出现某些列数据没有的情况,在mybatis中对于这种某个字段下没有数据时是不会返回该字段,故若要使用时一定要判断这个字段是否存在
若想让null值也返回时则需要在mybatis文件中添加如下配置

<setting name="callSettersOnNulls" value="true"/>

82.多环境部署项目中应注意的问题

多个环境上的项目共用了同一套数据库,当项目中包含了定时器的功能,定期的对数据库进行操作或者发邮件会导致数据库中的数据被操作多次或者发多次邮件
解决办法:1.一、固定执行定时任务的机器
在多台机器中选择一台执行定时任务,每次执行的时候回判断当前机器和指定的机器是否一致或者启动时就指定好执行机器
优缺点:这种方法是可以有效避免多次执行的情况,,但是最明显的缺点就是单点故障问题,如果你指定的机器出现了宕机,任务就不会执行了,业务逻辑就会崩溃。
2.在数据库建立表,从定时任务表中获取定时方法
由于MySQL存在表锁和行锁,每次执行定时任务的时候从数据库表中读取记录,只有读取到的记录标识当前任务状态为未执行时,当前机器才会去触发任务,并且更新数据库状态(先更新,再执行),由于存在表锁和行锁,因此同一时刻只能有一个事务操作,可以保证只执行一次
优缺点:这种方法是一种比较合适的方式,但是需要有多张表,并且已经做了定时器逻辑上会有较大的改动

83.JSONObject中的toString和getString

从jsonObject中获取数据然后传为字符串时采用getString方法好与get().toString()方法,后者在获取数据时当遇到值为null时会报空指针异常(toString()方法是指把对象转换成字符串的一个方法)

JSONObject jsonObject = new JSONObject();
jsonObject.put(“a”,null);  //null不是对象
jsonObject.getString("a");
jsonObject.get(“a”).toString();// java.lang.NullPointerException 

84.从循环中的列表中操作元素

不要在 foreach 循环里进行元素的 remove/add 操作,如果要进行remove操作,可以调用迭代器的 remove方法而不是集合类的 remove 方法
原因:之所以会抛出ConcurrentModificationException异常,是因为我们的代码中使用了增强for循环,而在增强for循环中,集合遍历是通过iterator进行的,但是元素的add/remove却是直接使用的集合类自己的方法。这就导致iterator在遍历的时候,会发现有一个元素在自己不知不觉的情况下就被删除/添加了,就会抛出一个异常,用来提示用户,可能发生了并发修改。

85.服务器上的项目获取数据库中数据乱码

当数据库编码,表的编码,字段的编码,以及项目中也设置了存取数据编码格式都为utf-8时却出现了部分功能获取到的数据是乱码问题时我们选择了重启tomcat,然后问题得以解决,具体原因我也不知道(所有应该设置字符编码格式的地方都设定了utf-8了。

86.mysql中使用sum函数返回为null导致整型接收返回值出现异常

可使用coalesce,函数的意思是返回参数列表中第一个为空的值,该方法允许传入多个参数,例如COALESCE(SUM(colum),0) 可将当没有符合的条件查询出来导致sum函数返回结果为null时给返回为0.

87.设定mysql中表的时间字段在insert和update时自动更新

Alter TABLE table_name MODIFY insert_time datetime NOT NULL 
  DEFAULT NOW() 
  ON UPDATE NOW()

88.生成根据表名前缀删除表的sql语句

SELECT
    CONCAT(
        'DROP TABLE ',
        GROUP_CONCAT(table_name),
        ';'
    ) AS statement
FROM
    information_schema. TABLES
WHERE
    table_schema = 'user_test'
AND table_name LIKE 'lila%';

89.sql报错:Error creating document instance. Cause: org.xml.sax.SAXParseException;

原因:在xml的sql语句中,不能直接用大于号、小于号要用转义字符
解决办法如下:

90.Windows将文件夹打包成war包;

打开cmd控制台,进入要打包的文件夹,使用命令:jar -cvf 文件名.war *

91.springbooot2以后jpa包里没有findOne函数解决办法

使用findById(id).get()替换findOne();其他函数例如delete(id)替换 为deletById(id)

92.程序插入TIMESTAMP类型到mysql时间相差8小时

在程序连接mysql的url后面添加serverTimezone=Asia/Shanghai

93.secureCRT通过ssh2连接主机

94.程序调用执行mysql中的存储过程报错Parameter number 2 is not an OUT parameter

解决办法:在连接 URL 中加上 &noAccessToProcedureBodies=true

95.Mybatis使用statementType="STATEMENT"实现动态传入表名或字段名注意:

mybatis中使用statementType="STATEMENT"实现动态传入字段名时一直报语句错误,但实际上语句并没有毛病,记录一下。

整条语句中里所有传入的值都要使用${xxx},不能使用#{xxx}
当用mybatis的时候习惯用HashMap映射sql结果,比较少用实体类,其实道理是一样的,就算用实体类也会有动态列返回结果时出现一些问题。这是因为mybatis或ibatis默认是预编译的,当项目在启动的时候就把sql返回的映射结果先预编译了一遍,映射回去的列是固定的,当再次查询改变列名的时候就拿不到值变成null了,怎么解决这个问题呢。
要实现动态调用表名和字段名,就不能使用预编译了,mybatis需添加statementType=“STATEMENT”

96.oracle函数转mysql函数

日期函数:
sysdate => sysdate() 或者 now();

转字符串
to_char => cast(列名 as char);

上一个月的日期字符串:
DATE_FORMAT(DATE_ADD(now(), interval -1 month), ‘%Y-%m’);

日期转字符串
TO_CHAR(sysdate,‘yyyy-MM-dd’) => DATE_FORMAT(sysdate(),‘%Y-%m-%d’);
DATE_FORMAT(sysdate(),‘%Y-%m-%d %H:%i:%s’)

字符串转数字
to_number =》 CAST(‘数值’ AS SIGNED INTEGER)

字符串拼接:
|| => concat;

字符串转日期:
TO_DATE(‘20230322’,‘yyyyMMdd’) =》str_to_date(‘20230322’,‘%Y%m%d’)

97.vue3页面报错:Maximum recursive updates exceeded. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.

返回的类型不对

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值