
闲着没事—玩玩Java
文章平均质量分 50
闲着没事_玩玩JAVA
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CyclicBarrier公共屏障点:一个同步辅助类,它允许一组线程互相等待
一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrierpoint)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的barrier。package jingtianxiaozh原创 2013-11-17 23:18:28 · 788 阅读 · 0 评论 -
【重点】买票程序——好用的Runnable
package com.xiaozhi.threads;/* * Runnable避免了单继承的缺陷 * Runable里面的变量共享 */public class Test3 { public static void main(String[] args) { RunTicket runTicket=new RunTicket(); Thread thread1=new Th原创 2013-10-18 22:39:02 · 753 阅读 · 0 评论 -
【重点】模拟多线程死锁
package com.xiaozhi.threads;public class Test5 { public static void main(String[] args) { MyRunable myRunable=new MyRunable(); Thread thread1=new Thread(myRunable); Thread thread2=new Thread(原创 2013-10-19 17:22:42 · 599 阅读 · 0 评论 -
【面试题】懒汉式的多线程安全问题解决方案
public class test3 { public static void main(String[] args) { Single single=Single.getInstance(); }}class Single{ private Single(){} private static Single single=null; public static Single原创 2013-10-19 14:45:29 · 726 阅读 · 0 评论 -
【UDP】
发送端:package com.xiaozhi.udp;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;public class SendClient { public static void main(String[] args) throws原创 2014-03-08 20:00:00 · 570 阅读 · 0 评论 -
【TCP】使用TCP协议写一个可以上传文件的服务器和客户端。
上传客户端:package com.xiaozhi.jingtian.tcp;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import java.net.Socket;public class UploadClient { public static原创 2014-03-08 20:04:16 · 3297 阅读 · 0 评论 -
【TCP】s.shutdownOutput();这行代码的牛逼之处
s.shutdownOutput();//关闭客户端的输出流。相当于给流中加入一个结束标记-1.原创 2014-03-09 16:19:38 · 13609 阅读 · 4 评论 -
【TCP简单聊天实现】
客户端import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;原创 2014-03-28 15:24:19 · 918 阅读 · 0 评论 -
【重点】生产者消费者(设置flag标记:最佳实践)多生产者多消费者(把if换成while)
生产者消费者问题package com.xiaozhi.threadinformation;/* * 生产者消费者 */public class Test3 { public static void main(String[] args) { Resource resource=new Resource(); Producer producer=new Producer原创 2013-10-20 18:49:59 · 966 阅读 · 0 评论 -
【线程高新】——【ThreadLocal实现线程范围的共享变量】
先说明问题:先让每个线程都有自己线程范围内的共享变量package com.xiaozhi.threadlocal;import java.util.Random;public class Test { private static int data=0; public static void main(String[] args) { new Thread(){原创 2013-11-13 20:57:35 · 631 阅读 · 0 评论 -
【Properties】Properties的load方法
Properties的load方法其实就是传进去一个输入流,字节流或者字符流,字节流利用InputStreamReader转化为字符流,然后字符流用BufferedReader包装,BufferedReader读取properties配置文件,每次读取一行,分割,因为Properties是Map的子类,然后用put进Properties对象。原创 2013-11-05 23:43:15 · 29928 阅读 · 0 评论 -
【IO流重点】转换流可以修改编码格式,FileWriter和FileReader的默认编码格式是gbk
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;原创 2013-11-04 15:31:49 · 2826 阅读 · 0 评论 -
CountDownLatch:倒计时计数器
可以实现一个人(也可以是多个人)等待其他所有人都来通知他,这犹如一个计划需要多个领导都签字后才能继续向下实施。还可以实现一个人通知多个人的效果,类似裁判一声口令,运动员同时开始奔跑。用这个功能做百米赛跑的游戏程序不错哦package jingtianxiaozhi;import java.util.concurrent.CountDownLatch;import j原创 2013-11-17 23:49:30 · 761 阅读 · 0 评论 -
【重点:线程池续】超人气组合:Callable和Future
Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。 计算完成后只能使用 get 方法来获取结果,如有必要,计算完成前可以阻塞此方法。package jingtianxiaozhi;import java.util.concurrent.Callable;import java.util.concurrent.Ex原创 2013-11-16 13:43:35 · 552 阅读 · 0 评论 -
【重点:线程池的使用】线程池霸气来袭
往线程池放三个线程,运行完一个则重新载入一个。execute(Runnable command)在未来某个时间执行给定的命令。该命令可能在新的线程、已入池的线程或者正调用的线程中执行,这由Executor 实现决定。 虽然execute了十次,但是只有三个线程同时执行。package jingtianxiaozhi;import java.util.co原创 2013-11-15 21:48:57 · 507 阅读 · 0 评论 -
【重点:定时器】定时器思想很重要
定时器可以定时完成任务,package jingtianxiaozhi;import java.util.Timer;import java.util.TimerTask;public class Test3 { public static void main(String[] args) { new Timer().schedule(new TimerTask() {原创 2013-11-15 22:24:47 · 538 阅读 · 0 评论 -
【重点:Lock】把sychronized改为lock的方法
sychronizedpackage com.xiaozhi.threadlocal2;public class Test { public static void main(String[] args) { MyRun myRun=new MyRun(); for(int i=0;i<10;i++) new Thread(myRun).start(); }}c原创 2013-11-14 19:07:41 · 607 阅读 · 0 评论 -
Exchanger:线程交换数据
package jingtianxiaozhi;import java.util.concurrent.Exchanger;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ExchangerTest { public static void m原创 2013-11-18 00:07:22 · 745 阅读 · 0 评论 -
【转换流】让字符流干点字节流的事
标准输入import java.io.IOException;import java.io.InputStream;public class Test { /* * 标准输入流 */ public static void main(String[] args) throws IOException { InputStream in=System.i原创 2013-11-04 11:02:17 · 650 阅读 · 0 评论 -
【递归】递归的运用
递归遍历文件夹package com.xiaozhi.helloio;import java.io.File;import java.io.FilenameFilter;public class Test3 { public static void main(String[] args) { ShowFile(new File("c:\\root")); }原创 2013-11-05 00:13:42 · 501 阅读 · 0 评论 -
【PrintWriter】略胜一筹,其实PrintWriter也相当一个转换流
PrintWriter的构造函数可以是StringFile字符流字节流 并且println方法自带换行 可以设置autoFlush的值为true,自己flush()[字符流底层是字节流,所以都需要flush。] import java.io.*;class Test { public static void main(String[] args) th原创 2013-11-06 10:31:15 · 1162 阅读 · 0 评论 -
【重点】HashSet调用hashCode()和equals()【用来去除重复】
package com.xiaozhi.hashset;import java.util.HashSet;public class Test { public static void main(String[] args) { HashSetpersons=new HashSet(); persons.add(new Person("jingtian1",21)); pe原创 2013-10-24 21:42:35 · 781 阅读 · 0 评论 -
【IO流一些小细节】IO流中一些方法的使用
FileWriter fw=new FileWriter("c:\\jingtianxiaozhi.txt");如果文件没有,则自动创建,路径不存在,创建失败,抛FileNotFoundException异常。写入数据有两种方法,一次写一个字符,一次写一个数组,显然数组效率高。FileReader的read()方法返回的是字符整数值,read(arr)返原创 2013-11-03 00:09:00 · 803 阅读 · 0 评论 -
【RuntimeException运行时异常】方法不需要throws、调用该方法的程序不需要try-catch
RuntimeException运行时异常,出现此异常,程序中断,需程序员检查程序。(数组越界,空指针)throw该异常的方法不需要throws,调用该方法的程序部需要try、catch。原创 2013-10-18 11:22:03 · 4893 阅读 · 0 评论 -
【Exception的处理】谁调用谁处理
package com.xiaozhi.exception;public class Test { public static void main(String[] args) //throws Exception//将异常往抛给JVM,默认处理时将异常打印程序部往下运行 { try { int x=4/0; } catch (Exception e) {// e.p原创 2013-10-17 23:07:36 · 524 阅读 · 0 评论 -
【反射】就是把java类中的各个成分映射成相应的java类
要反射的类package com.xiaozhi.reflect;import java.io.InputStream;import java.util.List;public class Person { private String name; private int password; public Person() { System.out.println("原创 2014-03-17 23:49:42 · 2139 阅读 · 1 评论 -
【使用反射判断一个Object对象是不是数组,并且遍历数组】
package jingtianxiaozhi; import java.lang.reflect.Array; //使用反射判断一个Object是不是数组,并遍历数组public class Test { public static void main(String[] args) { int[] a=new int[]{1,2,3};原创 2014-05-07 08:44:37 · 4563 阅读 · 0 评论 -
【银行管理系统】先实现一个普通窗口为普通客户服务,快速Vip类比
银行业务调度系统模拟实现银行业务调度系统逻辑,具体需求如下:Ø 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。Ø 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。Ø 异步随机生成各种类型的客户,生成各类型用户的概率比例为: VIP客户 :普通客户 :快速客户 = 1 :原创 2014-04-06 14:23:06 · 2098 阅读 · 0 评论 -
【装饰设计模式】写一个MyBufferedReader实现自己的ReadLine方法、增强BufferedReader的ReaderLine()
package com.xiaozhi.io;import java.io.BufferedReader;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class Test { public static void main(String[] args)原创 2013-11-03 14:01:08 · 1126 阅读 · 0 评论 -
【注解】学习自己写注解【@Retention,决定注解存在的时期,@Target决定注解使用的地方】
1、@SuppressWarnings@deprecated@override的介绍没加@SuppressWarnings(“deprecation”)注解,编译时会提示使用了过时的APIpublic class Test { public static void main(String[] args) { System.runFinalizersOnExit(tr原创 2014-03-28 20:02:55 · 2355 阅读 · 0 评论 -
【重点】——泛型
/* * 泛型类 */public class Test2 { public static void main(String[] args) { Demo demo = new Demo(); demo.setName("泛型类"); }}class Demo { public void setName(T t) { System.out.p原创 2013-10-28 11:24:47 · 501 阅读 · 0 评论 -
【可变参数】数组赋给可变参数,采取的策略是【拆】,简单数据类型数组看成是一个对象
int...args可以看成是int[]args,当传进来的参数是2,3,4时,自动封装成数组付给args。也可以直接传入一个数组。package com.itheima.xiaozhi;public class VariableParameter { //可以把可变参数看成是一个数组 public static void main(String[] args) { System原创 2014-03-16 23:22:51 · 749 阅读 · 0 评论 -
【面向对象】谁直接拥有数据,谁就对外提供操作这些数据的方法。
球从一根绳子的一段移动到了另一端:点在绳子上,显然绳子应该提供一个nextPoint()方法。供小球调用。两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子:石头变成石刀,这个方法显然不能再石头本身上,应该是有一个石刀工厂,提供把石头变成石刀的方法。石刀有一个砍树的方法把树变成木材。椅子工厂有一个把木材变成椅子的方法。原创 2014-04-04 19:40:25 · 798 阅读 · 0 评论 -
【交通灯管理系统】
交通灯管理系统 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: Ø 异步随机生成按照各个路线行驶的车辆。例如: 由南向而来去往北向的车辆 ---- 直行车辆 由西向而来去往南向的车辆 ---- 右转车辆 由东向而来去往南向的车辆 ---- 左转车辆 。。。 Ø 信号灯忽略黄灯,只考虑红灯和绿灯。原创 2014-04-04 19:15:17 · 814 阅读 · 0 评论 -
【重点】让类对象具有比较性,装入TreeSet【用来排序】
让Person实现Compatable借口,实现对象具备比较性package com.xiaozhi.mytreeset;import java.util.TreeSet;/* * 让Person实现Compatable借口,实现对象具备比较性 */public class MyTreeSet { public static void main(String[] args) {原创 2013-10-26 15:04:50 · 732 阅读 · 0 评论 -
【重点】JDK5新特性lock和condition(多生产者多消费者:可以用来区分本方线程和对方线程)
package com.xiaozhi.procon2;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/* * 多生产者多消费者 * lock代替sychronized原创 2013-10-20 22:48:02 · 625 阅读 · 0 评论 -
【正则表达式】
正则表达式:符合一定规定的表达式。作用:用于专门操作字符串。特点:实际上就是一些特定的符号来表示一些代码操作。好处:简化书写,提高开发效率。弊端:符号定义越多,正则越长,阅读性越差。下面是正则表达式的一些规则。[0-9]可以用\d来代替{0,1}可以用?代替匹配:校验手机号小程序:手机号段13、15、18package c原创 2014-05-04 12:57:30 · 802 阅读 · 0 评论 -
【BeanUtils】操作JavaBean
Person.classpackage com.xiaozhi.beanutils;import java.util.Date;public class Person { private String name; private String password; private int age; private Date birthday; public Date getBi原创 2014-03-23 11:17:53 · 488 阅读 · 0 评论 -
【内省】introspector操作JavaBean
person.javapackage com.xiaozhi.introspector;//该类共有5个属性public class Person { private String name; private String password; private int age; public void setAb(int a){ } public String getNam原创 2014-03-22 22:47:53 · 476 阅读 · 0 评论 -
【自动装箱、自动拆箱】享元设计模式:对于小的整数,装箱装成的对象都是同一个
package com.xiaozhi.box;public class Test { public static void main(String[] args) { //自动装箱 Integer integer1=13; Integer integer2=13; //自动拆箱 System.out.println(integer1+2); //享元设计模式原创 2014-03-23 21:21:30 · 540 阅读 · 0 评论