如何正确地打印异常堆栈信息
前言
最近老大让我修改项目里所有和log有关的代码,之前我也用过log4j、slf4j或者Logback等日志框架/接口,一直以为打印异常信息就是简单地一句log.info()或者log.error()而已,没想到原来一直都使用错了,以至于有些错误信息没能在log文件中打印出堆栈信息,最终难以定位bug,排查困难。
最近老大让我修改项目里所有和log有关的代码,之前我也用过log4j、slf4j或者Logback等日志框架/接口,一直以为打印异常信息就是简单地一句log.info()或者log.error()而已,没想到原来一直都使用错了,以至于有些错误信息没能在log文件中打印出堆栈信息,最终难以定位bug,排查困难。
Redis 本身支持16个数据库(0~15),通过数据库id设置,默认为0。在Windows平台下可以通过启动redis-cli.exe
来进入客户端,客户端默认连接数据库0,在客户端里可以输入各种命令。
可以通过修改配置来增加Redis的db数量。在Windows平台下,打开redis.windows.conf,找到databases 16
并修改即可。
最近发现Tomcat的日志文件catalina.out里存在着大量和公司项目相关的日志信息,因为一般都是会使用日志框架将日志信息输出到另外的文件里,catalina.out文件里是不需要这些多余的日志信息的。
MVC模式、模块化设计、自动化双向数据绑定、依赖注入
如果了解了后端开发知识,想必对这些词汇不会陌生,AngularJS融合了后端开发的一些思想,虽然身为前端框架,但与jQuery框架却是完全不相同的东西。
AngularJS分为几个模块,需要使用哪个模块的功能,就直接引入对应的模块,这种模块化设计具备高内聚、低耦合的特点。 官方提供的模块有:ng、ngRoute、ngAnimate 用户也可以自定义模块:angular.module(‘模块名’, []) 这里的ng是引擎engine的缩写,类似于Nginx的Ngin也是engine的缩写(谐音?)
最近debug时忽然发现,如果一个集合赋值为null,那么对该集合进行foreach循环(也叫增强for循环)时,会报NPE(即空指针异常NullPointerException)。
代码如下:
今天拿到这样一个需求:有Map A和Map B,这两个Map都持有着一个同样的key——id,其对应的value可能相同,也可能不相同。现在需要对两个Map中该key对应的value相同的键值对做些特殊的操作。
这是个很简单的需求,代码很简单,我直接一个循环里嵌套另一个循环去实现这个功能需求:
在cmd窗口中输入curl www.baidu.com
可以看到有中文乱码的现象,这是因为默认使用的是GBK编码。另外,curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本,在win10的cmd中有内嵌curl。
在默认情况下,input文本框和图片无法自然对齐,总会有所偏差,文本框往往会比图片要往下边一点,只要给元素添加vertical-align:bottom
即可令两者底部水平对齐,代码如下:
|
|
设置
-> 首选项...
-> 语言菜单
-> 制表符设置
-> 勾选上转换为空格
线上出了问题,我需要去查找log来定位问题,但是由于线上数据量庞大,这些log文件每过一个小时就会自动回滚一次,尽管如此,有的log文件依然达到了五六g以上的大小。
对于这种巨大的log文件,常用的一些文本编辑器诸如EditPlus、Notepad++就不用说了,打开几百m的文件都会很卡,上g的直接程序崩溃。虽然UltraEdit对于大文件的读取会友好一些,但打开这种五六g的文件时也会陷入长时间的无响应状态。
后来我又得知了一个看log神器——glogg,打开五六g的大文件速度很快,但是有个问题,就是只能读取文件,不能编辑文件。毕竟我不只是要查看log,有时候还要对这些有用的log信息进行编辑。最后还是决定先把大文件分割成数个小文件,再用UltraEdit来查看这些文件。