<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[spidercoco的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/spidercoco</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; spidercoco]]></copyright><item><title><![CDATA[下一代的多语言JVM：GraalVM]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/99676281</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/99676281</guid><author>spidercoco</author><pubDate>Fri, 16 Aug 2019 13:35:22 +0800</pubDate><description><![CDATA[GraalVM是一款高性能的可嵌入式多语言虚拟机，它能运行不同的编程语言，包括：

基于JVM的语言，比如Java, Scala, Kotlin和Groovy
解释型语言，比如JavaScript, Ruby, R和Python
配合LLVM一起工作的原生语言，比如C， C++， Rust和Swift

GraalVM能有效地支持多语言应用，你可以在一个进程里同时使用多种编程语言而不会带来明显的性...]]></description><category></category></item><item><title><![CDATA[Kubernetes简介及入门]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/99055989</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/99055989</guid><author>spidercoco</author><pubDate>Sat, 10 Aug 2019 10:07:26 +0800</pubDate><description><![CDATA[如今单体应用（monolithic application）日渐被认为是一种反模式（antipattern），而云平台则成为了应用部署的香饽饽。这个转变可不仅仅像是在别人的机器上启动一个虚机那么简单。如何能有效地利用云的资源和伸缩性，意味着和要过去的单体应用划清界限，转而拥抱新的架构和开发实践。
微服务正逐渐成为云端应用及服务分发的事实标准。应用被拆分成松耦合的小模块，每个模块都有自己的职责。这种...]]></description><category></category></item><item><title><![CDATA[云原生微服务框架——Helidon]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/98473183</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/98473183</guid><author>spidercoco</author><pubDate>Sun, 04 Aug 2019 19:31:53 +0800</pubDate><description><![CDATA[在互联网早期的相当长一段时间内，WEB应用都是”单体应用（monolithic）“。也就是说所有的API和前端展示层代码都被封装在一个独立的、自给自足的应用当中。业务逻辑，校验，数据获取及计算，持久化，安全，UI都封装成一个大的包，部署在应用服务器或者web服务器上，比如说Tomcat, Apache或者Microsoft IIS。这个方法过去有效，未来也仍将有效，只不过当你的应用到达一定规模之后...]]></description><category></category></item><item><title><![CDATA[通过JVM日志来进行安全点分析]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84720409</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84720409</guid><author>spidercoco</author><pubDate>Mon, 25 May 2015 11:12:50 +0800</pubDate><description><![CDATA[许多事件都可能会导致JVM暂停所有的应用线程。这类暂停又被称为&quot;stop-the-world&quot;（STW）暂停。触发STW暂停最常见的原因就是垃圾回收了（[url=http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html#FollowReferences]github中的一个例子](https://github.com/gvsmir...]]></description><category></category></item><item><title><![CDATA[Java不同并发实现的性能比较]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84697680</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84697680</guid><author>spidercoco</author><pubDate>Thu, 22 Jan 2015 16:49:56 +0800</pubDate><description><![CDATA[[img]http://384uqqh5pka2ma24ild282mv.wpengine.netdna-cdn.com/wp-content/uploads/2015/01/ForkJoinWars.jpg[/img]


[b]Fork/Join框架在不同配置下的表现如何？[/b]

正如即将上映的星球大战那样，Java 8的并行流也是毁誉参半。并行流(Parallel Stream...]]></description><category></category></item><item><title><![CDATA[Java线程的5个使用技巧 ]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84697381</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84697381</guid><author>spidercoco</author><pubDate>Wed, 21 Jan 2015 11:55:23 +0800</pubDate><description><![CDATA[[img]http://384uqqh5pka2ma24ild282mv.wpengine.netdna-cdn.com/wp-content/uploads/2015/01/threadfred.jpg[/img]

[*]*Java线程有哪些不太为人所知的技巧与用法？**


萝卜白菜各有所爱。像我就喜欢Java。学无止境，这也是我喜欢它的一个原因。日常工作中你所用到的工具，通常都有...]]></description><category></category></item><item><title><![CDATA[Java不同压缩算法的性能比较]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84694127</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84694127</guid><author>spidercoco</author><pubDate>Sun, 04 Jan 2015 11:51:04 +0800</pubDate><description><![CDATA[本文将会对常用的几个压缩算法的性能作一下比较。结果表明，某些算法在极端苛刻的CPU限制下仍能正常工作。


文中进行比较的算有：

[*] JDK GZIP ——这是一个压缩比高的慢速算法，压缩后的数据适合长期使用。JDK中的java.util.zip.GZIPInputStream / GZIPOutputStream便是这个算法的实现。
[*] JDK deflate ——这是JD...]]></description><category></category></item><item><title><![CDATA[动态语言已死？]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84692011</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84692011</guid><author>spidercoco</author><pubDate>Fri, 19 Dec 2014 14:06:36 +0800</pubDate><description><![CDATA[真相总会不期而遇。它们总是不经意间降临，譬如当我读到这条微博的时候：

[i]

这是关于Facebook的Flow的一个很不错的讨论 – http://t.co/5KTKakDB0w

— David J. Pearce (@whileydave) November 23, 2014

[/i]

David是[url=http://whiley.org/download/G...]]></description><category></category></item><item><title><![CDATA[JVM的自愈能力]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84691208</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84691208</guid><author>spidercoco</author><pubDate>Mon, 15 Dec 2014 11:46:52 +0800</pubDate><description><![CDATA[在IT行业，碰到问题的第一个反应通常是——“你重启过没”——而这样做可能会适得其反，本文要讲述的就是这样的一个场景。

接下来要介绍的这个应用，它不仅不需要重启，而且毫不夸张地说，它能够自我治愈：刚开始运行的时候它可能会碰到些挫折，但会渐入佳境。为了能实际地展示出它的自愈能力，我们尽可能简单地重现了这一场景，这个灵感还得归功于[url=http://www.javaspecialists.eu...]]></description><category></category></item><item><title><![CDATA[切勿自作聪明，慎用双括号反模式]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84690876</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84690876</guid><author>spidercoco</author><pubDate>Fri, 12 Dec 2014 13:56:02 +0800</pubDate><description><![CDATA[我经常发现有人会使用双括号这个反模式来进行编程（也被称为[url=http://stackoverflow.com/q/27193550/521799]双括号初始化](http://stackoverflow.com/q/1958636/521799)）。[Stack Overflow上刚刚又有一个[/url]:

[code=&quot;java&quot;]


Map source = new Has...]]></description><category></category></item><item><title><![CDATA[ExecutorService的十个使用技巧]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84688043</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84688043</guid><author>spidercoco</author><pubDate>Wed, 26 Nov 2014 09:16:49 +0800</pubDate><description><![CDATA[

[url=http://www.oracle.com/technetwork/java/eol-135779.html]ExecutorService](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html)这个接口从Java 5开始就已经存在了。这得追溯到2004年了。这里小...]]></description><category></category></item><item><title><![CDATA[编程语言简史]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84684702</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84684702</guid><author>spidercoco</author><pubDate>Mon, 10 Nov 2014 12:02:38 +0800</pubDate><description><![CDATA[一个朋友在跟我一块吃午饭的时候问了我一个问题：现代编程语言的发展历程是什么样的，它是如何发展到现在这样的？他觉得我应该能答得上来，但其实我只能说个大概。

我跟他提了下机器语言，以及人们为了简化它所做的努力，并逐渐发明了一些更抽象的语言，它们最终会被翻译成0和1。

但是——一个偶然的机会我看到了Crockford关于Javascript的[url=https://www.youtube....]]></description><category></category></item><item><title><![CDATA[JVM堆大小的自适应能力]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84684404</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84684404</guid><author>spidercoco</author><pubDate>Fri, 07 Nov 2014 17:48:07 +0800</pubDate><description><![CDATA[在完善我们的测试台以便提高[url=https://plumbr.eu/wp-content/uploads/2014/10/plumbr-adaptive-heap-example.zip]Plumbr](https://plumbr.eu/gc)排查GC故障能力的时候，我编写了[一个小小的测试用例[/url]，我觉得应该会有不少人对它感兴趣。我的目标是测试JVM在不同的伊甸区(Eden), 存...]]></description><category></category></item><item><title><![CDATA[Akka笔记之配置及调度]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84681903</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84681903</guid><author>spidercoco</author><pubDate>Sun, 26 Oct 2014 16:33:40 +0800</pubDate><description><![CDATA[正如前几篇文章中所看到的，我们可以通过ActorSystem的actorOf方法来创建一个Actor。其实ActorSystem还可以做许多事情。本篇中我们来看下如何用它来进行配置及调度。

我们先看下[url=http://doc.akka.io/api/akka/2.3.6/?_ga=1.199598318.1764812650.1409147182#akka.actor.ActorSys...]]></description><category></category></item><item><title><![CDATA[Akka笔记之请求与响应]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84681812</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84681812</guid><author>spidercoco</author><pubDate>Sat, 25 Oct 2014 18:00:02 +0800</pubDate><description><![CDATA[前面我们讲到了Actor的[url=http://it.deepinmind.com/akka/2014/10/19/akka-notes-actor-messaging-1.html]消息传递[/url]，并看到了如何发送一条fire-n-forget消息（也就是说，消息发送给Actor后我们就不管了，不从Actor那接收响应）。

技术上来讲，消息发送给Actor就是希望能有副作用的。设计...]]></description><category></category></item><item><title><![CDATA[Akka笔记之日志及测试]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84681047</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84681047</guid><author>spidercoco</author><pubDate>Wed, 22 Oct 2014 14:30:11 +0800</pubDate><description><![CDATA[
在前两篇笔记中（[url=http://it.deepinmind.com/akka/2014/10/19/akka-notes-actor-messaging-1.html]第一篇](http://it.deepinmind.com/akka/2014/10/11/introducing-actors-akka-notes-part-1.html)，[第二篇[/url]），我们简单地介绍了一...]]></description><category></category></item><item><title><![CDATA[Akka笔记之Actor简介]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84662082</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84662082</guid><author>spidercoco</author><pubDate>Sat, 11 Oct 2014 12:24:57 +0800</pubDate><description><![CDATA[
写过多线程的人都不会否认，多线程应用的维护是件多么困难和痛苦的事。我说的是维护，这是因为开始的时候还很简单，一旦你看到性能得到提升就会欢呼雀跃。然而，当你发现很难从子任务的错误中恢复或者有些僵尸BUG很难复现再或者你的分析器显示你的线程在写入一个共享状态前大部分时间都浪费在阻塞上面的时候，痛苦降临了。
 
我刻意没提Java的并发API，以及它里面的集合类使得多线程编程变得多么轻松简单，因为...]]></description><category></category></item><item><title><![CDATA[分布式系统中的数据同步]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84661455</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84661455</guid><author>spidercoco</author><pubDate>Thu, 09 Oct 2014 23:51:20 +0800</pubDate><description><![CDATA[
许多人在日常工作中都会用到分布式系统，它的好处就是它所提供的稳定性，容错性以及伸缩性使我们能更容易地构建出稳定，高效的应用。然而分布式系统的使用非常具有挑战性，包括数据同步以及理解冲突的意义。

分布式系统中的数据同步本身就是一项非常巨大的挑战。如果光看物理时间戳的话我们无法确定哪个版本的数据才是最新的，因为你无法确保所有的实体的物理时钟都是完美同步的。比如说，两台同步的服务器将时间戳写入...]]></description><category></category></item><item><title><![CDATA[空指针的救星]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84658639</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84658639</guid><author>spidercoco</author><pubDate>Mon, 29 Sep 2014 16:54:01 +0800</pubDate><description><![CDATA[
没人会喜欢空指针异常！有什么方法可以避免它们吗？或许吧。。本文将讨论到以下几种技术

Optional类型（Java 8中新引入的）
Objects类（Java 7中原有的）

Java 8中的Optional类它是什么？

Java 8中新引入的类型
它是作为某个指定类型的对象的包装器或者用于那些不存在对象(null)的场景

简单来说，它是处理空值的一个更好的替代品（警告：乍一看...]]></description><category></category></item><item><title><![CDATA[开发人员必须了解的一个SQL技巧]]></title><link>https://blog.youkuaiyun.com/spidercoco/article/details/84658294</link><guid>https://blog.youkuaiyun.com/spidercoco/article/details/84658294</guid><author>spidercoco</author><pubDate>Sun, 28 Sep 2014 20:16:06 +0800</pubDate><description><![CDATA[对于数据过滤而言CHECK约束已经算是相当不错了。然而它仍存在一些缺陷，比如说它们是应用到表上面的，但有的时候你可能希望指定一条约束，而它只在特定条件下才生效。

使用SQL标准的WITH CHECK OPTION子句就能完成这点，至少Oracle和SQL Server都实现了这个功能。下面是实现方式：

[code=&quot;java&quot;]


CREATE TABLE books (
 ...]]></description><category></category></item></channel></rss>