Java Core
钛合金编程
静以修身,俭以养德!The greatest thing is, at any moment, to be willing to give up who we are in order to become all that we can be.
展开
-
Thrift 文件的格式及可用的数据类型
编写thrift文件是,需要知道thrift文件支持的数据类型有哪些,如果定义Service等。下面是官方文档的说明:## Thrift Tutorial# Mark Slee (mcslee@facebook.com)## This file aims to teach you how to use Thrift, in a .thrift file. Neato. The# fi原创 2014-11-11 11:05:18 · 10549 阅读 · 0 评论 -
Open JDK 7 新特性(即JDK 1.8 新特性)
SummaryFeatures are listed in order, more or less, from lowest to highest in the overall JDK software stack.vmJSR 292: Support for dynamically-typed languages (InvokeDynamic)翻译 2014-09-24 16:22:58 · 1883 阅读 · 0 评论 -
从JDK 1.7开始,java程序员不能够调用JDK系统包中以sun开头引入的类
从JDK 1.7开始,Oracle未将以sun开头的类包加载到JVM启动加载的类包中。所以,像 JPEGImageEncoder这样的类不能够默认使用。如果非要使用sun开头包中的类,只能够直接将源码复制到自己的项目中或者将rt.jar 放到项目的类路径下。下面是Oracle官方声明,连接http://www.oracle.com/technetwork/java/faq-sun-packages原创 2014-07-23 11:27:18 · 4476 阅读 · 0 评论 -
JVM常用的调优参数
-Xms512m-Xmx1024m-XX:MaxPermSize=1204m-XX:+UseConcMarkSweepGC-XX:+CMSClassUnloadingEnabled-XX:+CMSPermGenSweepingEnabled shset JAVA_OPTS="-Xms256m -Xmx512m -XX:+CMSClassUnloadingEnabled -X原创 2014-06-29 16:50:45 · 1205 阅读 · 0 评论 -
解决log4j.xml问题http//jakarta.apache.org/log4j/ uri is not registered
在Eclipse中,配置log4j.xml出现“http //jakarta.apache.org/log4j/ uri is not registered”的错误信息。原始的log4j.xml配置文件: 解决方法,具体修改如下所示。原创 2014-05-26 17:37:14 · 19867 阅读 · 3 评论 -
CentOS 安装jdk1.8.0_05
CentOS上安装JDK 8, 具体步骤如下:1 下载JDK 8 到Oracle官网上下载最新的JDK 8 版本,地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 选择rpm文件的JDK,以便于最简洁安装。2 安装原创 2014-05-27 11:21:25 · 2787 阅读 · 0 评论 -
那些年,我读过的技术书(Java下篇)
4 Java JVM Java虚拟机的工作原理,那些参数涉及到性能优化的,这样都有必要知道。下面几本书,有必要读一下。The Java™ Virtual Machine Specification (2nd Edition)Inside the Java 2 Virtual Machine深入理解java虚拟机原创 2014-03-05 23:41:58 · 1572 阅读 · 0 评论 -
错误Access Restriction: The Type BASE64Encoder 的解决
在Eclipse中,出现“Access Restriction: The Type BASE64Encoder Is Not Accessible Due To Restriction”错误。 解决方法: 点击Window-->Preferences-->Java-->Compiler-->Errors/Warns,设置Deprecated And Restri原创 2014-05-14 09:12:54 · 1999 阅读 · 0 评论 -
Java并发编程之线程管理(基本线程同步3)
(上一节的继续)2.2 使用Lock机制 Java提供了另外一种机制来同步代码块。它是比synchrozied关键字更为强大且弹性的机制。它是基于锁接口和实现了这个接口的类(如ReetrantLock类)。这个机制表现出一些优势,如下所示:1. 以一种更加弹性的方式允许同步块结构,而使用synchrozied关键字,你必须以一个机构化的方式来获原创 2014-03-26 22:16:46 · 1190 阅读 · 0 评论 -
Java并发编程之线程管理(线程创建1)
1线程管理 在这一节中,我们将学习如何创建和运行一个线程。在Java语言中,我们有两种方式创建一个线程:1. 扩展Thread类,覆盖run()方法2. 构建一个实现Runnable接口的类,定义自己run()方法,然后,实用则个类的实例对象作为Thread构造方法的参数来创建Thread对象。创建一个线程对象,它不会创建一个新的执行线程。也就是说,调原创 2014-03-23 23:00:54 · 1094 阅读 · 0 评论 -
Java并发编程之线程管理(基本线程同步4)
1.3 读写LockLock机制最具重大意义的改进之一就是读写锁(ReadWriteLock)接口和ReentrantReadWriteLock类,这个类是唯一一个实现这个读写锁的类。在这个类中,有两个锁,一个事读操作,一个事写操作。有超过一个线程并行的进行读操作,但是写操作只能是某一个线程。当一个线程做写操作时,其它的线程不能能够进行读操作。下面使用一个实例来说明这一点。定义一个读者原创 2014-03-26 23:11:00 · 1382 阅读 · 0 评论 -
Java并发编程之线程管理(基本线程同步2)
2 基本线程同步2.1使用 synchronized关键字这一节中,我们将呈现许多秘诀,这个秘诀教会我们如何使用Java语言提供我们的两个基本同步(synchronization)机制:Ø 关键字同步;Ø 锁接口和它的实现。如果你知道一个方法不会被超过一个线程调用,不用使用synchronized 关键字。你能够使用synchronized方法来递归调用,仅仅一原创 2014-03-26 22:02:00 · 1214 阅读 · 0 评论 -
Quartz Cron 表达式
Quartz Cron 表达式 一个cron 表达式是由6或者7个以空格分隔的字段组成。字段能够包含任何允许值,伴随着特殊字符不同组合。这些字段如下所示:字段名称是否一定需要允许的值允许的特殊字符串SecondsYES0-59, - * /Minute原创 2014-03-23 08:51:36 · 1185 阅读 · 0 评论 -
23种设计模式用英语如何表达?
本人最近收集了一下23钟设计模式的英文解释,分享如下。--- Abstract Factory Provides one level of interface higher than the factory pattern. It is used to return one of several factories.--- Builder Construct a comple原创 2014-10-28 22:19:12 · 4730 阅读 · 0 评论 -
Curator框架
Curator简介Curator是一个博物馆或者其它集合的监管者或者管理者,Curator有以下几个组件组成: Recipes: 实现了通用ZooKeeper的recipes, 该组件是在Framework组件为基础构建起来。 Framework: 简化了用来ZooKeeper的高级API, 并增加了一些管理到ZooKeeper集群的连接和重试操作服务的新功能。 Client: 是原创 2016-02-12 23:16:48 · 1663 阅读 · 0 评论 -
ZooKeeper API操作
ZooKeeper集群中,客户端可以对ZooKeeper的命名空间写入数据,对数据进行各种操作。ZooKeeper API 接口如下表所示:操作接口名称 描述 create 创建指定的ZooKeeper命名空间(PATH)数据。 delete 创建指定的ZooKeeper命名空间(PATH)数据。 exists 检测节点是否存在 getChildren 获取节点孩子列表 g原创 2016-02-05 23:43:29 · 1199 阅读 · 0 评论 -
解决has leaked ServiceConnection com.baidu.location.c@427b6780
解决“has leaked ServiceConnection com.baidu.location.c@427b6780 that was originally bound here”的错误,需要修改AndroidManifest.xml文件。配置Map定位权限和远程链接机制。不然,就会报下面的错误:has leaked ServiceConnection com.baidu.locat原创 2015-04-21 18:45:15 · 10996 阅读 · 3 评论 -
查看apk的sha1值以及apk信息
1 查看apk的sha1值 有时,希望查看到对应签名了的apk文件的sha1值。使用下面脚本,脚本文件为showInfo.sh :#!/bin/bash get_signature() { path=`jar tf "$1" | grep RSA` jar xf $1 $path keytool -printcert -file $path原创 2015-04-20 13:44:35 · 5424 阅读 · 0 评论 -
IntelliJ IDEA开发快捷键(IDEA tool Keyboard shutcuts)
IDEA tool Keyboard shutcuts:ActionMac OSXWin/Linux注释代码(//)Cmd + /Ctrl + /注释代码(/**/)Cmd + Option + /Ctrl + Shift + /格式化原创 2015-04-01 15:53:53 · 6853 阅读 · 1 评论 -
javax.servlet.ServletException: Error initializing XFireServlet.
javax.servlet.ServletException: Error initializing XFireServlet. org.codehaus.xfire.transport.http.XFireServlet.init(XFireServlet.java:52) javax.servlet.GenericServlet.init(GenericServlet.java:212)原创 2015-03-02 16:47:10 · 4260 阅读 · 0 评论 -
Java语言中 将double类型不以科学计数法输出
Double double1 = 1234567899.899; DecimalFormat decimalFormat = new DecimalFormat("#,##0.00");//格式化设置 System.out.println("--------" + decimalFormat.format(double1)); System.out.println(double1);原创 2014-11-05 10:08:14 · 4875 阅读 · 0 评论 -
RabbitMQ基本管理(下)
为了能够登陆RabbitMQ,必须创建RabbitMQ用户账号。# rabbitmqctl add_user elite elite123Creating user "elite" ......done.# sudo rabbitmqctl set_user_tags elite administratorSetting tags for user "elite" to [a原创 2014-10-29 09:10:43 · 1562 阅读 · 0 评论 -
CentOS6.5上安装Rabbit Server
按照“?>”命令执行命令即可,“#”都是注解。#-----------centOS6.5 installs rabbitmq-server ---------------------#Installation using repository#1. Adding repository entry#To add Erlang Solutions repository (incl原创 2014-10-28 22:33:18 · 1668 阅读 · 0 评论 -
RabbitMQ服务器配置文件
RabbitMQ的服务器配置设置,我做了修改,修改如下: {tcp_listeners, [5672]}, {loopback_users, ["elite"]} 其它的设置可以根据业务需要设置,完整版如下。%% -*- mode: erlang -*-%% ----------------------------------------------原创 2014-10-28 22:24:45 · 4933 阅读 · 0 评论 -
RabbitMQ基本管理(上)
1.1.2 显示RabbitMQ进程 查看RabbitMQ进程信息,输入下面命令:?>pgrep -fl rabbitmq31151/bin/sh /etc/init.d/rabbitmq-server restart31153 /bin/bash -c ulimit -S -c 0>/dev/null 2>&1 ; /usr/sbin/rabbitmq-server31原创 2014-10-28 22:49:29 · 1867 阅读 · 0 评论 -
Red Hat Enterprise Linux AS release 4 下SSH无法使用无密码登陆的原因分析
Linux间ssh不能够使用无密码登陆原因: 1. 认证文件的权限。一般都是这样的权限: 2. OS系统设置。root登录修改配置文件:/etc/ssh/sshd_config,将其中三行的注释去掉。 本人整理,估计就这么多啦。如果有疑问,欢迎提问。原创 2014-04-02 14:26:15 · 1353 阅读 · 0 评论 -
Java并发编程之线程管理(Executor框架13)
4.3运用执行器返回结果Executor框架的优势之一就是你能够运行并发的任务并且获得对应的结果。Java 并发API完成这个功能是通过下面两个接口:l Callable: 这个接口有call()方法。在这个方法中,你不得不实现一个任务的逻辑代码。Callable接口是一个参数化的接口,意味着你不得不说明call()方法返回的数据类型。l Future:这个接口有一些方法去获取由C原创 2014-03-30 23:22:35 · 1182 阅读 · 0 评论 -
代理模式(Proxy Pattern)
使用简单的对象来代替一个复杂的对象或者为另一个对象提供一个占位符来控制对它的访问。经典UML类如下: 使用场合和优势: 实时或是在内存中创建一个对象代价太高的情况下。 延迟创建直到你需要实际的对象。 加载大的图像。 在网络的高峰时间段加载远程对象。 对于一个复杂的系统,必须使用访问权限时,需要使用代理模式。 从JDK 1.3 开始,java 就对实现代理设原创 2013-05-16 09:42:25 · 1551 阅读 · 0 评论 -
享元模式(Flyweight Pattern)
高效飞快地生成类的实例以提高性能称为享元模式。它是结构设计模式之一,常常被使用在独特的字符或是屏幕上的图标等。 使用场合和优势: 需要实例化大量小型且可以很好颗粒化的类。 需要图标来展示对象。 一个对象外部的状态能够通过类来共享。 享元模式减少了对象的创建,降低了内存的花费和提升了性能。 相关的模式: 组合模式支持迭代的结构而一个享元仅仅被应用到一个对原创 2013-05-15 23:37:09 · 1562 阅读 · 1 评论 -
适配器模式(Adapter Pattern)
转换一个存在的接口到一个新的接口,以完成不相关的类的兼容性和重用性,这种模式叫做适配器模式。这个模式也被称为封装(wrapper)模式,适配器模式是属于结构设计模式之一。 适用场合和优势: 尝试去匹配一个接口(WindowAdapter等) 使不相关的类工作在一起 多兼容性融合 提高类的透明性 制作课插入的套件(pluggable kit) 委托对象 更高级类的重用原创 2013-05-15 10:55:17 · 1522 阅读 · 0 评论 -
构造模式(Builder Pattern)
从简单的对象一步一步构造一个复杂的对象,这就叫做构建模式。它是属于创建设计模式之一,也挺常用的。 适用场合和好处: 仅仅通过指定它的类型和内容来生成一个复杂的对象,而这个构造的对象隐藏在它的构建细节。 想分离构建一个复杂对象的过程。 为析构和呈现而隔离代码 给予你更好的控制析构(construction)过程。 对于组合(Composite), 它经常用原创 2013-05-13 23:45:28 · 2306 阅读 · 0 评论 -
jps 进程状态工具
jps命令在JDK1.5中被引进,方便显示javaJVM的进程信息。我过去常常使用 ps -ef | grep java 查询java程序的pid信息,或者仅仅看是否我的appserver是否在运行。现在,使用jps显示pid信息,方便了pid信息的显示。下面介绍使用情况: 1. 列出pid和java主类名jps2017 Bootstrap2576 Jps原创 2014-02-08 10:16:07 · 2804 阅读 · 0 评论 -
transient关键字在Java中的使用
熟悉Java关键字transient,必须认真地理解下列几点: 1. transient关键字只修饰对象的成员变量,不能修饰本地变量或者方法。 2. transient修饰的变量不能被序列化。(注意,static修饰的静态变量,不管是否有transient修饰都不能序列化) 3. 类中的成员变量被transient修饰不能作为实例对象序列化数据的一部分,不能够被原创 2013-10-08 09:43:04 · 1152 阅读 · 0 评论 -
Java内存优化和性能优化的几点建议
doc 阅读下载1.没有必要时请不用使用静态变量 使用Java的开发者都知道,当某个对象被定义为stataic变量所引用,这个对象所占有的内存将不会被回收。有时,开发者会将经常调用的对象或者变量定义为static,以便提高程序的运行性能。因此,不是常用到的对象或者变量,不要定义为static类型的变量,尤其是静态类对象的定义,一定要仔细考虑是否有必要。例如public c原创 2013-07-01 16:07:30 · 6106 阅读 · 0 评论 -
深度比较Java循环的性能
Java语言中,常用的循环语句有4种。这些循环是编写Java代码必然会涉及到的控制流语句,片段代码如下。 1. For each 语句 这个循环式在Java5中引进的,优点是很简洁。 private List list = new ArrayList<>();for(Integer i : list){ // 业务逻辑} 2. 使用l原创 2013-06-08 23:50:10 · 2404 阅读 · 2 评论 -
深入理解Java String 池概念(String pool concept)
String 池(pool) 是一个特殊的内存区域,它有别于传统能够存储字符串常量的栈(heap)区。在应用程序的生命周期内,这些对象应用string变量。在Java中,String能够使用多种方式被创建。 1. String赋值 String str = "abc"; 以上片段代码,JVM回去核实是否已经存在"abc"(与字符序列相同)。原创 2013-06-08 22:12:25 · 3380 阅读 · 0 评论 -
深入解析ThreadLocal
1. ThreadLocal介绍 在Java中,ThreadLocal是摆脱不易变类实现线程安全的另一种方式。如果你用Java写过多线程或是并发的代码,你必定熟悉synchronization 或是Locking极大影响系统的可扩展性的高昂代价,然而你除了使用synchronization为多线程中分享对象别无选择。ThreadLocal为Java提供了另一种方式完成线程安全,它没有解决原创 2013-04-26 22:39:42 · 1857 阅读 · 0 评论 -
安装Jar包到本地仓库(local repository)
将本地jar包安装到本地jar仓库中,一条简单的命令就可以实现。 命令格式: mvn install:install-file -Dfile={jar路径} -DgroupId={groupId 值} -DartifactId={artifactId值} -Dversion={版本号} -Dpackaging=jar -DlocalRepositoryPath={m2home原创 2013-04-22 21:45:56 · 3205 阅读 · 0 评论 -
解析ThreadPoolExecutor
ThreadPoolExecutor能够用于创建一个线程池,它提供了一些有用的方法: 实例化一个线程池,实践中用的比较多是以下构造方法: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,原创 2013-04-28 11:44:08 · 1862 阅读 · 0 评论 -
最佳String判断是否为空
在查看别人写的代码时,会发现有人会这样来写一个判断字符串是否为空的语句。public boolean isEmpty(String str){ return str.equals(""); //感觉如何?} 你有何感想?我的感想有一点,不太理解String这个类的实现。那么,最佳的使用方法是什么呢?我想,应该这样最好。public boolea原创 2013-06-10 18:57:40 · 1958 阅读 · 0 评论