<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[koflance的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/koflance</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; koflance]]></copyright><item><title><![CDATA[URL和URI的区别]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/79635240</link><guid>https://blog.youkuaiyun.com/koflance/article/details/79635240</guid><author>koflance</author><pubDate>Wed, 21 Mar 2018 12:21:51 +0800</pubDate><description><![CDATA[URI包括URL和URN两个类别，URL是URI的子集，所以URL一定是URI，而URI不一定是URL

URI  =  Universal Resource Identifier 统一资源标志符，用来标识抽象或物理资源的一个紧凑字符串。 
URL = Universal Resource Locator 统一资源定位符，一种定位资源的主要访问机制的字符串，一个标准的URL必须包括：protoco...]]></description><category></category></item><item><title><![CDATA[Less学习笔记1]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/78680490</link><guid>https://blog.youkuaiyun.com/koflance/article/details/78680490</guid><author>koflance</author><pubDate>Thu, 30 Nov 2017 20:55:43 +0800</pubDate><description><![CDATA[1、介绍Less是CSS预处理脚本语言，提供了函数、变量、混合（mixin）等功能，方便通过node、浏览器或Rhino环境生成CSS样式表，让CSS更容易维护和使用。2、安装$ npm install -g less使用案例
生成一个test.less文件，内容如下：
@base: #f938ab;.box-shadow(@style, @c) when (iscolor(@c)) {
  -we]]></description><category></category></item><item><title><![CDATA[zookeeper分布式锁实现原理]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/78616206</link><guid>https://blog.youkuaiyun.com/koflance/article/details/78616206</guid><author>koflance</author><pubDate>Thu, 23 Nov 2017 16:28:47 +0800</pubDate><description><![CDATA[1、互斥锁mutex lock顾名思义就是排它锁，同一时间只允许一个客户端执行。实现步骤：
首先，创建一个lock node，例如“locknode”
其次，客户端lock执行以下方式： 
创建（create）一个有序临时节点，例如“locknode/guid-lock-”，其中guid可以是你客户端的唯一识别序号，如果发生前面说的创建失败问题，需要使用guid进行手动检查。
调用getChildr]]></description><category></category></item><item><title><![CDATA[zookeeper的barriers和queue简单案例]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/78603765</link><guid>https://blog.youkuaiyun.com/koflance/article/details/78603765</guid><author>koflance</author><pubDate>Wed, 22 Nov 2017 15:35:04 +0800</pubDate><description><![CDATA[1、介绍应该都用过jdk自带的countdownlatch、cyclicbarrier和queue，都知道前者是一个可循环使用的多线程同步栅栏，后者是一个队列，用于常用于异步操作。但在分布式环境下如何做到用barrier进行同步多台机器实例的运行？如何进行队列消费？也许想到了消息队列jmx，或者用redis等分布式nosql缓存做同步，但其实zookeeper也可以，只要好好使用好getChildr]]></description><category></category></item><item><title><![CDATA[zookeeper原理必读]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/78598324</link><guid>https://blog.youkuaiyun.com/koflance/article/details/78598324</guid><author>koflance</author><pubDate>Tue, 21 Nov 2017 23:36:23 +0800</pubDate><description><![CDATA[1、zookeeper数据模型zk的节点类似于文件系统，和文件系统的区别在于，文件系统的目录是不能存储数据的，但zk的路径及其子路径都可以存储数据，且数据的读写在节点上是原子的；zk并不是数据库或大型文件存储系统，你只能用zk来存储协调数据（coordination data），一般在kb大小，小于1m，如果需要存储大型数据，建议将数据存放在hdfs等文件存储系统，而zk只存指针或偏移量；另外，zk]]></description><category></category></item><item><title><![CDATA[zookeeper入门案例]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/78593722</link><guid>https://blog.youkuaiyun.com/koflance/article/details/78593722</guid><author>koflance</author><pubDate>Tue, 21 Nov 2017 16:08:47 +0800</pubDate><description><![CDATA[1、案例描述这是一个从从zookeeper官网获取的简单案例。请先确保你已经安装好一个zookeeper机器环境，如果没有请参考我的文章《zookeeper入门》http://blog.youkuaiyun.com/koflance/article/details/78586235。案例基本设计要求是，监听一个zookeeper的节点路径，比如/test，如果节点路径上保存的数据发生了变更，则将数据写入到指定的]]></description><category></category></item><item><title><![CDATA[zookeeper环境搭建]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/78586235</link><guid>https://blog.youkuaiyun.com/koflance/article/details/78586235</guid><author>koflance</author><pubDate>Mon, 20 Nov 2017 20:26:02 +0800</pubDate><description><![CDATA[简介zookeeper是用于分布式环境的高性能协调服务器，其主要用途是分组、命名、同步、配置等管理。主要优点有：
sequential consistency
atomicity
single system image
reliability
timeliness
zookeeper是一个节点结构是一个树状结构，类似于文件系统，如下图但和文件系统不一样的是，其每个节点都可以存储数据，而文件系统的文件]]></description><category></category></item><item><title><![CDATA[Conda介绍]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/78582737</link><guid>https://blog.youkuaiyun.com/koflance/article/details/78582737</guid><author>koflance</author><pubDate>Mon, 20 Nov 2017 15:30:14 +0800</pubDate><description><![CDATA[简介conda类似于npm或maven的包管理工具，只是conda是针对于python的。可以安装minconda或anaconda进行安装，前者是简化版本，只包含conda和其依赖。如果安装环境有python相关包也没有关系，不需要进行卸载。anaconda支持windows、mac和linux系统，且有两个类型的版本，分别是GUI和command line版本，前者是图形界面，后者是命令行界面，]]></description><category></category></item><item><title><![CDATA[Spring Security基于表达式的访问控制]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/68486268</link><guid>https://blog.youkuaiyun.com/koflance/article/details/68486268</guid><author>koflance</author><pubDate>Thu, 30 Mar 2017 14:08:23 +0800</pubDate><description><![CDATA[概述相比较以前使用配置属性（configuration attributes）或access-decision voters，Spring Security 3.0提供了基于EL表达式的访问控制（authorization mechanism）。该表达式可以用于web和method访问控制（access control）。Security提供的EL表达式root object是SecurityExp]]></description><category></category></item><item><title><![CDATA[SpringSession教程]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/66676859</link><guid>https://blog.youkuaiyun.com/koflance/article/details/66676859</guid><author>koflance</author><pubDate>Mon, 27 Mar 2017 01:02:20 +0800</pubDate><description><![CDATA[基本概念Spring Session提供了API和实现，用于管理用户的Session信息。除此之外，它还提供了如下集成：
HttpSession-用于替换应用容器的HttpSession实现，并提供了新的功能，例如集群Session（Clustered Sessions）、多用户Session（Multiple Browser Sessions，即一个浏览器多个用户使用）、RESTful APIs(]]></description><category></category></item><item><title><![CDATA[JsonPath教程]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/63262484</link><guid>https://blog.youkuaiyun.com/koflance/article/details/63262484</guid><author>koflance</author><pubDate>Sat, 18 Mar 2017 17:18:53 +0800</pubDate><description><![CDATA[1. 介绍类似于XPath在xml文档中的定位，JsonPath表达式通常是用来路径检索或设置Json的。其表达式可以接受“dot–notation”和“bracket–notation”格式，例如$.store.book[0].title、$[‘store’][‘book’][0][‘title’]2. 操作符
  符号
  描述  $
  查询的根节点对象，用于表示一个json数据，可以是数组或]]></description><category></category></item><item><title><![CDATA[Spring中Configuration的理解]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/59304090</link><guid>https://blog.youkuaiyun.com/koflance/article/details/59304090</guid><author>koflance</author><pubDate>Thu, 02 Mar 2017 03:29:44 +0800</pubDate><description><![CDATA[基本用途从Spring3.0，@Configuration用于定义配置类，可替换xml配置文件，被注解的类内部包含有一个或多个被@Bean注解的方法，这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描，并用于构建bean定义，初始化Spring容器。例如：@Configuration]]></description><category></category></item><item><title><![CDATA[Spring4中的WebApplicationInitializer理解]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/59233428</link><guid>https://blog.youkuaiyun.com/koflance/article/details/59233428</guid><author>koflance</author><pubDate>Thu, 02 Mar 2017 00:55:52 +0800</pubDate><description><![CDATA[XML-based Approach要配置核心分发控制器Servlet，即DispatcherServlet，传统做法是直接使用xml进行配置，如下代码所示：<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>
    org.springframework.web.servlet.DispatcherServle]]></description><category></category></item><item><title><![CDATA[Servlet3教程]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/58744369</link><guid>https://blog.youkuaiyun.com/koflance/article/details/58744369</guid><author>koflance</author><pubDate>Wed, 01 Mar 2017 00:19:54 +0800</pubDate><description><![CDATA[1. Servlet介绍Servlet是基于Java技术的web组件，容器托管的，用于生成动态内容。Servlet容器是web server或application server 的一部分，提供基于请求/响应发送模型的网络服务，解码基于 MIME 的请求，并且格式化基于 MIME 的响应。 Servlet 容器也包含了管理 Servlet 生命周期。Servlet有三大组件，Filter过滤器、Li]]></description><category></category></item><item><title><![CDATA[HTTP协议总结]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/55522525</link><guid>https://blog.youkuaiyun.com/koflance/article/details/55522525</guid><author>koflance</author><pubDate>Fri, 17 Feb 2017 21:03:29 +0800</pubDate><description><![CDATA[文章属于总结，可参考好文http://www.cnblogs.com/EricaMIN1987_IT/p/3837436.html请求类型GET： 用于请求访问已经被URI（统一资源标识符）识别的资源，可以通过URL传参给服务器 
POST：在Request-URI所标识的资源后附加新的数据。唯一的非幂等方法 
PUT： 请求服务器存储一个资源，并用Request-URI作为其标识 
HEAD：获得]]></description><category></category></item><item><title><![CDATA[Guava异步事件总线AsyncEventBus的注解AllowConcurrentEvents分析]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/55211990</link><guid>https://blog.youkuaiyun.com/koflance/article/details/55211990</guid><author>koflance</author><pubDate>Wed, 15 Feb 2017 16:56:35 +0800</pubDate><description><![CDATA[Guava提供了EventBus事件总线工具，可以很方便的创建观察者模式，基本使用请参考如下链接 
http://www.cnblogs.com/peida/p/EventBus.html。在设置观察者时，需要使用注解类@Subscribe来标识一个订阅者，但在注解中还要一个注解@AllowConcurrentEvents，这个注解是用来标识当前订阅者是线程安全的，那Guava内部是如何实现的呢？直]]></description><category></category></item><item><title><![CDATA[JAVA NIO入门讲解1]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/54429082</link><guid>https://blog.youkuaiyun.com/koflance/article/details/54429082</guid><author>koflance</author><pubDate>Sat, 14 Jan 2017 21:27:34 +0800</pubDate><description><![CDATA[NIO基本概述3
Channel通道
FileChannel
简单示例
MappedByteBuffer内存映射文件
ServerSocketChannel
利用FileChannel进行通道之间数据交换
利用Pipe管道线程之间数据通讯
Scatter与Gather
Channel中文乱码问题5
Buffer缓冲区
基本分类
基本原理
使用说明
简单示例
其他方法
Selector多路复用器4
S]]></description><category></category></item><item><title><![CDATA[Spring 切换日志系统]]></title><link>https://blog.youkuaiyun.com/koflance/article/details/54424783</link><guid>https://blog.youkuaiyun.com/koflance/article/details/54424783</guid><author>koflance</author><pubDate>Sat, 14 Jan 2017 08:25:45 +0800</pubDate><description><![CDATA[为何需要切换
如何进行操作
Gradle构建器配置
Maven构建器配置
结果示例
容器日志为何需要切换由于历史原因，Spring最开始在core包中引入的是commons-logging（JCL标准实现）的日志系统，官方考虑到兼容问题，在后续的Spring版本中并未予以替换，而是继续沿用。如果考虑到性能、效率，应该自行进行替换，在项目中明确指定使用的日志框架，从而在编译时就指定日志框架。 
com]]></description><category></category></item></channel></rss>