JAVA问题
1.httpss问题
要将http转为https的需求,此时使用replaceAll("http","https")会出现将“https”中前一部分“http”转为了“https”,导致出现“httpss”。解决办法是replaceAll("http://","https://")或者加判断url.contains("https").
2.启动项目问题
tomcat启动时会报各种类初始化、注入失败的错误。
检查第一步:看一下项目的jar包,有可能和tomcat自带的jar包冲突
二,jdk和tomcat的版本兼容问题,记住tomcat的版本高,jdk的版本低,tomcat v7.0-------support-------->Java EE 5 and 6
tomcat v8.0-------support-------->Java EE 5,6 and 7
tomcat v8.5-------support-------->Java EE 5,6 and 7
tomcat v9.0-------support-------->Java EE 5,6,7 and 8
三,java Compiler版本要和jdk一致。
3.BigDecimal的使用
BigDecimal在做除法divide时,最好加上a.divide(new BigDecimal("100"), 2, BigDecimal.Round_HALF_UP),这样做能方式结果为无线循环小数时报错java.lang.ArithmeticException: Rounding necessary
4.路径问题
windows和linux的规则不一样。
windows使用\,但程序可能不识别这个符号,所以最好的写法是:C:\\A\\B\\C。
linux使用的是/。
最省力的写法是使用java.io.File的separotor。这个是获取系统的分隔符,在windows是\,在linux是/。
5.SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”)
下滑线部分如果不规范会导致格式化的时间错误。
5.RequestBody和ResponseBody
@RequestBody放在参数上用于将前台传输的json数据(必须为application/json格式)封装成实体类,一般在POST请求中使用。
@ResponseBody:在加了@RequestMapping后,返回值通常解析为跳转路径,所以会出现访问结果为404找不到相关页面,而在方法上加上@ResponseBody后,返回结果会直接写入HTTP 的response体中返回。
@ResponseBody
@RequestMapping(value = "")
public List<String> getData(@RequestBody User user){
}
6.往服务器存文件
逻辑为用FileInputStream读文件,用FileOutputStream写文件。在此过程中涉及LInux文件路径的问题,例如:需要存文件至/static/excel下,单纯写这个字符串是没有用的,报错FileNotFound,应该在前面加上webroot项目根目录。此外,文件要使用File创建:File dir + new File(webroot+"/static/excel"),并加上判断if(!dir.exist){ dir.mkdir();}.
数据库
1.count和distinct同用
count(distinct a),多个字段时count(distinct a,b)会报错,
正确的写法是select count(*) from (select distinct a,b from 表)
或者将需要distinct的字段拼接为一个字段select count(distinct(a+b+c)) from 表
2.取差集
在ORACLE中使用except会报错,因改用minus,并且保持查询出的结果集保持一致。
3.查询字段需要双引号
如果使用了navcate创建了表,会自动加上双引号,这样创建的表需要加双引号查询。如果加了双引号,Oracle不会将其转为大写,否则Oracle会将所有sql转为大写去数据库执行。
4.ORACLE数据库最高水位线
表占20G,HWM为20G,即使删除数据最高水位线依旧为20G,
方法:ALTER TABLE 表名 MOVE
执行上述语句后索引会失效,需重建索引:ALTER INDEX 索引名 REBUILD.
5.ORACLE转大写
ORACLE会将所有语句转为大写执行,所以在写sql是尽量写大写,减少oracle使用资源。
6.char
oracle中会自动补足char后面的空白,例如char(10), 你插入12345,则数据库结果为12345加五个空格,多表查询会出错。
7.模糊查询
一般的模糊查询使用like %%,多个查询条件时使用REGEXP_LIKE
用法:REGEXP_LIKE(字段名, '(匹配串1|匹配串2|...)') //全模糊匹配
REGEXP_LIKE(字段名, '^(匹配串1|匹配串2|...)') ";//右模糊匹配
REGEXP_LIKE(字段名, '(匹配串1|匹配串2|...)$') ";//左模糊匹配