自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tang9140的专栏

心之若素,香自满怀

原创 高效实现Map的原子更新操作(Hystrix的InternMap<K, V>源码解析)

最近学习Hystrix的InternMap<K, V>源码,有段不错的代码,一起学习下高效实现Map的原子更新。通过ConcurrentHashMap提供的线程安全的putIfAbsent方法,保证了storage存入时的线程安全,同时通过对变量值判断进行返回,保证了整个方法操作的原子性。这种实现线程安全的方式,没有用同步代码块等比较低效的同步方式,确实是一种高效实现Map的原子更新方式

2016-09-30 16:39:37 1975

原创 那些糟糕的开发框架

本文将与大家一起来吐槽下公司的开发框架,站在开发者的角度详述糟糕设计下导致的各种问题和使用痛点,并给出改进意见。Java目前流行的开发框架,不外乎SSH、SSM,或者两者的混搭。 集成这些框架技术本身并不难,难点在于怎么让框架简单易用,更好的服务于开发者,让开发者专注于业务而不是一些无用的设计上。下面就从Dao,Service,Controller及基础功能四个方面一一痛斥那些糟糕的设计

2016-09-13 18:24:52 5108 3

原创 Idea快捷键(光标定位/切换/查找相关)

本文将告诉你IDEA与定位/切换/查找相关快捷键,学会使用这些快捷键,可以将手指尽量多的留在键盘上,避免手指在鼠标和键盘间来回切换,以提高开发效率。

2016-08-27 10:44:28 41555 2

原创 SpringMVC @ResponseBody在IE8变下载

在使用IE8请求用@ResponseBody注解返回json格式数据的action时自动变下载页面,火狐和chorme正常。其原因就是响应Content-Type的值为application/json;charset=UTF-8时,IE下会自动变成下载。

2016-06-25 11:20:01 5200 1

原创 java实现各种排序算法及比较

常见排序算法包括以下七种:选择排序、冒泡排序、插入排序、快速排序、希尔排序、堆排序、归并排序。 在学习具体算法实现并进行比较前,先来学习算法比较的几个维度。 一是稳定性 所谓稳定性,是指值相等的两个元素在排序前后是否会发生位置的交换。如果不会发生交换,则认为是稳定的算法;反之,则认为是不稳定的排序算法。 二是时间复杂度,指执行算法所需的时间长短。简单说就是算法执行的快慢程序。 三是空间复杂

2015-06-08 11:01:45 6494 1

原创 mvn+eclipse构建hadoop项目并运行(超简单hadoop开发入门指南)

本文详述如何在windows开发环境下通过mvn+eclipse构建hadoop项目并运行必备环境windows7操作系统eclipse-4.4.2mvn-3.0.3及用mvn生成项目架构(参阅mvn入门指南)hadoop-2.5.2(直接上hadoop官网下载hadoop-2.5.2.tar.gz并解压到某个目录)windows7下环境配置1、本地hadoop环境配置 添加环境变量H

2015-05-15 10:07:03 2063 1

原创 java之XMemcached使用及源码详解

本文主要讲述如何使用XMemcached客户端与Memcached服务端进行交互。通过XMemcached的API调用与Memcached的set/get命令对比及跟踪XMemcached源码,使大家对XMemcached的API有更深层次的理解,能够从底层上去了解其工作原理,从而能在项目中进行一些针对性的接口封闭及优化工作。 是叫Memcache还是Memcached?

2015-02-03 09:18:49 3726

原创 java中int与byte数组互转代码详细分析

