MongoDB建立索引的dropDups参数的注意事项
在项目中看到了类似如下的代码段:
1 | @Entity |
在项目中看到了类似如下的代码段:
1 | @Entity |
在使用logback的过程中,一般日志目录都是设置为<property name="LOG_DIR" value="logs"/>
,一般logs目录都会生成在项目根目录中,但是当我用idea的tomcat进行调试web应用是,就发现找不到logs目录了。。。
前一阵,为vscode写了一个能够粘贴图片的插件Paste Image,在这个过程中我发现了vscode设计上的一个操蛋的地方。vscode和atom一样都是基于electron,所以按理来说,插件是应该可以访问electron的接口的,这样插件就可以调用所有的底层API,做出炫目的特效,比如atom就是这样的。但是vscode的插件机制就不一样了,vscode的插件环境是一个普通的nodejs环境,所以在插件中除了调用vscode暴露的API外,就只能只用普通的nodejs标准库与第三方库。这是一个多么傻逼的设计啊,因为很多操作系统的API普通的nodejs包是不会提供的,而electron是提供了的,比如操作剪贴板,操作系统通知等。因为vscode没有暴露,所以vscode的插件可定制化程度就大打折扣了。也正是因为这一点,所以我的插件没法调用electron提供的操作系统剪贴板图片的API,所以我只能用Applescript写了个一个操作剪贴板的小脚本,然后在插件中调用,虽然实现了功能,但是只能支持mac。
Guice是Google在2006年推出的一个轻量级依赖注入框架。相比于诞生于2004年的Spring,晚了两年。那个时候Spring已经声名鹊起,基本上成为业界标准了。但是,因为Spring诞生的时候,超级经典的Java5还没有出来(2004年末),所以Spring一开始只能在xml中配置Bean。而Guice一开始就基于Java5设计,使用了其注解的特性,所Guice没有xml配置文件,Bean的依赖关系是在代码中直接配置的。这也是Guice比Spring启动快的原因。
按官方的说法,protostuff是一个序列化库,提供了向后兼容和验证的内置支持。
而我们用protostuff的原因,也就是他真正牛逼的地方在于,他可以把一个POJO序列化为多种格式:
StringTemplate是一个模板引擎。模板引擎现在有很多,比如FreeMarker,比如velocity。ST有啥特别的呢?这就不提ST的兄弟项目Antlr了。Antlr是ANother Tool for Language Recognition的缩写,意思是另一个语法分析器。Antlr被大量用来开发DSL或者是分析现有语言。而作为ST的兄弟项目的ST,他的应用领域和Antlr一样,专注于语言分析之后的代码/文档生成。相较于普通的后端模板引擎,ST更加强大,也更加复杂一些。