自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Schelor的专栏

闲敲棋子落灯花

  • 博客(54)
  • 资源 (2)
  • 收藏
  • 关注

原创 Log4j2写日志的艺术

Log4j2中的组件从配置开始API基本使用小细节写日志的原理主要流程同步写异步写顺便说一下ArrayBlockingQueuenotFull 与 notEmpty异步写是怎么玩的巧妙的异步写设计ByteBuffer与RandomAccessFileGarbage-free避免创建多余对象异步Logger性能写在最后 在程序的世界里,抽象让人像是雾里看花。抽象让程

2017-06-26 21:01:53 5235 1

原创 Java TPS实现

写在前面TPS即每秒查询事物,可以用于测试一个方法、工具或者系统的性能。本文采用Java并发包中的工具实现了一个工具TPS性能测试。主要是测试OKHttp库来执行Http请求的性能。测试代码用到了Java了线程池ExecuterService,CountDownLatch, CyclicBarrier, 原子类,volatile关键词等。可算是对Java并发组件的组合使用。下面直接贴出源码,仅供参考

2016-07-09 18:19:40 8803

原创 Thinking in Netty

Thinking in NettyBy 谢乐Thinking in Netty写在前面Netty快速开始Netty的架构Netty的线程模型1 服务端线程模型1 客户端线程模型Netty的API设计Netty的通信过程Netty中的设计模式最后1. 写在前面Netty的词根为net, 那么我们就已经猜想到它与网络有关。官方对Netty的解释为: Netty是一种异步的基于

2016-06-19 19:41:14 2354

原创 Java IO模型&NIO

Java IO模型&NIOJava IO模型NIO楔子概述网络服务经典的服务设计经典的SocketServer循环阻塞可伸缩目标分而治之事件驱动设计背景知识AWT 事件Reactor 模式Reactor基础模式Java NIO 支持ChannelsBuffersSelectorsSelectionKeysReactor 模式实践第一步初始化第二步循环分发第三

2016-06-01 20:49:00 5967

原创 Thinking in Spring

Thinking in SpringThinking in Spring写在前面的话Spring是怎么载入XML配置的Spring读取配置文件并设置到占位符中的过程是怎样的Spring的依赖注入过程是怎样的ComponentService这些注解是怎么执行的Spring中的设计模式有哪些怎么运用的Spring是怎么实现开闭原则的写在前面的话该怎么开始呢。Spring从出现到如今已经过

2016-05-07 23:04:52 2698

翻译 aqs

