- 博客(18)
- 收藏
- 关注
原创 ReentrantLock实现-学习笔记
线程安全往往需要靠互斥锁机制来保证,ReentrantLock是比关键字sychronized更灵活的可重入互斥锁。ReentrantLock在不使用锁(它自己本身就是Lock)和synchronized关键字的前提下,是怎么保证线程安全的呢。 看一下不公平锁实现的lock方法(调用的是Sync(NonfairSync)的lock方法 static final cl...
2013-06-08 11:56:45 206
用Java实现多线程下载
计划做一个多线程下载的程序,强化一下对多线程的理解。计划第一步先做出一个多线程下载的基本功能,下一步做出断点续传等功能。 1.确定下载核心类的接口,接口代码如下,之前看过一大牛的代码,断点续传写得很不错,但是把URL中文件名的解析等工作都放到了下载类中,我觉得这样会导致这个类多担负了一个任务,而我这里,将URL中文件名的解析放到Client中去做,而Client可能是字符型的客户端,或者GU...
2010-05-19 20:17:00 185
Item 9: Always override hashCode when you override equals(Effective Java Chapter2笔记)
1.You must override hashCode in every class that overrides equals. 如果一个类实现了equals方法却没有实现hashCode方法,那么将这个对象A放入HashMap中,然后new一个与A相等的对象B,在HashMap中查找B,返回值将是null,因为没有实现hashCode方法,导致相等的两个对象返回的hash值不同(因为...
2010-03-12 22:03:00 152
2.Methods Common to All Objects--Effective Java 2nd Ed学习笔记
Item 8: Obey the general contract when overriding equalsEquivalence relation(equals必须满足的性质): Reflexive: For any non-null reference value x, x.equals(x) must return true. Symmetric: For any n...
2010-03-08 23:28:00 119
1.Creating and Destroying Objects2——Effective Java 2nd Ed学习笔记
Item 4: Enforce noninstantiability with a private constructor 有些类需要防止用户实例化一个类,比如说java.lang.Math 和java.util.Arrays,Attempting to enforce noninstantiability by making a class abstract does not work.A ...
2009-12-26 16:37:00 126
原创 1.Creating and Destroying Objects——Effective Java 2nd Ed学习笔记
1.One advantage of static factory methods is that, unlike constructors, they have names. 有时候,一个类有几个不同的构造函数,各个构造函数只能靠参数来区分,编写程序和阅读程序的时候构造子的意义都不明确。而是用静态工厂方法可以明确的知道该构造子的含义,比如BigInteger(int, int, ...
2009-12-26 15:45:25 116
1.Creating and Destroying Objects——Effective Java 2nd Ed学习笔记
Item 1: Consider static factory methods instead of constructors 1.One advantage of static factory methods is that, unlike constructors, theyhave names. 有时候,一个类有几个不同的构造函数,各个构造函数只能靠参数来区分,编...
2009-12-26 13:32:00 135
开心农场简易外挂的实现
最近开心农场非常火,同学用C#模拟鼠标点击操作做了一个小外挂,但是这样做有如下缺点:1、计算机不能做其他事情,2、必须开着浏览器,3、对所有好友点一遍的时间太慢,4、对于开发者来说技术含量低了点,呵呵。 所以我尝试着改进这种实现,我的想法是:不用开启浏览器,直接运行一个应用程序,该程序将自己伪装成一个浏览器,与服务器连接,并发送浇水、除虫等命令。这样,甚至可以使用多线程向服务器发送命令,无需...
2009-12-19 21:34:00 931
使用Apache+Tomcat构建应用服务器集群
1.安装Apache HTTP server:http://httpd.apache.org/2.安装2-3个(或更多)Tomcathttp://tomcat.apache.org/,安装zip版,因为安装多个Windows Service Installer版会出现错误(可以安装一个Installer版,其他两个用zip版)。3.配置3个Tomcat,使得3个Tomcat在一台机器上...
2009-11-27 21:14:00 224
SQL练习(using MySQL)
还是这个经典场景,但是却能衍生出很多较复杂的SQL语句。学生选课,一个学生表student,课程表course,选课表sc,在MySQL下建立数据库:drop database course_select;create database course_select;use course_select;create table student( snum int primary ...
2009-11-26 09:50:00 100
工厂模式(Factory Pattern)
首先,还是引入一个场景:一家披萨店,有许多的披萨种类(CheezePizza, ClamPizza),在新建一个披萨的时候,很可能会这样做:public class SimplePizzaFactory { public static final String CHEEZE_PIZZA = "cheeze"; public static final String CLAM_PIZZA...
2009-11-20 23:14:00 114
装饰者模式(Decorator Pattern)
考虑这样一个场景:咖啡厅需要做一个订单系统,其中必不可少的功能是:获取每种咖啡的价格以及描述。最初设计如下: 但是,每种咖啡可以根据顾客的选择,添加不同的调料,甚至可能是两份同种调料,例如:牛奶,摩卡,豆浆等。这样,如果采用上面的设计,类图会是这样的: 这样设计的缺陷非常明显:类的数量过于庞大,但是问题还不仅仅如此,当某一个原料的价格上扬了,比如牛奶,那...
2009-11-20 14:06:00 105
观察者模式(Observer Pattern)
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更新。考虑这样一个应用:气象站有许多装置来实时监测天气状况,包括温度计,湿度计等。在许多不同的地方有显示屏,要求这些显示屏能够实时查看到气象站所获得的天气数据。并且可以随时增加或者减少显示屏的数量。根据观察者模式,得出如下设计:观察者模式类图:要点:被观察者用一个公共的接口...
2009-11-20 13:19:00 219
策略模式(Strategy Pattern)
例子: 一个游戏中有各种鸭子,红头鸭,绿头鸭等等,很自然得出这样的设计: 这时,需求改变了(永远不变的是改变).游戏需要鸭子能飞起来, 在抽象的Duck类中加入一个方法fly(),是一个很自然的想法. 但是,问题出现了,一些不能飞的鸭子(比如橡皮鸭)也飞了起来.——继承带来的问题:牵一发而动全身 我们可以找到一个暂时的办法:覆盖橡皮鸭的fly()方法,使这个方法什么也不做。然而...
2009-11-16 22:52:00 108
Java小技巧集锦——网上搜集
1.通常使用: if (result.size() > 0) return true;return false; ,但是这样写更简洁:return result.size() > 0;2. public static Integer valueOf(int i)返回一个表示指定的 int 值的 Integer 实例。如果不需要新的 Integer 实例,则通常应优先使用该方...
2009-10-05 13:05:00 117
用Java23种设计模式泡MM
1、FACTORY?追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提...
2009-09-24 16:22:00 110
使用huffman编码压缩文件,其中对文件进行编码存储、并读取的方法
//后注:这里的解码显然弱爆了,明显应该使用Huffman Tree来进行,而不是这里的hard code,因为一般情况,不可能只有a、b、c三个字符的编码。 回答百度知道上的一位朋友的问题,他已经实现了huffman的编码过程但是不知道如何用编码方式对文件进行压缩下面给出简单的代码。对范例文件test.dat的压缩比例为:126byte/27byteimport ja...
2009-05-18 12:56:00 736 1
从今天开始,在这里记录我成长的脚印
考研成绩终于在前两天出来了,上天给了我一次“重新做人”的机会。 在大学期间的混混沌沌希望可以因此终结,虽然我是一个酷爱软件技术的人,但是在大学里我没有把握好自己,我需要在此刻上一笔,只为了让以后的我能够铭记。 从今天开始,我会全力以赴,执着于我所爱的事业,希望在CSDN能够记录下我成长的脚印。...
2009-03-05 16:49:00 199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人