自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Benson的专栏

Learning, staying up to date, and working on the latest and greatest in languages and APIs is what k

  • 博客(34)
  • 资源 (25)
  • 收藏
  • 关注

原创 25、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1运算结果

最近没事看了下Java的一些经典面试题,前面的都还挺简单,一路看下去毫无阻力,但是看到第25题就被难住了,第25题是这样的:25、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 +

2013-01-30 20:45:16 4838

原创 获取当前运行Java的进程标识符(PID)

在CUI中敲入JPS命令即可。比如:C:\Users>jps7152 Jps4440C:\Users>

2013-01-28 21:43:25 1956

原创 ++count具不具有原子性

++count不具有原子性。它其实代表三个操作,即 取得当前值,当前值加1,把新值写回。因此,该语句不是线程安全的。

2013-01-23 22:27:56 1231

原创 软件设计三大原则

1. 面向接口编程,而不是面向实现编程2. 组合优先于继承3. 将经常变化的部分从不变的部分中分离出来1. Identify the aspects of your application that vary and separate them from what stays the same2. favor composition over inheritance

2013-01-22 15:07:18 2898 1

原创 一个简单的生产者/消费者例子

import java.util.ArrayList;import java.util.List;class Plate { private List apples = new ArrayList(); public synchronized void putApple(Object apple) { if(apples.size() > 0) { try { wa

2013-01-22 12:39:20 2089

原创 Java 同步方法(块)步骤

一个线程执行临界区代码过程如下:1 获得同步锁2 清空工作内存3 从主存拷贝变量副本到工作内存4 对这些变量计算5 将变量从工作内存写回到主存6 释放锁可见,synchronized既保证了多线程的并发有序性,又保证了多线程的内存可见性。

2013-01-22 12:23:02 995

原创 java设计模式之模板方法模式

模板方法就是一个方法(通常为final,不允许子类进行覆盖),该方法包含了一个算法的各个步骤(每个步骤相当于一个方法),在模版方法内调用的方法中有抽象的(待子类覆盖),也有实例的。另外在模版方法所属类中可以包含一个钩子方法(hook),该方法可以控制模版方法中的逻辑,该方法提供默认的实现。子类不是必须实现它。下面给出一个具体的例子。Beverage.java:package o

2013-01-21 22:28:11 2453 2

原创 受检异常和非受检异常

RuntimeException和它的子类以及Error和它的子类都是非受检异常。    因此,对于一个方法抛出RuntimeException和它的子类或者Error和它的子类。调用它无需进行异常处理,编译器能通过。    除此之外的其它异常类都需要进行异常处理,即添加try-catch(-finally)语句块进行捕捉和处理。

2013-01-20 20:09:58 4976 1

原创 抵御反射机制调用单例类私有构造器

Java 单例模式一般有两种实现:    1.暴露静态final字段Java代码 public class Elvis {        public static final Elvis INSTANCE = new Elvis();            private Elvis(){;;;}            public v

2013-01-17 19:24:36 3415 1

原创 遇到多个构造器参数考虑用构建器(Builder)

如果一个对象带有多个参数,程序员一般采用重叠构造器模式。但是该方法的缺点是,如果参数很长,客户端代码不仅很难编写,同时可读性也很差。第二种替代方案:Java Beans。类中提供一个无参构造方法和对属性的mutator方法。该方法的缺点是容易线程安全问题。第三种方案就是Builder模式。该方案既保证了重叠构造器模式的安全性,又保证像JavaBeans模式那样好的可读性。考虑一个例子,

2013-01-16 14:27:13 1642 1

原创 Java 返回零长度数组或集合,而不是返回null

下面的方法并不少见:private final list cheesesInStock = ...;public Cheese[] getCheeses() {if (cheesesInStock.size() == 0)return null;...}这样在客户端调用中必须对处理null的情形。Cheese[] cheeses = shop

2013-01-14 19:08:50 10719 4

原创 Java的数组

我们知道,在Java中,数组也是一种对象,所以,数组应该也存储在堆区中。既然数组是一种对象,那么它也应该有相应的方法和属性,通过IDE的帮助,我们可以得到以下方法:根据猜测,数组应该直接继承Object类,并且复写了clone方法(测试过,应该是浅复制)。但是没有复写finalize方法(所以一共也就只有10种方法)属性只有一个,即length,表明该数组的元素大小。

2013-01-13 14:29:37 900

原创 Java && 和 &,以及 || 和 | 的区别(&和|也能进行逻辑运算)

注意,| 和 & 不只能进行位运算,还能进行逻辑运算哦!!!(^也能进行逻辑运算,只不过没有^^这种运算符)/** * Test & && 区别 (包括 | ||) */public class Test { public static void main(String args[]) { /* 逻辑运算符 */ boolean a = true & false;

2013-01-13 01:40:21 1712

原创 覆盖方法遵循原则

子类中覆盖父类的对应方法必须遵循下面的规则:参数不可变(译者注:包括参数类型和个数)。返回类型不可变,除了协变返回类型或其子类型(covariant (subtype) returns)。异常子类中可以抛出更少的异常,但绝对不能抛出父类中没有定义的已检查异常。访问权限比父类中对应方法更宽松。

2013-01-12 23:48:52 1422

原创 Java之不变String

public static void main(String[ ] args) { String s = new String("aaa"); }该语句创建了几个String对象?我想这是一个经常出现在面试题中的问题。我们先不回答它,比较比较它们的引用先。 public static void main(String[ ] args) { St

2013-01-12 19:03:12 1160

原创 Java 原始类型大小

1字节=8位boolean 1字节byte      1字节char      2字节short      2字节int       4字节float       4字节        double    8字节long        8字节

2013-01-11 23:53:29 1155

原创 abstract interface & interface

我们知道接口的修饰符只能为public和abstract(内部接口除外)public可以理解,但是abstract有点疑惑,于是Google了一下,得出该句:Every interface is implicitly abstract.This modifier is obsolete and should not be used in new programs.每个接口隐含着抽象。

2013-01-11 22:53:08 1048

原创 Java main方法思考

我们知道,main方法的签名是:public static void main(String args[]);如果我们不这样定义,那么JVM是找不到程序的入口的。但是我们能做些什么修改,而让JVM能够找到它呢?经过一番努力,我也只找到两处。第一:参数名可以随意,只要是String数组即可。public static void main(String a[]);

2013-01-11 22:33:57 718

原创 java内部类之见解

很悲伤,在ITEye发表的一篇文章被喷的狗血淋头,也许出没于ITEye里的都是一些牛逼人物,在他们看来,也许我写的文章简直狗屁不如,但是有谁能保证刚开始踏入IT的自己马上能够写下出一些非常惊世骇俗的文章呢?没错,我的技术确实很烂,烂到家了。但是有一点我想要强调,那就是我喜欢Java,真的很喜欢。我不相信一夜之间就能称为Java高手,我只希望能够一步一个脚印,慢慢成长,我相信用不了多久,只要我能坚持

2013-01-11 21:50:39 1133

原创 Java中的 分号 ;

在java语言规范中,分号代表一个语句的结束。所以,即使分号前面没有任何内容,那么一个分号其实也代表一个语句(空语句)。因此,分号可以出现在许多地方:比如:package test;;;;;;;;;;;;public class Book {;;;; private int a = 1;;;;;; public static void main(String[]

2013-01-11 20:38:19 9869

原创 探索 Java 关键字 final

1.final修饰class。代表限制继承,即该类为最终类,不可以被继承,位于继承结构的最底端,相当于叶。其所有方法默认为final。2.final修饰方法,代表该方法不可以被覆盖(Override)。3.final修饰变量。代表该变量只能被赋值一次。如果final 和 static 同时修饰变量,那么该变量必须在定义的同时进行赋值。如果final不和static 组合,那么在定义

2013-01-11 13:01:35 1430

原创 Java如何复制对象

假如说你想复制一个简单变量。很简单: int apples = 5; int pears = apples;不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。但是如果你复制的是一个对象,情况就有些复杂了。假设说我是一个beginner,我会这样写:c

2013-01-10 21:29:38 75868 16

原创 Java中的短路效应

对于逻辑运算符&& 和 ||,学过discrete Math的同学都知道,一个是与,一个是或。在Java中它们存在短路效应。对于a && b,只有当a和b同时为true时,整个表达式才为true,在java中,首先运算表达式a,如果a为true,则继续运算表达式b,如果表达式a为false,那么整个表达式也肯定为false,所以表达式b不会被运算。对于a || b,至少有一个为tr

2013-01-10 18:19:29 5082

原创 Java static 关键字

1.变量:变量可分为实例变量和静态变量:区别:1. 静态变量是属于类的,实例变量是属于对象的。2. 类和对象均可修改静态变量;只有对象可以修改实例变量。3. 每个实例变量都会给出相应的存储空间。静态变量存储空间只有一份。2.方法方法可分为实例方法和静态方法:区别:1. 实例方法可以访问静态变量,静态方法不能访问实例变量。2. 实例方法可以访问静态方法,静

2013-01-10 16:50:23 1282

原创 实例测试Mysql使用索引带来的效率提升

创建数据库:CREATE DATABASE `sql_learn_db`;创建一个表:Create Table: CREATE TABLE `persons` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `LastName` varchar(255) DEFAULT NULL, `FirstName` varchar(255) D

2013-01-09 19:25:55 1610

原创 Java的switch-case语句

java的switch-case语句格式如下: switch(参数) { case 常量表达式1: break; case 常量表达式2: break; ... default: break; }注意的地方:switch接受的参数类型有10种,分别是基本类型的byte,short,int,char,以及引用类型的String(只有JavaSE 7

2013-01-09 15:26:08 56084 1

原创 Java SOPs 重定向

System.out.println();上面这条用臭了的语句,负责将指定的信息打印到标准输出(屏幕)。一般我们都能在控制台上看到打印信息。如果我们想将一些信息持久化,比如存储在文件中,怎么办呢?(每次重新运行程序,控制台的信息就不见了)一种解决办法就是重定向输出。public static void setOut(PrintStream out);System类的se

2013-01-08 15:49:36 1107

原创 Android和iPhone截屏快捷键

截屏快捷键(Power + Home)其实在手机上截屏非常容易。只要同时按住关机键(Power)和主页键(Home)一会儿,系统就会将当前屏幕作为图片存储在手机相册里。已经在HTC Explorer和iPhone 4S测试过。这个快捷键适用于最新版本的Android和所有iOS设备。

2013-01-08 15:08:07 1956

原创 Java 调用 C程序 之HelloWorld

在开始之前,请先下载一个C编译器(tcc)并将其添加到系统路径中。下载地址: http://mirror.veriportal.com/savannah//tinycc/tcc-0.9.25-win32-bin.zip      1. 编写Java源程序并编译:  Java代码  public class Ja

2013-01-07 23:09:19 1205

原创 Java 版本 特征 和 历史

Java 版本 特征 和 历史Java Version SE 7Code named Dolphin and released on July 28, 2011.New features in Java SE 7Strings in switch StatementType Inference for Generic Instance CreationMulti

2013-01-07 19:26:01 908

原创 Java 遍历 Map 对象

如何在Java中遍历Map对象?如果阅读过API开发文档,应该可以找到这三个关键方法。Set keySet(); /* 返回Key的集合 */Collection values); /* 返回value的集合 */Set> entrySet(); /* 返回键值对的集合 */Entry是Map接口的内部接口,一个Entry对象代表了一个键值对。

2013-01-07 13:41:59 1209

原创 Java发展里程碑

从1996年初Java发行的第一个版本Java 1.0 到 今年(2013)将要发行的最新版本Java 1.8,Java一共走了将近17个年头。我认为稍微了解下Java的里程碑是有好处的。以下是摘自>的截图:从图上可以看出(没有标出1.7版本的),5.0版本增加了许多特性。另外类与接口的数量的变化非常明显。内部类是在Java 1.1版本出现。断言是在1.4版本出现。

2013-01-06 23:07:53 1655

原创 Java 之 assert (断言)

我们知道C/C++语言中有断言的功能(assert)。在Java SE 1.4版本以后也增加了断言的特性。断言是为了方便调试程序,并不是发布程序的组成部分。理解这一点是很关键的。默认情况下,JVM是关闭断言的。因此如果想使用断言调试程序,需要手动打开断言功能。在命令行模式下运行Java程序时可增加参数-enableassertions或者-ea打开断言。可通过-disableasserti

2013-01-05 14:02:26 21038 3

原创 Install tomcat in Ubuntu

I'm sorry I have to blog in English,for I haven't install Chinese input method in Ubuntu.      Using Linux is a little different from Windows. For one thing, you cannot copy or move files and direct

2013-01-02 23:01:54 2305

iOS汉字首字母获取

将20901个汉字的首字母存储于一个数组中,然后根据给定的每个汉字的ASCII获取到数组中对应的首字母(小写),如果给定的ASCII值超出给定的范围返回"#"。 使用方法: #import "pinyin.h" NSString *hanyu = @"测试"; for (int i = 0; i < [hanyu length]; i++) { printf("%c", pinyinFirstLetter([hanyu characterAtIndex:i])); } // "cs"

2015-06-29

Retrofit实现天气预报信息捕获

利用Retrofit框架对WebService数据进行提取,可用在安卓开发上提高开发效率。【基于Maven项目】

2014-06-17

Swift documentation

Objective-C作为苹果开发的唯一官方语言,已经存在了将近20年了。继WWDC2014后,一款高效,现代,安全和可交互的新语言Swift由于其简单的语法和代码可视化等特征有望替代OC。

2014-06-05

半字节压缩/解压算法[Java]

使用Java语言开发的基于GPS经纬度压缩和解压的半字节压缩算法。

2014-05-22

转个不停的齿轮

这是一个简单的示例,演示了如何在一个Activity中添加一个一直转个不停的齿轮。主要是使用Android的Animation。

2013-11-28

全国省市区的plist文件。

这是一个包含全国省市区的plist文件。

2013-08-01

android滚动控件省市区

这是一个仿iPhone滚动控件的应用,滚动控件的内容为全国的省份,市和地区。

2013-07-20

找朋友应用

这是一个找朋友android应用。主要是地图和即时通信。

2013-07-16

ViewPagerDemo

ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样。

2013-05-09

图片拼接软件

这是一个简单的图片拼接软件,参照佳能相机的拼接方法。可以对拼接照片进行过滤,可以对照片进行缩放,以及将照片分享到人人。

2013-04-10

地图气泡框应用

这是一个地图上显示气泡框的应用,主要是对overlay的继承和气泡框的布局样式。

2013-04-03

基于SSH晒晒图网站

这是一个基于SSH的网站,实现了好友注册,好友添加,好友分组,图片上传,图片分享以及图片留言功能。网站部署的注意事项都在资源中,可自行部署到本地服务器中( Tomcat 即可 )

2013-01-18

绘制个人历史位置路线

这是一个地图小应用。主要用来在高德地图上绘制个人历史位置信息。

2012-12-08

ItemizedOverlay

这是一个基于高德地图的测试,介绍了ItemizedOverlay的用法和populate()的作用。

2012-11-03

android_service_电话录音

该程序是利用Service在后台工作的特性,负责记录电话的通话,并将通话记录以文件的形式存储在手机SD卡中。这是一个学习service组件的不错的例子。

2012-10-29

android_API源代码

这是一个android API 包的源代码。这样可以在eclipse中查看android类的源代码。

2012-10-19

ajax模拟百度自动下拉提示框

这是一个模仿百度自动下拉提示框的Web程序。 主要技术是JSP+Servlet+Mysql+Ajax+JavaScript。

2012-10-11

基于AJAX的简易聊天室

这是一个基于ajax的简易聊天室网站。 采用JSP+Servlet,后台数据库采用MySQL

2012-10-11

JAVA策略模式实现

这是一个基于JAVA的策略设计模式。松耦合,可扩展

2012-10-09

android天气预报

基于android的,数据采集端源于google的实时兼预报天气预报软件。

2012-07-02

AsyncTask应用下载MP3

利用android.os.AsyncTask类完成MP3下载,采用进度条动态显示下载的百分比。是学习AsyncTask不错的例子。

2012-07-02

Android_GPS定位

这是一个简单的Android定位测试,基于GPS的需在户外条件下使用的代码工程。

2012-07-02

基于Servlet+JSP的网上书店

这是一个基于Servlet+JSP的网上书店。后台数据库采用MYSQL。

2012-07-02

空空如也

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

TA关注的人

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