Sonar问题(三)Security - Potential CRLF Injection for logs 出现这个问题的大致意思就是日志没有进行对CRLF注入进行校验,存在传参时发生空格注入,具体字段是/r/n。项目中是直接使用@SLF4J这个注解进行日志打印的,这其中并没有进行防注入校验。上述方法过于繁琐,不如直接新建一个日志工具类,然后重写打印方法,在方法中加入注入校验,调用的时候直接调用工具类中的方法即可。方法一:针对每一条参数加上。
Sonar问题(二):Performance - Inefficient use of keySet iterator instead of entrySet iterator 描述:This method accesses the value of a Map entry, using a key that was retrieved from a keySet iterator. It is more efficient to use an iterator on the entrySet of the map, to avoid the Map.get(key) lookup.
Sonar问题(一)Multi-threading - Call to static DateFormat 根据上面的英文描述,DateFormats是线程不安全的,以后项目中尽量避免使用,可以用DateUtils工具类中封装好的format和parse方法进行替代。有时间继续补充DateUtils中的具体相关方法。
添加分页功能时PageInfo返回错误的pages,分页不生效 问题就在这里了, PageHelper.startPage(pageNo,pageSize)这段代码只对它之后的查询语句生效,即mapLists,而后面的pageInfo的传参是list,所以有问题。今天在给别人的查询接口添加分页功能时,发现PageInfo的分页功能失效,pages总是为1,且total值等于当前页面的数据值,不能正确返回数据总数。copyProperties方法要在传参里加上要忽略替换的对象,即list,不然的话会把list中的数据也替换掉。
return与break的区别 return、break和continue这三个关键字有一个共同点,那就是读能让后面的语句不执行,不同的地方就是挑的距离不一样。return很强大,如果一个函数中有一个return,并且执行了,那么这个函数就完了。return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。 return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。 ...
杭电1001 #include using namespace std; int main() { int n,i; while (cin >> n) { int sum = 0; for(i = 1; i sum+=i; cout } return 0; }