
java知识点
凌风暨
最怕你一生碌碌无为,还安慰自己平凡可贵
展开
-
XML解析小结
–dom1、构建产生解析器的工厂 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 2、构建解析器 DocumentBuilder builder = dbf.newDocumentBuilder(); 3、解析器读取文件,把xml文件内容装在到内存转化为tree Document doc = bui...原创 2018-09-02 11:09:41 · 324 阅读 · 0 评论 -
Java——线程的加入
//join():加入运行class Test implements Runnable{ public void run(){ for(int i=1;i<=10;i++){ System.out.println(Thread.currentThread().getName()+"--->"+i); } }}class D原创 2017-10-13 15:50:57 · 498 阅读 · 0 评论 -
Java——多生产者 多消费者
//使用jdk1.5的多线程实现方式实现可以同时多生产多消费的功能//跟之前的博客类似,就是多了个容器,从而实现多生产多消费的功能import java.util.concurrent.locks.*;//描述产品class Clothes{ //产品名称 private String name; //产品价格 private double price;原创 2017-10-13 15:27:54 · 1806 阅读 · 0 评论 -
Java——jdk1.5生产者消费者问题优化
之前的代码是唤醒所有的线程,影响了效率,这里对该问题实现优化,具体的细节在代码中与之前的博客比较吧//使用jdk1.5多线程的实现方式解决一次唤醒所有线程性能低的问题//描述产品import java.util.concurrent.locks.*;class Product{ private String name; private int count; privat原创 2017-10-11 20:22:04 · 179 阅读 · 0 评论 -
Java——jdk1.5多线程 Lock接口及Condition接口
还是之前的生产者消费者问题,这里通过这个问题介绍jdk1.5中的Lock接口和Condition接口/*jdk1.5多线程的实现方式:jdk1.5之前对锁的操作时隐式的synchronized(对象){//获取锁}//释放锁jdk1.5对锁的操作时显式的:有一个描述锁的Lock接口,也就是把锁面向对象了使用Lock接口的子类ReentrantLock创建一把锁使用Lock替代同步代码块的方原创 2017-10-11 19:57:03 · 280 阅读 · 0 评论 -
Java——生产者消费者中多线程安全问题
/*一个生产线程,一个消费线程,不存在安全问题当定义两个生产线程和消费线程的时候,出现了生产两次消费一次,生产一次消费两次的安全问题出现问题的原因是:线程被唤醒之后没有回去判断标记,直接执行后边的代码解决方式:让线程被唤醒之后不是直接执行后边的代码,而是回去判断标记 把if改成while但是这样又会出现新的问题:把if改为while之后,出现了死锁,原因是唤醒的是本方线程,原创 2017-10-11 18:31:46 · 336 阅读 · 0 评论 -
Java——同步函数
/*同步函数当函数中的代码全部放在了同步代码块中,那么这个函数就是同步函数*///同步函数的锁是this锁,this是一个引用,this指向的对象就是锁//下面证明一下同步函数的锁就是this//创建两个线程,一个在同步代码块中执行,另一个在同步函数中执行//同步代码块用的锁是obj,同步函数用的所是this//这就导致了两个线程存在两把锁,会出现上次所说的安全问题,即出现错误数据原创 2017-10-06 15:06:20 · 681 阅读 · 0 评论 -
Java——生产者消费者多线程实现
/*生产者消费者问题,这里实现的是生产一个,消费一个,生产一个,消费一个生产者有生产任务消费者有消费任务生产和消费可以同时执行所以使用多线程需要描述生产任务需要描述消费任务生产的是产品消费的是产品需要描述产品*///描述产品class Product{ private String name; private int count; private boolean原创 2017-10-11 15:17:11 · 298 阅读 · 0 评论 -
Java——线程生命周期(各种状态介绍)
线程创建好了之后,不一定能直接得到CPU 如果没有得到CPU,那么就称该线程处于阻塞状态阻塞状态:具备获取CPU的资格,但是还没有得到CPU冻结状态:不具备获取CPU的资格 那些情况属于冻结状态 1、通过人为调用sleep方法,设定睡眠一定的时间,睡醒之后,可能进入运行状态,也可能进入阻塞状态 2、通过人为调用wait方法,变为等待状态,即冻结,再通过notify方法唤醒,唤醒后可能阻塞,也原创 2017-10-05 15:22:47 · 276 阅读 · 0 评论 -
Java——多线程存在的安全问题
/*存在的问题:当num=1时,假如线程t1此时拿到CPU,执行任务代码,在判断if语句条件刚刚结束时,也就是还没来得及执行输出语句,CPU被t2抢走了,此时num依然等于1,那么if条件通过,在执行过程中,依然可能被其他线程抢走CPU而进入阻塞状态,最后有可能卖出0,-1,-2这种票,这就是多线程存在的安全问题*/class Ticket implements Runnable{ pu原创 2017-10-05 15:21:16 · 349 阅读 · 0 评论 -
Java——创建线程的两种方式
/*四个窗口同时卖票因为是同时,所以使用多线程创建4个线程,都是卖票因为都是卖票,说明四个线程的任务是一样的只需要定义一个类继承Thread*/// 以下是用第一种创建线程的方法(具体方法在我的上一篇博客中有介绍),但是并不符合要求// 线程和线程任务是绑定在一起的/*class Ticket extends Thread{ // 把num设置成静态的实现各个线程共享同一个nu原创 2017-10-04 21:07:21 · 235 阅读 · 0 评论 -
Java——线程的停止
/*线程的停止:stop方法已经过时了,那么只能是当线程的任务代码执行完线程自然结束任务代码中通常都有循环,所以只要让循环停下来,线程就能停下来方法:定义一个变量,然后控制循环stop():已过时。该方法具有固有的不安全行,用Thread.stop来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查ThreadDeath异常的一个自然后果),如果以前受这些监视器保护的任何对象都原创 2017-10-15 11:40:37 · 208 阅读 · 0 评论 -
Java——守护线程
//守护线程:可以看成是后台线程,依赖于前台线程,当前台线程全部结束时//即使后台线程的任务代码没有执行完,也会立刻结束,比如垃圾回收线程,//就属于守护线程class Demo implements Runnable{ boolean flag = true; public synchronized void run(){ while(flag){原创 2017-10-15 11:49:25 · 2363 阅读 · 0 评论 -
Java——多线程总结
/*class MyThread extends Thread{ public void run(){ try{ Thread.currentThread().sleep(3000); }catch(InterruptedException e){ } System.out.println("MyThre原创 2017-10-15 17:46:42 · 183 阅读 · 0 评论 -
Java学习笔记——从零开始(2018.04.22已更新)
2018.04.08 —-Java开发入门—--计算机基本概念— •什么是计算机 计算机是一种能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件和软件所组成,没有安装任何软件的计算机称为裸机。常见的形式有台式计算机、笔记本计算机、大型计算机等: •什么是软件 计算机软件是使用计算机过程中必不可少的东西,计算机软件可以使计算机按照事先预定好的顺序完成特定的功能 一台...原创 2018-04-08 06:08:38 · 1390 阅读 · 0 评论 -
Java——递归文件目录
//递归:函数自己调用自己//注意:1、避免内存溢出 2、要有结束调用的条件import java.io.*;class test{ /* //什么是递归? public static void main(String[] args){ //求1---num的和 add(3); } //求1---num的和 publ原创 2017-11-18 20:53:57 · 952 阅读 · 0 评论 -
Java——获取指定目录文件列表
import java.io.*;class test{ public static void main(String[] args){ //列出所有的系统跟 File[] dirs = File.listRoots(); for(File dir:dirs){ sop(dir); } //原创 2017-11-18 20:29:02 · 1984 阅读 · 0 评论 -
Java——文件路径操作
import java.io.*;import java.util.Date;import java.text.SimpleDateFormat;class test{ public static void main(String[] args)throws IOException{ /*File file = new File("D:\学习\Java\2_Java编程原创 2017-11-18 20:14:42 · 1914 阅读 · 0 评论 -
Java——文件的复制
//temp.txt必须提前存在,即被读取的文件必须事先存在import java.io.*;class test{ public static void main(String[] args)throws IOException{ //复制一个文件 //使用字符读取被复制的文件,每次读出来的数据写入到新的文件 //1、创建文件读取流和被读取原创 2017-10-17 11:33:12 · 249 阅读 · 0 评论 -
Java——数据读取优化
//temp.txt中放的是abcdeimport java.io.*;class test{ public static void main(String[] args) throws IOException{ //int read(char[] cbuf) 将字符读入数组 FileReader fr = new FileReader("temp.txt"原创 2017-10-16 20:36:49 · 1028 阅读 · 0 评论 -
Java——读取文本文件
import java.io.*;class test{ public static void main(String[] args) throws IOException{ //从文本文件中读取数据 //因为是文本所以使用字符流,又因为是读取,所以使用Reader //又因为操作的是文件,所以需要使用操作文件的字符输入流类FileReade原创 2017-10-16 20:36:00 · 823 阅读 · 0 评论 -
Java——文件的续写
import java.io.*;class test{ public static void main(String[] args) throws IOException{ //文件的续写 FileWriter fw = new FileWriter("temp.txt",true); //写入换行 fw.write("\r\n原创 2017-10-16 19:39:49 · 1280 阅读 · 0 评论 -
Java——IO异常处理
import java.io.*;class test{ public static void main(String[] args){ //局部变量没有默认值,成员变量有默认值,为了防止发生异常 //最好给局部变量赋初始值 FileWriter fw = null;//为了扩大作用范围 try{ fw原创 2017-10-16 19:30:34 · 571 阅读 · 0 评论 -
Java——IO流基础介绍
/*集合解决的问题是存储多个对象的问题,随着对象存储的数量的增加,容量会自动扩大多线程解决的问题是实现不同的功能或者相同的功能同时执行的效果IO流解决的是实现设备和设备之间数据的传输 Input Output按照方向分:分为输入流,输出流按照操作的数据分:字节流,字符流字节流:可以操作任何类型的数据实现输入和输出 文本,音频,视频,图片字符流:只能针对文本实现输入和输出原创 2017-10-16 19:13:09 · 227 阅读 · 0 评论 -
Java——线程案例
/*实现两个人同时show需要使用多线程创建线程的第一种方式:1、创建一个类继承Thread2、重写Thread类中的run方法 创建线程是为了执行任务 任务代码必须有存储位置,run方法就是任务代码的存储位置3、创建子类对象,其实就是在创建线程4、启动线程 主线程的任务代码在main函数中 子线程的任务代码在Thread类的原创 2017-10-04 15:38:10 · 955 阅读 · 0 评论 -
Java——使用notepad++编译运行
写java代码的时候,电脑配置不高,用eclipse启动太慢,各种卡顿?用记事本又太平凡?还得用命令行编译运行太麻烦?那就用notepad++吧,启动快,也可以直接编译,下载安装我就不介绍了,主要介绍一下如何用notepad++运行java程序 前提是已经配置好了java环境,这个自己去百度 用notepad++打开随便一个文件,写好java代码,在Notepad++上面的选项栏中找到原创 2017-10-02 12:28:47 · 31058 阅读 · 4 评论 -
Java——toString()方法简介
toString()方法: 它是Object里面已经有了的方法,所有类都是继承Object,所以“所有对象都有这个方法” 简单的说,toString()方法是为了方便输出 System.out.println(xx),括号里面的“xx”如果不是String类型的话,就会自动调用xx的toString()方法,如果直接输出一个对象,并且这个对象所在的类中没有重写toStr原创 2017-08-21 18:44:37 · 415 阅读 · 0 评论 -
java——泛型
泛型的出现是为了解决程序在编译时期没有问题,在运行时期出现问题的情况,在jdk1.5之前一直存在这上面说的问题,举个例子来说明下这个问题,看下面这段代码 import java.util.*;class Demo{ public static void main(String[] args) { ArrayList list = new ArrayList(原创 2017-08-25 10:57:37 · 295 阅读 · 0 评论 -
Java——Arrays工具类介绍
Arrays工具类的使用Array工具类:用来操作数组(比如排序和搜索)的各种方法常用方法: 使用二分法查找 Arrays.binarySearch(int[] array,int value); 数组内容转成字符串的形式输出 Array.toString(int[] array); 数组排序 Arrays.sort(int[] array);原创 2017-10-02 11:46:56 · 455 阅读 · 1 评论 -
Java——map详细介绍
此博客意在详细介绍一下java中的map一、map基本方法 在java.util包中有一个map接口,map<K,V>,他使用了两个泛型,是一个单独的接口,不属于collection,属于集合,最重要的是,他存放的东西,是键值对,前面的K表示键的类型,后面的V表示值的类型添加: V put(K key,V value) void putAll(Map <? extengds V> m)原创 2017-10-01 21:05:38 · 2549 阅读 · 0 评论 -
Java——单例设计模式中懒汉式并发访问的安全问题
//单例设计模式中懒汉式并发访问的安全问题//饿汉式 无安全问题class Single{ private static final Single s = new Single(); private Single(){} public static Single getInstance(){ return s; }}//懒汉式 错 有安全问题/原创 2017-10-09 23:17:10 · 319 阅读 · 0 评论 -
Java——线程死锁
//要避免死锁//死锁的例子/*class Ticket implements Runnable{ private int num = 500; private Object obj = new Object(); boolean flag = true; public void run(){ if(flag){ while(原创 2017-10-09 23:15:45 · 179 阅读 · 0 评论 -
Java——BufferReader实现原理
/*模拟BufferedReader,自定义一个类MyBufferedReader1、需要一个真正具备读功能的流对象,所以MyBufferedReader需要定义一个Reader类型的成员2、通过提供一个缓冲区来提高效率的,所以需要定义一个数组3、操作数组需要下标,所以需要定义一个下标4、统计字符的个数,所以需要定义一个变量readLine() read() close();*/i原创 2017-10-17 20:35:51 · 1136 阅读 · 0 评论 -
Java——使用缓冲流实现文件的拷贝
import java.io.*;class test{ public static void main(String[] args){ //使用缓冲流实现文件的复制 BufferedReader br = null; BufferedWriter bw = null; try{ br = new Buf原创 2017-10-17 19:55:51 · 1340 阅读 · 0 评论 -
Java——BufferedReader和BufferedWriter应用实例
/* 字符流的缓冲区:缓冲区是为了提高读或写的效率 只具备提高效率的功能,不具备读或者写的功能 所以使用缓冲流必须结合着读流或写流BufferdReader:只具备提高效率的功能,不具备读的功能BufferdWriter:只具备提高效率的功能,不具备写的功能----newLine()跨平台写入换行*/import java.i原创 2017-10-17 19:39:34 · 584 阅读 · 0 评论 -
Java——线程间的通信及共享数据的安全问题
//线程间的通信:线程的任务不同,但是线程操作的数据相同//描述数据class Res{ String name; String sex;}//利用构造函数,把同一个res传给输入任务和输出任务//即保证了两者为同一个res//描述输入任务class Input implements Runnable{ private Res res; //两个线程同一把原创 2017-10-10 13:02:33 · 354 阅读 · 0 评论 -
Java——设置线程等待与线程唤醒
//线程间的通信:线程的任务不同,但是线程操作的数据相同/*wait(),notify(),notifyAll()必须用在同步中,因为同步中才有锁指明让持有哪个锁的线程去等待或被唤醒*///还是上次的例子,实现存一个输出一个,而不是输出一大堆//描述数据class Res{ String name; String sex; //加一个flag标记,false表示没原创 2017-10-10 14:49:24 · 5764 阅读 · 0 评论 -
Java——Collections工具类
直接上代码,里面有注释,拷贝下来自己去运行理解//Collectionsimport java.util.*;class ComByLength implements Comparator<String>{ public int compare(String s1,String s2){ int num = s1.length() - s2.length();原创 2017-10-04 00:31:24 · 313 阅读 · 0 评论 -
Java——线程同步代码优化
此博客意在优化之前几篇博客的代码,使得变量私有化,具体如下class Res{ private String name; private String sex; private boolean flag; //存储数据 public synchronized void set(String name,String sex){ if(flag){原创 2017-10-10 23:50:10 · 242 阅读 · 0 评论 -
Java——线程间通信 常用方法
wait(),notify(),notifyAll()必须用在同步中,因为同步中才有锁 指明让持有哪个锁的线程去等待或被唤醒wait():让线程进入等待状态,就是把线程放入了线程池 notify():唤醒线程池中的任意一个线程 notifyAll():唤醒所有线程wait(),notify(),notifyAll()为什么定义在Object中?不定义在Thread中 wait(),notif原创 2017-10-10 23:28:17 · 273 阅读 · 0 评论