- 博客(40)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 一个java老菜鸟的而立之感(一)
算算这个月已经30周岁了,突然间发现,连qq年龄都不能安慰自己是20多岁的年纪,到了这时候,突然很想写点东西来汇汇工作这些年。翻了翻前些年的博客,从参加工作的那一年,或多或少,也算是断断续续的写了2年,细细翻看来大部分的文章也是流水账没什么营养。但好歹还能看出些激情和上进的心气。后面就很久很久没有写过博客了,虽然每次开始都是拍着胸脯的给自己定下目标,最后总是不了了之,坚持不了多久。算来已经
2015-08-04 23:29:09
354
原创 java synchronized详解(转自Gang.Wang)
记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的...
2013-03-07 13:48:53
141
原创 OSGI笔记----1.基础概念
1 Bundle 是OSGI中的模块,其生命周期是被OSGI框架所管理。形式上讲是一个jar包。META-INF目录下的 MANIFEST.MF文件中是对Bundle的特定描述。Budle 的状态:INSTALLED、RESOLVED、UNINSTALLED、STARTING、ACTIVE、STOPPING。Bundle 是服务(Service) 和 组件 (componen...
2012-08-27 22:18:50
135
原创 我的 effective java -- 7.避免使用中介方法 finalizer
7.避免使用终结方法 finalizer终结方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要的。使用终结方法会导致行为不稳定,降低性能,以及可移植性问题。 正确终结方法:提供显性终止方法,try-finally 终结方法的两种合法用途:1 当对象的所有者调用前面段落的显示终止方法时,终结方法可以充当“安全网”。如果终结方法发现资源...
2012-07-23 20:44:00
110
原创 我的 effective java -- 6.消除过期的对象引用
6.消除过期的对象引用 例子:public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack(){ elements = ne...
2012-07-23 19:51:29
117
我的 effective java -- 5.避免创建不必要的对象.
5 避免创建不必要的对象 一般来说,最好能重用对象而不是在每次需要的时候就创建一个相同功能的新对象。重用的方式即快速,又流程。如果对象是不可变的,他就始终可以被重用。 对于只需要实例化一次的对象,可以使用静态初始化器。static{}优先使用基本类型而不是装箱基本类型(基本类型:long; 装箱基本类型:Long) public static vo...
2012-07-19 20:37:42
107
原创 我的 effective java -- 4.通过私有构造器强化不可实例化的能力
4.通过私有化构造器强化不可实例化的能力 当编写的工具类只包换静态方法和静态域,并且不希望被实例化,因为实例对它没有任何意义。可以通过构造私有化构造器来避免类被实例化。 注:1 企图将类做成抽象类来强制该类不可被实例化,这是行不通的。该类可以被子类化,并且该子类也可以被实例化。2 必须使用私有构造器,不能使用显性构造器或者不包含构造器。(当类不包含显性构造器时...
2012-07-19 19:58:38
99
原创 (转)思考、学习新技术的原则和方式
先看下面这样的困惑:最近了解了几个MVC的框架,其中有两个是公司内部的。发现这些东西都是类似的,从处理逻辑到页面渲染;从service到layout;配置的实现无非就是XML,或者annotation……我有种感觉,兴许已经跳不出这个思维圈子了? 如今的时代,是一个概念翻飞的时代,oschina里的开源软件数量就已经超过了两万,五花八门的技术层出不穷,到底什么技术才是值得学习的?...
2012-05-29 09:00:50
108
原创 我的 effective java -- 构建器
public class TestConstruct { private final int serviceSize; private final int servings; private final int cal; private final String fat; private final boolean istrue; public stati...
2012-05-21 20:51:59
110
原创 [转]java中byte转换int时为何与0xff进行与运算
在剖析该问题前请看如下代码public static String bytes2HexString(byte[] b) { String ret = ""; for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[ i ] & 0xFF); if (hex.length() ...
2012-03-27 09:17:53
100
原创 关于java 的常量池
常量:在编译初期就确定的既为常量 java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,不同于使用new关键字创建的对象所在的堆空间。 String类也是java中用得多的类,同样为了创建String对象的...
2012-02-18 23:34:28
120
原创 高级排序--希尔排序
希尔排序: 实际上是基于插入排序的,在插入排序中相比较的是相邻的两个元素,但是如果一个很小的数在数组的最右端,而他本应该是在最左端的,这样的话所有中间的元素都要向右移动一位,并且执行了N次。希尔排序就是首先对大跨度的元素做比较并且进行移动,这样的久相对有序了,再在这个基础上进行普通的插入排序,效率就会高很多。 效率: 快速排序>希尔排序>简单排序希尔排序在最...
2010-08-26 15:18:20
127
原创 递归------消除递归(递归原理解析)
递归原理:大部分编译器都是使用栈来实现递归的,当调用一个方法的时候编译器会将参数和返回地址压入栈中,然后把控制转移给这个方法,当方法返回时,这些值退栈,参数小时。 下面是模拟的递归的过程:package digui;public class XiaoDigui{ static int theNumber; static int theAnswer; static S...
2010-08-20 14:36:18
1559
递归------单词变位
public class AnagarmApp { static int size; static int count; static char[] arrChar = new char[100]; public static void main(String[] args) { String input = "cat"; size = input.le...
2010-08-19 15:28:40
211
原创 模板方法模式
方法模式: 什么是方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法可以使子类可以不改变一个算法的结构即可以重定义该算法的某些特定步骤。 方法模式的特点:把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。 当不变的和可变的行为在方法中混合在一起时,不变的行为就会在子类中重复出现,模板方法模式就是将这些不变的行为搬移到一个超类中...
2010-01-11 22:35:25
103
链表栈与链表队列
链表栈与链表队列 链表实现的栈和队列,这里只展示实现过程,有不明的地方可以参看我的前面关于栈,队列和列表的说明 //栈:先进后出class LinkStack{ public static void main(String[] args) { LinkStack l = new LinkStack(); l.push(1); l.push(2);...
2009-12-25 14:21:11
178
链表——双端链
链表——双端链表: 双端链表和单向列表时相似的,但是在单向列表的基础上增加了一个特性,就是增加了对最后一个链接点的引用,就像对第一个链接点的引用一样。但我们试图寻找最后一个链接点的时候就不用像单向链表需要遍历所有的链接点了,可以直接通过最后一个链接的位置获取数据,并且可以在链表的尾端添加节点。 //双端列表class FirstLastList{ public ...
2009-12-25 11:36:18
261
链表——初识链表
链表——前言: (小弟初学数据结构,有错误的地方望大家不吝赐教) 认识链表:列表相比数组更具有优势,链表不同于数据和其他数据结构依靠位置来进行访问或者其他操作,如数组是依靠下表来操作数据。而链表是通过关系来寻找或者操作数据。 链表是由“链接点” 组成,每个链接点是一个数据对象,每个链接点的对象中包含着下一个链接点的引用(next),但是链表本身有一个字段是指向第一...
2009-12-24 15:16:39
170
原创 简单工厂模式
、模式概述 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现,学习了此模式可以为后面的很多中模式打下基础。那好,我们就来了解下什么是简单...
2009-12-23 15:08:10
167
队列的初步理解
队列队列数据顺序是先进先出,后进后出.队列添加数据的方式很特别,传统意义上的队列,删除或者添加数据时,后面或者前面的所有的数据会依次移动一位。但是这样效率会很低。所以队列的数据排列上会在数组的前端空出几个缓冲位置,这样当操作队列的时候只需要移动指针,而不需要操作整个队列。 class Queue{ private int maxSize; private long[] queA...
2009-12-23 10:30:16
134
栈的理解
栈 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾...
2009-12-23 09:28:39
123
排序之插入排序
插入算法循环数组,以指针数据为基值 并且记录,,通过和左侧(右侧)的循环比较,当比较值大于(小于)基值时将大的值至后,指针继续移动,比较,置换。直到遇到小于基值,或者到数组边界时截止,并且置换至首位。结束一次内循环,这是外循环的指针左侧的是有序。 class Sort{ private long[] a; private int nElement; public So...
2009-12-22 10:38:16
76
排序之选择排序
选择排序 选择排序 观其名,识其意。和冒泡一样通过嵌套循环将数组所有对象扫描一遍,选择最小(最大)的对象, 将其置换至对应的位置(a[0]/a[length-1]). 这里可以将排序的过程看做两个步骤。 1 循环扫描数组,选择当前最小的对象并且记录其位置。 2 将最小的对象置换至对应的位置上。 class Sort{ private long[] a; private int...
2009-12-21 14:41:32
82
排序之冒泡排序
冒泡排序 该排序通过将数组嵌套循环, 将相邻的两个对象进行比较,正序排序为例,如果a[0]的对象大于a[1]的对象, 则将两个对象位置交换,将小的对象置前,直到数组结束,排序的过程中每次循环时,指针始终 指向是当前最大的对象,将次对象与后面的对象相比较,当小于后一位对象时,置换,指针依然指向 当前最大的对象。当一次循环结束时,已将最大的对象移至 数组尾部。以此类推完成排序。 class...
2009-12-21 14:26:49
84
java_croe 学习笔记之新IO---java.nio 之内存映射文件
解释:将文件的一段区域映射到内存中,比传统的文件处理速度要快很多 参考:无格式输入流 110秒缓冲输入流 9.9秒随机存取文件 162秒内存映射文件 7.2秒 例子package twelve;import java.io.BufferedInputStream;import java.io.FileInputStream;impo...
2009-08-25 23:37:54
162
java_croe 学习笔记之对象流 (补充1 保存对象引用)
保存对象引用:基于前面的例子,我们现在假设每个Manager 都拥有一个秘书Employee,而且一个或者多个Manager 拥有的是同一个秘书,我们不希望保存对象流时出现这种状况, 2个manager 一个秘书employee ,保存时,一共保存了3个employee。这样的话当希望对秘书employee 作出修改时,必须找出其他拷贝对象,再逐一修改。 我们希望做的是只保存和恢复秘...
2009-08-20 23:11:31
139
java_croe 学习笔记之对象流
一、串行化的概念和目的 1.什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力。叫作对象的持续性(persistence)。对象通过写出描述自己状态的数值来记录自己 ,这个过程叫对象的串行化(Serialization) 。串行化的主要任务是写出...
2009-08-19 23:20:59
131
java--core 之 StringBuffer 和 StringBuilder 区别
java.lang.StringBuffer java.lang.StringBuilder 下面的源代码可以看出两个都是继承了AbstractStringBuilder 这个类,不同的是一个线程安全的,一个不是线程安全的 源代码:StringBuffer public final class StringBuffer extends AbstractSt...
2009-08-18 23:11:32
103
java-core 学习笔记之异常处理篇
1 异常的分类:Error:java运行时系统的内部错误和资源耗尽的错误,迫使程序终止。 Exception:由于程序错误导致的异常RuntimeException 及曾经能正常运行,由于某种原因导致的异常。 2 抛出异常的方法: throws 抛出异常,交给上一层处理。一般适用于无需自己处理,或者自己处理不好的异常 ...
2009-08-06 23:24:24
134
异常处理---你能找出几处问题
一共有6处问题,你能找出几处来?1 OutputStreamWriter out = ... 2 java.sql.Connection conn = ... 3 try { // ⑸ 4 Statement stat = conn.createStatement(); 5 ResultSet rs = stat.executeQuery( ...
2009-08-06 23:04:46
90
core---java 之接口与内部类(持续更新)
1 接口是什么? 接口是用来描述类具备的功能,但是并不给出具体的实现。一个类可以继承1个或者多个借口。通过接口来实现多继承。 2接口可以做什么: 在接口定义的方法不需要提供关键字public, 因为接口中所有的方法自动属于public的。接口中可以包含多个方法,可以再接口中定义常量。 3接口不能做什么? 接口中不能含有实例域,也不能在接口中实现方法。...
2009-07-28 23:12:13
103
core---java 之继承篇(持续更新)
1 类,超类,子类 子类是由超类继承而来,他具有超类的域,方法。子类与超类的关系是“is-a”。 超类: Employee 类是一个超类,他具有通用的特性,name,hireday,salary ,作为每个员工都具有的共同属性。在 实例化 的时候通过构造器传递具体的参数,由于Employee 的域都定义为private ,所以如果不是构造器初始化域的话,要...
2009-07-22 23:17:44
141
java 类设计技巧
1 一定要将数据设计为私有。 2 一定要对数据初始化。 3 不要在类中使用过多的基本数据类型。 4 不是所有的域都需要独立的域访问器和域更改器。 5 使用标准格式进行类的定义。 6 将职责过多的类进行分解。 7 类名和方法名要能够体现他们的职责。...
2009-07-22 21:51:15
113
java core--java 核心技术学习笔记----java.util.Arrays
package com.zfsoft.monday;import java.util.Arrays;public class Array { Arrays autil ; static int[] a = {3,5,2,6,7,4,5}; static int[] b = {11,55,88,33}; static int [] c; publ...
2009-06-16 13:36:41
115
Spring mail 实例+详解
最近项目中用到发送邮件,实现后把自己的心得写出来,希望能帮到同僚们 Spring 的 mail 实现在对java.mail 的封装 实现起来要更加简洁,脱离了使用java.mail 的繁琐操作 需要的包有 jar,mail.jar,commons-logging.jar,activation.jar Spring mail 根据功能的需求划分成2部分 ...
2009-06-11 16:49:11
579
学习 臧圩人的面试题详解后总结 及费解的问题
1 怎么样的对象在编译类时就放入字符串池中? 只有 定义为 final 并且在初始化时赋值的 字符串常量,才会在编译时就放入字符串池中的。 因为变量是在调用时才能确定其值的,所以在编译时不会将变量放入常量池中的。 也就是说只有常量才会放入字符串池中的。 2 关于“ + ” 只有两个引号包含文本的对象 相“+” 才会放入字符串池中。也就...
2009-04-22 00:06:03
105
关于 重写,重载,多态的精辟解释
我哥们对 重载 ,重写,多态的 精辟解释: 对象:人 重写: 同性恋。 重载: 双性恋。 重写+重载:喜欢人妖+与自己性别相同的人。 精辟啊 精辟
2009-02-19 00:01:33
179
关于 编程启动 Heritrix
最近项目要用到 Heritrix 需要集成到我们的工程中,编程启动.... 起初的思路想深入研究 Heritrix 的源代码,企图自己组织 Heritrix 内部的方法,来实现抓取, 研究数日无果..... :cry: 参考各方面的资料,虽然了解其内部的实现 的实现流程,但依然无法集成入我们的工程。资料可参考http://www.cnblogs.com/hustcat/...
2008-12-09 15:22:38
120
写了个解析 抓取百度搜索结果的类,比较简单,大家找茬,BUG多
问题不少,大家看看 提提意见啊!!! :oops: package test;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;imp...
2008-12-05 10:14:47
156
原创 Heritrix的架构
[b]10.2 Heritrix的架构[/b]在上一节中,详细介绍了Heritrix的使用入门。读者通过上一节的介绍,应该已经能够使用Heritrix来进行简单的网页抓取了。那么,Heritrix的内容究竟是如何工作的呢?它的设计方面有什么突出之处?本节就将介绍Heritrix的几个主要组件,以此让读者了解其主要架构和工作方式。为后续的扩展Heritrix做一些铺垫。10.2.1 ...
2008-12-02 16:07:31
197
关于一道面试题的 String s = "123"; 到底创建了几个对象?
2012-02-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人