<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on olOwOlo</title><link>https://olowolo.com/</link><description>Recent content in Home on olOwOlo</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Fri, 13 Jul 2018 00:00:00 +0800</lastBuildDate><atom:link href="https://olowolo.com/index.xml" rel="self" type="application/rss+xml"/><item><title>使用 Elide 与 Spring 自动生成 JSON API / GraphQL API</title><link>https://olowolo.com/post/generate-json-api-and-graphql-api-by-elide-and-spring/</link><pubDate>Fri, 13 Jul 2018 00:00:00 +0800</pubDate><guid>https://olowolo.com/post/generate-json-api-and-graphql-api-by-elide-and-spring/</guid><description>&lt;p&gt;&lt;a href="https://github.com/yahoo/elide"&gt;Elide&lt;/a&gt; 是一个主要基于 JPA 注释自动构建 &lt;a href="http://jsonapi.org/"&gt;JSON API&lt;/a&gt; / &lt;a href="https://graphql.org/"&gt;GraphQL&lt;/a&gt; 接口的中间件。只需要给实体对象新增一个注解即可获得 CRUD 的 API，同时也提供了接口让你整合业务逻辑，权限控制，swagger 文档&amp;hellip;&lt;/p&gt;
&lt;p&gt;类比的话，或许有点儿类似于 Spring Data REST，不过它做得更多，生成的接口也更丰富&amp;hellip;&lt;/p&gt;</description></item><item><title>JPA GenerationType Insert Benchmark On PostgreSQL</title><link>https://olowolo.com/post/jpa-generation-type-insert-benchmark-on-postgresql/</link><pubDate>Sun, 18 Mar 2018 23:14:13 +0800</pubDate><guid>https://olowolo.com/post/jpa-generation-type-insert-benchmark-on-postgresql/</guid><description>&lt;script src="https://cdn.jsdelivr.net/npm/echarts@4.0.4/dist/echarts.common.min.js" integrity="sha256-CRtw4pUXzFosdt4rnjf2ZPyVHH48Rsd5ddXe6jZ6iPM=" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;div id="benchmark-chart" style="width: 100%;height: 400px;margin: auto;"&gt;&lt;/div&gt;
&lt;script&gt;
var benchmarkChart = echarts.init(document.getElementById('benchmark-chart'));
var serial = {
 type: 'bar'
};
var option = {
 legend: {selected: {}},
 tooltip: {},
 dataset: {
 dimensions: ['ops', 'identity', 'identity+batch', 'sequence', 'sequence+optimizer', 'sequence+batch', 'sequence+optimizer+batch', 'table', 'table+optimizer', 'table+batch', 'table+optimizer+batch'],
 source: [
 {ops: '1 thread', 'identity': 280, 'identity+batch': 105, 'sequence': 354, 'sequence+optimizer': 294, 'sequence+batch': 104, 'sequence+optimizer+batch': 44, 'table': 650, 'table+optimizer': 295, 'table+batch': 361, 'table+optimizer+batch': 49},
 {ops: '2 threads', 'identity': 369, 'identity+batch': 143, 'sequence': 476, 'sequence+optimizer': 403, 'sequence+batch': 164, 'sequence+optimizer+batch': 71, 'table': 833, 'table+optimizer': 408, 'table+batch': 576, 'table+optimizer+batch': 85},
 {ops: '4 threads', 'identity': 548, 'identity+batch': 218, 'sequence': 670, 'sequence+optimizer': 537, 'sequence+batch': 204, 'sequence+optimizer+batch': 95, 'table': 1454, 'table+optimizer': 547, 'table+batch': 1101, 'table+optimizer+batch': 101},
 {ops: '8 threads', 'identity': 607, 'identity+batch': 274, 'sequence': 767, 'sequence+optimizer': 633, 'sequence+batch': 252, 'sequence+optimizer+batch': 123, 'table': 4260, 'table+optimizer': 643, 'table+batch': 2409, 'table+optimizer+batch': 138},
 {ops: '16 threads', 'identity': 805, 'identity+batch': 404, 'sequence': 1084, 'sequence+optimizer': 858, 'sequence+batch': 417, 'sequence+optimizer+batch': 193, 'table': 6573, 'table+optimizer': 936, 'table+batch': 5097, 'table+optimizer+batch': 257}
 ]
 },
 xAxis: {type: 'category'},
 yAxis: {},
 series: [
 serial,
 serial,
 serial,
 serial,
 serial,
 serial,
 serial,
 serial,
 serial,
 serial
 ]
};
option.dataset.dimensions.filter(function(value) {
 return value !== 'ops' &amp;&amp; value !== 'identity' &amp;&amp; value !== 'sequence' &amp;&amp; value !== 'table';
}).forEach(function(item) {
 option.legend.selected[item] = false;
});
benchmarkChart.setOption(option);
&lt;/script&gt;</description></item><item><title>Mybatis Dynamic SQL - 重新定义 Mybatis 动态 SQL</title><link>https://olowolo.com/post/new-mybatis-dynamic-sql/</link><pubDate>Tue, 06 Feb 2018 15:09:02 +0800</pubDate><guid>https://olowolo.com/post/new-mybatis-dynamic-sql/</guid><description>&lt;p&gt;&lt;strong&gt;通过全新的 ByExample 方法快速了解一下这是什么：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// where (id &amp;lt; ? and employed = ?) or occupation like ? order by id DESC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;List&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;Employee&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; employees &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mapper.&lt;span style="color:#a6e22e"&gt;selectByExample&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;where&lt;/span&gt;(id, isLessThan(10), and(employed, isEqualTo(&lt;span style="color:#e6db74"&gt;&amp;#34;foo&amp;#34;&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;or&lt;/span&gt;(occupation, isLike(&lt;span style="color:#e6db74"&gt;&amp;#34;b%&amp;#34;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;orderBy&lt;/span&gt;(id.&lt;span style="color:#a6e22e"&gt;descending&lt;/span&gt;())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;build&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;execute&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Google 涂鸦 - Kids Coding - 兔子吃萝卜解法</title><link>https://olowolo.com/post/google-doodle-kids-coding-collect-carrots-solution/</link><pubDate>Mon, 04 Dec 2017 19:54:36 +0800</pubDate><guid>https://olowolo.com/post/google-doodle-kids-coding-collect-carrots-solution/</guid><description>&lt;p&gt;今天的 &lt;a href="https://www.google.com/logos/2017/logo17/logo17.html"&gt;庆祝《Kids Coding》问世 50 周年&lt;/a&gt; 涂鸦解法，啊哈哈啊哈哈啊哈哈哈哈 XD&lt;/p&gt;
&lt;!-- 
/img/google-doodle/kids-coding/4-7.png
https://i.loli.net/2018/01/28/5a6dedfb6e03c.png