Java同步框架(译)前言本文翻译自Doug Lea的论文,编号为NY 13126,旨在为了补充说明AQS的原理与设计实现。如需传播或另作刊摘,请尊重原作者。 文章主要探索AQS的原理与设计决策,因此删减了性能测试等末尾几章节。翻译属于再次加工,很多理解不当或转意有误,还请参见原文。 –Schelor摘要在J2SE 1.5 java.util.concurrent包中的大多数同步组件(锁、内存屏

2016-03-26 18:17:21 1115

原创 走近AbstractQueuedSynchronizer

一、开始Java并发包中的同步器是很多并发组件的基础,如各种Lock,ConcurrentHashMap中的Segment,阻塞队列,CountDownLatch等。按我们一贯的风格,让我们直接走近设计者对其的诠释。在java.util.concurrent.locks包中, AbstractQueuedSynchronizer直接继承自AbstractOwnableSynchroni

2016-03-13 00:03:09 633 1

原创 Java ThreadLocal原理与源码

1.  开始Java中的ThreadLocal类很有意思,它提供了一种线程中的局部变量机制。这种变量与一般的变量不同,一般的变量是在多线程环境中(通过get或set方法)拷贝一份副本,而threadlocal变量是独立的线程内部拷贝。一般,ThreadLocal的实例常常用作private static类型,用于关联一个线程和线程上下文。ThreadLocal内部提供了一个ThreadLoca

2016-02-28 22:08:52 582

原创 Java ThreadPoolExecutor线程池原理及源码分析

一、源码分析(基于JDK1.6)ThreadExecutorPool是使用最多的线程池组件,了解它的原始资料最好是从从设计者(Doug Lea)的口中知道它的来龙去脉。在Jdk1.6中,ThreadPoolExecutor直接继承了AbstractExecutorService,并层级实现了ExecutorService和Executor接口。1.ExecutorExecutor是

2016-02-21 17:27:01 2796 1

原创 Golang学习笔记:语言规范二

类型转换形式为 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

2015-10-17 18:27:09 1591

原创 Golang学习笔记:语言规范之声明与作用域

类型声明包括:常量、自定义类型、变量、函数、标签、还有包声明。 程序中的标识符都必须声明。块、包、文件中的标识符不能重复。Declaration = ConstDecl | TypeDecl | VarDecl .TopLevelDecl = Declaration | FunctionDecl | MethodDecl .标签作用域标签是在标签语句中使用,常用在break、continu

2015-10-17 15:22:19 1323

原创 Golang学习笔记:语言规范之类型(续)

类型(续)指针类型指针类型表示所有给定类型的指针变量,也称为基础类型的指针,默认未初始化的指针类型值为nil。PointerType = "*" BaseType .BaseType = Type .*Point*[4]int函数类型函数类型表示拥有相同参数和返回值类型的函数,未初始化的函数类型变量的值为nil,定义如下FunctionType = "func" Signature .

2015-10-17 11:45:33 843

原创 Golang学习笔记:语言规范之词汇元素和类型

引言Golang参考手册,更多内容请参考http://golang.org 语言规范参考自https://golang.org/ref/spec词汇元素注释行注释: // comment content 段注释:/* comment content */符号符号有4类:标识符、关键字、操作符和分隔符、字面常量分号golang中,分号可省略标识符标识符即程序中的变量和类型,有一个或多个字母或数

2015-10-11 15:55:13 2110

原创 SpringMVC原理探索,从DispatcherServlet开始

概述SpringMVC框架围绕着DispatcherServlet而设计,实现Web请求到处理器的转发,支持配置URL到处理器的映射,视图的解析,国际化和时区,主题解析还有文件上传功能。采用基于@Controller和@RequestMaping注解作为默认处理器,提供非常灵活的处理方法。随着Spring3.0的发布,@Controller的机制还允许通过@PathVariable注解来创建REFT

2015-10-03 17:45:12 3703

原创 Java集合工具2--Arrays

续上文中,讨论了集合中常用的工具库和工具类。事实上,集合的底层实现已然或为数组或链表,因此还有必要探寻一下Java中的Arrays 类。Arraysjavadoc对其的解释为: 若没有特别注明,传入的特定的数组引用为null时,类中的所有方法皆会抛NullPointerException。 类中的实现方法有一个简要的文档描述,这些描述应该是一种注意事项,而不是一种规范,这些实现可有其他算法

2015-10-03 11:45:38 454

原创 Java集合工具

诚然,在Java世界中,用的非常广泛的数据结构乃集合也,由Collection及Map衍合而来的多功能结构的集合类和接口,让我们随行随用。然而,工欲善其事,必先利其器,个人的工具箱中,必然应该收藏很多集合工具利器。一、Collectionsjavadoc对其有如下解释 此类包含了许多特有的静态方法,用于操作集合或返回集合实例,同时还提供许多处理集合和包装器的多态实现,用于获取一些拥有特定功能的集

2015-10-01 15:13:54 1102

翻译 Java 反射概述

反射的使用虚拟机中的应用程序可以通过反射来检查或修改在运行时的行为,这是一种相对高级的功能,开发者应该有很深的语言基础才可以使用它。虽心有言训,但反射亦是一种很有用的技术,它能实现的功能,其他方式只能远观而不可亵玩焉。 可扩展特性应用程序可以通过使用外部类或自定义的类的完全限定名称即完整的类明来创建对象实例。 类浏览器和可视化开发环境类浏览工具可以查看类的所有成员属性,

2015-09-10 16:21:07 884

原创 SublimeText, Eclipse, Liteide--Golang开发环境搭建(Windows版)

Go SDK 安装访问golang的官方网站,http://golang.org, 点击Download Go按钮或者直接访问, http://golang.org/dl, 进入下载页面 下载msi安装版,或者源码版即可(须通过源码安装),建议使用安装版,直接快意Go的江湖。 安装时,可使用默认的路径,最后会生成在c:/go目录下,同时在系统环境变量中已然添加好c:/go/bin。

2015-09-04 14:48:32 1433

原创 Java Lof4J日志

从两段代码开始第一段代码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

2015-07-25 17:50:56 1303 1

原创 FastJson-JSONField

学习摘要自 https://github.com/alibaba/fastjson http://blog.csdn.net/zimo2013/article/details/10474107Maven依赖 仓库地址 http://repo1.maven.org/maven2/com/alibaba/fastjson/ 选择版本、建议使用最新版本<dependency> <grou

2015-07-21 22:54:40 7453

原创 Eclilpse Plugin for Velocity on Luna

项目中需要用到Velocity,而且使用的是Eclipse Luna, 该IDE自带的vm编辑器让人很难忍受,于是急需安装velocity的插件。但是,试过很多办法后,都不成功。Fortunately,i made it.1. access eclipse market: http://marketplace.eclipse.org/, and search with the ke

2015-06-11 21:58:56 691

翻译 什么是设计模式

什么是设计模式设计面向对象的软件很难,设计可复用的面向对象软件更难。你必须找到相关的对象,以适当的粒度将它们归类,定义类的接口和继承层次,并建立对象之间的关键关系。你的设计应该能够处理手中特定的问题,同时还能够通用,以便处理将来的问题或其他需求,你还希望避免重新设计,或者至少以最低的代价来完成设计。有经验的面向对象设计者都会说如果想第一次就得到正确的结果,那么完成一种可重用的、灵活的设计将会非

2015-05-19 20:59:29 577

翻译 Software Process (软件过程)

Software Process Models简介软件过程是构建软件的一系列活动,这些活动包含了软件从无到有的开发过程。然而越来越多的新型软件都是通过扩展已有的系统或集成现有的软件组件来完成开发。软件过程模型是一种软件过程的抽象表现,每种过程模型会从一种特殊的视角来表示一种过程,因此仅仅会提供一种局部的信息来反映该过程。本节将介绍一些常用的过程模型,然后从架构的角度来说明他们,

2015-05-17 23:15:21 3873

翻译 Software Development 软件开发

Software Development 软件开发计算机程序简介计算机程序是一套指令集,用于管理计算机来执行一些功能操作。对于要执行的指令,计算机必须要通过执行一个程序来获得,也就是说,计算机先读取该程序,然后按照程序中明确的指令顺序逐步执行,直到完成。一个程序可以依据用户的交互被计算机执行很多次。程序可以分成两种主要的类型:应用程序和操作系统。应用程序是一种可以直接为用户操作的程

2015-05-09 22:05:17 1374

原创 越努力,越幸运

匆匆而别过大学,到现在已接近一载,感触颇多,故随心而写点什么。

2015-05-08 17:16:02 935

原创 【面试】京东成都研发部面试

在拉钩上投递的简历,第二天京东就打电话了,效率还挺快的,激动得发抖。由于面试预约的是周一,所以周末在家准备了,啃了几遍《深入理解Java虚拟机第二版》,便上阵了。9点过来到京东成都研发部(西部智谷),很天真的等到了9:40(大学里辅导员说去面试时不要去早了,提前10-20分钟就好),结果上去时有一个哥们已经面试了接近半小时了。进入一面走来了一个面带微笑的同志,很年轻,先让我做个简单的自

2015-04-27 19:03:22 6536

翻译 Computer Language and Programming(计算机语言与编程)

Computer Language and Programming(计算机语言与编程)编程语言编程语言简介编程语言是一种人为创造的一种语言,用以编写计算机可执行的程序(指令序列),与自然语言相似,如英语,编程语言也有词汇,语法和句法。但自然语言还是不适合用于编程,因为他们有时候会模糊,即他们的词汇和语法结构有多种解释意义。用于编程的语言必须有简单的逻辑结构和语法规则,拼写以及标点符

2015-04-25 15:07:43 1937

翻译 计算机体系结构Computer Architecture

计算机体系结构ComputerArchitecture计算机硬件简介计算机硬件是一套拥有计算机功能的物理设备,这些物理组件典型的被分为三种:输入,输出,存储。这些组件都能够连接到微处理器,即CPU上。CPU通过总线实现数据传输并以此来控制计算机操作。在另一方面讲,软件程序是一套用于数据操作的指令集,比如字处理软件和电子游戏软,这些都通过硬件存储并传输给CPU处理。计算机软件也管理着

2015-04-18 21:58:42 3837

翻译 Computer and computer Science(计算机与计算机科学)

Computer and computer Science(计算机与计算机科学)计算机概述i.      计算机简介计算机是一种可以接收指令集或程序的电子设备,并通过执行数字计算或操作其他形式的信息来运行这些程序。计算机的发展催生现代高科技的产生。从国家机密文件,到银行交易事物,到家庭与私人账户,各种各样的计算机在数据存储和数据处理方面得到使用。通过自动化技术,计算机开启了制造工业

2015-04-12 01:18:35 1974

原创 Java Int unpacking(分解)packing

在ImportNew上看到一个很有意思的代码片,功能大意为把int拆开,看看其由哪些字节组成(unpacking),以及把四个字节组合成一个int(packing )。首先脑补一下两个概念排列表示一个对象的字节有两个通用的规则。一个w位的整数,位表示为[Xw-1, Xw-2,...X1,X0], 其中,Xw-1为最高有效位,X0为最低有效位。某些机器选择在存储器中,按照从最低有效字节到

2015-04-07 22:56:51 939

原创 SqlPlus 编程点滴

pl/sql是oracle在标准的sql语言上的扩展。其不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误。pl/sql可以在数据库中写入存储过程(过程,函数,触发器)。创建过程:create or replace procedure 过程名 is/asbegin执行部分:insert into 表名 (字段名) va

2015-03-23 21:17:09 1400

原创 一些Java编程题

本文为学习实践的记录,来源于:http://thecodesample.compackage interview;/* * 本文给出一个实例,使用递归算法反转字符串 */public class StringReversalWithRecursion { public static void main(String[] args) { StringReversalWi

2015-01-26 19:09:03 530

原创 设计模式随笔一

六个原则(Solid)Single Responsibility Principle:单一职责原则--接口职责单一,类的设计尽量只有一个原因引起变化。Open Closed Principle:开闭原则--一个软件实体如类(抽象)、模块、方法应该对扩展开放,对修改关闭。Liskov Substitution Principle:里氏替换原则--父类能出现的地方,子类就可以替换父类。

2015-01-05 18:33:53 516

原创 Java中的一般继承和抽象继承的区别

曾经在一次面试中,在介绍一个通用设计时说,接口负责定义public属性和方法,并且声明与其他对象的依赖关系,抽象类负责公共构造部分或方法的实现,实现类准确的实现业务逻辑,同时在适当的时候对父类进行细化。面试老师突然问,如果采用一般类也可以实现公共的方法,也可以继承从而被覆写,为什么要选择抽象继承而不使用一般继承?当时我竟无语凝噎。抽象类其实提供一种模板,提供子类可参照,也可拿来主义。在现实

2015-01-05 12:29:43 8059

原创 Java 对象Clone

一个普通的Java类,继承了Object对象,便继承了该对象的Clone方法protected native Object clone() throws CloneNotSupportedException;但是Java基础类或String类却不支持这样的操作Integer x = new Integer(10);x.clone(); //编译报错String s = "abc"

2014-12-31 15:22:59 636

原创 Effective Java记录2:遇到多个构造器考虑用构建器(Builder)

实例化对象时,构造器的自变量有时候会不定,即有有多个可选参数时,可重载构造器,但是有时候在问题模型中,某种类型的构造器是后期出现的,随着情况的不同,可能会添加多个构造器,这时候,代码很难维护。同时,客户端调用时,不便于阅读和使用(重载太多)     替代方案一:JavaBean模式调用无参数构造函数,然后通过setter方法设置必要的参数。但是可能的缺点:由可能存在的JavaBean状态不

2014-12-30 20:53:09 646

原创 Effective Java记录1:考虑用静态工厂方法代替构造器

静态工厂方法与构造器不同之处在于1.它们有名称2.不必在每次调用时,创建新对象3.多态性,可以返回原类型,或者其子类型代码说明 // 服务接口 public interface Service { // 特定方法 } // 服务提供者 public interface Provider { Service newService(); }

2014-12-30 18:29:58 587

原创 Java8 探索--Lambda

Lambda 探索package lambda;/* * 下面是一个lambda表达式的重要特征。可选类型声明 - 无需声明参数的类型。编译器可以从该参数的值推断。可选圆括号参数 - 无需在括号中声明参数。对于多个参数,括号是必需的。可选大括号 - 表达式主体没有必要使用大括号,如果主体中含有一个单独的语句。可选return关键字 - 编译器会自动返回值,如果主体有一

2014-12-19 18:40:08 488

原创 查找与排序 In Java

直接记录一段代码package searchandsort;public class SortingAndSearch> { /** * 线性查找 * @param data 数组对象 * @param min 起始索引 * @param max 结束索引 * @param target 查找目标 * @return 是否查找到 */ public

2014-12-18 22:01:22 562

原创 记录一下WPF开发(三)--- 基于Word书签的XPS报表

制作报表可有很多方案,这里记录一种C#

2014-09-30 21:09:55 2023 1

Spring 4.0.6+Hibernate 4.3.5 + Jpa+DBCP2

这是目前最新的Spring库文件,以及Hibernate库文件,并提供DBCP2为数据源,加以Pool2。

2014-07-19

iRreport User Guide

iReport Studio用户文档,可以直接到官网上下载。我这里提供一份,英文版的

2014-01-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除