自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

轻描淡写

蜗牛赛跑

  • 博客(35)
  • 收藏
  • 关注

原创 经典的生产者与消费者模型(基于BlockingQueue队列实现)

基于BlockingQueue实现与之前的基于synchronized方法实现的不同,这里不需要单独创建仓库类,用队列替代仓库,简化编程。

2017-07-31 08:46:02 448

原创 简单的快速排序

1、定义int i = start;int j = end;再定义一个标志位flag,初始化flag=true。2、在循环体中比较,只要i不等于j,就进行比较。3、刚开始将value = arr[0]固定,将value逐一与后边值比较,直到value值大于后边某个值时,则交换,同时改变标志位为false。不满足则 j 减减,直到满足为止或者 i=j退出循体。4、接着第三步,标志位变为false之后,value值被固定在后边某个值,将value逐一与前边值比较,直到value值小于前边某个值时,则交换,

2017-07-30 16:45:56 277

原创 重入锁--ReentrantLock

优势:当许多线程都在争用同一个锁时,使用 ReentrantLock 的总体开支通常要比 synchronized 少得多,同时具有很多 synchronized 没有的新特性。劣势:需要谨记在finally块中释放锁,上几把就解几次。新手很容易忘记,而synchronized不需要手动解锁。【ReentrantLock不是内建锁】,发生异常不会自动释放锁。在ReentrantLock前加final

2017-07-29 09:06:22 244

原创 synchronized 关键字的理解

1、 要保护这一段代码, 必须将它变为临界区,使用Java提供我们的锁机制(同步监视控制)2、在同一个服务线程中(不管是不是同一个任务执行体),这里形象比喻Person(线程)上Toilet(临界区),一次且只能有一个人在Toilet里,只要Person不出来(不释放锁),其他人(其他线程)就不能进入。 3、简单来说就是:两个人不能在一时刻拥有房间的使用权。

2017-07-28 19:58:37 214

原创 经典的生产者与消费者模型(基于synchronized方法实现)

注意代码中的生产货物和销售货物的方法要进行同步管理,如下面1、public synchronized void producer(int id,String name){}2、public synchronized void sale(String name){}

2017-07-28 09:03:02 603

原创 模拟银行转账信息

从本地 data.txt 文本中读取账户信息,模拟银行不同账户之间的转账信息

2017-07-26 23:10:13 2966

原创 创建线程的三种方式总结

1、方法 1: 覆盖Thread类的run方法,Thread类本身 implements Runnable。2、方法 2 :任务执行体 implements Runnable。3、方法 3 :任务执行体 implements Callable,是为了获取线程返回值而设计;只有在需要获取返回值时才用次方法。

2017-07-26 08:43:08 332

原创 将某一线程设置为后台线程

1、将线程设置为后台线程:与程序同生共死。比如垃圾回收器,长期运行,直到程序结束退出。2、当线程不是后台线程时,主(服务线程)执行结束后,子线程没执行完的还继续执行直至运行结束。3、当线程为后台线程时,主(服务线程)执行结束后,子线程没有执行完的不在执行。

2017-07-25 19:23:53 4271

原创 文件过滤器

1、自定义一个过滤器MyFilter,在里边实现自己的过滤逻辑。2、之后就可以传入自己的过滤器,实现过滤功能。

2017-07-25 09:13:24 1116

原创 复制文件的三种方法

复制文件的三种方法:1、Files.copy(path, new FileOutputStream(dest));。2、利用字节流。3、利用字符流。

2017-07-24 09:06:07 4884

原创 冒泡排序与选择排序之间的联系

结论:永远不要选择第二种第一种:* 冒泡排序实现原理:相邻两个数两两比较,如果满足条件则交换,不满足,则进行下一个相邻的比较。* 第一轮,将最大或最小的数搬到索引末端。* 第二轮,将次大的放到索引次末端。* ......* 最后一轮,实现全部排序里、外层跑的次数有数组长度决定,而交换次数由数组混乱度决定三者之间的次数关系arr.lengthoutCount = arr.length - 1innn...

