MongoDB建立索引的dropDups参数的注意事项

在项目中看到了类似如下的代码段:

1
2
3
4
5
6
7
8
9
10
11
@Entity
@Indexes({
@Index(fields = {@Field("name")},options = @IndexOptions(unique = true,dropDups = true))
})
public class UniqueEntity {
@Id
ObjectId id;

@Property
String name;
}

阅读全文

Java日志-SLF4J中如何输出exception信息

在代码中看到了类似的句子:

1
logger.error("Task: Date={} Create Task ERROR!",date,e);

阅读全文

Java日志-Logback在运行时获取日志文件的路径

在使用logback的过程中,一般日志目录都是设置为<property name="LOG_DIR" value="logs"/>,一般logs目录都会生成在项目根目录中,但是当我用idea的tomcat进行调试web应用是,就发现找不到logs目录了。。。

阅读全文

在nodejs项目中使用electron

前一阵,为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。

阅读全文

chrome插件推荐

根据URL规则自动静音页面 – Mute Tabs By Url

阅读全文

Google依赖注入框架Guice学习笔记

Guice是Google在2006年推出的一个轻量级依赖注入框架。相比于诞生于2004年的Spring,晚了两年。那个时候Spring已经声名鹊起,基本上成为业界标准了。但是,因为Spring诞生的时候,超级经典的Java5还没有出来(2004年末),所以Spring一开始只能在xml中配置Bean。而Guice一开始就基于Java5设计,使用了其注解的特性,所Guice没有xml配置文件,Bean的依赖关系是在代码中直接配置的。这也是Guice比Spring启动快的原因。

阅读全文

使用protostuff进行序列化

按官方的说法,protostuff是一个序列化库,提供了向后兼容和验证的内置支持。

而我们用protostuff的原因,也就是他真正牛逼的地方在于,他可以把一个POJO序列化为多种格式:

  • protobuf
  • protostuff (native)

阅读全文

StringTemplate 4学习笔记

StringTemplate是一个模板引擎。模板引擎现在有很多,比如FreeMarker,比如velocity。ST有啥特别的呢?这就不提ST的兄弟项目Antlr了。Antlr是ANother Tool for Language Recognition的缩写,意思是另一个语法分析器。Antlr被大量用来开发DSL或者是分析现有语言。而作为ST的兄弟项目的ST,他的应用领域和Antlr一样,专注于语言分析之后的代码/文档生成。相较于普通的后端模板引擎,ST更加强大,也更加复杂一些。

阅读全文

RESTEasy与Spring整合

RESTEasy是一个用于开发REST风格应用的库,和Spring结合在一起使用是非常常见的解决方案。

添加依赖

Spring那一坨依赖就不说了,说一下需要添加的RESTEasy依赖:

阅读全文

IntelliJ IDEA插件推荐

String Manipulation字符串操作插件

String Manipulation

阅读全文