/img/google-doodle/kids-coding/4-6.png
https://i.loli.net/2018/01/28/5a6dedfb4e3e5.png

/img/google-doodle/kids-coding/5.png
https://i.loli.net/2018/01/28/5a6dedfbb3868.png

/img/google-doodle/kids-coding/6.png
https://i.loli.net/2018/01/28/5a6dedfc3b5de.png
--&gt;
&lt;figure class="center"&gt;&lt;img src="https://i.loli.net/2018/01/28/5a6dedfb6e03c.png"&gt;&lt;figcaption&gt;
 &lt;h4&gt;第四关 7 个块&lt;/h4&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="center"&gt;&lt;img src="https://i.loli.net/2018/01/28/5a6dedfb4e3e5.png"&gt;&lt;figcaption&gt;
 &lt;h4&gt;实际上 6 个块也可以的&lt;/h4&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="center"&gt;&lt;img src="https://i.loli.net/2018/01/28/5a6dedfbb3868.png"&gt;&lt;figcaption&gt;
 &lt;h4&gt;第五关 6 个块&lt;/h4&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="center"&gt;&lt;img src="https://i.loli.net/2018/01/28/5a6dedfc3b5de.png"&gt;&lt;figcaption&gt;
 &lt;h4&gt;4 个块解决第六关&lt;/h4&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Hugo 从入门到会用</title><link>https://olowolo.com/post/hugo-quick-start/</link><pubDate>Tue, 15 Aug 2017 21:24:51 +0800</pubDate><guid>https://olowolo.com/post/hugo-quick-start/</guid><description>&lt;p&gt;&lt;strong&gt;为什么选择 Hugo ？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快！世界上最快的静态网站生成工具！&lt;a href="https://twitter.com/dzello/status/895835610476199939"&gt;5秒生成6000个页面！&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;超详细的文档，&lt;del&gt;虽然是英文的&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;活跃的&lt;a href="https://discourse.gohugo.io/"&gt;社区&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;更加自由的内容组织方式&lt;/li&gt;
&lt;li&gt;丰富的主题，目前主题数量已经超过 Hexo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Hugo 有哪些劣势 ？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你喜欢的某个 Jekyll 或者 Hexo 主题是无法直接用在 Hugo 上的 ┑(￣Д ￣)┍&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;那么&amp;hellip;&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>