使用Gson序列化对象时,默认情况下,对象值为"null"的字段在输出值会被忽略(NOTE:collections和arrays中的null对象会被保留)。如果要使Gson序列化对象输出所有的null值,可使用如下方法进行配置。
1 | Gson gson = new GsonBuilder().serializeNulls().create(); |
NOTE: 当使用Gson序列化null值时,它会添加JsonNull元素到JsonElement结构中。
Continue reading使用Gson序列化对象时,默认情况下,对象值为"null"的字段在输出值会被忽略(NOTE:collections和arrays中的null对象会被保留)。如果要使Gson序列化对象输出所有的null值,可使用如下方法进行配置。
1 | Gson gson = new GsonBuilder().serializeNulls().create(); |
NOTE: 当使用Gson序列化null值时,它会添加JsonNull元素到JsonElement结构中。
Continue reading有时候在调试代码时,需要格式化输出JSON字符串,使其便于开发者/测试者查看,本文记录的就是使用Gson如何格式化输出JSON字符串。
Gson默认的JSON输出是紧凑的JSON格式,这意味着在输出的JSON结构中没有任何空白字符,因此,在JSON输出中,字段名及其字段值,对象字段和数组中的对象间都没有空白字符,另外“null”字段在输出时会忽略(NOTE:collections/arrays中的null值会保留)。如果要使用Pretty Print输出JSON,可以使用GsonBuilder配置JsonPrintFormatter,该格式默认会输出80字符宽度,2字符缩进,右边距为4字符。
Continue reading本文记录的在Mac下pandoc转换markdown输出含中文的文本,包含一些依赖的安装以及命令使用,最后的参考文档给了我很大帮助。
简要记录安装步骤如下:
按照pandoc官方网站说明, 下载安装pandoc
按照pandoc官方网站说明,转换输出PDF时,需要LaTeX,下载安装MacTex-Additions和BasicTex
在tzengyuxio的开源项目中下载pm-template.latex pdf中文模板,将该模板中setCJKmainfont字段值LiHei Pro修改为电脑上带有的中文字体,我的自己安装了微软雅黑字体,于是修改成了Microsoft YaHei
使用tlmgr工具安装依赖titling和lastpage
1 | $sudo tlmgr install titling |
pandoc --latex-engine=xelatex --template=pm-template markdown_strict.md -o markdown.pdf
转换输出pdf, 可将pm-template.latex文件放置任意处,只是需要使用--template参数指定其路径.在markdown中命名锚一文中描述了在markdown文本中嵌入HTML代码来命名锚,但是总觉得HTML+markdown在一起较别扭。最近了解了pandoc,发现pandoc‘s markdown中headers一节有这种功能描述, 记录如下。
定义Header的identifier如下:
1 | ##My Header## {#foo} |
这样我们在创建文章目录索引时,可以如下创建链接:
1 | [My Header](#foo) |
这样比使用HTML命名锚更加简单,看起来更加简洁了。
另外,如果是使用pandoc's markdown写博客且使用hexo部署,则需要安装hexo-renderer-pandoc插件.
我的博客: http://liumh.com
本文记录Java中关闭Chained-Streams的正确方式。
在Java开发过程中,我们时常使用这样的方式创建输入输出流,如下方式1:
1 | BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); |
或者如下方式2创建:
1 | FileOutputStream fos = new FileOutputStream(...) |
使用方式1时,我们仅仅使用br.close()
是否会造成流资源的不正确关闭?使用方式2时,是否需要把创建的每个流(oos/bos/fos)都依次关闭呢?
项目中有时需要在Java
类中启动一个长时间运行的服务进程(监听进程、监控进程等),且该进程需要在tomcat
启动时启动,在tomcat
停止时退出。在项目开发的过程中,我需要在Java类中启动一个监听进程,而在该进程成功启动后,一调用该监听服务进程时,该进程就挂掉(退出),现将解决方法记录如下。
本文记录的是如何在Java类中调用外部可执行脚本,例如shell脚本、Python脚本、ruby脚本等。文中阐述了Runtime.exec和ProcessBuilder.start两种调用脚本的方式,官方推荐使用后者的方式,下面对其分别讲述。
Continue reading本文记录的是如何使用markdown
命名锚(names anchors
),当使用命名锚时,我们可以创建文章目录,直接跳至该命名锚(比如页面中某个小节)的链接,这样使用者就无需不停地滚动页面来寻找他们需要的信息了。
其实使用markdown
不能直接达到定义命名锚的目的,借助了html
的功能。在定义标题时不使用markdown
语法(#
个数对应相应级别的HTML
样式标题),而使用h1/h2
等,且使用id
属性命名锚,如:
本文记录的是shell之printf格式化输出.
首先看看其 man page 内容:
1 | NAME |
从上述 man page 内容可以看出:
printf
通过format
字符串格式化输出其后的arguments
;format
字符串包含三种类型对象: 普通字符串,该对象输出时会直接拷贝到标准输出STDOUT
;字符转义序列,通过字符转义之后输出到标准输出;格式说明符,每一个格式说明符对应输出相应的argument
;%c
/%b
/%s
时,相对应的参数都视为字符串,否则它们会被解释为C语言的数字常量: 在其开头可使用正负号标识;如果字符串开头是单引号'
或者双引号"
,那么打印输出的值是紧跟着单引号或者双引号后的那个字符的ASCII
值@Chengdu
iOS Developer