1、isNotBlank和isNotEmpty的区别
- isNotBlank等价于str != null && str.length > 0 && str.trim().length > 0,如果是全部为空格的字符串,结果为false,即认为“ ”为空字符串;
- isNotEmpty则判断全是空格的字符串为true,认为“ ”是不为空的,即等价于str != null && str.length > 0;
2、把hash中存放的list转化回list
List dataList = (List) hash1.get(“data”);//需要强制类型转换
3、开发流程
-
代码自己建了分支,然后开始编码;
-
提交代码也是到了自己建的分支了,主干上新提交的东西也不会到自己这里了;
-
数据库自己建用户,导库到自己的用户下;
-
提交测试,准备好数据库,数据库要把逻辑表(即需要用户和实施人员造数的表)中的数据清除;
-
再次提测需要建版本,需要把修改的sql写到updateLog中,这样数据库就是脚本增量更新了;
4、jsp中的el表达式都可以在哪里使用?
报表每周开始时间,读取报表设计中的开始时间—直接用el表达式接收后台传递的数据即可;
//时间控件中的属性直接使用
<input id="weekStrat" readonly="readonly" type="text" class="form-control Wdate" onClick="WdatePicker({firstDayOfWeek:${firstDayOfWeek},isShowWeek:true,onpicked:onpicked,isShowClear:false})" />
//js中定义变量接收
<script>
var jsonHr = ${jsonHr};//这是json对象
//使用:if (jsonHr !=null && jsonHr.data != null) {}
var wzUrl = "${wzUrl}";//这是普通字符串
//使用:url:wzUrl+"/a/mms/mmStackManageJsonP"
</script>
5、mybatis传递多个参数的方式?
- 参数前加上@param注解;
- xml文件中使用#{0},#{1}按照顺序接收参数(不建议,顺序调整会出错,不直观);
- map类型作为参数,xml文件中写map中封装的key;
- 把参数封装为实体类;
6、列表页点击查询按钮和回车请求到的数据不一致?
其实是请求了不同的路径:查询调价的form表单如果写了action的话,那么点回车就会走action的url,而不是bootstrapTable的请求,所以要把这个action的url写成空字符串;
7、加减乘除计算相关的精度问题?参考
//使用double或者float都会有精度问题,所以要注意这里,使用BigDecimal
BigDecimal bi1 = new BigDecimal(priReportFillDetail.getValue());
BigDecimal bi2 = new BigDecimal(priBreedSpec.getUnitRate());
if(scale == 0){
//不需要保留小数
BigDecimal divide = bi1.divide(bi2);
priReportFillConvert.setValue(divide+"");
}else{
//指定保留小数位数(除数,小数位数,小数模式)
BigDecimal divide = bi1.divide(bi2, scale, RoundingMode.HALF_UP);
priReportFillConvert.setValue(divide+"");
}
bignum3 = bignum1.add(bignum2); //加
bignum3 = bignum1.subtract(bignum2); //减
bignum3 = bignum1.multiply(bignum2); //乘
8、序列化实体字段为空情况的解决?
- 如果必定返回的字段,可以在实体类一开始就给默认值(如字符串 ”” ; list [] )来避免null;
- jackson实体转json时,某个属性不参加序列化时 使用@JsonIgnore 放在该属性上;
9、使用正则表达式判断一个字符串为小数(考虑小数点)或者整数?
value.matches(" ^ [0.0-9.0]+$") == true
10、清除数据库的表数据?
直接Delete from 表名;
11、java中提取数字?
public static void main(String[] args) {
String a="love23next234csdn3423javaeye";
String regEx="[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(a);
System.out.println( m.replaceAll("").trim());//232343423
}
// 计算新添加的数据的组织机构编码001003
String str = currentCode.substring(currentCode.length() - 3);
// 截取从不是0的数字开始的字符串
Pattern p = Pattern.compile("[^1-9]");
Character ch = p.matcher(str).replaceAll("").trim().charAt(0);
code = Integer.parseInt(str.substring(str.indexOf(ch)));
12、时间控件只显示年月?
<input id="remarks" name="remarks" type="text" maxlength="20" class="laydate-icon form-control layer-date " onclick="WdatePicker({dateFmt:'yyyy年MM月'})"/>
13、获得指定日期的后一天的数据?
// 获得endDate的后一天,因为后一天可能不是同一个月份了,所以这里是不可以直接加一的,应该用calander
Calendar calendar = Calendar.getInstance();
calendar.setTime(endDate);
int endDay = calendar.get(Calendar.DATE);
calendar.set(Calendar.DATE, endDay + 1);
Date fillDate = calendar.getTime();
14、tomcat配置文件中的http协议与ajp协议?
-
http连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。tomcat与浏览器交互。
-
ajp连接器监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。AJP连接器可以通过AJP协议和一个web容器进行交互。tomcat与tomcat交互。
15、粮协都是外网项目,展会需要报名的话,再让用户登录;文章发布的时候是可以设定查看权限的;
未登录的话看到一部分功能,看到的文章也都是静态化的文章,登录后看到的文章都是从数据库中查询出来的;
oracle中一个用户一个实例,每个子系统可能都对应一个自己的实例,但是部署的时候,其实只部署了一个数据库;部署在dmz分区;
16、字符串去除最后一个字符?
str.substring(0,str.length()-1);
使用情况:字典的值都是10,20这种,但是使用周期的时候,只需要使用1,2,3这种;
17、如果自己不花时间去沉淀,那么只会一直改bug;
要考虑怎么才能写出没有bug的东西;ie兼容性啊之类的;空指针异常啊,怎么避免常见的bug,怎么做到不在同一个坑摔倒。
看任何一篇文章都不能盲目的去相信,要实践验证再验证;
总结的时候不一定完全正确,但是肯定是在进步;
18、直接双击mysql的服务的话,可能会闪退,看一下服务是否开启;或者直接用cmd进行连接mysql;
19、解决Navicat 出错:xxx is not allowed to connect to this MySql server;
可能是因为不允许远程登录,只能通过localhost,所以直接不用ip地址了,用localhost通过navicat连接mysql即可;
20、oracle突然无法进行远程连接了,显示监听错误(ORA-12514);
检查与之有关的服务是否开启,如果没有开启就启动,开启了的话,重新启动,若是都没有作用的话,就需要改对应的配置文件了;
21、获得项目中的指定文件夹的路径
// 获得项目的路径
request.getSession().getServletContext().getRealPath(“/”)
// 当时这样写了,想要获得导出路径,但是只能获得项目名,对应的文件夹也建了就是无法获得
// 查看了具体的代码才知道还要在配置文件中写:exportMoudle=userfiles/exportMoudle
// 获得导出的路径,这里的参数其实是配置文件中的key,而不是文件夹的名称
String p = request.getSession().getServletContext().getRealPath(Global.getConfig("exportMoudle"));
/**
* 取出Property,但以System的Property优先,然后找自己的配置文件是否配置了key,取不到返回空字符串.
*/
private String getValue(String key) {
String systemProperty = System.getProperty(key);//获取系统变量
if (systemProperty != null) {
return systemProperty;
}
if (properties.containsKey(key)) {// private final Properties properties;
return properties.getProperty(key);
}
return "";
}
22、取整?
- 四舍五入正数的话,可以用round;
round(-1.5)所得到的结果是-1;(-1.5+0.5=-1)
计算方法就是值加上0.5后取整; - 或者用String.format("%.2f", d);
23、Spring的@ModelAttribute注解?
被@ModelAttribute注释的方法会在此controller每个方法执行前被执行;
因此对于一个controller映射多个URL的用法来说,要谨慎使用;
24、日期类与字符串类互相转换?
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.parse(str);// 解析指定格式的字符串为date类型
sdf.formate(date);// 格式化date类型
25、删除表数据drop、truncate、delete?
- drop是摧毁结构和数据,即彻底删除指定表;
- truncate是删除数据、释放空间,但是不会删除定义;若主键自增,那么使用truncate后,id为1;
注意:truncate 不能删除行数据,要删就要把表清空;truncate同不加where的delete效果一样,但 truncate 比 delete速度快,且使用的系统和事务日志资源少(delete是一行一行删除的); - delete是删除数据,不释放空间,不删除定义;若主键自增,原来有三条数据,那么使用delete后,id为4;
26、SpringMvc中的@Value 注解可以获取到properties文件中的值;
但是需要在配置文件中配置;
下面的注解写在controller上面可以统一管理访问路径,需要在properties中配置adminPath;
@RequestMapping(value = “${adminPath}/sys/user”)
27、报错CannotGetJdbcConnectionException可能是jdbc.properties的key值问题,只要把username换成user就可以;和用的数据库连接池有关系,看对应官网是如何配置的,key肯定都是封装好的;
28、