org.xml.sax.SAXParseException :schema_reference.4: 无法读取方案文档
'http://www.springframework.org/schema/beans/spring-beans-3.0.xsd',
原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是 <xsd:schema>。
这种错误的原因是:spring xml配置文件中指定的xsd文件读取不到了,原因多是因为断网或spring的官网暂时无法连接导致的。 参考:Spring如何加载XSD文件(org.xml.sax.SAXParseException: Failed to read schema document错误的解决方法)
<select id="getFileSize" resultType="Long">
SELECT sum(file_size) as fileSize
FROM file_nodes
WHERE uid=#{uid}
</select>
上述SQL语句,有可能返回null,因此resultType必须用Long,且Dao层的返回值也要用Long,并且需要在调用方做出判断和处理,否则会报空指针错误。
awk -F '[:,]' '{s[$4] += $6; a[$4] += $8}END{for(i in s){print i, s[i], a[i]}}' OFS="\t" odsToolResBak
可完成的工作是:将一个json字符串组成的日志文件,按照冒号和分号切割,并按照第4列分组,分别求第6列和第8列的和,最后每行的结果直接用'\t'分割。参考资料如下:10,100w!>>test.txt
,该命令可将10行到100行的内容复制到另一个文件test.txt中;参考资料如下:jstack pid >> temp.123
将线程堆栈dump到文件中,发现某个bean初始化的时候依赖了第三方服务,而部署的机器跟那个服务属于两个独立环境,因此线程在这里Hold住了。top
命令,获得JVM进程的PID;然后用命令top -H -p PID
,获得JVM中各个线程的运行情况,可以看到某些进程消耗的CPU一直在90多,记录这些线程的thread id,并转成十六进制;然后用命令jstack -l PID >> temp.123
将JVM的运行栈打印到文件中,然后利用上述的十六进制thread_id在文件中查找,就可以看该线程的CPU都消耗在哪里了。
通过抓堆栈发现,那些占用CPU比例过高的线程都是http处理线程:要不就是在等待请求到来;要不就是在处理一个JSON字符串——String responseContent = JSON.toJSONString(retResponse);,然后我们把这个retResponse打印出来一看,NND,这个对象得有1kb大小,好的,那就是这个东西占用了大量的CPU时间!