2017-07-23 12:33:20 382

原创 字节流(InputStream)输入中文汉字到控制台出现乱码的问题解析

1、理解为什么InputStream输入中文到控制台会出现乱码的关键,是要弄清楚乱码根源。2、一个中文字符占两个字节,假如在接收一个中文字符时,只接收了中文字符的一个字节就开始输出,那么那个中文字符就会失帧,所以就会乱码。3、如果是输出到指定文件,就不用担心此问题,因为文件都是全部接收完毕后才打开新生成的文件。因此就保证了数据的全部接收。

2017-07-22 16:41:18 10958 5

原创 利用IO流对文件进行分割和无损还原合并

实现原理分布写在注释里,基本思路是将源文件分割为若干份,之后再将分割的文件进行合并还原

2017-07-22 10:48:31 1170

原创 利用IO流文实现对件夹的拷贝(文本)

本案例演示了如何用IO流(字符流)对文件夹里边的文件进行无损拷贝,音乐文件暂时不能正常拷贝,音乐以及电影文件的拷贝需要用到字节流。

2017-07-21 18:59:31 225

原创 泛型边界

1、泛型下界 下界通配符(super) List<? super Father>。2、泛型上界 上界通配符(extends) List<? extends Father>。

2017-07-20 08:41:26 276

原创 文件过滤器

通过自定义过滤器,查找目标目录下,以某后缀结尾的文件

2017-07-19 18:47:17 211

原创 数学之美

当遇到如下规律的两个两位数相乘时,可以 2 秒算出计算结果:例如:21 * 29   22 * 28   23 * 27   24 * 26   25 * 25               31 * 39   32 * 38   33 * 37   34 * 36   35 * 35            41 * 49   42 * 48   43 * 47   44 * 46

2017-07-18 20:03:35 241

原创 HashMap集合的3种迭代方式

