<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Schelor的专栏]]></title><description><![CDATA[闲敲棋子落灯花]]></description><link>https://blog.youkuaiyun.com/scherrer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; scherrer]]></copyright><item><title><![CDATA[Log4j2写日志的艺术]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/73744392</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/73744392</guid><author>scherrer</author><pubDate>Mon, 26 Jun 2017 21:01:53 +0800</pubDate><description><![CDATA[Log4j2中的组件
从配置开始
API基本使用
小细节
写日志的原理
主要流程
同步写
异步写
顺便说一下ArrayBlockingQueue
notFull 与 notEmpty
异步写是怎么玩的
巧妙的异步写设计
ByteBuffer与RandomAccessFile
Garbage-free避免创建多余对象
异步Logger
性能
写在最后
  在程序的世界里，抽象让人像是雾里看花。抽象让程]]></description><category></category></item><item><title><![CDATA[Java TPS实现]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/51867873</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/51867873</guid><author>scherrer</author><pubDate>Sat, 09 Jul 2016 18:19:40 +0800</pubDate><description><![CDATA[写在前面TPS即每秒查询事物，可以用于测试一个方法、工具或者系统的性能。本文采用Java并发包中的工具实现了一个工具TPS性能测试。主要是测试OKHttp库来执行Http请求的性能。测试代码用到了Java了线程池ExecuterService，CountDownLatch, CyclicBarrier, 原子类，volatile关键词等。可算是对Java并发组件的组合使用。下面直接贴出源码，仅供参考]]></description><category></category></item><item><title><![CDATA[Thinking in Netty]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/51713629</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/51713629</guid><author>scherrer</author><pubDate>Sun, 19 Jun 2016 19:41:14 +0800</pubDate><description><![CDATA[Thinking in NettyBy 谢乐
Thinking in Netty
写在前面
Netty快速开始
Netty的架构
Netty的线程模型
1 服务端线程模型
1 客户端线程模型
Netty的API设计
Netty的通信过程
Netty中的设计模式
最后1.  写在前面Netty的词根为net, 那么我们就已经猜想到它与网络有关。官方对Netty的解释为:
  Netty是一种异步的基于]]></description><category></category></item><item><title><![CDATA[Java IO模型&NIO]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/51558917</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/51558917</guid><author>scherrer</author><pubDate>Wed, 01 Jun 2016 20:49:00 +0800</pubDate><description><![CDATA[Java IO模型&NIO
Java IO模型NIO
楔子
概述
网络服务
经典的服务设计
经典的SocketServer循环阻塞
可伸缩目标
分而治之
事件驱动设计
背景知识AWT 事件
Reactor 模式
Reactor基础模式
Java NIO 支持
Channels
Buffers
Selectors
SelectionKeys
Reactor 模式实践
第一步初始化
第二步循环分发
第三]]></description><category></category></item><item><title><![CDATA[Thinking in Spring]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/51340651</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/51340651</guid><author>scherrer</author><pubDate>Sat, 07 May 2016 23:04:52 +0800</pubDate><description><![CDATA[Thinking in Spring
Thinking in Spring
写在前面的话
Spring是怎么载入XML配置的
Spring读取配置文件并设置到占位符中的过程是怎样的
Spring的依赖注入过程是怎样的
ComponentService这些注解是怎么执行的
Spring中的设计模式有哪些怎么运用的
Spring是怎么实现开闭原则的写在前面的话该怎么开始呢。Spring从出现到如今已经过]]></description><category></category></item><item><title><![CDATA[aqs]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/50988100</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/50988100</guid><author>scherrer</author><pubDate>Sat, 26 Mar 2016 18:17:21 +0800</pubDate><description><![CDATA[Java同步框架（译）前言本文翻译自Doug Lea的论文，编号为NY 13126，旨在为了补充说明AQS的原理与设计实现。如需传播或另作刊摘，请尊重原作者。 
文章主要探索AQS的原理与设计决策，因此删减了性能测试等末尾几章节。翻译属于再次加工，很多理解不当或转意有误，还请参见原文。  –Schelor摘要在J2SE 1.5 java.util.concurrent包中的大多数同步组件（锁、内存屏]]></description><category></category></item><item><title><![CDATA[走近AbstractQueuedSynchronizer]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/50868496</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/50868496</guid><author>scherrer</author><pubDate>Sun, 13 Mar 2016 00:03:09 +0800</pubDate><description><![CDATA[一、开始

Java并发包中的同步器是很多并发组件的基础，如各种Lock，ConcurrentHashMap中的Segment，阻塞队列，CountDownLatch等。按我们一贯的风格，让我们直接走近设计者对其的诠释。
在java.util.concurrent.locks包中, AbstractQueuedSynchronizer直接继承自AbstractOwnableSynchroni]]></description><category></category></item><item><title><![CDATA[Java ThreadLocal原理与源码]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/50762054</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/50762054</guid><author>scherrer</author><pubDate>Sun, 28 Feb 2016 22:08:52 +0800</pubDate><description><![CDATA[1.  开始
Java中的ThreadLocal类很有意思，它提供了一种线程中的局部变量机制。这种变量与一般的变量不同，一般的变量是在多线程环境中（通过get或set方法）拷贝一份副本，而threadlocal变量是独立的线程内部拷贝。一般，ThreadLocal的实例常常用作private static类型，用于关联一个线程和线程上下文。ThreadLocal内部提供了一个ThreadLoca]]></description><category></category></item><item><title><![CDATA[Java ThreadPoolExecutor线程池原理及源码分析]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/50708737</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/50708737</guid><author>scherrer</author><pubDate>Sun, 21 Feb 2016 17:27:01 +0800</pubDate><description><![CDATA[一、源码分析（基于JDK1.6）

ThreadExecutorPool是使用最多的线程池组件，了解它的原始资料最好是从从设计者（Doug Lea）的口中知道它的来龙去脉。在Jdk1.6中，ThreadPoolExecutor直接继承了AbstractExecutorService,并层级实现了ExecutorService和Executor接口。
1.Executor
Executor是]]></description><category></category></item><item><title><![CDATA[Golang学习笔记：语言规范二]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/49205831</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/49205831</guid><author>scherrer</author><pubDate>Sat, 17 Oct 2015 18:27:09 +0800</pubDate><description><![CDATA[类型转换形式为 T(x),  T是一种类型，x是目标类型表达式。示例*Point(p)        // same as *(Point(p))
(*Point)(p)      // p is converted to *Point
<-chan int(c)    // same as <-(chan int(c))
(<-chan int)(c)  // c is converted to]]></description><category></category></item><item><title><![CDATA[Golang学习笔记：语言规范之声明与作用域]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/49203899</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/49203899</guid><author>scherrer</author><pubDate>Sat, 17 Oct 2015 15:22:19 +0800</pubDate><description><![CDATA[类型声明包括：常量、自定义类型、变量、函数、标签、还有包声明。 
程序中的标识符都必须声明。块、包、文件中的标识符不能重复。Declaration   = ConstDecl | TypeDecl | VarDecl .
TopLevelDecl  = Declaration | FunctionDecl | MethodDecl .标签作用域标签是在标签语句中使用，常用在break、continu]]></description><category></category></item><item><title><![CDATA[Golang学习笔记：语言规范之类型（续）]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/49201829</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/49201829</guid><author>scherrer</author><pubDate>Sat, 17 Oct 2015 11:45:33 +0800</pubDate><description><![CDATA[类型（续）指针类型指针类型表示所有给定类型的指针变量，也称为基础类型的指针，默认未初始化的指针类型值为nil。PointerType = "*" BaseType .
BaseType    = Type .*Point
*[4]int函数类型函数类型表示拥有相同参数和返回值类型的函数，未初始化的函数类型变量的值为nil,定义如下FunctionType   = "func" Signature .]]></description><category></category></item><item><title><![CDATA[Golang学习笔记：语言规范之词汇元素和类型]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/49031939</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/49031939</guid><author>scherrer</author><pubDate>Sun, 11 Oct 2015 15:55:13 +0800</pubDate><description><![CDATA[引言Golang参考手册，更多内容请参考http://golang.org 
语言规范参考自https://golang.org/ref/spec词汇元素注释行注释: // comment content 
段注释：/*  comment content  */符号符号有4类：标识符、关键字、操作符和分隔符、字面常量分号golang中，分号可省略标识符标识符即程序中的变量和类型，有一个或多个字母或数]]></description><category></category></item><item><title><![CDATA[SpringMVC原理探索，从DispatcherServlet开始]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/48878905</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/48878905</guid><author>scherrer</author><pubDate>Sat, 03 Oct 2015 17:45:12 +0800</pubDate><description><![CDATA[概述SpringMVC框架围绕着DispatcherServlet而设计，实现Web请求到处理器的转发，支持配置URL到处理器的映射，视图的解析，国际化和时区，主题解析还有文件上传功能。采用基于@Controller和@RequestMaping注解作为默认处理器，提供非常灵活的处理方法。随着Spring3.0的发布，@Controller的机制还允许通过@PathVariable注解来创建REFT]]></description><category></category></item><item><title><![CDATA[Java集合工具2--Arrays]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/48877373</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/48877373</guid><author>scherrer</author><pubDate>Sat, 03 Oct 2015 11:45:38 +0800</pubDate><description><![CDATA[续上文中，讨论了集合中常用的工具库和工具类。事实上，集合的底层实现已然或为数组或链表，因此还有必要探寻一下Java中的Arrays 类。Arraysjavadoc对其的解释为：
  若没有特别注明，传入的特定的数组引用为null时，类中的所有方法皆会抛NullPointerException。 
  类中的实现方法有一个简要的文档描述，这些描述应该是一种注意事项，而不是一种规范，这些实现可有其他算法]]></description><category></category></item><item><title><![CDATA[Java集合工具]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/48845145</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/48845145</guid><author>scherrer</author><pubDate>Thu, 01 Oct 2015 15:13:54 +0800</pubDate><description><![CDATA[诚然，在Java世界中，用的非常广泛的数据结构乃集合也，由Collection及Map衍合而来的多功能结构的集合类和接口，让我们随行随用。然而，工欲善其事，必先利其器，个人的工具箱中，必然应该收藏很多集合工具利器。一、Collectionsjavadoc对其有如下解释
  此类包含了许多特有的静态方法，用于操作集合或返回集合实例，同时还提供许多处理集合和包装器的多态实现，用于获取一些拥有特定功能的集]]></description><category></category></item><item><title><![CDATA[Java 反射概述]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/48345039</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/48345039</guid><author>scherrer</author><pubDate>Thu, 10 Sep 2015 16:21:07 +0800</pubDate><description><![CDATA[反射的使用
虚拟机中的应用程序可以通过反射来检查或修改在运行时的行为，这是一种相对高级的功能，开发者应该有很深的语言基础才可以使用它。虽心有言训，但反射亦是一种很有用的技术，它能实现的功能，其他方式只能远观而不可亵玩焉。
 
可扩展特性
应用程序可以通过使用外部类或自定义的类的完全限定名称即完整的类明来创建对象实例。
 
类浏览器和可视化开发环境
类浏览工具可以查看类的所有成员属性，]]></description><category></category></item><item><title><![CDATA[SublimeText, Eclipse, Liteide--Golang开发环境搭建（Windows版）]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/48208337</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/48208337</guid><author>scherrer</author><pubDate>Fri, 04 Sep 2015 14:48:32 +0800</pubDate><description><![CDATA[Go SDK 安装访问golang的官方网站，http://golang.org,  点击Download Go按钮或者直接访问， http://golang.org/dl, 进入下载页面 
 
下载msi安装版，或者源码版即可（须通过源码安装），建议使用安装版，直接快意Go的江湖。 
安装时，可使用默认的路径，最后会生成在c:/go目录下，同时在系统环境变量中已然添加好c:/go/bin。]]></description><category></category></item><item><title><![CDATA[Java Lof4J日志]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/47058531</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/47058531</guid><author>scherrer</author><pubDate>Sat, 25 Jul 2015 17:50:56 +0800</pubDate><description><![CDATA[从两段代码开始第一段代码
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.BasicConfigurator;public class HelloLog4J {
    private static Log logger = Log]]></description><category></category></item><item><title><![CDATA[FastJson-JSONField]]></title><link>https://blog.youkuaiyun.com/scherrer/article/details/46993679</link><guid>https://blog.youkuaiyun.com/scherrer/article/details/46993679</guid><author>scherrer</author><pubDate>Tue, 21 Jul 2015 22:54:40 +0800</pubDate><description><![CDATA[学习摘要自 
https://github.com/alibaba/fastjson 
http://blog.youkuaiyun.com/zimo2013/article/details/10474107Maven依赖 
仓库地址 
http://repo1.maven.org/maven2/com/alibaba/fastjson/ 
选择版本、建议使用最新版本<dependency>
    <grou]]></description><category></category></item></channel></rss>