在java中,可能会遇到将int转成byte[]数组,或者将byte[]数组转成int的情况。下面我们来思考下怎么实现?首先,分析int在java内存中的存储格式。众所周知,int类型在内存中占4个字节,采用补码方式存储(假如对原码、反码、补码不熟悉,请查阅相关资

2015-02-02 09:01:05 10655 5

原创 Hadoop-2.5.2集群安装配置详解

转载请注明出处:http://blog.csdn.net/tang9140/article/details/42869531最近学习了下hadoop的安装。下面详细说明下步骤一、环境我的是在Linux环境下进行安装的。对于想在windows系统上学习的同学,可以采用虚拟机方式或通过cygwin模拟linux环境方式进行学习。现在有三台服务器,分配如下:10.0.1.

2015-01-19 09:43:33 6011 1

原创 关于12306第三方软件检测研究

转载请注明出处:http://blog.csdn.net/tang9140/article/details/42869269首先申明下,本文章纯作为个人喜好的技术性研究,请不要用于非法操作盈取不正当利益,你懂的。问题引出大概在2014年12月的17、18号,大量针对12306的刷票软件出现了非法请求或‘使用第三方购票软件’提示,并且验证码识别出错。后面得知12306为了对恶

2015-01-19 09:19:53 2864 6

原创 java能不能自己写一个类叫java.lang.System/String正确答案

最近学习了下java类加载相关的知识。然后看到网上有一道面试题是能不能自己写个类叫java.lang.System?网上提供的答案:通常不可以,但可以采取另类方法达到这个需求。所谓的另类方法指自己写个类加载器来加载java.lang.System达到目的。首先表明下我的观点。上述答案完全是误导读者,是不正确的答案。我就纳闷了网上怎么把这种完全不正确的搜索结果排在前面,而且几乎搜到的都是

2015-01-15 11:03:11 11548 12

原创 Linux Shell 通配符、转义字符、元字符、特殊字符

本文总结了通配符,元字符,转义字符的基本用法和用例。让大家对shell编程基础知识及在Linux shell中执行命令过程有个初步了解。Shell中经常使用通配符,通配符是由shell处理的,而不是具体命令处理的,其用法类似正则表达式,但是不同于正则表达式。Shell元字符是指有特殊意义的字符,这类字符比较多,需要大家慢慢去学习。通过转义字符,可以将元字符的特殊意义去掉,仅仅当做一般字符对待

2014-10-15 17:26:00 11813

原创 pom中引入新依赖项后项目启动报错问题研究

最近在联调百度云音视频直播 LSS时,在pom中加入bce-java-sdk依赖后,原来的项目启动就出现了问题,挺奇怪的,现记录问题及解决方法如下:问题一、项目启动控制台打印的日志格式和级别完全变了详细描述:项目中采用的是log4j日志框架,在log4j.properties中配置的日志打印级别为INFO,但是控制台却打出了很多DEBUG类型日志,并且日志打印格式也不是配置文件中指定的格式

2016-08-10 13:20:28 3899 2

原创 java fastjson如何自定义转换含枚举类型对象(编程技巧)

使用fastjson序列化时,如果含有枚举类型,默认会根据枚举变量的ordinal值进行反序列且序列化时显示枚举字面代表的字符串。经常这种行为不是我们想要的,那么如何进行定制化枚举类型的序列化和反序列?通过@JSONField注解,可变通实现

2016-06-17 17:41:42 17924 5

原创 informix数据库调优

调优思路整理如下一、PDQ即利用infomix提供的PDQ(并行数据库查询)功能,并结合Power8处理器的SMT特性来提高SQL查询效率PDQ允许数据库服务器将查询一个方面的某个工作分发给几个处理器。例如:如果查询要求聚集,则数据库服务器可以将聚集工作分发给几个处理器。而这次比赛的第二个题目,刚好用到了时间序列的AggregateRange 聚集函数,特别适用PDQ查询的场景。SMT命令Linu

2016-05-30 11:32:13 2478

原创 eclipse中如何通过maven插件执行mvn命令

在eclipse中安装maven插件后,可能需要向本地仓库中添加构件,操作方式如下:项目上右键->Run As->Maven build… ,弹出窗口修改如下在Goals 行输入命令install:install-file -Dfile=E:\org.restlet-2.1.4.jar -DgroupId=org.restlet.jee -DartifactId=org.restlet -Dver

2016-02-04 18:13:01 11928

转载 struts1.* 核心配置文件struts-config.xml详解

转自http://blog.chinaunix.net/uid-26863299-id-4754236.html首先struts-config.xml是struts框架的核心配置文件,其中内嵌如下标签:1、    这是一个主标签,struts配置文件内的所有标签都必须包含在此标签下,且仅能允许有一对该标签;2、该标签就是给当前配置文件进行命名3、  可以认为是一种注释4、

2016-01-22 09:34:06 2518

原创 java编程之美(一)

实践编程已经有足足6年多时间,也算是有一定经验,经常在工作中遇到各种让人不爽的代码编写方式,今天忍不住要来唠叨下。为什么叫编程之美? 在我看来,代码有丑陋难看和赏心悦目两类,当然还有介于两者之间的。优秀开源框架的源码,让人看了就觉得舒服;而有些新手写的代码,让人看了别扭、添堵。本人也是从新手一步步过来的,想想自己早年写得代码,也是很丑的。当年丑不要紧,一直丑就要命了。废话不多说,上

2015-11-01 18:28:40 2221

原创 mysql常用命令

cmd下连接mysqlmysql -u root -proot-u后面跟用户名,-p后面跟密码,注意-p后没有空格 如果提示mysql命令找不到,在环境变量Path下增加mysql安装目录的bin路径(C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin)source命令mysql>use xmanager;mysql>set names utf8;

2015-06-04 11:18:50 1339

原创 Druid数据源配置入门(超详细)

Druid是阿里开发的数据库连接池,据说比c3p0性能更好,支持下国产。下面就来学习下超简单的连接池配置: <!-- 阿里 druid数据库连接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="clos

2015-06-03 10:49:49 10495 2

转载 hadoop中map和reduce的数量设置问题

转载http://my.oschina.net/Chanthon/blog/150500map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务的分布式并行计算,从这个观点来看,如果将map和reduce的数量设置为1,那么用户的任务就没有并行执行,但是map和reduce的数量也不能过多,数量过多虽然可以提高任务并行度,但是太多的map和red

2015-05-21 09:08:40 5369

原创 ant之build.xml详解

最近项目中用到了ant构建项目,由于之前一直用的maven,没接触过ant,就抽空补了下ant相关知识。下面分三部分介绍ant:ant安装ant命令build.xml配置详解ant安装直接上官网下载ant包ant官网,最新包是apache-ant-1.9.4-bin.zip。将其解压到某个目录,我的放置在E:\develop目录下然后配置环境变量,增加系统变量ANT_HOME,值为ant的解

2015-05-15 13:51:08 10318

原创 mvn构建JAX-WS项目含服务端和客户端代码实现

JDK中自带JAX-WS框架。相比而言,JWS是轻量级的,使用非常简便,可与Spring集成使用。下面就详述如何通过mvn构建WebService服务端及客户端。大概过程,引入依赖包->写服务端->服务发布->写客户端

2015-05-06 16:07:10 1724 3

原创 windows下创建.gitignore文件(git提交时忽略某些文件)

相信大家在使用eclipse的git插件提交文件时,都会遇到这样一个问题:就是有可能不小心把不必要的文件也被提交了(如.project,.classpath文件或者.settings文件夹及其下面的文件等),那有没有办法把这些文件忽略掉呢? 方法很简单,就是在项目目录下新建.gitignore文件,然后在里面声明要忽略的文件夹或者文件就可以了。麻烦的地方来了,因为该文件是点开头,没有文件名,没办法

2015-04-28 16:52:25 17946 1

原创 CronExpression表达式语法总结

一个cron表达式由6或7个时间元素组成。它们之间用空格分隔,依次为:[秒] [分] [小时] [日] [月] [星期] [年] 序号 说明 是否必填 允许填写的值 允许的符号 1 秒 是 0-59 , - * / 2 分 是 0-59 , - * / 3 小时 是 0-23 , - * / 4 日 是 1

2015-04-28 10:17:21 8209 2

原创 Linux下查看文件和文件夹大小(df&du)

df用法:df [选项]… [文件]… 显示每个文件所在的文件系统的信息,默认显示全部的文件系统常用选项 -h, –human-readable 大小显示为人类易读形式 (e.g., 1K 234M 2G)例子[root@www ~]# df -h文件系统 容量 已用 可用 已用% 挂载点/dev/sda1 94G 21G 68

2015-04-08 15:58:52 2384

原创 [Java]String之寻根问底

深入理解String类的immutable特性。从字节码指令层面了解字符串连接符号+的本质,以及如何避免低效率使用+号。了解String中==与equals方法判断的异同及常见面试题解答。最后,附上常量池说明及通过反射改变方法区中的运行时常量池代码

2015-02-28 10:51:04 1723 1

原创 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦在:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl B 斜体 Ctrl I 引用 Ctrl

2015-02-08 11:33:16 1115

转载 Zookeeper 的学习与运用

转载请注明出处:http://blog.csdn.net/tang9140/article/details/42869269在java中,可能会遇到将int转成byte[]数组,或者将byte[]数组转成int的情况。下面我们来思考下怎么实现?首先,分析int在java内存中的存储格式。众所周知,int类型在内存中占4个字节,采用补码方式存储(假如对原码、反码、补码不熟悉,请查阅相关资

2015-01-30 13:40:07 639

原创 hadoop 2.5.2执行bin/hdfs namenode -format报错

按照hadoop 2.5.2文档学习,在执行命令bin/hdfs namenode -format时,老是报错:java.lang.NoClassDefFoundError: namecode到网上搜了很多解决方法,有说修改etc/hadoop/hadoop-env.sh增加export HADOOP_COMMON_HOME=/root/test/hadoo

2014-12-31 17:05:57 3177

原创 java泛型学习和实践(4)

引言前三节讲述了泛型常见声明及使用,泛型既可以在类上进行声明,也可以在单个方法上进行声明,并分别对这两种情况进行了总结。下面来学习下泛型扩展知识。延用前面的Runnable接口、Buick类、Ford类、Driver类,新增加一个汽车容器类CarContainer第一版代码如下:public interface Runnable { public void run(

2014-12-30 13:23:52 1740 4

原创 java泛型学习和实践(3)

引言泛型声明除了像前面两节所讲的在类名后进行定义外,也可以在单独的方法上进行定义。这讲我们就讲下如何在方法进行泛型声明和使用同样的,假设一个汽车改装厂的场景。延用上节中的Runnable接口、Ford类、Buick类。 新增CarRefitFactory类(汽车改装工厂类)。第一版代码如下:public interface Runnable { public voi

2014-12-27 15:32:55 1553

原创 java泛型学习和实践(2)

引言上节中简单介绍了泛型基本使用方法及使用泛型带来的安全性和可读性好处,接下来继续思考第二版代码的不足之处。回顾第二版Driver类的drive方法,其接收T泛型参数,为了调用具体car的run方法,需要向下转型,进行了多次instanceof判断,代码冗余且扩展性不好,不符合代码设计的"开闭原则"。有没有更好的方式?根据“依赖反转”原则,即代码应当依赖于抽象,而不是具体。由于T类型可以是

2014-12-26 13:39:22 1387

原创 java泛型学习和实践(1)

JDK1.5之后引入了泛型,泛型刚开始接触时比较难理解,经过慢慢学习,有一些收获,现总结下,既可以加深自身理解,也可以帮助他人。在开源项目源代码中,会经常出现泛型。学习和使用泛型,是java程序员的必修课。准备分多个章节,来总结下学习泛型的相关知识和使用。欢迎大家指正

2014-12-25 16:32:08 2051 4

原创 java里Date对象格式化为Sun Feb 01 2015格式

上面格式化有两种方式:一是用DateFormat格式化: Calendar calendar = Calendar.getInstance(); calendar.set(2015, 1, 1); Date date = calendar.getTime(); DateFormat df = new SimpleDateForm

2014-12-17 11:53:22 1592

原创 eclipse 3.5导入和导出个性格式化配置文件

点Window->Preferences,按下图选择点击Edit,然后弹出框右上角选择下面进行导出选择第一图中的Import...按钮进行导入另附上本人的格式化配置文件

2014-12-09 09:37:17 3011

原创 关于eclipse 3.5.0安装Git插件出错解决方法

使用Help --> Install New Software... 进行在线安装插件 eclipse 3.5.0的可以使用1.3版本的git:输入  http://download.eclipse.org/egit/updates-1.3/注,不支持2.0及以上版本(网上有误导),操作图示如下:EGit Mylyn 和 EG

2014-12-08 09:22:21 2515

原创 java的native2ascii工具用法

一般在jdk下自带编码转换工具native2ascii,对本地编码和unicode编码进行相互转换用法如下:native2ascii [options] inputfile [outputfile] options-reverse   :   指定逆向转换,即将unicode编码转换成本地编码 (形如:\u4f60\u597d -->你好)-encoding e

2014-12-02 16:46:06 948

原创 java字符串编码认识误区说明

关于java字符串编码认识上存在两大误区,一、严格来说java字符串是utf-16编码而非unicode编码。unicode是字符集,是字符编码方案,而不是具体的编码实现; 二、java中一个汉字有可能占用两个char,比如非O号平面的字符需要两个char表示

2014-11-10 11:24:03 1249

原创 java对byte,short,char,int,long运算时自动类型转化情况说明

大家都知道,在进行运算时,java会隐式的自动进行类型转化,那么有哪些情况会进行转化呢?总结如下:一、算术运算符单目运算符:+(取正)-(取负) ++(自增1) --(自减1)1.1 +(取正)-(取负)当操作数是byte,short,char时,会自动转化为int类型;返回结果为int。当操作数是int,long时,不转化,原来是啥类型,还是啥类型。1.2 ++(自增1)

2014-11-06 16:39:20 8618 3

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