package teat;import java.util.*;import java.util.Map.Entry;/** * @author linjitai */public class ThreeIterator { public static void main(String[] args) { Map&lt;String, String&gt; map = new HashMap&l...

2017-07-18 13:46:40 9611

原创 java中参数的传递方式【值传递】

1、java中方法参数的传递只有值传递。2、值传递的定义:将实际参数值得副本传入到到方法内,而参数本身不会受到任何影响。

2017-07-17 08:45:32 408

原创 不能根据方法返回值来确认是否方法重载(Overload)

1、概念:一个类中包含两个或两个以上的同名方法,但形参列表不同,则称为方法重载。2、注意不能根据方法返回值来确定是否重载,因为假如用方法返回值作为方法重载的标记,当直接调用方法 overload() 没有指明是否需要返回值,这时候系统就会产生疑问,有 不确定的因素,因此不能根据返回值来区分方法是否重载。

2017-07-16 08:45:52 699

原创 递归调用简单解说

1、已知条件:f(0)=1,f(1)=4,f(n+2)=2*f(n+1)+f(n);推导出:f(n)=2 * f(n - 1) + f(n - 2)。2、总结出递归表达式。3、写在最后边的返回值上。4、表达式是由前边的推导过程得出,就算是口算推导也能算得出

2017-07-16 08:33:23 315 1

原创 自然排序和自定义排序演示

本例演示了在TreeSet中添加对象时候可以自动排序的功能。1、要使用 TreeSet, 插入的对象必须排序的功能;2、compareTo 这个方法会被 TreeSet 自动回调;3、自定义类想要在TreeSet可以自动排序,必须具备比较大小的功能,实现了Comparator(自然排序)或Comparable(自定义排序,需要自定义一个比较器)接口。

2017-07-15 13:12:09 583

原创 二叉排序

实现二叉排序算法增加元素的功能。

2017-07-15 11:05:53 248

原创 内部类

这段代码介绍了如何定义一个内部类,如何在第三方类中创建一个内部类以及如何利用内部类控制外部类的成员。内部类的创建的两种情况: 1、在第三方类创建外部类,需要写全类型: Person.InnerPerson innerPerson = person.new InnerPerson(); innerPerson.ctrlOut(); 2、在外部类里边创建外部类(不需要写全类型): InnerPerson innerPerson = new InnerPerson(); innerPe

2017-07-14 09:07:20 158

原创 利用正则表达对IP进行排序

正则表达式就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。1、补零,使得可以按照字符串顺序进行比较。2、截取保留后三位(ip地址最多就3位)。3、利用Arrays.sort()方法对截取的字符串进行排序。。4、去除多余的0,回复ip原样。5、实现代码:package IPSort;import java.util.Arrays;/** * 利用正则表达对IP进行排序,分四步 * @author tiger * */

2017-07-13 08:54:10 950

原创 基于Object/数组模拟实现ArrayList的增、删、改、查

1、定义了一个DataList接口,里面包含了所需要实现的方法2、用MyArrayList实现DataList接口,实现里面所定义的方法3、扩容的核心思想:可以实现动态扩容,当检测到数组容量不够时,自动扩大为原来的1.5倍,扩容的核心思想是将旧数组copy到新数组,再将新数组赋值给当前数组。

2017-07-12 08:50:46 511

原创 简单的可视化日历系统

根据提示输入年份和月份,自动显示出日历界面【带有年月验证】

2017-07-11 08:48:30 826

原创 观察者模式

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。摘自搜狗百科 《观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,并且将他做好。观察者模式在模块之间划定了清晰的界限

2017-07-10 08:55:24 209

原创 数组元素查找

本方法目标是找出给定数组中指定两标记之间的元素,实现代码如下: /** * 功能:找出给定数组中指定两标记之间的元素 * @param original 原始数据 * @param startLabel 头标记 * @param endLabel 尾标记 */ public static void findBetween(String origin

2017-07-07 08:49:13 431

原创 查找数组中指定元素

原始数据【 "abcDDAabDC79799799abc9089q23rasdfabc" 】。 代码如下: /** * 功能:找出给定数组中指定两标记之间的元素 * @param original 原始数据 * @param startLabel 头标记 * @param endLabel 尾标记 */ public static void findBetween(...

2017-07-06 18:39:43 1098

原创 策略模式

策略模式包含三种对象:1、环境对象:该类中实现了对抽象策略中定义的接口或者抽象类的引用。2、抽象策略对象:它可由接口或抽象类来实现。3、具体策略对象:它封装了实现同不功能的不同算法。实现代码如下:package com.tiger.strategy;/** * 旅游策 略接口 * @author tiger * */public interface

2017-07-06 08:42:07 234

原创 简单工厂

实现代码如下:package com.tiger.factory;/** * 工厂方法 Food类 * @author tiger * */public interface Food { //显示食物细节消息 public String detial();}package com.tiger.factory;/** * *

2017-07-04 19:16:02 222

原创 一个抽象类Shape 里边有两个抽象方法 计算面积 和 周长; Shape由三角形和圆形继承,利用多态的特性设计完成不同子类的功能

原意要求如图:实现代码如下:

2017-07-03 19:45:25 17322 1

原创 测试子父类初始化执行顺序

* 1、父类的静态代码块 * 2、子类的静态代码快 * 3、父类非静态代码块和父类的实例变量按照其在代码中的先后顺序来初始化 * 4、父类构造器 * 5、子类非静态代码块和父类的实例变量按照其在代码中的先后顺序来初始化 * 6、子类构造器

2017-07-03 10:48:10 352

原创 条件编译

这段代码实现了条件编译的示例,最基本的功能可以用来进行调试代码......

2017-07-01 10:17:10 636

空空如也

空空如也

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

TA关注的人

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