<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jlaky的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jlaky</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jlaky]]></copyright><item><title><![CDATA[锁和隔离（1）]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/98345186</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/98345186</guid><author>jlaky</author><pubDate>Sat, 03 Aug 2019 16:15:55 +0800</pubDate><description><![CDATA[我们的程序执行单元运行分为两种：进程和线程

操作系统会为进程分配独立内存空间，将正在处理的数据和外部隔离，只有该进程能够对这片内存区域进行读写

但是进程访问外部资源需要独占的时候存在排他性，因此需要加锁

线程则为轻量级执行单元，进程内可以创建线程多个线程，可以充分利用资源，线程间共享内存，线程能够充分利用CPU资源

多线程同时访问一片内存空间需要独占写入时候，需要加锁

锁存在的目的为了确...]]></description><category></category></item><item><title><![CDATA[Spring boot结合flyway进行数据迁移]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/91041589</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/91041589</guid><author>jlaky</author><pubDate>Thu, 06 Jun 2019 11:45:56 +0800</pubDate><description><![CDATA[在Spring boot进行到一半的项目中使用flyway，按照flyway官方文档设置，需要重新跑flyway的baseline：

因此在application.properties中确实配置了flyway.baselineOnMigrate=true

运行后总是提示配置错误错误，baseline没有设置。

通过查看源代码，发现Spring的autoconfiguration进行过flyw...]]></description><category></category></item><item><title><![CDATA[MongoDB学习笔记 - Aggregation (1)]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/55667065</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/55667065</guid><author>jlaky</author><pubDate>Sat, 18 Feb 2017 14:41:15 +0800</pubDate><description><![CDATA[MongoDB里面经常需要做一些统计任务，这里使用Aggregate 内嵌文档的例子，例如下面的文档，我们希望找到type 1的colors 的数量总和

inventory collection 如下:

{"_id" : 1, "item" : "ABC1","type",1, "description" : "product 1", colors: [ "blue","black",]]></description><category></category></item><item><title><![CDATA[Kafka实战经验 - Kafka Consumer自定义offset管理]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/55666906</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/55666906</guid><author>jlaky</author><pubDate>Sat, 18 Feb 2017 14:24:05 +0800</pubDate><description><![CDATA[在项目中，大部分情况下，使用Kafka自动管理offset能够满足需求，但是在某些情况下需要使用手动管理Kafka offset，比如必须要求数据处理完成以后才能commit，确保partition的数据被处理完。因此可以使用kafka的ConsumerRebalanceListener进行处理:

1） Subscribe

consumer.subscribe(topics,

 ]]></description><category></category></item><item><title><![CDATA[Kafka 学习笔记(4) - Consumer和Producer]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/49405915</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/49405915</guid><author>jlaky</author><pubDate>Sat, 31 Oct 2015 23:21:22 +0800</pubDate><description><![CDATA[Producer负责分发message到topic，并且要选择哪些message分发到这个topic的哪个partition，分发机制可能使用轮询，也可以使用一些semantic的方法


针对Java而言, 现在Kafka推荐使用的是新的kafka client API
    public static void sendMessage() {
        Map configs]]></description><category></category></item><item><title><![CDATA[Kafka 学习笔记(3) - HA]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/49181795</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/49181795</guid><author>jlaky</author><pubDate>Sat, 17 Oct 2015 11:41:07 +0800</pubDate><description><![CDATA[Kafka 将Partition分布在Cluster的多个Server，这个数字也是可以配置的


其中一个Leader负责接收所有读写请求，其它的Followers进行replicate，如果Leader down了，那么其它Follower会变成Leader，这个功能应该就是Kafka借助了Zookeeper来实现的



另外要注意的是，每个Server都是其中一些Partit]]></description><category></category></item><item><title><![CDATA[Kafka 学习笔记(2) - Topic 和 Log]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/49175975</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/49175975</guid><author>jlaky</author><pubDate>Fri, 16 Oct 2015 11:17:33 +0800</pubDate><description><![CDATA[A topic is a category or feed name to which messages are published.


每个Partition都是一个排序的和不可变的消息队列，新消息都会append到结尾，每个message都会分配一个sequential id, 叫做offset，作为message的唯一的id


注意的是Kafka的Cluster会保存在某个配]]></description><category></category></item><item><title><![CDATA[Kafka 学习笔记(1)]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/48950557</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/48950557</guid><author>jlaky</author><pubDate>Wed, 07 Oct 2015 22:46:14 +0800</pubDate><description><![CDATA[了解Kafka是什么，它能用来做什么]]></description><category></category></item><item><title><![CDATA[Rails源代码分析（49）：ActionView::Helpers::AssetTagHelper]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/4197428</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/4197428</guid><author>jlaky</author><pubDate>Mon, 18 May 2009 12:46:00 +0800</pubDate><description><![CDATA[Usage: 1) using asset hosts         ActionController::Base.asset_host = "assets.example.com"       image_tag("rails.png")         =>        stylesheet_link_tag("application")         =]]></description><category></category></item><item><title><![CDATA[Java学习笔记（3）]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/4132425</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/4132425</guid><author>jlaky</author><pubDate>Tue, 28 Apr 2009 13:00:00 +0800</pubDate><description><![CDATA[Vector ArrayList LinkedList]]></description><category></category></item><item><title><![CDATA[Ruby学习笔记（1）]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/4100122</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/4100122</guid><author>jlaky</author><pubDate>Wed, 22 Apr 2009 13:10:00 +0800</pubDate><description><![CDATA[目的：打好基础，并且深入理解Ruby语言的原理，以及它的运行机制 Ruby In Nutshell快看完3章了，前面懒得写了，继续从Built-in Lib看:Ruby 的 Built-in Lib主要包括：1 ObjectsObject class, Kernal module 2 String and RegexString, Regex  3 Ar]]></description><category></category></item><item><title><![CDATA[Java学习笔记（2）]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/4087110</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/4087110</guid><author>jlaky</author><pubDate>Fri, 17 Apr 2009 14:04:00 +0800</pubDate><description><![CDATA[ Queue, Set, AbstractCollection, AbstractList, AbstractQueue ]]></description><category></category></item><item><title><![CDATA[Java学习笔记（1）]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/4087024</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/4087024</guid><author>jlaky</author><pubDate>Fri, 17 Apr 2009 13:39:00 +0800</pubDate><description><![CDATA[精通一门语言不容易，发现之前虽然用了好多年的Java开发，最后只不过是重复使用自己常用的几个类。 所以每天深入学习几个类或者接口， Iterable是所有迭代器的基础接口实现这个接口允许对象成为 "foreach" 语句的目标Collection是所有集合相关的基础接口Collection 层次结构 中的根接口。Collection 表示一组对象，这]]></description><category></category></item><item><title><![CDATA[Rails源代码分析（47）：ActionView::Helpers::ActiveRecordHelper]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/3994205</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/3994205</guid><author>jlaky</author><pubDate>Mon, 16 Mar 2009 13:19:00 +0800</pubDate><description><![CDATA[这个Helper主要实现的方法包括如下：1 inputReturns a default input tag for the type of object returned by the method.For example, if @post has an attribute +title+ mapped to a +VARCHAR+ column that holds "Hello]]></description><category></category></item><item><title><![CDATA[Rails源代码分析（46）：ActionView::Partials]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/3860000</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/3860000</guid><author>jlaky</author><pubDate>Tue, 03 Feb 2009 12:43:00 +0800</pubDate><description><![CDATA[这个module，主要是为了支持，render的:partial属性if partial = options[:partial]            partial = default_template_name if partial == true            add_variables_to_assigns            if collectio]]></description><category></category></item><item><title><![CDATA[Rails源代码分析（45）：ActionView Template (3)]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/3788728</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/3788728</guid><author>jlaky</author><pubDate>Thu, 15 Jan 2009 13:32:00 +0800</pubDate><description><![CDATA[PartialTemplate 实现：1 初始化做了改动, 根据partial_path抽取路径和collection的item变量名2 根据变量名设置变量 放入@locals[:object] 3 initialize_counter  partial内置了一个counter变量,比如render :partial=>item :collection=>items]]></description><category></category></item><item><title><![CDATA[Rails源代码分析（44）：ActionView Template (2)]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/3788711</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/3788711</guid><author>jlaky</author><pubDate>Thu, 15 Jan 2009 13:31:00 +0800</pubDate><description><![CDATA[InlineTemplate主要区别在于初始化方法以及source的定义 module ActionView #:nodoc:  class InlineTemplate < Template #:nodoc:        def initialize(view, source, locals = {}, type = nil)      @view = view    ]]></description><category></category></item><item><title><![CDATA[Rails源代码分析（43）：ActionView Template (1)]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/3733729</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/3733729</guid><author>jlaky</author><pubDate>Thu, 08 Jan 2009 12:51:00 +0800</pubDate><description><![CDATA[Template 可以看作一个Wrapper,用来包装整个输出对象,包括如下几个:TemplateInlineTemplate PartialTemplate     def initialize(view, path, use_full_path, locals = {})      @view = view      @finder = @view.finder  ]]></description><category></category></item><item><title><![CDATA[Rails源代码分析（42）：ActionView Base]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/3712319</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/3712319</guid><author>jlaky</author><pubDate>Mon, 05 Jan 2009 12:41:00 +0800</pubDate><description><![CDATA[贴代码：    module CompiledTemplates #:nodoc:      # holds compiled template code    end    include CompiledTemplates    # Maps inline templates to their method names    cattr_accessor :method_names    @@]]></description><category></category></item><item><title><![CDATA[ Rails源代码分析（41）：ActionView 概览]]></title><link>https://blog.youkuaiyun.com/jlaky/article/details/3712275</link><guid>https://blog.youkuaiyun.com/jlaky/article/details/3712275</guid><author>jlaky</author><pubDate>Mon, 05 Jan 2009 12:35:00 +0800</pubDate><description><![CDATA[require action_view/template_handlerrequire action_view/template_handlers/compilablerequire action_view/template_handlers/builderrequire action_view/template_handlers/erbrequire action_view/t]]></description><category></category></item></channel></rss>